Merge branch 'dev_WMS20260401' into dev
This commit is contained in:
@@ -364,4 +364,8 @@ public class InMaterialDetail extends BaseVOEntity {
|
|||||||
@ApiModelProperty("lot编号")
|
@ApiModelProperty("lot编号")
|
||||||
@Excel(name = "lot编号")
|
@Excel(name = "lot编号")
|
||||||
private String lotNo;
|
private String lotNo;
|
||||||
|
|
||||||
|
@ApiModelProperty("oms入库单详情id")
|
||||||
|
@Excel(name = "oms入库单详情id")
|
||||||
|
private String omsInMaterialDetail;
|
||||||
}
|
}
|
||||||
@@ -352,4 +352,8 @@ public class StockInOrder extends BaseVOEntity {
|
|||||||
@ApiModelProperty("订单状态")
|
@ApiModelProperty("订单状态")
|
||||||
@Excel(name = "订单状态")
|
@Excel(name = "订单状态")
|
||||||
private String orderStatus;
|
private String orderStatus;
|
||||||
|
|
||||||
|
@ApiModelProperty("oms入库单id")
|
||||||
|
@Excel(name = "oms入库单id")
|
||||||
|
private String omsStockInOrderId;
|
||||||
}
|
}
|
||||||
+93
-12
@@ -1,10 +1,11 @@
|
|||||||
package com.mhd.basic.application.service.associationWarehouse;
|
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.po.WarehousePO;
|
||||||
import com.mhd.basic.domain.warehouse.repository.todo.WarehouseDO;
|
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.common.core.enums.RoleEnum;
|
||||||
import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
|
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.po.AssociationWarehousePO;
|
||||||
import com.mhd.basic.domain.associationWarehouse.repository.todo.AssociationWarehouseDO;
|
import com.mhd.basic.domain.associationWarehouse.repository.todo.AssociationWarehouseDO;
|
||||||
import com.mhd.basic.domain.associationWarehouse.service.AssociationWarehouseDomainService;
|
import com.mhd.basic.domain.associationWarehouse.service.AssociationWarehouseDomainService;
|
||||||
@@ -16,6 +17,7 @@ import org.springframework.stereotype.Service;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -30,8 +32,76 @@ public class AssociationWarehouseApplicationService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private AssociationWarehouseDomainService associationWarehouseDomainService;
|
private AssociationWarehouseDomainService associationWarehouseDomainService;
|
||||||
@Autowired
|
@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<AssociationWarehousePO> filterExcludeDefaultWarehouse(
|
||||||
|
AssociationWarehouseDO associationWarehouseDO,
|
||||||
|
List<AssociationWarehousePO> 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<AssociationWarehousePO> queryList(AssociationWarehouseDO associationWarehouseDO) {
|
public List<AssociationWarehousePO> queryList(AssociationWarehouseDO associationWarehouseDO) {
|
||||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||||
if (loginUser.getUserPo().getRoleCode().equals(RoleEnum.SUPER_ADMIN.getCode()) || loginUser.getUserPo().getRoleCode().equals(RoleEnum.PLAT_ADMIN.getCode())){
|
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();
|
WarehouseDO warehouseDO = new WarehouseDO();
|
||||||
if (loginUser.getUserPo().getRoleCode().equals(RoleEnum.PLAT_ADMIN.getCode())){
|
warehouseDO.setOrganizationId(associationWarehouseDO.getOrganizationId());
|
||||||
warehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
warehouseDO.setTopOrganizationId(associationWarehouseDO.getTopOrganizationId());
|
||||||
}
|
warehouseDO.setWarehouseCode(associationWarehouseDO.getWarehouseCode());
|
||||||
List<WarehousePO> warehousePOList = warehouseDomainService.queryList(warehouseDO);
|
warehouseDO.setWarehouseName(associationWarehouseDO.getWarehouseName());
|
||||||
|
List<WarehousePO> warehousePOList = warehouseApplicationService.queryList(warehouseDO);
|
||||||
List<AssociationWarehousePO> associationWarehousePOList = new ArrayList<>();
|
List<AssociationWarehousePO> associationWarehousePOList = new ArrayList<>();
|
||||||
warehousePOList.forEach(warehousePO -> {
|
warehousePOList.forEach(warehousePO -> {
|
||||||
AssociationWarehousePO associationWarehousePO = new AssociationWarehousePO();
|
AssociationWarehousePO associationWarehousePO = new AssociationWarehousePO();
|
||||||
@@ -56,18 +128,27 @@ public class AssociationWarehouseApplicationService {
|
|||||||
associationWarehousePO.setTopOrganizationId(warehousePO.getTopOrganizationId());
|
associationWarehousePO.setTopOrganizationId(warehousePO.getTopOrganizationId());
|
||||||
associationWarehousePOList.add(associationWarehousePO);
|
associationWarehousePOList.add(associationWarehousePO);
|
||||||
});
|
});
|
||||||
return associationWarehousePOList;
|
return filterExcludeDefaultWarehouse(associationWarehouseDO, associationWarehousePOList);
|
||||||
}else {
|
}else {
|
||||||
associationWarehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
applyAssociationWarehouseOrgScope(associationWarehouseDO, loginUser);
|
||||||
associationWarehouseDO.setCorrelationId(loginUser.getUserid());
|
// 未指定仓库时:只查当前登录人在关联表中的记录;指定了 warehouseId 时:查该仓下全部绑定(绑定用户列表),勿收窄为当前用户
|
||||||
return associationWarehouseDomainService.queryList(associationWarehouseDO);
|
if (associationWarehouseDO.getWarehouseId() == null) {
|
||||||
|
associationWarehouseDO.setCorrelationId(loginUser.getUserid());
|
||||||
|
}
|
||||||
|
applyDefaultExcludeForWarehouseBindList(associationWarehouseDO);
|
||||||
|
return filterExcludeDefaultWarehouse(associationWarehouseDO,
|
||||||
|
associationWarehouseDomainService.queryList(associationWarehouseDO));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Long> queryListCorrelationId(AssociationWarehouseDO associationWarehouseDO) {
|
public List<Long> queryListCorrelationId(AssociationWarehouseDO associationWarehouseDO) {
|
||||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||||
associationWarehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
if (loginUser != null && loginUser.getUserPo() != null) {
|
||||||
List<AssociationWarehousePO> associationWarehousePOList = associationWarehouseDomainService.queryList(associationWarehouseDO);
|
applyAssociationWarehouseOrgScope(associationWarehouseDO, loginUser);
|
||||||
|
}
|
||||||
|
applyDefaultExcludeForWarehouseBindList(associationWarehouseDO);
|
||||||
|
List<AssociationWarehousePO> associationWarehousePOList = filterExcludeDefaultWarehouse(associationWarehouseDO,
|
||||||
|
associationWarehouseDomainService.queryList(associationWarehouseDO));
|
||||||
return associationWarehousePOList.stream()
|
return associationWarehousePOList.stream()
|
||||||
.map(AssociationWarehousePO::getCorrelationId)
|
.map(AssociationWarehousePO::getCorrelationId)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|||||||
+94
-8
@@ -2,9 +2,11 @@ package com.mhd.basic.application.service.warehouse;
|
|||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
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.entity.AssociationWarehouse;
|
||||||
import com.mhd.basic.domain.associationWarehouse.repository.facade.IAssociationWarehouseService;
|
import com.mhd.basic.domain.associationWarehouse.repository.facade.IAssociationWarehouseService;
|
||||||
import com.mhd.basic.domain.warehouse.repository.po.WarehousePO;
|
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.po.po.WarehouseLinkagePO;
|
||||||
import com.mhd.basic.domain.warehouse.repository.todo.WarehouseDO;
|
import com.mhd.basic.domain.warehouse.repository.todo.WarehouseDO;
|
||||||
import com.mhd.basic.domain.warehouse.service.WarehouseDomainService;
|
import com.mhd.basic.domain.warehouse.service.WarehouseDomainService;
|
||||||
@@ -17,9 +19,12 @@ import com.mhd.system.service.ISysDictTypeService;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import com.mhd.common.core.utils.StringUtils;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
/**
|
/**
|
||||||
@@ -46,7 +51,7 @@ public class WarehouseApplicationService {
|
|||||||
public List<WarehousePO> queryList(WarehouseDO warehouseDO) {
|
public List<WarehousePO> queryList(WarehouseDO warehouseDO) {
|
||||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||||
if (loginUser != null && loginUser.getUserPo() != null) {
|
if (loginUser != null && loginUser.getUserPo() != null) {
|
||||||
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
|
Long userOrganizationId = OrganizationQueryScope.resolveLoginOrganizationId(loginUser);
|
||||||
Long frontendOrganizationId = warehouseDO.getOrganizationId(); // 前端传递的 organizationId
|
Long frontendOrganizationId = warehouseDO.getOrganizationId(); // 前端传递的 organizationId
|
||||||
|
|
||||||
// 数据权限:根据 organizationId 来设置查询权限
|
// 数据权限:根据 organizationId 来设置查询权限
|
||||||
@@ -127,19 +132,100 @@ public class WarehouseApplicationService {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增仓库
|
* 新增仓库(写入主表后默认在 association_warehouse 绑定当前登录用户,便于按绑定关系展示)
|
||||||
*/
|
*/
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean insert(WarehouseDO warehouseDO) {
|
public Boolean insert(WarehouseDO warehouseDO) {
|
||||||
// 设置当前登录用户的组织信息
|
|
||||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||||
if (loginUser != null && loginUser.getUserPo() != null) {
|
if (loginUser != null) {
|
||||||
warehouseDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
|
Long orgId = OrganizationQueryScope.resolveLoginOrganizationId(loginUser);
|
||||||
warehouseDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
|
if (orgId != null) {
|
||||||
warehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
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);
|
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<AssociationWarehouse>().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<AssociationWarehouse>().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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+32
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
+7
-3
@@ -121,9 +121,13 @@ public class AssociationWarehouseImpl extends ServiceImpl<AssociationWarehouseMa
|
|||||||
associationWarehouse.setCreateTime(new Date());
|
associationWarehouse.setCreateTime(new Date());
|
||||||
associationWarehouseList.add(associationWarehouse);
|
associationWarehouseList.add(associationWarehouse);
|
||||||
}
|
}
|
||||||
//标记删除
|
// 先删该仓下「非默认仓」绑定,再批量插入本次提交的用户;保留 is_default=2(如新建仓自动写入的创建人默认仓),避免前端列表不展示该条却全量保存时被误删
|
||||||
remove(new QueryWrapper<AssociationWarehouse>().lambda()
|
remove(new QueryWrapper<AssociationWarehouse>().lambda()
|
||||||
.eq(AssociationWarehouse::getWarehouseId, associationWarehouseDO.getWarehouseId()));
|
.eq(AssociationWarehouse::getWarehouseId, associationWarehouseDO.getWarehouseId())
|
||||||
|
.eq(AssociationWarehouse::getDelFlag, 1)
|
||||||
|
.and(w -> w.isNull(AssociationWarehouse::getIsDefault)
|
||||||
|
.or()
|
||||||
|
.ne(AssociationWarehouse::getIsDefault, 2)));
|
||||||
}
|
}
|
||||||
return saveBatch(associationWarehouseList);
|
return saveBatch(associationWarehouseList);
|
||||||
}
|
}
|
||||||
|
|||||||
+5
@@ -69,6 +69,11 @@ public class AssociationWarehouseDO extends BaseVOEntity{
|
|||||||
@ApiModelProperty(name = "关联用户id集合")
|
@ApiModelProperty(name = "关联用户id集合")
|
||||||
private List<Long> correlationIdList;
|
private List<Long> correlationIdList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为 true 时查询排除「默认仓」关联(is_default=2),例如绑定用户列表不展示新建仓时自动生成的创建人默认关联。
|
||||||
|
*/
|
||||||
|
private Boolean excludeDefaultWarehouse;
|
||||||
|
|
||||||
@ApiModelProperty("是否批量: 1-是 2-否 ")
|
@ApiModelProperty("是否批量: 1-是 2-否 ")
|
||||||
@Excel(name = "是否批量: 1-是 2-否 ")
|
@Excel(name = "是否批量: 1-是 2-否 ")
|
||||||
private Integer isBatch;
|
private Integer isBatch;
|
||||||
|
|||||||
+5
-1
@@ -118,5 +118,9 @@ public class Warehouse extends BaseVOEntity{
|
|||||||
@Excel(name = "是否作废: 1-否 2-是")
|
@Excel(name = "是否作废: 1-否 2-是")
|
||||||
private Integer nullify;
|
private Integer nullify;
|
||||||
|
|
||||||
|
@ApiModelProperty("是否启用: 1-否 2-是")
|
||||||
|
@Excel(name = "是否启用: 1-否 2-是")
|
||||||
|
private Integer isEnable;
|
||||||
|
|
||||||
}
|
|
||||||
|
}
|
||||||
+5
-1
@@ -40,7 +40,11 @@ public class WarehouseImpl extends ServiceImpl<WarehouseMapper, Warehouse> imple
|
|||||||
public Boolean insert(WarehouseDO warehouseDO) {
|
public Boolean insert(WarehouseDO warehouseDO) {
|
||||||
Warehouse warehouse = new Warehouse();
|
Warehouse warehouse = new Warehouse();
|
||||||
BeanUtils.copyProperties(warehouseDO,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+4
-2
@@ -119,8 +119,10 @@ public class WarehousePO extends BaseVOEntity{
|
|||||||
@ApiModelProperty("是否作废: 1-否 2-是")
|
@ApiModelProperty("是否作废: 1-否 2-是")
|
||||||
@Excel(name = "是否作废: 1-否 2-是")
|
@Excel(name = "是否作废: 1-否 2-是")
|
||||||
private Integer nullify;
|
private Integer nullify;
|
||||||
|
@ApiModelProperty("是否启用: 1-否 2-是")
|
||||||
|
@Excel(name = "是否启用: 1-否 2-是")
|
||||||
|
private Integer isEnable;
|
||||||
@ApiModelProperty("库区集合")
|
@ApiModelProperty("库区集合")
|
||||||
private List<StorageSectionPO> storageSectionList;
|
private List<StorageSectionPO> storageSectionList;
|
||||||
|
|
||||||
}
|
}
|
||||||
+4
-2
@@ -122,7 +122,9 @@ public class WarehouseDO extends BaseVOEntity{
|
|||||||
|
|
||||||
@ApiModelProperty(name = "权限菜单ID")
|
@ApiModelProperty(name = "权限菜单ID")
|
||||||
private Long permissionMenuId;
|
private Long permissionMenuId;
|
||||||
|
@ApiModelProperty("是否启用: 1-否 2-是")
|
||||||
|
@Excel(name = "是否启用: 1-否 2-是")
|
||||||
|
private Integer isEnable;
|
||||||
@ApiModelProperty("仓库id 集合")
|
@ApiModelProperty("仓库id 集合")
|
||||||
private List<Long> warehouseIds;
|
private List<Long> warehouseIds;
|
||||||
}
|
}
|
||||||
+22
-5
@@ -1,10 +1,12 @@
|
|||||||
package com.mhd.basic.interfaces.assember.warehouse;
|
package com.mhd.basic.interfaces.assember.warehouse;
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
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.domain.warehouse.repository.todo.WarehouseDO;
|
||||||
import com.mhd.basic.interfaces.dto.warehouse.WarehouseDTO;
|
import com.mhd.basic.interfaces.dto.warehouse.WarehouseDTO;
|
||||||
import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException;
|
import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException;
|
||||||
import com.mhd.common.core.exception.digitalLogisticsException.UserError;
|
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.bean.BeanUtils;
|
||||||
import com.mhd.common.core.utils.IgnoreNullUtil;
|
import com.mhd.common.core.utils.IgnoreNullUtil;
|
||||||
import com.mhd.common.security.utils.SecurityUtils;
|
import com.mhd.common.security.utils.SecurityUtils;
|
||||||
@@ -63,11 +65,26 @@ public class WarehouseAssembler {
|
|||||||
warehouseDO.setCreateBy(new Long("0"));
|
warehouseDO.setCreateBy(new Long("0"));
|
||||||
warehouseDO.setUpdateBy(new Long("0"));
|
warehouseDO.setUpdateBy(new Long("0"));
|
||||||
}
|
}
|
||||||
warehouseDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
|
Long orgId = OrganizationQueryScope.resolveLoginOrganizationId(loginUser);
|
||||||
warehouseDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
|
if (orgId != null) {
|
||||||
warehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
warehouseDO.setOrganizationId(orgId);
|
||||||
warehouseDO.setCreateByName(userName);
|
} else if (loginUser.getUserPo() != null) {
|
||||||
warehouseDO.setUpdateByName(userName);
|
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.setCreateTime(new Date());
|
||||||
warehouseDO.setUpdateTime(new Date());
|
warehouseDO.setUpdateTime(new Date());
|
||||||
warehouseDO.setDelFlag(1);
|
warehouseDO.setDelFlag(1);
|
||||||
|
|||||||
+3
@@ -68,4 +68,7 @@ public class AssociationWarehouseDTO extends BaseVOEntity{
|
|||||||
|
|
||||||
@ApiModelProperty(name = "关联用户id集合")
|
@ApiModelProperty(name = "关联用户id集合")
|
||||||
private List<Long> correlationIdList;
|
private List<Long> correlationIdList;
|
||||||
|
|
||||||
|
@ApiModelProperty("是否排除默认仓关联(is_default=2)。按仓查询且未带 correlationId 时后端默认可为 true;需要包含默认行时传 false")
|
||||||
|
private Boolean excludeDefaultWarehouse;
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-1
@@ -129,4 +129,7 @@ public class WarehouseDTO extends BaseVOEntity{
|
|||||||
|
|
||||||
@ApiModelProperty("仓库id 集合")
|
@ApiModelProperty("仓库id 集合")
|
||||||
private List<Long> warehouseIds;
|
private List<Long> warehouseIds;
|
||||||
}
|
@ApiModelProperty("是否启用: 1-否 2-是")
|
||||||
|
@Excel(name = "是否启用: 1-否 2-是")
|
||||||
|
private Integer isEnable;
|
||||||
|
}
|
||||||
+4
-4
@@ -40,19 +40,19 @@ public class AssociationWarehouseApi extends BaseController{
|
|||||||
private AssociationWarehouseAssembler associationWarehouseAssembler;
|
private AssociationWarehouseAssembler associationWarehouseAssembler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询关联仓库列表
|
* 分页查询关联仓库列表。按组织+仓库(warehouseId)查该仓全部绑定时,默认不返回 is_default=2(默认仓)关联行;需要含该条时传 excludeDefaultWarehouse=false。
|
||||||
*/
|
*/
|
||||||
@ApiOperation("查询关联仓库列表")
|
@ApiOperation("查询关联仓库列表(按仓查绑定时默认不含 is_default=2)")
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public AjaxResult list(AssociationWarehouseDTO associationWarehouseDTO)
|
public AjaxResult list(AssociationWarehouseDTO associationWarehouseDTO)
|
||||||
{
|
{
|
||||||
//转换实体
|
//转换实体(组织数据权限在 AssociationWarehouseApplicationService 与其它模块对齐)
|
||||||
AssociationWarehouseDO associationWarehouseDO = associationWarehouseAssembler.toDO(associationWarehouseDTO);
|
AssociationWarehouseDO associationWarehouseDO = associationWarehouseAssembler.toDO(associationWarehouseDTO);
|
||||||
List<AssociationWarehousePO> list = associationWarehouseApplicationService.queryList(associationWarehouseDO);
|
List<AssociationWarehousePO> list = associationWarehouseApplicationService.queryList(associationWarehouseDO);
|
||||||
return AjaxResult.success(list);
|
return AjaxResult.success(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("查询仓库关联的用户集合")
|
@ApiOperation("查询仓库关联的用户 id 集合(按仓查时默认不含仅 is_default=2 的绑定)")
|
||||||
@GetMapping("/queryListCorrelationId")
|
@GetMapping("/queryListCorrelationId")
|
||||||
public AjaxResult listUser(AssociationWarehouseDTO associationWarehouseDTO)
|
public AjaxResult listUser(AssociationWarehouseDTO associationWarehouseDTO)
|
||||||
{
|
{
|
||||||
|
|||||||
+8
-1
@@ -10,6 +10,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="organizationName" column="organization_name" />
|
<result property="organizationName" column="organization_name" />
|
||||||
<result property="topOrganizationId" column="top_organization_id" />
|
<result property="topOrganizationId" column="top_organization_id" />
|
||||||
<result property="correlationId" column="correlation_id" />
|
<result property="correlationId" column="correlation_id" />
|
||||||
|
<result property="isDefault" column="is_default" />
|
||||||
<result property="warehouseId" column="warehouse_id" />
|
<result property="warehouseId" column="warehouse_id" />
|
||||||
<result property="warehouseCode" column="warehouse_code" />
|
<result property="warehouseCode" column="warehouse_code" />
|
||||||
<result property="warehouseName" column="warehouse_name" />
|
<result property="warehouseName" column="warehouse_name" />
|
||||||
@@ -25,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
|
|
||||||
<sql id="selectAssociationWarehousePo">
|
<sql id="selectAssociationWarehousePo">
|
||||||
a.association_warehouse_id, a.organization_id, a.organization_name, a.top_organization_id,
|
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
|
a.create_by, a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
@@ -42,9 +43,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="correlationId != null ">
|
<if test="correlationId != null ">
|
||||||
and a.correlation_id = #{correlationId}
|
and a.correlation_id = #{correlationId}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="isDefault != null ">
|
||||||
|
and a.is_default = #{isDefault}
|
||||||
|
</if>
|
||||||
<if test="warehouseId != null ">
|
<if test="warehouseId != null ">
|
||||||
and a.warehouse_id = #{warehouseId}
|
and a.warehouse_id = #{warehouseId}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="excludeDefaultWarehouse != null and excludeDefaultWarehouse">
|
||||||
|
and (a.is_default is null or a.is_default <> 2)
|
||||||
|
</if>
|
||||||
<if test="warehouseCode != null and warehouseCode != ''">
|
<if test="warehouseCode != null and warehouseCode != ''">
|
||||||
and a.warehouse_code = #{warehouseCode}
|
and a.warehouse_code = #{warehouseCode}
|
||||||
</if>
|
</if>
|
||||||
|
|||||||
+2
-1
@@ -36,11 +36,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="updateBy" column="update_by" />
|
<result property="updateBy" column="update_by" />
|
||||||
<result property="updateByName" column="update_by_name" />
|
<result property="updateByName" column="update_by_name" />
|
||||||
<result property="delFlag" column="del_flag" />
|
<result property="delFlag" column="del_flag" />
|
||||||
|
<result property="isEnable" column="IS_ENABLE" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
|
||||||
<sql id="selectWarehousePo">
|
<sql id="selectWarehousePo">
|
||||||
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
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<sql id="selectWarehousePo1">
|
<sql id="selectWarehousePo1">
|
||||||
|
|||||||
@@ -20,17 +20,17 @@ spring:
|
|||||||
discovery:
|
discovery:
|
||||||
# server-addr: 127.0.0.1:8848
|
# 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
|
server-addr: 10.102.192.5:6848
|
||||||
# username: nacos
|
username: nacos
|
||||||
# password: manhuoda@2023
|
password: manhuoda@2023
|
||||||
config:
|
config:
|
||||||
# server-addr: 127.0.0.1:8848
|
# 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
|
server-addr: 10.102.192.5:6848
|
||||||
# username: nacos
|
username: nacos
|
||||||
# password: manhuoda@2023
|
password: manhuoda@2023
|
||||||
group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置
|
group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置
|
||||||
file-extension: yml #默认properties
|
file-extension: yml #默认properties
|
||||||
# 共享配置
|
# 共享配置
|
||||||
|
|||||||
+2
@@ -451,6 +451,7 @@ public class ReservationStockInOrderDomainService {
|
|||||||
ReservationStockInOrder byId = stockInOrderService.getById(inOrderId);
|
ReservationStockInOrder byId = stockInOrderService.getById(inOrderId);
|
||||||
StockInOrder stockInOrder = new StockInOrder();
|
StockInOrder stockInOrder = new StockInOrder();
|
||||||
BeanUtils.copyProperties(byId, stockInOrder,"inOrderId");
|
BeanUtils.copyProperties(byId, stockInOrder,"inOrderId");
|
||||||
|
stockInOrder.setOmsStockInOrderId(String.valueOf(byId.getInOrderId()));
|
||||||
wmsServiceFeign.omsInOrderAdd(stockInOrder);
|
wmsServiceFeign.omsInOrderAdd(stockInOrder);
|
||||||
String inOrderNumber = stockInOrder.getInOrderNumber();
|
String inOrderNumber = stockInOrder.getInOrderNumber();
|
||||||
List<ReservationInMaterialDetail> materialDetailList = materialDetailService.list(new QueryWrapper<ReservationInMaterialDetail>().lambda().eq(ReservationInMaterialDetail::getInOrderNumber, inOrderNumber));
|
List<ReservationInMaterialDetail> materialDetailList = materialDetailService.list(new QueryWrapper<ReservationInMaterialDetail>().lambda().eq(ReservationInMaterialDetail::getInOrderNumber, inOrderNumber));
|
||||||
@@ -458,6 +459,7 @@ public class ReservationStockInOrderDomainService {
|
|||||||
for (ReservationInMaterialDetail reservationInMaterialDetail : materialDetailList) {
|
for (ReservationInMaterialDetail reservationInMaterialDetail : materialDetailList) {
|
||||||
InMaterialDetail inMaterialDetail = new InMaterialDetail();
|
InMaterialDetail inMaterialDetail = new InMaterialDetail();
|
||||||
BeanUtils.copyProperties(reservationInMaterialDetail, inMaterialDetail,"materialDetailId");
|
BeanUtils.copyProperties(reservationInMaterialDetail, inMaterialDetail,"materialDetailId");
|
||||||
|
inMaterialDetail.setOmsInMaterialDetail(String.valueOf(reservationInMaterialDetail.getMaterialDetailId()));
|
||||||
inMaterialDetailList.add(inMaterialDetail);
|
inMaterialDetailList.add(inMaterialDetail);
|
||||||
}
|
}
|
||||||
wmsServiceFeign.omsInOrderAddDetail(inMaterialDetailList);
|
wmsServiceFeign.omsInOrderAddDetail(inMaterialDetailList);
|
||||||
|
|||||||
@@ -18,17 +18,17 @@ spring:
|
|||||||
discovery:
|
discovery:
|
||||||
# server-addr: 127.0.0.1:8848
|
# 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
|
server-addr: 10.102.192.5:6848
|
||||||
# username: nacos
|
username: nacos
|
||||||
# password: manhuoda@2023
|
password: manhuoda@2023
|
||||||
config:
|
config:
|
||||||
# server-addr: 127.0.0.1:8848
|
# 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
|
server-addr: 10.102.192.5:6848
|
||||||
# username: nacos
|
username: nacos
|
||||||
# password: manhuoda@2023
|
password: manhuoda@2023
|
||||||
#线上正式环境
|
#线上正式环境
|
||||||
# server-addr: 10.102.192.105:6848
|
# server-addr: 10.102.192.105:6848
|
||||||
# 锁定server端的配置文件(读取它的配置项)
|
# 锁定server端的配置文件(读取它的配置项)
|
||||||
|
|||||||
@@ -19,20 +19,20 @@ spring:
|
|||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
# server-addr: 127.0.0.1:8848
|
# 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
|
server-addr: 10.102.192.5:6848
|
||||||
# username: nacos
|
username: nacos
|
||||||
# password: manhuoda@2023
|
password: manhuoda@2023
|
||||||
#线上正式环境
|
#线上正式环境
|
||||||
# server-addr: 10.33.0.129:6010
|
# server-addr: 10.33.0.129:6010
|
||||||
config:
|
config:
|
||||||
# server-addr: 127.0.0.1:8848
|
# 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
|
server-addr: 10.102.192.5:6848
|
||||||
# username: nacos
|
username: nacos
|
||||||
# password: manhuoda@2023
|
password: manhuoda@2023
|
||||||
#线上正式环境
|
#线上正式环境
|
||||||
# server-addr: 10.33.0.129:6010
|
# server-addr: 10.33.0.129:6010
|
||||||
group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置
|
group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置
|
||||||
|
|||||||
+10
-1
@@ -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 PALLET_NUMBER VARCHAR;
|
||||||
ALTER TABLE SHELF_MATERIAL_DETAIL ADD COPY_BATCH 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_QUANTITY VARCHAR;
|
||||||
ALTER TABLE SHELF_MATERIAL_DETAIL ADD COPY_DETAILS VARCHAR;
|
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;
|
||||||
|
|
||||||
|
|||||||
+2
@@ -237,6 +237,8 @@ public class StockOutTaskOrderApplicationService {
|
|||||||
returnTaskPickingMaterialDetailDO.setTotalGrossWeight(taskPickingMaterialDetailDO.getTotalGrossWeight());
|
returnTaskPickingMaterialDetailDO.setTotalGrossWeight(taskPickingMaterialDetailDO.getTotalGrossWeight());
|
||||||
returnTaskPickingMaterialDetailDO.setTotalVolume(taskPickingMaterialDetailDO.getTotalVolume());
|
returnTaskPickingMaterialDetailDO.setTotalVolume(taskPickingMaterialDetailDO.getTotalVolume());
|
||||||
returnTaskPickingMaterialDetailDO.setTotalArea(taskPickingMaterialDetailDO.getTotalArea());
|
returnTaskPickingMaterialDetailDO.setTotalArea(taskPickingMaterialDetailDO.getTotalArea());
|
||||||
|
// 抄码拣货:PDA 提交的抄码 id 需透传,assembleParam 从 DB 重建 DO 时否则会丢失
|
||||||
|
returnTaskPickingMaterialDetailDO.setPickedCopyCodeReferenceIds(taskPickingMaterialDetailDO.getPickedCopyCodeReferenceIds());
|
||||||
//是否开启了序列号管理
|
//是否开启了序列号管理
|
||||||
if (taskPickingMaterialDetailPO.getSerialNumberManage() == 1){
|
if (taskPickingMaterialDetailPO.getSerialNumberManage() == 1){
|
||||||
if (CollectionUtils.isEmpty(taskPickingMaterialDetailDO.getMaterialDetailSerialNumberList())){
|
if (CollectionUtils.isEmpty(taskPickingMaterialDetailDO.getMaterialDetailSerialNumberList())){
|
||||||
|
|||||||
+2
-2
@@ -15,8 +15,8 @@ public class CopyCodeReferencePO extends BaseVOEntity {
|
|||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
|
||||||
@ApiModelProperty("id")
|
@ApiModelProperty("抄码对照主键 id(PDA 提交 pickedCopyCodeReferenceIds 用)")
|
||||||
private Integer id;
|
private Long id;
|
||||||
|
|
||||||
@ApiModelProperty("序号")
|
@ApiModelProperty("序号")
|
||||||
private Integer serialNumber;
|
private Integer serialNumber;
|
||||||
|
|||||||
+3
@@ -10,6 +10,9 @@ import lombok.Data;
|
|||||||
public class CopyCodeReferenceDO extends BaseVOEntity {
|
public class CopyCodeReferenceDO extends BaseVOEntity {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@ApiModelProperty("ID")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
@ApiModelProperty("货主ID")
|
@ApiModelProperty("货主ID")
|
||||||
private Long shipperId;
|
private Long shipperId;
|
||||||
|
|
||||||
|
|||||||
@@ -364,4 +364,8 @@ public class InMaterialDetail extends BaseVOEntity {
|
|||||||
@ApiModelProperty("lot编号")
|
@ApiModelProperty("lot编号")
|
||||||
@Excel(name = "lot编号")
|
@Excel(name = "lot编号")
|
||||||
private String lotNo;
|
private String lotNo;
|
||||||
|
|
||||||
|
@ApiModelProperty("oms入库单详情id")
|
||||||
|
@Excel(name = "oms入库单详情id")
|
||||||
|
private String omsInMaterialDetail;
|
||||||
}
|
}
|
||||||
+3
@@ -410,4 +410,7 @@ public class InMaterialDetailPO extends StockInOrderBasePO {
|
|||||||
@Excel(name = "lot编号")
|
@Excel(name = "lot编号")
|
||||||
private String lotNo;
|
private String lotNo;
|
||||||
|
|
||||||
|
@ApiModelProperty("oms入库单详情id")
|
||||||
|
@Excel(name = "oms入库单详情id")
|
||||||
|
private String omsInMaterialDetail;
|
||||||
}
|
}
|
||||||
+4
@@ -372,4 +372,8 @@ public class InMaterialDetailDO extends StockInOrderBaseDO {
|
|||||||
@ApiModelProperty("lot编号")
|
@ApiModelProperty("lot编号")
|
||||||
@Excel(name = "lot编号")
|
@Excel(name = "lot编号")
|
||||||
private String lotNo;
|
private String lotNo;
|
||||||
|
|
||||||
|
@ApiModelProperty("oms入库单详情id")
|
||||||
|
@Excel(name = "oms入库单详情id")
|
||||||
|
private String omsInMaterialDetail;
|
||||||
}
|
}
|
||||||
+32
@@ -1,11 +1,13 @@
|
|||||||
package com.mhd.wms.domain.pickingMaterialDetail.repository.persistence;
|
package com.mhd.wms.domain.pickingMaterialDetail.repository.persistence;
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
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.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.mhd.common.core.exception.ServiceException;
|
import com.mhd.common.core.exception.ServiceException;
|
||||||
import com.mhd.common.security.utils.SecurityUtils;
|
import com.mhd.common.security.utils.SecurityUtils;
|
||||||
import com.mhd.system.api.model.LoginUser;
|
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.entity.CopyCodeReference;
|
||||||
import com.mhd.wms.domain.copyCodeReference.repository.facade.ICopyCodeReferenceService;
|
import com.mhd.wms.domain.copyCodeReference.repository.facade.ICopyCodeReferenceService;
|
||||||
import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailMapper;
|
import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailMapper;
|
||||||
@@ -339,6 +341,36 @@ public class PickingMaterialDetailImpl extends ServiceImpl<PickingMaterialDetail
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean addQuantity(PickingMaterialDetailDOByUpdate pickingMaterialDetailDOByUpdate){
|
public Boolean addQuantity(PickingMaterialDetailDOByUpdate pickingMaterialDetailDOByUpdate){
|
||||||
|
// 与库中已有 picked_copy_code_reference_ids 再合并一次,避免多次拣货提交时仅带本批 id 覆盖历史已拣 id
|
||||||
|
List<PickingMaterialDetailDO> pmdList = pickingMaterialDetailDOByUpdate.getPickingMaterialDetailList();
|
||||||
|
if (!CollectionUtils.isEmpty(pmdList)) {
|
||||||
|
List<Long> uniqueIds = pmdList.stream()
|
||||||
|
.map(PickingMaterialDetailDO::getUniqueId)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.distinct()
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
if (!uniqueIds.isEmpty()) {
|
||||||
|
List<PickingMaterialDetail> rows = list(new LambdaQueryWrapper<PickingMaterialDetail>()
|
||||||
|
.in(PickingMaterialDetail::getUniqueId, uniqueIds)
|
||||||
|
.eq(PickingMaterialDetail::getDelFlag, 1));
|
||||||
|
// HashMap.merge 不允许 value 为 null;picked_copy_code_reference_ids 未拣过时可能为 null
|
||||||
|
Map<Long, String> 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);
|
int count = pickingMaterialDetailMapper.addQuantity(pickingMaterialDetailDOByUpdate);
|
||||||
if (count == 0){
|
if (count == 0){
|
||||||
throw new ServiceException("更新拣货单拣货数量失败");
|
throw new ServiceException("更新拣货单拣货数量失败");
|
||||||
|
|||||||
+4
@@ -359,4 +359,8 @@ public class ReceiptMaterialDetailPO extends BaseVOEntity {
|
|||||||
@ApiModelProperty("是否抄码: 1-是 2-否")
|
@ApiModelProperty("是否抄码: 1-是 2-否")
|
||||||
@Excel(name = "是否抄码: 1-是 2-否")
|
@Excel(name = "是否抄码: 1-是 2-否")
|
||||||
private Integer copyCode;
|
private Integer copyCode;
|
||||||
|
|
||||||
|
@ApiModelProperty("oms入库单详情id")
|
||||||
|
@Excel(name = "oms入库单详情id")
|
||||||
|
private String omsInMaterialDetail;
|
||||||
}
|
}
|
||||||
|
|||||||
+4
@@ -354,4 +354,8 @@ public class ReceiptMaterialDetailDO extends BaseVOEntity {
|
|||||||
|
|
||||||
@ApiModelProperty("是否抄码:1-是 2-否(与物料主数据同源,PDA/PC 透传)")
|
@ApiModelProperty("是否抄码:1-是 2-否(与物料主数据同源,PDA/PC 透传)")
|
||||||
private Integer copyCode;
|
private Integer copyCode;
|
||||||
|
|
||||||
|
@ApiModelProperty("oms入库单详情id")
|
||||||
|
@Excel(name = "oms入库单详情id")
|
||||||
|
private String omsInMaterialDetail;
|
||||||
}
|
}
|
||||||
|
|||||||
+17
@@ -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.mapper.ShelfMaterialDetailMapper;
|
||||||
import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO;
|
import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO;
|
||||||
import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO;
|
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.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO;
|
||||||
import com.mhd.common.core.utils.StringUtils;
|
import com.mhd.common.core.utils.StringUtils;
|
||||||
import com.mhd.system.api.domain.BatchDetailFeignPO;
|
import com.mhd.system.api.domain.BatchDetailFeignPO;
|
||||||
@@ -395,6 +397,8 @@ public class ShelfMaterialDetailImpl extends ServiceImpl<ShelfMaterialDetailMapp
|
|||||||
// 批量新增序列号
|
// 批量新增序列号
|
||||||
List<InMaterialDetailSerialNumber> materialDetailSerialNumberList = new ArrayList<>();
|
List<InMaterialDetailSerialNumber> materialDetailSerialNumberList = new ArrayList<>();
|
||||||
for (ShelfMaterialDetailDO shelfMaterialDetailDO : shelfMaterialDetailDOList){
|
for (ShelfMaterialDetailDO shelfMaterialDetailDO : shelfMaterialDetailDOList){
|
||||||
|
//更新oms入库单信息
|
||||||
|
OMSWarehouseEntryDetails(shelfMaterialDetailDO);
|
||||||
//序列号
|
//序列号
|
||||||
if (shelfMaterialDetailDO.getSerialNumberManage() == 1) {
|
if (shelfMaterialDetailDO.getSerialNumberManage() == 1) {
|
||||||
if (CollectionUtils.isEmpty(shelfMaterialDetailDO.getMaterialDetailSerialNumberList())) {
|
if (CollectionUtils.isEmpty(shelfMaterialDetailDO.getMaterialDetailSerialNumberList())) {
|
||||||
@@ -413,6 +417,7 @@ public class ShelfMaterialDetailImpl extends ServiceImpl<ShelfMaterialDetailMapp
|
|||||||
if (isShelfParentCopyMirrorRow(shelfMaterialDetailDO, shelfMaterialDetailDOChild)) {
|
if (isShelfParentCopyMirrorRow(shelfMaterialDetailDO, shelfMaterialDetailDOChild)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
OMSWarehouseEntryDetails(shelfMaterialDetailDOChild);
|
||||||
ShelfMaterialDetail shelfMaterialDetailChild = new ShelfMaterialDetail();
|
ShelfMaterialDetail shelfMaterialDetailChild = new ShelfMaterialDetail();
|
||||||
BeanUtils.copyProperties(shelfMaterialDetailDOChild, shelfMaterialDetailChild);
|
BeanUtils.copyProperties(shelfMaterialDetailDOChild, shelfMaterialDetailChild);
|
||||||
shelfMaterialDetailChild.setCreateBy(loginUser.getUserid());
|
shelfMaterialDetailChild.setCreateBy(loginUser.getUserid());
|
||||||
@@ -462,6 +467,18 @@ public class ShelfMaterialDetailImpl extends ServiceImpl<ShelfMaterialDetailMapp
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IStockShelfOrderService stockShelfOrderService;
|
||||||
|
private void OMSWarehouseEntryDetails(ShelfMaterialDetailDO shelfMaterialDetailDO) {
|
||||||
|
if (shelfMaterialDetailDO.getOmsInMaterialDetail() == null){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String omsInMaterialDetail = shelfMaterialDetailDO.getOmsInMaterialDetail();//oms详情id
|
||||||
|
shelfMaterialDetailDO.getShelvesQuantity();//入库件数
|
||||||
|
shelfMaterialDetailDO.getTotalNetWeight();//重量
|
||||||
|
stockShelfOrderService.updateOmsDocument(shelfMaterialDetailDO.getShelvesQuantity(),shelfMaterialDetailDO.getTotalNetWeight(),omsInMaterialDetail);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PDA getInfo 注入的 parent_copy:与主项同 material_detail_id 或 unique_id,仅用于展示;落库子项循环需跳过,避免重复 UPDATE 覆盖主行 level。
|
* PDA getInfo 注入的 parent_copy:与主项同 material_detail_id 或 unique_id,仅用于展示;落库子项循环需跳过,避免重复 UPDATE 覆盖主行 level。
|
||||||
* 口径与 {@link com.mhd.wms.application.service.stockShelfOrder.StockShelfOrderApplicationService#isShelfParentCopyPo} 一致。
|
* 口径与 {@link com.mhd.wms.application.service.stockShelfOrder.StockShelfOrderApplicationService#isShelfParentCopyPo} 一致。
|
||||||
|
|||||||
+4
@@ -376,4 +376,8 @@ public class ShelfMaterialDetailPO extends BaseVOEntity {
|
|||||||
@ApiModelProperty("抄码克重明细 JSON")
|
@ApiModelProperty("抄码克重明细 JSON")
|
||||||
@Excel(name = "抄码克重明细")
|
@Excel(name = "抄码克重明细")
|
||||||
private String copyDetails;
|
private String copyDetails;
|
||||||
|
|
||||||
|
@ApiModelProperty("oms入库单详情id")
|
||||||
|
@Excel(name = "oms入库单详情id")
|
||||||
|
private String omsInMaterialDetail;
|
||||||
}
|
}
|
||||||
+4
@@ -363,4 +363,8 @@ public class ShelfMaterialDetailDO extends BaseVOEntity {
|
|||||||
*/
|
*/
|
||||||
@ApiModelProperty(hidden = true)
|
@ApiModelProperty(hidden = true)
|
||||||
private Boolean pdaShelfSyntheticChildInjected;
|
private Boolean pdaShelfSyntheticChildInjected;
|
||||||
|
|
||||||
|
@ApiModelProperty("oms入库单详情id")
|
||||||
|
@Excel(name = "oms入库单详情id")
|
||||||
|
private String omsInMaterialDetail;
|
||||||
}
|
}
|
||||||
@@ -360,4 +360,9 @@ public class StockInOrder extends BaseVOEntity {
|
|||||||
private String salesmanId;
|
private String salesmanId;
|
||||||
@ApiModelProperty("业务员名称")
|
@ApiModelProperty("业务员名称")
|
||||||
private String salesmanName;
|
private String salesmanName;
|
||||||
|
|
||||||
|
|
||||||
|
@ApiModelProperty("oms入库单id")
|
||||||
|
@Excel(name = "oms入库单id")
|
||||||
|
private String omsStockInOrderId;
|
||||||
}
|
}
|
||||||
+4
@@ -422,4 +422,8 @@ public class StockInOrderPO extends BaseVOEntity {
|
|||||||
@ApiModelProperty("仓位名称")
|
@ApiModelProperty("仓位名称")
|
||||||
private String storageLocationName;
|
private String storageLocationName;
|
||||||
|
|
||||||
|
@ApiModelProperty("oms入库单id")
|
||||||
|
@Excel(name = "oms入库单id")
|
||||||
|
private String omsStockInOrderId;
|
||||||
|
|
||||||
}
|
}
|
||||||
+3
@@ -391,4 +391,7 @@ public class StockInOrderDO extends BaseVOEntity {
|
|||||||
private String salesmanId;
|
private String salesmanId;
|
||||||
@ApiModelProperty("业务员名称")
|
@ApiModelProperty("业务员名称")
|
||||||
private String salesmanName;
|
private String salesmanName;
|
||||||
|
@ApiModelProperty("oms入库单id")
|
||||||
|
@Excel(name = "oms入库单id")
|
||||||
|
private String omsStockInOrderId;
|
||||||
}
|
}
|
||||||
+3
@@ -132,6 +132,9 @@ public class StockReceiptOrder extends BaseVOEntity {
|
|||||||
@ApiModelProperty(name = "费用参数json")
|
@ApiModelProperty(name = "费用参数json")
|
||||||
private String billingJson;
|
private String billingJson;
|
||||||
|
|
||||||
|
@ApiModelProperty("oms入库单id")
|
||||||
|
@Excel(name = "oms入库单id")
|
||||||
|
private String omsStockInOrderId;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
+4
@@ -188,4 +188,8 @@ public class StockReceiptOrderDO extends StockInOrderBaseDO {
|
|||||||
|
|
||||||
@ApiModelProperty(name = "费用参数json")
|
@ApiModelProperty(name = "费用参数json")
|
||||||
private String billingJson;
|
private String billingJson;
|
||||||
|
|
||||||
|
@ApiModelProperty("oms入库单id")
|
||||||
|
@Excel(name = "oms入库单id")
|
||||||
|
private String omsStockInOrderId;
|
||||||
}
|
}
|
||||||
+2
@@ -1297,6 +1297,7 @@ public class StockReceiptOrderDomainService {
|
|||||||
|
|
||||||
ShelfMaterialDetailDO shelfMaterialDetailDO = new ShelfMaterialDetailDO();
|
ShelfMaterialDetailDO shelfMaterialDetailDO = new ShelfMaterialDetailDO();
|
||||||
BeanUtils.copyProperties(receiptMaterialDetailPO, shelfMaterialDetailDO);
|
BeanUtils.copyProperties(receiptMaterialDetailPO, shelfMaterialDetailDO);
|
||||||
|
shelfMaterialDetailDO.setOmsInMaterialDetail(receiptMaterialDetailPO.getOmsInMaterialDetail());
|
||||||
shelfMaterialDetailDO.setLotNumber(receiptMaterialDetailPO.getLotNo());
|
shelfMaterialDetailDO.setLotNumber(receiptMaterialDetailPO.getLotNo());
|
||||||
shelfMaterialDetailDO.setQuantity(receiptMaterialDetailPO.getReceiptQuantity());
|
shelfMaterialDetailDO.setQuantity(receiptMaterialDetailPO.getReceiptQuantity());
|
||||||
shelfMaterialDetailDO.setInUniqueId(receiptMaterialDetailPO.getInUniqueId());
|
shelfMaterialDetailDO.setInUniqueId(receiptMaterialDetailPO.getInUniqueId());
|
||||||
@@ -1344,6 +1345,7 @@ public class StockReceiptOrderDomainService {
|
|||||||
}
|
}
|
||||||
ShelfMaterialDetailDO shelfMaterialDetailDOChildren = new ShelfMaterialDetailDO();
|
ShelfMaterialDetailDO shelfMaterialDetailDOChildren = new ShelfMaterialDetailDO();
|
||||||
BeanUtils.copyProperties(receiptMaterialDetailPOChildren, shelfMaterialDetailDOChildren);
|
BeanUtils.copyProperties(receiptMaterialDetailPOChildren, shelfMaterialDetailDOChildren);
|
||||||
|
shelfMaterialDetailDOChildren.setOmsInMaterialDetail(receiptMaterialDetailPO.getOmsInMaterialDetail());
|
||||||
shelfMaterialDetailDOChildren.setLotNumber(receiptMaterialDetailPOChildren.getLotNo());
|
shelfMaterialDetailDOChildren.setLotNumber(receiptMaterialDetailPOChildren.getLotNo());
|
||||||
shelfMaterialDetailDOChildren.setQuantity(receiptMaterialDetailPOChildren.getReceiptQuantity());
|
shelfMaterialDetailDOChildren.setQuantity(receiptMaterialDetailPOChildren.getReceiptQuantity());
|
||||||
shelfMaterialDetailDOChildren.setInUniqueId(receiptMaterialDetailPO.getInUniqueId());
|
shelfMaterialDetailDOChildren.setInUniqueId(receiptMaterialDetailPO.getInUniqueId());
|
||||||
|
|||||||
+3
@@ -5,6 +5,7 @@ import com.mhd.wms.domain.stockShelfOrder.entity.StockShelfOrder;
|
|||||||
import com.mhd.wms.domain.stockShelfOrder.repository.po.StockShelfOrderPO;
|
import com.mhd.wms.domain.stockShelfOrder.repository.po.StockShelfOrderPO;
|
||||||
import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO;
|
import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -48,4 +49,6 @@ public interface IStockShelfOrderService extends IService<StockShelfOrder>
|
|||||||
|
|
||||||
|
|
||||||
public void updateOmsOrder(String orderNumber, Integer status, Integer shelvesQuantity);
|
public void updateOmsOrder(String orderNumber, Integer status, Integer shelvesQuantity);
|
||||||
|
|
||||||
|
public void updateOmsDocument(BigDecimal shelvesQuantity, BigDecimal totalNetWeight, String omsInMaterialDetail);
|
||||||
}
|
}
|
||||||
+2
@@ -6,6 +6,7 @@ import com.mhd.wms.domain.stockShelfOrder.repository.po.StockShelfOrderPO;
|
|||||||
import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO;
|
import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -23,4 +24,5 @@ public interface StockShelfOrderMapper extends BaseMapper<StockShelfOrder>
|
|||||||
|
|
||||||
public void updateOmsOrder(@Param("orderNumber") String orderNumber, @Param("status") Integer status, @Param("shelvesQuantity") Integer shelvesQuantity);
|
public void updateOmsOrder(@Param("orderNumber") String orderNumber, @Param("status") Integer status, @Param("shelvesQuantity") Integer shelvesQuantity);
|
||||||
|
|
||||||
|
void updateOmsDocument(BigDecimal shelvesQuantity, BigDecimal totalNetWeight, String omsInMaterialDetail);
|
||||||
}
|
}
|
||||||
+6
@@ -18,6 +18,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -112,6 +113,11 @@ public class StockShelfOrderImpl extends ServiceImpl<StockShelfOrderMapper, Stoc
|
|||||||
stockShelfOrderMapper.updateOmsOrder(orderNumber, status,shelvesQuantity);
|
stockShelfOrderMapper.updateOmsOrder(orderNumber, status,shelvesQuantity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateOmsDocument(BigDecimal shelvesQuantity, BigDecimal totalNetWeight, String omsInMaterialDetail) {
|
||||||
|
stockShelfOrderMapper.updateOmsDocument(shelvesQuantity, totalNetWeight, omsInMaterialDetail);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 更新订单任务下发状态
|
* @description 更新订单任务下发状态
|
||||||
* @author ZhouGY
|
* @author ZhouGY
|
||||||
|
|||||||
+56
-27
@@ -10,11 +10,18 @@ import com.mhd.system.api.model.LoginUser;
|
|||||||
import com.mhd.wms.domain.stockOutTaskOrder.repository.todo.StockOutTaskOrderDO;
|
import com.mhd.wms.domain.stockOutTaskOrder.repository.todo.StockOutTaskOrderDO;
|
||||||
import com.mhd.wms.domain.taskPickingMaterialDetail.repository.todo.TaskPickingMaterialDetailDO;
|
import com.mhd.wms.domain.taskPickingMaterialDetail.repository.todo.TaskPickingMaterialDetailDO;
|
||||||
import com.mhd.wms.interfaces.dto.stockOutTaskOrder.StockOutTaskOrderDTO;
|
import com.mhd.wms.interfaces.dto.stockOutTaskOrder.StockOutTaskOrderDTO;
|
||||||
|
import com.mhd.wms.interfaces.dto.stockOutTaskOrder.TaskMaterialDTO;
|
||||||
|
import com.mhd.wms.interfaces.dto.stockOutTaskOrder.TaskStorageDTO;
|
||||||
|
import com.mhd.wms.interfaces.dto.taskPickingMaterialDetail.TaskPickingMaterialDetailDTO;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 拣货作业单Assembler
|
* 拣货作业单Assembler
|
||||||
@@ -81,41 +88,63 @@ public class StockOutTaskOrderAssembler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 按库位拣货 转换实体
|
* 提交拣货:按库位、按物料共用。从 taskStorageList、taskMaterialList 扁平化拣货任务明细(含抄码 id)。
|
||||||
*/
|
*/
|
||||||
public StockOutTaskOrderDO toDOPickingByStorageLocation(StockOutTaskOrderDTO stockOutTaskOrderDTO) {
|
public StockOutTaskOrderDO toDOPicking(StockOutTaskOrderDTO stockOutTaskOrderDTO) {
|
||||||
StockOutTaskOrderDO stockOutTaskOrderDO = new StockOutTaskOrderDO();
|
StockOutTaskOrderDO stockOutTaskOrderDO = new StockOutTaskOrderDO();
|
||||||
// 拷贝
|
|
||||||
BeanUtils.copyProperties(stockOutTaskOrderDTO, stockOutTaskOrderDO, IgnoreNullUtil.getNullPropertyNames(stockOutTaskOrderDTO));
|
BeanUtils.copyProperties(stockOutTaskOrderDTO, stockOutTaskOrderDO, IgnoreNullUtil.getNullPropertyNames(stockOutTaskOrderDTO));
|
||||||
List<TaskPickingMaterialDetailDO> taskPickingMaterialDetailList = new ArrayList<>();
|
stockOutTaskOrderDO.setTaskPickingMaterialDetailList(collectTaskPickingMaterialDetailDOList(stockOutTaskOrderDTO));
|
||||||
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);
|
|
||||||
return stockOutTaskOrderDO;
|
return stockOutTaskOrderDO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<TaskPickingMaterialDetailDO> collectTaskPickingMaterialDetailDOList(StockOutTaskOrderDTO dto) {
|
||||||
|
List<TaskPickingMaterialDetailDO> 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) {
|
private static void applyPickedCopyCodeReferenceIds(TaskPickingMaterialDetailDTO src, TaskPickingMaterialDetailDO dest) {
|
||||||
StockOutTaskOrderDO stockOutTaskOrderDO = new StockOutTaskOrderDO();
|
String picked = src.getPickedCopyCodeReferenceIds();
|
||||||
// 拷贝
|
if (!StringUtils.hasText(picked) && src.getWeightList() != null && !src.getWeightList().isEmpty()) {
|
||||||
BeanUtils.copyProperties(stockOutTaskOrderDTO, stockOutTaskOrderDO, IgnoreNullUtil.getNullPropertyNames(stockOutTaskOrderDTO));
|
picked = src.getWeightList().stream()
|
||||||
List<TaskPickingMaterialDetailDO> taskPickingMaterialDetailList = new ArrayList<>();
|
.filter(Objects::nonNull)
|
||||||
stockOutTaskOrderDTO.getTaskMaterialList().forEach(taskMaterialDTO -> {
|
.map(m -> m.get("id"))
|
||||||
taskMaterialDTO.getTaskPickingMaterialDetailList().forEach(taskPickingMaterialDetailDTO -> {
|
.filter(Objects::nonNull)
|
||||||
TaskPickingMaterialDetailDO taskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO();
|
.map(Object::toString)
|
||||||
BeanUtils.copyProperties(taskPickingMaterialDetailDTO, taskPickingMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(taskPickingMaterialDetailDTO));
|
.collect(Collectors.joining(","));
|
||||||
taskPickingMaterialDetailList.add(taskPickingMaterialDetailDO);
|
}
|
||||||
});
|
if (StringUtils.hasText(picked)) {
|
||||||
});
|
dest.setPickedCopyCodeReferenceIds(picked);
|
||||||
stockOutTaskOrderDO.setTaskPickingMaterialDetailList(taskPickingMaterialDetailList);
|
}
|
||||||
return stockOutTaskOrderDO;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+3
@@ -12,6 +12,9 @@ import lombok.Data;
|
|||||||
public class CopyCodeReferenceDTO extends BaseVOEntity {
|
public class CopyCodeReferenceDTO extends BaseVOEntity {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@ApiModelProperty("ID")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
@ApiModelProperty("货主ID")
|
@ApiModelProperty("货主ID")
|
||||||
private Long shipperId;
|
private Long shipperId;
|
||||||
|
|
||||||
|
|||||||
+4
@@ -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")
|
@ApiModelProperty("抄码数量克重详情:JSON 字符串,key 为序号(1,2,3…),value 为单件净重KG(支持小数)。例:{\"1\":1.343,\"2\":1.343};上架完成后写入 copy_code_reference")
|
||||||
@Excel(name = "抄码数量克重详情")
|
@Excel(name = "抄码数量克重详情")
|
||||||
private String copyDetails;
|
private String copyDetails;
|
||||||
|
|
||||||
|
@ApiModelProperty("oms入库单详情id")
|
||||||
|
@Excel(name = "oms入库单详情id")
|
||||||
|
private String omsInMaterialDetail;
|
||||||
}
|
}
|
||||||
+4
@@ -346,4 +346,8 @@ public class ShelfMaterialDetailDTO extends BaseVOEntity {
|
|||||||
@ApiModelProperty("抄码批次号")
|
@ApiModelProperty("抄码批次号")
|
||||||
@Excel(name = "抄码批次号")
|
@Excel(name = "抄码批次号")
|
||||||
private String copyBatch;
|
private String copyBatch;
|
||||||
|
|
||||||
|
@ApiModelProperty("oms入库单详情id")
|
||||||
|
@Excel(name = "oms入库单详情id")
|
||||||
|
private String omsInMaterialDetail;
|
||||||
}
|
}
|
||||||
@@ -388,4 +388,8 @@ public class StockInOrderDTO extends StockInOrderBaseDTO {
|
|||||||
private String salesmanId;
|
private String salesmanId;
|
||||||
@ApiModelProperty("业务员名称")
|
@ApiModelProperty("业务员名称")
|
||||||
private String salesmanName;
|
private String salesmanName;
|
||||||
|
|
||||||
|
@ApiModelProperty("oms入库单id")
|
||||||
|
@Excel(name = "oms入库单id")
|
||||||
|
private String omsStockInOrderId;
|
||||||
}
|
}
|
||||||
+4
@@ -159,4 +159,8 @@ public class StockReceiptOrderDTO extends StockInOrderBaseDTO {
|
|||||||
|
|
||||||
@ApiModelProperty(name = "费用参数json")
|
@ApiModelProperty(name = "费用参数json")
|
||||||
private String billingJson;
|
private String billingJson;
|
||||||
|
|
||||||
|
@ApiModelProperty("oms入库单id")
|
||||||
|
@Excel(name = "oms入库单id")
|
||||||
|
private String omsStockInOrderId;
|
||||||
}
|
}
|
||||||
+12
@@ -1,6 +1,7 @@
|
|||||||
package com.mhd.wms.interfaces.dto.taskPickingMaterialDetail;
|
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.annotation.JsonSerialize;
|
||||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||||
import com.mhd.common.core.annotation.Excel;
|
import com.mhd.common.core.annotation.Excel;
|
||||||
@@ -12,6 +13,7 @@ import lombok.Data;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 拣货作业单物料明细对象 task_picking_material_detail
|
* 拣货作业单物料明细对象 task_picking_material_detail
|
||||||
@@ -229,4 +231,14 @@ public class TaskPickingMaterialDetailDTO extends BaseVOEntity {
|
|||||||
|
|
||||||
@ApiModelProperty("总面积(SQM)")
|
@ApiModelProperty("总面积(SQM)")
|
||||||
private BigDecimal totalArea;
|
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<Map<String, Object>> weightList;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -47,4 +47,5 @@ public class CopyCodeReferenceApi extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-6
@@ -63,9 +63,7 @@ public class stockOutTaskOrderAppApi extends BaseController {
|
|||||||
@PostMapping("/pickingByStorageLocation")
|
@PostMapping("/pickingByStorageLocation")
|
||||||
public AjaxResult pickingByStorageLocation(@RequestBody StockOutTaskOrderDTO stockOutTaskOrderDTO)
|
public AjaxResult pickingByStorageLocation(@RequestBody StockOutTaskOrderDTO stockOutTaskOrderDTO)
|
||||||
{
|
{
|
||||||
//转换实体
|
StockOutTaskOrderDO stockOutTaskOrderDO = stockOutTaskOrderAssembler.toDOPicking(stockOutTaskOrderDTO);
|
||||||
StockOutTaskOrderDO stockOutTaskOrderDO = stockOutTaskOrderAssembler.toDOPickingByStorageLocation(stockOutTaskOrderDTO);
|
|
||||||
//拆成最小颗粒
|
|
||||||
return AjaxResult.success(stockOutTaskOrderApplicationService.pickingByMaterial(stockOutTaskOrderDO));
|
return AjaxResult.success(stockOutTaskOrderApplicationService.pickingByMaterial(stockOutTaskOrderDO));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,9 +84,7 @@ public class stockOutTaskOrderAppApi extends BaseController {
|
|||||||
@PostMapping("/pickingByMaterial")
|
@PostMapping("/pickingByMaterial")
|
||||||
public AjaxResult pickingByMaterial(@RequestBody StockOutTaskOrderDTO stockOutTaskOrderDTO)
|
public AjaxResult pickingByMaterial(@RequestBody StockOutTaskOrderDTO stockOutTaskOrderDTO)
|
||||||
{
|
{
|
||||||
//转换实体
|
StockOutTaskOrderDO stockOutTaskOrderDO = stockOutTaskOrderAssembler.toDOPicking(stockOutTaskOrderDTO);
|
||||||
StockOutTaskOrderDO stockOutTaskOrderDO = stockOutTaskOrderAssembler.toDOPickingByMaterial(stockOutTaskOrderDTO);
|
|
||||||
//拆成最小颗粒
|
|
||||||
return AjaxResult.success(stockOutTaskOrderApplicationService.pickingByMaterial(stockOutTaskOrderDO));
|
return AjaxResult.success(stockOutTaskOrderApplicationService.pickingByMaterial(stockOutTaskOrderDO));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+11
-1
@@ -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.domain.AjaxResult;
|
||||||
import com.mhd.common.core.web.page.TableDataInfoApi;
|
import com.mhd.common.core.web.page.TableDataInfoApi;
|
||||||
import com.mhd.common.security.utils.SecurityUtils;
|
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.application.service.stockReceiptOrder.StockReceiptOrderApplicationService;
|
||||||
import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO;
|
import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO;
|
||||||
import com.mhd.wms.domain.stockReceiptOrder.repository.po.StockReceiptOrderPO;
|
import com.mhd.wms.domain.stockReceiptOrder.repository.po.StockReceiptOrderPO;
|
||||||
@@ -54,7 +57,14 @@ public class StockReceiptOrderAppApi extends BaseController {
|
|||||||
//转换实体
|
//转换实体
|
||||||
StockReceiptOrderDO stockReceiptOrderDO = stockReceiptOrderAssembler.toDO(stockReceiptOrderDTO);
|
StockReceiptOrderDO stockReceiptOrderDO = stockReceiptOrderAssembler.toDO(stockReceiptOrderDTO);
|
||||||
startPage();
|
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<StockReceiptOrderPO> list = stockReceiptOrderApplicationService.queryList(stockReceiptOrderDO);
|
List<StockReceiptOrderPO> list = stockReceiptOrderApplicationService.queryList(stockReceiptOrderDO);
|
||||||
return getDataTableApi(list);
|
return getDataTableApi(list);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,20 +14,20 @@ spring:
|
|||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
# server-addr: 127.0.0.1:8848
|
# 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
|
server-addr: 10.102.192.5:6848
|
||||||
# username: nacos
|
username: nacos
|
||||||
# password: manhuoda@2023
|
password: manhuoda@2023
|
||||||
#线上正式环境
|
#线上正式环境
|
||||||
# server-addr: 10.102.192.105:6848
|
# server-addr: 10.102.192.105:6848
|
||||||
config:
|
config:
|
||||||
# server-addr: 127.0.0.1:8848
|
# 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
|
server-addr: 10.102.192.5:6848
|
||||||
# username: nacos
|
username: nacos
|
||||||
# password: manhuoda@2023
|
password: manhuoda@2023
|
||||||
#线上正式环境
|
#线上正式环境
|
||||||
# server-addr: 10.102.192.105:6848
|
# server-addr: 10.102.192.105:6848
|
||||||
# 配置文件格式
|
# 配置文件格式
|
||||||
|
|||||||
@@ -96,6 +96,9 @@
|
|||||||
<if test="batchNumber != null and batchNumber != ''">
|
<if test="batchNumber != null and batchNumber != ''">
|
||||||
AND batch_number = #{batchNumber}
|
AND batch_number = #{batchNumber}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="id != null and id != ''">
|
||||||
|
AND id = #{id}
|
||||||
|
</if>
|
||||||
<!-- <if test="boxPalletNo != null and boxPalletNo != ''">-->
|
<!-- <if test="boxPalletNo != null and boxPalletNo != ''">-->
|
||||||
<!-- AND box_pallet_no = #{boxPalletNo}-->
|
<!-- AND box_pallet_no = #{boxPalletNo}-->
|
||||||
<!-- </if>-->
|
<!-- </if>-->
|
||||||
|
|||||||
@@ -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.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.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.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
|
,CASE
|
||||||
WHEN (a.quantity - a.receipt_quantity) < 0 THEN 0
|
WHEN (a.quantity - a.receipt_quantity) < 0 THEN 0
|
||||||
ELSE (a.quantity - a.receipt_quantity)
|
ELSE (a.quantity - a.receipt_quantity)
|
||||||
|
|||||||
+3
-1
@@ -88,6 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="copyQuantity" column="copy_quantity" />
|
<result property="copyQuantity" column="copy_quantity" />
|
||||||
<result property="copyDetails" column="copy_details" />
|
<result property="copyDetails" column="copy_details" />
|
||||||
<result property="copyCode" column="COPY_CODE" />
|
<result property="copyCode" column="COPY_CODE" />
|
||||||
|
<result property="omsInMaterialDetail" column="OMS_IN_MATERIAL_DETAIL" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
|
||||||
@@ -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_1, b.EXT_ATTR_1) EXT_ATTR_1,
|
||||||
ifnull(a.EXT_ATTR_2, b.EXT_ATTR_2) EXT_ATTR_2,
|
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_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
|
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 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
|
LEFT JOIN MATERIAL_BASE_INFO c ON a.MATERIAL_BASE_INFO_ID = c.MATERIAL_BASE_INFO_ID AND c.DEL_FLAG = 1
|
||||||
|
|||||||
@@ -76,11 +76,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="copyQuantity" column="copy_quantity" />
|
<result property="copyQuantity" column="copy_quantity" />
|
||||||
<result property="copyDetails" column="copy_details" />
|
<result property="copyDetails" column="copy_details" />
|
||||||
<result property="alreadyShelvesArea" column="total_area" />
|
<result property="alreadyShelvesArea" column="total_area" />
|
||||||
|
<result property="omsInMaterialDetail" column="OMS_IN_MATERIAL_DETAIL" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
|
||||||
<sql id="selectShelfMaterialDetailPo">
|
<sql id="selectShelfMaterialDetailPo">
|
||||||
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
|
CASE
|
||||||
WHEN pack_detail_id IS NULL OR TRIM(pack_detail_id) = '' THEN NULL
|
WHEN pack_detail_id IS NULL OR TRIM(pack_detail_id) = '' THEN NULL
|
||||||
ELSE CAST(pack_detail_id AS BIGINT)
|
ELSE CAST(pack_detail_id AS BIGINT)
|
||||||
|
|||||||
@@ -94,6 +94,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="unitCode" column="unit_code" />
|
<result property="unitCode" column="unit_code" />
|
||||||
<result property="packName" column="pack_name" />
|
<result property="packName" column="pack_name" />
|
||||||
<result property="storageLocationName" column="storage_location_name" />
|
<result property="storageLocationName" column="storage_location_name" />
|
||||||
|
<result property="omsStockInOrderId" column="stock_in_order" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectStockInOrderPo">
|
<sql id="selectStockInOrderPo">
|
||||||
@@ -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."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.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.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
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<sql id="joinStockInOrderPo">
|
<sql id="joinStockInOrderPo">
|
||||||
|
|||||||
@@ -128,4 +128,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<update id="updateOmsOrder">
|
<update id="updateOmsOrder">
|
||||||
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_STOCK_IN_ORDER set ISSUE_STATUS = #{status},quantity = #{shelvesQuantity},STORAGE_TIME = CURRENT_TIMESTAMP where IN_ORDER_NUMBER = #{orderNumber}
|
||||||
</update>
|
</update>
|
||||||
|
<update id="updateOmsDocument">
|
||||||
|
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}
|
||||||
|
</update>
|
||||||
</mapper>
|
</mapper>
|
||||||
+6
-1
@@ -132,4 +132,9 @@ COMMENT ON COLUMN "NGWL_TEST_WMS"."RECEIPT_ORDER_ACCOUNT"."AMOUNT_JSON" IS '计
|
|||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Primary Key structure for table RECEIPT_ORDER_ACCOUNT
|
-- Primary Key structure for table RECEIPT_ORDER_ACCOUNT
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
ALTER TABLE "NGWL_TEST_WMS"."RECEIPT_ORDER_ACCOUNT" ADD PRIMARY KEY ("ID");
|
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 '是否启用'
|
||||||
Reference in New Issue
Block a user