远程查询待配送接口重构

This commit is contained in:
2026-02-04 09:21:18 +08:00
parent 24c7c2997a
commit f7b773d3f3
6 changed files with 1007 additions and 37 deletions

View File

@@ -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<BigDecimal> {
@Override
public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializers)
throws IOException {
if (value == null) {
gen.writeNull();
} else {
// 保持数字类型不带引号不补0、不截断
gen.writeNumber(value.stripTrailingZeros().toPlainString());
}
}
}

View File

@@ -152,6 +152,7 @@ public class DeliveryOrderController extends BaseController {
List<DeliveryBillVO> list = deliveryOrderService.listWisdomRkForDelivery(billNoCk);
return AjaxResult.success(list);
}
// ======================== 统计接口 ========================
/** 总览统计 */

View File

@@ -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<Long> ids;
/** 业务类型 */
@Excel(name = "业务类型", readConverterExp = "0=入库,1=出库,2=借料出库,3=还料入库")
private String bizType;
/** 业务类型列表(查询用) */
private List<String> bizTypeList;
/** 出入库类型 */
// @Excel(name = "出入库类型")
private String operationType;
// ====== 查询字段(新增)======
private List<String> 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<Long> getIds() {
return ids;
}
public void setIds(List<Long> ids) {
this.ids = ids;
}
public void setBizType(String bizType) {
this.bizType = bizType;
}
public String getBizType() {
return bizType;
}
public List<String> getBizTypeList() {
return bizTypeList;
}
public void setBizTypeList(List<String> 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();
}
}

View File

@@ -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;
/**
* 智慧实物-待配送出库单据 VO1 对多)
* 待配送出库单据 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<RkInfo> detailList;
/** 理货员名称 */
private String operatorName;
/** 出库/操作时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date operationTime;
/** 是否需要配送(0否,1是,2配送中,3配送完成) */
private String isDelivery;
/** 该单据下的货物明细 */
private List<RkRecord> recordList;
}

View File

@@ -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<RkInfo>
*/
@Override
public List<DeliveryBillVO> listWisdomRkForDelivery(String billNoCk) {
public List<DeliveryBillVO> 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<DeliveryBillVO> list = data.toJavaList(DeliveryBillVO.class);
// 5. 收集所有 wlNo
// ====================== 5. 收集所有物料号 ======================
Set<String> 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<Mtd> mtdList = mtdMapper.selectByWlNos(new ArrayList<>(wlNoSet));
if (mtdList == null || mtdList.isEmpty()) {
return list;
}
// 7. 转为 Map<wlNo, Mtd>
Map<String, Mtd> 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

View File

@@ -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: