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());