出库单执行生成拣货单及取消执行删除拣货单;
This commit is contained in:
+28
@@ -1123,6 +1123,34 @@ public class StockOutOrderApplicationService {
|
||||
return b;
|
||||
}
|
||||
|
||||
public Boolean genPickingOrderByOms(StockOutOrderDO stockOutOrderDO){
|
||||
Boolean b = stockOutOrderDomainService.genPickingOrderByOms(stockOutOrderDO);
|
||||
// List<Long> outOrderIds = stockOutOrderDO.getOutOrderIds();
|
||||
// if (outOrderIds != null && !outOrderIds.isEmpty()) {
|
||||
// StockOutOrder order = stockOutOrderService.getById(outOrderIds.get(0));
|
||||
// String needDeclareFlag = order.getNeedDeclareFlag();
|
||||
// Long organizationId = order.getOrganizationId();
|
||||
// try {
|
||||
// if (needDeclareFlag != null && "1".equals(needDeclareFlag) && organizationId != null) {
|
||||
// if (organizationId == 2830) {
|
||||
// Long outOrderId = order.getOutOrderId();
|
||||
// List<Long> ids = new ArrayList<>();
|
||||
// ids.add(outOrderId);
|
||||
// //batchPush(ids);
|
||||
// } else {
|
||||
// String outOrderId = order.getOutOrderNumber();
|
||||
// List<String> ids = new ArrayList<>();
|
||||
// ids.add(outOrderId);
|
||||
// //omsServiceFeign.batchPushByNumber(ids);
|
||||
// }
|
||||
// }
|
||||
// } catch (Exception e) {
|
||||
// throw new ServiceException("生成报关单失败");
|
||||
// }
|
||||
// }
|
||||
return b;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取出库单复核详细信息
|
||||
*/
|
||||
|
||||
+158
-1
@@ -57,9 +57,12 @@ import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailBas
|
||||
import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO;
|
||||
import com.mhd.wms.domain.outOrderAbnormal.repository.facade.IOutOrderAbnormalService;
|
||||
import com.mhd.wms.domain.outOrderAbnormal.repository.todo.OutOrderAbnormalBaseDO;
|
||||
import com.mhd.wms.domain.pickingMaterialDetail.entity.PickingMaterialDetail;
|
||||
import com.mhd.wms.domain.pickingMaterialDetail.repository.facade.IPickingMaterialDetailService;
|
||||
import com.mhd.wms.domain.pickingMaterialDetail.repository.po.PickingMaterialDetailPO;
|
||||
import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDO;
|
||||
import com.mhd.wms.domain.pickingOrder.entity.PickingOrder;
|
||||
import com.mhd.wms.domain.pickingOrder.repository.facade.IPickingOrderService;
|
||||
import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO;
|
||||
import com.mhd.wms.domain.pickingOrder.service.PickingOrderDomainService;
|
||||
import com.mhd.wms.domain.pushSyncBms.PushSyncBmsDomainService;
|
||||
@@ -144,7 +147,8 @@ public class StockOutOrderDomainService {
|
||||
private IInventoryAdjustmentRecordService inventoryAdjustmentRecordService;
|
||||
@Autowired
|
||||
private IPickingMaterialDetailService pickingMaterialDetailService;
|
||||
|
||||
@Autowired
|
||||
private IPickingOrderService pickingOrderService;
|
||||
/**
|
||||
* 分页查询出库单列表
|
||||
*/
|
||||
@@ -763,6 +767,144 @@ public class StockOutOrderDomainService {
|
||||
return inserted;
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean genPickingOrderByOms(StockOutOrderDO stockOutOrderDO){
|
||||
List<StockOutOrder> stockOutOrderList = stockOutOrderService.list(new QueryWrapper<StockOutOrder>().lambda()
|
||||
.eq(StockOutOrder::getDelFlag, 1)
|
||||
.in(StockOutOrder::getStatus,3,4)
|
||||
.eq(StockOutOrder::getOutOrderNumber, stockOutOrderDO.getOutOrderNumber()));
|
||||
if (CollectionUtils.isEmpty(stockOutOrderList)){
|
||||
throw new ServiceException("只有已分配过的出库单才能生成拣货单");
|
||||
}
|
||||
//修改出库单状态为拣货中
|
||||
List<Long> stockOutOrderId = stockOutOrderList.stream().map(StockOutOrder::getOutOrderId).collect(Collectors.toList());
|
||||
StockOutOrder stockOutOrder = new StockOutOrder();
|
||||
stockOutOrder.setStatus(6);
|
||||
stockOutOrderService.update(stockOutOrder, new UpdateWrapper<StockOutOrder>().lambda().in(StockOutOrder::getOutOrderId, stockOutOrderId));
|
||||
|
||||
List<String> stockOutOrderNumber = stockOutOrderList.stream().map(StockOutOrder::getOutOrderNumber).collect(Collectors.toList());
|
||||
List<OutMaterialDetail> list = outMaterialDetailService.list(new QueryWrapper<OutMaterialDetail>().lambda().in(OutMaterialDetail::getOutOrderNumber, stockOutOrderNumber).eq(OutMaterialDetail::getGenPickingOrder, 2));
|
||||
if (CollectionUtils.isEmpty(list)){
|
||||
throw new ServiceException("不存在已分配且未生成拣货单的物料明细,无法生成拣货单!");
|
||||
}
|
||||
List<String> outOrderNumberList = stockOutOrderList.stream().map(StockOutOrder::getOutOrderNumber).collect(Collectors.toList());
|
||||
OutMaterialDetailDO outMaterialDetailDO = new OutMaterialDetailDO();
|
||||
outMaterialDetailDO.setOutOrderNumberList(outOrderNumberList);
|
||||
List<OutMaterialDetailPO> outMaterialDetailPOList = outMaterialDetailService.queryListChildren(outMaterialDetailDO);
|
||||
Map<String, List<OutMaterialDetailPO>> outMaterialDetailPOListMap = outMaterialDetailPOList.stream().collect(Collectors.groupingBy(OutMaterialDetailPO::getOutOrderNumber));
|
||||
List<PickingOrderDO> pickingOrderDOList = new ArrayList<>();
|
||||
stockOutOrderList.forEach(p -> {
|
||||
PickingOrderDO pickingOrderDO = new PickingOrderDO();
|
||||
BeanUtils.copyProperties(p, pickingOrderDO);
|
||||
pickingOrderDO.setOrderNumber(p.getOutOrderNumber());
|
||||
pickingOrderDO.setPickingOrderNumber(OrderSequence.getOrderCode("JH"));
|
||||
pickingOrderDO.setQuantity(p.getAllocationQuantity());
|
||||
if (pickingOrderDO.getWarehouseId() == null && p.getWarehouseId() != null) {
|
||||
pickingOrderDO.setWarehouseId(p.getWarehouseId());
|
||||
pickingOrderDO.setWarehouseCode(p.getWarehouseCode());
|
||||
pickingOrderDO.setWarehouseName(p.getWarehouseName());
|
||||
}
|
||||
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 -> {
|
||||
BigDecimal allocationQuantity = outMaterialDetailPO.getAllocationQuantity();
|
||||
if (allocationQuantity != null && allocationQuantity.compareTo(BigDecimal.ZERO) > 0) {
|
||||
PickingMaterialDetailDO pickingMaterialDetailDO = new PickingMaterialDetailDO();
|
||||
BeanUtils.copyProperties(outMaterialDetailPO, pickingMaterialDetailDO);
|
||||
pickingMaterialDetailDO.setPickingOrderNumber(pickingOrderDO.getPickingOrderNumber());
|
||||
pickingMaterialDetailDO.setQuantity(outMaterialDetailPO.getAllocationQuantity());
|
||||
//设置出库明细关联id
|
||||
pickingMaterialDetailDO.setOutUniqueId(outMaterialDetailPO.getUniqueId());
|
||||
pickingMaterialDetailDO.setMaterialCode(outMaterialDetailPO.getMaterialNo());
|
||||
pickingMaterialDetailDO.setMaterialName(outMaterialDetailPO.getCommodityName());
|
||||
pickingMaterialDetailDO.setBarCode(outMaterialDetailPO.getBarCode());
|
||||
//设置批次属性字段(从出库单明细中获取)
|
||||
pickingMaterialDetailDO.setBatchRefNo(outMaterialDetailPO.getBatchRefNo());
|
||||
pickingMaterialDetailDO.setSheetRefNo(outMaterialDetailPO.getSheetRefNo());
|
||||
pickingMaterialDetailDO.setBoxPalletNo(outMaterialDetailPO.getBoxPalletNo());
|
||||
pickingMaterialDetailDO.setExtAttr1(outMaterialDetailPO.getExtAttr1());
|
||||
pickingMaterialDetailDO.setExtAttr2(outMaterialDetailPO.getExtAttr2());
|
||||
pickingMaterialDetailDO.setProductionDate(outMaterialDetailPO.getProductionDate());
|
||||
pickingMaterialDetailDO.setExpiryDate(outMaterialDetailPO.getExpiryDate());
|
||||
pickingMaterialDetailDO.setInventoryDate(outMaterialDetailPO.getInventoryDate());
|
||||
pickingMaterialDetailDO.setExtAttr3(outMaterialDetailPO.getExtAttr3());
|
||||
pickingMaterialDetailDO.setExtAttr4(outMaterialDetailPO.getExtAttr4());
|
||||
// 毛重、净重、面积、体积从出库单明细自动带出
|
||||
pickingMaterialDetailDO.setTotalGrossWeight(outMaterialDetailPO.getTotalGrossWeight());
|
||||
//判断是否是抄码商品净重
|
||||
if (outMaterialDetailPO.getCopyTotalWeight() != null){
|
||||
pickingMaterialDetailDO.setTotalNetWeight(outMaterialDetailPO.getCopyTotalWeight());
|
||||
pickingMaterialDetailDO.setCopyCodeReferenceIds(outMaterialDetailPO.getCopyCodeReferenceIds());
|
||||
}else {
|
||||
pickingMaterialDetailDO.setTotalNetWeight(outMaterialDetailPO.getTotalNetWeight());
|
||||
}
|
||||
pickingMaterialDetailDO.setTotalArea(outMaterialDetailPO.getTotalArea());
|
||||
pickingMaterialDetailDO.setTotalVolume(outMaterialDetailPO.getTotalVolume());
|
||||
pickingMaterialDetailList.add(pickingMaterialDetailDO);
|
||||
List<OutMaterialDetailPO> outMaterialDetailPOListChildren = outMaterialDetailPO.getChildren();
|
||||
if (!CollectionUtils.isEmpty(outMaterialDetailPOListChildren)){
|
||||
outMaterialDetailPOListChildren.forEach(outMaterialDetailPOChildren -> {
|
||||
PickingMaterialDetailDO pickingMaterialDetailDOChildren = new PickingMaterialDetailDO();
|
||||
BeanUtils.copyProperties(pickingMaterialDetailDO, pickingMaterialDetailDOChildren);
|
||||
BeanUtils.copyProperties(outMaterialDetailPOChildren, pickingMaterialDetailDOChildren);
|
||||
pickingMaterialDetailDOChildren.setPickingOrderNumber(pickingOrderDO.getPickingOrderNumber());
|
||||
pickingMaterialDetailDOChildren.setQuantity(outMaterialDetailPOChildren.getAllocationQuantity());
|
||||
//设置出库明细关联id
|
||||
pickingMaterialDetailDOChildren.setOutUniqueId(outMaterialDetailPOChildren.getUniqueId());
|
||||
pickingMaterialDetailDOChildren.setMaterialCode(outMaterialDetailPOChildren.getMaterialNo());
|
||||
pickingMaterialDetailDOChildren.setMaterialName(outMaterialDetailPOChildren.getCommodityName());
|
||||
pickingMaterialDetailDOChildren.setBarCode(outMaterialDetailPOChildren.getBarCode());
|
||||
//设置批次属性字段(从出库单明细中获取)
|
||||
pickingMaterialDetailDOChildren.setBatchRefNo(outMaterialDetailPOChildren.getBatchRefNo());
|
||||
pickingMaterialDetailDOChildren.setSheetRefNo(outMaterialDetailPOChildren.getSheetRefNo());
|
||||
pickingMaterialDetailDOChildren.setBoxPalletNo(outMaterialDetailPOChildren.getBoxPalletNo());
|
||||
pickingMaterialDetailDOChildren.setExtAttr1(outMaterialDetailPOChildren.getExtAttr1());
|
||||
pickingMaterialDetailDOChildren.setExtAttr2(outMaterialDetailPOChildren.getExtAttr2());
|
||||
pickingMaterialDetailDOChildren.setProductionDate(outMaterialDetailPOChildren.getProductionDate());
|
||||
pickingMaterialDetailDOChildren.setExpiryDate(outMaterialDetailPOChildren.getExpiryDate());
|
||||
pickingMaterialDetailDOChildren.setInventoryDate(outMaterialDetailPOChildren.getInventoryDate());
|
||||
pickingMaterialDetailDOChildren.setExtAttr3(outMaterialDetailPOChildren.getExtAttr3());
|
||||
pickingMaterialDetailDOChildren.setExtAttr4(outMaterialDetailPOChildren.getExtAttr4());
|
||||
// 毛重、净重、面积、体积从出库单明细子行自动带出
|
||||
pickingMaterialDetailDOChildren.setTotalGrossWeight(outMaterialDetailPOChildren.getTotalGrossWeight());
|
||||
pickingMaterialDetailDOChildren.setTotalNetWeight(outMaterialDetailPOChildren.getTotalNetWeight());
|
||||
pickingMaterialDetailDOChildren.setTotalArea(outMaterialDetailPOChildren.getTotalArea());
|
||||
pickingMaterialDetailDOChildren.setTotalVolume(outMaterialDetailPOChildren.getTotalVolume());
|
||||
pickingMaterialDetailList.add(pickingMaterialDetailDOChildren);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
pickingOrderDO.setMaterialDetailList(pickingMaterialDetailList);
|
||||
}
|
||||
pickingOrderDOList.add(pickingOrderDO);
|
||||
});
|
||||
Boolean inserted = pickingOrderDomainService.batchInsert(pickingOrderDOList);
|
||||
if (Boolean.TRUE.equals(inserted)) {
|
||||
List<String> pickingOrderNumbers = pickingOrderDOList.stream()
|
||||
.map(PickingOrderDO::getPickingOrderNumber)
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.collect(Collectors.toList());
|
||||
pickingOrderDomainService.autoTaskDistributionAfterGenPickingOrders(pickingOrderNumbers);
|
||||
}
|
||||
return inserted;
|
||||
}
|
||||
|
||||
/**
|
||||
* 从出库明细树中取第一条带仓库编码的行(父行优先,再递归子行)
|
||||
*/
|
||||
@@ -1788,6 +1930,21 @@ public class StockOutOrderDomainService {
|
||||
//逻辑删除出库单
|
||||
stockOutOrder.setDelFlag(2);
|
||||
stockOutOrderService.updateById(stockOutOrder);
|
||||
|
||||
PickingOrder pickingOrder = pickingOrderService.getOne(new LambdaQueryWrapper<PickingOrder>()
|
||||
.eq(PickingOrder::getDelFlag, 1)
|
||||
.eq(PickingOrder::getOrderNumber, outOrderNumber));
|
||||
if (pickingOrder != null) {
|
||||
String pickingOrderNumber = pickingOrder.getPickingOrderNumber();
|
||||
List<PickingMaterialDetail> list = pickingMaterialDetailService.list(new LambdaQueryWrapper<PickingMaterialDetail>()
|
||||
.eq(PickingMaterialDetail::getPickingOrderNumber, pickingOrderNumber)
|
||||
.eq(PickingMaterialDetail::getDelFlag, 1));
|
||||
for (PickingMaterialDetail pickingMaterialDetail : list) {
|
||||
pickingMaterialDetail.setDelFlag(2);
|
||||
pickingMaterialDetailService.updateById(pickingMaterialDetail);
|
||||
}
|
||||
pickingOrderService.updateById(pickingOrder);
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
|
||||
+10
@@ -326,6 +326,16 @@ public class StockOutOrderApi extends BaseController {
|
||||
return toAjax(stockOutOrderApplicationService.genPickingOrder(stockOutOrderDO));
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成拣货单
|
||||
*/
|
||||
@ApiOperation("生成拣货单")
|
||||
@PostMapping("/genPickingOrderByOms")
|
||||
public AjaxResult genPickingOrderByOms(@RequestBody com.mhd.system.api.domain.StockOutOrderDTO stockOutOrderDTO) {
|
||||
StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class);
|
||||
return toAjax(stockOutOrderApplicationService.genPickingOrderByOms(stockOutOrderDO));
|
||||
}
|
||||
|
||||
/**
|
||||
* 复核下发
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user