From a3c9a3c833ee343e4d95913c48640c51747111ed Mon Sep 17 00:00:00 2001 From: liuhanqing Date: Wed, 24 Sep 2025 15:05:17 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=B7=E6=B1=82=E5=85=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/service/impl/ToWmsServiceImpl.java | 156 +++++++++++------- .../CheckDifferenceRecordController.java | 54 ++---- .../service/impl/BasStockServiceImpl.java | 4 +- 3 files changed, 111 insertions(+), 103 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java index 8a8a748..a5f21db 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java @@ -96,7 +96,6 @@ public class ToWmsServiceImpl implements IToWmsService { return AjaxResult.error("托盘条码不能为空"); } log.info("扫码内容{}", requestEnter.getTrayCode()); - //生成调拨单 Map saveTransferBill = toErpService.saveTransferBill(); if (!"200".equals(saveTransferBill.get("code"))) { @@ -104,26 +103,31 @@ public class ToWmsServiceImpl implements IToWmsService { } log.info("生成调拨单{}", saveTransferBill); - //解析扫码内容 - String trayCode = requestEnter.getTrayCode(); - String[] split = trayCode.split(" "); - String model = split[0].substring(6); - String color = split[1].substring(6); - String serial = split[2].substring(7); - String v = split[3].substring(2); - String hz = split[4].substring(3); - String ph = split[5].substring(3); - String nw = split[6].substring(5, split[6].length() - 2); - String gw = split[7].substring(5, split[7].length() - 2); - String productId = split[8].substring(10); - String bm = split[9].substring(2, split[9].length() - 1); - String[] decode = ProcodeUtils.decode(bm); - String erpBill = decode[0]; - String xh = decode[1]; - String jx = decode[2]; - String fx = decode[3]; - String xlh = decode[4]; - log.info("二维码详情 productId:{} model:{},color:{},serial:{},v:{},hz:{},ph:{},nw:{},gw:{},erpBill:{},xh:{},jx:{},fx:{},xlh:{}", productId, model, color, serial, v, hz, ph, nw, gw, erpBill, xh, jx, fx, xlh); + //解析扫码内容 + String trayCode = requestEnter.getTrayCode(); + String[] split = trayCode.split(" "); + String model = split[0].substring(6); + String color = split[1].substring(6); + String serial = split[2].substring(7); + String v = split[3].substring(2); + String hz = split[4].substring(3); + String ph = split[5].substring(3); + String nw = split[6].substring(5, split[6].length() - 2); + String gw = split[7].substring(5, split[7].length() - 2); + String productId = split[8].substring(10); + String bm = split[9].substring(2, split[9].length() - 1); + String[] decode = ProcodeUtils.decode(bm); + String erpBill = decode[0]; + String xh = decode[1]; + String jx = decode[2]; + String fx = decode[3]; + String xlh = decode[4]; + log.info("二维码详情 productId:{} model:{},color:{},serial:{},v:{},hz:{},ph:{},nw:{},gw:{},erpBill:{},xh:{},jx:{},fx:{},xlh:{}", productId, model, color, serial, v, hz, ph, nw, gw, erpBill, xh, jx, fx, xlh); + for (String s : split) { + if (StrUtil.isEmpty(s)){ + return new AjaxResult(503,"二维码内容错误"); + } + } //查询物料信息 BasProduct basProductParam = new BasProduct(); @@ -132,7 +136,22 @@ public class ToWmsServiceImpl implements IToWmsService { if (CollUtil.isEmpty(basProducts)) { return AjaxResult.error("物料信息不存在"); } + BasProduct basProduct = basProducts.get(0); + + //根据包装方式 主要包装方式 描述 长 宽 高 包装材积 + int size = getSize(basProduct); + + //超大托盘不处理 直接返回 + if (size == 5){ + return new AjaxResult(501,"超大托盘"); + } + //托盘大小与电气返回不匹配 + if (size != Integer.parseInt(requestEnter.getSize())){ + return new AjaxResult(502,"托盘大小不匹配"); + } + + String inOrOutType = null; String inStockId = null; String inStockDetailId = null; @@ -174,20 +193,7 @@ public class ToWmsServiceImpl implements IToWmsService { mydoJob.setExecutionPhase("1"); mydoJob.setTrayCode(basJobIdService.getJobId("TP")); mydoJob.setWarehouseId("01"); - //todo 根据包装方式 主要包装方式 描述 长 宽 高 包装材积 判断巷道1 还是巷道2 - switch (requestEnter.getSize()) { - case "1": - mydoJob.setRoadwayId("1"); - break; - case "2": - mydoJob.setRoadwayId("2"); - break; - case "4": - break; - default: - return AjaxResult.error("规格不存在"); - } - + mydoJob.setRoadwayId(getRoadway(size)); //根据巷道查找货位 BasCargoSpace basCargoSpaceParam = new BasCargoSpace(); basCargoSpaceParam.setWarehouseId(mydoJob.getWarehouseId()); @@ -238,7 +244,6 @@ public class ToWmsServiceImpl implements IToWmsService { transferBillCallbackService.insertTransferBillCallback(transferBillCallback); } //修改作业状态为正执行 - HashMap result = new HashMap<>(); result.put("jobId", mydoJob.getJobId()); result.put("taskNo", mydoJob.getTaskNo()); @@ -248,34 +253,67 @@ public class ToWmsServiceImpl implements IToWmsService { return AjaxResult.success(result); } + private String getRoadway(int size) { + return switch (size) { + case 1, 2 -> "1"; + case 3, 4 -> "2"; + default -> null; + }; + } + + /** + * todo 根据包装方式 主要包装方式 描述 长 宽 高 包装材积获取大小 + * @param basProduct + * @return + */ + private int getSize(BasProduct basProduct) { + String remark = basProduct.getRemark(); + String packageType = basProduct.getSpare34(); + String mainPackageType = basProduct.getSpare35(); + String length = basProduct.getSpare36(); + String width = basProduct.getSpare37(); + String height = basProduct.getSpare38(); + String volume = basProduct.getSpare39(); + return 0; + } + @Override public AjaxResult selectMydoJobByEntranceId(RequestEnter requestEnter) { - MydoJob mydoJob = new MydoJob(); - mydoJob.setStatus("1"); - mydoJob.setEntranceId("G1005"); - MydoJob mydoJob2 = mydoJobService.selectMydoJobByEntranceId(mydoJob); + MydoJob param = new MydoJob(); + param.setStatus("1"); + param.setEntranceId("G1005"); + MydoJob mydoJob = mydoJobService.selectMydoJobByEntranceId(param); - if(mydoJob2 != null){ - //todo 根据包装方式 主要包装方式 描述 长 宽 高 包装材积 判断巷道1 还是巷道2 - switch (requestEnter.getSize()) { - case "1": - mydoJob.setRoadwayId("1"); - break; - case "2": - mydoJob.setRoadwayId("2"); - break; - case "4": - break; - default: - return AjaxResult.error("规格不存在"); + if(mydoJob != null && StrUtil.isNotEmpty(mydoJob.getTrayCode())){ + List mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByJobId(mydoJob.getJobId()); + if (CollUtil.isEmpty(mydoJobDetails)) { + return AjaxResult.error("没有任务"); } + MydoJobDetail mydoJobDetail = mydoJobDetails.get(0); + String productId = mydoJobDetail.getProductId(); + BasProduct basProduct = basProductService.selectBasProductByProductId(productId); + + int size = getSize(basProduct); + //超大托盘不处理 直接返回 + if (size == 5){ + return new AjaxResult(501,"超大托盘"); + } + //托盘大小与电气返回不匹配 + if (size != Integer.parseInt(requestEnter.getSize())){ + return new AjaxResult(502,"托盘大小不匹配"); + } + + HashMap result = new HashMap<>(); + result.put("jobId", mydoJob.getJobId()); + result.put("taskNo", mydoJob.getTaskNo()); + result.put("cargoSpaceId", mydoJob.getCargoSpaceId()); + result.put("roadwayId", mydoJob.getRoadwayId()); + result.put("entranceId", mydoJob.getEntranceId()); + return AjaxResult.success(result); + + }else { + return AjaxResult.error("没有任务"); } - //查子作业,查物料规格,判断是否对的上 - - - - - return null; } @Override diff --git a/ruoyi-admin/src/main/java/com/ruoyi/check/difference/controller/CheckDifferenceRecordController.java b/ruoyi-admin/src/main/java/com/ruoyi/check/difference/controller/CheckDifferenceRecordController.java index 08ce1f3..fe71977 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/check/difference/controller/CheckDifferenceRecordController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/check/difference/controller/CheckDifferenceRecordController.java @@ -3,6 +3,8 @@ package com.ruoyi.check.difference.controller; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.ruoyi.bas.basJobId.service.IBasJobIdService; +import com.ruoyi.bas.cargoSpace.domain.BasCargoSpace; +import com.ruoyi.bas.cargoSpace.service.IBasCargoSpaceService; import com.ruoyi.bas.warehouse.domain.BasWarehouse; import com.ruoyi.bas.warehouse.service.IBasWarehouseService; import com.ruoyi.check.DifferenceRecordFinish.domain.CheckDifferenceRecordFinish; @@ -43,6 +45,8 @@ public class CheckDifferenceRecordController extends BaseController { private ICheckDifferenceRecordService checkDifferenceRecordService; @Autowired private IBasWarehouseService basWarehouseService; + @Autowired + private IBasCargoSpaceService basCargoSpaceService; /** * 查询盘点差异列表 @@ -159,7 +163,7 @@ public class CheckDifferenceRecordController extends BaseController { return AjaxResult.error(MessageUtils.message("error.message16")); } - // 创建新的库存记录 + //todo 创建新的库存记录 BasStock newStock = new BasStock(); // 先设置必要字段 newStock.setTrayCode(record.getTrayCode()); @@ -184,49 +188,15 @@ public class CheckDifferenceRecordController extends BaseController { newStock.setStockId(basJobIdService.getJobId("KC")); basStockService.insertBasStock(newStock); - //删除KTP库存 - BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(record.getWarehouseId()); - if ("1".equals(basWarehouse.getWarehouseType())||"2".equals(basWarehouse.getWarehouseType())){ - //查询是否存在空料箱库存数 - BasStock queryStock = new BasStock(); - queryStock.setTrayCode(record.getTrayCode()); - queryStock.setProductId("KTP0001"); - List stocks = basStockService.selectBasStockList(queryStock); - if (!stocks.isEmpty()){ - basStockService.deleteBasStockByStockId(stocks.get(0).getStockId()); - } - } - - } else if ("3".equals(recordType)) { // 删除数据 - // 检查要删除的库存是否存在 - BasStock queryStock = new BasStock(); - queryStock.setStockId(record.getStockId()); - //queryStock.setTrayCode(record.getTrayCode()); - List stocks = basStockService.selectBasStockList(queryStock); - - if (stocks.isEmpty()) { - log.error("要删除的库存不存在"); - return AjaxResult.error(MessageUtils.message("error.message15")); - } - + } else if ("3".equals(recordType)) { + // 删除数据 basStockService.deleteBasStockByStockId(record.getStockId()); - - //查询该料箱是否存在库存 如果不存在 则创建空料箱库存 - BasStock queryStock2 = new BasStock(); - queryStock2.setTrayCode(record.getTrayCode()); - List stocks2 = basStockService.selectBasStockList(queryStock2); - BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(record.getWarehouseId()); - if (stocks2.isEmpty() && ("1".equals(basWarehouse.getWarehouseType()) || "2".equals(basWarehouse.getWarehouseType()))) { - BasStock basStock = stocks.get(0); - basStock.setProductId("KTP0001"); - basStock.setProductGuid("KTP0001"); - basStock.setQuantity("1"); - basStock.setStockStatus("1"); - basStock.setOutQuantity("0"); - basStock.setProductStatus("1"); - basStockService.insertBasStock(basStock); - } + // 修改货位状态 + BasCargoSpace basCargoSpace = new BasCargoSpace(); + basCargoSpace.setCargoSpaceId(record.getCargoSpaceId()); + basCargoSpace.setStatus("1"); + basCargoSpaceService.updateBasCargoSpace(basCargoSpace); } // 设置审核状态为已审核 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/service/impl/BasStockServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/service/impl/BasStockServiceImpl.java index 7a41c35..2c9c9b1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/service/impl/BasStockServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/service/impl/BasStockServiceImpl.java @@ -85,7 +85,7 @@ public class BasStockServiceImpl implements IBasStockService } private void insertMaintainRecord(BasStock oldStock, BasStock basStock, String operate) { - if ((oldStock==null && operate.equals("1")) || !oldStock.getQuantity().equals(basStock.getQuantity())){ + if (oldStock != null && !oldStock.getQuantity().equals(basStock.getQuantity())) { BasStockMaintainRecord basStockMaintainRecord = new BasStockMaintainRecord(); basStockMaintainRecord.setWhGuid(IdUtil.fastSimpleUUID()); basStockMaintainRecord.setStockId(basStock.getStockId()); @@ -95,7 +95,7 @@ public class BasStockServiceImpl implements IBasStockService basStockMaintainRecord.setProductGuid(basStock.getProductGuid()); basStockMaintainRecord.setCreateBy(SecurityUtils.getLoginUser().getUsername()); basStockMaintainRecord.setCreateTime(new Date()); - basStockMaintainRecord.setOldQuantity(oldStock != null ? oldStock.getQuantity() : "0"); + basStockMaintainRecord.setOldQuantity(oldStock.getQuantity()); basStockMaintainRecord.setQuantity(basStock.getQuantity()); basStockMaintainRecord.setProductId(basStock.getExtraField().getProductId()); basStockMaintainRecord.setProductName(basStock.getExtraField().getMaterialDesc());