diff --git a/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue b/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue index 88b40e6..0c2b897 100644 --- a/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue +++ b/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue @@ -143,8 +143,9 @@ <a-divider type="vertical"/></a> <a v-if="record.isDoubleIn == 1 && record.exceptionState == 1" v-has="'taskHeader:executeTask'" @click="handleDoubleInTask(record)">修复重入数据 <a-divider type="vertical"/></a> - <a v-if="record.status <= 10" v-has="'taskHeader:cancelTask'" @click="cancelTask(record)">取消 - <a-divider type="vertical"/></a> + <a-popconfirm v-if="record.status <= 10" v-has="'taskHeader:cancelTask'" title="确定取消任务吗?" @confirm="() => cancelTask(record)"> + <a>取消</a> + </a-popconfirm> </span> </a-table> diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/service/IHuahengMultiHandlerService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/service/IHuahengMultiHandlerService.java index fe52e27..4ca2b97 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/service/IHuahengMultiHandlerService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/service/IHuahengMultiHandlerService.java @@ -2,6 +2,8 @@ package org.jeecg.modules.wms.framework.service; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerHeader; +import org.jeecg.modules.wms.shipment.shipmentCombination.entity.CombinationModel; +import org.jeecg.modules.wms.shipment.shipmentHeader.entity.CombinationParam; import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader; /** @@ -12,4 +14,10 @@ public interface IHuahengMultiHandlerService { Result sendTaskToWcs(TaskHeader taskHeader); Result<TaskHeader> createReceiptTask(ReceiptContainerHeader receiptContainerHeader, String warehouseCode); + + Result combination(CombinationModel combinationModel); + + Result combination(CombinationParam combinationParam); + + Result cancelCombine(Integer id); } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/service/impl/HuahengMultiHandlerServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/service/impl/HuahengMultiHandlerServiceImpl.java index e72f5b6..ab89228 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/service/impl/HuahengMultiHandlerServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/service/impl/HuahengMultiHandlerServiceImpl.java @@ -1,15 +1,26 @@ package org.jeecg.modules.wms.framework.service.impl; +import java.math.BigDecimal; + import javax.annotation.Resource; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.wms.framework.controller.HuahengBaseController; import org.jeecg.modules.wms.framework.service.IHuahengMultiHandlerService; +import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail; +import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService; import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerHeader; import org.jeecg.modules.wms.receipt.receiptContainerHeader.service.IReceiptContainerHeaderService; +import org.jeecg.modules.wms.shipment.shipmentCombination.entity.CombinationModel; +import org.jeecg.modules.wms.shipment.shipmentCombination.service.IShipmentCombinationService; +import org.jeecg.modules.wms.shipment.shipmentContainerHeader.service.IShipmentContainerHeaderService; +import org.jeecg.modules.wms.shipment.shipmentHeader.entity.CombinationParam; +import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentDetail; +import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentDetailService; import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader; import org.jeecg.modules.wms.task.taskHeader.service.ITaskHeaderService; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * @author 游杰 @@ -21,8 +32,17 @@ public class HuahengMultiHandlerServiceImpl extends HuahengBaseController implem private ITaskHeaderService taskHeaderService; @Resource private IReceiptContainerHeaderService receiptContainerHeaderService; + @Resource + private IShipmentCombinationService shipmentCombinationService; + @Resource + private IShipmentDetailService shipmentDetailService; + @Resource + private IInventoryDetailService inventoryDetailService; + @Resource + private IShipmentContainerHeaderService shipmentContainerHeaderService; @Override + @Transactional(rollbackFor = Exception.class) public Result sendTaskToWcs(TaskHeader taskHeader) { if (taskHeader == null) { return Result.error("任务信息为空"); @@ -39,6 +59,7 @@ public class HuahengMultiHandlerServiceImpl extends HuahengBaseController implem } @Override + @Transactional(rollbackFor = Exception.class) public Result<TaskHeader> createReceiptTask(ReceiptContainerHeader receiptContainerHeader, String warehouseCode) { String lockKey = warehouseCode; Result result = handleMultiProcess("createReceiptTask", lockKey, new MultiProcessListener() { @@ -50,4 +71,50 @@ public class HuahengMultiHandlerServiceImpl extends HuahengBaseController implem }); return result; } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result combination(CombinationModel combinationModel) { + Result result = handleMultiProcess("combination", new MultiProcessListener() { + @Override + public Result<?> doProcess() { + Result result = shipmentCombinationService.combination(combinationModel); + return result; + } + }); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result combination(CombinationParam combinationParam) { + Result result = handleMultiProcess("combination", new MultiProcessListener() { + @Override + public Result<?> doProcess() { + ShipmentDetail shipmentDetail = shipmentDetailService.getById(combinationParam.getShipmentDetailID()); + InventoryDetail inventoryDetail = inventoryDetailService.getById(combinationParam.getInventoryDetailID()); + CombinationModel combinationModel = new CombinationModel(); + combinationModel.setShipmentDetail(shipmentDetail); + combinationModel.setInventoryDetail(inventoryDetail); + combinationModel.setShipQty(new BigDecimal(combinationParam.getShipQty())); + Result result = shipmentCombinationService.combination(combinationModel); + return result; + } + }); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result cancelCombine(Integer id) { + Result result = handleMultiProcess("cancelCombine", new MultiProcessListener() { + @Override + public Result<?> doProcess() { + Result result = shipmentContainerHeaderService.cancelCombine(id); + return result; + } + }); + return result; + } + } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryDetailService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryDetailService.java index 59f6d5f..d492035 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryDetailService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryDetailService.java @@ -40,4 +40,12 @@ public interface IInventoryDetailService extends IService<InventoryDetail> { */ IPage<InventoryDetail> queryPage(Page<InventoryDetail> page, QueryWrapper<InventoryDetail> queryWrapper); + /** + * 更新库存详情的任务数量 + * @param taskQty + * @param id + * @return + */ + boolean updateTaskQtyById(BigDecimal taskQty, int id); + } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryDetailServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryDetailServiceImpl.java index 39feb83..afb132b 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryDetailServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryDetailServiceImpl.java @@ -111,6 +111,15 @@ public class InventoryDetailServiceImpl extends ServiceImpl<InventoryDetailMappe return pageResult; } + @Override + public boolean updateTaskQtyById(BigDecimal taskQty, int id) { + InventoryDetail inventoryDetail = new InventoryDetail(); + inventoryDetail.setTaskQty(taskQty); + inventoryDetail.setId(id); + boolean success = updateById(inventoryDetail); + return success; + } + /** * 计算库存明细托盘填充度 * @author TanYibin diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/controller/ShipmentCombinationController.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/controller/ShipmentCombinationController.java index 625f4fc..a4e694f 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/controller/ShipmentCombinationController.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/controller/ShipmentCombinationController.java @@ -10,14 +10,12 @@ import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.modules.wms.config.location.entity.Location; import org.jeecg.modules.wms.config.location.service.ILocationService; -import org.jeecg.modules.wms.config.locationHigh.entity.LocationHigh; import org.jeecg.modules.wms.config.port.entity.Port; import org.jeecg.modules.wms.config.port.service.IPortService; import org.jeecg.modules.wms.config.zone.entity.Zone; import org.jeecg.modules.wms.config.zone.service.IZoneService; -import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail; +import org.jeecg.modules.wms.framework.service.IHuahengMultiHandlerService; import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService; -import org.jeecg.modules.wms.shipment.shipmentCombination.entity.CombinationModel; import org.jeecg.modules.wms.shipment.shipmentCombination.entity.Shipment; import org.jeecg.modules.wms.shipment.shipmentCombination.service.IShipmentCombinationService; import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerHeader; @@ -58,6 +56,8 @@ public class ShipmentCombinationController { private IZoneService zoneService; @Resource private IPortService portService; + @Resource + private IHuahengMultiHandlerService huahengMultiHandlerService; /** * 获取单据列表 @@ -100,13 +100,7 @@ public class ShipmentCombinationController { @PostMapping("/combination") @ResponseBody public Result combination(@RequestBody CombinationParam combinationParam) { - ShipmentDetail shipmentDetail = shipmentDetailService.getById(combinationParam.getShipmentDetailID()); - InventoryDetail inventoryDetail = inventoryDetailService.getById(combinationParam.getInventoryDetailID()); - CombinationModel combinationModel = new CombinationModel(); - combinationModel.setShipmentDetail(shipmentDetail); - combinationModel.setInventoryDetail(inventoryDetail); - combinationModel.setShipQty(new BigDecimal(combinationParam.getShipQty())); - return shipmentCombinationService.combination(combinationModel); + return huahengMultiHandlerService.combination(combinationParam); } /** diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/IShipmentCombinationService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/IShipmentCombinationService.java index 8240ab9..2e570c5 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/IShipmentCombinationService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/IShipmentCombinationService.java @@ -1,15 +1,15 @@ package org.jeecg.modules.wms.shipment.shipmentCombination.service; +import java.math.BigDecimal; +import java.util.List; + import org.jeecg.common.api.vo.Result; import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail; -import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerHeader; import org.jeecg.modules.wms.shipment.shipmentCombination.entity.CombinationModel; +import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerDetail; import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerHeader; import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentDetail; -import java.math.BigDecimal; -import java.util.List; - /** * @author 游杰 */ @@ -26,4 +26,8 @@ public interface IShipmentCombinationService { public Result combination(CombinationModel combinationModel); public Result autoCombinationDetail(ShipmentDetail shipmentDetail, BigDecimal shipQty); + + ShipmentContainerHeader addShipmentContainerHeader(InventoryDetail inventoryDetail, ShipmentDetail shipmentDetail); + + ShipmentContainerDetail addShipmentContainerDetail(ShipmentContainerHeader shipmentContainerHeader, CombinationModel combinationModel); } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java index 505d0b1..e25c379 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java @@ -5,6 +5,8 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import javax.annotation.Resource; + import org.jeecg.common.api.vo.Result; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.modules.wms.config.container.entity.Container; @@ -14,6 +16,7 @@ import org.jeecg.modules.wms.config.location.service.ILocationService; import org.jeecg.modules.wms.config.material.entity.Material; import org.jeecg.modules.wms.config.material.service.IMaterialService; import org.jeecg.modules.wms.config.parameterConfiguration.service.IParameterConfigurationService; +import org.jeecg.modules.wms.framework.service.IHuahengMultiHandlerService; import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail; import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService; import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryHeaderService; @@ -46,10 +49,12 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import cn.monitor4all.logRecord.annotation.OperationLog; import cn.monitor4all.logRecord.context.LogRecordContext; +import lombok.extern.slf4j.Slf4j; /** * @author 游杰 */ +@Slf4j @Service public class ShipmentCombinationServiceImpl implements IShipmentCombinationService { @@ -81,6 +86,8 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi private ITaskDetailService taskDetailService; @Autowired private IInventoryHeaderService inventoryHeaderService; + @Resource + private IHuahengMultiHandlerService huahengMultiHandlerService; /** * 根据出库单详情,匹配到可用出库的库存详情 @@ -212,7 +219,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi combinationModel.setShipQty(inventoryQty); shipmentQty = shipmentQty.subtract(inventoryQty); } - Result result = shipmentCombinationService.combination(combinationModel); + Result result = huahengMultiHandlerService.combination(combinationModel); if (!result.isSuccess()) { throw new JeecgBootException(result.getMessage()); } @@ -227,6 +234,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi BigDecimal shipmentQty = combinationModel.getShipQty(); ShipmentDetail shipmentDetail = combinationModel.getShipmentDetail(); InventoryDetail inventoryDetail = combinationModel.getInventoryDetail(); + log.info("开始出库配盘" + shipmentDetail); if (shipmentQty.compareTo(BigDecimal.ZERO) <= 0) { return Result.error("配盘时,出库数量必须大于0"); } @@ -281,7 +289,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi return Result.error("配盘时, 库存详情的任务数量不能超过库存数量"); } inventoryDetail.setTaskQty(inventoryDetailTaskQty); - success = inventoryDetailService.updateById(inventoryDetail); + success = inventoryDetailService.updateTaskQtyById(inventoryDetailTaskQty, inventoryDetail.getId()); if (!success) { throw new JeecgBootException("配盘时, 更新库存详情失败"); } @@ -291,21 +299,18 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi } if (shipmentDetailTaskQty.compareTo(shipmentDetailQty) > 0) { return Result.error("配盘时, 出库详情的任务数量不能超过单据数量"); - } else if (inventoryDetailTaskQty.compareTo(inventoryDetailQty) == 0) { - shipmentDetail.setStatus(QuantityConstant.SHIPMENT_HEADER_WAITING_OFF_SHELF); - } else if (inventoryDetailTaskQty.compareTo(inventoryDetailQty) < 0) { - shipmentDetail.setStatus(QuantityConstant.SHIPMENT_HEADER_WAITING_OFF_SHELF); } + shipmentDetail.setStatus(QuantityConstant.SHIPMENT_HEADER_GROUPDISK); shipmentDetail.setTaskQty(shipmentDetailTaskQty); - success = shipmentDetailService.updateById(shipmentDetail); + success = shipmentDetailService.updateTaskQtyAndStatusById(shipmentDetailTaskQty, QuantityConstant.SHIPMENT_HEADER_GROUPDISK, shipmentDetail.getId()); if (!success) { throw new JeecgBootException("配盘时, 更新出库详情失败"); } - ShipmentContainerHeader shipmentContainerHeader = addShipmentContainerHeader(inventoryDetail, shipmentDetail); + ShipmentContainerHeader shipmentContainerHeader = shipmentCombinationService.addShipmentContainerHeader(inventoryDetail, shipmentDetail); if (shipmentContainerHeader == null) { throw new JeecgBootException("配盘时, 新增出库组盘头失败"); } - ShipmentContainerDetail shipmentContainerDetail = addShipmentContainerDetail(shipmentContainerHeader, combinationModel); + ShipmentContainerDetail shipmentContainerDetail = shipmentCombinationService.addShipmentContainerDetail(shipmentContainerHeader, combinationModel); if (shipmentContainerDetail == null) { throw new JeecgBootException("配盘时, 新增出库组盘详情失败"); } @@ -314,9 +319,11 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi throw new JeecgBootException("配盘时, 更新出库单失败"); } LogRecordContext.putVariable("extraJsonString", JSON.toJSONString(Collections.singletonList(shipmentContainerDetail))); + log.info("完成出库配盘" + shipmentDetail); return Result.ok("配盘成功"); } + @Override @Transactional(rollbackFor = JeecgBootException.class) public ShipmentContainerHeader addShipmentContainerHeader(InventoryDetail inventoryDetail, ShipmentDetail shipmentDetail) { String containerCode = inventoryDetail.getContainerCode(); @@ -342,14 +349,22 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi if (shipmentContainerHeader != null) { if (taskType != shipmentContainerHeader.getTaskType()) { shipmentContainerHeader.setTaskType(taskType); - if (!shipmentContainerHeaderService.updateById(shipmentContainerHeader)) { + if (!shipmentContainerHeaderService.updateTaskTypeById(taskType, shipmentContainerHeader.getId())) { throw new ServiceException("更新出库组盘头任务类型失败"); } } } else { + String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION); + if (StringUtils.isEmpty(value)) { + throw new JeecgBootException("取消入库任务时, 没有获取到配置属性"); + } + int taskLocationRule = Integer.parseInt(value); shipmentContainerHeader = new ShipmentContainerHeader(); shipmentContainerHeader.setContainerCode(containerCode); shipmentContainerHeader.setFromLocationCode(locationCode); + if (taskLocationRule == QuantityConstant.RULE_TASK_SET_LOCATION) { + shipmentContainerHeader.setToLocationCode(locationCode); + } shipmentContainerHeader.setWarehouseCode(warehouseCode); shipmentContainerHeader.setCompanyCode(shipmentDetail.getCompanyCode()); shipmentContainerHeader.setContainerTypeCode(container.getContainerTypeCode()); @@ -365,6 +380,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi return shipmentContainerHeader; } + @Override @Transactional(rollbackFor = JeecgBootException.class) public ShipmentContainerDetail addShipmentContainerDetail(ShipmentContainerHeader shipmentContainerHeader, CombinationModel combinationModel) { boolean success = false; @@ -381,8 +397,9 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi .eq(ShipmentContainerDetail::getWarehouseCode, warehouseCode); ShipmentContainerDetail shipmentContainerDetail = shipmentContainerDetailService.getOne(shipmentContainerDetailLambdaQueryWrapper); if (shipmentContainerDetail != null) { - shipmentContainerDetail.setQty(shipmentContainerDetail.getQty().add(combinationModel.getShipQty())); - success = shipmentContainerDetailService.updateById(shipmentContainerDetail); + BigDecimal qty = shipmentContainerDetail.getQty().add(combinationModel.getShipQty()); + shipmentContainerDetail.setQty(qty); + success = shipmentContainerDetailService.updateQtyById(qty, shipmentContainerDetail.getId()); if (!success) { throw new JeecgBootException("更新出库组盘详情失败"); } @@ -435,6 +452,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi if (shipmentContainerHeader.getStatus() >= QuantityConstant.SHIPMENT_CONTAINER_TASK) { return Result.error("生成出库任务时, 出库组盘头" + shipmentContainerHeader.getId() + "已经生成任务,请不要重复生成,操作中止"); } + log.info("开始创建出库任务,出库配盘头" + shipmentContainerHeader.getId()); List<ShipmentContainerDetail> shipmentContainerDetailList = shipmentContainerDetailService.getShipmentContainerDetailListByHeaderId(shipmentContainerHeader.getId()); if (shipmentContainerDetailList.size() == 0) { @@ -446,6 +464,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi String fromLocationCode = shipmentContainerHeader.getFromLocationCode(); String toLocationCode = shipmentContainerHeader.getToLocationCode(); String containerCode = shipmentContainerHeader.getContainerCode(); + String toPort = shipmentContainerHeader.getToPort(); if (StringUtils.isEmpty(fromLocationCode)) { return Result.error("生成出库任务时, 出库组盘头没有起始库位号"); } @@ -500,13 +519,6 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi if (shipmentTaskRule == QuantityConstant.RULE_TASK_PICK_SHIPMENT) { taskType = QuantityConstant.TASK_TYPE_SORTINGSHIPMENT; } - value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION); - int taskLocationRule = Integer.parseInt(value); - if (taskLocationRule == QuantityConstant.RULE_TASK_SET_LOCATION) { - toLocationCode = fromLocationCode; - shipmentContainerHeader.setToLocationCode(toLocationCode); - } - shipmentContainerHeader.setTaskType(taskType); String zoneCode = location.getZoneCode(); TaskHeader taskHeader = new TaskHeader(); taskHeader.setPreTaskNo(preTaskNo); @@ -556,6 +568,17 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi if (!success) { throw new JeecgBootException("生成出库任务时, 创建任务详情失败"); } + value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION); + int taskLocationRule = Integer.parseInt(value); + int shipmentContainerHeaderId = shipmentContainerHeader.getId(); + shipmentContainerHeader = new ShipmentContainerHeader(); + if (taskLocationRule == QuantityConstant.RULE_TASK_SET_LOCATION) { + toLocationCode = fromLocationCode; + shipmentContainerHeader.setToLocationCode(toLocationCode); + } + shipmentContainerHeader.setToPort(toPort); + shipmentContainerHeader.setId(shipmentContainerHeaderId); + shipmentContainerHeader.setTaskType(taskType); shipmentContainerHeader.setStatus(QuantityConstant.SHIPMENT_CONTAINER_TASK); success = shipmentContainerHeaderService.updateById(shipmentContainerHeader); if (!success) { @@ -570,6 +593,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi LogRecordContext.putVariable("extraJsonString1", JSON.toJSONString(shipmentContainerDetailList));// 操作日志收集 LogRecordContext.putVariable("taskDetailList", taskDetailList);// 操作日志收集 LogRecordContext.putVariable("extraJsonString2", JSON.toJSONString(taskDetailList));// 操作日志收集 + log.info("完成创建出库任务,出库配盘头" + shipmentContainerHeader.getId()); return Result.OK("生成出库任务成功"); } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java index 0a0ca3e..85d95cc 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -17,12 +18,12 @@ import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.wms.framework.service.IHuahengMultiHandlerService; import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerDetail; import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerHeader; import org.jeecg.modules.wms.shipment.shipmentContainerHeader.service.IShipmentContainerDetailService; import org.jeecg.modules.wms.shipment.shipmentContainerHeader.service.IShipmentContainerHeaderService; import org.jeecg.utils.HuahengJwtUtil; -import org.jeecg.utils.StringUtils; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; @@ -60,6 +61,9 @@ public class ShipmentContainerHeaderController extends JeecgController<ShipmentC @Autowired private IShipmentContainerDetailService shipmentContainerDetailService; + @Resource + private IHuahengMultiHandlerService huahengMultiHandlerService; + /*---------------------------------主表处理-begin-------------------------------------*/ /** @@ -122,7 +126,7 @@ public class ShipmentContainerHeaderController extends JeecgController<ShipmentC @RequiresPermissions("shipmentContainerHeader:delete") @DeleteMapping(value = "/delete") public Result<?> delete(@RequestParam(name = "id", required = true) String id) { - return shipmentContainerHeaderService.cancelCombine(Integer.parseInt(id)); + return huahengMultiHandlerService.cancelCombine(Integer.parseInt(id)); } /** diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/IShipmentContainerDetailService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/IShipmentContainerDetailService.java index f2e53c5..802323e 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/IShipmentContainerDetailService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/IShipmentContainerDetailService.java @@ -1,8 +1,11 @@ package org.jeecg.modules.wms.shipment.shipmentContainerHeader.service; +import java.math.BigDecimal; +import java.util.List; + import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerDetail; + import com.baomidou.mybatisplus.extension.service.IService; -import java.util.List; /** * @Description: 出库组盘详情 @@ -17,4 +20,6 @@ public interface IShipmentContainerDetailService extends IService<ShipmentContai public List<ShipmentContainerDetail> getShipmentContainerDetailListByHeaderId(int shipmentContainerHeaderId); public List<ShipmentContainerDetail> getShipmentContainerDetailListByShipmentCode(String shipmentCode); + + boolean updateQtyById(BigDecimal qty, int id); } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/IShipmentContainerHeaderService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/IShipmentContainerHeaderService.java index a8defb5..db27731 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/IShipmentContainerHeaderService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/IShipmentContainerHeaderService.java @@ -55,4 +55,21 @@ public interface IShipmentContainerHeaderService extends IService<ShipmentContai * @return */ Result cancelCombine(List<Integer> ids); + + /** + * 更新任务类型 + * @param taskType + * @param id + * @return + */ + boolean updateTaskTypeById(int taskType, int id); + + /** + * 更新出库配盘状态 + * @param status + * @param id + * @return + */ + boolean updateStatusById(int status, int id); + } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/impl/ShipmentContainerDetailServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/impl/ShipmentContainerDetailServiceImpl.java index 95e2237..ffef3c4 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/impl/ShipmentContainerDetailServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/impl/ShipmentContainerDetailServiceImpl.java @@ -1,14 +1,17 @@ package org.jeecg.modules.wms.shipment.shipmentContainerHeader.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import java.math.BigDecimal; +import java.util.List; + import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerDetail; import org.jeecg.modules.wms.shipment.shipmentContainerHeader.mapper.ShipmentContainerDetailMapper; import org.jeecg.modules.wms.shipment.shipmentContainerHeader.service.IShipmentContainerDetailService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.List; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.beans.factory.annotation.Autowired; /** * @Description: 出库组盘详情 @@ -43,4 +46,13 @@ public class ShipmentContainerDetailServiceImpl extends ServiceImpl<ShipmentCont List<ShipmentContainerDetail> shipmentContainerDetailList = list(shipmentContainerDetailLambdaQueryWrapper); return shipmentContainerDetailList; } + + @Override + public boolean updateQtyById(BigDecimal qty, int id) { + ShipmentContainerDetail shipmentContainerDetail = new ShipmentContainerDetail(); + shipmentContainerDetail.setQty(qty); + shipmentContainerDetail.setId(id); + boolean success = updateById(shipmentContainerDetail); + return success; + } } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/impl/ShipmentContainerHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/impl/ShipmentContainerHeaderServiceImpl.java index 4414471..9b1109b 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/impl/ShipmentContainerHeaderServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/impl/ShipmentContainerHeaderServiceImpl.java @@ -1,6 +1,7 @@ package org.jeecg.modules.wms.shipment.shipmentContainerHeader.service.impl; import java.io.Serializable; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -9,9 +10,10 @@ import java.util.stream.Collectors; import javax.annotation.Resource; import org.jeecg.common.api.vo.Result; +import org.jeecg.common.exception.JeecgBootException; +import org.jeecg.modules.wms.framework.service.IHuahengMultiHandlerService; import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail; import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService; -import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail; import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerDetail; import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerHeader; import org.jeecg.modules.wms.shipment.shipmentContainerHeader.mapper.ShipmentContainerDetailMapper; @@ -28,13 +30,13 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.alibaba.fastjson.JSON; -import org.jeecg.common.exception.JeecgBootException; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import cn.monitor4all.logRecord.annotation.OperationLog; import cn.monitor4all.logRecord.context.LogRecordContext; +import lombok.extern.slf4j.Slf4j; /** * @Description: 出库组盘 @@ -42,6 +44,7 @@ import cn.monitor4all.logRecord.context.LogRecordContext; * @Date: 2022-11-22 * @Version: V1.0 */ +@Slf4j @Service public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentContainerHeaderMapper, ShipmentContainerHeader> implements IShipmentContainerHeaderService { @@ -58,6 +61,8 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont private IShipmentContainerDetailService shipmentContainerDetailService; @Resource private IInventoryDetailService inventoryDetailService; + @Resource + private IHuahengMultiHandlerService huahengMultiHandlerService; @Override @Transactional @@ -138,12 +143,13 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont if (shipmentContainerHeader == null) { return false; } + log.info("开始取消出库任务,任务id" + taskHeader.getId()); int shipmentContainerStatus = shipmentContainerHeader.getStatus(); if (shipmentContainerStatus != QuantityConstant.SHIPMENT_CONTAINER_TASK) { throw new JeecgBootException("取消出库任务时, 任务状态不为生成任务状态"); } shipmentContainerHeader.setStatus(QuantityConstant.SHIPMENT_CONTAINER_BUILD); - boolean success = updateById(shipmentContainerHeader); + boolean success = this.updateStatusById(QuantityConstant.SHIPMENT_CONTAINER_BUILD, shipmentContainerHeader.getId()); if (!success) { throw new JeecgBootException("取消入库任务时, 更新入库组盘头失败"); } @@ -156,6 +162,10 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont if (shipmentDetail == null) { throw new JeecgBootException("取消出库任务时, 没有找到出库单详情" + shipmentContainerDetail.getShipmentDetailId()); } + int shipmentId = shipmentDetail.getShipmentId(); + shipmentDetail = new ShipmentDetail(); + shipmentDetail.setId(shipmentContainerDetail.getShipmentDetailId()); + shipmentDetail.setShipmentId(shipmentId); shipmentDetail.setStatus(QuantityConstant.SHIPMENT_HEADER_GROUPDISK); shipmentDetailList.add(shipmentDetail); } @@ -172,6 +182,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont } } } + log.info("完成取消出库任务,任务id" + taskHeader.getId()); LogRecordContext.putVariable("shipmentContainerHeader", shipmentContainerHeader);// 操作日志收集 LogRecordContext.putVariable("shipmentContainerDetailList", shipmentContainerDetailList);// 操作日志收集 LogRecordContext.putVariable("extraJsonString", JSON.toJSONString(shipmentContainerDetailList));// 操作日志收集 @@ -182,6 +193,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont @Transactional(rollbackFor = JeecgBootException.class) @OperationLog(bizId = "''", bizType = "'出库单追踪'", tag = "'详情取消配盘'", extra = "#extraJsonString", msg = "''", recordReturnValue = true) public Result cancelCombine(Integer id) { + log.info("开始取消配盘,id:" + id); ShipmentContainerHeader shipmentContainerHeader = this.getById(id); if (shipmentContainerHeader == null) { return Result.error("取消出库配盘失败, 没有找到出库组盘头ID:" + id); @@ -191,15 +203,15 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont return Result.error("取消出库配盘失败,已经生成出库任务"); } List<ShipmentContainerDetail> shipmentContainerDetailList = shipmentContainerDetailService.getShipmentContainerDetailListByHeaderId(id); - List<ShipmentDetail> shipmentDetailList = new ArrayList<ShipmentDetail>(); for (ShipmentContainerDetail shipmentContainerDetail : shipmentContainerDetailList) { ShipmentDetail shipmentDetail = shipmentDetailService.getById(shipmentContainerDetail.getShipmentDetailId()); if (shipmentDetail == null) { throw new JeecgBootException("取消出库配盘失败, 没有找到出库单,出库详情ID:" + shipmentContainerDetail.getShipmentDetailId()); } shipmentDetail.setStatus(QuantityConstant.SHIPMENT_HEADER_BUILD); - shipmentDetail.setTaskQty(shipmentDetail.getTaskQty().subtract(shipmentContainerDetail.getQty())); - if (!shipmentDetailService.updateById(shipmentDetail)) { + BigDecimal taskQty = shipmentDetail.getTaskQty().subtract(shipmentContainerDetail.getQty()); + shipmentDetail.setTaskQty(taskQty); + if (!shipmentDetailService.updateTaskQtyAndStatusById(taskQty, QuantityConstant.SHIPMENT_HEADER_BUILD, shipmentDetail.getId())) { throw new JeecgBootException("取消出库配盘失败, 更新出库明细失败,出库详情ID:" + shipmentContainerDetail.getShipmentDetailId()); } if (!shipmentContainerDetailService.removeById(shipmentContainerDetail.getId())) { @@ -209,26 +221,48 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont throw new JeecgBootException("取消出库配盘失败, 更新出库单头失败,出库单ID:" + shipmentDetail.getShipmentId()); } InventoryDetail inventoryDetail = inventoryDetailService.getById(shipmentContainerDetail.getInventoryDetailId()); - inventoryDetail.setTaskQty(inventoryDetail.getTaskQty().subtract(shipmentContainerDetail.getQty())); - if (!inventoryDetailService.updateById(inventoryDetail)) { + if (inventoryDetail == null) { + throw new JeecgBootException("取消出库配盘失败, 没有找到库存详情失败,库存详情ID:" + shipmentContainerDetail.getInventoryDetailId()); + } + BigDecimal inventoryDetailTaskQty = inventoryDetail.getTaskQty().subtract(shipmentContainerDetail.getQty()); + if (!inventoryDetailService.updateTaskQtyById(inventoryDetailTaskQty, shipmentContainerDetail.getInventoryDetailId())) { throw new JeecgBootException("取消出库配盘失败, 解锁库存详情失败,库存详情ID:" + inventoryDetail.getId()); } - shipmentDetailList.add(shipmentDetail); } if (!this.removeById(id)) { throw new JeecgBootException("取消出库配盘失败, 删除出库组盘头表失败,配盘ID:" + id); } LogRecordContext.putVariable("extraJsonString", JSON.toJSONString(shipmentContainerDetailList)); + log.info("完成取消配盘,id:" + id); return Result.ok("取消配盘成功"); } @Override + @Transactional(rollbackFor = Exception.class) public Result cancelCombine(List<Integer> ids) { Result result = null; for (Integer id : ids) { - result = cancelCombine(id); + result = huahengMultiHandlerService.cancelCombine(id); } return result; } + @Override + public boolean updateTaskTypeById(int taskType, int id) { + ShipmentContainerHeader shipmentContainerHeader = new ShipmentContainerHeader(); + shipmentContainerHeader.setTaskType(taskType); + shipmentContainerHeader.setId(id); + boolean success = this.updateById(shipmentContainerHeader); + return success; + } + + @Override + public boolean updateStatusById(int status, int id) { + ShipmentContainerHeader shipmentContainerHeader = new ShipmentContainerHeader(); + shipmentContainerHeader.setStatus(status); + shipmentContainerHeader.setId(id); + boolean success = this.updateById(shipmentContainerHeader); + return success; + } + } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/IShipmentDetailService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/IShipmentDetailService.java index 19152cb..ea9ebe5 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/IShipmentDetailService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/IShipmentDetailService.java @@ -1,11 +1,12 @@ package org.jeecg.modules.wms.shipment.shipmentHeader.service; +import java.math.BigDecimal; +import java.util.List; + import org.jeecg.common.api.vo.Result; import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentDetail; -import com.baomidou.mybatisplus.extension.service.IService; -import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentHeader; -import java.util.List; +import com.baomidou.mybatisplus.extension.service.IService; /** * @Description: 出库单详情 @@ -22,4 +23,6 @@ public interface IShipmentDetailService extends IService<ShipmentDetail> { public List<ShipmentDetail> getShipmentDetailListByShipmentId(Integer id); boolean batchSave(List<ShipmentDetail> shipmentDetailList); + + boolean updateTaskQtyAndStatusById(BigDecimal taskQty, int status, int id); } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/IShipmentHeaderService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/IShipmentHeaderService.java index 6230497..39c0ab1 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/IShipmentHeaderService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/IShipmentHeaderService.java @@ -1,15 +1,12 @@ package org.jeecg.modules.wms.shipment.shipmentHeader.service; +import java.io.Serializable; +import java.util.Collection; + import org.jeecg.common.api.vo.Result; -import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerHeader; -import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerHeader; -import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentDetail; import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentHeader; + import com.baomidou.mybatisplus.extension.service.IService; -import org.springframework.beans.factory.annotation.Autowired; -import java.io.Serializable; -import java.util.Collection; -import java.util.List; /** * @Description: 出库单 @@ -40,4 +37,6 @@ public interface IShipmentHeaderService extends IService<ShipmentHeader> { public ShipmentHeader getShipmentHeaderByCode(String code, String warehouseCode); public ShipmentHeader getShipmentHeaderByReferCode(String referCode, String warehouseCode); + + boolean updateFirstStatusAndLastStatusById(Integer firstStatus, Integer lastStatus, int id); } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentDetailServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentDetailServiceImpl.java index 2a2826c..8b4403a 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentDetailServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentDetailServiceImpl.java @@ -1,14 +1,15 @@ package org.jeecg.modules.wms.shipment.shipmentHeader.service.impl; -import com.alibaba.fastjson.JSON; -import org.jeecg.common.exception.JeecgBootException; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import java.math.BigDecimal; +import java.util.Collections; +import java.util.List; + +import javax.annotation.Resource; + import org.jeecg.common.api.vo.Result; +import org.jeecg.common.exception.JeecgBootException; import org.jeecg.modules.wms.config.material.entity.Material; import org.jeecg.modules.wms.config.material.service.IMaterialService; -import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptHeader; -import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptHeaderService; import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentDetail; import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentHeader; import org.jeecg.modules.wms.shipment.shipmentHeader.mapper.ShipmentDetailMapper; @@ -16,19 +17,17 @@ import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentDetailServ import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentHeaderService; import org.jeecg.utils.StringUtils; import org.jeecg.utils.constant.QuantityConstant; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Collections; -import java.util.List; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import cn.monitor4all.logRecord.annotation.OperationLog; import cn.monitor4all.logRecord.context.LogRecordContext; -import org.springframework.beans.factory.annotation.Autowired; - -import javax.annotation.Resource; - /** * @Description: 出库单详情 * @Author: jeecg-boot @@ -108,4 +107,15 @@ public class ShipmentDetailServiceImpl extends ServiceImpl<ShipmentDetailMapper, public boolean batchSave(List<ShipmentDetail> shipmentDetailList) { return this.saveBatch(shipmentDetailList); } + + @Override + public boolean updateTaskQtyAndStatusById(BigDecimal taskQty, int status, int id) { + ShipmentDetail shipmentDetail = new ShipmentDetail(); + shipmentDetail.setTaskQty(taskQty); + shipmentDetail.setStatus(status); + shipmentDetail.setId(id); + boolean success = updateById(shipmentDetail); + return success; + } + } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java index 20becd9..cb5198c 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java @@ -193,7 +193,7 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper, // 尾状态是单据详情中最小的状态 shipmentHeader.setFirstStatus(maxStatus); shipmentHeader.setLastStatus(minStatus); - if (!shipmentHeaderService.updateById(shipmentHeader)) { + if (!shipmentHeaderService.updateFirstStatusAndLastStatusById(maxStatus, minStatus, shipmentId)) { throw new JeecgBootException("更新出库单:" + shipmentHeader.getCode() + " 头状态失败"); } LogRecordContext.putVariable("minStatus", minStatus); @@ -238,4 +238,14 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper, return shipmentHeader; } + @Override + public boolean updateFirstStatusAndLastStatusById(Integer firstStatus, Integer lastStatus, int id) { + ShipmentHeader shipmentHeader = new ShipmentHeader(); + shipmentHeader.setFirstStatus(firstStatus); + shipmentHeader.setLastStatus(lastStatus); + shipmentHeader.setId(id); + boolean success = updateById(shipmentHeader); + return success; + } + } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java index 21cc2be..f56d900 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java @@ -909,6 +909,14 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea if (!success) { return Result.error("取消任务失败, 删除任务失败"); } + List<TaskDetail> taskDetailList = taskDetailService.getTaskDetailListByTaskId(taskId); + if (taskDetailList.size() > 0) { + List<Integer> taskDetailIdList = taskDetailList.stream().map(TaskDetail::getId).collect(Collectors.toList()); + success = taskDetailService.removeByIds(taskDetailIdList); + if (!success) { + return Result.error("取消任务失败, 删除任务详情失败"); + } + } Result result = Result.ok("取消任务成功"); switch (taskType) { case QuantityConstant.TASK_TYPE_WHOLERECEIPT: @@ -959,6 +967,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea @Override @Transactional(rollbackFor = Exception.class) public Result<TaskHeader> createEmptyIn(String containerCode, String toLocationCode, String warehouseCode) { + log.info("开始创建空托入库任务"); if (StringUtils.isEmpty(containerCode)) { return Result.error("创建空托盘入库时, 托盘号为空"); } @@ -1004,6 +1013,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea taskHeader.setToLocationCode(toLocationCode); taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD); success = taskHeaderService.save(taskHeader); + log.info("完成创建空托入库任务"); if (!success) { throw new JeecgBootException("创建空托盘入库时,保存任务失败"); } @@ -1503,6 +1513,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea && inventoryDetail1.getLot().equals(inventoryDetail2.getLot()) && inventoryDetail1.getProject().equals(inventoryDetail2.getProject())) { // 属性一样的库存,相加合并。 BigDecimal totalQty = inventoryDetail1.getQty().add(inventoryDetail2.getQty()); + inventoryDetail1.setQty(totalQty); InventoryDetail inventoryDetail = new InventoryDetail(); inventoryDetail.setId(inventoryDetail1.getId()); inventoryDetail.setQty(totalQty); @@ -1546,6 +1557,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea @Override @Transactional(rollbackFor = Exception.class) public Result completeEmptyInTask(TaskHeader taskHeader) { + log.info("开始完成空托入库任务"); String warehouseCode = taskHeader.getWarehouseCode(); String toLocationCode = taskHeader.getToLocationCode(); String containerCode = taskHeader.getContainerCode(); @@ -1574,8 +1586,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea if (!success) { throw new JeecgBootException("完成空托盘入库任务时, 更新库位的容器编码和状态失败"); } - taskHeader.setStatus(QuantityConstant.TASK_STATUS_COMPLETED); - success = taskHeaderService.updateById(taskHeader); + success = taskHeaderService.updateStatusById(QuantityConstant.TASK_STATUS_COMPLETED, taskHeader.getId()); + log.info("完成空托入库任务"); if (!success) { throw new JeecgBootException("完成空托盘入库任务时, 更新任务失败"); } @@ -2244,7 +2256,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea public Result cancelShipmentTask(TaskHeader taskHeader) { boolean success = shipmentContainerHeaderService.cancelShipmentTask(taskHeader); if (!success) { - throw new JeecgBootException("取消入库任务时, 更新组盘头状态失败"); + throw new JeecgBootException("取消出库任务时, 更新组盘头状态失败"); } return Result.ok("取消出库任务成功"); }