PDABug修改
This commit is contained in:
+30
-4
@@ -457,10 +457,36 @@ public class MaterialInventoryApplicationService {
|
|||||||
*/
|
*/
|
||||||
public List<MaterialInventoryQueryListPO> materialQueryList(MaterialInventoryQueryListDO materialInventoryQueryListDO) {
|
public List<MaterialInventoryQueryListPO> materialQueryList(MaterialInventoryQueryListDO materialInventoryQueryListDO) {
|
||||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||||
if (loginUser != null){
|
//topOrganizationId 会查到一级组织下全部子组织
|
||||||
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
if (loginUser != null && loginUser.getUserPo() != null) {
|
||||||
if (topOrganizationId != null && topOrganizationId != 1){
|
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
|
||||||
materialInventoryQueryListDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
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);
|
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.constant.SnowFlakeConstants;
|
||||||
import com.mhd.common.core.exception.ServiceException;
|
import com.mhd.common.core.exception.ServiceException;
|
||||||
import com.mhd.common.core.utils.OrderSequence;
|
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.bean.BeanUtils;
|
||||||
import com.mhd.common.core.utils.uuid.IdGenerator;
|
import com.mhd.common.core.utils.uuid.IdGenerator;
|
||||||
import com.mhd.common.security.utils.SecurityUtils;
|
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.inventoryStandingDetail.repository.todo.InventoryStandingDetailDO;
|
||||||
import com.mhd.wms.domain.materialBaseInfo.entity.MaterialBaseInfo;
|
import com.mhd.wms.domain.materialBaseInfo.entity.MaterialBaseInfo;
|
||||||
import com.mhd.wms.domain.materialBaseInfo.repository.mapper.MaterialBaseInfoMapper;
|
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.entity.MaterialInventory;
|
||||||
import com.mhd.wms.domain.materialInventory.repository.facade.IMaterialInventoryService;
|
import com.mhd.wms.domain.materialInventory.repository.facade.IMaterialInventoryService;
|
||||||
import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO;
|
import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO;
|
||||||
@@ -120,6 +123,8 @@ public class PickingOrderDomainService {
|
|||||||
@Resource
|
@Resource
|
||||||
private MaterialBaseInfoMapper materialBaseInfoMapper;
|
private MaterialBaseInfoMapper materialBaseInfoMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
private IMaterialBarCodeService materialBarCodeService;
|
||||||
|
@Autowired
|
||||||
private CopyCodeReferenceDomainService copyCodeReferenceDomainService;
|
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 按单生成拣货作业单
|
* @description 按单生成拣货作业单
|
||||||
* @author ZhouGY
|
* @author ZhouGY
|
||||||
@@ -562,6 +600,7 @@ public class PickingOrderDomainService {
|
|||||||
TaskPickingMaterialDetailDO taskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO();
|
TaskPickingMaterialDetailDO taskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO();
|
||||||
BeanUtils.copyProperties(materialDetailPO, taskPickingMaterialDetailDO);
|
BeanUtils.copyProperties(materialDetailPO, taskPickingMaterialDetailDO);
|
||||||
taskPickingMaterialDetailDO.setPickingUniqueId(materialDetailPO.getUniqueId());
|
taskPickingMaterialDetailDO.setPickingUniqueId(materialDetailPO.getUniqueId());
|
||||||
|
fillTaskPickingMaterialDetailMaterialInfo(taskPickingMaterialDetailDO);
|
||||||
taskPickingMaterialDetailDOList.add(taskPickingMaterialDetailDO);
|
taskPickingMaterialDetailDOList.add(taskPickingMaterialDetailDO);
|
||||||
});
|
});
|
||||||
stockOutTaskOrderDO.setTaskPickingMaterialDetailList(taskPickingMaterialDetailDOList);
|
stockOutTaskOrderDO.setTaskPickingMaterialDetailList(taskPickingMaterialDetailDOList);
|
||||||
@@ -608,6 +647,7 @@ public class PickingOrderDomainService {
|
|||||||
TaskPickingMaterialDetailDO taskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO();
|
TaskPickingMaterialDetailDO taskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO();
|
||||||
BeanUtils.copyProperties(pickingMaterialDetail, taskPickingMaterialDetailDO);
|
BeanUtils.copyProperties(pickingMaterialDetail, taskPickingMaterialDetailDO);
|
||||||
taskPickingMaterialDetailDO.setPickingUniqueId(pickingMaterialDetail.getUniqueId());
|
taskPickingMaterialDetailDO.setPickingUniqueId(pickingMaterialDetail.getUniqueId());
|
||||||
|
fillTaskPickingMaterialDetailMaterialInfo(taskPickingMaterialDetailDO);
|
||||||
taskPickingMaterialDetailDOList.add(taskPickingMaterialDetailDO);
|
taskPickingMaterialDetailDOList.add(taskPickingMaterialDetailDO);
|
||||||
stockOutTaskOrderDO.setTaskPickingMaterialDetailList(taskPickingMaterialDetailDOList);
|
stockOutTaskOrderDO.setTaskPickingMaterialDetailList(taskPickingMaterialDetailDOList);
|
||||||
stockOutTaskOrderDOList.add(stockOutTaskOrderDO);
|
stockOutTaskOrderDOList.add(stockOutTaskOrderDO);
|
||||||
|
|||||||
+17
@@ -129,6 +129,23 @@ public class ReviewOrderDomainService {
|
|||||||
header.setWarehouseId(stockOutOrder.getWarehouseId());
|
header.setWarehouseId(stockOutOrder.getWarehouseId());
|
||||||
header.setWarehouseCode(stockOutOrder.getWarehouseCode());
|
header.setWarehouseCode(stockOutOrder.getWarehouseCode());
|
||||||
header.setWarehouseName(stockOutOrder.getWarehouseName());
|
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.setCustomerId(stockOutOrder.getCustomerId());
|
||||||
header.setCustomerCode(stockOutOrder.getCustomerCode());
|
header.setCustomerCode(stockOutOrder.getCustomerCode());
|
||||||
header.setCustomerName(stockOutOrder.getCustomerName());
|
header.setCustomerName(stockOutOrder.getCustomerName());
|
||||||
|
|||||||
+33
@@ -631,6 +631,20 @@ public class StockOutOrderDomainService {
|
|||||||
pickingOrderDO.setPickingOrderNumber(OrderSequence.getOrderCode("JH"));
|
pickingOrderDO.setPickingOrderNumber(OrderSequence.getOrderCode("JH"));
|
||||||
pickingOrderDO.setQuantity(p.getAllocationQuantity());
|
pickingOrderDO.setQuantity(p.getAllocationQuantity());
|
||||||
List<OutMaterialDetailPO> outMaterialDetailPOS = outMaterialDetailPOListMap.get(p.getOutOrderNumber());
|
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<>();
|
List<PickingMaterialDetailDO> pickingMaterialDetailList = new ArrayList<>();
|
||||||
if (!CollectionUtils.isEmpty(outMaterialDetailPOS)){
|
if (!CollectionUtils.isEmpty(outMaterialDetailPOS)){
|
||||||
outMaterialDetailPOS.forEach(outMaterialDetailPO -> {
|
outMaterialDetailPOS.forEach(outMaterialDetailPO -> {
|
||||||
@@ -709,6 +723,25 @@ public class StockOutOrderDomainService {
|
|||||||
return pickingOrderDomainService.batchInsert(pickingOrderDOList);
|
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 补货
|
* @description 补货
|
||||||
* @author ZhouGY
|
* @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.facade.IPickingOrderService;
|
||||||
import com.mhd.wms.domain.pickingOrder.repository.po.PickingOrderPO;
|
import com.mhd.wms.domain.pickingOrder.repository.po.PickingOrderPO;
|
||||||
import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO;
|
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.repository.todo.StockInOrderDO;
|
||||||
import com.mhd.wms.domain.stockInOrder.service.StockInOrderDomainService;
|
import com.mhd.wms.domain.stockInOrder.service.StockInOrderDomainService;
|
||||||
import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder;
|
import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder;
|
||||||
@@ -107,6 +108,8 @@ public class StockOutTaskOrderDomainService {
|
|||||||
private IMaterialBaseInfoService materialBaseInfoService;
|
private IMaterialBaseInfoService materialBaseInfoService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private CopyCodeReferenceDomainService copyCodeReferenceDomainService;
|
private CopyCodeReferenceDomainService copyCodeReferenceDomainService;
|
||||||
|
@Autowired
|
||||||
|
private ReviewOrderDomainService reviewOrderDomainService;
|
||||||
@Resource
|
@Resource
|
||||||
private OutMaterialDetailMapper outMaterialDetailMapper;
|
private OutMaterialDetailMapper outMaterialDetailMapper;
|
||||||
|
|
||||||
@@ -882,8 +885,17 @@ public class StockOutTaskOrderDomainService {
|
|||||||
stockOutOrder.setUpdateBy(loginUser.getUserid());
|
stockOutOrder.setUpdateBy(loginUser.getUserid());
|
||||||
stockOutOrder.setUpdateByName(loginUser.getUsername());
|
stockOutOrder.setUpdateByName(loginUser.getUsername());
|
||||||
stockOutOrder.setUpdateTime(new Date());
|
stockOutOrder.setUpdateTime(new Date());
|
||||||
return stockOutOrderService.update(stockOutOrder,
|
boolean stockOutUpdated = stockOutOrderService.update(stockOutOrder,
|
||||||
new QueryWrapper<StockOutOrder>().lambda().eq(StockOutOrder::getOutOrderNumber, pickingOrderPODb.getOrderNumber()));
|
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 {
|
}else {
|
||||||
//波次单
|
//波次单
|
||||||
WaveOrder waveOrderDb = waveOrderService.getOne(new QueryWrapper<WaveOrder>().lambda()
|
WaveOrder waveOrderDb = waveOrderService.getOne(new QueryWrapper<WaveOrder>().lambda()
|
||||||
|
|||||||
Reference in New Issue
Block a user