PDABug修改
This commit is contained in:
+30
-4
@@ -457,10 +457,36 @@ public class MaterialInventoryApplicationService {
|
||||
*/
|
||||
public List<MaterialInventoryQueryListPO> materialQueryList(MaterialInventoryQueryListDO materialInventoryQueryListDO) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (loginUser != null){
|
||||
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||
if (topOrganizationId != null && topOrganizationId != 1){
|
||||
materialInventoryQueryListDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
//topOrganizationId 会查到一级组织下全部子组织
|
||||
if (loginUser != null && loginUser.getUserPo() != null) {
|
||||
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
|
||||
Long frontendOrganizationId = materialInventoryQueryListDO.getOrganizationId();
|
||||
if (userOrganizationId != null && userOrganizationId == 2827L) {
|
||||
if (frontendOrganizationId != null) {
|
||||
materialInventoryQueryListDO.setOrganizationId(frontendOrganizationId);
|
||||
materialInventoryQueryListDO.setTopOrganizationId(null);
|
||||
} else {
|
||||
materialInventoryQueryListDO.setOrganizationId(null);
|
||||
materialInventoryQueryListDO.setTopOrganizationId(null);
|
||||
}
|
||||
} else {
|
||||
if (frontendOrganizationId != null && userOrganizationId != null) {
|
||||
if (!frontendOrganizationId.equals(userOrganizationId)) {
|
||||
materialInventoryQueryListDO.setOrganizationId(userOrganizationId);
|
||||
}
|
||||
} else {
|
||||
if (userOrganizationId != null) {
|
||||
materialInventoryQueryListDO.setOrganizationId(userOrganizationId);
|
||||
}
|
||||
}
|
||||
if (materialInventoryQueryListDO.getOrganizationId() == null) {
|
||||
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||
if (topOrganizationId != null && topOrganizationId != 1) {
|
||||
materialInventoryQueryListDO.setTopOrganizationId(topOrganizationId);
|
||||
}
|
||||
} else {
|
||||
materialInventoryQueryListDO.setTopOrganizationId(2827L);
|
||||
}
|
||||
}
|
||||
}
|
||||
List<MaterialInventoryQueryListPO> list = materialInventoryDomainService.materialQueryList(materialInventoryQueryListDO);
|
||||
|
||||
+40
@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.mhd.common.core.constant.SnowFlakeConstants;
|
||||
import com.mhd.common.core.exception.ServiceException;
|
||||
import com.mhd.common.core.utils.OrderSequence;
|
||||
import com.mhd.common.core.utils.StringUtils;
|
||||
import com.mhd.common.core.utils.bean.BeanUtils;
|
||||
import com.mhd.common.core.utils.uuid.IdGenerator;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
@@ -22,6 +23,8 @@ import com.mhd.wms.domain.inventoryStandingDetail.repository.facade.IInventorySt
|
||||
import com.mhd.wms.domain.inventoryStandingDetail.repository.todo.InventoryStandingDetailDO;
|
||||
import com.mhd.wms.domain.materialBaseInfo.entity.MaterialBaseInfo;
|
||||
import com.mhd.wms.domain.materialBaseInfo.repository.mapper.MaterialBaseInfoMapper;
|
||||
import com.mhd.wms.domain.materialBarCode.repository.facade.IMaterialBarCodeService;
|
||||
import com.mhd.wms.domain.materialBarCode.repository.po.MaterialBarCodePO;
|
||||
import com.mhd.wms.domain.materialInventory.entity.MaterialInventory;
|
||||
import com.mhd.wms.domain.materialInventory.repository.facade.IMaterialInventoryService;
|
||||
import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO;
|
||||
@@ -120,6 +123,8 @@ public class PickingOrderDomainService {
|
||||
@Resource
|
||||
private MaterialBaseInfoMapper materialBaseInfoMapper;
|
||||
@Autowired
|
||||
private IMaterialBarCodeService materialBarCodeService;
|
||||
@Autowired
|
||||
private CopyCodeReferenceDomainService copyCodeReferenceDomainService;
|
||||
|
||||
|
||||
@@ -523,6 +528,39 @@ public class PickingOrderDomainService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 拣货单明细表可能未存物料编码/名称/条码,作业明细从物料主数据(及条码表)补齐,与详情接口从主数据回填一致。
|
||||
*/
|
||||
private void fillTaskPickingMaterialDetailMaterialInfo(TaskPickingMaterialDetailDO detail) {
|
||||
if (detail == null || detail.getMaterialBaseInfoId() == null) {
|
||||
return;
|
||||
}
|
||||
boolean needCode = StringUtils.isBlank(detail.getMaterialCode());
|
||||
boolean needName = StringUtils.isBlank(detail.getMaterialName());
|
||||
boolean needBar = StringUtils.isBlank(detail.getBarCode());
|
||||
if (!needCode && !needName && !needBar) {
|
||||
return;
|
||||
}
|
||||
MaterialBaseInfo m = materialBaseInfoMapper.selectById(detail.getMaterialBaseInfoId());
|
||||
if (m != null) {
|
||||
if (needCode && StringUtils.isNotBlank(m.getMaterialCode())) {
|
||||
detail.setMaterialCode(m.getMaterialCode());
|
||||
}
|
||||
if (needName && StringUtils.isNotBlank(m.getMaterialName())) {
|
||||
detail.setMaterialName(m.getMaterialName());
|
||||
}
|
||||
if (needBar && StringUtils.isNotBlank(m.getBarCode())) {
|
||||
detail.setBarCode(m.getBarCode());
|
||||
}
|
||||
}
|
||||
if (StringUtils.isBlank(detail.getBarCode())) {
|
||||
List<MaterialBarCodePO> barList = materialBarCodeService.getInfoByMaterialBaseInfoIds(detail.getMaterialBaseInfoId());
|
||||
if (!CollectionUtils.isEmpty(barList) && StringUtils.isNotBlank(barList.get(0).getBarCode())) {
|
||||
detail.setBarCode(barList.get(0).getBarCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 按单生成拣货作业单
|
||||
* @author ZhouGY
|
||||
@@ -562,6 +600,7 @@ public class PickingOrderDomainService {
|
||||
TaskPickingMaterialDetailDO taskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO();
|
||||
BeanUtils.copyProperties(materialDetailPO, taskPickingMaterialDetailDO);
|
||||
taskPickingMaterialDetailDO.setPickingUniqueId(materialDetailPO.getUniqueId());
|
||||
fillTaskPickingMaterialDetailMaterialInfo(taskPickingMaterialDetailDO);
|
||||
taskPickingMaterialDetailDOList.add(taskPickingMaterialDetailDO);
|
||||
});
|
||||
stockOutTaskOrderDO.setTaskPickingMaterialDetailList(taskPickingMaterialDetailDOList);
|
||||
@@ -608,6 +647,7 @@ public class PickingOrderDomainService {
|
||||
TaskPickingMaterialDetailDO taskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO();
|
||||
BeanUtils.copyProperties(pickingMaterialDetail, taskPickingMaterialDetailDO);
|
||||
taskPickingMaterialDetailDO.setPickingUniqueId(pickingMaterialDetail.getUniqueId());
|
||||
fillTaskPickingMaterialDetailMaterialInfo(taskPickingMaterialDetailDO);
|
||||
taskPickingMaterialDetailDOList.add(taskPickingMaterialDetailDO);
|
||||
stockOutTaskOrderDO.setTaskPickingMaterialDetailList(taskPickingMaterialDetailDOList);
|
||||
stockOutTaskOrderDOList.add(stockOutTaskOrderDO);
|
||||
|
||||
+17
@@ -129,6 +129,23 @@ public class ReviewOrderDomainService {
|
||||
header.setWarehouseId(stockOutOrder.getWarehouseId());
|
||||
header.setWarehouseCode(stockOutOrder.getWarehouseCode());
|
||||
header.setWarehouseName(stockOutOrder.getWarehouseName());
|
||||
// 出库单上仓库编码常为空,拣货单上一般有 QZ 等编码,与拣货作业单展示一致
|
||||
if (!StringUtils.hasText(header.getWarehouseCode()) || !StringUtils.hasText(header.getWarehouseName()) || header.getWarehouseId() == null) {
|
||||
for (PickingOrder p : pickingOrders) {
|
||||
if (StringUtils.hasText(header.getWarehouseCode()) && StringUtils.hasText(header.getWarehouseName()) && header.getWarehouseId() != null) {
|
||||
break;
|
||||
}
|
||||
if (!StringUtils.hasText(header.getWarehouseCode()) && StringUtils.hasText(p.getWarehouseCode())) {
|
||||
header.setWarehouseCode(p.getWarehouseCode());
|
||||
}
|
||||
if (!StringUtils.hasText(header.getWarehouseName()) && StringUtils.hasText(p.getWarehouseName())) {
|
||||
header.setWarehouseName(p.getWarehouseName());
|
||||
}
|
||||
if (header.getWarehouseId() == null && p.getWarehouseId() != null) {
|
||||
header.setWarehouseId(p.getWarehouseId());
|
||||
}
|
||||
}
|
||||
}
|
||||
header.setCustomerId(stockOutOrder.getCustomerId());
|
||||
header.setCustomerCode(stockOutOrder.getCustomerCode());
|
||||
header.setCustomerName(stockOutOrder.getCustomerName());
|
||||
|
||||
+33
@@ -631,6 +631,20 @@ public class StockOutOrderDomainService {
|
||||
pickingOrderDO.setPickingOrderNumber(OrderSequence.getOrderCode("JH"));
|
||||
pickingOrderDO.setQuantity(p.getAllocationQuantity());
|
||||
List<OutMaterialDetailPO> outMaterialDetailPOS = outMaterialDetailPOListMap.get(p.getOutOrderNumber());
|
||||
// 出库单头 warehouse_code 常为空,用已分配明细(含子行)第一条有仓库编码的行兜底
|
||||
OutMaterialDetailPO warehouseFromDetail = firstOutDetailWithWarehouse(outMaterialDetailPOS);
|
||||
if (warehouseFromDetail != null) {
|
||||
if (StringUtils.isBlank(pickingOrderDO.getWarehouseCode())) {
|
||||
pickingOrderDO.setWarehouseCode(warehouseFromDetail.getWarehouseCode());
|
||||
}
|
||||
if (StringUtils.isBlank(pickingOrderDO.getWarehouseName())
|
||||
&& StringUtils.isNotBlank(warehouseFromDetail.getWarehouseName())) {
|
||||
pickingOrderDO.setWarehouseName(warehouseFromDetail.getWarehouseName());
|
||||
}
|
||||
if (pickingOrderDO.getWarehouseId() == null && warehouseFromDetail.getWarehouseId() != null) {
|
||||
pickingOrderDO.setWarehouseId(warehouseFromDetail.getWarehouseId());
|
||||
}
|
||||
}
|
||||
List<PickingMaterialDetailDO> pickingMaterialDetailList = new ArrayList<>();
|
||||
if (!CollectionUtils.isEmpty(outMaterialDetailPOS)){
|
||||
outMaterialDetailPOS.forEach(outMaterialDetailPO -> {
|
||||
@@ -709,6 +723,25 @@ public class StockOutOrderDomainService {
|
||||
return pickingOrderDomainService.batchInsert(pickingOrderDOList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 从出库明细树中取第一条带仓库编码的行(父行优先,再递归子行)
|
||||
*/
|
||||
private static OutMaterialDetailPO firstOutDetailWithWarehouse(List<OutMaterialDetailPO> lines) {
|
||||
if (CollectionUtils.isEmpty(lines)) {
|
||||
return null;
|
||||
}
|
||||
for (OutMaterialDetailPO line : lines) {
|
||||
if (StringUtils.isNotBlank(line.getWarehouseCode())) {
|
||||
return line;
|
||||
}
|
||||
OutMaterialDetailPO fromChild = firstOutDetailWithWarehouse(line.getChildren());
|
||||
if (fromChild != null) {
|
||||
return fromChild;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 补货
|
||||
* @author ZhouGY
|
||||
|
||||
+13
-1
@@ -34,6 +34,7 @@ import com.mhd.wms.domain.pickingOrder.entity.PickingOrder;
|
||||
import com.mhd.wms.domain.pickingOrder.repository.facade.IPickingOrderService;
|
||||
import com.mhd.wms.domain.pickingOrder.repository.po.PickingOrderPO;
|
||||
import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO;
|
||||
import com.mhd.wms.domain.pickingOrder.service.ReviewOrderDomainService;
|
||||
import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO;
|
||||
import com.mhd.wms.domain.stockInOrder.service.StockInOrderDomainService;
|
||||
import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder;
|
||||
@@ -107,6 +108,8 @@ public class StockOutTaskOrderDomainService {
|
||||
private IMaterialBaseInfoService materialBaseInfoService;
|
||||
@Autowired
|
||||
private CopyCodeReferenceDomainService copyCodeReferenceDomainService;
|
||||
@Autowired
|
||||
private ReviewOrderDomainService reviewOrderDomainService;
|
||||
@Resource
|
||||
private OutMaterialDetailMapper outMaterialDetailMapper;
|
||||
|
||||
@@ -882,8 +885,17 @@ public class StockOutTaskOrderDomainService {
|
||||
stockOutOrder.setUpdateBy(loginUser.getUserid());
|
||||
stockOutOrder.setUpdateByName(loginUser.getUsername());
|
||||
stockOutOrder.setUpdateTime(new Date());
|
||||
return stockOutOrderService.update(stockOutOrder,
|
||||
boolean stockOutUpdated = stockOutOrderService.update(stockOutOrder,
|
||||
new QueryWrapper<StockOutOrder>().lambda().eq(StockOutOrder::getOutOrderNumber, pickingOrderPODb.getOrderNumber()));
|
||||
// 与 PickingOrderDomainService.picking 一致:PDA 按物料拣货/作业单路径拣满时只走本方法,需触发生成复核单
|
||||
if (stockOutUpdated) {
|
||||
StockOutOrder so = stockOutOrderService.getOne(new LambdaQueryWrapper<StockOutOrder>()
|
||||
.eq(StockOutOrder::getOutOrderNumber, pickingOrderPODb.getOrderNumber()));
|
||||
if (so != null) {
|
||||
reviewOrderDomainService.tryGenerateReviewOrderAfterPickingComplete(pickingOrderPODb, so);
|
||||
}
|
||||
}
|
||||
return stockOutUpdated;
|
||||
}else {
|
||||
//波次单
|
||||
WaveOrder waveOrderDb = waveOrderService.getOne(new QueryWrapper<WaveOrder>().lambda()
|
||||
|
||||
Reference in New Issue
Block a user