From ec40ab90ba5bdd472521532688730a97d0114180 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Sat, 4 Jul 2026 14:19:25 +0800 Subject: [PATCH] =?UTF-8?q?fix(erp):=20=E4=BF=AE=E5=A4=8D=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E8=AE=A1=E5=88=92=E5=88=B0=E8=B4=A7=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E5=87=86=E7=A1=AE=E6=80=A7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 直接从到货明细重新计算到货/在途统计数据,避免数据库缓存导致的数据不准确 - 更新在途状态判断逻辑,在途等于所有已上传但尚未到货的卷,不论WMS中是否有记录 - 移除未到货状态,未到货的全部计入在途状态 - 立即加载详情而不等待WMS刷新,提升用户体验 - 在WMS钢卷导出功能中添加钢卷ID字段支持 --- .../impl/ErpPurchasePlanServiceImpl.java | 31 +++++++++++++++++-- .../src/views/erp/purchaseDelivery/index.vue | 10 +++--- .../controller/WmsMaterialCoilController.java | 1 + .../domain/vo/WmsMaterialCoilExportVo.java | 1 + ...sCoilWarehouseOperationLogServiceImpl.java | 1 + 5 files changed, 36 insertions(+), 8 deletions(-) diff --git a/klp-erp/src/main/java/com/klp/erp/service/impl/ErpPurchasePlanServiceImpl.java b/klp-erp/src/main/java/com/klp/erp/service/impl/ErpPurchasePlanServiceImpl.java index b2967a137..7cd6cdcc2 100644 --- a/klp-erp/src/main/java/com/klp/erp/service/impl/ErpPurchasePlanServiceImpl.java +++ b/klp-erp/src/main/java/com/klp/erp/service/impl/ErpPurchasePlanServiceImpl.java @@ -94,6 +94,28 @@ public class ErpPurchasePlanServiceImpl implements IErpPurchasePlanService { if (vo.getContractCodes() != null && !vo.getContractCodes().isEmpty()) { vo.setContractInfos(baseMapper.selectContractsByOrderCodes(vo.getContractCodes())); } + // 直接从到货明细重新计算到货/在途统计,避免 DB 缓存导致数据不准 + List deliveries = deliveryMapper.selectList( + Wrappers.lambdaQuery(ErpPurchasePlanDelivery.class) + .eq(ErpPurchasePlanDelivery::getPlanId, planId)); + int arrivedCount = 0; + int transitCount = 0; + BigDecimal arrivedWeight = BigDecimal.ZERO; + BigDecimal transitWeight = BigDecimal.ZERO; + for (ErpPurchasePlanDelivery d : deliveries) { + BigDecimal w = d.getCoilWeight() == null ? BigDecimal.ZERO : d.getCoilWeight(); + if (d.getArrived() != null && d.getArrived() == 1) { + arrivedCount++; + arrivedWeight = arrivedWeight.add(w); + } else { + transitCount++; + transitWeight = transitWeight.add(w); + } + } + vo.setArrivedCount(arrivedCount); + vo.setArrivedWeight(arrivedWeight); + vo.setInTransitCount(transitCount); + vo.setInTransitWeight(transitWeight); fillProgress(vo); // 审核历史(含每次驳回理由) vo.setAuditLogs(queryAuditLogs(planId)); @@ -372,7 +394,8 @@ public class ErpPurchasePlanServiceImpl implements IErpPurchasePlanService { } String coil = normCoil(row.getCoilNo()); boolean arrived = !coil.isEmpty() && arrivedSet.contains(coil); - boolean transit = !arrived && !coil.isEmpty() && inTransitSet.contains(coil); + // 在途 = 所有已上传但尚未到货的卷(不论 WMS 中是否有记录) + boolean transit = !arrived && !coil.isEmpty(); ErpPurchasePlanDelivery d = new ErpPurchasePlanDelivery(); d.setPlanId(planId); d.setArrived(arrived ? 1 : 0); @@ -537,7 +560,8 @@ public class ErpPurchasePlanServiceImpl implements IErpPurchasePlanService { for (ErpPurchasePlanDelivery d : deliveries) { String coil = normCoil(d.getCoilNo()); int nowArrived = !coil.isEmpty() && arrivedSet.contains(coil) ? 1 : 0; - int nowTransit = nowArrived == 0 && !coil.isEmpty() && inTransitSet.contains(coil) ? 1 : 0; + // 在途 = 所有已上传但尚未到货的卷(不论 WMS 中是否有记录) + int nowTransit = nowArrived == 0 && !coil.isEmpty() ? 1 : 0; if (d.getArrived() == null || d.getArrived() != nowArrived || d.getInTransit() == null || d.getInTransit() != nowTransit) { d.setArrived(nowArrived); @@ -548,7 +572,8 @@ public class ErpPurchasePlanServiceImpl implements IErpPurchasePlanService { if (nowArrived == 1) { arrivedCount++; arrivedWeight = arrivedWeight.add(w); - } else if (nowTransit == 1) { + } else { + // 未到货的全部计入在途 transitCount++; transitWeight = transitWeight.add(w); } diff --git a/klp-ui/src/views/erp/purchaseDelivery/index.vue b/klp-ui/src/views/erp/purchaseDelivery/index.vue index 118c92cec..610554d87 100644 --- a/klp-ui/src/views/erp/purchaseDelivery/index.vue +++ b/klp-ui/src/views/erp/purchaseDelivery/index.vue @@ -209,7 +209,9 @@ export default { this.activeTab = 'all' this.current = { ...p } this.deliveryList = [] - // 打开即静默按钢卷表复核一次到货状态 + // 立即加载详情,不等待 WMS 刷新 + this.refreshDetail() + // 后台静默按钢卷表复核一次到货状态 const planId = p.planId refreshArrival(planId).catch(() => {}).finally(() => { if (this.current.planId === planId) this.refreshDetail() @@ -238,13 +240,11 @@ export default { }, statusText(row) { if (row.arrived === 1) return '已到货' - if (row.inTransit === 1) return '在途' - return '未到' + return '在途' }, statusClass(row) { if (row.arrived === 1) return 'yes' - if (row.inTransit === 1) return 'transit' - return 'no' + return 'transit' }, handleUploadSuccess(res) { if (res.code === 200) { diff --git a/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java b/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java index 1cb96abc3..c33393963 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java @@ -212,6 +212,7 @@ public class WmsMaterialCoilController extends BaseController { columns.put("rawMaterialThickness", "原料厚度"); columns.put("chromePlateCoilNo", "工序卷号"); columns.put("thicknessDifference", "厚度差"); + columns.put("coilId", "钢卷ID"); return R.ok(columns); } diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilExportVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilExportVo.java index 891fde048..9f73b4f62 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilExportVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilExportVo.java @@ -190,6 +190,7 @@ public class WmsMaterialCoilExportVo { /** * 钢卷ID 此处不展示在报表只是方便set值 */ + @ExcelProperty(value = "钢卷ID") private Long coilId; /** diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsCoilWarehouseOperationLogServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilWarehouseOperationLogServiceImpl.java index 566f64bd5..945ccacf6 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsCoilWarehouseOperationLogServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilWarehouseOperationLogServiceImpl.java @@ -322,6 +322,7 @@ public class WmsCoilWarehouseOperationLogServiceImpl implements IWmsCoilWarehous exportVo.setManufacturer(coil.getManufacturer()); exportVo.setSurfaceTreatmentDesc(coil.getSurfaceTreatmentDesc()); exportVo.setZincLayer(coil.getZincLayer()); + exportVo.setCoilId(coil.getCoilId()); exportVo.setCreateTime(coil.getCreateTime()); exportVo.setLogicalWarehouseName(coil.getWarehouseName()); exportVo.setActualWarehouseName(coil.getActualWarehouseName());