出库流程;

This commit is contained in:
王奎兴
2026-01-26 17:04:40 +08:00
parent 1f8f89264b
commit 797f2db7c1
4 changed files with 83 additions and 26 deletions
@@ -408,6 +408,7 @@ public class StockOutOrderApplicationService {
throw new ServiceException("获取货主信息失败"); throw new ServiceException("获取货主信息失败");
} }
UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class); UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
stockOutOrderDO.setShipperId(userPo.getUserId());
stockOutOrderDO.setShipperCode(userPo.getUserMemberCode()); stockOutOrderDO.setShipperCode(userPo.getUserMemberCode());
stockOutOrderDO.setShipperName(userPo.getUserName()); stockOutOrderDO.setShipperName(userPo.getUserName());
} }
@@ -1,16 +1,23 @@
package com.mhd.wms.domain.handoverTaskOrder.service; package com.mhd.wms.domain.handoverTaskOrder.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.mhd.common.core.utils.bean.BeanUtils;
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.handoverTaskOrder.entity.HandoverTaskOrder; import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder;
import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService; import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService;
import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO; import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO;
import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO; import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO;
import com.mhd.wms.domain.materialInventory.entity.MaterialInventory;
import com.mhd.wms.domain.materialInventory.repository.mapper.MaterialInventoryMapper;
import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail;
import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailMapper;
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 java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@@ -26,6 +33,10 @@ public class HandoverTaskOrderDomainService {
@Autowired @Autowired
private IHandoverTaskOrderService handoverTaskOrderService; private IHandoverTaskOrderService handoverTaskOrderService;
@Autowired
private MaterialInventoryMapper materialInventoryMapper;
@Autowired
private OutMaterialDetailMapper outMaterialDetailMapper;
/** /**
@@ -118,6 +129,31 @@ public class HandoverTaskOrderDomainService {
* @return Boolean * @return Boolean
*/ */
public Boolean completeHandover(HandoverTaskOrderDO handoverTaskOrderDO){ public Boolean completeHandover(HandoverTaskOrderDO handoverTaskOrderDO){
//交接完成节点修改库存
String orderNumber = handoverTaskOrderDO.getOrderNumber();
List<OutMaterialDetail> outMaterialDetailList = outMaterialDetailMapper.selectList(new QueryWrapper<OutMaterialDetail>().lambda()
.eq(OutMaterialDetail::getOutOrderNumber, orderNumber));
for (OutMaterialDetail outMaterialDetail : outMaterialDetailList) {
Long materialInventoryId = outMaterialDetail.getMaterialInventoryId();
BigDecimal checkQuantity = outMaterialDetail.getCheckQuantity();
MaterialInventory materialInventoryPO = materialInventoryMapper.selectById(materialInventoryId);
if (materialInventoryPO != null) {
//更新库存数量
//库存数量
BigDecimal oldInventoryQuantity = materialInventoryPO.getInventoryQuantity();
//冻结数量
BigDecimal oldFreezeQuantity = materialInventoryPO.getFreezeQuantity();
//分配后库存数量
BigDecimal newInventoryQuantity = oldInventoryQuantity.subtract(checkQuantity);
//分配后冻结数量
BigDecimal newFreezeQuantity = oldFreezeQuantity.subtract(checkQuantity);
materialInventoryPO.setInventoryQuantity(newInventoryQuantity);
materialInventoryPO.setFreezeQuantity(newFreezeQuantity);
MaterialInventory materialInventory = new MaterialInventory();
BeanUtils.copyProperties(materialInventoryPO, materialInventory);
materialInventoryMapper.updateById(materialInventory);
}
}
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
return handoverTaskOrderService.update(null, new UpdateWrapper<HandoverTaskOrder>().lambda() return handoverTaskOrderService.update(null, new UpdateWrapper<HandoverTaskOrder>().lambda()
.set(HandoverTaskOrder::getStatus, 2) .set(HandoverTaskOrder::getStatus, 2)
@@ -127,4 +163,4 @@ public class HandoverTaskOrderDomainService {
.in(HandoverTaskOrder::getHandoverTaskOrderId, handoverTaskOrderDO.getHandoverTaskOrderIds()) .in(HandoverTaskOrder::getHandoverTaskOrderId, handoverTaskOrderDO.getHandoverTaskOrderIds())
); );
} }
} }
@@ -278,32 +278,29 @@ public class OutMaterialDetailImpl extends ServiceImpl<OutMaterialDetailMapper,
stockOutOrderPO.setAllocationQuantity(totalAllocationQuantity); stockOutOrderPO.setAllocationQuantity(totalAllocationQuantity);
//保存物料明细信息 //保存物料明细信息
saveOrUpdateBatch(outMaterialDetailList); saveOrUpdateBatch(outMaterialDetailList);
//分配
synchronized (this) { for (OutMaterialDetail outMaterialDetail : outMaterialDetailList) {
for (OutMaterialDetail outMaterialDetail : outMaterialDetailList) { Long materialInventoryId = outMaterialDetail.getMaterialInventoryId();
Long materialBaseInfoId = outMaterialDetail.getMaterialBaseInfoId(); BigDecimal allocationQuantity = outMaterialDetail.getAllocationQuantity();
BigDecimal allocationQuantity = outMaterialDetail.getAllocationQuantity(); MaterialInventory materialInventoryPO = materialInventoryMapper.selectById(materialInventoryId);
MaterialInventoryDO materialInventoryDO = new MaterialInventoryDO(); if (materialInventoryPO != null) {
materialInventoryDO.setMaterialBaseInfoId(materialBaseInfoId); //更新库存数量
MaterialInventoryPO materialInventoryPO = materialInventoryMapper.selectOneByWhere(materialInventoryDO); //可用数量
if (materialInventoryPO != null) { BigDecimal oldAllocationQuantity = materialInventoryPO.getAllocationQuantity();
//更新库存数量 //冻结数量
//可用数量 BigDecimal oldFreezeQuantity = materialInventoryPO.getFreezeQuantity();
BigDecimal oldAllocationQuantity = materialInventoryPO.getAllocationQuantity(); //分配后可用数量
//冻结数量 BigDecimal newAllocationQuantity = oldAllocationQuantity.subtract(allocationQuantity);
BigDecimal oldFreezeQuantity = materialInventoryPO.getFreezeQuantity(); //分配后冻结数量
//分配后可用数量 BigDecimal newFreezeQuantity = oldFreezeQuantity.add(allocationQuantity);
BigDecimal newAllocationQuantity = oldAllocationQuantity.subtract(allocationQuantity); materialInventoryPO.setAllocationQuantity(newAllocationQuantity);
//分配后冻结数量 materialInventoryPO.setFreezeQuantity(newFreezeQuantity);
BigDecimal newFreezeQuantity = oldFreezeQuantity.add(allocationQuantity); MaterialInventory materialInventory = new MaterialInventory();
materialInventoryPO.setAllocationQuantity(newAllocationQuantity); BeanUtils.copyProperties(materialInventoryPO, materialInventory);
materialInventoryPO.setFreezeQuantity(newFreezeQuantity); materialInventoryMapper.updateById(materialInventory);
MaterialInventory materialInventory = new MaterialInventory();
BeanUtils.copyProperties(materialInventoryPO, materialInventory);
materialInventoryMapper.updateById(materialInventory);
}
} }
} }
return stockOutOrderPO; return stockOutOrderPO;
} }
@@ -397,6 +394,29 @@ public class OutMaterialDetailImpl extends ServiceImpl<OutMaterialDetailMapper,
} }
//保存物料明细信息 //保存物料明细信息
updateBatchById(outMaterialDetailList); updateBatchById(outMaterialDetailList);
//取消分配
for (OutMaterialDetail outMaterialDetail : outMaterialDetailList) {
Long materialInventoryId = outMaterialDetail.getMaterialInventoryId();
BigDecimal allocationQuantity = outMaterialDetail.getAllocationQuantity();
MaterialInventory materialInventoryPO = materialInventoryMapper.selectById(materialInventoryId);
if (materialInventoryPO != null) {
//更新库存数量
//可用数量
BigDecimal oldAllocationQuantity = materialInventoryPO.getAllocationQuantity();
//冻结数量
BigDecimal oldFreezeQuantity = materialInventoryPO.getFreezeQuantity();
//分配后可用数量
BigDecimal newAllocationQuantity = oldAllocationQuantity.add(allocationQuantity);
//分配后冻结数量
BigDecimal newFreezeQuantity = oldFreezeQuantity.subtract(allocationQuantity);
materialInventoryPO.setAllocationQuantity(newAllocationQuantity);
materialInventoryPO.setFreezeQuantity(newFreezeQuantity);
MaterialInventory materialInventory = new MaterialInventory();
BeanUtils.copyProperties(materialInventoryPO, materialInventory);
materialInventoryMapper.updateById(materialInventory);
}
}
return stockOutOrderPO; return stockOutOrderPO;
} }
@@ -376,7 +376,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
sum( c.picking_quantity ) sum( c.picking_quantity )
FROM FROM
picking_material_detail c picking_material_detail c
LEFT JOIN picking_order d ON c.picking_order_number = d.order_number LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER
WHERE WHERE
c.del_flag = 1 c.del_flag = 1
AND d.warehouse_id = a.warehouse_id AND d.warehouse_id = a.warehouse_id