出库流程;

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("获取货主信息失败");
}
UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
stockOutOrderDO.setShipperId(userPo.getUserId());
stockOutOrderDO.setShipperCode(userPo.getUserMemberCode());
stockOutOrderDO.setShipperName(userPo.getUserName());
}
@@ -1,16 +1,23 @@
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.mhd.common.core.utils.bean.BeanUtils;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.model.LoginUser;
import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder;
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.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 org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@@ -26,6 +33,10 @@ public class HandoverTaskOrderDomainService {
@Autowired
private IHandoverTaskOrderService handoverTaskOrderService;
@Autowired
private MaterialInventoryMapper materialInventoryMapper;
@Autowired
private OutMaterialDetailMapper outMaterialDetailMapper;
/**
@@ -118,6 +129,31 @@ public class HandoverTaskOrderDomainService {
* @return Boolean
*/
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();
return handoverTaskOrderService.update(null, new UpdateWrapper<HandoverTaskOrder>().lambda()
.set(HandoverTaskOrder::getStatus, 2)
@@ -127,4 +163,4 @@ public class HandoverTaskOrderDomainService {
.in(HandoverTaskOrder::getHandoverTaskOrderId, handoverTaskOrderDO.getHandoverTaskOrderIds())
);
}
}
}
@@ -278,32 +278,29 @@ public class OutMaterialDetailImpl extends ServiceImpl<OutMaterialDetailMapper,
stockOutOrderPO.setAllocationQuantity(totalAllocationQuantity);
//保存物料明细信息
saveOrUpdateBatch(outMaterialDetailList);
synchronized (this) {
for (OutMaterialDetail outMaterialDetail : outMaterialDetailList) {
Long materialBaseInfoId = outMaterialDetail.getMaterialBaseInfoId();
BigDecimal allocationQuantity = outMaterialDetail.getAllocationQuantity();
MaterialInventoryDO materialInventoryDO = new MaterialInventoryDO();
materialInventoryDO.setMaterialBaseInfoId(materialBaseInfoId);
MaterialInventoryPO materialInventoryPO = materialInventoryMapper.selectOneByWhere(materialInventoryDO);
if (materialInventoryPO != null) {
//更新库存数量
//可用数量
BigDecimal oldAllocationQuantity = materialInventoryPO.getAllocationQuantity();
//冻结数量
BigDecimal oldFreezeQuantity = materialInventoryPO.getFreezeQuantity();
//分配后可用数量
BigDecimal newAllocationQuantity = oldAllocationQuantity.subtract(allocationQuantity);
//分配后冻结数量
BigDecimal newFreezeQuantity = oldFreezeQuantity.add(allocationQuantity);
materialInventoryPO.setAllocationQuantity(newAllocationQuantity);
materialInventoryPO.setFreezeQuantity(newFreezeQuantity);
MaterialInventory materialInventory = new MaterialInventory();
BeanUtils.copyProperties(materialInventoryPO, materialInventory);
materialInventoryMapper.updateById(materialInventory);
}
//分配
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.subtract(allocationQuantity);
//分配后冻结数量
BigDecimal newFreezeQuantity = oldFreezeQuantity.add(allocationQuantity);
materialInventoryPO.setAllocationQuantity(newAllocationQuantity);
materialInventoryPO.setFreezeQuantity(newFreezeQuantity);
MaterialInventory materialInventory = new MaterialInventory();
BeanUtils.copyProperties(materialInventoryPO, materialInventory);
materialInventoryMapper.updateById(materialInventory);
}
}
return stockOutOrderPO;
}
@@ -397,6 +394,29 @@ public class OutMaterialDetailImpl extends ServiceImpl<OutMaterialDetailMapper,
}
//保存物料明细信息
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;
}
@@ -376,7 +376,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
sum( c.picking_quantity )
FROM
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
c.del_flag = 1
AND d.warehouse_id = a.warehouse_id