From f88d4d8fe749a913cf81b5b23cfe3532632697bd Mon Sep 17 00:00:00 2001 From: zc Date: Thu, 16 Apr 2026 00:42:25 +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 --- .../material/model/entity/MaterialInfoDO.java | 5 ++ .../model/query/MaterialInfoQuery.java | 14 ++++ .../material/model/req/BatchImportRowReq.java | 8 +++ .../material/model/req/MaterialInfoReq.java | 6 ++ .../material/model/resp/MaterialInfoResp.java | 7 ++ .../service/impl/MaterialInfoServiceImpl.java | 1 + .../weighManage/model/entity/WorkOrderDO.java | 10 +++ .../model/entity/WorkOrderInfoDO.java | 16 +++++ .../model/query/WorkOrderQuery.java | 13 +++- .../model/req/WorkOrderInfoReq.java | 5 ++ .../weighManage/model/req/WorkOrderReq.java | 10 +++ .../model/resp/WorkOrderInfoResp.java | 16 +++++ .../weighManage/model/resp/WorkOrderResp.java | 4 ++ .../service/impl/WorkOrderServiceImpl.java | 28 +++++--- .../resources/mapper/MeterialInfoMapper.xml | 10 ++- .../materialType/MaterialTypeController.java | 6 +- .../controller/vm/VmCommandController.java | 2 +- .../weighManage/ah/AHDZCConnect.java | 61 +++++++++--------- .../resources/templates/import/batch.xlsx | Bin 9048 -> 9087 bytes 19 files changed, 177 insertions(+), 45 deletions(-) diff --git a/wms-module-system/src/main/java/top/wms/admin/material/model/entity/MaterialInfoDO.java b/wms-module-system/src/main/java/top/wms/admin/material/model/entity/MaterialInfoDO.java index 1ae1aa9..f599b53 100644 --- a/wms-module-system/src/main/java/top/wms/admin/material/model/entity/MaterialInfoDO.java +++ b/wms-module-system/src/main/java/top/wms/admin/material/model/entity/MaterialInfoDO.java @@ -72,4 +72,9 @@ public class MaterialInfoDO extends BaseDO { */ private String batch; + /** + * 标记 + */ + private String mark; + } diff --git a/wms-module-system/src/main/java/top/wms/admin/material/model/query/MaterialInfoQuery.java b/wms-module-system/src/main/java/top/wms/admin/material/model/query/MaterialInfoQuery.java index 7a1daed..b5b696f 100644 --- a/wms-module-system/src/main/java/top/wms/admin/material/model/query/MaterialInfoQuery.java +++ b/wms-module-system/src/main/java/top/wms/admin/material/model/query/MaterialInfoQuery.java @@ -36,4 +36,18 @@ public class MaterialInfoQuery implements Serializable { @Schema(description = "物料编码") @Query(type = QueryType.EQ) private String encoding; + + /** + * 批次 + */ + @Schema(description = "批次") + @Query(type = QueryType.EQ) + private String batch; + + /** + * 标记 + */ + @Schema(description = "标记") + @Query(type = QueryType.EQ) + private String mark; } diff --git a/wms-module-system/src/main/java/top/wms/admin/material/model/req/BatchImportRowReq.java b/wms-module-system/src/main/java/top/wms/admin/material/model/req/BatchImportRowReq.java index d8742f2..a9f1c88 100644 --- a/wms-module-system/src/main/java/top/wms/admin/material/model/req/BatchImportRowReq.java +++ b/wms-module-system/src/main/java/top/wms/admin/material/model/req/BatchImportRowReq.java @@ -30,4 +30,12 @@ public class BatchImportRowReq implements Serializable { @Length(max = 255, message = "批次长度不能超过 {max} 个字符") private String batch; + /** + * 标记 + */ + @Schema(description = "标记") + @NotBlank(message = "标记不能为空") + @Length(max = 25, message = "标记长度不能超过 {max} 个字符") + private String mark; + } diff --git a/wms-module-system/src/main/java/top/wms/admin/material/model/req/MaterialInfoReq.java b/wms-module-system/src/main/java/top/wms/admin/material/model/req/MaterialInfoReq.java index 1dee185..8ac95f6 100644 --- a/wms-module-system/src/main/java/top/wms/admin/material/model/req/MaterialInfoReq.java +++ b/wms-module-system/src/main/java/top/wms/admin/material/model/req/MaterialInfoReq.java @@ -92,4 +92,10 @@ public class MaterialInfoReq implements Serializable { @Schema(description = "批次") private String batch; + /** + * 标记 + */ + @Schema(description = "标记") + private String mark; + } diff --git a/wms-module-system/src/main/java/top/wms/admin/material/model/resp/MaterialInfoResp.java b/wms-module-system/src/main/java/top/wms/admin/material/model/resp/MaterialInfoResp.java index 0079e4d..b2f9f90 100644 --- a/wms-module-system/src/main/java/top/wms/admin/material/model/resp/MaterialInfoResp.java +++ b/wms-module-system/src/main/java/top/wms/admin/material/model/resp/MaterialInfoResp.java @@ -113,4 +113,11 @@ public class MaterialInfoResp extends BaseDetailResp { @ExcelProperty(value = "批次", order = 7) private String batch; + /** + * 标记 + */ + @Schema(description = "标记") + @ExcelProperty(value = "标记", order = 8) + private String mark; + } diff --git a/wms-module-system/src/main/java/top/wms/admin/material/service/impl/MaterialInfoServiceImpl.java b/wms-module-system/src/main/java/top/wms/admin/material/service/impl/MaterialInfoServiceImpl.java index 518b83e..27836b7 100644 --- a/wms-module-system/src/main/java/top/wms/admin/material/service/impl/MaterialInfoServiceImpl.java +++ b/wms-module-system/src/main/java/top/wms/admin/material/service/impl/MaterialInfoServiceImpl.java @@ -543,6 +543,7 @@ public class MaterialInfoServiceImpl extends BaseServiceImpl page(WorkOrderQuery query, PageQuery pageQuery) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.like(StrUtil.isNotBlank(query.getMaterialName()), "m.material_name", query.getMaterialName()); queryWrapper.eq(null != query.getOrderNo(), "w.order_no", query.getOrderNo()); + queryWrapper.eq(StrUtil.isNotBlank(query.getBatch()), "w.batch", query.getBatch()); + queryWrapper.eq(StrUtil.isNotBlank(query.getUserName()), "u.username", query.getUserName()); + queryWrapper.eq(StrUtil.isNotBlank(query.getCarNo()), "u.card_no", query.getCarNo()); + queryWrapper.eq(StrUtil.isNotBlank(query.getEncoding()), "m.encoding", query.getEncoding()); + queryWrapper.ge(null != query.getStartDate(), "w.create_time", query.getStartDate()); + queryWrapper.le(null != query.getEndDate(), "w.create_time", query.getEndDate()); this.sort(queryWrapper, pageQuery); IPage page = baseMapper.selectWorkOrderPage(new Page<>(pageQuery.getPage(), pageQuery @@ -78,9 +81,12 @@ public class WorkOrderServiceImpl extends BaseServiceImpl infos = workOrderInfoMapper.selectList(new QueryWrapper() + .eq("work_order_id", id)); + if (CollUtil.isNotEmpty(infos)) { + workOrderResp.setWorkOrderInfos(BeanUtil.copyToList(infos, WorkOrderInfoResp.class)); + } return workOrderResp; } @@ -118,6 +124,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl workOrderInfoDOList = BeanUtil.copyToList(req.getWorkOrderInfos(), WorkOrderInfoDO.class); - workOrderInfoDOList.forEach(workOrderInfoDO -> workOrderInfoDO.setWorkOrderId(workOrder.getId())); + workOrderInfoDOList.forEach(workOrderInfoDO -> { + workOrderInfoDO.setWorkOrderId(workOrder.getId()); + workOrderInfoDO.setBatch(materialInfoDO.getBatch()); + workOrderInfoDO.setMark(materialInfoDO.getMark()); + }); workOrderInfoMapper.insertBatch(workOrderInfoDOList); return BeanUtil.copyProperties(workOrder, WorkOrderResp.class); @@ -162,7 +174,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl 0) { log.info("比值超过 {}%", upFloatRatio); map.put("code", "502"); - map.put("msg", "数量不足"); + map.put("msg", "数量过多,请减少"); return map; } @@ -170,7 +182,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl - UPDATE sys_material_info SET batch = null + UPDATE sys_material_info SET batch = null, mark = null @@ -93,6 +93,14 @@ ELSE batch END, + mark = CASE + + + WHEN encoding = #{item.encoding} THEN #{item.mark} + + + ELSE mark + END, update_user = CASE diff --git a/wms-webapi/src/main/java/top/wms/admin/controller/materialType/MaterialTypeController.java b/wms-webapi/src/main/java/top/wms/admin/controller/materialType/MaterialTypeController.java index 3f1d11d..edf00ac 100644 --- a/wms-webapi/src/main/java/top/wms/admin/controller/materialType/MaterialTypeController.java +++ b/wms-webapi/src/main/java/top/wms/admin/controller/materialType/MaterialTypeController.java @@ -50,7 +50,7 @@ public class MaterialTypeController extends BaseController mockDataTask; - // private final AtomicBoolean isMockDataRunning = new AtomicBoolean(false); - // private final Random random = new Random(); + // private ScheduledFuture mockDataTask; + // private final AtomicBoolean isMockDataRunning = new AtomicBoolean(false); + // private final Random random = new Random(); /** * 初始化并启动电子秤服务 @@ -76,8 +76,8 @@ public class AHDZCConnect { start(); // todo 模拟数据生成 - // isMockDataRunning.set(true); - // startMockData(); + // isMockDataRunning.set(true); + // startMockData(); return R.ok(); } @@ -227,6 +227,7 @@ public class AHDZCConnect { // 解析数据,提取数字和重量单位 String weightStr = data.trim(); + log.info("电子称原始数据: {}", weightStr); // 使用正则表达式提取数字(包括小数点) Pattern pattern = Pattern.compile("[-+]?\\d*\\.?\\d+"); Matcher matcher = pattern.matcher(weightStr); @@ -339,7 +340,7 @@ public class AHDZCConnect { log.info("========================================"); // todo 模拟数据生成 - // stopMockData(); + // stopMockData(); try { if (executorService != null && !executorService.isShutdown()) { @@ -361,32 +362,32 @@ public class AHDZCConnect { } // todo 模拟数据生成 - // private void startMockData() { - // if (executorService == null || executorService.isShutdown()) { - // log.warn("[模拟数据] 线程池未初始化或已关闭"); - // return; - // } - // - // mockDataTask = executorService.scheduleAtFixedRate(() -> { - // if (!isMockDataRunning.get()) { + // private void startMockData() { + // if (executorService == null || executorService.isShutdown()) { + // log.warn("[模拟数据] 线程池未初始化或已关闭"); // return; // } // - // try { - // ScaleWebSocketHandler.sendMessage(String.valueOf(random.nextInt(100) + 1)); - // log.debug("[模拟数据] 发送重量数据: 37.8"); - // } catch (Exception e) { - // log.error("[模拟数据] 发送异常: {}", e.getMessage()); - // } - // }, 0, 1, TimeUnit.SECONDS); - // } + // mockDataTask = executorService.scheduleAtFixedRate(() -> { + // if (!isMockDataRunning.get()) { + // return; + // } // - // private void stopMockData() { - // if (mockDataTask != null && !mockDataTask.isCancelled()) { - // mockDataTask.cancel(false); - // mockDataTask = null; + // try { + // ScaleWebSocketHandler.sendMessage(String.valueOf(random.nextInt(100) + 1)); + // log.debug("[模拟数据] 发送重量数据: 37.8"); + // } catch (Exception e) { + // log.error("[模拟数据] 发送异常: {}", e.getMessage()); + // } + // }, 0, 3, TimeUnit.SECONDS); + // } + // + // private void stopMockData() { + // if (mockDataTask != null && !mockDataTask.isCancelled()) { + // mockDataTask.cancel(false); + // mockDataTask = null; + // } + // isMockDataRunning.set(false); // } - // isMockDataRunning.set(false); - // } } \ No newline at end of file diff --git a/wms-webapi/src/main/resources/templates/import/batch.xlsx b/wms-webapi/src/main/resources/templates/import/batch.xlsx index c5ba600a43972191c7518b8569476a350dda9513..3889cad88677f47f746761d5cee284b7f7449bc1 100644 GIT binary patch delta 2248 zcmY+Gc{mh`7Qjcd7$#;c!(&pE%}`Od8IiE-Tv2sl#%N1#$CATs2;vSMs< zm2;C`8Luh{T~6XQoSHqb*->?Tan(sA12I(|x=H}4@5L<#Z|d$1ueK>n^8A)-#zhQz z@7jM!PF0By+u7bhf}lJNjf`Qkb}1U>%P;@6?=LN1nWZY54F%jw3-mKbw$@k#+ge9T z%1eo=WLK3!;=PtWn__cU^T^oW_-dG;MfTQ80m+EUbeExTd4DKmcsi=M5)cFIUeTT7 zp=H{QDnFnOxS9HzysKGA{n3z~v2vDy3iFa-gUd!Y!9z||5rTY+VMrot>RURfD7MVB zK(6w`8zGj)d5YfT6`kw{9lSJn@D{eT+h#p!USQL%a*Imq6}CNKCmTP*lyKGAE@wh1 z`?$ux(jKRqNC!LB9lmNyw4K2a=1h?& zKff0FVm9wpTq{`O_pLhB-hfa0>)9?T4ZX@|D_n`Prw;jqmv2_*N^vNl;V%11I8K355(;p&)XQ~Yq9>md8g$niQs~NWx$i(!k(S9FuC5fft?eV$prLu1O_NK|a3Vzy$ zMGR0os3hVmoSFgTZAf8LJ;esR;95^R1po|EhhXAlzhzNGq_gJ<%eE6yJL#oyV3oSf z)5E$cui6RFGHNE8f2fSG(Z!4=GW@ElydJvfjA{i#JbJ%;m+@{~dCpD`%DaR$cECD9 zpN?%$p!fN+QP)juE_%~L($K8~jOuiB7OSs_&p@kT_YNY2g zt*km{$QxXrAQhZEzD1G6MqrLu^sLI5RPw{ou$r$)K3^>AY0^9MH~6%z-XHi!e0S(p z-8MW@BYB@}d0mHUx)vf;o{etf>+Npl(6Wl6qS&J9Vzq)uJNb+}ElwJA=PT zm5dZ-4HpjB(pjRcKaDO$3Q;;s(rU7d(Fk4%nP!e%dcH!mg1ctA{yFy*hW|6efY>*R zcKg*N++LmM`uo7}P3)O)+JtU7xr3EOtV4ioIx#a^Oygf>1fM=1j@?$p(pghFOum?p zdW%S45gwxD^Kk#Mz>1=}i_O43s9q%3CSBs7TlsF^w=Tqjy~$RLD`>*$UicbRPq}fc z2{Xs-Dc8c0=Q7D!W;_0S&fD*UkYl+_C-2*B))7V;q>(Pm2IPz4-0V7;!$7scp+-E< zM+=P}c8bQ_MH7-g(g7vprI;4oIX!n9(|P4k{?;z~7r#lIF)&VCvj@+E~Si_0NHm( zL)YM{)*IVfp1!8+8NOpH#&&d5s_WYoDE$U5rOn{+WgI-4-6-YWR~y7|QvwDfVDbm* z%%aNTpOoG{UDtqAVG&Cr;C1^{h$iUr1QZ)Zmf`kemqSi@5KN_oXw$xK)`}r624bQ~ zxK=wF<(>(*g!665ke2&aCdSuBuxDY2!%KF28(x9 zTAATA;W`dI(6Gu~X&cAk1)UsaQ=#X+9VNcde!1q{J!MA42vIwHcxEmBtRL{(zWX=x zbB?;Z*9zfEGw*P``%SI&umdrM@p_e6<}$vEgJ%}~vgU)+^B6_Q#Lm*Po4P}a-yRv@ zvePqobo&U?`{|BW=m_)eek|h9a~1>md(dEMuAVjfh8RIL7V-}(gZU*iA#D zq|_j5D#4u^sj?+O$-oN7lSp6euIPQLVPh|IPTP2>{?0`00t1;IFm*RLAY7I$Zx-2Rx*1 TiR+z`5}_(fh(lII|E~QT3`+rw delta 2171 zcmV->2!!|lM%YHM$_51?wG^nInl17WPP1XAK5~*^)30}ZvwrLVo z{qMVmkT%Ur*CMd7FC3q9@3GG>Hbssexi&({7}FDi5toTdg4I4p>ZNZ=%~@(Pf6i@@ z`vD=LUoatYgAnQWV5r4HBz&xrs^HQ#Ae!gQ0)3N-(zIwr@*cQ?=~Y#Fi7HBfn2TK4 zZ4HW1kwnv_RGQ6mkiDT@w9#;f@K6Fx(5?ibqooRwXl2yGo&dDpkUr8+iBIW43O2_% zcpp;7*Zfhq8tz%?@Pn+vJy!Sve@4lt(I{A}_DTfF`yg6(&n>`%^M%OyU1MFu%JLU0 zT%~f1a%SvhDlAW9+=HQ7^MeUpmBUKp5DofgL4f_i-p*GVrF_Av+}?nZTX@(RVb~A4 z?n^Mnx7>0qndKuTE%$9G#u}7H#hoj&8ZzVK`jRpP!tHeUOQc=)=>bM~1yVx%7s;-o)#KryZ|PIuq}*+ohxas5|Kn`_CXo zhf$(fWwTwW9dwL4P}if-e^0h)Ba}pyNMC3?k=^CF{!P=yo}FNKsND&^HZP`dL$tXU zGF9ssdz8T9+r#0y4&IB@X5cDv=J+*p-?><3z?cRdLLKSAF^lm5qjAG%0+;8S14jNU zO7-yx)ao9|+Va=#NCoJ6u1+#WI&y31X-exNw!bATPr%}?b03mA2G}0ugMR>%kpmR7 ziU~6U2^EK+6_f%107{d_3nG7x+aM5quhf4)ysxpHdlYB2o7JlOP^s$mnP42FHQ)ld zsp`LXz_H^rd01_fU_8t@XJ#14;{G5jwByDKtumZMF-BZ5oeQJb+|H z(l{OyNrl1fE?fl6q>1@D{TZ1N$~va&{NF^A z42j`8;WzM1mA)^eWYm9grDw9iJITf!nJ<@_Z$+NrKk?~v2hYS0@p)+1{^I2#7qG)V zD`a?);fG}YIL2hT2>tU@@V)KLk)!KxyyDDp&`2=y?YY+a)jPg`DF#Lx96TdsPVD%K zS5<~rGwAT&K?9~BKstr~yj6P+4gJNSoELOkxvzTviHl9?Kz4uV;Y?TH3nP-kA1UZ0 zdT3%2xhr8diIT}|Je`a%Vq5F9{B>G5!5biKKmfvX->j$8XgC@q=}jDIbVKY<)Y0X_ z=skj-f&gqy{RvIxz!d_WL?8}9`t=9z5ZoXI3)bB-U638*&Q2bW*B*n;gMdt@1^ic9 zqiEbo`SlD#H*|ke@qbc{2aKIZa$5>WdQxpJ-kRYw6w)X6*fU&2I=l(@)(d#gZ~=!c zxS{T?7x13p0zSS8_tpz|&(Oe|)@-)7F5yCUf1#; zkpmR7pALZw2~#)kdO!gH04|d$8XJF{kaC!TyO#6};8_yU1|>Kwygx8)1G{-B6PyK1*mg(T5SUkCb^YP4$v|d) z_FAa79Z%c_=3lQrpKq&&(ds2SBkHzb{^<`w^J`Z}AJ0kpmP3)U_i}TC=AcGy#9jDxvN04+FuW zU`6pRBxhT(NlOy#_89sCzK72v_!_3|Hair&%=y0aJKs4ZnXF{#y?{1FrBW0I1bLu% zB?`4j(Oo|EPmpIUQ-YP1f)uU6phh-iZpe21)`b=d&~$54U!__ySMUH+a5!gGme zpMR^|kIpahDas-e#XcGN5y?qR$00pBerzZ2^|uN8g51pimpJxAl7|ruV@ig^Eg^`%L^KlE+Q%cdy`orKmiJqnj#<^Q#bE=Kmh;%E&>1m6aWAK00000 x00000008_MlP($-lk6f81=O`8P+F4#BNYK|lNTdC0{