diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java index 5ee9f3ca8..c64618805 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java @@ -151,6 +151,27 @@ public class HandoverTaskOrderApplicationService { return handoverTaskOrderDomainService.getInfo(outTaskOrderId); } + /** + * 按作业单号获取交接作业单详细信息(PDA 端) + * 用于下发任务(taskType=7)中 trackingNumber 对应交接作业单的 taskNumber + * + * @param taskNumber 作业单号 + * @return 交接作业单详情,含物料明细(与 getInfo 逻辑一致) + */ + public HandoverTaskOrderPO getInfoByTaskNumber(String taskNumber) { + if (taskNumber == null || taskNumber.trim().isEmpty()) { + return null; + } + HandoverTaskOrder handoverTaskOrder = handoverTaskOrderService.getOne( + new LambdaQueryWrapper() + .eq(HandoverTaskOrder::getTaskNumber, taskNumber.trim()) + .eq(HandoverTaskOrder::getDelFlag, 1)); + if (handoverTaskOrder == null) { + return null; + } + return handoverTaskOrderDomainService.getInfo(handoverTaskOrder.getHandoverTaskOrderId()); + } + /** * 分配月台 */ diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java index 261ea7177..feafe4655 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java @@ -741,7 +741,22 @@ public class ShiftManageApplicationService { if (CollectionUtils.isEmpty(shiftMoveMaterialQuantityList)){ continue; } - // 兼容:容器移位通常只有一个目标库位,若部分子项未传 newStorageLocationId,从同组第一个有值的子项复制 + // 兼容:容器移位通常只有一个目标库位 + // 1) 若子项未传 newStorageLocationId,优先从父级复制(PDA 可能把目标放在父级) + Long parentTargetId = containerShiftDO.getNewStorageLocationId(); + if (parentTargetId != null && parentTargetId > 0) { + shiftMoveMaterialQuantityList.forEach(c -> { + if (c.getNewStorageLocationId() == null || c.getNewStorageLocationId() <= 0) { + c.setNewStorageLocationId(parentTargetId); + c.setNewStorageSectionId(containerShiftDO.getNewStorageSectionId()); + c.setNewStorageCode(containerShiftDO.getNewStorageCode()); + c.setNewStorageName(containerShiftDO.getNewStorageName()); + c.setNewStorageLocationCode(containerShiftDO.getNewStorageLocationCode()); + c.setNewStorageLocationName(containerShiftDO.getNewStorageLocationName()); + } + }); + } + // 2) 若部分子项仍未传,从同组第一个有值的子项复制 ShiftMoveMaterialQuantityPO firstWithTarget = shiftMoveMaterialQuantityList.stream() .filter(c -> c.getNewStorageLocationId() != null && c.getNewStorageLocationId() > 0) .findFirst().orElse(null); @@ -760,6 +775,7 @@ public class ShiftManageApplicationService { shiftMoveMaterialQuantityList.forEach(shiftMoveMaterialQuantityPO -> { Long newStorageLocationId = shiftMoveMaterialQuantityPO.getNewStorageLocationId(); if (newStorageLocationId == null || newStorageLocationId <= 0) { + log.warn("容器移位缺少目标库位。父级newStorageLocationId={}, 请求体={}", containerShiftDO.getNewStorageLocationId(), JSON.toJSONString(containerShiftDOList)); throw new ServiceException("目标库位不能为空,请选择目标库位"); } AjaxResult storageLocationResult = systemServiceFeign.getStorageLocationInfoByStorageLocationId(newStorageLocationId); diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java index f4b420b41..26a264f2f 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java @@ -232,6 +232,11 @@ public class StockOutTaskOrderApplicationService { TaskPickingMaterialDetailDO returnTaskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO(); BeanUtils.copyProperties(taskPickingMaterialDetailPO, returnTaskPickingMaterialDetailDO); returnTaskPickingMaterialDetailDO.setActualQuantity(taskPickingMaterialDetailDO.getActualQuantity()); + // PDA 提交的净重、毛重、体积、面积需传递到拣货更新逻辑,否则会丢失 + returnTaskPickingMaterialDetailDO.setTotalNetWeight(taskPickingMaterialDetailDO.getTotalNetWeight()); + returnTaskPickingMaterialDetailDO.setTotalGrossWeight(taskPickingMaterialDetailDO.getTotalGrossWeight()); + returnTaskPickingMaterialDetailDO.setTotalVolume(taskPickingMaterialDetailDO.getTotalVolume()); + returnTaskPickingMaterialDetailDO.setTotalArea(taskPickingMaterialDetailDO.getTotalArea()); //是否开启了序列号管理 if (taskPickingMaterialDetailPO.getSerialNumberManage() == 1){ if (CollectionUtils.isEmpty(taskPickingMaterialDetailDO.getMaterialDetailSerialNumberList())){ diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/service/HandoverTaskOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/service/HandoverTaskOrderDomainService.java index 185ac586b..3cf3724de 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/service/HandoverTaskOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/service/HandoverTaskOrderDomainService.java @@ -21,6 +21,7 @@ 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 com.mhd.wms.domain.pickingMaterialDetail.repository.mapper.PickingMaterialDetailMapper; import com.mhd.wms.domain.taskHandoverMaterialDetail.repository.po.TaskHandoverMaterialDetailPO; import com.mhd.wms.domain.shiftManage.repository.po.ShiftManagePO; import com.mhd.wms.domain.shiftManage.repository.todo.ShiftManageDO; @@ -61,6 +62,8 @@ public class HandoverTaskOrderDomainService { private StockOutOrderMapper stockOutOrderMapper; @Autowired private IDeliveTaskService deliveTaskService; + @Autowired + private PickingMaterialDetailMapper pickingMaterialDetailMapper; /** @@ -95,7 +98,8 @@ public class HandoverTaskOrderDomainService { /** * 获取交接作业单详细信息 - * 物料明细根据复核单(out_material_detail)数据生成,数量使用复核数量(check_quantity),不需要复核时使用拣货数量(picking_quantity) + * 需要复核时:仅从复核单取明细(picking_material_detail 有拣货的 out_unique_id + check_quantity>0),复核几条生成几条 + * 不需要复核时:从出库单取 picking_quantity>0 的明细 */ public HandoverTaskOrderPO getInfo(Long outTaskOrderId) { @@ -103,15 +107,45 @@ public class HandoverTaskOrderDomainService { if (handoverTaskOrderPO == null) { return null; } - // 根据复核单数据生成物料明细:按出库单号查询 out_material_detail,使用复核数量 String orderNumber = handoverTaskOrderPO.getOrderNumber(); if (orderNumber != null && !orderNumber.trim().isEmpty()) { - List outMaterialDetailList = outMaterialDetailMapper.selectList( - new QueryWrapper().lambda() - .eq(OutMaterialDetail::getOutOrderNumber, orderNumber) - .eq(OutMaterialDetail::getDelFlag, 1)); + StockOutOrder stockOutOrder = stockOutOrderMapper.selectOne(new QueryWrapper().lambda() + .eq(StockOutOrder::getOutOrderNumber, orderNumber) + .eq(StockOutOrder::getDelFlag, 1)); + Integer review = stockOutOrder != null ? stockOutOrder.getReview() : null; + // 需要复核时:仅限复核单上的明细(picking_material_detail 有拣货的 unique_id) + java.util.Set outUniqueIdsWithPicking = null; + if (Integer.valueOf(1).equals(review)) { + List ids = pickingMaterialDetailMapper.selectOutUniqueIdsWithPickingByOutOrderNumber(orderNumber); + outUniqueIdsWithPicking = ids != null ? new java.util.HashSet<>(ids) : java.util.Collections.emptySet(); + } + // 需要复核时:与复核单一致,仅取 level=1 父级(复核单只展示父级,子级挂在父级下) + LambdaQueryWrapper omdQuery = new QueryWrapper().lambda() + .eq(OutMaterialDetail::getOutOrderNumber, orderNumber) + .eq(OutMaterialDetail::getDelFlag, 1); + if (Integer.valueOf(1).equals(review)) { + omdQuery.eq(OutMaterialDetail::getLevel, 1); + } + List outMaterialDetailList = outMaterialDetailMapper.selectList(omdQuery); List materialDetailList = new ArrayList<>(); for (OutMaterialDetail omd : outMaterialDetailList) { + BigDecimal handoverQuantity; + if (Integer.valueOf(1).equals(review)) { + // 仅包含复核单上的明细(有拣货)且已复核的 + if (outUniqueIdsWithPicking != null && !outUniqueIdsWithPicking.contains(omd.getUniqueId())) { + continue; + } + if (omd.getCheckQuantity() == null || omd.getCheckQuantity().compareTo(BigDecimal.ZERO) <= 0) { + continue; + } + handoverQuantity = omd.getCheckQuantity(); + } else { + BigDecimal qty = omd.getPickingQuantity() != null ? omd.getPickingQuantity() : omd.getQuantity(); + if (qty == null || qty.compareTo(BigDecimal.ZERO) <= 0) { + continue; + } + handoverQuantity = qty; + } TaskHandoverMaterialDetailPO detail = new TaskHandoverMaterialDetailPO(); detail.setMaterialDetailId(omd.getMaterialDetailId()); detail.setUniqueId(omd.getUniqueId()); @@ -127,11 +161,6 @@ public class HandoverTaskOrderDomainService { detail.setVolumeLimit(omd.getVolumeLimit()); detail.setQuantity(omd.getQuantity()); detail.setPickingQuantity(omd.getPickingQuantity()); - // 物料明细数量:优先使用复核数量(复核单数据),不需要复核时使用拣货数量 - BigDecimal handoverQuantity = omd.getCheckQuantity(); - if (handoverQuantity == null || handoverQuantity.compareTo(BigDecimal.ZERO) <= 0) { - handoverQuantity = omd.getPickingQuantity() != null ? omd.getPickingQuantity() : omd.getQuantity(); - } detail.setCheckQuantity(handoverQuantity); detail.setPackId(omd.getPackId()); detail.setPackCode(omd.getPackCode()); @@ -257,14 +286,26 @@ public class HandoverTaskOrderDomainService { String orderNumber = handoverTaskOrder.getOrderNumber(); StockOutOrder stockOutOrder = stockOutOrderMapper.selectOne(new QueryWrapper().lambda() .eq(StockOutOrder::getOutOrderNumber, orderNumber)); + if (stockOutOrder == null) { + continue; + } //完成交接状态改为已出库 stockOutOrder.setStatus(9); stockOutOrderMapper.updateById(stockOutOrder); List outMaterialDetailList = outMaterialDetailMapper.selectList(new QueryWrapper().lambda() - .eq(OutMaterialDetail::getOutOrderNumber, orderNumber)); + .eq(OutMaterialDetail::getOutOrderNumber, orderNumber) + .eq(OutMaterialDetail::getDelFlag, 1)); + Integer review = stockOutOrder != null ? stockOutOrder.getReview() : null; for (OutMaterialDetail outMaterialDetail : outMaterialDetailList) { Long materialInventoryId = outMaterialDetail.getMaterialInventoryId(); - BigDecimal checkQuantity = outMaterialDetail.getCheckQuantity(); + // 复核什么扣减什么:需要复核用check_quantity,不需要复核用picking_quantity + BigDecimal effectiveQuantity = Integer.valueOf(1).equals(review) + ? outMaterialDetail.getCheckQuantity() + : (outMaterialDetail.getPickingQuantity() != null ? outMaterialDetail.getPickingQuantity() : outMaterialDetail.getQuantity()); + if (materialInventoryId == null || effectiveQuantity == null || effectiveQuantity.compareTo(BigDecimal.ZERO) <= 0) { + continue; + } + BigDecimal checkQuantity = effectiveQuantity; BigDecimal checkArea = outMaterialDetail.getCheckArea(); BigDecimal checkVolume = outMaterialDetail.getCheckVolume(); BigDecimal checkGrossWeight = outMaterialDetail.getCheckGrossWeight(); diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java index f388094f4..a0895c808 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java @@ -31,6 +31,7 @@ import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; import com.mhd.wms.domain.outMaterialDetailSerialNumber.entity.OutMaterialDetailSerialNumber; import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.facade.IOutMaterialDetailSerialNumberService; import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; +import com.mhd.wms.domain.pickingMaterialDetail.repository.facade.IPickingMaterialDetailService; import com.mhd.wms.domain.pickingMaterialDetail.entity.PickingMaterialDetail; import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder; import com.mhd.wms.domain.stockOutOrder.repository.mapper.StockOutOrderMapper; @@ -72,6 +73,8 @@ public class OutMaterialDetailImpl extends ServiceImpl selectOutUniqueIdsWithPickingByOutOrderNumber(@Param("outOrderNumber") String outOrderNumber); + /** * @description 根据拣货单增加拣货数量 * @author ZhouGY @@ -44,4 +49,21 @@ public interface PickingMaterialDetailMapper extends BaseMapper 0) { - outMaterialDetailPO.setWaitCheckQuantity(pickingMaterialDetailPO.getPickingQuantity()); - } else { - outMaterialDetailPO.setWaitCheckQuantity(outMaterialDetailPO.getPickingQuantity()); + // 拣货数量:优先 picking_material_detail,否则 out_material_detail + BigDecimal pickQty = (pickingMaterialDetailPO.getPickingQuantity() != null && pickingMaterialDetailPO.getPickingQuantity().compareTo(BigDecimal.ZERO) > 0) + ? pickingMaterialDetailPO.getPickingQuantity() : outMaterialDetailPO.getPickingQuantity(); + BigDecimal checkQty = outMaterialDetailPO.getCheckQuantity() != null ? outMaterialDetailPO.getCheckQuantity() : BigDecimal.ZERO; + // 待复核数量 = 拣货数量 - 已复核数量(复核提交后应减少) + BigDecimal waitQty = (pickQty != null ? pickQty : BigDecimal.ZERO).subtract(checkQty); + if (waitQty.compareTo(BigDecimal.ZERO) < 0) { + waitQty = BigDecimal.ZERO; } + outMaterialDetailPO.setWaitCheckQuantity(waitQty); + // quantity=PC下发时的拣货数量,actualQuantity默认=待复核数量 + if (pickQty != null) { + outMaterialDetailPO.setQuantity(pickQty); + } + outMaterialDetailPO.setActualQuantity(waitQty); } List children = outMaterialDetailPO.getChildren(); if (!CollectionUtils.isEmpty(children)) { @@ -813,12 +822,21 @@ public class StockOutOrderDomainService { outMaterialDetailPOChild.setCheckVolume(pickingMaterialDetailPO1.getTotalVolume()); outMaterialDetailPOChild.setCheckNetWeight(pickingMaterialDetailPO1.getTotalNetWeight()); outMaterialDetailPOChild.setCheckGrossWeight(pickingMaterialDetailPO1.getTotalGrossWeight()); - // 复核明细按已拣货完成数量:优先使用 picking_material_detail 汇总的拣货数量(真实拣货数据) - if (pickingMaterialDetailPO1.getPickingQuantity() != null && pickingMaterialDetailPO1.getPickingQuantity().compareTo(BigDecimal.ZERO) > 0) { - outMaterialDetailPOChild.setWaitCheckQuantity(pickingMaterialDetailPO1.getPickingQuantity()); - } else { - outMaterialDetailPOChild.setWaitCheckQuantity(outMaterialDetailPOChild.getPickingQuantity()); + // 拣货数量:优先 picking_material_detail,否则 out_material_detail + BigDecimal pickQtyChild = (pickingMaterialDetailPO1.getPickingQuantity() != null && pickingMaterialDetailPO1.getPickingQuantity().compareTo(BigDecimal.ZERO) > 0) + ? pickingMaterialDetailPO1.getPickingQuantity() : outMaterialDetailPOChild.getPickingQuantity(); + BigDecimal checkQtyChild = outMaterialDetailPOChild.getCheckQuantity() != null ? outMaterialDetailPOChild.getCheckQuantity() : BigDecimal.ZERO; + // 待复核数量 = 拣货数量 - 已复核数量(复核提交后应减少) + BigDecimal waitQtyChild = (pickQtyChild != null ? pickQtyChild : BigDecimal.ZERO).subtract(checkQtyChild); + if (waitQtyChild.compareTo(BigDecimal.ZERO) < 0) { + waitQtyChild = BigDecimal.ZERO; } + outMaterialDetailPOChild.setWaitCheckQuantity(waitQtyChild); + // quantity=PC下发时的拣货数量,actualQuantity默认=待复核数量 + if (pickQtyChild != null) { + outMaterialDetailPOChild.setQuantity(pickQtyChild); + } + outMaterialDetailPOChild.setActualQuantity(waitQtyChild); } } } @@ -831,11 +849,10 @@ public class StockOutOrderDomainService { for (OutMaterialDetailPO outMaterialDetailPO : outMaterialDetailPOList){ weightLimit = weightLimit.add(outMaterialDetailPO.getWeightLimit()); volumeLimit = volumeLimit.add(outMaterialDetailPO.getVolumeLimit()); - // 待复核数量按已拣货完成数量:优先 waitCheckQuantity(来自 picking_material_detail),否则用 pickingQuantity - BigDecimal qty = (outMaterialDetailPO.getWaitCheckQuantity() != null && outMaterialDetailPO.getWaitCheckQuantity().compareTo(BigDecimal.ZERO) > 0) - ? outMaterialDetailPO.getWaitCheckQuantity() : outMaterialDetailPO.getPickingQuantity(); - wantNumber = wantNumber.add(qty != null ? qty : BigDecimal.ZERO); - alreadyNumber = alreadyNumber.add(outMaterialDetailPO.getCheckQuantity()); + // wantNumber=拣货数量总和,alreadyNumber=已复核总和,notHaveNumber=剩余待复核 + BigDecimal pickQty = (outMaterialDetailPO.getQuantity() != null ? outMaterialDetailPO.getQuantity() : outMaterialDetailPO.getPickingQuantity()); + wantNumber = wantNumber.add(pickQty != null ? pickQty : BigDecimal.ZERO); + alreadyNumber = alreadyNumber.add(outMaterialDetailPO.getCheckQuantity() != null ? outMaterialDetailPO.getCheckQuantity() : BigDecimal.ZERO); } OutMaterialCheckPO outMaterialCheckPO = new OutMaterialCheckPO(); outMaterialCheckPO.setCount(outMaterialDetailPOList.size()); diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/persistence/TaskPickingMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/persistence/TaskPickingMaterialDetailImpl.java index 75eed0939..45b6415ea 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/persistence/TaskPickingMaterialDetailImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/persistence/TaskPickingMaterialDetailImpl.java @@ -167,17 +167,18 @@ public class TaskPickingMaterialDetailImpl extends ServiceImpl 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())); + existing.setTotalNetWeight(taskPickingMaterialDetailDO.getTotalNetWeight()); } if (taskPickingMaterialDetailDO.getTotalGrossWeight() != null) { - existing.setTotalGrossWeight((existing.getTotalGrossWeight() != null ? existing.getTotalGrossWeight() : BigDecimal.ZERO).add(taskPickingMaterialDetailDO.getTotalGrossWeight())); + existing.setTotalGrossWeight(taskPickingMaterialDetailDO.getTotalGrossWeight()); } if (taskPickingMaterialDetailDO.getTotalVolume() != null) { - existing.setTotalVolume((existing.getTotalVolume() != null ? existing.getTotalVolume() : BigDecimal.ZERO).add(taskPickingMaterialDetailDO.getTotalVolume())); + existing.setTotalVolume(taskPickingMaterialDetailDO.getTotalVolume()); } if (taskPickingMaterialDetailDO.getTotalArea() != null) { - existing.setTotalArea((existing.getTotalArea() != null ? existing.getTotalArea() : BigDecimal.ZERO).add(taskPickingMaterialDetailDO.getTotalArea())); + existing.setTotalArea(taskPickingMaterialDetailDO.getTotalArea()); } } else { PickingMaterialDetailDO pickingMaterialDetailDO = new PickingMaterialDetailDO(); diff --git a/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml index d3ac0154f..ad2e8b8e4 100644 --- a/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml +++ b/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml @@ -220,6 +220,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND IFNULL(pmd.PICKING_QUANTITY, 0) > 0 + + UPDATE picking_material_detail @@ -228,24 +237,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHEN #{item.uniqueId} THEN LEAST(picking_quantity + #{item.pickingQuantity}, quantity) + - WHEN #{item.uniqueId} THEN IFNULL(total_net_weight, 0) + IFNULL(#{item.totalNetWeight}, 0) + WHEN #{item.uniqueId} THEN IFNULL(#{item.totalNetWeight}, total_net_weight) - WHEN #{item.uniqueId} THEN IFNULL(total_gross_weight, 0) + IFNULL(#{item.totalGrossWeight}, 0) + WHEN #{item.uniqueId} THEN IFNULL(#{item.totalGrossWeight}, total_gross_weight) - WHEN #{item.uniqueId} THEN IFNULL(total_volume, 0) + IFNULL(#{item.totalVolume}, 0) + WHEN #{item.uniqueId} THEN IFNULL(#{item.totalVolume}, total_volume) - WHEN #{item.uniqueId} THEN IFNULL(total_area, 0) + IFNULL(#{item.totalArea}, 0) + WHEN #{item.uniqueId} THEN IFNULL(#{item.totalArea}, total_area) update_by = #{updateBy}, @@ -258,4 +268,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{item.uniqueId} + + + + UPDATE picking_material_detail SET total_net_weight = 0, total_gross_weight = 0, total_volume = 0, total_area = 0 + WHERE out_unique_id = #{outUniqueId} AND del_flag = 1 + + + + UPDATE picking_material_detail pmd + INNER JOIN (SELECT unique_id FROM picking_material_detail WHERE out_unique_id = #{outUniqueId} AND del_flag = 1 ORDER BY unique_id LIMIT 1) first_row ON pmd.unique_id = first_row.unique_id + SET pmd.total_net_weight = #{totalNetWeight}, pmd.total_gross_weight = #{totalGrossWeight}, pmd.total_volume = #{totalVolume}, pmd.total_area = #{totalArea}, + pmd.update_by = #{updateBy}, pmd.update_by_name = #{updateByName}, pmd.update_time = #{updateTime} + WHERE pmd.out_unique_id = #{outUniqueId} AND pmd.del_flag = 1 + \ No newline at end of file