diff --git a/klp-ui/src/views/wms/report/delivery.vue b/klp-ui/src/views/wms/report/delivery.vue index 2244ca83..79dec538 100644 --- a/klp-ui/src/views/wms/report/delivery.vue +++ b/klp-ui/src/views/wms/report/delivery.vue @@ -65,8 +65,8 @@ - - + + @@ -148,6 +163,7 @@ export default { itemSpecification: '', itemMaterial: '', itemManufacturer: '', + includeBindInfo: true, }, loading: false, } @@ -177,8 +193,9 @@ export default { }, // 导出 exportData() { - this.download('wms/materialCoil/export', { + this.download('wms/materialCoil/exportDelivery', { coilIds: this.list.map(item => item.coilId).join(','), + // 传了status为1则会使用发货时间作为筛选条件查询,且导出后的excel会包含发货时间和发货人 status: 1 }, `materialCoil_${new Date().getTime()}.xlsx`) }, diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilBindInfoVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilBindInfoVo.java index 78423ff9..11da55c8 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilBindInfoVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilBindInfoVo.java @@ -1,9 +1,11 @@ package com.klp.domain.vo; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; /** @@ -16,16 +18,49 @@ public class WmsCoilBindInfoVo implements Serializable { private static final long serialVersionUID = 1L; + /** 钢卷ID */ private Long coilId; + /** 发货单明细ID */ private Long detailId; + // -------------------- 发货计划(plan) -------------------- + private Long planId; + + private String planName; + + private Date planDate; + + // -------------------- 发货单主表(waybill) -------------------- private Long waybillId; + private String waybillNo; + private String waybillName; - private Long planId; - private String planName; - private Date planDate; + private String licensePlate; + + private String consigneeUnit; + + private String senderUnit; + + private Date deliveryTime; + + private String weighbridge; + + private String salesPerson; + + private String principal; + + private String principalPhone; + + private Long waybillStatus; + + private String waybillRemark; + + // -------------------- 发货单明细补充字段(detail) -------------------- + private String detailSettlementType; + + private BigDecimal detailUnitPrice; } diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilDeliveryExportVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilDeliveryExportVo.java index 7dfb13e9..a6005cf8 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilDeliveryExportVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilDeliveryExportVo.java @@ -23,6 +23,10 @@ public class WmsMaterialCoilDeliveryExportVo extends WmsMaterialCoilExportVo { */ private Long coilId; + // 发货人 + @ExcelProperty(value = "发货人") + private String exportBy; + // -------------------- 发货计划(plan) -------------------- private Long planId; diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java index 4043e2dc..459e1bb6 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java @@ -353,8 +353,69 @@ public class WmsMaterialCoilVo extends BaseEntity { @JsonFormat(pattern = "yyyy-MM-dd") private Date bindPlanDate; - // 父钢卷id private String parentCoilId; + + // ========== 补充的发货绑定信息字段 ========== + /** + * 车牌号 + */ + private String bindLicensePlate; + + /** + * 收货单位 + */ + private String bindConsigneeUnit; + + /** + * 发货单位 + */ + private String bindSenderUnit; + + /** + * 发货时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date bindDeliveryTime; + + /** + * 地磅 + */ + private String bindWeighbridge; + + /** + * 销售人员 + */ + private String bindSalesPerson; + + /** + * 负责人 + */ + private String bindPrincipal; + + /** + * 负责人电话 + */ + private String bindPrincipalPhone; + + /** + * 运单状态 + */ + private Long bindWaybillStatus; + + /** + * 运单备注 + */ + private String bindWaybillRemark; + + /** + * 明细结算类型 + */ + private String bindDetailSettlementType; + + /** + * 明细单价 + */ + private BigDecimal bindDetailUnitPrice; } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java index 26a4860d..5738cbab 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java @@ -338,6 +338,20 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { vo.setBindPlanId(bind.getPlanId()); vo.setBindPlanName(bind.getPlanName()); vo.setBindPlanDate(bind.getPlanDate()); + + // 补充设置更多的绑定信息字段 + vo.setBindLicensePlate(bind.getLicensePlate()); + vo.setBindConsigneeUnit(bind.getConsigneeUnit()); + vo.setBindSenderUnit(bind.getSenderUnit()); + vo.setBindDeliveryTime(bind.getDeliveryTime()); + vo.setBindWeighbridge(bind.getWeighbridge()); + vo.setBindSalesPerson(bind.getSalesPerson()); + vo.setBindPrincipal(bind.getPrincipal()); + vo.setBindPrincipalPhone(bind.getPrincipalPhone()); + vo.setBindWaybillStatus(bind.getWaybillStatus()); + vo.setBindWaybillRemark(bind.getWaybillRemark()); + vo.setBindDetailSettlementType(bind.getDetailSettlementType()); + vo.setBindDetailUnitPrice(bind.getDetailUnitPrice()); } else { vo.setBound(Boolean.FALSE); } @@ -616,7 +630,6 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { qw.apply("COALESCE(ca.abnormal_count, 0) >= {0}", bo.getMinAbnormalCount()); } // 排序: - // - 当前端需要绑定信息(includeBindInfo=true)时:优先展示“已绑定实际库位”的钢卷(actual_warehouse_id 非空在前) // 再按实际库位ID升序(库位ID为自增,升序即可满足“先生成的库位在前”) // - 否则:保持原有创建时间倒序 if (Boolean.TRUE.equals(bo.getOrderBy())) { @@ -2375,7 +2388,35 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { if (coilIds.isEmpty()) { return Collections.emptyList(); } - return baseMapper.selectDeliveryExportListByCoilIds(coilIds); + List wmsMaterialCoilDeliveryExportVos = baseMapper.selectDeliveryExportListByCoilIds(coilIds); + // 遍历数据,根据状态替换日期字段,并处理空值兜底 + wmsMaterialCoilDeliveryExportVos.stream().forEach(vo -> { + // 判断查询条件中的status是否为1(已发货) + if (bo.getStatus() != null && bo.getStatus() == 1) { + Date finalDate = null; + // 1. 优先使用发货时间 + if (vo.getExportTime() != null) { + finalDate = vo.getExportTime(); + } + // 2. 发货时间为空时,使用更新时间兜底 + else if (vo.getUpdateTime() != null) { + finalDate = vo.getUpdateTime(); + } + // 3. 若更新时间也为空,保留原有createTime(避免日期字段为空) + else { + finalDate = vo.getCreateTime(); + } + // 赋值最终的日期 + vo.setCreateTime(finalDate); + } + // 非1的情况,保持原有create_time不变 + + // 如果是dataType=0的历史数据,将实际库区设置为null + if (vo.getDataType() != null && vo.getDataType() == 0) { + vo.setActualWarehouseName(null); + } + }); + return wmsMaterialCoilDeliveryExportVos; } private List parseCsvLongs(String csv) { diff --git a/klp-wms/src/main/resources/mapper/klp/WmsDeliveryWaybillDetailMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsDeliveryWaybillDetailMapper.xml index ae6bb403..aea5cafa 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsDeliveryWaybillDetailMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsDeliveryWaybillDetailMapper.xml @@ -30,27 +30,63 @@ - - - + + + + + + + + + + + + + + + + + + + + +