From d8c956f9f4855ceed9038fb0b3156c19fbd92aa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E8=BE=89?= <2830717623@qq.com> Date: Tue, 7 Apr 2026 11:43:43 +0800 Subject: [PATCH 1/5] =?UTF-8?q?oms=E4=B8=9A=E5=8A=A1=E5=8D=95=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ExecuteOrderApplicationService.java | 2 +- .../BusinessDocumentCargoInfoMapper.java | 16 +++ .../entity/BusinessDocumentOrder.java | 37 +++++++ .../BusinessDocumentOrderImpl.java | 64 +++++++----- .../po/BusinessDocumentOrderPO.java | 36 +++++++ .../todo/BusinessDocumentOrderDO.java | 40 ++++++++ .../BusinessDocumentOrderDomainService.java | 9 +- .../facade/IExecuteOrderService.java | 2 +- .../persistence/ExecuteOrderImpl.java | 5 +- .../service/ExecuteOrderDomainService.java | 2 +- .../BusinessDocumentCargoInfo.java | 98 +++++++++++++++++++ .../BusinessDocumentOrderAssembler.java | 1 + .../BusinessDocumentOrderDTO.java | 54 +++++++++- .../BusinessDocumentOrderApi.java | 8 +- .../facade/executeOrder/ExecuteOrderApi.java | 3 +- .../BusinessDocumentCargoInfoMapper.xml | 8 ++ .../BusinessDocumentOrderMapper.xml | 3 +- 17 files changed, 355 insertions(+), 33 deletions(-) create mode 100644 mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentCargoInfo/repository/BusinessDocumentCargoInfoMapper.java create mode 100644 mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/businessDocumentCargoInfo/BusinessDocumentCargoInfo.java create mode 100644 mhd_oms/src/main/resources/mapper/businessDocumentCargoInfo/BusinessDocumentCargoInfoMapper.xml diff --git a/mhd_oms/src/main/java/com/mhd/oms/application/service/executeOrder/ExecuteOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/application/service/executeOrder/ExecuteOrderApplicationService.java index 5841da837..0e0ba874a 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/application/service/executeOrder/ExecuteOrderApplicationService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/application/service/executeOrder/ExecuteOrderApplicationService.java @@ -41,7 +41,7 @@ public class ExecuteOrderApplicationService { /** * 新增【请填写功能名称】 */ - public Boolean insert(ExecuteOrderDO executeOrderDO) { + public Long insert(ExecuteOrderDO executeOrderDO) { return executeOrderDomainService.insert(executeOrderDO); } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentCargoInfo/repository/BusinessDocumentCargoInfoMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentCargoInfo/repository/BusinessDocumentCargoInfoMapper.java new file mode 100644 index 000000000..555d1f391 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentCargoInfo/repository/BusinessDocumentCargoInfoMapper.java @@ -0,0 +1,16 @@ +package com.mhd.oms.domain.businessDocumentCargoInfo.repository; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.oms.interfaces.assembler.businessDocumentCargoInfo.BusinessDocumentCargoInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author: brb + * @description: + * @create: 2026-03-30 17:38 + */ +public interface BusinessDocumentCargoInfoMapper extends BaseMapper { + void insertBatch(@Param("list") List businessDocumentCargoInfoList); +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/entity/BusinessDocumentOrder.java b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/entity/BusinessDocumentOrder.java index 62c7353fe..e46c72d4c 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/entity/BusinessDocumentOrder.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/entity/BusinessDocumentOrder.java @@ -694,4 +694,41 @@ public class BusinessDocumentOrder extends BaseVOEntity{ @ApiModelProperty("预约单号") private String reservationOrderNumber; + + + @ApiModelProperty("执行单id") + private String executeOrderId; + + @ApiModelProperty("执行单号") + private String executeOrderNumber; + + @ApiModelProperty("收款账户id") + private String paymentAccountId; + + @ApiModelProperty("收款账户信息") + private String accountInformation; + + @ApiModelProperty("业务类型") + private Integer businessCategory; + + @ApiModelProperty(value = "组织地址") + private String companyAddress; + + @ApiModelProperty(value = "组织公司名称") + private String companyName; + +// @ApiModelProperty(value = "组织公司名称英文") +// private String companyNameEn; +// +// @ApiModelProperty(value = "负责人姓名") +// private String contact; +// +// @ApiModelProperty(value = "组织负责人id") +// private String contactPhone; +// + @ApiModelProperty(value = "账户名称") + private String accountName; +// +// @ApiModelProperty(value = "开户银行") +// private String accountBank; } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/persistence/BusinessDocumentOrderImpl.java b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/persistence/BusinessDocumentOrderImpl.java index 73d6f1680..064f3a5f0 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/persistence/BusinessDocumentOrderImpl.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/persistence/BusinessDocumentOrderImpl.java @@ -1,6 +1,7 @@ package com.mhd.oms.domain.businessDocumentOrder.repository.persistence; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mhd.common.security.utils.SecurityUtils; @@ -17,6 +18,7 @@ import com.mhd.system.api.model.LoginUser; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.rmi.ServerException; import java.util.ArrayList; @@ -120,33 +122,51 @@ public class BusinessDocumentOrderImpl extends ServiceImpl().eq(ExecuteOrder::getBusinessDocumentId, id).eq(ExecuteOrder::getDelFlag,1) .last("LIMIT 1") + ); + if (ObjectUtil.isNotNull(objects)) { + throw new ServerException("业务单已生成执行单,请先取消执行单"); + } + + // 先创建执行单 + ExecuteOrderDO executeOrderDO=new ExecuteOrderDO(); + executeOrderDO.setBusinessDocumentId(id); + executeOrderDO.setBusinessDocumentNumber(businessDocumentOrder.getGoodsNumber()); + executeOrderDO.setGoodsNumber(businessDocumentOrder.getGoodsNumber()); + executeOrderDO.setCreateBy(loginUser.getUserid()); + executeOrderDO.setCreateTime(new Date()); + executeOrderDO.setDelFlag(1); + executeOrderDO.setOrganizationId(businessDocumentOrder.getOrganizationId()); + executeOrderDO.setOrgName(businessDocumentOrder.getOrgName()); + executeOrderDO.setTopOrganizationId(businessDocumentOrder.getTopOrganizationId()); + + Long executeOrderId = executeOrderDomainService.insert(executeOrderDO); + + // 更新业务单状态和执行单信息(只保存一次) + businessDocumentOrder.setExecuteId(loginUser.getUserid()); + businessDocumentOrder.setExecuteStatus(2L); + businessDocumentOrder.setExecuteTime(new Date()); + businessDocumentOrder.setExecutor(loginUser.getUsername()); + businessDocumentOrder.setOrderStatus(2L); + businessDocumentOrder.setExecuteOrderId(String.valueOf(executeOrderId)); + businessDocumentOrder.setExecuteOrderNumber(businessDocumentOrder.getGoodsNumber()); + businessDocumentOrderMapper.updateById(businessDocumentOrder); + } } - + return true; + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("执行失败:" + e.getMessage()); } - return null; } @Override diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/po/BusinessDocumentOrderPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/po/BusinessDocumentOrderPO.java index 888f89ce5..0b1666f22 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/po/BusinessDocumentOrderPO.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/po/BusinessDocumentOrderPO.java @@ -706,4 +706,40 @@ public class BusinessDocumentOrderPO extends BaseVOEntity{ @ApiModelProperty("预约单号") private String reservationOrderNumber; + + @ApiModelProperty("执行单id") + private String executeOrderId; + + @ApiModelProperty("执行单号") + private String executeOrderNumber; + + @ApiModelProperty("收款账户id") + private String paymentAccountId; + + @ApiModelProperty("收款账户信息") + private String accountInformation; + + @ApiModelProperty("业务类型") + private Integer businessCategory; + + @ApiModelProperty(value = "组织地址") + private String companyAddress; + + @ApiModelProperty(value = "组织公司名称") + private String companyName; + + @ApiModelProperty(value = "组织公司名称英文") + private String companyNameEn; + + @ApiModelProperty(value = "负责人姓名") + private String contact; + + @ApiModelProperty(value = "组织负责人id") + private String contactPhone; + + @ApiModelProperty(value = "账户名称") + private String accountName; + + @ApiModelProperty(value = "开户银行") + private String accountBank; } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/todo/BusinessDocumentOrderDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/todo/BusinessDocumentOrderDO.java index ad316a000..003f97786 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/todo/BusinessDocumentOrderDO.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/todo/BusinessDocumentOrderDO.java @@ -2,6 +2,7 @@ package com.mhd.oms.domain.businessDocumentOrder.repository.todo; import com.mhd.common.core.annotation.Excel; import com.mhd.oms.domain.businessDocumentCargoMulti.entity.BusinessDocumentCargoMulti; +import com.mhd.oms.interfaces.assembler.businessDocumentCargoInfo.BusinessDocumentCargoInfo; import com.mhd.oms.interfaces.dto.businessDocumentAddressMulti.BusinessDocumentAddressMultiDTO; import com.mhd.oms.interfaces.dto.businessDocumentCargoMulti.BusinessDocumentCargoMultiDTO; import lombok.Data; @@ -728,12 +729,51 @@ public class BusinessDocumentOrderDO extends BaseVOEntity{ @ApiModelProperty("预约单号") private String reservationOrderNumber; + @ApiModelProperty("执行单id") + private String executeOrderId; + + @ApiModelProperty("执行单号") + private String executeOrderNumber; + + @ApiModelProperty("收款账户id") + private String paymentAccountId; + + @ApiModelProperty("收款账户信息") + private String accountInformation; + + @ApiModelProperty("业务类型") + private Integer businessCategory; + + @ApiModelProperty(value = "组织地址") + private String companyAddress; + + @ApiModelProperty(value = "组织公司名称") + private String companyName; + + @ApiModelProperty(value = "组织公司名称英文") + private String companyNameEn; + + @ApiModelProperty(value = "负责人姓名") + private String contact; + + @ApiModelProperty(value = "组织负责人id") + private String contactPhone; + + @ApiModelProperty(value = "账户名称") + private String accountName; + + @ApiModelProperty(value = "开户银行") + private String accountBank; + @ApiModelProperty("业务单地址集合") private List businessDocumentAddressMultiDTOList; @ApiModelProperty("业务单货物集合") private List businessDocumentCargoMultiList; + @ApiModelProperty("业务单货物详情集合") + private List cargoInfoList; + @ApiModelProperty(value = "装货地址集合") private List loadingAddressList; @ApiModelProperty(value = "卸货地址集合") diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/service/BusinessDocumentOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/service/BusinessDocumentOrderDomainService.java index 04b856655..5852f4b29 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/service/BusinessDocumentOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/service/BusinessDocumentOrderDomainService.java @@ -15,6 +15,7 @@ import com.mhd.oms.domain.businessDocumentCargoMulti.entity.BusinessDocumentCarg import com.mhd.oms.domain.businessDocumentCargoMulti.repository.mapper.BusinessDocumentCargoMultiMapper; import com.mhd.oms.domain.businessDocumentOrder.entity.BusinessDocumentOrder; import com.mhd.oms.domain.businessDocumentOrder.repository.facade.IBusinessDocumentOrderService; +import com.mhd.oms.domain.businessDocumentOrder.repository.mapper.BusinessDocumentOrderMapper; import com.mhd.oms.domain.businessDocumentOrder.repository.po.BusinessDocumentOrderPO; import com.mhd.oms.domain.businessDocumentOrder.repository.todo.BusinessDocumentOrderDO; import com.mhd.oms.domain.orderType.entity.OrderType; @@ -57,6 +58,9 @@ public class BusinessDocumentOrderDomainService { @Resource private BusinessDocumentAddressMultiMapper businessDocumentAddressMultiMapper; + + @Resource + private BusinessDocumentOrderMapper businessDocumentOrderMapper; /** * 分页查询【请填写功能名称】列表 */ @@ -210,6 +214,8 @@ public class BusinessDocumentOrderDomainService { tmsOrder.setFreighterName(firstAddress.getContactName()); tmsOrder.setLoadingPhone(firstAddress.getContactPhone()); tmsOrder.setLoadingDate(firstAddress.getLayDate()); + tmsOrder.setAppointShipper(businessDocumentOrderDO.getAppointShipper()); + tmsOrder.setAppointShipperId(businessDocumentOrderDO.getAppointShipperId()); tmsOrder.setUnloadAreaId(lastAddress.getAreaCode()); tmsOrder.setUnloadName(lastAddress.getAreaCode()); @@ -300,7 +306,8 @@ public class BusinessDocumentOrderDomainService { if (businessDocumentOrderDO.getTopOrganizationId() != null) { tmsOrder.setTopOrganizationId(businessDocumentOrderDO.getTopOrganizationId()); } - boolean istrue=businessDocumentOrderService.insert(businessDocumentOrderDO); +// boolean istrue=businessDocumentOrderService.insert(businessDocumentOrderDO); + boolean istrue = businessDocumentOrderMapper.insert(tmsOrder) > 0; //保存货物信息及地址信息 saveAddress2CargoInfo(tmsOrder.getId(), allCargoList, loadingAddressList, unloadAddressList); diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/facade/IExecuteOrderService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/facade/IExecuteOrderService.java index d2b33e9b8..5db032928 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/facade/IExecuteOrderService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/facade/IExecuteOrderService.java @@ -23,7 +23,7 @@ public interface IExecuteOrderService extends IService /** * 新增【请填写功能名称】 */ - public Boolean insert(ExecuteOrderDO executeOrderDO); + public Long insert(ExecuteOrderDO executeOrderDO); /** * 修改【请填写功能名称】 diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/persistence/ExecuteOrderImpl.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/persistence/ExecuteOrderImpl.java index 815fe1fd1..719c8b0b1 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/persistence/ExecuteOrderImpl.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/persistence/ExecuteOrderImpl.java @@ -67,10 +67,11 @@ public class ExecuteOrderImpl extends ServiceImpl businessDocumentAddressMultiDTOList; + @ApiModelProperty("业务单货物集合") - private List businessDocumentCargoMultiList; + private List businessDocumentCargoMultiList1; + + @ApiModelProperty("业务单货物集合") + private List businessDocumentCargoMultiList; + @ApiModelProperty(value = "装货地址集合") private List loadingAddressList; diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/businessDocumentOrder/BusinessDocumentOrderApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/businessDocumentOrder/BusinessDocumentOrderApi.java index c8ff6b876..4de65d716 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/businessDocumentOrder/BusinessDocumentOrderApi.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/businessDocumentOrder/BusinessDocumentOrderApi.java @@ -10,6 +10,7 @@ import com.mhd.oms.domain.businessDocumentOrder.repository.todo.BusinessDocument import com.mhd.oms.domain.businessDocumentOrder.repository.po.BusinessDocumentOrderPO; import com.mhd.oms.application.service.businessDocumentOrder.BusinessDocumentOrderApplicationService; import com.mhd.oms.interfaces.assembler.businessDocumentOrder.BusinessDocumentOrderAssembler; +import com.github.pagehelper.PageHelper; import javax.annotation.Resource; import com.mhd.common.core.web.controller.BaseController; import com.mhd.common.core.web.domain.AjaxResult; @@ -35,11 +36,14 @@ public class BusinessDocumentOrderApi extends BaseController{ */ @ApiOperation("查询【业务单】列表") @GetMapping("/list") - public TableDataInfo list(BusinessDocumentOrderDTO businessDocumentOrderDTO) + public TableDataInfo list(BusinessDocumentOrderDTO businessDocumentOrderDTO, + @RequestParam(value = "pageNo", required = false, defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", required = false, defaultValue = "20") Integer pageSize) { //转换实体 BusinessDocumentOrderDO businessDocumentOrderDO = businessDocumentOrderAssembler.toDO(businessDocumentOrderDTO); - startPage(); + // 使用 PageHelper 手动分页,支持 pageNo 参数 + PageHelper.startPage(pageNo, pageSize); List list = businessDocumentOrderApplicationService.queryList(businessDocumentOrderDO); return getDataTable(list); } diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executeOrder/ExecuteOrderApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executeOrder/ExecuteOrderApi.java index edfb38e71..099bce344 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executeOrder/ExecuteOrderApi.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executeOrder/ExecuteOrderApi.java @@ -56,7 +56,8 @@ public class ExecuteOrderApi extends BaseController{ if(executeOrderDTO.getId() != null){ return toAjax(executeOrderApplicationService.update(executeOrderDO)); }else { - return toAjax(executeOrderApplicationService.insert(executeOrderDO)); + Long executeOrderId = executeOrderApplicationService.insert(executeOrderDO); + return executeOrderId != null ? success() : error(); } } diff --git a/mhd_oms/src/main/resources/mapper/businessDocumentCargoInfo/BusinessDocumentCargoInfoMapper.xml b/mhd_oms/src/main/resources/mapper/businessDocumentCargoInfo/BusinessDocumentCargoInfoMapper.xml new file mode 100644 index 000000000..5434bbf91 --- /dev/null +++ b/mhd_oms/src/main/resources/mapper/businessDocumentCargoInfo/BusinessDocumentCargoInfoMapper.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/mhd_oms/src/main/resources/mapper/businessDocumentOrder/BusinessDocumentOrderMapper.xml b/mhd_oms/src/main/resources/mapper/businessDocumentOrder/BusinessDocumentOrderMapper.xml index 1a073a464..31d66cc90 100644 --- a/mhd_oms/src/main/resources/mapper/businessDocumentOrder/BusinessDocumentOrderMapper.xml +++ b/mhd_oms/src/main/resources/mapper/businessDocumentOrder/BusinessDocumentOrderMapper.xml @@ -194,7 +194,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and CREATE_TIME >= #{createStartTime} - and CREATE_TIME <= DATE_ADD(#{createEndTime}, INTERVAL 1 DAY - 1 SECOND) + and CREATE_TIME <= #{createEndTime} + 1 - 1/86400 @@ -669,6 +669,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" From f5e364093eb227e47130926fff79ab380afd04bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Tue, 7 Apr 2026 13:39:52 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E5=85=A5=E5=BA=93=E5=8D=95=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=8F=90=E7=A4=BA=E7=89=A9=E6=96=99=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E4=BF=A1=E6=81=AF=E4=B8=8D=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=EF=BC=8C=E5=8E=BB=E6=8E=89=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/StockInOrderDomainService.java | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java index a815bea3b..0a628c5be 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java @@ -568,19 +568,18 @@ public class StockInOrderDomainService { inMaterialDetailDO.setWeightLimit(packDetailFeignPO.getWeight()); inMaterialDetailDO.setVolumeLimit(packDetailFeignPO.getVolume()); - //获取仓库控制信息 + // 仓库控制信息:有则回填,无则不校验(允许未维护物料-仓库控制时编辑入库单) MaterialWarehouseControlPO materialWarehouseControlPO = materialWarehouseControlService.getInfoByMaterialBaseInfoIds(materialBaseInfoPO.getMaterialBaseInfoId()); - if (materialWarehouseControlPO == null){ - throw new ServiceException("物料仓库控制信息不存在"); + if (materialWarehouseControlPO != null) { + inMaterialDetailDO.setMaterialWarehouseControlId(materialWarehouseControlPO.getMaterialWarehouseControlId()); + inMaterialDetailDO.setSerialNumberManage(materialWarehouseControlPO.getSerialNumberManage()); + inMaterialDetailDO.setQualityInspectionManage(materialWarehouseControlPO.getQualityInspectionManage()); + inMaterialDetailDO.setQualityInspectionStage(materialWarehouseControlPO.getQualityInspectionStage()); + inMaterialDetailDO.setQualityInspectionRule(materialWarehouseControlPO.getQualityInspectionRule()); + inMaterialDetailDO.setQualityInspectionTerm(materialWarehouseControlPO.getQualityInspectionTerm()); + inMaterialDetailDO.setAllowOvercharge(materialWarehouseControlPO.getAllowOvercharge()); + inMaterialDetailDO.setOverchargeRatio(materialWarehouseControlPO.getOverchargeRatio()); } - inMaterialDetailDO.setMaterialWarehouseControlId(materialWarehouseControlPO.getMaterialWarehouseControlId()); - inMaterialDetailDO.setSerialNumberManage(materialWarehouseControlPO.getSerialNumberManage()); - inMaterialDetailDO.setQualityInspectionManage(materialWarehouseControlPO.getQualityInspectionManage()); - inMaterialDetailDO.setQualityInspectionStage(materialWarehouseControlPO.getQualityInspectionStage()); - inMaterialDetailDO.setQualityInspectionRule(materialWarehouseControlPO.getQualityInspectionRule()); - inMaterialDetailDO.setQualityInspectionTerm(materialWarehouseControlPO.getQualityInspectionTerm()); - inMaterialDetailDO.setAllowOvercharge(materialWarehouseControlPO.getAllowOvercharge()); - inMaterialDetailDO.setOverchargeRatio(materialWarehouseControlPO.getOverchargeRatio()); //获取商品规则信息 MaterialGoodsRulePO materialGoodsRulePO = materialGoodsRuleService.getInfoByMaterialBaseInfoIds(materialBaseInfoPO.getMaterialBaseInfoId()); From cdb5d52b4d45bd9b0e3d13cce554a0bb6ebd4c06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Tue, 7 Apr 2026 14:21:24 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=94=B6=E8=B4=A7=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E6=97=B6=E8=A6=86=E7=9B=96=E5=8E=9F=E6=9D=A5=E7=9A=84=E6=94=B6?= =?UTF-8?q?=E8=B4=A7=E6=95=B0=E9=87=8F=EF=BC=8C=E8=B4=B9=E7=94=A8=E4=BB=A5?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E9=A1=B5=E9=9D=A2=E6=8F=90=E4=BA=A4=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StockReceiptOrderApplicationService.java | 225 +++++++++++++++++- .../repository/todo/StockReceiptOrderDO.java | 7 + .../StockReceiptOrderDomainService.java | 27 ++- 3 files changed, 246 insertions(+), 13 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java index f95481384..e7190ac8f 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java @@ -1372,8 +1372,8 @@ public class StockReceiptOrderApplicationService { * @return Boolean */ public Boolean receivingGoods(StockReceiptOrderDO stockReceiptOrderDO){ - //收货装配参数 - StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO); + //收货装配参数(PC:页面全量覆盖累计已收与费用,不与历史累加) + StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO, true); assembleStockReceiptOrderDO.setFromPda(false); // PC收货完成,上架单是否下发=否 return stockReceiptOrderDomainService.receivingGoods(assembleStockReceiptOrderDO); } @@ -1400,7 +1400,7 @@ public class StockReceiptOrderApplicationService { // 主项子项结构:将 children 第一条(parent_copy)赋值给主项并删除 assignFirstChildToParentAndRemove(stockReceiptOrderDO); } - StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO); + StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO, false); if (CollectionUtils.isEmpty(assembleStockReceiptOrderDO.getMaterialDetailList())) { throw new ServiceException("无有效收货数据,请确认已填写收货数量(收货数量不能全部为0)"); } @@ -1698,14 +1698,212 @@ public class StockReceiptOrderApplicationService { return totalField; } + /** + * PC 收货确认:页面提交为「当前全量实绩」,直接取 receipt* / total* 落库,不与历史累计做差或相加。 + */ + private static BigDecimal pickAbsoluteMetricFromPage(BigDecimal receiptField, BigDecimal totalField) { + if (receiptField != null) { + return receiptField; + } + if (totalField != null) { + return totalField; + } + return BigDecimal.ZERO; + } + + /** + * PC 收货:按页面全量覆盖累计已收(主行、子行毛净重体面积件数)。 + */ + private void appendReceiptLinePcFullPageOverwrite( + ReceiptMaterialDetailDO receiptMaterialDetailDO, + ReceiptMaterialDetailPO receiptMaterialDetailPO, + Map receiptMaterialDetailDbMap, + Map receiptMaterialDetailDbMapByUniqueId, + List returnReceiptMaterialDetailDOList, + BigDecimal[] wholeOrderReceiptQtySumHolder, + int[] materialKindsCompleteHolder) { + BigDecimal receiptQuantity = receiptMaterialDetailDO.getReceiptQuantity(); + if (receiptQuantity == null) { + receiptQuantity = BigDecimal.ZERO; + } + List children = receiptMaterialDetailDO.getChildren(); + BigDecimal childrenTotalQuantity = BigDecimal.ZERO; + if (!CollectionUtils.isEmpty(children)) { + childrenTotalQuantity = children.stream() + .map(ReceiptMaterialDetailDO::getReceiptQuantity) + .filter(Objects::nonNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + } + boolean hasReceiptByMetrics = pickAbsoluteMetricFromPage(receiptMaterialDetailDO.getReceiptNetWeight(), receiptMaterialDetailDO.getTotalNetWeight()).compareTo(BigDecimal.ZERO) > 0 + || pickAbsoluteMetricFromPage(receiptMaterialDetailDO.getReceiptGrossWeight(), receiptMaterialDetailDO.getTotalGrossWeight()).compareTo(BigDecimal.ZERO) > 0; + if (!hasReceiptByMetrics && !CollectionUtils.isEmpty(children)) { + for (ReceiptMaterialDetailDO c : children) { + if (c == null) { + continue; + } + if (pickAbsoluteMetricFromPage(c.getReceiptNetWeight(), c.getTotalNetWeight()).compareTo(BigDecimal.ZERO) > 0 + || pickAbsoluteMetricFromPage(c.getReceiptGrossWeight(), c.getTotalGrossWeight()).compareTo(BigDecimal.ZERO) > 0) { + hasReceiptByMetrics = true; + break; + } + } + } + boolean hasReceipt = receiptQuantity.compareTo(BigDecimal.ZERO) > 0 || childrenTotalQuantity.compareTo(BigDecimal.ZERO) > 0 + || hasReceiptByMetrics; + List returnReceiptMaterialDetailDOChildList = new ArrayList<>(); + BigDecimal planQty = receiptMaterialDetailPO.getQuantity() != null ? receiptMaterialDetailPO.getQuantity() : BigDecimal.ZERO; + + if (hasReceipt) { + BigDecimal poReceiptQty = receiptMaterialDetailPO.getReceiptQuantity() != null + ? receiptMaterialDetailPO.getReceiptQuantity() : BigDecimal.ZERO; + if (poReceiptQty.compareTo(BigDecimal.ZERO) == 0) { + receiptMaterialDetailDO.setAllowModify(2); + setMaterialMoreDetailInfo(receiptMaterialDetailDO); + } + List receiptMaterialDetailDOChildList = receiptMaterialDetailDO.getChildren(); + if (!CollectionUtils.isEmpty(receiptMaterialDetailDOChildList)) { + for (ReceiptMaterialDetailDO receiptMaterialDetailDOChild : receiptMaterialDetailDOChildList) { + ReceiptMaterialDetailPO receiptMaterialDetailPOChildDb = receiptMaterialDetailDbMap.get(receiptMaterialDetailDOChild.getMaterialDetailId()); + if (receiptMaterialDetailPOChildDb == null && receiptMaterialDetailDOChild.getUniqueId() != null) { + receiptMaterialDetailPOChildDb = receiptMaterialDetailDbMapByUniqueId.get(receiptMaterialDetailDOChild.getUniqueId()); + } + BigDecimal childQty = receiptMaterialDetailDOChild.getReceiptQuantity() != null ? receiptMaterialDetailDOChild.getReceiptQuantity() : BigDecimal.ZERO; + BigDecimal childGross = pickAbsoluteMetricFromPage(receiptMaterialDetailDOChild.getReceiptGrossWeight(), receiptMaterialDetailDOChild.getTotalGrossWeight()); + BigDecimal childNet = pickAbsoluteMetricFromPage(receiptMaterialDetailDOChild.getReceiptNetWeight(), receiptMaterialDetailDOChild.getTotalNetWeight()); + BigDecimal childVol = pickAbsoluteMetricFromPage(receiptMaterialDetailDOChild.getReceiptVolume(), receiptMaterialDetailDOChild.getTotalVolume()); + BigDecimal childArea = pickAbsoluteMetricFromPage(receiptMaterialDetailDOChild.getReceiptArea(), receiptMaterialDetailDOChild.getTotalArea()); + if (childQty.compareTo(BigDecimal.ZERO) == 0 && childNet.compareTo(BigDecimal.ZERO) > 0) { + childQty = childNet; + } + if (childQty.compareTo(BigDecimal.ZERO) == 0 && childGross.compareTo(BigDecimal.ZERO) > 0) { + childQty = childGross; + } + ReceiptMaterialDetailDO returnReceiptMaterialDetailDOChild = new ReceiptMaterialDetailDO(); + if (receiptMaterialDetailPOChildDb != null) { + BeanUtils.copyProperties(receiptMaterialDetailPOChildDb, returnReceiptMaterialDetailDOChild); + BeanUtils.copyProperties(receiptMaterialDetailDOChild, returnReceiptMaterialDetailDOChild, IgnoreNullUtil.getNullPropertyNames(receiptMaterialDetailDOChild)); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptQuantity(childQty); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptGrossWeight(childGross); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptNetWeight(childNet); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptVolume(childVol); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptArea(childArea); + returnReceiptMaterialDetailDOChild.setAllowModify(2); + returnReceiptMaterialDetailDOChild.setLevel(2); + returnReceiptMaterialDetailDOChild.setParentUniqueId(receiptMaterialDetailPO.getUniqueId()); + setMaterialMoreDetailInfo(returnReceiptMaterialDetailDOChild); + } else { + BeanUtils.copyProperties(receiptMaterialDetailPO, returnReceiptMaterialDetailDOChild, "materialDetailId", "createBy", "createByName", "createTime", + "updateBy", "updateByName", "updateTime"); + BeanUtils.copyProperties(receiptMaterialDetailDOChild, returnReceiptMaterialDetailDOChild, IgnoreNullUtil.getNullPropertyNames(receiptMaterialDetailDOChild)); + if (ObjectUtil.isNotNull(returnReceiptMaterialDetailDOChild.getMaterialDetailId()) && returnReceiptMaterialDetailDOChild.getMaterialDetailId() == 0) { + returnReceiptMaterialDetailDOChild.setMaterialDetailId(null); + } + returnReceiptMaterialDetailDOChild.setAllowModify(2); + returnReceiptMaterialDetailDOChild.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + returnReceiptMaterialDetailDOChild.setLevel(2); + returnReceiptMaterialDetailDOChild.setParentUniqueId(receiptMaterialDetailPO.getUniqueId()); + setMaterialMoreDetailInfo(returnReceiptMaterialDetailDOChild); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptGrossWeight(childGross); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptNetWeight(childNet); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptVolume(childVol); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptArea(childArea); + returnReceiptMaterialDetailDOChild.setAlreadyReceiptQuantity(childQty); + } + returnReceiptMaterialDetailDOChild.setTotalNetWeight(returnReceiptMaterialDetailDOChild.getAlreadyReceiptNetWeight()); + returnReceiptMaterialDetailDOChild.setTotalGrossWeight(returnReceiptMaterialDetailDOChild.getAlreadyReceiptGrossWeight()); + returnReceiptMaterialDetailDOChild.setTotalVolume(returnReceiptMaterialDetailDOChild.getAlreadyReceiptVolume()); + returnReceiptMaterialDetailDOChild.setTotalArea(returnReceiptMaterialDetailDOChild.getAlreadyReceiptArea()); + if (receiptMaterialDetailPO.getSerialNumberManage() == 1) { + if (CollectionUtils.isEmpty(receiptMaterialDetailDOChild.getMaterialDetailSerialNumberList())) { + throw new ServiceException("物料【" + receiptMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + } + returnReceiptMaterialDetailDOChild.setMaterialDetailSerialNumberList(receiptMaterialDetailDOChild.getMaterialDetailSerialNumberList()); + returnReceiptMaterialDetailDOChild.setMaterialMoreDetailList(receiptMaterialDetailDOChild.getMaterialMoreDetailList()); + if (returnReceiptMaterialDetailDOChild.getAlreadyReceiptQuantity() != null) { + returnReceiptMaterialDetailDOChild.setReceiptQuantity(returnReceiptMaterialDetailDOChild.getAlreadyReceiptQuantity()); + } + returnReceiptMaterialDetailDOChild.setQuantity(null); + returnReceiptMaterialDetailDOChildList.add(returnReceiptMaterialDetailDOChild); + } + } + BigDecimal mainItemActualQuantity = receiptQuantity; + BigDecimal parentReceiptGross = pickAbsoluteMetricFromPage(receiptMaterialDetailDO.getReceiptGrossWeight(), receiptMaterialDetailDO.getTotalGrossWeight()); + BigDecimal parentReceiptNet = pickAbsoluteMetricFromPage(receiptMaterialDetailDO.getReceiptNetWeight(), receiptMaterialDetailDO.getTotalNetWeight()); + BigDecimal parentReceiptVol = pickAbsoluteMetricFromPage(receiptMaterialDetailDO.getReceiptVolume(), receiptMaterialDetailDO.getTotalVolume()); + BigDecimal parentReceiptArea = pickAbsoluteMetricFromPage(receiptMaterialDetailDO.getReceiptArea(), receiptMaterialDetailDO.getTotalArea()); + receiptMaterialDetailDO.setAlreadyReceiptQuantity(mainItemActualQuantity); + receiptMaterialDetailDO.setAlreadyReceiptGrossWeight(parentReceiptGross); + receiptMaterialDetailDO.setAlreadyReceiptNetWeight(parentReceiptNet); + receiptMaterialDetailDO.setAlreadyReceiptVolume(parentReceiptVol); + receiptMaterialDetailDO.setAlreadyReceiptArea(parentReceiptArea); + receiptMaterialDetailDO.setTotalNetWeight(receiptMaterialDetailDO.getAlreadyReceiptNetWeight()); + receiptMaterialDetailDO.setTotalGrossWeight(receiptMaterialDetailDO.getAlreadyReceiptGrossWeight()); + receiptMaterialDetailDO.setTotalVolume(receiptMaterialDetailDO.getAlreadyReceiptVolume()); + receiptMaterialDetailDO.setTotalArea(receiptMaterialDetailDO.getAlreadyReceiptArea()); + BigDecimal groupReceived = receiptMaterialDetailDO.getAlreadyReceiptQuantity() != null + ? receiptMaterialDetailDO.getAlreadyReceiptQuantity() : BigDecimal.ZERO; + if (!CollectionUtils.isEmpty(returnReceiptMaterialDetailDOChildList)) { + for (ReceiptMaterialDetailDO ch : returnReceiptMaterialDetailDOChildList) { + BigDecimal ca = ch.getAlreadyReceiptQuantity() != null ? ch.getAlreadyReceiptQuantity() : BigDecimal.ZERO; + groupReceived = groupReceived.add(ca); + } + } + Integer receiptStatus = judgeReceiptQuantity(groupReceived, planQty); + receiptMaterialDetailDO.setReceiptStatus(receiptStatus); + if (!CollectionUtils.isEmpty(returnReceiptMaterialDetailDOChildList)) { + for (ReceiptMaterialDetailDO ch : returnReceiptMaterialDetailDOChildList) { + ch.setReceiptStatus(receiptStatus); + } + } + wholeOrderReceiptQtySumHolder[0] = wholeOrderReceiptQtySumHolder[0].add(groupReceived); + if (receiptStatus > 2) { + materialKindsCompleteHolder[0] = materialKindsCompleteHolder[0] + 1; + } + } else { + receiptMaterialDetailDO.setAlreadyReceiptQuantity(BigDecimal.ZERO); + receiptMaterialDetailDO.setAlreadyReceiptGrossWeight(BigDecimal.ZERO); + receiptMaterialDetailDO.setAlreadyReceiptNetWeight(BigDecimal.ZERO); + receiptMaterialDetailDO.setAlreadyReceiptVolume(BigDecimal.ZERO); + receiptMaterialDetailDO.setAlreadyReceiptArea(BigDecimal.ZERO); + receiptMaterialDetailDO.setReceiptStatus(judgeReceiptQuantity(BigDecimal.ZERO, planQty)); + } + ReceiptMaterialDetailDO returnReceiptMaterialDetailDO = new ReceiptMaterialDetailDO(); + BeanUtils.copyProperties(receiptMaterialDetailPO, returnReceiptMaterialDetailDO); + BeanUtils.copyProperties(receiptMaterialDetailDO, returnReceiptMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(receiptMaterialDetailDO)); + returnReceiptMaterialDetailDO.setTotalNetWeight(receiptMaterialDetailDO.getTotalNetWeight()); + returnReceiptMaterialDetailDO.setTotalGrossWeight(receiptMaterialDetailDO.getTotalGrossWeight()); + returnReceiptMaterialDetailDO.setTotalVolume(receiptMaterialDetailDO.getTotalVolume()); + returnReceiptMaterialDetailDO.setTotalArea(receiptMaterialDetailDO.getTotalArea()); + BigDecimal parentRetAlreadyQty = receiptMaterialDetailDO.getAlreadyReceiptQuantity() != null + ? receiptMaterialDetailDO.getAlreadyReceiptQuantity() : BigDecimal.ZERO; + returnReceiptMaterialDetailDO.setAlreadyReceiptQuantity(parentRetAlreadyQty); + returnReceiptMaterialDetailDO.setReceiptQuantity(parentRetAlreadyQty); + if (receiptMaterialDetailPO.getReceiptStatus() == 1) { + if (receiptMaterialDetailPO.getSerialNumberManage() == 1) { + if (CollectionUtils.isEmpty(receiptMaterialDetailDO.getMaterialDetailSerialNumberList())) { + throw new ServiceException("物料【" + receiptMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + } + returnReceiptMaterialDetailDO.setMaterialDetailSerialNumberList(receiptMaterialDetailDO.getMaterialDetailSerialNumberList()); + returnReceiptMaterialDetailDO.setMaterialMoreDetailList(receiptMaterialDetailDO.getMaterialMoreDetailList()); + } else { + returnReceiptMaterialDetailDO.setMaterialDetailSerialNumberList(new ArrayList<>()); + returnReceiptMaterialDetailDO.setMaterialMoreDetailList(new ArrayList<>()); + } + returnReceiptMaterialDetailDO.setChildren(returnReceiptMaterialDetailDOChildList); + returnReceiptMaterialDetailDOList.add(returnReceiptMaterialDetailDO); + } + /** * @description 收货装配参数 * @author ZhouGY * @date 2024/5/22 9:27 * @param stockReceiptOrderDO + * @param pcFullPageOverwrite PC 收货确认 true=页面全量覆盖累计已收(不累加历史) * @return Boolean */ - private StockReceiptOrderDO assembleParamByReceipt(StockReceiptOrderDO stockReceiptOrderDO) { + private StockReceiptOrderDO assembleParamByReceipt(StockReceiptOrderDO stockReceiptOrderDO, boolean pcFullPageOverwrite) { StockReceiptOrderPO stockReceiptOrderPO = stockReceiptOrderDomainService.getInfo(stockReceiptOrderDO.getReceiptOrderId()); if (stockReceiptOrderPO == null){ throw new ServiceException("收货单不存在"); @@ -1734,6 +1932,8 @@ public class StockReceiptOrderApplicationService { .collect(Collectors.toMap(ReceiptMaterialDetailPO::getUniqueId, Function.identity())); BigDecimal totalActualQuantity = BigDecimal.ZERO;//收货单当前作业收货数 int totalActualReceiptMaterialQuantity = 0;//收货单收货物料种数 + BigDecimal[] wholeOrderReceiptQtySumHolder = new BigDecimal[]{BigDecimal.ZERO}; + int[] materialKindsCompleteHolder = new int[]{0}; List returnReceiptMaterialDetailDOList = new ArrayList<>(); for (ReceiptMaterialDetailDO receiptMaterialDetailDO : stockReceiptOrderDO.getMaterialDetailList()){ //设置物料更多属性信息:优先用 materialDetailId 查找,若为空则用 uniqueId 查找(兼容 PDA 只传 uniqueId 的场景) @@ -1747,6 +1947,11 @@ public class StockReceiptOrderApplicationService { if (receiptMaterialDetailPO == null){ throw new ServiceException("物料明细不存在"); } + if (pcFullPageOverwrite) { + appendReceiptLinePcFullPageOverwrite(receiptMaterialDetailDO, receiptMaterialDetailPO, receiptMaterialDetailDbMap, + receiptMaterialDetailDbMapByUniqueId, returnReceiptMaterialDetailDOList, wholeOrderReceiptQtySumHolder, materialKindsCompleteHolder); + continue; + } // receiptQuantity 空值保护,PDA 未传时按 0 处理 BigDecimal receiptQuantity = receiptMaterialDetailDO.getReceiptQuantity(); if (receiptQuantity == null) { @@ -1999,8 +2204,16 @@ public class StockReceiptOrderApplicationService { returnReceiptMaterialDetailDOList.add(returnReceiptMaterialDetailDO); } returnStockReceiptOrderDO.setMaterialDetailList(returnReceiptMaterialDetailDOList); - returnStockReceiptOrderDO.setActualQuantity(totalActualQuantity); - returnStockReceiptOrderDO.setActualReceiptMaterialQuantity(totalActualReceiptMaterialQuantity); + if (pcFullPageOverwrite) { + returnStockReceiptOrderDO.setReceiptSubmitOverwriteFromPage(true); + returnStockReceiptOrderDO.setReceiptQuantity(wholeOrderReceiptQtySumHolder[0]); + returnStockReceiptOrderDO.setReceiptMaterialQuantity(materialKindsCompleteHolder[0]); + returnStockReceiptOrderDO.setActualQuantity(BigDecimal.ZERO); + returnStockReceiptOrderDO.setActualReceiptMaterialQuantity(0); + } else { + returnStockReceiptOrderDO.setActualQuantity(totalActualQuantity); + returnStockReceiptOrderDO.setActualReceiptMaterialQuantity(totalActualReceiptMaterialQuantity); + } return returnStockReceiptOrderDO; } diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/todo/StockReceiptOrderDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/todo/StockReceiptOrderDO.java index 97ed85d4f..612ad1a7c 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/todo/StockReceiptOrderDO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/todo/StockReceiptOrderDO.java @@ -170,6 +170,13 @@ public class StockReceiptOrderDO extends StockInOrderBaseDO { @ApiModelProperty("是否来自PDA收货:true-PDA收货完成,false-PC收货完成(用于上架单是否下发:PDA=是,PC=否)") private Boolean fromPda; + + /** + * PC 收货确认:以页面提交数据为全量实绩覆盖落库(由 Application 层根据入口设置,非前端传入) + */ + @ApiModelProperty(hidden = true) + private Boolean receiptSubmitOverwriteFromPage; + @ApiModelProperty("费用") List receiptOrderAccountList; } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java index c12cb8157..b527af8be 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java @@ -429,12 +429,14 @@ public class StockReceiptOrderDomainService { private void saveAmount(StockReceiptOrderDO stockReceiptOrderDO) { Long receiptOrderId = stockReceiptOrderDO.getReceiptOrderId(); - List receiptOrderAccountList = stockReceiptOrderDO.getReceiptOrderAccountList(); - for (ReceiptOrderAccount receiptOrderAccount : receiptOrderAccountList) { - receiptOrderAccount.setOrderId(receiptOrderId); - } receiptOrderAccountService.remove(new QueryWrapper().lambda().eq(ReceiptOrderAccount::getOrderId, receiptOrderId)); - receiptOrderAccountService.saveBatch(receiptOrderAccountList); + List receiptOrderAccountList = stockReceiptOrderDO.getReceiptOrderAccountList(); + if (receiptOrderAccountList != null && !receiptOrderAccountList.isEmpty()) { + for (ReceiptOrderAccount receiptOrderAccount : receiptOrderAccountList) { + receiptOrderAccount.setOrderId(receiptOrderId); + } + receiptOrderAccountService.saveBatch(receiptOrderAccountList); + } } /** @@ -694,8 +696,19 @@ public class StockReceiptOrderDomainService { LoginUser loginUser = SecurityUtils.getLoginUser(); StockReceiptOrder stockReceiptOrder = new StockReceiptOrder(); stockReceiptOrder.setReceiptOrderId(stockReceiptOrderPO.getReceiptOrderId()); - stockReceiptOrder.setReceiptQuantity(stockReceiptOrderPO.getReceiptQuantity().add(stockReceiptOrderDO.getActualQuantity())); - stockReceiptOrder.setReceiptMaterialQuantity(stockReceiptOrderPO.getReceiptMaterialQuantity() + stockReceiptOrderDO.getActualReceiptMaterialQuantity()); + if (Boolean.TRUE.equals(stockReceiptOrderDO.getReceiptSubmitOverwriteFromPage())) { + BigDecimal rq = stockReceiptOrderDO.getReceiptQuantity(); + stockReceiptOrder.setReceiptQuantity(rq != null ? rq : BigDecimal.ZERO); + Integer rmq = stockReceiptOrderDO.getReceiptMaterialQuantity(); + stockReceiptOrder.setReceiptMaterialQuantity(rmq != null ? rmq : 0); + } else { + BigDecimal prevRq = stockReceiptOrderPO.getReceiptQuantity() != null ? stockReceiptOrderPO.getReceiptQuantity() : BigDecimal.ZERO; + BigDecimal addAq = stockReceiptOrderDO.getActualQuantity() != null ? stockReceiptOrderDO.getActualQuantity() : BigDecimal.ZERO; + stockReceiptOrder.setReceiptQuantity(prevRq.add(addAq)); + int prevRmq = stockReceiptOrderPO.getReceiptMaterialQuantity() != null ? stockReceiptOrderPO.getReceiptMaterialQuantity() : 0; + int addArm = stockReceiptOrderDO.getActualReceiptMaterialQuantity() != null ? stockReceiptOrderDO.getActualReceiptMaterialQuantity() : 0; + stockReceiptOrder.setReceiptMaterialQuantity(prevRmq + addArm); + } stockReceiptOrder.setStatus(2); stockReceiptOrder.setUpdateBy(loginUser.getUserid()); stockReceiptOrder.setUpdateByName(loginUser.getUsername()); From a7e33200b4613a8ce688bccab580bd089298232c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Tue, 7 Apr 2026 16:14:29 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E5=85=A5=E5=BA=93=E5=8D=95=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E5=85=A5=E5=BA=93=E6=95=B0=E9=87=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stockInOrder/service/StockInOrderDomainService.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java index 0a628c5be..9dbf4ce46 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java @@ -155,6 +155,13 @@ public class StockInOrderDomainService { if (stockInOrderPO == null){ throw new ServiceException("入库单信息不存在"); } + if (!CollectionUtils.isEmpty(stockInOrderDO.getMaterialDetailList())) { + stockInOrderDO.getMaterialDetailList().forEach(detail -> { + if (detail.getInboundQuantity() != null) { + detail.setQuantity(detail.getInboundQuantity()); + } + }); + } //设置物料信息 setMaterialDetailInfo(stockInOrderDO); //统计总物料种数 From 6a52f1e1e2eea4884c255001d78047ffbabba288 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E8=BE=89?= <2830717623@qq.com> Date: Wed, 8 Apr 2026 10:55:22 +0800 Subject: [PATCH 5/5] =?UTF-8?q?oms=E6=89=A7=E8=A1=8C=E5=8D=95=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessDocumentOrderImpl.java | 9 ++- .../BusinessDocumentOrderDomainService.java | 2 +- .../persistence/ExecuteOrderImpl.java | 8 +++ .../repository/po/ExecuteOrderPO.java | 17 +++++ .../repository/todo/ExecuteOrderDO.java | 26 +++++++ .../service/ExecuteOrderDomainService.java | 6 ++ .../dto/executeOrder/ExecuteOrderDTO.java | 25 +++++++ .../executeOrder/ExecuteOrderMapper.xml | 69 +++++++++++-------- 8 files changed, 132 insertions(+), 30 deletions(-) diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/persistence/BusinessDocumentOrderImpl.java b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/persistence/BusinessDocumentOrderImpl.java index 064f3a5f0..4981cdca8 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/persistence/BusinessDocumentOrderImpl.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/persistence/BusinessDocumentOrderImpl.java @@ -128,6 +128,9 @@ public class BusinessDocumentOrderImpl extends ServiceImpl().eq(ExecuteOrder::getBusinessDocumentId, id).eq(ExecuteOrder::getDelFlag,1) .last("LIMIT 1") @@ -170,6 +173,7 @@ public class BusinessDocumentOrderImpl extends ServiceImpl 0) { + return true; + } } } } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/service/BusinessDocumentOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/service/BusinessDocumentOrderDomainService.java index 5852f4b29..19d362419 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/service/BusinessDocumentOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/service/BusinessDocumentOrderDomainService.java @@ -106,7 +106,7 @@ public class BusinessDocumentOrderDomainService { String orderRemark = businessDocumentOrderDO.getRemarks(); businessDocumentOrderDO.setRemarks(orderRemark); - businessDocumentOrderDO.setAppointShipperId(String.valueOf(userShipperPo.getUserId())); +// businessDocumentOrderDO.setAppointShipperId(String.valueOf(userShipperPo.getUserId())); // 分类处理货物列表 List allCargoList = businessDocumentOrderDO.getBusinessDocumentCargoMultiList(); businessDocumentOrderDO.setReceivableType(2L); diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/persistence/ExecuteOrderImpl.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/persistence/ExecuteOrderImpl.java index 719c8b0b1..4582fdd1a 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/persistence/ExecuteOrderImpl.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/persistence/ExecuteOrderImpl.java @@ -156,8 +156,16 @@ public class ExecuteOrderImpl extends ServiceImpl - select ID, REAL_CREATE_BY, REAL_CREATE_NAME, CREATE_BY, CREATE_COMPANY_ID, CREATE_TIME, UPDATE_BY, UPDATE_TIME, DEL_FLAG, GOODS_NUMBER, ORG_NAME, ORGANIZATION_ID, BUSINESS_DOCUMENT_ID, BUSINESS_DOCUMENT_NUMBER, ORGANIZATION_NAME, TOP_ORGANIZATION_ID from execute_order + select * from execute_order - - and ID = #{id} - - - and REAL_CREATE_BY = #{realCreateBy} - - - and REAL_CREATE_NAME like concat('%', #{realCreateName}, '%') - - - and CREATE_BY = #{createBy} - - - and CREATE_COMPANY_ID = #{createCompanyId} - - - and CREATE_TIME = #{createTime} - - - and UPDATE_BY = #{updateBy} - - - and UPDATE_TIME = #{updateTime} - - - and DEL_FLAG = #{delFlag} - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and CREATE_TIME >= #{createStartTime} + + + and CREATE_TIME <= #{createEndTime} + 1 - 1/86400 + + + and ISSUE_TIME >= #{issueStartTime} + + + and ISSUE_TIME <= #{issueEndTime} + 1 - 1/86400 + and GOODS_NUMBER = #{goodsNumber} @@ -84,5 +96,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" \ No newline at end of file