From 17e9f43494a23afaeeea60188bf45fe46a5cbe81 Mon Sep 17 00:00:00 2001 From: zhou-hongcheng <1064771933@qq.com> Date: Wed, 11 Mar 2026 17:06:45 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E5=B7=AE=E5=BC=82=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=98=E7=82=B9=E8=BD=AE=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/persistence/InvestigationManageImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/persistence/InvestigationManageImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/persistence/InvestigationManageImpl.java index b4b0dbc3c..5a4dc0e31 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/persistence/InvestigationManageImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/persistence/InvestigationManageImpl.java @@ -364,7 +364,7 @@ public class InvestigationManageImpl extends ServiceImpl Date: Wed, 11 Mar 2026 17:14:00 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E5=80=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/differentManage/DifferentManageMapper.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/mhd_wms/src/main/resources/mapper/differentManage/DifferentManageMapper.xml b/mhd_wms/src/main/resources/mapper/differentManage/DifferentManageMapper.xml index b2b382160..284e70e39 100644 --- a/mhd_wms/src/main/resources/mapper/differentManage/DifferentManageMapper.xml +++ b/mhd_wms/src/main/resources/mapper/differentManage/DifferentManageMapper.xml @@ -116,5 +116,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" \ No newline at end of file From c14f3f766b81bc245e291ee52ddb75ee7e1a44d7 Mon Sep 17 00:00:00 2001 From: zhou-hongcheng <1064771933@qq.com> Date: Thu, 12 Mar 2026 09:02:17 +0800 Subject: [PATCH 03/10] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=89=A9=E6=96=99?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E8=B0=83=E7=94=A8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mhd/system/api/domain/MaterialBaseInfoFeign.java | 10 ++++++++++ .../materialBaseInfo/MaterialBaseInfoAssembler.java | 8 ++++++++ .../materialBaseInfo/MaterialBaseInfoApi.java | 5 +++-- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialBaseInfoFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialBaseInfoFeign.java index 6e8c58bf0..a2399b08f 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialBaseInfoFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialBaseInfoFeign.java @@ -211,5 +211,15 @@ public class MaterialBaseInfoFeign extends BaseVOEntity{ @ApiModelProperty("币制") private String currency; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("复合条件查询 物料名称 物料编码 物料条码") + private String compoundOrQuery; + + @ApiModelProperty("批次ID") + private Long batchId; } diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialBaseInfo/MaterialBaseInfoAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialBaseInfo/MaterialBaseInfoAssembler.java index 7daf41eaf..8a026d9e6 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialBaseInfo/MaterialBaseInfoAssembler.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialBaseInfo/MaterialBaseInfoAssembler.java @@ -1,6 +1,7 @@ package com.mhd.wms.interfaces.assember.materialBaseInfo; import cn.hutool.json.JSONUtil; +import com.mhd.system.api.domain.MaterialBaseInfoFeign; import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseInfoDO; import com.mhd.wms.interfaces.dto.materialBaseInfo.MaterialBaseInfoDTO; import org.springframework.stereotype.Component; @@ -21,4 +22,11 @@ public class MaterialBaseInfoAssembler { return JSONUtil.toBean(JSONUtil.toJsonStr(materialBaseInfoDTO), MaterialBaseInfoDO.class); } + /** + * 转换实体 + */ + public MaterialBaseInfoDO toDO2(MaterialBaseInfoFeign materialBaseInfoDTO) { + return JSONUtil.toBean(JSONUtil.toJsonStr(materialBaseInfoDTO), MaterialBaseInfoDO.class); + } + } diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialBaseInfo/MaterialBaseInfoApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialBaseInfo/MaterialBaseInfoApi.java index 3f789154e..b6a53bd1e 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialBaseInfo/MaterialBaseInfoApi.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialBaseInfo/MaterialBaseInfoApi.java @@ -4,6 +4,7 @@ import com.mhd.common.core.domain.entity.R; import com.mhd.common.core.web.controller.BaseController; import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.system.api.domain.MaterialBaseInfoFeign; import com.mhd.wms.application.service.materialBaseInfo.MaterialBaseInfoApplicationService; import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO; import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseInfoDO; @@ -50,10 +51,10 @@ public class MaterialBaseInfoApi extends BaseController { */ @ApiOperation("编辑物料基础信息") @PostMapping("/edit") - public AjaxResult edit(@RequestBody MaterialBaseInfoDTO materialBaseInfoDTO) + public AjaxResult edit(@RequestBody MaterialBaseInfoFeign materialBaseInfoDTO) { //转换实体 - MaterialBaseInfoDO materialBaseInfoDO = materialBaseInfoAssembler.toDO(materialBaseInfoDTO); + MaterialBaseInfoDO materialBaseInfoDO = materialBaseInfoAssembler.toDO2(materialBaseInfoDTO); if(1 == materialBaseInfoDTO.getUpdateFeign()){ return toAjax(materialBaseInfoApplicationService.update(materialBaseInfoDO)); }else { From 2c2a837ea8ca53649ca26f2a97234fefb5edc34d Mon Sep 17 00:00:00 2001 From: zhou-hongcheng <1064771933@qq.com> Date: Thu, 12 Mar 2026 10:01:43 +0800 Subject: [PATCH 04/10] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=89=A9=E6=96=99?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E8=B0=83=E7=94=A8=E5=AF=B9=E8=B1=A1=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/persistence/MaterialBaseInfoImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/persistence/MaterialBaseInfoImpl.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/persistence/MaterialBaseInfoImpl.java index c876598ab..3e44fa129 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/persistence/MaterialBaseInfoImpl.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/persistence/MaterialBaseInfoImpl.java @@ -87,7 +87,10 @@ public class MaterialBaseInfoImpl extends ServiceImpl Date: Thu, 12 Mar 2026 10:08:21 +0800 Subject: [PATCH 05/10] =?UTF-8?q?PC=E5=A4=8D=E6=A0=B8=E4=B8=8B=E5=8F=91?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/StockOutOrderDomainService.java | 35 +++++++++++++++---- .../dto/stockOutOrder/StockOutOrderDTO.java | 2 ++ .../stockOutOrder/StockOutOrderApi.java | 4 +++ 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java index d079288fc..4b1951793 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java @@ -698,23 +698,37 @@ public class StockOutOrderDomainService { @Transactional(rollbackFor = Exception.class) public Boolean checkTaskDistribution(StockOutOrderDO stockOutOrderDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); + List outOrderIds = stockOutOrderDO.getOutOrderIds(); + if (outOrderIds == null || outOrderIds.size() == 0) { + throw new ServiceException("未选择出库单,或出库单不存在"); + } StockOutOrderDO stockOutOrderDOQuery = new StockOutOrderDO(); - stockOutOrderDOQuery.setOutOrderIds(stockOutOrderDO.getOutOrderIds()); + stockOutOrderDOQuery.setOutOrderIds(outOrderIds); stockOutOrderDOQuery.setCheckTaskDistribution(2); List stockOutOrderPOList = stockOutOrderService.queryList(stockOutOrderDOQuery); if (CollectionUtils.isEmpty(stockOutOrderPOList)) { - throw new ServiceException("复合单已下发,请重新选择"); + throw new ServiceException("出库单不存在或已下发,请重新选择"); } - //复核下发任务 + //复核下发任务(插入 delive_task,PDA 从此表查任务) genDeliveTask(stockOutOrderPOList, stockOutOrderDO); - //标记收货单任务已下发 + //标记出库单任务已下发,并同步复核人信息到 stock_out_order(与 genDeliveTask 中逻辑一致) + Long checkOperatorsBy = stockOutOrderDO.getCheckOperatorsBy(); + String checkOperatorsName = stockOutOrderDO.getCheckOperatorsName(); + if (checkOperatorsBy == null || checkOperatorsBy == 0) { + checkOperatorsBy = loginUser.getUserid(); + checkOperatorsName = (loginUser.getUserPo() != null && loginUser.getUserPo().getUserName() != null && !loginUser.getUserPo().getUserName().trim().isEmpty()) + ? loginUser.getUserPo().getUserName() + : (loginUser.getRealname() != null && !loginUser.getRealname().trim().isEmpty()) ? loginUser.getRealname() : loginUser.getUsername(); + } return stockOutOrderService.update(null, new UpdateWrapper().lambda() .set(StockOutOrder::getCheckTaskDistribution, 1) .set(StockOutOrder::getCheckTaskDistributionTime, new Date()) + .set(StockOutOrder::getCheckOperatorsBy, checkOperatorsBy) + .set(StockOutOrder::getCheckOperatorsName, checkOperatorsName) .set(StockOutOrder::getUpdateBy, loginUser.getUserid()) .set(StockOutOrder::getUpdateByName, loginUser.getUsername()) .set(StockOutOrder::getUpdateTime, new Date()) - .in(StockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderIds())); + .in(StockOutOrder::getOutOrderId, outOrderIds)); } /** @@ -1436,8 +1450,15 @@ public class StockOutOrderDomainService { deliveTaskDO.setTaskDistributionId(loginUser.getUserid()); deliveTaskDO.setTaskDistributionName(userRealName); deliveTaskDO.setTaskDistributionTime(new Date()); - deliveTaskDO.setOperatorsBy(stockOutOrderDO.getCheckOperatorsBy()); - deliveTaskDO.setOperatorsName(stockOutOrderDO.getCheckOperatorsName()); + // 若未指定复核人(null 或 0),默认分配给当前操作用户;前端未选择时可能传 0,0 在 PDA 两个 tab 都查不到 + Long operatorsBy = stockOutOrderDO.getCheckOperatorsBy(); + String operatorsName = stockOutOrderDO.getCheckOperatorsName(); + if (operatorsBy == null || operatorsBy == 0) { + operatorsBy = loginUser.getUserid(); + operatorsName = (operatorsName != null && !operatorsName.isEmpty()) ? operatorsName : userRealName; + } + deliveTaskDO.setOperatorsBy(operatorsBy); + deliveTaskDO.setOperatorsName(operatorsName); deliveTaskDO.setCreateBy(loginUser.getUserid()); deliveTaskDO.setCreateByName(userRealName); deliveTaskDO.setCreateTime(new Date()); diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutOrder/StockOutOrderDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutOrder/StockOutOrderDTO.java index 76de1ab1a..ef5b8ddd7 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutOrder/StockOutOrderDTO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutOrder/StockOutOrderDTO.java @@ -1,5 +1,6 @@ package com.mhd.wms.interfaces.dto.stockOutOrder; +import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonFormat; import com.mhd.common.core.annotation.Excel; import com.mhd.wms.interfaces.dto.outMaterialDetail.OutMaterialDetailDTO; @@ -234,6 +235,7 @@ public class StockOutOrderDTO extends StockOutOrderBaseDTO { @ApiModelProperty("复核作业人用户ID") @Excel(name = "复核作业人用户ID") + @JsonAlias({"checkOperatorId", "operatorId"}) private Long checkOperatorsBy; @ApiModelProperty("复核作业人姓名") diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java index 3a47e522e..7fa177656 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java @@ -19,6 +19,7 @@ import com.mhd.wms.interfaces.assember.stockOutOrder.StockOutOrderAssembler; import com.mhd.wms.interfaces.dto.outMaterialDetail.OutMaterialDetailDTO; import com.mhd.wms.interfaces.dto.stockOutOrder.StockOutOrderDTO; import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpRequest; @@ -39,6 +40,7 @@ import java.util.List; * @author gen * @date 2024-05-28 */ +@Slf4j @RestController @RequestMapping("/stockOutOrderApi") public class StockOutOrderApi extends BaseController { @@ -281,6 +283,8 @@ public class StockOutOrderApi extends BaseController { @ApiOperation("复核下发") @PostMapping("/checkTaskDistribution") public AjaxResult checkTaskDistribution(@RequestBody StockOutOrderDTO stockOutOrderDTO) { + log.debug("复核下发入参 checkOperatorsBy={}, checkOperatorsName={}, outOrderIds={}", + stockOutOrderDTO.getCheckOperatorsBy(), stockOutOrderDTO.getCheckOperatorsName(), stockOutOrderDTO.getOutOrderIds()); StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class); return AjaxResult.success(stockOutOrderApplicationService.checkTaskDistribution(stockOutOrderDO)); } From ea29156a355f8ec3c7e9425f923f326b88cd59e7 Mon Sep 17 00:00:00 2001 From: zhou-hongcheng <1064771933@qq.com> Date: Thu, 12 Mar 2026 10:15:16 +0800 Subject: [PATCH 06/10] =?UTF-8?q?system=E9=85=8D=E7=BD=AE=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=94=B9=E4=B8=BA=E6=B5=8B=E8=AF=95=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mhd-system/src/main/resources/bootstrap.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mhd-modules/mhd-system/src/main/resources/bootstrap.yml b/mhd-modules/mhd-system/src/main/resources/bootstrap.yml index d2ad81e8f..2afad33b3 100644 --- a/mhd-modules/mhd-system/src/main/resources/bootstrap.yml +++ b/mhd-modules/mhd-system/src/main/resources/bootstrap.yml @@ -14,20 +14,20 @@ spring: nacos: discovery: # server-addr: 127.0.0.1:8848 -# server-addr: 10.33.0.129:6010 + server-addr: 10.33.0.129:6010 # 线上测试环境配置 容器名+端口号 - server-addr: 10.102.192.5:6848 - username: nacos - password: manhuoda@2023 +# server-addr: 10.102.192.5:6848 +# username: nacos +# password: manhuoda@2023 #线上正式环境 # server-addr: 10.102.192.105:6848 config: # server-addr: 127.0.0.1:8848 -# server-addr: 10.33.0.129:6010 + server-addr: 10.33.0.129:6010 # 线上测试环境配置 容器名+端口号 - server-addr: 10.102.192.5:6848 - username: nacos - password: manhuoda@2023 +# server-addr: 10.102.192.5:6848 +# username: nacos +# password: manhuoda@2023 #线上正式环境 # server-addr: 10.102.192.105:6848 group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置 From d0d5c4a15b58f55bf5fd653cff0cfd456fc817c6 Mon Sep 17 00:00:00 2001 From: zhou-hongcheng <1064771933@qq.com> Date: Thu, 12 Mar 2026 11:12:44 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E5=8F=82=E6=95=B0=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1feign=E8=B0=83=E7=94=A8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/persistence/MaterialBaseInfoImpl.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/persistence/MaterialBaseInfoImpl.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/persistence/MaterialBaseInfoImpl.java index 3e44fa129..61158a587 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/persistence/MaterialBaseInfoImpl.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/persistence/MaterialBaseInfoImpl.java @@ -88,9 +88,7 @@ public class MaterialBaseInfoImpl extends ServiceImpl Date: Thu, 12 Mar 2026 12:10:04 +0800 Subject: [PATCH 08/10] =?UTF-8?q?=E5=8F=82=E6=95=B0=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1feign=E8=B0=83=E7=94=A8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../persistence/MaterialBaseInfoImpl.java | 119 +++++++++++++++++- 1 file changed, 116 insertions(+), 3 deletions(-) diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/persistence/MaterialBaseInfoImpl.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/persistence/MaterialBaseInfoImpl.java index 61158a587..19ff6d760 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/persistence/MaterialBaseInfoImpl.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/persistence/MaterialBaseInfoImpl.java @@ -1,6 +1,7 @@ package com.mhd.basic.domain.materialBaseInfo.repository.persistence; import cn.hutool.json.JSONUtil; +import com.alibaba.nacos.client.naming.utils.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mhd.basic.domain.batch.entity.Batch; @@ -14,7 +15,7 @@ import com.mhd.common.core.exception.ServiceException; import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.security.utils.SecurityUtils; import com.mhd.system.api.WmsServiceFeign; -import com.mhd.system.api.domain.MaterialBaseInfoFeign; +import com.mhd.system.api.domain.*; import com.mhd.system.api.model.LoginUser; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -24,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * 物料基础信息Service业务层处理 @@ -87,8 +89,7 @@ public class MaterialBaseInfoImpl extends ServiceImpl copyMaterialInventoryWarningList(List sourceList) { + if (CollectionUtils.isEmpty(sourceList)) { + return null; + } + return sourceList.stream() + .map(source -> { + MaterialInventoryWarningFeign target = new MaterialInventoryWarningFeign(); + BeanUtils.copyProperties(source, target); + return target; + }) + .collect(Collectors.toList()); + } + + /** + * 深拷贝条码列表 + */ + private List copyMaterialBarCodeList(List sourceList) { + if (CollectionUtils.isEmpty(sourceList)) { + return null; + } + return sourceList.stream() + .map(source -> { + MaterialBarCodeFeign target = new MaterialBarCodeFeign(); + BeanUtils.copyProperties(source, target); + return target; + }) + .collect(Collectors.toList()); + } + + /** + * 批量转换(如果有需要) + */ + public List toFeignList(List sourceList) { + if (CollectionUtils.isEmpty(sourceList)) { + return null; + } + return sourceList.stream() + .map(this::toFeign) + .collect(Collectors.toList()); + } + /** * @description 校验唯一 * @author ZhouGY From 482f642652b545a2acd10205bb79514dfc644915 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Thu, 12 Mar 2026 13:56:07 +0800 Subject: [PATCH 09/10] =?UTF-8?q?WMSFeign=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mhd/system/api/WmsServiceFeign.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java index 6551d451e..7f29e0f56 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java @@ -5,7 +5,7 @@ import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.system.api.domain.MaterialBaseInfoFeign; import com.mhd.system.api.domain.MaterialInventoryDTO; import com.mhd.system.api.domain.NoticeOrderDTO; -import com.mhd.system.api.factory.RemoteTicketFeignFallbackFactory; +import com.mhd.system.api.factory.RemoteWmsFallbackFactory; import com.mhd.system.api.feign.FeignAutoConfiguration; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; @@ -18,7 +18,7 @@ import java.util.Map; * @description: TODO * @date 2024/5/10 8:58 **/ -@FeignClient(contextId = "remoteWmsServiceFeign", value = ServiceNameConstants.WMS_SERVICE, fallbackFactory = RemoteTicketFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "remoteWmsServiceFeign", value = ServiceNameConstants.WMS_SERVICE, fallbackFactory = RemoteWmsFallbackFactory.class, configuration = FeignAutoConfiguration.class) public interface WmsServiceFeign { /** From 5e413e36bd04263f4a4e8f9e4f3aae8ba3cff0fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Thu, 12 Mar 2026 16:58:31 +0800 Subject: [PATCH 10/10] =?UTF-8?q?PDA=E6=94=B6=E8=B4=A7=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StockReceiptOrderApplicationService.java | 35 +++++-------------- .../stockOutOrder/StockOutOrderAppApi.java | 20 +++++++++-- 2 files changed, 26 insertions(+), 29 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 7b9805dbc..0c1b2d9fd 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 @@ -381,7 +381,7 @@ public class StockReceiptOrderApplicationService { } /** - * 扁平化明细:将第一条子项变为主行,两条子项收货数量累加到主行 ALREADY_RECEIPT_QUANTITY,主行展示第一条子项的批次属性(收货时修改的值) + * 扁平化明细:主行保留自身 receiptQuantity,alreadyReceiptQuantity 汇总主行+所有子项;保留父子结构,子项作为 children 展示 * @param receiptMaterialDetailPOList 物料明细列表(树形,level 1 父级含 children) */ private void flattenMaterialDetailList(List receiptMaterialDetailPOList) { @@ -393,43 +393,23 @@ public class StockReceiptOrderApplicationService { if (CollectionUtils.isEmpty(children)) { continue; } - // 第一条子项变为主行:用第一条子项的数据(含批次属性)覆盖主行展示 - ReceiptMaterialDetailPO firstChild = children.get(0); - if (!CollectionUtils.isEmpty(firstChild.getMaterialMoreDetailList())) { - parent.setMaterialMoreDetailList(firstChild.getMaterialMoreDetailList()); - } - parent.setBatchRefNo(firstChild.getBatchRefNo()); - parent.setSheetRefNo(firstChild.getSheetRefNo()); - parent.setBoxPalletNo(firstChild.getBoxPalletNo()); - parent.setProductionDate(firstChild.getProductionDate()); - parent.setExpiryDate(firstChild.getExpiryDate()); - parent.setInventoryDate(firstChild.getInventoryDate()); - parent.setExtAttr1(firstChild.getExtAttr1()); - parent.setExtAttr2(firstChild.getExtAttr2()); - parent.setExtAttr3(firstChild.getExtAttr3()); - parent.setExtAttr4(firstChild.getExtAttr4()); - // 两条子项收货数量累加到主行(净重、毛重、体积、面积不累加,保持主行原值) - BigDecimal receiptQuantitySum = parent.getReceiptQuantity() != null ? parent.getReceiptQuantity() : BigDecimal.ZERO; + // 主行 alreadyReceiptQuantity = 主行 receiptQuantity + 所有子项 receiptQuantity + BigDecimal alreadyReceiptQuantitySum = parent.getReceiptQuantity() != null ? parent.getReceiptQuantity() : BigDecimal.ZERO; Integer maxReceiptStatus = parent.getReceiptStatus(); for (ReceiptMaterialDetailPO child : children) { if (child.getReceiptQuantity() != null) { - receiptQuantitySum = receiptQuantitySum.add(child.getReceiptQuantity()); + alreadyReceiptQuantitySum = alreadyReceiptQuantitySum.add(child.getReceiptQuantity()); } if (child.getReceiptStatus() != null && (maxReceiptStatus == null || child.getReceiptStatus() > maxReceiptStatus)) { maxReceiptStatus = child.getReceiptStatus(); } - // 子项不需要展示计划数量字段 child.setQuantity(null); } - parent.setReceiptQuantity(receiptQuantitySum); - // 主行 ALREADY_RECEIPT_QUANTITY:DB 已存汇总时用其值,否则用子项合计 - if (parent.getAlreadyReceiptQuantity() == null || parent.getAlreadyReceiptQuantity().compareTo(receiptQuantitySum) < 0) { - parent.setAlreadyReceiptQuantity(receiptQuantitySum); - } + parent.setAlreadyReceiptQuantity(alreadyReceiptQuantitySum); if (maxReceiptStatus != null) { parent.setReceiptStatus(maxReceiptStatus); } - // 保留子项,子项展示其自己填写的值(收货数量、批次属性、净重毛重体积面积等) + // 保留父子结构,子项在 parent.children 中,前端按树形展示 } } @@ -926,6 +906,9 @@ public class StockReceiptOrderApplicationService { // 物料条码为空时取物料维护的条码信息第一行的 barCode Map materialBarCodeMap = buildMaterialBarCodeMap(materialBaseInfoIdSet); fillBarCodeFromMaterialBarCodeRecursively(materialDetailList, materialBarCodeMap); + // PDA 端与 PC 端一致:主行收货数量取第一条子项,已收货数量汇总所有子项 + flattenMaterialDetailList(materialDetailList); + clearChildQuantityRecursively(materialDetailList); } return stockReceiptOrderPO; } diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutOrder/StockOutOrderAppApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutOrder/StockOutOrderAppApi.java index 64beb5a22..2589461f2 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutOrder/StockOutOrderAppApi.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutOrder/StockOutOrderAppApi.java @@ -5,6 +5,10 @@ import com.mhd.common.core.web.controller.BaseController; import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.page.TableDataInfoApi; import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.system.api.model.LoginUser; import com.mhd.wms.application.service.stockOutOrder.StockOutOrderApplicationService; import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO; import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO; @@ -33,15 +37,25 @@ public class StockOutOrderAppApi extends BaseController { private StockOutOrderAssembler stockOutOrderAssembler; /** - * 分页查询出库单列表 + * 分页查询出库单列表(PDA复核查询) + * 查询条件:warehouse_id(用户关联仓库)、check_operators_by(当前用户)、check_status<3 等 */ @ApiOperation("查询出库单列表") @GetMapping("/list") public TableDataInfoApi list(StockOutOrderDTO stockOutOrderDTO) { - //转换实体 StockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO); startPage(); - stockOutOrderDO.setCheckOperatorsBy(SecurityUtils.getLoginUser().getUserPo().getUserId()); + LoginUser loginUser = SecurityUtils.getLoginUser(); + UserPo userPo = loginUser.getUserPo(); + stockOutOrderDO.setCheckOperatorsBy(userPo.getUserId()); + stockOutOrderDO.setOrganizationId(userPo.getOrganizationId()); + stockOutOrderDO.setTopOrganizationId(userPo.getTopOrganizationId()); + stockOutOrderDO.setLtCheckStatus(3); + stockOutOrderDO.setDelFlag(1); + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + if (associationWarehouseCacheDO != null) { + stockOutOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } List list = stockOutOrderApplicationService.queryList(stockOutOrderDO); return getDataTableApi(list); }