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 c5ba600..3889cad 100644 Binary files a/wms-webapi/src/main/resources/templates/import/batch.xlsx and b/wms-webapi/src/main/resources/templates/import/batch.xlsx differ