diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/InMaterialDetail.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/InMaterialDetail.java index 637531269..4861cef26 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/InMaterialDetail.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/InMaterialDetail.java @@ -364,4 +364,8 @@ public class InMaterialDetail extends BaseVOEntity { @ApiModelProperty("lot编号") @Excel(name = "lot编号") private String lotNo; + + @ApiModelProperty("oms入库单详情id") + @Excel(name = "oms入库单详情id") + private String omsInMaterialDetail; } \ No newline at end of file diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/StockInOrder.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/StockInOrder.java index e3abbb12d..f022e8c30 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/StockInOrder.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/StockInOrder.java @@ -352,4 +352,8 @@ public class StockInOrder extends BaseVOEntity { @ApiModelProperty("订单状态") @Excel(name = "订单状态") private String orderStatus; + + @ApiModelProperty("oms入库单id") + @Excel(name = "oms入库单id") + private String omsStockInOrderId; } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/associationWarehouse/AssociationWarehouseApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/associationWarehouse/AssociationWarehouseApplicationService.java index 8e76b6b23..fe77199d9 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/associationWarehouse/AssociationWarehouseApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/associationWarehouse/AssociationWarehouseApplicationService.java @@ -1,10 +1,11 @@ package com.mhd.basic.application.service.associationWarehouse; +import com.mhd.basic.application.service.warehouse.WarehouseApplicationService; import com.mhd.basic.domain.warehouse.repository.po.WarehousePO; import com.mhd.basic.domain.warehouse.repository.todo.WarehouseDO; -import com.mhd.basic.domain.warehouse.service.WarehouseDomainService; import com.mhd.common.core.enums.RoleEnum; import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.basic.common.org.OrganizationQueryScope; import com.mhd.basic.domain.associationWarehouse.repository.po.AssociationWarehousePO; import com.mhd.basic.domain.associationWarehouse.repository.todo.AssociationWarehouseDO; import com.mhd.basic.domain.associationWarehouse.service.AssociationWarehouseDomainService; @@ -16,6 +17,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -30,8 +32,76 @@ public class AssociationWarehouseApplicationService { @Autowired private AssociationWarehouseDomainService associationWarehouseDomainService; @Autowired - private WarehouseDomainService warehouseDomainService; + private WarehouseApplicationService warehouseApplicationService; + /** + * 与 {@link com.mhd.basic.application.service.materialClassify.MaterialClassifyApplicationService#queryList} 一致的组织数据权限 + */ + private void applyAssociationWarehouseOrgScope(AssociationWarehouseDO associationWarehouseDO, LoginUser loginUser) { + if (loginUser == null || loginUser.getUserPo() == null) { + return; + } + Long userOrganizationId = OrganizationQueryScope.resolveLoginOrganizationId(loginUser); + Long frontendOrganizationId = associationWarehouseDO.getOrganizationId(); + + if (userOrganizationId != null && userOrganizationId.equals(2827L)) { + if (frontendOrganizationId != null) { + associationWarehouseDO.setOrganizationId(frontendOrganizationId); + associationWarehouseDO.setTopOrganizationId(null); + } else { + associationWarehouseDO.setOrganizationId(null); + associationWarehouseDO.setTopOrganizationId(null); + } + } else { + if (frontendOrganizationId != null && userOrganizationId != null) { + if (!frontendOrganizationId.equals(userOrganizationId)) { + associationWarehouseDO.setOrganizationId(userOrganizationId); + } + } else { + if (userOrganizationId != null) { + associationWarehouseDO.setOrganizationId(userOrganizationId); + } + } + if (associationWarehouseDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + associationWarehouseDO.setTopOrganizationId(topOrganizationId); + } + } else { + associationWarehouseDO.setTopOrganizationId(null); + } + } + } + + /** + * 排除「默认仓」关联(is_default=2),与 Mapper 条件双保险,避免 OGNL/参数未绑定导致仍查出默认行。 + */ + private List filterExcludeDefaultWarehouse( + AssociationWarehouseDO associationWarehouseDO, + List list) { + if (!Boolean.TRUE.equals(associationWarehouseDO.getExcludeDefaultWarehouse()) + || list == null || list.isEmpty()) { + return list; + } + return list.stream() + .filter(po -> po.getIsDefault() == null || !Objects.equals(po.getIsDefault(), 2)) + .collect(Collectors.toList()); + } + + /** + * 按「组织 + 仓库」查该仓下全部绑定(未带 correlationId)时,默认排除新建仓自动产生的默认仓关联(is_default=2)。 + * 需要保留时显式传 excludeDefaultWarehouse=false。 + * 仅在没有显式指定 excludeDefaultWarehouse 时生效。 + */ + private void applyDefaultExcludeForWarehouseBindList(AssociationWarehouseDO associationWarehouseDO) { + if (associationWarehouseDO.getExcludeDefaultWarehouse() != null) { + return; + } + if (associationWarehouseDO.getWarehouseId() != null + && associationWarehouseDO.getCorrelationId() == null) { + associationWarehouseDO.setExcludeDefaultWarehouse(true); + } + } /** * 分页查询关联仓库列表 @@ -40,11 +110,13 @@ public class AssociationWarehouseApplicationService { public List queryList(AssociationWarehouseDO associationWarehouseDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser.getUserPo().getRoleCode().equals(RoleEnum.SUPER_ADMIN.getCode()) || loginUser.getUserPo().getRoleCode().equals(RoleEnum.PLAT_ADMIN.getCode())){ + // 与 warehouseApi/list 一致:走 WarehouseApplicationService,尊重请求中的 organizationId / top 等条件,不能使用空的 WarehouseDO 直查询库 WarehouseDO warehouseDO = new WarehouseDO(); - if (loginUser.getUserPo().getRoleCode().equals(RoleEnum.PLAT_ADMIN.getCode())){ - warehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); - } - List warehousePOList = warehouseDomainService.queryList(warehouseDO); + warehouseDO.setOrganizationId(associationWarehouseDO.getOrganizationId()); + warehouseDO.setTopOrganizationId(associationWarehouseDO.getTopOrganizationId()); + warehouseDO.setWarehouseCode(associationWarehouseDO.getWarehouseCode()); + warehouseDO.setWarehouseName(associationWarehouseDO.getWarehouseName()); + List warehousePOList = warehouseApplicationService.queryList(warehouseDO); List associationWarehousePOList = new ArrayList<>(); warehousePOList.forEach(warehousePO -> { AssociationWarehousePO associationWarehousePO = new AssociationWarehousePO(); @@ -56,18 +128,27 @@ public class AssociationWarehouseApplicationService { associationWarehousePO.setTopOrganizationId(warehousePO.getTopOrganizationId()); associationWarehousePOList.add(associationWarehousePO); }); - return associationWarehousePOList; + return filterExcludeDefaultWarehouse(associationWarehouseDO, associationWarehousePOList); }else { - associationWarehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); - associationWarehouseDO.setCorrelationId(loginUser.getUserid()); - return associationWarehouseDomainService.queryList(associationWarehouseDO); + applyAssociationWarehouseOrgScope(associationWarehouseDO, loginUser); + // 未指定仓库时:只查当前登录人在关联表中的记录;指定了 warehouseId 时:查该仓下全部绑定(绑定用户列表),勿收窄为当前用户 + if (associationWarehouseDO.getWarehouseId() == null) { + associationWarehouseDO.setCorrelationId(loginUser.getUserid()); + } + applyDefaultExcludeForWarehouseBindList(associationWarehouseDO); + return filterExcludeDefaultWarehouse(associationWarehouseDO, + associationWarehouseDomainService.queryList(associationWarehouseDO)); } } public List queryListCorrelationId(AssociationWarehouseDO associationWarehouseDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - associationWarehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); - List associationWarehousePOList = associationWarehouseDomainService.queryList(associationWarehouseDO); + if (loginUser != null && loginUser.getUserPo() != null) { + applyAssociationWarehouseOrgScope(associationWarehouseDO, loginUser); + } + applyDefaultExcludeForWarehouseBindList(associationWarehouseDO); + List associationWarehousePOList = filterExcludeDefaultWarehouse(associationWarehouseDO, + associationWarehouseDomainService.queryList(associationWarehouseDO)); return associationWarehousePOList.stream() .map(AssociationWarehousePO::getCorrelationId) .collect(Collectors.toList()); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/warehouse/WarehouseApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/warehouse/WarehouseApplicationService.java index 58c70ce15..922bfd098 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/warehouse/WarehouseApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/warehouse/WarehouseApplicationService.java @@ -2,9 +2,11 @@ package com.mhd.basic.application.service.warehouse; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.mhd.basic.domain.associationWarehouse.entity.AssociationWarehouse; import com.mhd.basic.domain.associationWarehouse.repository.facade.IAssociationWarehouseService; import com.mhd.basic.domain.warehouse.repository.po.WarehousePO; +import com.mhd.basic.common.org.OrganizationQueryScope; import com.mhd.basic.domain.warehouse.repository.po.po.WarehouseLinkagePO; import com.mhd.basic.domain.warehouse.repository.todo.WarehouseDO; import com.mhd.basic.domain.warehouse.service.WarehouseDomainService; @@ -17,9 +19,12 @@ import com.mhd.system.service.ISysDictTypeService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import com.mhd.common.core.utils.StringUtils; import java.util.Collections; +import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** @@ -46,7 +51,7 @@ public class WarehouseApplicationService { public List queryList(WarehouseDO warehouseDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null && loginUser.getUserPo() != null) { - Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + Long userOrganizationId = OrganizationQueryScope.resolveLoginOrganizationId(loginUser); Long frontendOrganizationId = warehouseDO.getOrganizationId(); // 前端传递的 organizationId // 数据权限:根据 organizationId 来设置查询权限 @@ -127,19 +132,100 @@ public class WarehouseApplicationService { /** - * 新增仓库 + * 新增仓库(写入主表后默认在 association_warehouse 绑定当前登录用户,便于按绑定关系展示) */ + @Transactional(rollbackFor = Exception.class) public Boolean insert(WarehouseDO warehouseDO) { - // 设置当前登录用户的组织信息 LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null && loginUser.getUserPo() != null) { - warehouseDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); - warehouseDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); - warehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + if (loginUser != null) { + Long orgId = OrganizationQueryScope.resolveLoginOrganizationId(loginUser); + if (orgId != null) { + warehouseDO.setOrganizationId(orgId); + } else if (loginUser.getUserPo() != null && loginUser.getUserPo().getOrganizationId() != null) { + warehouseDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + } + String orgName = null; + if (loginUser.getUserPo() != null && StringUtils.isNotEmpty(loginUser.getUserPo().getOrganizationName())) { + orgName = loginUser.getUserPo().getOrganizationName(); + } + if (StringUtils.isEmpty(orgName) && loginUser.getOrganizationPo() != null) { + orgName = loginUser.getOrganizationPo().getOrganizationName(); + } + if (StringUtils.isNotEmpty(orgName)) { + warehouseDO.setOrganizationName(orgName); + } + if (loginUser.getUserPo() != null && loginUser.getUserPo().getTopOrganizationId() != null) { + warehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + if (loginUser.getUserid() != null) { + if (warehouseDO.getCreateBy() == null) { + warehouseDO.setCreateBy(loginUser.getUserid()); + } + if (warehouseDO.getUpdateBy() == null) { + warehouseDO.setUpdateBy(loginUser.getUserid()); + } + } + if (StringUtils.isEmpty(warehouseDO.getCreateByName())) { + String showName = loginUser.getUsername(); + if (loginUser.getUserPo() != null && StringUtils.isNotEmpty(loginUser.getUserPo().getUserName())) { + showName = loginUser.getUserPo().getUserName(); + } + warehouseDO.setCreateByName(showName); + } + if (StringUtils.isEmpty(warehouseDO.getUpdateByName())) { + String showName = loginUser.getUsername(); + if (loginUser.getUserPo() != null && StringUtils.isNotEmpty(loginUser.getUserPo().getUserName())) { + showName = loginUser.getUserPo().getUserName(); + } + warehouseDO.setUpdateByName(showName); + } } //设置数据字典键值 setDataDict(warehouseDO); - return warehouseDomainService.insert(warehouseDO); + Boolean ok = warehouseDomainService.insert(warehouseDO); + if (Boolean.TRUE.equals(ok) && warehouseDO.getWarehouseId() != null && loginUser != null && loginUser.getUserid() != null) { + saveDefaultUserWarehouseAssociation(warehouseDO, loginUser); + } + return ok; + } + + /** + * 新增仓库后默认关联当前用户(若已存在相同仓库+用户则跳过) + */ + private void saveDefaultUserWarehouseAssociation(WarehouseDO warehouseDO, LoginUser loginUser) { + long exists = associationWarehouseService.count(new QueryWrapper().lambda() + .eq(AssociationWarehouse::getWarehouseId, warehouseDO.getWarehouseId()) + .eq(AssociationWarehouse::getCorrelationId, loginUser.getUserid()) + .eq(AssociationWarehouse::getDelFlag, 1)); + if (exists > 0) { + return; + } + String createName = loginUser.getUsername(); + if (loginUser.getUserPo() != null && StringUtils.isNotEmpty(loginUser.getUserPo().getUserName())) { + createName = loginUser.getUserPo().getUserName(); + } + // 与切换默认仓一致:先取消该用户下其它「默认」,再绑定新建仓库为默认(is_default: 1-否 2-是) + associationWarehouseService.update(null, new UpdateWrapper().lambda() + .set(AssociationWarehouse::getIsDefault, 1) + .set(AssociationWarehouse::getUpdateBy, loginUser.getUserid()) + .set(AssociationWarehouse::getUpdateByName, createName) + .eq(AssociationWarehouse::getCorrelationId, loginUser.getUserid()) + .eq(AssociationWarehouse::getIsDefault, 2) + .eq(AssociationWarehouse::getDelFlag, 1)); + AssociationWarehouse row = new AssociationWarehouse(); + row.setWarehouseId(warehouseDO.getWarehouseId()); + row.setWarehouseCode(warehouseDO.getWarehouseCode()); + row.setWarehouseName(warehouseDO.getWarehouseName()); + row.setCorrelationId(loginUser.getUserid()); + row.setOrganizationId(warehouseDO.getOrganizationId()); + row.setOrganizationName(warehouseDO.getOrganizationName()); + row.setTopOrganizationId(warehouseDO.getTopOrganizationId()); + row.setDelFlag(1); + row.setIsDefault(2); + row.setCreateBy(loginUser.getUserid()); + row.setCreateByName(createName); + row.setCreateTime(new Date()); + associationWarehouseService.save(row); } /** diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/common/org/OrganizationQueryScope.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/common/org/OrganizationQueryScope.java new file mode 100644 index 000000000..f72f84eef --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/common/org/OrganizationQueryScope.java @@ -0,0 +1,32 @@ +package com.mhd.basic.common.org; + +import com.mhd.system.api.model.LoginUser; + +/** + * 组织数据权限公共能力:解析当前登录用户所属组织(与 token 中 userPo / organizationPo 字段完整度有关) + */ +public final class OrganizationQueryScope { + + private OrganizationQueryScope() { + } + + /** + * 优先 userPo.organizationId;缺失或为 0 时用 organizationPo.organizationId + */ + public static Long resolveLoginOrganizationId(LoginUser loginUser) { + if (loginUser == null) { + return null; + } + if (loginUser.getUserPo() != null) { + Long oid = loginUser.getUserPo().getOrganizationId(); + if (oid != null && oid != 0L) { + return oid; + } + } + if (loginUser.getOrganizationPo() != null && loginUser.getOrganizationPo().getOrganizationId() != null + && loginUser.getOrganizationPo().getOrganizationId() != 0L) { + return loginUser.getOrganizationPo().getOrganizationId(); + } + return null; + } +} diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/associationWarehouse/repository/persistence/AssociationWarehouseImpl.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/associationWarehouse/repository/persistence/AssociationWarehouseImpl.java index 3db238689..c50c93e9d 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/associationWarehouse/repository/persistence/AssociationWarehouseImpl.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/associationWarehouse/repository/persistence/AssociationWarehouseImpl.java @@ -121,9 +121,13 @@ public class AssociationWarehouseImpl extends ServiceImpl().lambda() - .eq(AssociationWarehouse::getWarehouseId, associationWarehouseDO.getWarehouseId())); + // 先删该仓下「非默认仓」绑定,再批量插入本次提交的用户;保留 is_default=2(如新建仓自动写入的创建人默认仓),避免前端列表不展示该条却全量保存时被误删 + remove(new QueryWrapper().lambda() + .eq(AssociationWarehouse::getWarehouseId, associationWarehouseDO.getWarehouseId()) + .eq(AssociationWarehouse::getDelFlag, 1) + .and(w -> w.isNull(AssociationWarehouse::getIsDefault) + .or() + .ne(AssociationWarehouse::getIsDefault, 2))); } return saveBatch(associationWarehouseList); } diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/associationWarehouse/repository/todo/AssociationWarehouseDO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/associationWarehouse/repository/todo/AssociationWarehouseDO.java index 614015ff9..83a73ecd0 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/associationWarehouse/repository/todo/AssociationWarehouseDO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/associationWarehouse/repository/todo/AssociationWarehouseDO.java @@ -69,6 +69,11 @@ public class AssociationWarehouseDO extends BaseVOEntity{ @ApiModelProperty(name = "关联用户id集合") private List correlationIdList; + /** + * 为 true 时查询排除「默认仓」关联(is_default=2),例如绑定用户列表不展示新建仓时自动生成的创建人默认关联。 + */ + private Boolean excludeDefaultWarehouse; + @ApiModelProperty("是否批量: 1-是 2-否 ") @Excel(name = "是否批量: 1-是 2-否 ") private Integer isBatch; diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/entity/Warehouse.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/entity/Warehouse.java index fd6856502..6aec2e620 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/entity/Warehouse.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/entity/Warehouse.java @@ -118,5 +118,9 @@ public class Warehouse extends BaseVOEntity{ @Excel(name = "是否作废: 1-否 2-是") private Integer nullify; + @ApiModelProperty("是否启用: 1-否 2-是") + @Excel(name = "是否启用: 1-否 2-是") + private Integer isEnable; -} + +} \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/persistence/WarehouseImpl.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/persistence/WarehouseImpl.java index d00bf4464..b2e4f4f75 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/persistence/WarehouseImpl.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/persistence/WarehouseImpl.java @@ -40,7 +40,11 @@ public class WarehouseImpl extends ServiceImpl imple public Boolean insert(WarehouseDO warehouseDO) { Warehouse warehouse = new Warehouse(); BeanUtils.copyProperties(warehouseDO,warehouse); - return this.save(warehouse); + boolean saved = this.save(warehouse); + if (saved && warehouse.getWarehouseId() != null) { + warehouseDO.setWarehouseId(warehouse.getWarehouseId()); + } + return saved; } /** diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/po/WarehousePO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/po/WarehousePO.java index 0950bc8f9..c42b2f6b6 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/po/WarehousePO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/po/WarehousePO.java @@ -119,8 +119,10 @@ public class WarehousePO extends BaseVOEntity{ @ApiModelProperty("是否作废: 1-否 2-是") @Excel(name = "是否作废: 1-否 2-是") private Integer nullify; - + @ApiModelProperty("是否启用: 1-否 2-是") + @Excel(name = "是否启用: 1-否 2-是") + private Integer isEnable; @ApiModelProperty("库区集合") private List storageSectionList; -} +} \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/todo/WarehouseDO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/todo/WarehouseDO.java index 593600a1a..62d55c832 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/todo/WarehouseDO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/todo/WarehouseDO.java @@ -122,7 +122,9 @@ public class WarehouseDO extends BaseVOEntity{ @ApiModelProperty(name = "权限菜单ID") private Long permissionMenuId; - + @ApiModelProperty("是否启用: 1-否 2-是") + @Excel(name = "是否启用: 1-否 2-是") + private Integer isEnable; @ApiModelProperty("仓库id 集合") private List warehouseIds; -} +} \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/assember/warehouse/WarehouseAssembler.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/assember/warehouse/WarehouseAssembler.java index a7b494a6c..455360268 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/assember/warehouse/WarehouseAssembler.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/assember/warehouse/WarehouseAssembler.java @@ -1,10 +1,12 @@ package com.mhd.basic.interfaces.assember.warehouse; import cn.hutool.core.util.ObjectUtil; +import com.mhd.basic.common.org.OrganizationQueryScope; import com.mhd.basic.domain.warehouse.repository.todo.WarehouseDO; import com.mhd.basic.interfaces.dto.warehouse.WarehouseDTO; import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.StringUtils; import com.mhd.common.core.utils.bean.BeanUtils; import com.mhd.common.core.utils.IgnoreNullUtil; import com.mhd.common.security.utils.SecurityUtils; @@ -63,11 +65,26 @@ public class WarehouseAssembler { warehouseDO.setCreateBy(new Long("0")); warehouseDO.setUpdateBy(new Long("0")); } - warehouseDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); - warehouseDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); - warehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); - warehouseDO.setCreateByName(userName); - warehouseDO.setUpdateByName(userName); + Long orgId = OrganizationQueryScope.resolveLoginOrganizationId(loginUser); + if (orgId != null) { + warehouseDO.setOrganizationId(orgId); + } else if (loginUser.getUserPo() != null) { + warehouseDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + } + String orgName = loginUser.getUserPo() != null ? loginUser.getUserPo().getOrganizationName() : null; + if (StringUtils.isEmpty(orgName) && loginUser.getOrganizationPo() != null) { + orgName = loginUser.getOrganizationPo().getOrganizationName(); + } + warehouseDO.setOrganizationName(orgName); + if (loginUser.getUserPo() != null) { + warehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + String displayName = userName; + if (loginUser.getUserPo() != null && StringUtils.isNotEmpty(loginUser.getUserPo().getUserName())) { + displayName = loginUser.getUserPo().getUserName(); + } + warehouseDO.setCreateByName(displayName); + warehouseDO.setUpdateByName(displayName); warehouseDO.setCreateTime(new Date()); warehouseDO.setUpdateTime(new Date()); warehouseDO.setDelFlag(1); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/associationWarehouse/AssociationWarehouseDTO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/associationWarehouse/AssociationWarehouseDTO.java index a94ed799a..6b29e752e 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/associationWarehouse/AssociationWarehouseDTO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/associationWarehouse/AssociationWarehouseDTO.java @@ -68,4 +68,7 @@ public class AssociationWarehouseDTO extends BaseVOEntity{ @ApiModelProperty(name = "关联用户id集合") private List correlationIdList; + + @ApiModelProperty("是否排除默认仓关联(is_default=2)。按仓查询且未带 correlationId 时后端默认可为 true;需要包含默认行时传 false") + private Boolean excludeDefaultWarehouse; } diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/warehouse/WarehouseDTO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/warehouse/WarehouseDTO.java index 824354fb3..9e982c719 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/warehouse/WarehouseDTO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/warehouse/WarehouseDTO.java @@ -129,4 +129,7 @@ public class WarehouseDTO extends BaseVOEntity{ @ApiModelProperty("仓库id 集合") private List warehouseIds; -} + @ApiModelProperty("是否启用: 1-否 2-是") + @Excel(name = "是否启用: 1-否 2-是") + private Integer isEnable; +} \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/associationWarehouse/AssociationWarehouseApi.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/associationWarehouse/AssociationWarehouseApi.java index a37c2e795..e3616e2dd 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/associationWarehouse/AssociationWarehouseApi.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/associationWarehouse/AssociationWarehouseApi.java @@ -40,19 +40,19 @@ public class AssociationWarehouseApi extends BaseController{ private AssociationWarehouseAssembler associationWarehouseAssembler; /** - * 分页查询关联仓库列表 + * 分页查询关联仓库列表。按组织+仓库(warehouseId)查该仓全部绑定时,默认不返回 is_default=2(默认仓)关联行;需要含该条时传 excludeDefaultWarehouse=false。 */ - @ApiOperation("查询关联仓库列表") + @ApiOperation("查询关联仓库列表(按仓查绑定时默认不含 is_default=2)") @GetMapping("/list") public AjaxResult list(AssociationWarehouseDTO associationWarehouseDTO) { - //转换实体 + //转换实体(组织数据权限在 AssociationWarehouseApplicationService 与其它模块对齐) AssociationWarehouseDO associationWarehouseDO = associationWarehouseAssembler.toDO(associationWarehouseDTO); List list = associationWarehouseApplicationService.queryList(associationWarehouseDO); return AjaxResult.success(list); } - @ApiOperation("查询仓库关联的用户集合") + @ApiOperation("查询仓库关联的用户 id 集合(按仓查时默认不含仅 is_default=2 的绑定)") @GetMapping("/queryListCorrelationId") public AjaxResult listUser(AssociationWarehouseDTO associationWarehouseDTO) { diff --git a/mhd-modules/mhd-system/src/main/resources/mapper/basic/associationWarehouse/AssociationWarehouseMapper.xml b/mhd-modules/mhd-system/src/main/resources/mapper/basic/associationWarehouse/AssociationWarehouseMapper.xml index 4ad59cf7a..cd2d13642 100644 --- a/mhd-modules/mhd-system/src/main/resources/mapper/basic/associationWarehouse/AssociationWarehouseMapper.xml +++ b/mhd-modules/mhd-system/src/main/resources/mapper/basic/associationWarehouse/AssociationWarehouseMapper.xml @@ -10,6 +10,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -25,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.association_warehouse_id, a.organization_id, a.organization_name, a.top_organization_id, - a.correlation_id, a.warehouse_id, a.warehouse_code, a.warehouse_name, a.create_time, + a.correlation_id, a.is_default, a.warehouse_id, a.warehouse_code, a.warehouse_name, a.create_time, a.create_by, a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag @@ -42,9 +43,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and a.correlation_id = #{correlationId} + + and a.is_default = #{isDefault} + and a.warehouse_id = #{warehouseId} + + and (a.is_default is null or a.is_default <> 2) + and a.warehouse_code = #{warehouseCode} diff --git a/mhd-modules/mhd-system/src/main/resources/mapper/basic/warehouse/WarehouseMapper.xml b/mhd-modules/mhd-system/src/main/resources/mapper/basic/warehouse/WarehouseMapper.xml index 586d81b9d..57a1d2ef0 100644 --- a/mhd-modules/mhd-system/src/main/resources/mapper/basic/warehouse/WarehouseMapper.xml +++ b/mhd-modules/mhd-system/src/main/resources/mapper/basic/warehouse/WarehouseMapper.xml @@ -36,11 +36,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - select warehouse_id, organization_id, organization_name, top_organization_id, warehouse_code, warehouse_name, warehouse_type, warehouse_type_name, warehouse_structure, warehouse_nature, warm_layer_code, warm_layer_name, director_name, director_phone, region_code, region_name, detail_address, longitude, latitude, building_region, usage_region, remark, opening_up, nullify, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from warehouse + select warehouse_id, organization_id, organization_name, top_organization_id, warehouse_code, warehouse_name, warehouse_type, warehouse_type_name, warehouse_structure, warehouse_nature, warm_layer_code, warm_layer_name, director_name, director_phone, region_code, region_name, detail_address, longitude, latitude, building_region, usage_region, remark, opening_up, nullify, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag, IS_ENABLE from warehouse diff --git a/mhd-user-center/src/main/resources/bootstrap.yml b/mhd-user-center/src/main/resources/bootstrap.yml index 90cf188c9..ca12007b7 100644 --- a/mhd-user-center/src/main/resources/bootstrap.yml +++ b/mhd-user-center/src/main/resources/bootstrap.yml @@ -20,17 +20,17 @@ spring: discovery: # server-addr: 127.0.0.1:8848 # 线上测试环境配置 容器名+端口号 - server-addr: 10.33.0.129:6010 -# server-addr: 10.102.192.5:6848 -# username: nacos -# password: manhuoda@2023 +# server-addr: 10.33.0.129:6010 + server-addr: 10.102.192.5:6848 + username: nacos + password: manhuoda@2023 config: # server-addr: 127.0.0.1:8848 # 线上测试环境配置 容器名+端口号 - server-addr: 10.33.0.129:6010 -# server-addr: 10.102.192.5:6848 -# username: nacos -# password: manhuoda@2023 +# server-addr: 10.33.0.129:6010 + server-addr: 10.102.192.5:6848 + username: nacos + password: manhuoda@2023 group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置 file-extension: yml #默认properties # 共享配置 diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java index 281a79092..1891fcb5f 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java @@ -451,6 +451,7 @@ public class ReservationStockInOrderDomainService { ReservationStockInOrder byId = stockInOrderService.getById(inOrderId); StockInOrder stockInOrder = new StockInOrder(); BeanUtils.copyProperties(byId, stockInOrder,"inOrderId"); + stockInOrder.setOmsStockInOrderId(String.valueOf(byId.getInOrderId())); wmsServiceFeign.omsInOrderAdd(stockInOrder); String inOrderNumber = stockInOrder.getInOrderNumber(); List materialDetailList = materialDetailService.list(new QueryWrapper().lambda().eq(ReservationInMaterialDetail::getInOrderNumber, inOrderNumber)); @@ -458,6 +459,7 @@ public class ReservationStockInOrderDomainService { for (ReservationInMaterialDetail reservationInMaterialDetail : materialDetailList) { InMaterialDetail inMaterialDetail = new InMaterialDetail(); BeanUtils.copyProperties(reservationInMaterialDetail, inMaterialDetail,"materialDetailId"); + inMaterialDetail.setOmsInMaterialDetail(String.valueOf(reservationInMaterialDetail.getMaterialDetailId())); inMaterialDetailList.add(inMaterialDetail); } wmsServiceFeign.omsInOrderAddDetail(inMaterialDetailList); diff --git a/mhd_oms/src/main/resources/bootstrap.yml b/mhd_oms/src/main/resources/bootstrap.yml index d1078b7b2..721ea37d6 100644 --- a/mhd_oms/src/main/resources/bootstrap.yml +++ b/mhd_oms/src/main/resources/bootstrap.yml @@ -18,17 +18,17 @@ spring: discovery: # server-addr: 127.0.0.1:8848 # 线上测试环境配置 容器名+端口号 - server-addr: 10.33.0.129:6010 - # server-addr: 10.102.192.5:6848 - # username: nacos - # password: manhuoda@2023 +# server-addr: 10.33.0.129:6010 + server-addr: 10.102.192.5:6848 + username: nacos + password: manhuoda@2023 config: # server-addr: 127.0.0.1:8848 # 线上测试环境配置 容器名+端口号 - server-addr: 10.33.0.129:6010 - # server-addr: 10.102.192.5:6848 - # username: nacos - # password: manhuoda@2023 +# server-addr: 10.33.0.129:6010 + server-addr: 10.102.192.5:6848 + username: nacos + password: manhuoda@2023 #线上正式环境 # server-addr: 10.102.192.105:6848 # 锁定server端的配置文件(读取它的配置项) diff --git a/mhd_product/src/main/resources/bootstrap.yml b/mhd_product/src/main/resources/bootstrap.yml index a6edc6d14..af8ac0130 100644 --- a/mhd_product/src/main/resources/bootstrap.yml +++ b/mhd_product/src/main/resources/bootstrap.yml @@ -19,20 +19,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.33.0.129:6010 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.33.0.129:6010 group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置 diff --git a/mhd_wms/sql/pdaSql.sql b/mhd_wms/sql/pdaSql.sql index 78646ff15..605b8cf75 100644 --- a/mhd_wms/sql/pdaSql.sql +++ b/mhd_wms/sql/pdaSql.sql @@ -33,4 +33,13 @@ ALTER TABLE RECEIPT_MATERIAL_DETAIL ADD COPY_DETAILS VARCHAR; ALTER TABLE SHELF_MATERIAL_DETAIL ADD PALLET_NUMBER VARCHAR; ALTER TABLE SHELF_MATERIAL_DETAIL ADD COPY_BATCH VARCHAR; ALTER TABLE SHELF_MATERIAL_DETAIL ADD COPY_QUANTITY VARCHAR; -ALTER TABLE SHELF_MATERIAL_DETAIL ADD COPY_DETAILS VARCHAR; \ No newline at end of file +ALTER TABLE SHELF_MATERIAL_DETAIL ADD COPY_DETAILS VARCHAR; + + +ALTER TABLE NGWL_TEST_WMS.IN_MATERIAL_DETAIL ADD OMS_IN_MATERIAL_DETAIL varchar(100) NULL; +ALTER TABLE NGWL_TEST_WMS.STOCK_IN_ORDER ADD OMS_STOCK_IN_ORDER_ID varchar(100) NULL; +ALTER TABLE NGWL_TEST_WMS.RECEIPT_MATERIAL_DETAIL ADD oms_in_material_detail varchar(100) NULL; +ALTER TABLE NGWL_TEST_WMS.SHELF_MATERIAL_DETAIL ADD OMS_IN_MATERIAL_DETAIL varchar(100) NULL; + +ALTER TABLE NGWL_TEST_OMS.RESERVATION_IN_MATERIAL_DETAIL ADD INBOUND_ITEMS varchar(100) NULL; + diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java index 4d9b6a9eb..d243ce1a2 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java @@ -237,6 +237,8 @@ public class StockOutTaskOrderApplicationService { returnTaskPickingMaterialDetailDO.setTotalGrossWeight(taskPickingMaterialDetailDO.getTotalGrossWeight()); returnTaskPickingMaterialDetailDO.setTotalVolume(taskPickingMaterialDetailDO.getTotalVolume()); returnTaskPickingMaterialDetailDO.setTotalArea(taskPickingMaterialDetailDO.getTotalArea()); + // 抄码拣货:PDA 提交的抄码 id 需透传,assembleParam 从 DB 重建 DO 时否则会丢失 + returnTaskPickingMaterialDetailDO.setPickedCopyCodeReferenceIds(taskPickingMaterialDetailDO.getPickedCopyCodeReferenceIds()); //是否开启了序列号管理 if (taskPickingMaterialDetailPO.getSerialNumberManage() == 1){ if (CollectionUtils.isEmpty(taskPickingMaterialDetailDO.getMaterialDetailSerialNumberList())){ diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/copyCodeReference/repository/po/CopyCodeReferencePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/copyCodeReference/repository/po/CopyCodeReferencePO.java index d595faffb..191a402b3 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/copyCodeReference/repository/po/CopyCodeReferencePO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/copyCodeReference/repository/po/CopyCodeReferencePO.java @@ -15,8 +15,8 @@ public class CopyCodeReferencePO extends BaseVOEntity { private static final long serialVersionUID = 1L; - @ApiModelProperty("id") - private Integer id; + @ApiModelProperty("抄码对照主键 id(PDA 提交 pickedCopyCodeReferenceIds 用)") + private Long id; @ApiModelProperty("序号") private Integer serialNumber; diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/copyCodeReference/repository/todo/CopyCodeReferenceDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/copyCodeReference/repository/todo/CopyCodeReferenceDO.java index 46447e17e..3c7d3c417 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/copyCodeReference/repository/todo/CopyCodeReferenceDO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/copyCodeReference/repository/todo/CopyCodeReferenceDO.java @@ -10,6 +10,9 @@ import lombok.Data; public class CopyCodeReferenceDO extends BaseVOEntity { private static final long serialVersionUID = 1L; + @ApiModelProperty("ID") + private Long id; + @ApiModelProperty("货主ID") private Long shipperId; diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/entity/InMaterialDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/entity/InMaterialDetail.java index 4cac84fa0..9e7bde3dc 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/entity/InMaterialDetail.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/entity/InMaterialDetail.java @@ -364,4 +364,8 @@ public class InMaterialDetail extends BaseVOEntity { @ApiModelProperty("lot编号") @Excel(name = "lot编号") private String lotNo; + + @ApiModelProperty("oms入库单详情id") + @Excel(name = "oms入库单详情id") + private String omsInMaterialDetail; } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/po/InMaterialDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/po/InMaterialDetailPO.java index 91f297829..6c4666f04 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/po/InMaterialDetailPO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/po/InMaterialDetailPO.java @@ -410,4 +410,7 @@ public class InMaterialDetailPO extends StockInOrderBasePO { @Excel(name = "lot编号") private String lotNo; + @ApiModelProperty("oms入库单详情id") + @Excel(name = "oms入库单详情id") + private String omsInMaterialDetail; } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/todo/InMaterialDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/todo/InMaterialDetailDO.java index 67f4b05d9..9fc066738 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/todo/InMaterialDetailDO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/todo/InMaterialDetailDO.java @@ -372,4 +372,8 @@ public class InMaterialDetailDO extends StockInOrderBaseDO { @ApiModelProperty("lot编号") @Excel(name = "lot编号") private String lotNo; + + @ApiModelProperty("oms入库单详情id") + @Excel(name = "oms入库单详情id") + private String omsInMaterialDetail; } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/persistence/PickingMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/persistence/PickingMaterialDetailImpl.java index cfa917231..324dd000e 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/persistence/PickingMaterialDetailImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/persistence/PickingMaterialDetailImpl.java @@ -1,11 +1,13 @@ package com.mhd.wms.domain.pickingMaterialDetail.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.core.exception.ServiceException; import com.mhd.common.security.utils.SecurityUtils; import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.copyCodeReference.service.CopyCodeReferenceDomainService; import com.mhd.wms.domain.copyCodeReference.entity.CopyCodeReference; import com.mhd.wms.domain.copyCodeReference.repository.facade.ICopyCodeReferenceService; import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailMapper; @@ -339,6 +341,36 @@ public class PickingMaterialDetailImpl extends ServiceImpl pmdList = pickingMaterialDetailDOByUpdate.getPickingMaterialDetailList(); + if (!CollectionUtils.isEmpty(pmdList)) { + List uniqueIds = pmdList.stream() + .map(PickingMaterialDetailDO::getUniqueId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + if (!uniqueIds.isEmpty()) { + List rows = list(new LambdaQueryWrapper() + .in(PickingMaterialDetail::getUniqueId, uniqueIds) + .eq(PickingMaterialDetail::getDelFlag, 1)); + // HashMap.merge 不允许 value 为 null;picked_copy_code_reference_ids 未拣过时可能为 null + Map pickedInDb = rows.stream() + .filter(r -> r.getUniqueId() != null) + .collect(Collectors.toMap( + PickingMaterialDetail::getUniqueId, + r -> Objects.toString(r.getPickedCopyCodeReferenceIds(), ""), + (a, b) -> a)); + for (PickingMaterialDetailDO item : pmdList) { + if (item.getUniqueId() == null) { + continue; + } + String dbCsv = pickedInDb.get(item.getUniqueId()); + String merged = CopyCodeReferenceDomainService.mergeCommaSeparatedUniqueIds( + dbCsv, item.getPickedCopyCodeReferenceIds()); + item.setPickedCopyCodeReferenceIds(merged); + } + } + } int count = pickingMaterialDetailMapper.addQuantity(pickingMaterialDetailDOByUpdate); if (count == 0){ throw new ServiceException("更新拣货单拣货数量失败"); diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/po/ReceiptMaterialDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/po/ReceiptMaterialDetailPO.java index 7dc56499c..d0404036c 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/po/ReceiptMaterialDetailPO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/po/ReceiptMaterialDetailPO.java @@ -359,4 +359,8 @@ public class ReceiptMaterialDetailPO extends BaseVOEntity { @ApiModelProperty("是否抄码: 1-是 2-否") @Excel(name = "是否抄码: 1-是 2-否") private Integer copyCode; + + @ApiModelProperty("oms入库单详情id") + @Excel(name = "oms入库单详情id") + private String omsInMaterialDetail; } diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/todo/ReceiptMaterialDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/todo/ReceiptMaterialDetailDO.java index 94c1a2dfb..9ed048d74 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/todo/ReceiptMaterialDetailDO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/todo/ReceiptMaterialDetailDO.java @@ -354,4 +354,8 @@ public class ReceiptMaterialDetailDO extends BaseVOEntity { @ApiModelProperty("是否抄码:1-是 2-否(与物料主数据同源,PDA/PC 透传)") private Integer copyCode; + + @ApiModelProperty("oms入库单详情id") + @Excel(name = "oms入库单详情id") + private String omsInMaterialDetail; } diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/persistence/ShelfMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/persistence/ShelfMaterialDetailImpl.java index 35aa716e3..bb559b75a 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/persistence/ShelfMaterialDetailImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/persistence/ShelfMaterialDetailImpl.java @@ -19,6 +19,8 @@ import com.mhd.wms.domain.shelfMaterialDetail.repository.facade.IShelfMaterialDe import com.mhd.wms.domain.shelfMaterialDetail.repository.mapper.ShelfMaterialDetailMapper; import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO; import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO; +import com.mhd.wms.domain.stockInOrder.repository.facade.IStockInOrderService; +import com.mhd.wms.domain.stockShelfOrder.repository.facade.IStockShelfOrderService; import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO; import com.mhd.common.core.utils.StringUtils; import com.mhd.system.api.domain.BatchDetailFeignPO; @@ -395,6 +397,8 @@ public class ShelfMaterialDetailImpl extends ServiceImpl materialDetailSerialNumberList = new ArrayList<>(); for (ShelfMaterialDetailDO shelfMaterialDetailDO : shelfMaterialDetailDOList){ + //更新oms入库单信息 + OMSWarehouseEntryDetails(shelfMaterialDetailDO); //序列号 if (shelfMaterialDetailDO.getSerialNumberManage() == 1) { if (CollectionUtils.isEmpty(shelfMaterialDetailDO.getMaterialDetailSerialNumberList())) { @@ -413,6 +417,7 @@ public class ShelfMaterialDetailImpl extends ServiceImpl public void updateOmsOrder(String orderNumber, Integer status, Integer shelvesQuantity); + + public void updateOmsDocument(BigDecimal shelvesQuantity, BigDecimal totalNetWeight, String omsInMaterialDetail); } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/mapper/StockShelfOrderMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/mapper/StockShelfOrderMapper.java index 9a806b935..55f889658 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/mapper/StockShelfOrderMapper.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/mapper/StockShelfOrderMapper.java @@ -6,6 +6,7 @@ import com.mhd.wms.domain.stockShelfOrder.repository.po.StockShelfOrderPO; import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.List; /** @@ -23,4 +24,5 @@ public interface StockShelfOrderMapper extends BaseMapper public void updateOmsOrder(@Param("orderNumber") String orderNumber, @Param("status") Integer status, @Param("shelvesQuantity") Integer shelvesQuantity); + void updateOmsDocument(BigDecimal shelvesQuantity, BigDecimal totalNetWeight, String omsInMaterialDetail); } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/persistence/StockShelfOrderImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/persistence/StockShelfOrderImpl.java index 42dec94df..14f4b1e76 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/persistence/StockShelfOrderImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/persistence/StockShelfOrderImpl.java @@ -18,6 +18,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -112,6 +113,11 @@ public class StockShelfOrderImpl extends ServiceImpl taskPickingMaterialDetailList = new ArrayList<>(); - stockOutTaskOrderDTO.getTaskStorageList().forEach(taskStorageDTO -> { - taskStorageDTO.getTaskPickingMaterialDetailList().forEach(taskPickingMaterialDetailDTO -> { - TaskPickingMaterialDetailDO taskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO(); - BeanUtils.copyProperties(taskPickingMaterialDetailDTO, taskPickingMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(taskPickingMaterialDetailDTO)); - taskPickingMaterialDetailList.add(taskPickingMaterialDetailDO); - }); - }); - stockOutTaskOrderDO.setTaskPickingMaterialDetailList(taskPickingMaterialDetailList); + stockOutTaskOrderDO.setTaskPickingMaterialDetailList(collectTaskPickingMaterialDetailDOList(stockOutTaskOrderDTO)); return stockOutTaskOrderDO; } + private List collectTaskPickingMaterialDetailDOList(StockOutTaskOrderDTO dto) { + List out = new ArrayList<>(); + if (!CollectionUtils.isEmpty(dto.getTaskStorageList())) { + for (TaskStorageDTO taskStorage : dto.getTaskStorageList()) { + if (taskStorage == null || CollectionUtils.isEmpty(taskStorage.getTaskPickingMaterialDetailList())) { + continue; + } + for (TaskPickingMaterialDetailDTO row : taskStorage.getTaskPickingMaterialDetailList()) { + out.add(toTaskPickingMaterialDetailDO(row)); + } + } + } + if (!CollectionUtils.isEmpty(dto.getTaskMaterialList())) { + for (TaskMaterialDTO taskMaterial : dto.getTaskMaterialList()) { + if (taskMaterial == null || CollectionUtils.isEmpty(taskMaterial.getTaskPickingMaterialDetailList())) { + continue; + } + for (TaskPickingMaterialDetailDTO row : taskMaterial.getTaskPickingMaterialDetailList()) { + out.add(toTaskPickingMaterialDetailDO(row)); + } + } + } + return out; + } + + private static TaskPickingMaterialDetailDO toTaskPickingMaterialDetailDO(TaskPickingMaterialDetailDTO taskPickingMaterialDetailDTO) { + TaskPickingMaterialDetailDO taskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO(); + BeanUtils.copyProperties(taskPickingMaterialDetailDTO, taskPickingMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(taskPickingMaterialDetailDTO)); + applyPickedCopyCodeReferenceIds(taskPickingMaterialDetailDTO, taskPickingMaterialDetailDO); + return taskPickingMaterialDetailDO; + } + /** - * 按物料拣货 转换实体 + * 保证抄码 id 进入 DO:显式覆盖 BeanUtils 遗漏;未传时从 weightList[].id 拼接。 */ - public StockOutTaskOrderDO toDOPickingByMaterial(StockOutTaskOrderDTO stockOutTaskOrderDTO) { - StockOutTaskOrderDO stockOutTaskOrderDO = new StockOutTaskOrderDO(); - // 拷贝 - BeanUtils.copyProperties(stockOutTaskOrderDTO, stockOutTaskOrderDO, IgnoreNullUtil.getNullPropertyNames(stockOutTaskOrderDTO)); - List taskPickingMaterialDetailList = new ArrayList<>(); - stockOutTaskOrderDTO.getTaskMaterialList().forEach(taskMaterialDTO -> { - taskMaterialDTO.getTaskPickingMaterialDetailList().forEach(taskPickingMaterialDetailDTO -> { - TaskPickingMaterialDetailDO taskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO(); - BeanUtils.copyProperties(taskPickingMaterialDetailDTO, taskPickingMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(taskPickingMaterialDetailDTO)); - taskPickingMaterialDetailList.add(taskPickingMaterialDetailDO); - }); - }); - stockOutTaskOrderDO.setTaskPickingMaterialDetailList(taskPickingMaterialDetailList); - return stockOutTaskOrderDO; + private static void applyPickedCopyCodeReferenceIds(TaskPickingMaterialDetailDTO src, TaskPickingMaterialDetailDO dest) { + String picked = src.getPickedCopyCodeReferenceIds(); + if (!StringUtils.hasText(picked) && src.getWeightList() != null && !src.getWeightList().isEmpty()) { + picked = src.getWeightList().stream() + .filter(Objects::nonNull) + .map(m -> m.get("id")) + .filter(Objects::nonNull) + .map(Object::toString) + .collect(Collectors.joining(",")); + } + if (StringUtils.hasText(picked)) { + dest.setPickedCopyCodeReferenceIds(picked); + } } } diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/copyCodeReference/CopyCodeReferenceDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/copyCodeReference/CopyCodeReferenceDTO.java index ae59b649e..1bb18d645 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/copyCodeReference/CopyCodeReferenceDTO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/copyCodeReference/CopyCodeReferenceDTO.java @@ -12,6 +12,9 @@ import lombok.Data; public class CopyCodeReferenceDTO extends BaseVOEntity { private static final long serialVersionUID = 1L; + @ApiModelProperty("ID") + private Long id; + @ApiModelProperty("货主ID") private Long shipperId; diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/receiptMaterialDetail/ReceiptMaterialDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/receiptMaterialDetail/ReceiptMaterialDetailDTO.java index 4c8b0dce1..4b2648e4d 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/receiptMaterialDetail/ReceiptMaterialDetailDTO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/receiptMaterialDetail/ReceiptMaterialDetailDTO.java @@ -303,4 +303,8 @@ public class ReceiptMaterialDetailDTO extends BaseVOEntity { @ApiModelProperty("抄码数量克重详情:JSON 字符串,key 为序号(1,2,3…),value 为单件净重KG(支持小数)。例:{\"1\":1.343,\"2\":1.343};上架完成后写入 copy_code_reference") @Excel(name = "抄码数量克重详情") private String copyDetails; + + @ApiModelProperty("oms入库单详情id") + @Excel(name = "oms入库单详情id") + private String omsInMaterialDetail; } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/shelfMaterialDetail/ShelfMaterialDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/shelfMaterialDetail/ShelfMaterialDetailDTO.java index b81213b23..9279e80cb 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/shelfMaterialDetail/ShelfMaterialDetailDTO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/shelfMaterialDetail/ShelfMaterialDetailDTO.java @@ -346,4 +346,8 @@ public class ShelfMaterialDetailDTO extends BaseVOEntity { @ApiModelProperty("抄码批次号") @Excel(name = "抄码批次号") private String copyBatch; + + @ApiModelProperty("oms入库单详情id") + @Excel(name = "oms入库单详情id") + private String omsInMaterialDetail; } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInOrder/StockInOrderDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInOrder/StockInOrderDTO.java index 821b7aa27..bd07f9946 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInOrder/StockInOrderDTO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInOrder/StockInOrderDTO.java @@ -388,4 +388,8 @@ public class StockInOrderDTO extends StockInOrderBaseDTO { private String salesmanId; @ApiModelProperty("业务员名称") private String salesmanName; + + @ApiModelProperty("oms入库单id") + @Excel(name = "oms入库单id") + private String omsStockInOrderId; } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockReceiptOrder/StockReceiptOrderDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockReceiptOrder/StockReceiptOrderDTO.java index 47c50905d..73c390d8f 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockReceiptOrder/StockReceiptOrderDTO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockReceiptOrder/StockReceiptOrderDTO.java @@ -159,4 +159,8 @@ public class StockReceiptOrderDTO extends StockInOrderBaseDTO { @ApiModelProperty(name = "费用参数json") private String billingJson; + + @ApiModelProperty("oms入库单id") + @Excel(name = "oms入库单id") + private String omsStockInOrderId; } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskPickingMaterialDetail/TaskPickingMaterialDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskPickingMaterialDetail/TaskPickingMaterialDetailDTO.java index 1188578e0..2db64f71c 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskPickingMaterialDetail/TaskPickingMaterialDetailDTO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskPickingMaterialDetail/TaskPickingMaterialDetailDTO.java @@ -1,6 +1,7 @@ package com.mhd.wms.interfaces.dto.taskPickingMaterialDetail; +import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.mhd.common.core.annotation.Excel; @@ -12,6 +13,7 @@ import lombok.Data; import java.math.BigDecimal; import java.util.List; +import java.util.Map; /** * 拣货作业单物料明细对象 task_picking_material_detail @@ -229,4 +231,14 @@ public class TaskPickingMaterialDetailDTO extends BaseVOEntity { @ApiModelProperty("总面积(SQM)") private BigDecimal totalArea; + + @JsonAlias({"picked_copy_code_reference_ids"}) + @ApiModelProperty("本次已拣抄码对照id(逗号分隔,抄码拣货提交必填,对应拣货单明细 picked_copy_code_reference_ids)") + private String pickedCopyCodeReferenceIds; + + /** + * 与 getInfoByMaterial 回显结构一致;若未传 pickedCopyCodeReferenceIds,服务端可从每项 id 拼成逗号串。 + */ + @ApiModelProperty("抄码待拣/已选列表(可选,用于从 id 推导 pickedCopyCodeReferenceIds)") + private List> weightList; } diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/copyCodeReference/CopyCodeReferenceApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/copyCodeReference/CopyCodeReferenceApi.java index 8980bf6b4..caa42525d 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/copyCodeReference/CopyCodeReferenceApi.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/copyCodeReference/CopyCodeReferenceApi.java @@ -47,4 +47,5 @@ public class CopyCodeReferenceApi extends BaseController { } + } diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutTaskOrder/stockOutTaskOrderAppApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutTaskOrder/stockOutTaskOrderAppApi.java index 9e9eb0985..fdd9a7574 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutTaskOrder/stockOutTaskOrderAppApi.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutTaskOrder/stockOutTaskOrderAppApi.java @@ -63,9 +63,7 @@ public class stockOutTaskOrderAppApi extends BaseController { @PostMapping("/pickingByStorageLocation") public AjaxResult pickingByStorageLocation(@RequestBody StockOutTaskOrderDTO stockOutTaskOrderDTO) { - //转换实体 - StockOutTaskOrderDO stockOutTaskOrderDO = stockOutTaskOrderAssembler.toDOPickingByStorageLocation(stockOutTaskOrderDTO); - //拆成最小颗粒 + StockOutTaskOrderDO stockOutTaskOrderDO = stockOutTaskOrderAssembler.toDOPicking(stockOutTaskOrderDTO); return AjaxResult.success(stockOutTaskOrderApplicationService.pickingByMaterial(stockOutTaskOrderDO)); } @@ -86,9 +84,7 @@ public class stockOutTaskOrderAppApi extends BaseController { @PostMapping("/pickingByMaterial") public AjaxResult pickingByMaterial(@RequestBody StockOutTaskOrderDTO stockOutTaskOrderDTO) { - //转换实体 - StockOutTaskOrderDO stockOutTaskOrderDO = stockOutTaskOrderAssembler.toDOPickingByMaterial(stockOutTaskOrderDTO); - //拆成最小颗粒 + StockOutTaskOrderDO stockOutTaskOrderDO = stockOutTaskOrderAssembler.toDOPicking(stockOutTaskOrderDTO); return AjaxResult.success(stockOutTaskOrderApplicationService.pickingByMaterial(stockOutTaskOrderDO)); } diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockReceiptOrder/StockReceiptOrderAppApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockReceiptOrder/StockReceiptOrderAppApi.java index c3de72056..eb3951d06 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockReceiptOrder/StockReceiptOrderAppApi.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockReceiptOrder/StockReceiptOrderAppApi.java @@ -5,6 +5,9 @@ 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.system.api.model.LoginUser; import com.mhd.wms.application.service.stockReceiptOrder.StockReceiptOrderApplicationService; import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO; import com.mhd.wms.domain.stockReceiptOrder.repository.po.StockReceiptOrderPO; @@ -54,7 +57,14 @@ public class StockReceiptOrderAppApi extends BaseController { //转换实体 StockReceiptOrderDO stockReceiptOrderDO = stockReceiptOrderAssembler.toDO(stockReceiptOrderDTO); startPage(); - stockReceiptOrderDO.setOperatorsBy(SecurityUtils.getLoginUser().getUserPo().getUserId()); + LoginUser loginUser = SecurityUtils.getLoginUser(); + stockReceiptOrderDO.setOperatorsBy(loginUser.getUserPo().getUserId()); + // 与 PDA 出库复核列表一致:按当前用户关联仓库过滤(见 StockOutOrderAppApi#list) + AssociationWarehouseCacheDO associationWarehouseCacheDO = + SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + if (associationWarehouseCacheDO != null) { + stockReceiptOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } List list = stockReceiptOrderApplicationService.queryList(stockReceiptOrderDO); return getDataTableApi(list); } diff --git a/mhd_wms/src/main/resources/bootstrap.yml b/mhd_wms/src/main/resources/bootstrap.yml index 51545071f..0f3f546c5 100644 --- a/mhd_wms/src/main/resources/bootstrap.yml +++ b/mhd_wms/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 # 配置文件格式 diff --git a/mhd_wms/src/main/resources/mapper/copyCodeReference/CopyCodeReferenceMapper.xml b/mhd_wms/src/main/resources/mapper/copyCodeReference/CopyCodeReferenceMapper.xml index 975d48610..1cc5b163b 100644 --- a/mhd_wms/src/main/resources/mapper/copyCodeReference/CopyCodeReferenceMapper.xml +++ b/mhd_wms/src/main/resources/mapper/copyCodeReference/CopyCodeReferenceMapper.xml @@ -96,6 +96,9 @@ AND batch_number = #{batchNumber} + + AND id = #{id} + diff --git a/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml index 947d321de..c3afd64e1 100644 --- a/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml +++ b/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml @@ -114,7 +114,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.SPECIFICATION_MODEL, a.SKU_CODE, a.INVOICE_NO, a.LITER, a.DIMENSIONS, a.DECLARATION_UNIT, a.BATCH_REF_NO, a.SHEET_REF_NO, a.ORIGIN_COUNTRY, a.BOX_PALLET_NO, a.CURRENCY, a.UNIT, a.DECLARED_QUANTITY, a.BOX_COUNT, a.PIECE_COUNT, a.INBOUND_QUANTITY, a.TOTAL_NET_WEIGHT, a.TOTAL_GROSS_WEIGHT, a.TOTAL_VOLUME, a.TOTAL_AREA, a.TOTAL_PRICE, - a.PRODUCTION_DATE, a.EXPIRY_DATE, a.INVENTORY_DATE, a.EXT_ATTR_1, a.EXT_ATTR_2, a.EXT_ATTR_3, a.EXT_ATTR_4 + a.PRODUCTION_DATE, a.EXPIRY_DATE, a.INVENTORY_DATE, a.EXT_ATTR_1, a.EXT_ATTR_2, a.EXT_ATTR_3, a.EXT_ATTR_4, + a.OMS_IN_MATERIAL_DETAIL ,CASE WHEN (a.quantity - a.receipt_quantity) < 0 THEN 0 ELSE (a.quantity - a.receipt_quantity) diff --git a/mhd_wms/src/main/resources/mapper/receiptMaterialDetail/ReceiptMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/receiptMaterialDetail/ReceiptMaterialDetailMapper.xml index c66d39a69..b80f63648 100644 --- a/mhd_wms/src/main/resources/mapper/receiptMaterialDetail/ReceiptMaterialDetailMapper.xml +++ b/mhd_wms/src/main/resources/mapper/receiptMaterialDetail/ReceiptMaterialDetailMapper.xml @@ -88,6 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -119,7 +120,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ifnull(a.EXT_ATTR_1, b.EXT_ATTR_1) EXT_ATTR_1, ifnull(a.EXT_ATTR_2, b.EXT_ATTR_2) EXT_ATTR_2, ifnull(a.EXT_ATTR_3, b.EXT_ATTR_3) EXT_ATTR_3, - ifnull(a.EXT_ATTR_4, b.EXT_ATTR_4) EXT_ATTR_4 + ifnull(a.EXT_ATTR_4, b.EXT_ATTR_4) EXT_ATTR_4, + a.OMS_IN_MATERIAL_DETAIL from RECEIPT_MATERIAL_DETAIL a LEFT JOIN IN_MATERIAL_DETAIL b ON a.IN_UNIQUE_ID = b.UNIQUE_ID AND b.DEL_FLAG = 1 LEFT JOIN MATERIAL_BASE_INFO c ON a.MATERIAL_BASE_INFO_ID = c.MATERIAL_BASE_INFO_ID AND c.DEL_FLAG = 1 diff --git a/mhd_wms/src/main/resources/mapper/shelfMaterialDetail/ShelfMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/shelfMaterialDetail/ShelfMaterialDetailMapper.xml index d030be25e..e641df613 100644 --- a/mhd_wms/src/main/resources/mapper/shelfMaterialDetail/ShelfMaterialDetailMapper.xml +++ b/mhd_wms/src/main/resources/mapper/shelfMaterialDetail/ShelfMaterialDetailMapper.xml @@ -76,11 +76,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - select material_detail_id, organization_id, organization_name, top_organization_id, unique_id, shelf_order_number, material_base_info_id, material_code, material_name, bar_code, dimensions, quantity, already_shelves_quantity, shelves_quantity, shelves_status, pack_id, pack_code, pack_name, + select material_detail_id, organization_id, organization_name, top_organization_id, unique_id, shelf_order_number, material_base_info_id, material_code, material_name, bar_code, dimensions, quantity, already_shelves_quantity, shelves_quantity, shelves_status, pack_id, pack_code, pack_name, OMS_IN_MATERIAL_DETAIL, CASE WHEN pack_detail_id IS NULL OR TRIM(pack_detail_id) = '' THEN NULL ELSE CAST(pack_detail_id AS BIGINT) diff --git a/mhd_wms/src/main/resources/mapper/stockInOrder/StockInOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockInOrder/StockInOrderMapper.xml index fb84d202d..b0de5b893 100644 --- a/mhd_wms/src/main/resources/mapper/stockInOrder/StockInOrderMapper.xml +++ b/mhd_wms/src/main/resources/mapper/stockInOrder/StockInOrderMapper.xml @@ -94,6 +94,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -127,7 +128,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a."TO", a.CONTACT_PERSON, a.VEHICLE_INFO, a.CONSIGNMENT_NO, a.TEL, a.DRIVER_SIGNATURE, a.FAX, a.DECLARATION_AREA, a.MANUFACTURER, a.CUSTOMS_BROKER_INFO, a.DELIVERY_ADDRESS, a.ENTRY_EXIT_CUSTOMS, a.ORIGIN_DESTINATION_COUNTRY, a.CARRIER, a.CONTAINER_NO, a.TRANSPORT_METHOD, a.SUPERVISION_METHOD, a.CUSTOMS_INSPECTION, a.NEED_CUSTOMS_DECLARATION, a.NEED_TRANSPORT, - a.WAREHOUSE_DATE, a.COMPLETION_TIME, a.ORDER_DATE + a.WAREHOUSE_DATE, a.COMPLETION_TIME, a.ORDER_DATE,a.stock_in_order diff --git a/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml index 4e8020c03..62e3389ad 100644 --- a/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml +++ b/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml @@ -128,4 +128,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update "NGWL_TEST_OMS".RESERVATION_STOCK_IN_ORDER set ISSUE_STATUS = #{status},quantity = #{shelvesQuantity},STORAGE_TIME = CURRENT_TIMESTAMP where IN_ORDER_NUMBER = #{orderNumber} + + update "NGWL_TEST_OMS".RESERVATION_IN_MATERIAL_DETAIL set INBOUND_ITEMS = #{shelvesQuantity}, TOTAL_NET_WEIGHT= #{totalNetWeight},STORAGE_TIME = CURRENT_TIMESTAMP where MATERIAL_DETAIL_ID = #{omsInMaterialDetail} + \ No newline at end of file diff --git a/sql/wkx20260403.sql b/sql/wkx20260403.sql index 37665075e..5d3bbb7fe 100644 --- a/sql/wkx20260403.sql +++ b/sql/wkx20260403.sql @@ -132,4 +132,9 @@ COMMENT ON COLUMN "NGWL_TEST_WMS"."RECEIPT_ORDER_ACCOUNT"."AMOUNT_JSON" IS '计 -- ---------------------------- -- Primary Key structure for table RECEIPT_ORDER_ACCOUNT -- ---------------------------- -ALTER TABLE "NGWL_TEST_WMS"."RECEIPT_ORDER_ACCOUNT" ADD PRIMARY KEY ("ID"); \ No newline at end of file +ALTER TABLE "NGWL_TEST_WMS"."RECEIPT_ORDER_ACCOUNT" ADD PRIMARY KEY ("ID"); + + +ALTER TABLE "NGWL_TEST_SYSTEM"."WAREHOUSE" ADD COLUMN "IS_ENABLE" TINYINT; + +COMMENT ON COLUMN "NGWL_TEST_SYSTEM"."WAREHOUSE"."IS_ENABLE" IS '是否启用' \ No newline at end of file