diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java index edc0d1d51..11926c071 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.mhd.common.core.constant.SnowFlakeConstants; import com.mhd.common.core.domain.po.UserPo; import com.mhd.common.core.enums.DictCode; @@ -23,14 +24,19 @@ import com.mhd.system.api.domain.WarehouseFeignPO; 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.domain.materialInventory.entity.MaterialInventory; import com.mhd.wms.domain.materialInventory.repository.mapper.MaterialInventoryMapper; import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO; import com.mhd.wms.domain.materialInventory.service.MaterialInventoryDomainService; import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO; +import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; +import com.mhd.wms.domain.outMaterialDetail.repository.facade.IOutMaterialDetailService; import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialCheckPO; import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO; import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; import com.mhd.wms.domain.outMaterialDetail.service.OutMaterialDetailDomainService; +import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder; +import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService; import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO; import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO; import com.mhd.wms.domain.stockOutOrder.service.StockOutOrderDomainService; @@ -69,6 +75,10 @@ public class StockOutOrderApplicationService { private SystemServiceFeign systemServiceFeign; @Autowired private IdGenerator idGenerator; + @Autowired + private IStockOutOrderService stockOutOrderService; + @Autowired + private IOutMaterialDetailService outMaterialDetailService; /** @@ -570,10 +580,66 @@ public class StockOutOrderApplicationService { return stockOutOrderDomainService.manualAssign(assembleStockOutOrderDO); } + /** + * @description 手动分配 + * @author ZhouGY + * @date 2024/5/28 13:47 + * @param stockOutOrderDO + * @return Boolean + */ public Boolean autoAssign(StockOutOrderDO stockOutOrderDO){ + List outOrderIds = stockOutOrderDO.getOutOrderIds(); + if (outOrderIds == null || outOrderIds.isEmpty()){ + throw new ServiceException("出库单ID不能为空"); + } + Boolean result = true; + for (Long outOrderId : outOrderIds){ + StockOutOrderDO stockOutOrderD = new StockOutOrderDO(); + StockOutOrder stockOutOrderDb = stockOutOrderService.getById(outOrderId); + if (stockOutOrderDb == null){ + throw new ServiceException("出库单ID不存在"); + } + BeanUtils.copyProperties(stockOutOrderDb, stockOutOrderD); + List outMaterialDetailList = outMaterialDetailService.list(new QueryWrapper().lambda() + .eq(OutMaterialDetail::getOutOrderNumber, stockOutOrderDb.getOutOrderNumber())); + List materialDetailList = cn.hutool.core.bean.BeanUtil.copyToList(outMaterialDetailList, OutMaterialDetailDO.class); + for (OutMaterialDetailDO detail : materialDetailList) { + detail.setAllocationQuantity(detail.getQuantity()); + String batchRefNo = detail.getBatchRefNo(); + String sheetRefNo = detail.getSheetRefNo(); + String boxPalletNo = detail.getBoxPalletNo(); + Long materialBaseInfoId = detail.getMaterialBaseInfoId(); + List materialInventories = materialInventoryMapper.selectList(new QueryWrapper().lambda() + .eq(MaterialInventory::getBatchRefNo, batchRefNo) + .eq(MaterialInventory::getSheetRefNo, sheetRefNo) + .eq(MaterialInventory::getBoxPalletNo, boxPalletNo) + .eq(MaterialInventory::getMaterialBaseInfoId, materialBaseInfoId)); + if (materialInventories == null || materialInventories.isEmpty()) { + throw new ServiceException("库存不存在:" + batchRefNo + " " + sheetRefNo + " " + boxPalletNo); + } + MaterialInventory materialInventory = materialInventories.get(0); + detail.setMaterialInventoryId(materialInventory.getMaterialInventoryId()); + detail.setStorageLocationId(materialInventory.getStorageLocationId()); + detail.setStorageLocationName(materialInventory.getStorageLocationName()); + detail.setStorageLocationCode(materialInventory.getStorageLocationCode()); + detail.setStorageSectionId(materialInventory.getStorageSectionId()); + detail.setStorageName(materialInventory.getStorageName()); + detail.setStorageCode(materialInventory.getStorageCode()); + } + stockOutOrderD.setMaterialDetailList(materialDetailList); + StockOutOrderDO assembleStockOutOrderDO = assembleParamByOutOrder(stockOutOrderDO); + Boolean assignResult = stockOutOrderDomainService.autoAssign(assembleStockOutOrderDO); + if (!assignResult) { + result = false; + } + } + return result; + } + + /*public Boolean autoAssign(StockOutOrderDO stockOutOrderDO){ StockOutOrderDO assembleStockOutOrderDO = assembleParamByOutOrder(stockOutOrderDO); return stockOutOrderDomainService.autoAssign(assembleStockOutOrderDO); - } + }*/ /** * @description 取消分配 diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java index 078fa0dac..2176a9a67 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java @@ -249,7 +249,35 @@ public class StockOutOrderDomainService { return updateStockOutOrderByAllocation(stockOutOrderDb, stockOutOrderPO, 1); } + /** + * @description 手动分配 + * @author ZhouGY + * @date 2024/5/22 16:20 + * @param stockOutOrderDO + * @return Boolean + */ @Transactional(rollbackFor = Exception.class) + public Boolean autoAssign(StockOutOrderDO stockOutOrderDO){ + List outOrderIds = stockOutOrderDO.getOutOrderIds(); + if (outOrderIds == null || outOrderIds.isEmpty()){ + throw new ServiceException("出库单ID不能为空"); + } + StockOutOrder stockOutOrderDb = stockOutOrderService.getById(stockOutOrderDO.getOutOrderId()); + if (stockOutOrderDb == null){ + throw new ServiceException("出库单不存在"); + } + if (stockOutOrderDb.getStatus() > 3){ + throw new ServiceException("收货单已完成分配"); + } + List outMaterialDetailList = outMaterialDetailService.list(new QueryWrapper().lambda() + .eq(OutMaterialDetail::getOutOrderNumber, stockOutOrderDb.getOutOrderNumber())); + //修改物料明细信息 + StockOutOrderPO stockOutOrderPO = outMaterialDetailService.batchAssignUpdate(stockOutOrderDb.getOutOrderNumber(), stockOutOrderDO.getMaterialDetailList()); + //修改出库单 + return updateStockOutOrderByAllocation(stockOutOrderDb, stockOutOrderPO, 1); + } + + /*@Transactional(rollbackFor = Exception.class) public Boolean autoAssign(StockOutOrderDO stockOutOrderDO){ StockOutOrder stockOutOrderDb = stockOutOrderService.getById(stockOutOrderDO.getOutOrderId()); if (stockOutOrderDb == null){ @@ -273,7 +301,7 @@ public class StockOutOrderDomainService { StockOutOrderPO stockOutOrderPO = outMaterialDetailService.batchAssignUpdate(stockOutOrderDb.getOutOrderNumber(), stockOutOrderDO.getMaterialDetailList()); //修改出库单 return updateStockOutOrderByAllocation(stockOutOrderDb, stockOutOrderPO, 1); - } + }*/ /** * @description 手动取消分配(点击确认后直接取消分配) diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java index 7d4fa5081..1d8385078 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java @@ -173,6 +173,17 @@ public class StockOutOrderApi extends BaseController { } + /** + * 手动分配 + */ + @ApiOperation("自动分配") + @PostMapping("/autoAssign") + public AjaxResult autoAssign(@RequestBody StockOutOrderDTO stockOutOrderDTO) { + StockOutOrderDO stockOutOrderDO = new StockOutOrderDO(); + BeanUtils.copyProperties(stockOutOrderDTO, stockOutOrderDO); + return toAjax(stockOutOrderApplicationService.autoAssign(stockOutOrderDO)); + } + /** * 取消分配 */ @@ -325,12 +336,12 @@ public class StockOutOrderApi extends BaseController { /** * 自动分配 */ - @ApiOperation("自动分配") + /*@ApiOperation("自动分配") @PostMapping("/autoAssign") public AjaxResult autoAssign(@RequestBody StockOutOrderDTO stockOutOrderDTO) { StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class); return toAjax(stockOutOrderApplicationService.autoAssign(stockOutOrderDO)); - } + }*/ @ApiOperation("关闭出库单")