From 18dbf7a0429104ad963776b57a8d0a97cd5ea932 Mon Sep 17 00:00:00 2001 From: zc Date: Fri, 20 Mar 2026 16:36:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/MaterialProcessService.java | 29 ++++++++++++++ .../impl/MaterialProcessServiceImpl.java | 34 +++++++++++++++++ .../MaterialProcessController.java | 36 ++++++++++++++++++ .../meterial/MaterialInfoController.java | 4 ++ .../templates/import/materialProcess.xlsx | Bin 0 -> 8688 bytes 5 files changed, 103 insertions(+) create mode 100644 wms-webapi/src/main/resources/templates/import/materialProcess.xlsx diff --git a/wms-module-system/src/main/java/top/wms/admin/materialProcess/service/MaterialProcessService.java b/wms-module-system/src/main/java/top/wms/admin/materialProcess/service/MaterialProcessService.java index 14f8bb0..74f0442 100644 --- a/wms-module-system/src/main/java/top/wms/admin/materialProcess/service/MaterialProcessService.java +++ b/wms-module-system/src/main/java/top/wms/admin/materialProcess/service/MaterialProcessService.java @@ -1,7 +1,12 @@ package top.wms.admin.materialProcess.service; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.web.multipart.MultipartFile; import top.continew.starter.extension.crud.model.resp.LabelValueResp; import top.continew.starter.extension.crud.service.BaseService; +import top.wms.admin.material.model.req.MaterialInfoImportReq; +import top.wms.admin.material.model.resp.MaterialImportParseResp; +import top.wms.admin.material.model.resp.MaterialInfoImportResp; import top.wms.admin.materialProcess.model.query.MaterialProcessQuery; import top.wms.admin.materialProcess.model.req.MaterialProcessReq; import top.wms.admin.materialProcess.model.resp.MaterialProcessResp; @@ -16,5 +21,29 @@ import java.util.List; */ public interface MaterialProcessService extends BaseService { + /** + * 获取流程下拉列表 + * @return 流程下拉列表 + */ List getSelectList(); + + /** + * 下载导入模板 + * @param response 响应对象 + */ + void downloadImportTemplate(HttpServletResponse response) throws Exception; + + /** + * 解析导入文件 + * @param file 导入文件 + * @param file 导入文件 + */ + MaterialImportParseResp parseImport(MultipartFile file); + + /** + * 导入物料信息 + * @param req 导入请求 + * @return 导入响应 + */ + MaterialInfoImportResp importMaterial(MaterialInfoImportReq req); } \ No newline at end of file diff --git a/wms-module-system/src/main/java/top/wms/admin/materialProcess/service/impl/MaterialProcessServiceImpl.java b/wms-module-system/src/main/java/top/wms/admin/materialProcess/service/impl/MaterialProcessServiceImpl.java index b4df477..b59f947 100644 --- a/wms-module-system/src/main/java/top/wms/admin/materialProcess/service/impl/MaterialProcessServiceImpl.java +++ b/wms-module-system/src/main/java/top/wms/admin/materialProcess/service/impl/MaterialProcessServiceImpl.java @@ -1,10 +1,21 @@ package top.wms.admin.materialProcess.service.impl; +import cn.hutool.core.io.resource.ResourceUtil; +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.http.ContentType; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; +import net.dreamlu.mica.core.result.R; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; import top.continew.starter.extension.crud.model.resp.LabelValueResp; import top.continew.starter.extension.crud.service.BaseServiceImpl; +import top.continew.starter.web.util.FileUploadUtils; +import top.wms.admin.material.model.req.MaterialInfoImportReq; +import top.wms.admin.material.model.resp.MaterialImportParseResp; +import top.wms.admin.material.model.resp.MaterialInfoImportResp; import top.wms.admin.materialProcess.mapper.MaterialProcessMapper; import top.wms.admin.materialProcess.mapstruct.MaterialProcessConvert; import top.wms.admin.materialProcess.model.entity.MaterialProcessDO; @@ -32,4 +43,27 @@ public class MaterialProcessServiceImpl extends BaseServiceImpl materialProcessDOS = baseMapper.selectList(new QueryWrapper<>()); return materialProcessConvert.labelValueList(materialProcessDOS); } + + @Override + public void downloadImportTemplate(HttpServletResponse response) throws Exception { + try { + FileUploadUtils.download(response, ResourceUtil + .getStream("templates/import/materialProcess.xlsx"), "物料流程导入模板.xlsx"); + } catch (Exception e) { + log.error("下载用户导入模板失败:", e); + response.setCharacterEncoding(CharsetUtil.UTF_8); + response.setContentType(ContentType.JSON.toString()); + response.getWriter().write(JSONUtil.toJsonStr(R.fail("下载用户导入模板失败"))); + } + } + + @Override + public MaterialImportParseResp parseImport(MultipartFile file) { + return null; + } + + @Override + public MaterialInfoImportResp importMaterial(MaterialInfoImportReq req) { + return null; + } } \ No newline at end of file diff --git a/wms-webapi/src/main/java/top/wms/admin/controller/materialProcess/MaterialProcessController.java b/wms-webapi/src/main/java/top/wms/admin/controller/materialProcess/MaterialProcessController.java index ee202a5..3e90831 100644 --- a/wms-webapi/src/main/java/top/wms/admin/controller/materialProcess/MaterialProcessController.java +++ b/wms-webapi/src/main/java/top/wms/admin/controller/materialProcess/MaterialProcessController.java @@ -1,5 +1,13 @@ package top.wms.admin.controller.materialProcess; +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.Operation; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotNull; +import org.springframework.http.MediaType; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.multipart.MultipartFile; +import top.continew.starter.core.validation.ValidationUtils; import top.continew.starter.extension.crud.enums.Api; import io.swagger.v3.oas.annotations.tags.Tag; @@ -11,11 +19,15 @@ import top.continew.starter.extension.crud.annotation.CrudRequestMapping; import top.continew.starter.extension.crud.model.resp.LabelValueResp; import top.continew.starter.log.annotation.Log; import top.wms.admin.common.controller.BaseController; +import top.wms.admin.material.model.req.MaterialInfoImportReq; +import top.wms.admin.material.model.resp.MaterialImportParseResp; +import top.wms.admin.material.model.resp.MaterialInfoImportResp; import top.wms.admin.materialProcess.model.query.MaterialProcessQuery; import top.wms.admin.materialProcess.model.req.MaterialProcessReq; import top.wms.admin.materialProcess.model.resp.MaterialProcessResp; import top.wms.admin.materialProcess.service.MaterialProcessService; +import java.io.IOException; import java.util.List; /** @@ -37,4 +49,28 @@ public class MaterialProcessController extends BaseControllerzz+ULph4tcSSkFgWtf1o5i}dzuV9R!iuMG)-aXMZb(l+o2^IP^1$J4MwXzc z@1NkC5&=7tUrnFv9=zNP5xB+%0B&wD06Kr8WupNf^D!#d?x9$B3q?yyPdgVcUY?)l z|IzWkn1g?L^@?Oo?LIz&$UW7oDER5@aw1S(!&gqVjq!ePsM-=yV|*bC^>P;*4e&nI z6AYD*j^L{i#Ij`k7M$_qvrt7WF{uReTi?pavLjcAwx_Wgbqft{rg4n`pV(^!{M>?B_B}=^-q$N(gYpOq6pG} zq7V`4%lNtQ`nq{St=-(9KXt3Zz}zj9k2EN^;U@G-s|QmxT)pgDp~-7l%*8ozsb@Ey z1warXq-bz+S;ferc{JUq@GL%P^=v8N`PjMAi=sh6vg89v#j|(H*kjCe^?_ssmu+12 zQ3R!`bSbIpLW-uGQv;tan~rW%Y-6oMF#w+60>x6Mnmb^K5c6Rig-{ecIW~@+GUf&3 zmYmuh5_N-@CeK|j4V8_aQ$3Xp#C*b=cBjCG?geNUonIk?(ju!D%LeHnH1}MVCS@Qbq$h+%xYJ=T71500VBKfBF+z%k4}*Cb`_A3w z6A?Q4?Ih{4rLjnkn)tBYx zS@N15>l_J+p}7{VA4|Rv1*Cn050K0ZyoC}jcS2kHl2(wCZUQ-R7L4Fk91vTPx{tH- z2C#);S#5)@bP@OMljH#$D&CV_fk!u0PBzuzRzWZ+zSbn1W#nWDoiW{!X7oLmzR!p+ ztHp%Ubw-efG;MFrg}r3hO(ETs5>@fSPAY=8ra*-reH-{Z`l2dv6{4wIB*Z1N9Z7Rl zowILPW#_yeCG`x1St#7IF^iq=Bu^5`z*F!=KIxnpqWytc`M&Y~BcfevS)#TRyE$yR z9kn6BWs4R50N4;(%iwtbcDSU1_I9E6*{6^!ug2jgCo}oRtcoQPas|SaSCKqXisAVg zPeXanYVBMb-ELo_^8B9+2$N1tJ3?iCE9x#402d9#fd44PUwQC{YM`NtI24cmyN?Pz zO^tp&V8^ZNC_djzA2QH_H!stU!8Q@@a03T|l~FMGc!ip?)!gWV1}}zNr2pR7kk6?w z;b#mIWDi$K3^C?o5|=#*EVr?vF$`Sm@0E1nDp(}MJ6qf3-)|9Sc#*V7C&TaLkcxdf zV~2pF3X7Q(k6WfAg`CIv9tk*mP125_R?X3dwa|;F`a6~34NXl9865UsZ(0-(C)l~+ z{`6BvU_3R++x~#5jrWXPXFWY0`5>V{wd4y|Y}`pUK^)Mg85R0wp`6O&*`DXW_kFO5dLfE6}jk}r!uZSmm*Yv8_j}dckdY%%mw~YJS3BB6{ z(R7%$hlnDm+dLqlY^swmEseeHIDR&Doh7AW?0CV5+L!>EMPaW-tQ^tI`vcQrbb(Axw2SIq7G`@ZHU;#F zl4DmMh^Q2oR9~dq)A#@*+_bT`0=YAm2bdSz7Jo7(7?M64K?D0prw{Cq5`= zNWJdC-i~kI^~KK3$hfvuBg9%Uyslpe0krT)nb74=>u?$en}w4Y6*@{#VVCfc5!XP} zBkLm}gG80}0;iCZVqH%OT5XscJIHiB{=y?e%+*b_pleJya8LUv#W6Wf+*;TGvz7dB|hTgN3rsc8|{ z+I&TY*C|v=VdlPIzC3Cla1Da6FBBc&l=efE`|WPRJTt`9_MYgEB=qG;N?ew$fCT!L zfQvJQIX6kI60b->Eu%#b=$zzS&*oE2HSxXXQ)UGr`u|-1;%zbztGMDA3$Bg^!-F^jKeXP?2opD6xKh9=FhgSN6ca-y?>;a z8j6sp2d6)DU@>pKgsx-YHvy!hT*`%T-$Cr?*RKv79h_)XG7tm5%q}LsRg726` zG4Xto8$!O%HC^tqPzs0ukx94+x8+}O?chJzbTUV#j}2vN1(s_m3*oFX zES>2CgwnfJy?9zD^5%AtPteQ54mD!;g6mgGz^`coDg*Q)~o$W*5RSml(;*JLmhY)=C=>sH);4lDQZ*Yp4LV*1>RMr?HA{W5LDTE ze%X|3A$7^Kcg&QteU{c0{Npe|#&Vr*&;)yR;B>)RkaC6{~0rB6_A?W0;!U2lW`UOOk+@9;R$ECN;;}!YTbC}eFWEp=M zZuGd5j17DL75}15x-g*0*3#su%BVMNPttU&IRH0%;o`ZDGmBr1S!fM$<|z9h_E;Nf z5&D=%Oayaot$rMLVSs8hXwF7pn9@OTRgy)E2n1DCwsj%ZbMjUthL4UY1NB_{znz86 z*t{3nl9m=s+BacvW|ZlDkNXA91V44&?75CSGL)VXgiy_?sC)LD+8r%D$7Up}htvyJ z-;&bf*Z6t`-L>}3k5^U1BoMFCK(&8V-qLHrR?Rg*D+;8N@b_?wuQ}jXWq#S~hceIngU++Nz=Gp?0 z^5)KhaGw_G2jxiHb?YEyb}0~7OhU6swb!epVg<+h)Od}VOD-SD`OU~pF)&0Y66-t! zSUXvmq@PWplOu&2ky%H*$SjFlgI1N*8MCaEmiv`H1fy%OG>@d5D_KtqTm0NvMtpeZ z8~U#0*EVX5ciTjEXSIB)PKKc9(Y0|AlS$%U3 z$E_^ir5aGT|2!tQ_%6Z8g?sv)JfCK>Ehh0OjQVHrLyBwjRJ$aPDHX|aj4DO82Tz{j zX5CF?p?yFYqJLY+fU2N*c8dX*p1VZ^J~E_Cm<(eDPuTl09XCL^1*Xrr*#oP{KD-&Z zTJD)n=4M=GJ2+kf&)E48$vwjw%OLoa>MnLz`gJOcSgdae*Vs6Og0)!Q2dSWFpx`f2 z5KBoW7{l}JuGzDV$mgwye%UszK?1a8!c{*Ww)xYXN4&XZc56aYch>JI7_3z|QOppD z4nr$O)ZRaQq0zJ`vah$j2(5e~-#AX3_O8{9kJ0h{$T)#>^1)jIjWHe*P3H&A43kWt z-DrgU^BU#P<_^I%ZAOir;YQV52CL->v=^tiBEguSr=n6;AY^7m#GN9xxa2|S3m!bw z`!SN_15}`@EIVcKT@v1n3tg#bP75x|`&W^B1}1V%x|`T?g(A4l7F`cQ@JV8$Q%n*= z9KpRHQggCg)BBen*wSo+Mtod*lR5Qs@0Z0iU##hs?_IBb1_HC$tb*oY4FOg~%NvAT z!CiA@4TUuiHluXwWp-5L%B2Fg#2xT=e5sS@2~A$qkSmeN9JBl|Y@0sbMpmutyu}Va zb*haEOIknF?MLq|_xpZx>)%Q#7Ux{Y2n+yVA7!Q9{*P#RdHcKAdHt-PUK@@*M~DDB zDK;c<+o4FC(Z<_qa_tsqXnJ|wurLd!XLZl^RTwtovkIClV(2b`Qo`#DvQueJiPFkZ zskR)NdTvb=u{55Y=if3JH;>gu(|xs5i}h^TTk(@r6gjv!Prw%^Rr_i18SGemK@QbO zEyY5%^EAuXi&>N{Qb23TP@uR1j!niR;Kre>*oOyojOd2WrD7s{2A8s;F`v{;*~Y`g z2q@5o?&lF&jg3Zyx>s1xPjYcwW2K_MoYAx;L~VUVDhffKW&Zz`Sorjb-R zphyxwB_9lIB(AW;J=Y`k!Q))o8`1wU(l$hJ2ZVpvka~}ELUvR3t^?>*3T)_dCHV2p z2~k`5U{;;JLwscqS=-7WhpJnASkY7xxUXVo1oAGu(6d`z!SvCN{ZZ7wg0YB#`nUtZ z$u4ptbdX$d>7M z=HS@DzSERqME)ka?P=(OrprAxTX?>hW;kF09IvL-tO-6I7eVzh_J^kqV}U_|gXy+KtL)UG8@lR@$y% zt1-O3A>3|6f^WP&^6zh}^|-T;^}Lu22xxYiAO48{R`CZx;NZfb@TgeG$cBac^xZWM zy5f&=oEP|^JFa@Y;$frYIiw1srC*DB$7r3*#ke$0PcK55NET#(Kkno@5P3y@?C?LD ztCrD9o~PvyydNm<-d(X+`!rwb;h;1@Rr5N#&T!28Gx)n@e}088XHdNE)}<5`X=^K>(z2K1FdJ0iuGM{lMk-FBM){uNsQ8Gw!-pzCNq^_7qm`$ft-iOX6U^Z^+GZuxs$=q#Dh2d};8yzz zwnap^yJunjk=kRlQmLly?acJx_{!AzZDw{CSO1o!z7~6b3YQj@P z>(wBSOKV+(*TXx%(CL28qtNs!D!I~HBuwL^g8&>z&X_h#;LVkm0! z>zJbl>*=h5e1P$L)+96US*p|>&liOa>c;`t4T2X@9`JPOoZ|H#H)5^QKL5TIG^=jI zeSrEF7O3qY2<0Bwy4mP>y19Gt+PHbz{oeWcpJ{+fl)&UE^*%n*$UUr;{IyQa#a4a= zMA%3b4Xz>Sp1kK#mH-R%(5DDXwny7MdoN4dO)K_HDVAW@_{p^ zc9pv16<(HtxQD@ZjPdDvXa!}6HMASVsBac#7j7JBnpcg@w8)G_pSWe5Ml0)10J+al z*<%I#Oka&`XbTH&>bxn;@8(G5hIkm3?FJRCO&g4ilb0_u29 z4-(*=|GEVfH$MhtpzZ)siVFN|Hd?v6|1TL)S@`>rmD~eE{Pg{?E(jxc4(gnXV;(fb^Tn6HR< z73YhUspa`HY^GBPreA~H+FBzSCFXpLm<3f_&`8@k;Ay{)YXW{Df_9ZsW;f$orml`E^NGh9^8ytJcICf8%yJPokdd!&u z*C-|ySTTj~q<%iTv5`{EciBGs5Q{!GeB))_USUu6J1qJ))}=2Z?t(|v7cj$RDEfs< zU{1H}tdk1{jBil|y-PmVf=bveRH{#|l2#Z@u}3|fMHN%@h(x}TkdR=hs~-n9>ux=2 z^v*$IFxsJSg;^)JNohoUurYA(qMmX+A)jt?&S&aGlcdEsCBWDXt*=0H_w#x;r+tsN zV?XDTmA#4Ciav;cm#4CC#FF#r8&^8=fjUEwx_Eam;xfFsSVJ7YpEgyc3@OO#* v6Au7ffdPPj2=1@&zpsgZg~!nR1^)XAsiT2~nq2?@AN31GX}Ssh&wu|1Tu|rk literal 0 HcmV?d00001