From f7b773d3f3d7bf40bd5fa422ca70d31329667724 Mon Sep 17 00:00:00 2001 From: wenshijun Date: Wed, 4 Feb 2026 09:21:18 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E6=9F=A5=E8=AF=A2=E5=BE=85?= =?UTF-8?q?=E9=85=8D=E9=80=81=E6=8E=A5=E5=8F=A3=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../document/config/BigDecimalSerializer.java | 22 + .../controller/DeliveryOrderController.java | 1 + .../project/document/domain/RkRecord.java | 932 ++++++++++++++++++ .../document/domain/vo/DeliveryBillVO.java | 33 +- .../impl/DeliveryOrderServiceImpl.java | 52 +- src/main/resources/application.yml | 4 +- 6 files changed, 1007 insertions(+), 37 deletions(-) create mode 100644 src/main/java/com/delivery/project/document/config/BigDecimalSerializer.java create mode 100644 src/main/java/com/delivery/project/document/domain/RkRecord.java diff --git a/src/main/java/com/delivery/project/document/config/BigDecimalSerializer.java b/src/main/java/com/delivery/project/document/config/BigDecimalSerializer.java new file mode 100644 index 0000000..b7c1968 --- /dev/null +++ b/src/main/java/com/delivery/project/document/config/BigDecimalSerializer.java @@ -0,0 +1,22 @@ +package com.delivery.project.document.config; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; + +import java.io.IOException; +import java.math.BigDecimal; + +public class BigDecimalSerializer extends JsonSerializer { + + @Override + public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializers) + throws IOException { + if (value == null) { + gen.writeNull(); + } else { + // 保持数字类型,不带引号,不补0、不截断 + gen.writeNumber(value.stripTrailingZeros().toPlainString()); + } + } +} diff --git a/src/main/java/com/delivery/project/document/controller/DeliveryOrderController.java b/src/main/java/com/delivery/project/document/controller/DeliveryOrderController.java index e93c6d7..ae967e0 100644 --- a/src/main/java/com/delivery/project/document/controller/DeliveryOrderController.java +++ b/src/main/java/com/delivery/project/document/controller/DeliveryOrderController.java @@ -152,6 +152,7 @@ public class DeliveryOrderController extends BaseController { List list = deliveryOrderService.listWisdomRkForDelivery(billNoCk); return AjaxResult.success(list); } + // ======================== 统计接口 ======================== /** 总览统计 */ diff --git a/src/main/java/com/delivery/project/document/domain/RkRecord.java b/src/main/java/com/delivery/project/document/domain/RkRecord.java new file mode 100644 index 0000000..31e5b58 --- /dev/null +++ b/src/main/java/com/delivery/project/document/domain/RkRecord.java @@ -0,0 +1,932 @@ +package com.delivery.project.document.domain; + +import com.delivery.framework.aspectj.lang.annotation.Excel; +import com.delivery.framework.web.domain.BaseEntity; +import com.delivery.project.document.config.BigDecimalSerializer; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 出入库记录对象 rk_record + * + * @author zg + * @date 2026-01-20 + */ +public class RkRecord extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID */ + private Long id; + + /** 批量操作ID集合(不落库) */ + private List ids; + /** 业务类型 */ + @Excel(name = "业务类型", readConverterExp = "0=入库,1=出库,2=借料出库,3=还料入库") + private String bizType; + /** 业务类型列表(查询用) */ + private List bizTypeList; + /** 出入库类型 */ +// @Excel(name = "出入库类型") + private String operationType; + // ====== 查询字段(新增)====== + private List operationTypes; + /** 出入库类型名称(联表) */ + @Excel(name = "出入库类型名称") + private String operationTypeName; + + /** 施工队 */ + @Excel(name = "施工队") + private String teamCode; + + /** 施工队名称(联表) */ + @Excel(name = "施工队名称") + private String teamName; + + /** 执行状态(0预入/预出,1已完成) */ + @Excel(name = "执行状态", readConverterExp = "0=预操作,1=已完成") + private String execStatus; + + /** 物资类型 */ +// @Excel(name = "物资类型") + private String wlType; + + /** 物资类型名称(联表) */ + @Excel(name = "物资类型名称") + private String wlTypeName; + + /** 所属仓库 */ +// @Excel(name = "所属仓库") + private String cangku; + + /** 小仓名称 */ + @Excel(name = "所属仓库") + private String warehouseName; + + /** 大仓编码 */ + private String parentWarehouseCode; + + /** 大仓名称 */ + @Excel(name = "大仓名称") + private String parentWarehouseName; + + /** 出入库时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @Excel(name = "出入库时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date operationTime; + + /** 出入库理货员 */ +// @Excel(name = "出入库理货员") + private Integer operator; + + /** 出入库理货员 */ + @Excel(name = "出入库理货员") + private String operatorName; + + /** 是否已出库(0已入库,1已出库) */ +// @Excel(name = "是否已出库", readConverterExp = "0=已入库,1已出库") + private String isChuku; + + /** 0:入库待审核,1已通过,2已驳回,3出库待审核 */ +// @Excel(name = "") + private String status; + + /** 库龄(天) */ + @Excel(name = "库龄(天)") + private Long stockAge; + + /** 单据号 */ + @Excel(name = "单据号") + private String billNo; + + /** 县局 */ + @Excel(name = "县局") + private String xj; + + /** 项目号 */ + @Excel(name = "项目号") + private String xmNo; + + /** 项目描述 */ + @Excel(name = "项目描述") + private String xmMs; + + /** 出库项目号(借用方项目) */ + @Excel(name = "出库项目号", readConverterExp = "借=用方项目") + private String xmNoCk; + + /** 出库项目描述(借用方项目描述) */ + @Excel(name = "出库项目描述", readConverterExp = "借=用方项目描述") + private String xmMsCk; + + /** 物料号 */ + @Excel(name = "物料号") + private String wlNo; + + /** 物料描述 */ + @Excel(name = "物料描述") + private String wlMs; + + /** 供应商编码 */ + @Excel(name = "供应商编码") + private String gysNo; + + /** 供应商名称 */ + @Excel(name = "供应商名称") + private String gysMc; + + /** SAP订单编号 */ + @Excel(name = "SAP订单编号") + private String sapNo; + + /** 行号 */ + @Excel(name = "行号") + private String xh; + + /** 计划交货金额 */ + @Excel(name = "计划交货金额") + @JsonSerialize(using = BigDecimalSerializer.class) + private BigDecimal jhAmt; + + /** 合同单价 */ + @Excel(name = "合同单价") + @JsonSerialize(using = BigDecimalSerializer.class) + private BigDecimal htDj; + + /** 计划交货数量 */ + @Excel(name = "计划交货数量") + @JsonSerialize(using = BigDecimalSerializer.class) + private BigDecimal jhQty; + + /** 合同数量 */ + @Excel(name = "合同数量") + @JsonSerialize(using = BigDecimalSerializer.class) + private BigDecimal htQty; + + /** 计量单位 */ + @Excel(name = "计量单位") + private String dw; + + /** 实际入库数量 */ + @Excel(name = "实际出/入库数量") + @JsonSerialize(using = BigDecimalSerializer.class) + private BigDecimal realQty; + + /** 导出用:总金额 = realQty * htDj(不落库) */ + @Excel(name = "总金额") + @JsonSerialize(using = BigDecimalSerializer.class) + private BigDecimal totalAmount; + + /** 库位码 */ + @Excel(name = "库位码") + private String pcode; + + /** 库位16进制编码 */ + @Excel(name = "库位16进制编码") + private String pcodeId; + + /** 托盘码 */ + @Excel(name = "托盘码") + private String trayCode; + + /** 实物ID */ + @Excel(name = "实物ID") + private String entityId; + + /** 借用时间 */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") +// @Excel(name = "借用时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date borrowTime; + + /** 归还时间 */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") +// @Excel(name = "归还时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date returnTime; + + /** 是否移库过(0否 1是) */ +// @Excel(name = "是否移库过", readConverterExp = "0=否,1=是") + private String hasMoved; + + /** 是否借料(0否,1是,2已归还) */ +// @Excel(name = "是否借料", readConverterExp = "0=否,1是,2已归还") + private String isBorrowed; + + /** 是否删除(0 表示正常,1 表示已删除) */ +// @Excel(name = "是否删除", readConverterExp = "0=,表=示正常,1,表=示已删除") + private String isDelete; + + /** 供应计划ID(对应供应计划表主键) */ +// @Excel(name = "供应计划ID", readConverterExp = "对=应供应计划表主键") + private Long gysJhId; + + /** $column.columnComment */ +// @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + private Long rdid; + + /** $column.columnComment */ +// @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + private Long rdidCk; + + /** $column.columnComment */ +// @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + private Long sid; + + /** 是否需要配送(0否,1是,2配送中,3配送完成) */ + @Excel(name = "是否需要配送", readConverterExp = "0=否,1=是,2=配送中,3=配送完成") + private String isDelivery; + /** 封样编号1 */ +// @Excel(name = "封样编号1") + private String fycde1; + + /** 封样编号2 */ +// @Excel(name = "封样编号2") + private String fycde2; + + /** 1已更新 */ +// @Excel(name = "1已更新") + private Long isUpdate; + + /** 入库 / 出库开始时间(查询用) */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date startDate; + + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date endDate; + + /** 对应 rk_info 主键ID */ + private Long rkInfoId; + /** 备注 */ + @Excel(name = "备注") + private String remark; + + /** 单件重量(kg) */ + private BigDecimal weightKg; + + /** 单件体积(立方米) */ + private BigDecimal volumeM3; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + + public List getIds() { + return ids; + } + + public void setIds(List ids) { + this.ids = ids; + } + + public void setBizType(String bizType) { + this.bizType = bizType; + } + + public String getBizType() { + return bizType; + } + public List getBizTypeList() { + return bizTypeList; + } + + public void setBizTypeList(List bizTypeList) { + this.bizTypeList = bizTypeList; + } + public void setOperationType(String operationType) + { + this.operationType = operationType; + } + + public String getOperationType() + { + return operationType; + } + + public String getOperationTypeName() { + return operationTypeName; + } + + public void setOperationTypeName(String operationTypeName) { + this.operationTypeName = operationTypeName; + } + + public String getExecStatus() { + return execStatus; + } + + public void setExecStatus(String execStatus) { + this.execStatus = execStatus; + } + public Long getStockAge() { + return stockAge; + } + + public void setStockAge(Long stockAge) { + this.stockAge = stockAge; + } + + public void setWlType(String wlType) + { + this.wlType = wlType; + } + + public String getWlType() + { + return wlType; + } + + public String getWlTypeName() { + return wlTypeName; + } + + public void setWlTypeName(String wlTypeName) { + this.wlTypeName = wlTypeName; + } + + public void setCangku(String cangku) + { + this.cangku = cangku; + } + + public String getCangku() + { + return cangku; + } + + public String getWarehouseName() { + return warehouseName; + } + + public void setWarehouseName(String warehouseName) { + this.warehouseName = warehouseName; + } + + public String getParentWarehouseCode() { + return parentWarehouseCode; + } + + public void setParentWarehouseCode(String parentWarehouseCode) { + this.parentWarehouseCode = parentWarehouseCode; + } + + public String getParentWarehouseName() { + return parentWarehouseName; + } + + public void setParentWarehouseName(String parentWarehouseName) { + this.parentWarehouseName = parentWarehouseName; + } + + public void setOperationTime(Date operationTime) + { + this.operationTime = operationTime; + } + + public Date getOperationTime() + { + return operationTime; + } + + public Integer getOperator() { + return operator; + } + + public void setOperator(Integer operator) { + this.operator = operator; + } + + public String getOperatorName() { + return operatorName; + } + + public void setOperatorName(String operatorName) { + this.operatorName = operatorName; + } + + public void setIsChuku(String isChuku) + { + this.isChuku = isChuku; + } + + public String getIsChuku() + { + return isChuku; + } + + public void setStatus(String status) + { + this.status = status; + } + + public String getStatus() + { + return status; + } + + public void setBillNo(String billNo) + { + this.billNo = billNo; + } + + public String getBillNo() + { + return billNo; + } + + public void setXj(String xj) + { + this.xj = xj; + } + + public String getXj() + { + return xj; + } + + public void setXmNo(String xmNo) + { + this.xmNo = xmNo; + } + + public String getXmNo() + { + return xmNo; + } + + public void setXmMs(String xmMs) + { + this.xmMs = xmMs; + } + + public String getXmMs() + { + return xmMs; + } + + public void setXmNoCk(String xmNoCk) + { + this.xmNoCk = xmNoCk; + } + + public String getXmNoCk() + { + return xmNoCk; + } + + public void setXmMsCk(String xmMsCk) + { + this.xmMsCk = xmMsCk; + } + + public String getXmMsCk() + { + return xmMsCk; + } + + public void setWlNo(String wlNo) + { + this.wlNo = wlNo; + } + + public String getWlNo() + { + return wlNo; + } + + public void setWlMs(String wlMs) + { + this.wlMs = wlMs; + } + + public String getWlMs() + { + return wlMs; + } + + public void setGysNo(String gysNo) + { + this.gysNo = gysNo; + } + + public String getGysNo() + { + return gysNo; + } + + public void setGysMc(String gysMc) + { + this.gysMc = gysMc; + } + + public String getGysMc() + { + return gysMc; + } + + public void setJhAmt(BigDecimal jhAmt) + { + this.jhAmt = jhAmt; + } + + public BigDecimal getJhAmt() + { + return jhAmt; + } + + public void setHtDj(BigDecimal htDj) + { + this.htDj = htDj; + } + + public BigDecimal getHtDj() + { + return htDj; + } + + public void setSapNo(String sapNo) + { + this.sapNo = sapNo; + } + + public String getSapNo() + { + return sapNo; + } + + public void setXh(String xh) + { + this.xh = xh; + } + + public String getXh() + { + return xh; + } + + public void setJhQty(BigDecimal jhQty) + { + this.jhQty = jhQty; + } + + public BigDecimal getJhQty() + { + return jhQty; + } + + public void setHtQty(BigDecimal htQty) + { + this.htQty = htQty; + } + + public BigDecimal getHtQty() + { + return htQty; + } + + public void setDw(String dw) + { + this.dw = dw; + } + + public String getDw() + { + return dw; + } + + public void setRealQty(BigDecimal realQty) + { + this.realQty = realQty; + } + + public BigDecimal getRealQty() + { + return realQty; + } + + public BigDecimal getTotalAmount() { + return totalAmount; + } + + public void setTotalAmount(BigDecimal totalAmount) { + this.totalAmount = totalAmount; + } + + public void setPcode(String pcode) + { + this.pcode = pcode; + } + + public String getPcode() + { + return pcode; + } + + public void setPcodeId(String pcodeId) + { + this.pcodeId = pcodeId; + } + + public String getPcodeId() + { + return pcodeId; + } + + public void setTrayCode(String trayCode) + { + this.trayCode = trayCode; + } + + public String getTrayCode() + { + return trayCode; + } + + public void setEntityId(String entityId) + { + this.entityId = entityId; + } + + public String getEntityId() + { + return entityId; + } + + public void setTeamCode(String teamCode) + { + this.teamCode = teamCode; + } + + public String getTeamCode() + { + return teamCode; + } + + public String getTeamName() { + return teamName; + } + + public void setTeamName(String teamName) { + this.teamName = teamName; + } + + public void setBorrowTime(Date borrowTime) + { + this.borrowTime = borrowTime; + } + + public Date getBorrowTime() + { + return borrowTime; + } + + public void setReturnTime(Date returnTime) + { + this.returnTime = returnTime; + } + + public Date getReturnTime() + { + return returnTime; + } + + public void setHasMoved(String hasMoved) + { + this.hasMoved = hasMoved; + } + + public String getHasMoved() + { + return hasMoved; + } + + public void setIsBorrowed(String isBorrowed) + { + this.isBorrowed = isBorrowed; + } + + public String getIsBorrowed() + { + return isBorrowed; + } + + public void setIsDelete(String isDelete) + { + this.isDelete = isDelete; + } + + public String getIsDelete() + { + return isDelete; + } + + public void setGysJhId(Long gysJhId) + { + this.gysJhId = gysJhId; + } + + public Long getGysJhId() + { + return gysJhId; + } + + public void setRdid(Long rdid) + { + this.rdid = rdid; + } + + public Long getRdid() + { + return rdid; + } + + public void setRdidCk(Long rdidCk) + { + this.rdidCk = rdidCk; + } + + public Long getRdidCk() + { + return rdidCk; + } + + public void setSid(Long sid) + { + this.sid = sid; + } + + public Long getSid() + { + return sid; + } + + public void setIsDelivery(String isDelivery) + { + this.isDelivery = isDelivery; + } + + public String getIsDelivery() + { + return isDelivery; + } + + public void setFycde1(String fycde1) + { + this.fycde1 = fycde1; + } + + public String getFycde1() + { + return fycde1; + } + + public void setFycde2(String fycde2) + { + this.fycde2 = fycde2; + } + + public String getFycde2() + { + return fycde2; + } + + public void setIsUpdate(Long isUpdate) + { + this.isUpdate = isUpdate; + } + + public Long getIsUpdate() + { + return isUpdate; + } + + public Date getStartDate() { + return startDate; + } + + public void setStartDate(Date startDate) { + this.startDate = startDate; + } + + public Date getEndDate() { + return endDate; + } + + public void setEndDate(Date endDate) { + this.endDate = endDate; + } + + public Long getRkInfoId() { + return rkInfoId; + } + + public void setRkInfoId(Long rkInfoId) { + this.rkInfoId = rkInfoId; + } + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + public BigDecimal getWeightKg() { + return weightKg; + } + + public void setWeightKg(BigDecimal weightKg) { + this.weightKg = weightKg; + } + + public BigDecimal getVolumeM3() { + return volumeM3; + } + + public void setVolumeM3(BigDecimal volumeM3) { + this.volumeM3 = volumeM3; + } + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("ids", ids) + .append("bizType", getBizType()) + .append("operationType", getOperationType()) + .append("operationTypeName", operationTypeName) + .append("execStatus", getExecStatus()) + .append("stockAge", getStockAge()) + .append("wlType", getWlType()) + .append("wlTypeName", wlTypeName) + .append("cangku", getCangku()) + .append("warehouseName", getWarehouseName()) + .append("parentWarehouseCode", getParentWarehouseCode()) + .append("parentWarehouseName", getParentWarehouseName()) + .append("operationTime", getOperationTime()) + .append("operator", getOperator()) + .append("operatorName", operatorName) + .append("isChuku", getIsChuku()) + .append("status", getStatus()) + .append("remark", getRemark()) + .append("billNo", getBillNo()) + .append("xj", getXj()) + .append("xmNo", getXmNo()) + .append("xmMs", getXmMs()) + .append("xmNoCk", getXmNoCk()) + .append("xmMsCk", getXmMsCk()) + .append("wlNo", getWlNo()) + .append("wlMs", getWlMs()) + .append("gysNo", getGysNo()) + .append("gysMc", getGysMc()) + .append("jhAmt", getJhAmt()) + .append("htDj", getHtDj()) + .append("sapNo", getSapNo()) + .append("xh", getXh()) + .append("jhQty", getJhQty()) + .append("htQty", getHtQty()) + .append("dw", getDw()) + .append("realQty", getRealQty()) + .append("totalAmount", totalAmount) + .append("pcode", getPcode()) + .append("pcodeId", getPcodeId()) + .append("trayCode", getTrayCode()) + .append("entityId", getEntityId()) + .append("teamCode", getTeamCode()) + .append("teamName", teamName) + .append("borrowTime", getBorrowTime()) + .append("returnTime", getReturnTime()) + .append("hasMoved", getHasMoved()) + .append("isBorrowed", getIsBorrowed()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("isDelete", getIsDelete()) + .append("gysJhId", getGysJhId()) + .append("rdid", getRdid()) + .append("rdidCk", getRdidCk()) + .append("sid", getSid()) + .append("isDelivery", getIsDelivery()) + .append("fycde1", getFycde1()) + .append("fycde2", getFycde2()) + .append("isUpdate", getIsUpdate()) + .append("startDate", startDate) + .append("endDate", endDate) + .append("rkInfoId", getRkInfoId()) + .append("weightKg", getWeightKg()) + .append("volumeM3", getVolumeM3()) + .toString(); + } +} diff --git a/src/main/java/com/delivery/project/document/domain/vo/DeliveryBillVO.java b/src/main/java/com/delivery/project/document/domain/vo/DeliveryBillVO.java index 970d319..173a8ac 100644 --- a/src/main/java/com/delivery/project/document/domain/vo/DeliveryBillVO.java +++ b/src/main/java/com/delivery/project/document/domain/vo/DeliveryBillVO.java @@ -1,6 +1,7 @@ package com.delivery.project.document.domain.vo; -import com.delivery.project.document.domain.RkInfo; +import com.delivery.project.document.domain.RkRecord; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.io.Serializable; @@ -8,23 +9,31 @@ import java.util.Date; import java.util.List; /** - * 智慧实物-待配送出库单据 VO(1 对多) + * 待配送出库单据 VO + * 以 rk_bill 为主 + 多条 rk_record 明细 */ @Data public class DeliveryBillVO implements Serializable { - /** 出库单据号(bill_no_ck) */ - private String billNoCk; + /** 单据号(对应 rk_bill.bill_no) */ + private String billNo; - /** 出库理货员 */ - private String ckLihuoY; - - /** 施工队/班组 */ + /** 施工队编码 */ private String teamCode; - /** 领用时间(出库时间) */ - private Date lyTime; + /** 施工队名称 */ + private String teamName; - /** 该出库单据下的所有货物明细 */ - private List detailList; + /** 理货员名称 */ + private String operatorName; + + /** 出库/操作时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date operationTime; + + /** 是否需要配送(0否,1是,2配送中,3配送完成) */ + private String isDelivery; + + /** 该单据下的货物明细 */ + private List recordList; } diff --git a/src/main/java/com/delivery/project/document/service/impl/DeliveryOrderServiceImpl.java b/src/main/java/com/delivery/project/document/service/impl/DeliveryOrderServiceImpl.java index 7378800..8ca3ad1 100644 --- a/src/main/java/com/delivery/project/document/service/impl/DeliveryOrderServiceImpl.java +++ b/src/main/java/com/delivery/project/document/service/impl/DeliveryOrderServiceImpl.java @@ -12,9 +12,7 @@ import com.delivery.common.utils.SecurityUtils; import com.delivery.common.utils.StringUtils; import com.delivery.common.utils.http.HttpUtils; import com.delivery.framework.web.domain.AjaxResult; -import com.delivery.project.document.domain.DeliveryAttachment; -import com.delivery.project.document.domain.Mtd; -import com.delivery.project.document.domain.RkInfo; +import com.delivery.project.document.domain.*; import com.delivery.project.document.domain.dto.*; import com.delivery.project.document.domain.vo.*; import com.delivery.project.document.mapper.DeliveryAttachmentMapper; @@ -26,7 +24,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import com.delivery.project.document.mapper.DeliveryOrderMapper; -import com.delivery.project.document.domain.DeliveryOrder; import com.delivery.project.document.service.IDeliveryOrderService; import org.springframework.transaction.annotation.Transactional; @@ -395,22 +392,27 @@ public class DeliveryOrderServiceImpl implements IDeliveryOrderService * @return List */ @Override - public List listWisdomRkForDelivery(String billNoCk) { + public List listWisdomRkForDelivery(String billNo) { - // 1. 远程接口地址 - String url = wisdomBaseUrl + "/wisdom/stock/delivery/list"; + // ====================== 1. 远程接口地址 ====================== + String url = wisdomBaseUrl + "/wisdom/bill/delivery/list"; + // ====================== 2. 组装参数(按 rk_bill 体系) ====================== StringBuilder param = new StringBuilder(); param.append("pageNum=1"); param.append("&pageSize=1000"); - param.append("&isChuku=1"); // 已出库 - param.append("&isDelivery=1"); // 需要配送 - if (StringUtils.isNotBlank(billNoCk)) { - param.append("&billNoCk=").append(billNoCk); + // 已完成的出库单据 + 需要配送 + param.append("&execStatus=1"); + param.append("&isDelivery=1"); + + if (StringUtils.isNotBlank(billNo)) { + param.append("&billNo=").append(billNo); } - // 3. 调用智慧实物系统 + + // ====================== 3. 调用智慧实物系统 ====================== String respJson = HttpUtils.sendGet(url, param.toString()); + if (StringUtils.isEmpty(respJson)) { throw new ServiceException("调用智慧实物接口失败:返回结果为空"); } @@ -431,14 +433,14 @@ public class DeliveryOrderServiceImpl implements IDeliveryOrderService return new ArrayList<>(); } - // 4. 反序列化为一对多结构:DeliveryBillVO(detailList 中是 RkInfo) + // ====================== 4. 反序列化为新结构 ====================== List list = data.toJavaList(DeliveryBillVO.class); - // 5. 收集所有 wlNo + // ====================== 5. 收集所有物料号 ====================== Set wlNoSet = list.stream() - .filter(bill -> bill.getDetailList() != null && !bill.getDetailList().isEmpty()) - .flatMap(bill -> bill.getDetailList().stream()) - .map(RkInfo::getWlNo) + .filter(bill -> bill.getRecordList() != null && !bill.getRecordList().isEmpty()) + .flatMap(bill -> bill.getRecordList().stream()) + .map(RkRecord::getWlNo) .filter(StringUtils::isNotBlank) .collect(Collectors.toSet()); @@ -446,13 +448,13 @@ public class DeliveryOrderServiceImpl implements IDeliveryOrderService return list; } - // 6. 一次性查询本地 delivery_mtd + // ====================== 6. 查询本地物料扩展信息 ====================== List mtdList = mtdMapper.selectByWlNos(new ArrayList<>(wlNoSet)); + if (mtdList == null || mtdList.isEmpty()) { return list; } - // 7. 转为 Map Map mtdMap = mtdList.stream() .collect(Collectors.toMap( Mtd::getWlNo, @@ -460,15 +462,19 @@ public class DeliveryOrderServiceImpl implements IDeliveryOrderService (a, b) -> a )); - // 8. 回填到每一条 RkInfo 上 + // ====================== 7. 回填重量/体积 ====================== for (DeliveryBillVO bill : list) { - if (bill.getDetailList() == null) { + + if (bill.getRecordList() == null) { continue; } - for (RkInfo rk : bill.getDetailList()) { + + for (RkRecord rk : bill.getRecordList()) { + if (rk == null || StringUtils.isBlank(rk.getWlNo())) { continue; } + Mtd m = mtdMap.get(rk.getWlNo()); if (m != null) { rk.setWeightKg(m.getWeightKg()); @@ -476,10 +482,10 @@ public class DeliveryOrderServiceImpl implements IDeliveryOrderService } } } + return list; } - // ======================== 统计 ======================== @Override diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index fb0fe5a..4fca86c 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -22,7 +22,7 @@ delivery: # 开发环境配置 server: - port: 8087 + port: 8088 servlet: context-path: / tomcat: @@ -127,7 +127,7 @@ upload: base-url: http://192.168.1.250/files wisdom: - base-url: http://192.168.1.5:8086 + base-url: http://192.168.1.5:8087 # =============== OCR 服务核心配置 =============== ocr: