PDA内容修改
This commit is contained in:
-1
@@ -27,7 +27,6 @@ public class ReceiptMaterialDetailApplicationService {
|
|||||||
/**
|
/**
|
||||||
* 分页查询物料明细列表
|
* 分页查询物料明细列表
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public List<ReceiptMaterialDetailPO> queryList(ReceiptMaterialDetailDO receiptMaterialDetailDO) {
|
public List<ReceiptMaterialDetailPO> queryList(ReceiptMaterialDetailDO receiptMaterialDetailDO) {
|
||||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||||
if (loginUser != null){
|
if (loginUser != null){
|
||||||
|
|||||||
+25
@@ -24,6 +24,8 @@ import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail;
|
|||||||
import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailMapper;
|
import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailMapper;
|
||||||
import com.mhd.wms.domain.outOrderAbnormal.repository.facade.IOutOrderAbnormalService;
|
import com.mhd.wms.domain.outOrderAbnormal.repository.facade.IOutOrderAbnormalService;
|
||||||
import com.mhd.wms.domain.outOrderAbnormal.repository.todo.OutOrderAbnormalBaseDO;
|
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.pickingOrder.entity.PickingOrder;
|
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;
|
||||||
@@ -75,6 +77,8 @@ public class StockOutTaskOrderDomainService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private IPickingOrderService pickingOrderService;
|
private IPickingOrderService pickingOrderService;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
private IPickingMaterialDetailService pickingMaterialDetailService;
|
||||||
|
@Autowired
|
||||||
private IStockOutOrderService stockOutOrderService;
|
private IStockOutOrderService stockOutOrderService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IWaveOutOrderService waveOutOrderService;
|
private IWaveOutOrderService waveOutOrderService;
|
||||||
@@ -519,8 +523,10 @@ public class StockOutTaskOrderDomainService {
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean updateStockOutOrder(PickingOrderPO pickingOrderPODb) {
|
public Boolean updateStockOutOrder(PickingOrderPO pickingOrderPODb) {
|
||||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||||
|
// 与 PickingOrderDomainService 一致:只统计已拣货(status=3)的拣货单数量,确保完成拣货后出库单状态正确更新
|
||||||
List<PickingOrder> pickingOrderList = pickingOrderService.list(new QueryWrapper<PickingOrder>().lambda()
|
List<PickingOrder> pickingOrderList = pickingOrderService.list(new QueryWrapper<PickingOrder>().lambda()
|
||||||
.eq(PickingOrder::getDelFlag, 1)
|
.eq(PickingOrder::getDelFlag, 1)
|
||||||
|
.eq(PickingOrder::getStatus, 3)
|
||||||
.eq(PickingOrder::getOrderNumber, pickingOrderPODb.getOrderNumber()));
|
.eq(PickingOrder::getOrderNumber, pickingOrderPODb.getOrderNumber()));
|
||||||
BigDecimal pickingQuantity = pickingOrderList.stream().map(PickingOrder::getPickingQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
|
BigDecimal pickingQuantity = pickingOrderList.stream().map(PickingOrder::getPickingQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
if (1 == pickingOrderPODb.getType()){
|
if (1 == pickingOrderPODb.getType()){
|
||||||
@@ -536,10 +542,29 @@ public class StockOutTaskOrderDomainService {
|
|||||||
genStockInOrder(stockOutOrderDb);
|
genStockInOrder(stockOutOrderDb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 根据拣货单明细更新出库单物料明细的拣货数量(与 PickingOrderDomainService 一致)
|
||||||
|
for (PickingOrder pickingOrder : pickingOrderList) {
|
||||||
|
List<PickingMaterialDetail> list = pickingMaterialDetailService.list(new QueryWrapper<PickingMaterialDetail>().lambda()
|
||||||
|
.eq(PickingMaterialDetail::getPickingOrderNumber, pickingOrder.getPickingOrderNumber()));
|
||||||
|
for (PickingMaterialDetail pickingMaterialDetail : list) {
|
||||||
|
OutMaterialDetail outMaterialDetail = outMaterialDetailMapper.selectOne(new QueryWrapper<OutMaterialDetail>().lambda()
|
||||||
|
.eq(OutMaterialDetail::getUniqueId, pickingMaterialDetail.getOutUniqueId())
|
||||||
|
.eq(OutMaterialDetail::getDelFlag, 1));
|
||||||
|
if (outMaterialDetail != null) {
|
||||||
|
outMaterialDetail.setPickingQuantity(pickingMaterialDetail.getPickingQuantity());
|
||||||
|
outMaterialDetail.setTotalNetWeight(pickingMaterialDetail.getTotalNetWeight());
|
||||||
|
outMaterialDetail.setTotalGrossWeight(pickingMaterialDetail.getTotalGrossWeight());
|
||||||
|
outMaterialDetail.setTotalVolume(pickingMaterialDetail.getTotalVolume());
|
||||||
|
outMaterialDetail.setTotalArea(pickingMaterialDetail.getTotalArea());
|
||||||
|
outMaterialDetailMapper.updateById(outMaterialDetail);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
StockOutOrder stockOutOrder = new StockOutOrder();
|
StockOutOrder stockOutOrder = new StockOutOrder();
|
||||||
stockOutOrder.setOutOrderNumber(pickingOrderPODb.getOrderNumber());
|
stockOutOrder.setOutOrderNumber(pickingOrderPODb.getOrderNumber());
|
||||||
//1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭
|
//1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭
|
||||||
stockOutOrder.setStatus(status);
|
stockOutOrder.setStatus(status);
|
||||||
|
stockOutOrder.setPickingQuantity(pickingQuantity);
|
||||||
stockOutOrder.setUpdateBy(loginUser.getUserid());
|
stockOutOrder.setUpdateBy(loginUser.getUserid());
|
||||||
stockOutOrder.setUpdateByName(loginUser.getUsername());
|
stockOutOrder.setUpdateByName(loginUser.getUsername());
|
||||||
stockOutOrder.setUpdateTime(new Date());
|
stockOutOrder.setUpdateTime(new Date());
|
||||||
|
|||||||
+1
-13
@@ -228,23 +228,11 @@ public class StockReceiptOrderDomainService {
|
|||||||
receiptMaterialDetailPOChildren.setQuantity(null);
|
receiptMaterialDetailPOChildren.setQuantity(null);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// 主项无子项时:添加 parent_copy 到 children,供详情页展示(详情页从 children 读取数据)
|
// 主项无子项时:不添加 parent_copy,避免 PDA 端重复显示两条记录;主项自身已有全部数据,详情页可直接从主项读取
|
||||||
if (CollectionUtils.isEmpty(receiptMaterialDetailPO.getMaterialMoreDetailList())) {
|
if (CollectionUtils.isEmpty(receiptMaterialDetailPO.getMaterialMoreDetailList())) {
|
||||||
receiptMaterialDetailPO.setMaterialMoreDetailList(getMaterialMoreDetail(receiptMaterialDetailPO));
|
receiptMaterialDetailPO.setMaterialMoreDetailList(getMaterialMoreDetail(receiptMaterialDetailPO));
|
||||||
}
|
}
|
||||||
ReceiptMaterialDetailPO parentCopy = new ReceiptMaterialDetailPO();
|
|
||||||
BeanUtils.copyProperties(receiptMaterialDetailPO, parentCopy, "children");
|
|
||||||
parentCopy.setLevel(2);
|
|
||||||
parentCopy.setParentUniqueId(receiptMaterialDetailPO.getUniqueId());
|
|
||||||
parentCopy.setQuantity(null);
|
|
||||||
parentCopy.setChildren(new ArrayList<>());
|
|
||||||
if (CollectionUtils.isEmpty(parentCopy.getMaterialMoreDetailList())) {
|
|
||||||
parentCopy.setMaterialMoreDetailList(receiptMaterialDetailPO.getMaterialMoreDetailList());
|
|
||||||
}
|
|
||||||
List<InMaterialDetailSerialNumberPO> serialList = inMaterialDetailSerialNumberMap.get(receiptMaterialDetailPO.getUniqueId());
|
|
||||||
parentCopy.setMaterialDetailSerialNumberList(serialList != null ? serialList : new ArrayList<>());
|
|
||||||
receiptMaterialDetailPOChildrenList = new ArrayList<>();
|
receiptMaterialDetailPOChildrenList = new ArrayList<>();
|
||||||
receiptMaterialDetailPOChildrenList.add(parentCopy);
|
|
||||||
}
|
}
|
||||||
receiptMaterialDetailPO.setChildren(receiptMaterialDetailPOChildrenList != null ? receiptMaterialDetailPOChildrenList : new ArrayList<>());
|
receiptMaterialDetailPO.setChildren(receiptMaterialDetailPOChildrenList != null ? receiptMaterialDetailPOChildrenList : new ArrayList<>());
|
||||||
});
|
});
|
||||||
|
|||||||
+4
-13
@@ -235,18 +235,9 @@ public class StockShelfOrderDomainService {
|
|||||||
MaterialMoreDetailDO materialMoreDetailDO = new MaterialMoreDetailDO();
|
MaterialMoreDetailDO materialMoreDetailDO = new MaterialMoreDetailDO();
|
||||||
materialMoreDetailDO.setOrderNumber(stockShelfOrderPO.getShelfOrderNumber());
|
materialMoreDetailDO.setOrderNumber(stockShelfOrderPO.getShelfOrderNumber());
|
||||||
shelfMaterialDetailPOList.forEach(shelfMaterialDetailPO -> {
|
shelfMaterialDetailPOList.forEach(shelfMaterialDetailPO -> {
|
||||||
List<ShelfMaterialDetailPO> shelfMaterialDetailPOChildrenNowList = new ArrayList<>();
|
// 不添加 parent_copy,避免 PDA 端重复显示两条记录;主项自身已有全部数据,详情页可直接从主项读取
|
||||||
ShelfMaterialDetailPO shelfMaterialDetailPOChildrenNow = new ShelfMaterialDetailPO();
|
|
||||||
BeanUtils.copyProperties(shelfMaterialDetailPO, shelfMaterialDetailPOChildrenNow, "children");
|
|
||||||
List<InMaterialDetailSerialNumberPO> materialDetailSerialNumberList = inMaterialDetailSerialNumberMap.get(shelfMaterialDetailPO.getUniqueId());
|
|
||||||
if (!CollectionUtils.isEmpty(materialDetailSerialNumberList)){
|
|
||||||
shelfMaterialDetailPOChildrenNow.setMaterialDetailSerialNumberList(materialDetailSerialNumberList);
|
|
||||||
}else {
|
|
||||||
shelfMaterialDetailPOChildrenNow.setMaterialDetailSerialNumberList(new ArrayList<>());
|
|
||||||
}
|
|
||||||
shelfMaterialDetailPOChildrenNowList.add(shelfMaterialDetailPOChildrenNow);
|
|
||||||
//子集
|
|
||||||
List<ShelfMaterialDetailPO> shelfMaterialDetailPOChildrenList = shelfMaterialDetailPO.getChildren();
|
List<ShelfMaterialDetailPO> shelfMaterialDetailPOChildrenList = shelfMaterialDetailPO.getChildren();
|
||||||
|
if (!CollectionUtils.isEmpty(shelfMaterialDetailPOChildrenList)) {
|
||||||
shelfMaterialDetailPOChildrenList.forEach(receiptMaterialDetailPOChildren -> {
|
shelfMaterialDetailPOChildrenList.forEach(receiptMaterialDetailPOChildren -> {
|
||||||
List<InMaterialDetailSerialNumberPO> materialDetailSerialNumberChildrenList = inMaterialDetailSerialNumberMap.get(shelfMaterialDetailPO.getUniqueId());
|
List<InMaterialDetailSerialNumberPO> materialDetailSerialNumberChildrenList = inMaterialDetailSerialNumberMap.get(shelfMaterialDetailPO.getUniqueId());
|
||||||
if (!CollectionUtils.isEmpty(materialDetailSerialNumberChildrenList)){
|
if (!CollectionUtils.isEmpty(materialDetailSerialNumberChildrenList)){
|
||||||
@@ -255,8 +246,8 @@ public class StockShelfOrderDomainService {
|
|||||||
receiptMaterialDetailPOChildren.setMaterialDetailSerialNumberList(new ArrayList<>());
|
receiptMaterialDetailPOChildren.setMaterialDetailSerialNumberList(new ArrayList<>());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
shelfMaterialDetailPOChildrenNowList.addAll(shelfMaterialDetailPOChildrenList);
|
}
|
||||||
shelfMaterialDetailPO.setChildren(shelfMaterialDetailPOChildrenNowList);
|
shelfMaterialDetailPO.setChildren(shelfMaterialDetailPOChildrenList != null ? shelfMaterialDetailPOChildrenList : new ArrayList<>());
|
||||||
});
|
});
|
||||||
stockShelfOrderPO.setMaterialDetailList(shelfMaterialDetailPOList);
|
stockShelfOrderPO.setMaterialDetailList(shelfMaterialDetailPOList);
|
||||||
return stockShelfOrderPO;
|
return stockShelfOrderPO;
|
||||||
|
|||||||
+28
-4
@@ -160,12 +160,36 @@ public class TaskPickingMaterialDetailImpl extends ServiceImpl<TaskPickingMateri
|
|||||||
}
|
}
|
||||||
outMaterialDetailSerialNumberList.addAll(genMaterialDetailSerialNumber(taskPickingMaterialDetailDO));
|
outMaterialDetailSerialNumberList.addAll(genMaterialDetailSerialNumber(taskPickingMaterialDetailDO));
|
||||||
}
|
}
|
||||||
|
Long pickingUniqueId = taskPickingMaterialDetailDb.getPickingUniqueId();
|
||||||
|
BigDecimal qty = taskPickingMaterialDetailDO.getActualQuantity() != null ? taskPickingMaterialDetailDO.getActualQuantity() : BigDecimal.ZERO;
|
||||||
|
// 按 pickingUniqueId 聚合,同一拣货明细可能对应多条任务明细
|
||||||
|
PickingMaterialDetailDO existing = pickingMaterialDetailList.stream()
|
||||||
|
.filter(p -> pickingUniqueId.equals(p.getUniqueId())).findFirst().orElse(null);
|
||||||
|
if (existing != null) {
|
||||||
|
existing.setPickingQuantity((existing.getPickingQuantity() != null ? existing.getPickingQuantity() : BigDecimal.ZERO).add(qty));
|
||||||
|
if (taskPickingMaterialDetailDO.getTotalNetWeight() != null) {
|
||||||
|
existing.setTotalNetWeight((existing.getTotalNetWeight() != null ? existing.getTotalNetWeight() : BigDecimal.ZERO).add(taskPickingMaterialDetailDO.getTotalNetWeight()));
|
||||||
|
}
|
||||||
|
if (taskPickingMaterialDetailDO.getTotalGrossWeight() != null) {
|
||||||
|
existing.setTotalGrossWeight((existing.getTotalGrossWeight() != null ? existing.getTotalGrossWeight() : BigDecimal.ZERO).add(taskPickingMaterialDetailDO.getTotalGrossWeight()));
|
||||||
|
}
|
||||||
|
if (taskPickingMaterialDetailDO.getTotalVolume() != null) {
|
||||||
|
existing.setTotalVolume((existing.getTotalVolume() != null ? existing.getTotalVolume() : BigDecimal.ZERO).add(taskPickingMaterialDetailDO.getTotalVolume()));
|
||||||
|
}
|
||||||
|
if (taskPickingMaterialDetailDO.getTotalArea() != null) {
|
||||||
|
existing.setTotalArea((existing.getTotalArea() != null ? existing.getTotalArea() : BigDecimal.ZERO).add(taskPickingMaterialDetailDO.getTotalArea()));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
PickingMaterialDetailDO pickingMaterialDetailDO = new PickingMaterialDetailDO();
|
PickingMaterialDetailDO pickingMaterialDetailDO = new PickingMaterialDetailDO();
|
||||||
pickingMaterialDetailDO.setUniqueId(taskPickingMaterialDetailDb.getPickingUniqueId());
|
pickingMaterialDetailDO.setUniqueId(pickingUniqueId);
|
||||||
// 拣货增量用 actualQuantity,picking_quantity += actualQuantity
|
pickingMaterialDetailDO.setPickingQuantity(qty);
|
||||||
pickingMaterialDetailDO.setPickingQuantity(taskPickingMaterialDetailDO.getActualQuantity() != null ? taskPickingMaterialDetailDO.getActualQuantity() : BigDecimal.ZERO);
|
pickingMaterialDetailDO.setTotalNetWeight(taskPickingMaterialDetailDO.getTotalNetWeight());
|
||||||
|
pickingMaterialDetailDO.setTotalGrossWeight(taskPickingMaterialDetailDO.getTotalGrossWeight());
|
||||||
|
pickingMaterialDetailDO.setTotalVolume(taskPickingMaterialDetailDO.getTotalVolume());
|
||||||
|
pickingMaterialDetailDO.setTotalArea(taskPickingMaterialDetailDO.getTotalArea());
|
||||||
pickingMaterialDetailList.add(pickingMaterialDetailDO);
|
pickingMaterialDetailList.add(pickingMaterialDetailDO);
|
||||||
totalPickingQuantity = totalPickingQuantity.add(taskPickingMaterialDetailDO.getActualQuantity());
|
}
|
||||||
|
totalPickingQuantity = totalPickingQuantity.add(qty);
|
||||||
}
|
}
|
||||||
//保存物料明细信息
|
//保存物料明细信息
|
||||||
saveOrUpdateBatch(taskPickingMaterialDetailList);
|
saveOrUpdateBatch(taskPickingMaterialDetailList);
|
||||||
|
|||||||
+16
@@ -207,4 +207,20 @@ public class TaskPickingMaterialDetailDO extends BaseVOEntity {
|
|||||||
|
|
||||||
@ApiModelProperty("序列号")
|
@ApiModelProperty("序列号")
|
||||||
private List<OutMaterialDetailSerialNumberDO> materialDetailSerialNumberList;
|
private List<OutMaterialDetailSerialNumberDO> materialDetailSerialNumberList;
|
||||||
|
|
||||||
|
@ApiModelProperty("总净重(KG)")
|
||||||
|
@Excel(name = "总净重(KG)")
|
||||||
|
private BigDecimal totalNetWeight;
|
||||||
|
|
||||||
|
@ApiModelProperty("总毛重(KG)")
|
||||||
|
@Excel(name = "总毛重(KG)")
|
||||||
|
private BigDecimal totalGrossWeight;
|
||||||
|
|
||||||
|
@ApiModelProperty("总体积(CBM)")
|
||||||
|
@Excel(name = "总体积(CBM)")
|
||||||
|
private BigDecimal totalVolume;
|
||||||
|
|
||||||
|
@ApiModelProperty("总面积(SQM)")
|
||||||
|
@Excel(name = "总面积(SQM)")
|
||||||
|
private BigDecimal totalArea;
|
||||||
}
|
}
|
||||||
|
|||||||
+20
@@ -206,6 +206,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
WHEN #{item.uniqueId} THEN LEAST(picking_quantity + #{item.pickingQuantity}, quantity)
|
WHEN #{item.uniqueId} THEN LEAST(picking_quantity + #{item.pickingQuantity}, quantity)
|
||||||
</foreach>
|
</foreach>
|
||||||
</trim>
|
</trim>
|
||||||
|
<trim prefix="total_net_weight = CASE unique_id" suffix="END,">
|
||||||
|
<foreach collection="pickingMaterialDetailList" item="item" index="index">
|
||||||
|
WHEN #{item.uniqueId} THEN IFNULL(total_net_weight, 0) + IFNULL(#{item.totalNetWeight}, 0)
|
||||||
|
</foreach>
|
||||||
|
</trim>
|
||||||
|
<trim prefix="total_gross_weight = CASE unique_id" suffix="END,">
|
||||||
|
<foreach collection="pickingMaterialDetailList" item="item" index="index">
|
||||||
|
WHEN #{item.uniqueId} THEN IFNULL(total_gross_weight, 0) + IFNULL(#{item.totalGrossWeight}, 0)
|
||||||
|
</foreach>
|
||||||
|
</trim>
|
||||||
|
<trim prefix="total_volume = CASE unique_id" suffix="END,">
|
||||||
|
<foreach collection="pickingMaterialDetailList" item="item" index="index">
|
||||||
|
WHEN #{item.uniqueId} THEN IFNULL(total_volume, 0) + IFNULL(#{item.totalVolume}, 0)
|
||||||
|
</foreach>
|
||||||
|
</trim>
|
||||||
|
<trim prefix="total_area = CASE unique_id" suffix="END,">
|
||||||
|
<foreach collection="pickingMaterialDetailList" item="item" index="index">
|
||||||
|
WHEN #{item.uniqueId} THEN IFNULL(total_area, 0) + IFNULL(#{item.totalArea}, 0)
|
||||||
|
</foreach>
|
||||||
|
</trim>
|
||||||
update_by = #{updateBy},
|
update_by = #{updateBy},
|
||||||
update_by_name = #{updateByName},
|
update_by_name = #{updateByName},
|
||||||
update_time = #{updateTime}
|
update_time = #{updateTime}
|
||||||
|
|||||||
Reference in New Issue
Block a user