From 60fc6633fb1668b1cfc7673ed069d94d2dcccd17 Mon Sep 17 00:00:00 2001
From: DESKTOP-AO0VKC8\mahua <mahuandong@outlook.com>
Date: Fri, 31 Jul 2020 10:20:43 +0800
Subject: [PATCH] 修改入库任务完成、出库自动组盘

---
 src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java |  13 +++++++------
 src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java                                  | 208 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------------------------------------------------------------------------------------------------------------------------
 src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java                                   |   2 --
 src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java                               | 365 ++++++++++++++++++++++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 4 files changed, 94 insertions(+), 494 deletions(-)

diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java
index 88b94ab..9f92d5c 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java
@@ -243,11 +243,12 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont
         Boolean flag =true;
         //1.查看是否有同一出库明细的物料需要出库
         LambdaQueryWrapper<ShipmentContainerDetail> lambdaQueryWrapper=Wrappers.lambdaQuery();
-        lambdaQueryWrapper.eq(ShipmentContainerDetail::getShippingContainerId,shipmentContainerHeader.getId())
-                .eq(ShipmentContainerDetail::getLocationCode,shipmentContainerHeader.getLocationCode())
-                .eq(ShipmentContainerDetail::getContainerCode,shipmentContainerHeader.getContainerCode())
-                .eq(ShipmentContainerDetail::getShipmentDetailId,shipmentCombinationModel.getShipmentDetailId())
-                .eq(ShipmentContainerDetail::getWarehouseCode,ShiroUtils.getWarehouseCode());
+        lambdaQueryWrapper.eq(ShipmentContainerDetail::getShippingContainerId, shipmentContainerHeader.getId())
+                .eq(ShipmentContainerDetail::getLocationCode, shipmentContainerHeader.getLocationCode())
+                .eq(ShipmentContainerDetail::getContainerCode, shipmentContainerHeader.getContainerCode())
+                .eq(ShipmentContainerDetail::getShipmentDetailId, shipmentCombinationModel.getShipmentDetailId())
+                .eq(ShipmentContainerDetail::getInventoryId, shipmentCombinationModel.getInventoryDetailId())
+                .eq(ShipmentContainerDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
         ShipmentContainerDetail shipmentContainerDetail = shipmentContainerDetailService.getOne(lambdaQueryWrapper);
         ShipmentContainerDetail shipmentContainerDetaill = new ShipmentContainerDetail();
 
@@ -472,7 +473,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont
         lambdaQueryWrapper.eq(ShipmentDetail::getShipmentCode, shipmentCode)
                 .eq(ShipmentDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
         List<ShipmentDetail> shipmentDetailList = shipmentDetailService.list(lambdaQueryWrapper);
-        if (shipmentDetailList.size() < 1 || shipmentDetailList == null) {
+        if (shipmentDetailList.isEmpty()) {
             return AjaxResult.error("找不到子单链");
         }
         for(ShipmentDetail shipmentDetail: shipmentDetailList){
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java
index b9467ba..a4ef2a8 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java
@@ -91,7 +91,7 @@ public class ReceiptTaskService {
      * 创建入库任务(整盘入库、补充入库)
      *
      * @param ids 入库组盘头表id
-     * @return
+     * @return AjaxResult 创建结果
      */
     @Transactional(rollbackFor = Exception.class)
     public AjaxResult createReceiptTask(List<Integer> ids) {
@@ -170,9 +170,7 @@ public class ReceiptTaskService {
                             throw new ServiceException("更新入库组盘明细状态出错");
                         }
 
-                        /**
-                         * 修改明细状态为上架
-                         */
+                        /* 修改明细状态为上架*/
                         ReceiptDetail receiptDetail = receiptDetailService.getById(item.getReceiptDetailId());
                         receiptDetail.setProcessStamp(String.valueOf(QuantityConstant.RECEIPT_HEADER_SHELF));
                         if (!receiptDetailService.updateById(receiptDetail)) {
@@ -192,137 +190,84 @@ public class ReceiptTaskService {
 
     /**
      * 完成入库任务
+     * @param task 任务
+     * @return AjaxResult 完成入库任务结果
      */
     @Transactional(rollbackFor = Exception.class)
     public AjaxResult completeReceiptTask(TaskHeader task) {
-        List<Map<String, Object>> taskReceiptContainerDetail = taskHeaderMapper.getReceiptTask(task.getId());
-        if (taskReceiptContainerDetail.size() < 1) {
-            return AjaxResult.success("未找到对应任务的入库单号!!!");
+        /* 判断任务状态*/
+        if (task.getStatus().equals(QuantityConstant.TASK_STATUS_COMPLETED)) {
+            return AjaxResult.error("任务已完成");
         }
-        LambdaQueryWrapper<InventoryHeader> inventoryHeaderErapper = Wrappers.lambdaQuery();
-        inventoryHeaderErapper.eq(InventoryHeader::getWarehouseCode, ShiroUtils.getWarehouseCode())
+        BigDecimal totalQty = BigDecimal.ZERO;
+        List<TaskDetail> taskDetailList = taskDetailService.findByTaskId(task.getId());
+        if (taskDetailList.isEmpty()) {
+            throw new ServiceException("任务明细为空");
+        }
+
+        LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
+        inventoryHeaderLambdaQueryWrapper.eq(InventoryHeader::getWarehouseCode, ShiroUtils.getWarehouseCode())
                 .eq(InventoryHeader::getLocationCode, task.getToLocation())
                 .eq(InventoryHeader::getContainerCode, task.getContainerCode());
-        InventoryHeader header = inventoryHeaderService.getOne(inventoryHeaderErapper);
-
-        if(header == null) {
-            //添加库存单
-            header = new InventoryHeader();
-            header.setWarehouseCode(task.getWarehouseCode());
-            header.setCompanyCode(task.getCompanyCode());//货主
-            header.setContainerCode(task.getContainerCode());
-            header.setContainerStatus("some");
-            header.setLocationCode(task.getToLocation());
-            header.setLocking(1);
-            header.setEnable(1);
-            header.setTotalQty(new BigDecimal(0));
-            header.setTotalWeight(task.getWeight());
-            header.setCreatedBy(ShiroUtils.getLoginName());
-            header.setCreated(new Date());
-            header.setLastUpdatedBy(ShiroUtils.getLoginName());
-            header.setLastUpdated(new Date());
-            if (!inventoryHeaderService.save(header)) {
+        InventoryHeader inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper);
+        /* 如果库存 头明细不存在则新增库存头表记录*/
+        if (StringUtils.isNull(inventoryHeader)) {
+            inventoryHeader = new InventoryHeader();
+            inventoryHeader.setWarehouseCode(task.getWarehouseCode());
+            inventoryHeader.setLocationCode(task.getToLocation());
+            inventoryHeader.setContainerCode(task.getContainerCode());
+            inventoryHeader.setContainerStatus("some");
+            inventoryHeader.setTotalWeight(task.getWeight());
+            inventoryHeader.setTotalQty(new BigDecimal(0));
+            inventoryHeader.setTotalLines(0);
+            inventoryHeader.setLocking(1);
+            inventoryHeader.setEnable(1);
+            if (!inventoryHeaderService.save(inventoryHeader)) {
                 throw new ServiceException("添加库存单失败");
             }
+            inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper);
         }
-        for (Map<String, Object> map : taskReceiptContainerDetail) {
-            //将未完成的任务数量更新到库存表
-            if (DataUtils.getInteger(map.get("status")) < QuantityConstant.TASK_STATUS_COMPLETED) {
 
-                LambdaQueryWrapper<InventoryDetail> inventory = Wrappers.lambdaQuery();
-                inventory.eq(InventoryDetail::getWarehouseCode, ShiroUtils.getWarehouseCode())
-                        .eq(InventoryDetail::getLocationCode, task.getToLocation())
-                        .eq(InventoryDetail::getMaterialCode, DataUtils.getString(map.get("materialCode")))
-                        .eq(InventoryDetail::getContainerCode, DataUtils.getString(map.get("containerCode")))
-                        .eq(InventoryDetail::getBatch, DataUtils.getString(map.get("batch")))
-                        .eq(InventoryDetail::getLot, DataUtils.getString(map.get("lot")))
-                        .eq(InventoryDetail::getProjectNo, DataUtils.getString(map.get("projectNo")))
-                        .eq(InventoryDetail::getCompanyCode, DataUtils.getString(map.get("companyCode")));
-                InventoryDetail detail = inventoryDetailService.getOne(inventory);
-                if (detail == null) {
-                    //库存明细添加
-                    detail = new InventoryDetail();
-                    detail.setInventoryHeaderId(header.getId());//库存头ID
-                    detail.setWarehouseCode(DataUtils.getString(map.get("warehouseCode")));//仓库
-                    detail.setCompanyCode(task.getCompanyCode());//货主
-                    detail.setLocationCode(task.getToLocation());//库位号
-                    detail.setContainerCode(DataUtils.getString(map.get("containerCode")));//容器号
-                    detail.setMaterialCode(DataUtils.getString(map.get("materialCode")));//物料号
-                    detail.setMaterialName(DataUtils.getString(map.get("materialName")));//物料名称
-                    detail.setMaterialSpec(DataUtils.getString(map.get("materialSpec")));//物料规格
-                    detail.setMaterialUnit(DataUtils.getString(map.get("materialUnit")));//物料单位
-                    detail.setReceiptCode(DataUtils.getString(map.get("receiptCode")));//入库单编码
-                    detail.setReceiptDetailId(DataUtils.getInteger(map.get("receiptDetailId")));//入库单明细ID
-                    detail.setBatch(DataUtils.getString(map.get("batch")));//批次
-                    detail.setLot(DataUtils.getString(map.get("lot")));//批号
-                    detail.setProjectNo(DataUtils.getString(map.get("projectNo")));//项目号
-                    detail.setInventorySts(DataUtils.getString(map.get("inventorySts")));//库存状态
-//                    detail.setManufactureDate(new SimpleDateFormat("yyyy-MM-dd").parse(map.get("manufactureDate").toString()));//生产日期
-//                    detail.setExpirationDate(new SimpleDateFormat("yyyy-MM-dd").parse(map.get("expirationDate").toString()));//失效日期
-                    detail.setQty(DataUtils.getBigDecimal(map.get("qty")));//数量
-                    detail.setLockedQty(DataUtils.getBigDecimal(0));
-                    detail.setTaskQty(DataUtils.getBigDecimal(0));
-                    detail.setCreatedBy(ShiroUtils.getLoginName());//创建人
-                    detail.setLastUpdatedBy(ShiroUtils.getLoginName());//创建时间
-                    if (!inventoryDetailService.save(detail)) {
-                        throw new ServiceException("添加库存明细失败");
-                    }
-                } else {
-                    detail.setQty(detail.getQty().add(DataUtils.getBigDecimal(map.get("qty"))));
-                    detail.setLastUpdatedBy(ShiroUtils.getLoginName());
-                    LambdaUpdateWrapper<InventoryDetail> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
-                    lambdaUpdateWrapper.eq(InventoryDetail::getId, detail.getId());
-                    if (!inventoryDetailService.update(detail, lambdaUpdateWrapper)){
-                        throw new ServiceException("更新库存明细失败");
+        /* 遍历任务明细,修改关联的入库组盘、入库单状态、添加库存*/
+        for (TaskDetail taskDetail : taskDetailList) {
+            if (taskDetail.getStatus() < QuantityConstant.TASK_STATUS_COMPLETED) {
+                totalQty = totalQty.add(taskDetail.getQty());
+                /*查询入库单明细*/
+                ReceiptDetail receiptDetail = receiptDetailService.getById(taskDetail.getBillDetailId());
+                if (StringUtils.isNotNull(receiptDetail)) {
+
+                    totalQty = this.addInventoryDetail(taskDetail, receiptDetail, inventoryHeader);
+                    //修改组盘表状态为完成
+                    ReceiptContainerDetail receiptContainerDetail = new ReceiptContainerDetail();
+                    receiptContainerDetail.setStatus(QuantityConstant.RECEIPT_CONTAINER_FINISHED);
+                    LambdaUpdateWrapper<ReceiptContainerDetail> receiptContainerDetailLambdaUpdateWrapper = Wrappers.lambdaUpdate();
+                    receiptContainerDetailLambdaUpdateWrapper.eq(ReceiptContainerDetail::getId, taskDetail.getAllocationId());
+                    if (!receiptContainerDetailService.update(receiptContainerDetail, receiptContainerDetailLambdaUpdateWrapper)){
+                        throw new ServiceException("更新组盘状态失败");
                     }
-                }
-                //记录库存交易记录
-                InventoryTransaction inventoryTransaction = new InventoryTransaction();
-                inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_RECEIPT);
-                inventoryTransaction.setWarehouseCode(DataUtils.getString(map.get("warehouseCode")));
-                inventoryTransaction.setCompanyCode(task.getCompanyCode());
-                inventoryTransaction.setLocationCode(task.getToLocation());
-                inventoryTransaction.setContainerCode(DataUtils.getString(map.get("containerCode")));
-                inventoryTransaction.setMaterialCode(DataUtils.getString(map.get("materialCode")));
-                inventoryTransaction.setMaterialName(DataUtils.getString(map.get("materialName")));
-                inventoryTransaction.setMaterialSpec(DataUtils.getString(map.get("materialSpec")));//物料规格
-                inventoryTransaction.setMaterialUnit(DataUtils.getString(map.get("materialUnit")));//物料单位
-                inventoryTransaction.setBillCode(DataUtils.getString(map.get("receiptCode")));
-                inventoryTransaction.setBillDetailId(DataUtils.getInteger(map.get("receiptDetailId")));
-                inventoryTransaction.setBatch(DataUtils.getString(map.get("batch")));
-                inventoryTransaction.setLot(DataUtils.getString(map.get("lot")));
-                inventoryTransaction.setInventorySts(DataUtils.getString((map.get("inventorySts"))));
-                inventoryTransaction.setTaskQty(DataUtils.getBigDecimal(map.get("qty")));
-                inventoryTransaction.setCreated(new Date());
-                inventoryTransaction.setCreatedBy(ShiroUtils.getLoginName());
-                if (!inventoryTransactionService.save(inventoryTransaction)) {
-                    throw new ServiceException("新增库存记录失败");
-                }
 
-                //修改任务明细的状态为完成
-                TaskDetail taskDetail = new TaskDetail();
-                taskDetail.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);
-                taskDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
-                taskDetail.setAgingDate(new Date());   //入库时间
-                LambdaUpdateWrapper<TaskDetail> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
-                lambdaUpdateWrapper.eq(TaskDetail::getTaskId, task.getId());
-                taskDetailService.update(taskDetail, lambdaUpdateWrapper);
-                if (!taskDetailService.update(taskDetail, lambdaUpdateWrapper)) {
-                    throw new ServiceException("修改入库单明细失败");
+                } else {
+                    throw new ServiceException("未找到id:" + taskDetail.getBillDetailId() + "入库单明细");
                 }
-
+                receiptDetail.setProcessStamp(String.valueOf(QuantityConstant.RECEIPT_HEADER_POSTING));
+                receiptDetailService.updateById(receiptDetail);
+                receiptDetailService.updateReceiptHeaderLastStatus(receiptDetail.getReceiptId());
+                materialWarningService.materialWarning(taskDetail.getMaterialCode(), taskDetail.getCompanyCode());
             }
+        }
+        if (StringUtils.isNull(inventoryHeader)) {
+            throw new ServiceException("库存添加失败");
+        } else {
 
         }
         //修改任务主表状态,因为立库任务表单头只对应一个货箱,表单详情的任务会同时完成
         task.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);
-        task.setLastUpdatedBy(ShiroUtils.getLoginName());
-        task.setLastUpdated(new Date());
         LambdaUpdateWrapper<TaskHeader> taskHeaderLambdaUpdateWrapper = Wrappers.lambdaUpdate();
         taskHeaderLambdaUpdateWrapper.eq(TaskHeader::getId, task.getId());
         if (!taskHeaderService.update(task, taskHeaderLambdaUpdateWrapper)){
             throw new ServiceException("更新任务主表失败");
         }
+
         //修改库位状态和对应的容器
         Location location = new Location();
         location.setContainerCode(task.getContainerCode());
@@ -341,41 +286,15 @@ public class ReceiptTaskService {
         if (!containerService.update(container, containerLambdaUpdateWrapper)) {
             throw new ServiceException("更新容器失败");
         }
-        //修改组盘表状态为20
-        ReceiptContainerDetail receiptContainerDetail = new ReceiptContainerDetail();
-        receiptContainerDetail.setStatus(QuantityConstant.RECEIPT_CONTAINER_REVIEWSUCCESS);
-        receiptContainerDetail.setProcessStamp("0");
-        receiptContainerDetail.setLastUpdated(new Date());
-        receiptContainerDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
-        LambdaUpdateWrapper<ReceiptContainerDetail> receiptContainerDetailLambdaUpdateWrapper = Wrappers.lambdaUpdate();
-        receiptContainerDetailLambdaUpdateWrapper.eq(ReceiptContainerDetail::getReceiptId, DataUtils.getInteger(taskReceiptContainerDetail.get(0).get("receiptId")));
-        if (!receiptContainerDetailService.update(receiptContainerDetail, receiptContainerDetailLambdaUpdateWrapper)){
-            throw new ServiceException("更新组盘状态失败");
-        }
 
         //修改入库组盘头表状态
-
         ReceiptContainerHeader receiptContainerHeader = new ReceiptContainerHeader();
         receiptContainerHeader.setId(task.getAllocationHeadId());
-        receiptContainerHeader.setLastUpdated(new Date());
-        receiptContainerHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
-        receiptContainerHeader.setStatus(QuantityConstant.RECEIPT_CONTAINER_FINISHED.intValue());
+        receiptContainerHeader.setStatus(QuantityConstant.RECEIPT_CONTAINER_FINISHED);
         if (!receiptContainerHeaderService.updateById(receiptContainerHeader)) {
             throw new ServiceException("更新入库组盘头表状态失败");
         }
-
-        //修改入库单状态
-        ReceiptHeader receiptHeader = new ReceiptHeader();
-        receiptHeader.setFirstStatus(QuantityConstant.RECEIPT_HEADER_POSTING);
-        receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_POSTING);
-        receiptHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
-        receiptHeader.setLastUpdated(new Date());
-        LambdaUpdateWrapper<ReceiptHeader> receiptHeaderLambdaUpdateWrapper = Wrappers.lambdaUpdate();
-        receiptHeaderLambdaUpdateWrapper.eq(ReceiptHeader::getId, DataUtils.getInteger(taskReceiptContainerDetail.get(0).get("receiptId")));
-        if (!receiptHeaderService.update(receiptHeader, receiptHeaderLambdaUpdateWrapper)) {
-            throw new ServiceException("更新入库头表状态失败");
-        }
-        return AjaxResult.success("完成入库任务");
+        return AjaxResult.success();
     }
 
     /**
@@ -445,10 +364,13 @@ public class ReceiptTaskService {
             inventoryDetail.setAttribute3(receiptDetail.getAttribute3());
             inventoryDetail.setReceiptCode(receiptHeader.getCode());
             inventoryDetail.setReceiptDetailId(receiptDetail.getId());
-            if (!inventoryDetailService.save(inventoryDetail)) {
-                throw new ServiceException("保存库存明细失败");
-            }
+            inventoryHeader.setTotalLines(inventoryHeader.getTotalLines()+1);
+        }
+        if (!inventoryDetailService.saveOrUpdate(inventoryDetail)) {
+            throw new ServiceException("保存库存明细失败");
         }
+        inventoryHeader.setTotalQty(inventoryHeader.getTotalQty().add(taskDetail.getQty()));
+        inventoryHeaderService.updateById(inventoryHeader);
         //记录库存交易记录
         InventoryTransaction inventoryTransaction = new InventoryTransaction();
         inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_RECEIPT);
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java
index d00de94..56f81c4 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java
@@ -54,6 +54,4 @@ public interface TaskHeaderService extends IService<TaskHeader>{
 
     AjaxResult setLocationCode(Integer taskId, Integer high);
 
-    AjaxResult createReceiptTask(List<Integer> ids);
-
 }
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java
index bafea1c..5d6a8e2 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java
@@ -6,23 +6,17 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.huaheng.api.wcs.service.taskAssignService.TaskAssignService;
 import com.huaheng.common.constant.QuantityConstant;
-import com.huaheng.common.exception.BusinessException;
 import com.huaheng.common.exception.service.ServiceException;
 import com.huaheng.common.support.Convert;
-import com.huaheng.common.utils.DataUtils;
 import com.huaheng.common.utils.StringUtils;
 import com.huaheng.common.utils.security.ShiroUtils;
 import com.huaheng.framework.web.domain.AjaxResult;
-import com.huaheng.mobile.download.Constant;
 import com.huaheng.pc.config.configWarning.service.ConfigWarningService;
 import com.huaheng.pc.config.container.domain.Container;
 import com.huaheng.pc.config.container.service.ContainerService;
-import com.huaheng.pc.config.containerCapacity.domain.ContainerCapacity;
 import com.huaheng.pc.config.containerCapacity.service.ContainerCapacityService;
 import com.huaheng.pc.config.location.domain.Location;
 import com.huaheng.pc.config.location.service.LocationService;
-import com.huaheng.pc.config.sendMail.service.MailService;
-import com.huaheng.pc.config.sendMail.service.SendMailService;
 import com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail;
 import com.huaheng.pc.inventory.cycleCountDetail.service.CycleCountDetailService;
 import com.huaheng.pc.inventory.cycleCountHeader.service.CycleCountHeaderService;
@@ -30,33 +24,24 @@ import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
 import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
 import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader;
 import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService;
-import com.huaheng.pc.inventory.inventoryTransaction.domain.InventoryTransaction;
 import com.huaheng.pc.inventory.inventoryTransaction.service.InventoryTransactionService;
-import com.huaheng.pc.monitor.message.service.BrokerMessageLogService;
 import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail;
 import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService;
 import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader;
 import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
-import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;
 import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService;
-import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
 import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
 import com.huaheng.pc.receipt.receiving.service.ReceivingService;
-import com.huaheng.pc.shipment.shipmentContainerDetail.domain.ShipmentContainerDetail;
 import com.huaheng.pc.shipment.shipmentContainerDetail.service.ShipmentContainerDetailService;
 import com.huaheng.pc.shipment.shipmentContainerHeader.domain.ShipmentContainerHeader;
 import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderService;
-import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
 import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService;
-import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
 import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
 import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
 import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
 import com.huaheng.pc.task.taskHeader.domain.MobileTask;
-import com.huaheng.pc.task.taskHeader.domain.ShipmentTaskCreateModel;
 import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
 import com.huaheng.pc.task.taskHeader.mapper.TaskHeaderMapper;
-import io.swagger.models.auth.In;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -162,15 +147,15 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         LambdaQueryWrapper<TaskHeader> taskQueryWrapper = Wrappers.lambdaQuery();
         taskQueryWrapper.eq(TaskHeader::getToLocation, locationCode);
         List<TaskHeader> list = this.list(taskQueryWrapper);
-        if (list.size() < 1) {
+        if (list.isEmpty()) {
             throw new ServiceException("库位(" + locationCode + ")没有任务!");
-        } else if(list.get(0).getStatus() == 100) {
+        } else if(list.get(0).getStatus().equals(QuantityConstant.TASK_STATUS_COMPLETED)) {
             //如果已完成则不管
             throw new ServiceException("库位(" + locationCode + ")任务已经完成!");
         }
-        if(list.get(0).getTaskType()==100 || list.get(0).getTaskType()==200){
+        if(list.get(0).getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF)){
             //入库任务
-            return  receiptTaskService.completeReceiptTask((list.get(0)));
+            return receiptTaskService.completeReceiptTask((list.get(0)));
         } else {
             throw new ServiceException("库位(" + locationCode + ")的任务不是上架,不能完成!");
         }
@@ -208,7 +193,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         }
         List<Integer> ids = new ArrayList<>();
         ids.add(containerHeader.getId());
-        this.createReceiptTask(ids);
+        receiptTaskService.createReceiptTask(ids);
         return AjaxResult.success("成功!");
     }
 
@@ -330,7 +315,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
                 Container container = new Container();
                 container.setStatus("empty");
                 if(inventoryHeader != null) {
-                    if(inventoryHeader.getContainerStatus().equals("some")) {
+                    if("some".equals(inventoryHeader.getContainerStatus())) {
                         container.setStatus("some");
                     }
                 }
@@ -382,13 +367,14 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
             if (StringUtils.isEmpty(ids)){
                 return AjaxResult.error("id不能为空");
             }
+
             Integer maxId = idList.stream().max(Comparator.comparing(Integer::intValue)).orElse(null);
 
             LambdaQueryWrapper<ReceiptContainerHeader> lambda = Wrappers.lambdaQuery();
             lambda.select(ReceiptContainerHeader::getId)
                     .lt(ReceiptContainerHeader::getStatus, 10)
                     .le(ReceiptContainerHeader::getId, maxId);
-            return createReceiptTask(idList);
+            return receiptTaskService.createReceiptTask(idList);
         }
         return AjaxResult.error("生成入库任务失败");
     }
@@ -407,6 +393,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
             if (task.getStatus() >= QuantityConstant.TASK_STATUS_RELEASE) {
                 return AjaxResult.error("任务" + taskId + "已经下发,请不要重复下发,操作中止");
             }
+
             // 给wcs传递任务
             try {
                 createTaskMessage.createTask(task);
@@ -487,6 +474,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public AjaxResult completeTaskByWMS(Integer[] taskIds, String[] weightConvert) {
         for (int i = 0;i<taskIds.length;i++) {
             TaskHeader task = taskHeaderService.getById(taskIds[i]);
@@ -510,8 +498,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
             if(task.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLERECEIPT) || task.getTaskType().equals(QuantityConstant.TASK_TYPE_EMPTYRECEIPT)){
                 if(StringUtils.isEmpty(task.getToLocation())){
                     //自动分配库位
-//                    AjaxResult ajaxResult = this.setLocationCode(task.getId(),0 );
-//                    task.setToLocation((String)ajaxResult.getData());
+                 //  AjaxResult ajaxResult = this.setLocationCode(task.getId(),0 );
+                //   task.setToLocation((String)ajaxResult.getData());
                 }
             }
             //如果没有库位不能完成
@@ -534,7 +522,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         if (task.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF) ) {
             //入库任务
             receiptTaskService.completeReceiptTask(task);
-            combineInventory(task);
         }
         if (task.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_PICKING) &&
                 (task.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLESHIPMENT) || task.getTaskType().equals(QuantityConstant.TASK_TYPE_SORTINGSHIPMENT))) {
@@ -543,7 +530,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         }
         // 900 出库查看,空托出库查看
         if (task.getTaskType().equals( QuantityConstant.TASK_TYPE_VIEW)) {
-             workTaskService.completeCheckOutTask(task);
+            workTaskService.completeCheckOutTask(task);
         }
         // 700 盘点
         if (task.getTaskType().equals(QuantityConstant.TASK_TYPE_CYCLECOUNT)) {
@@ -634,138 +621,11 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         }
         List<Integer> idList = new ArrayList<>();
         idList.add(receiptContainerHeader.getId());
-        createReceiptTask(idList);
+        receiptTaskService.createReceiptTask(idList);
 
         return AjaxResult.success(receiptContainerHeader);
     }
 
-
-    /**
-     * 完成移库任务
-     *
-     * @param task
-     */
-    @Transactional(rollbackFor = Exception.class)
-    public void completeTransferTask(TaskHeader task) {
-        //找到任务明细
-        TaskDetail taskDetail = new TaskDetail();
-        taskDetail.setTaskId(task.getId());
-        taskDetail.setWarehouseCode(task.getWarehouseCode());
-        taskDetail.setCompanyCode(task.getCompanyCode());
-        taskDetail.setContainerCode(task.getContainerCode());
-        LambdaQueryWrapper<TaskDetail> taskDetailLW = Wrappers.lambdaQuery(taskDetail);
-        taskDetail = taskDetailService.getOne(taskDetailLW);
-        //更新库存主表和明细的库位,更改更新用户和时间
-        InventoryHeader inventoryHeader = new InventoryHeader();
-        //主表
-        inventoryHeader.setWarehouseCode(taskDetail.getWarehouseCode());
-        inventoryHeader.setCompanyCode(taskDetail.getCompanyCode());
-        inventoryHeader.setContainerCode(taskDetail.getContainerCode());
-        inventoryHeader.setLocationCode(taskDetail.getFromLocation());//通过源库位查找库存
-        LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(inventoryHeader);
-        inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper);
-        if (StringUtils.isNotNull(inventoryHeader)){
-            inventoryHeader.setLocationCode(taskDetail.getToLocation());//把目的库位写入库存
-            inventoryHeader.setLastUpdated(new Date());
-            inventoryHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
-            inventoryHeaderService.saveOrUpdate(inventoryHeader);//修改主表库位
-
-            //明细表
-            List<InventoryDetail> inventoryDetails = new ArrayList<>();
-            InventoryDetail inventoryDetail = new InventoryDetail();
-            inventoryDetail.setWarehouseCode(inventoryHeader.getWarehouseCode());
-            inventoryDetail.setCompanyCode(inventoryHeader.getCompanyCode());
-            inventoryDetail.setInventoryHeaderId(inventoryHeader.getId());
-            LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery(inventoryDetail);
-            List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(inventoryDetailLambdaQueryWrapper);
-            /*同时写入库存交易表*/
-            List<InventoryTransaction> inventoryTransactionList = new ArrayList<>();
-            for (InventoryDetail item : inventoryDetailList) {
-                item.setLocationCode(inventoryHeader.getLocationCode());//修改明细表库位
-                item.setLastUpdated(new Date());
-                item.setLastUpdatedBy(ShiroUtils.getLoginName());
-                inventoryDetails.add(item);
-                /*----------*/
-                InventoryTransaction inventoryTransaction = new InventoryTransaction();
-                inventoryTransaction.setWarehouseCode(task.getWarehouseCode());
-                inventoryTransaction.setLocationCode(taskDetail.getToLocation());
-                inventoryTransaction.setContainerCode(taskDetail.getContainerCode());
-                inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTPROPERTIES);
-                inventoryTransaction.setMaterialCode(item.getMaterialCode());
-                inventoryTransaction.setManufactureDate(item.getManufactureDate());
-                inventoryTransaction.setMaterialName(item.getMaterialName());
-                inventoryTransaction.setMaterialSpec(item.getMaterialSpec());
-                inventoryTransaction.setMaterialUnit(item.getMaterialUnit());
-                inventoryTransaction.setTaskQty(BigDecimal.ZERO);
-                inventoryTransaction.setInventorySts(item.getInventorySts());
-                inventoryTransaction.setCompanyCode(item.getCompanyCode());
-                inventoryTransaction.setReferDetailId(item.getId().toString());
-                inventoryTransaction.setBatch(item.getBatch());
-                inventoryTransaction.setLot(item.getLot());
-                inventoryTransaction.setProjectNo(item.getProjectNo());
-                inventoryTransaction.setWeight(item.getWeight());
-                inventoryTransaction.setManufactureDate(item.getManufactureDate());
-                inventoryTransaction.setExpirationDate(item.getExpirationDate());
-                inventoryTransaction.setAgingDate(item.getCreated());
-                inventoryTransaction.setAttributeId(item.getAttributeId());
-                inventoryTransaction.setAttribute1(item.getAttribute1());
-                inventoryTransaction.setAttribute2(item.getAttribute2());
-                inventoryTransaction.setAttribute3(item.getAttribute3());
-                inventoryTransaction.setCreated(new Date());
-                inventoryTransaction.setCreatedBy(ShiroUtils.getLoginName());
-                //inventoryTransaction.setLockCode();
-                inventoryTransaction.setBillCode(item.getInventoryHeaderId().toString());
-                inventoryTransaction.setBillDetailId(item.getId());
-                inventoryTransaction.setSupplierCode(item.getSupplierCode());
-                inventoryTransactionList.add(inventoryTransaction);
-            }
-            if(inventoryDetails != null && inventoryDetails.size() > 0) {
-                if (inventoryDetailService.saveOrUpdateBatch(inventoryDetails)) {
-                    //更新库存明细成功后,写入库存交易
-                    inventoryTransactionService.saveBatch(inventoryTransactionList);
-                } else {
-                    throw new ServiceException("库存明细更新错误!");
-                }
-            }
-
-        }
-        //更新托盘、库位状态
-        Location temp1 = new Location(); //源库位
-        temp1.setCode(taskDetail.getFromLocation());
-        temp1.setWarehouseCode(ShiroUtils.getWarehouseCode());
-        LambdaQueryWrapper<Location> lambdaQueryWrapper1 = Wrappers.lambdaQuery(temp1);
-        Location loc1 = locationService.getOne(lambdaQueryWrapper1);
-
-        Location temp2 = new Location();//目的库位
-        temp2.setCode(taskDetail.getToLocation());
-        temp2.setWarehouseCode(ShiroUtils.getWarehouseCode());
-        LambdaQueryWrapper<Location> lambdaQueryWrapper2 = Wrappers.lambdaQuery(temp2);
-        Location loc2 = locationService.getOne(lambdaQueryWrapper2);
-        loc2.setContainerCode(loc1.getContainerCode());
-        loc2.setStatus("empty");
-        loc1.setContainerCode("");
-        loc1.setStatus("empty");
-        locationService.saveOrUpdate(loc1);
-        locationService.saveOrUpdate(loc2);
-
-        Container container = containerService.findAllByCode(task.getContainerCode());
-        container.setLocationCode(task.getToLocation());
-        if (!containerService.updateById(container)){
-            throw new ServiceException("更新容器失败");
-        }
-
-        //更新taskHeader状态
-        task.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);
-        task.setLastUpdatedBy(ShiroUtils.getLoginName());
-        task.setLastUpdated(new Date());
-        taskHeaderService.saveOrUpdate(task);
-        //更新taskDetail状态
-        taskDetail.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);
-        taskDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
-        taskDetail.setLastUpdated(new Date());
-        taskDetailService.saveOrUpdate(taskDetail);
-    }
-
     /**
      * 盘点完成
      *
@@ -821,191 +681,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
     }
 
     /**
-     * 完成空托盘入库任务
-     *
-     * @param taskHeader
-     */
-    @Transactional(rollbackFor = Exception.class)
-    public void completeEmptyIn(TaskHeader taskHeader) {
-
-        //完成任务,修改主单和明细状态
-        taskHeader.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);
-        taskHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
-        taskHeader.setLastUpdated(new Date());
-        //taskHeaderService.saveOrUpdate(taskHeader);
-        //taskDetail更新明细单总的状态
-        TaskDetail taskDetail = new TaskDetail();
-        taskDetail.setWarehouseCode(taskHeader.getWarehouseCode());
-        taskDetail.setTaskType(taskHeader.getTaskType());
-        taskDetail.setTaskId(taskHeader.getId());
-        LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(taskDetail);
-        List<TaskDetail> taskDetailList = taskDetailService.list(lambdaQueryWrapper);//查询子单
-        for (TaskDetail item : taskDetailList) {
-            item.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);
-            item.setLastUpdatedBy(ShiroUtils.getLoginName()); //更新用户
-            item.setLastUpdated(new Date());   //更新时间
-        }
-        if (taskDetailService.saveOrUpdateBatch(taskDetailList) == false ||
-                taskHeaderService.saveOrUpdate(taskHeader) == false) {
-            throw new ServiceException("任务单据状态更新失败!");
-        }
-        //解锁容器,更新库位
-        containerService.updateLocationCodeAndStatus(taskHeader.getContainerCode(), taskHeader.getToLocation(), "empty");
-        //解锁库位,更新容器
-        locationService.updateContainerCodeAndStatus(taskHeader.getToLocation(), taskHeader.getContainerCode(), "empty");
-
-        //写入库存头表
-        InventoryHeader inventoryHeader = new InventoryHeader();
-        inventoryHeader.setWarehouseCode(taskHeader.getWarehouseCode());
-        inventoryHeader.setLocationCode(taskHeader.getToLocation());
-        inventoryHeader.setContainerCode(taskHeader.getContainerCode());
-        inventoryHeader.setContainerStatus("empty");
-        inventoryHeader.setCompanyCode(taskHeader.getCompanyCode());
-        inventoryHeader.setMaterialSkuQty("0");
-        inventoryHeader.setTotalWeight("0");
-        inventoryHeader.setTotalQty(new BigDecimal(0));
-        inventoryHeader.setTotalLines(0);
-        inventoryHeader.setProjectNos("");
-        inventoryHeader.setBatchs("");
-        inventoryHeader.setLots("");
-        inventoryHeader.setLockRemark("");
-        inventoryHeader.setCreated(new Date());
-        inventoryHeader.setCreatedBy(ShiroUtils.getLoginName());
-        inventoryHeader.setLastUpdated(new Date());
-        inventoryHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
-        Boolean j = inventoryHeaderService.save(inventoryHeader);
-        if(!j){
-            throw new ServiceException("新增空托库存头失败!");
-
-        }
-    }
-
-    /**
-     * 创建上架任务
-     *
-     * @param ids
-     * @return
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public AjaxResult createReceiptTask(List<Integer> ids) {
-        for (Integer id : ids) {
-            ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getById(id);
-            if (receiptContainerHeader == null) {
-                throw new ServiceException("任务不存在!");
-            }
-
-            if (!receiptContainerHeader.getWarehouseCode().equals(ShiroUtils.getWarehouseCode())) {
-                throw new ServiceException("任务不在当前仓库!");
-            }
-
-            //锁定容器
-            Container container = new Container();
-            container.setStatus("lock");
-            LambdaUpdateWrapper<Container> containerUpdateWrapper = Wrappers.lambdaUpdate();
-            containerUpdateWrapper.eq(Container::getCode, receiptContainerHeader.getContainerCode());
-            containerService.update(container, containerUpdateWrapper);
-
-            //查询入库组盘明细
-            LambdaQueryWrapper<ReceiptContainerDetail> containerDetailLambda = Wrappers.lambdaQuery();
-            containerDetailLambda.eq(ReceiptContainerDetail::getReceiptContainerId, id);
-            List<ReceiptContainerDetail> list = receiptContainerDetailService.list(containerDetailLambda);
-
-            if (list.size() < 1) {
-                throw new ServiceException("没有组盘明细,请先组盘!");
-            }
-            if (receiptContainerHeader.getStatus() == QuantityConstant.RECEIPT_CONTAINER_BUILD.intValue()) {
-                if (receiptContainerHeader.getStatus().intValue() < QuantityConstant.RECEIPT_CONTAINER_TASK) {
-                    receiptContainerHeader.setStatus(QuantityConstant.RECEIPT_CONTAINER_TASK.intValue());
-                    receiptContainerHeaderService.updateById(receiptContainerHeader);
-                }
-                //添加任务主表
-                TaskHeader task = new TaskHeader();
-                task.setAllocationHeadId(receiptContainerHeader.getId());
-                task.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_SHELF);
-                task.setWarehouseCode(receiptContainerHeader.getWarehouseCode());
-                task.setCompanyCode(receiptContainerHeader.getCompanyCode());
-                task.setTaskType(Integer.valueOf(receiptContainerHeader.getTaskType()));
-                task.setFromLocation(receiptContainerHeader.getFromLocation());
-                task.setToLocation(receiptContainerHeader.getToLocation());
-                task.setContainerCode(receiptContainerHeader.getContainerCode());
-                task.setRecvDock(receiptContainerHeader.getRecvDock());
-                task.setCreated(new Date());
-                task.setCreatedBy(ShiroUtils.getLoginName());
-                if (this.save(task)) {
-                    //添加任务明细表
-                    int conatinQty = 0;
-                    for (ReceiptContainerDetail item : list) {
-                        LambdaQueryWrapper<ContainerCapacity> lambdaQueryWrapper = Wrappers.lambdaQuery();
-                        String[] containCodeSplit = task.getContainerCode().split("\\D");
-                        String containType = containCodeSplit[0];
-                        lambdaQueryWrapper.eq(ContainerCapacity::getContainerType, task.getContainerCode())
-                                .eq(ContainerCapacity::getMaterialCode, item.getMaterialCode())
-                                .eq(ContainerCapacity::getWarehouseCode, ShiroUtils.getWarehouseCode())
-                                .eq(ContainerCapacity::getEnable, 0);
-                        ContainerCapacity containerCapacity = containerCapacityService.getOne(lambdaQueryWrapper);
-
-                        TaskDetail taskDetail = new TaskDetail();
-                        taskDetail.setTaskId(task.getId());
-                        taskDetail.setTaskType(Integer.valueOf(receiptContainerHeaderService.getById(item.getReceiptContainerId()).getTaskType()));
-                        taskDetail.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_SHELF);
-                        taskDetail.setWarehouseCode(task.getWarehouseCode());
-                        taskDetail.setAllocationId(item.getId());
-                        taskDetail.setCompanyCode(task.getCompanyCode());
-                        taskDetail.setCompanyCode(task.getCompanyCode());
-                        taskDetail.setMaterialCode(item.getMaterialCode());
-                        taskDetail.setMaterialName(item.getMaterialName());
-                        taskDetail.setMaterialSpec(item.getMaterialSpec());
-                        taskDetail.setMaterialUnit(item.getMaterialUnit());
-                        taskDetail.setBillCode(item.getReceiptCode());
-                        taskDetail.setBillDetailId(item.getReceiptDetailId());
-                        taskDetail.setBillCode(item.getReceiptCode());
-                        taskDetail.setQty(item.getQty());
-                        taskDetail.setContainerCode(task.getContainerCode());
-                        taskDetail.setFromLocation(task.getFromLocation());
-                        taskDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
-                        taskDetail.setBatch(item.getBatch());
-                        taskDetail.setProjectNo(item.getProjectNo());
-                        if (containerCapacity != null) {
-                            conatinQty += (int) Math.floor(item.getQty().intValue() / containerCapacity.getQty().intValue());
-                            taskDetail.setContainQty((int) Math.floor(item.getQty().intValue() / containerCapacity.getQty().intValue()));
-                        }
-                        if (!taskDetailService.save(taskDetail)) {
-                            throw new ServiceException("生成任务明细失败");
-                        }
-
-                        //更新入库组盘明细状态
-                        item.setStatus(QuantityConstant.RECEIPT_CONTAINER_TASK);
-                        if (!receiptContainerDetailService.updateById(item)) {
-                            throw new ServiceException("更新入库组盘明细状态出错");
-                        }
-
-                        /**
-                         * 修改明细状态为上架
-                         */
-                        ReceiptDetail receiptDetail = receiptDetailService.getById(item.getReceiptDetailId());
-                        receiptDetail.setProcessStamp(String.valueOf(QuantityConstant.RECEIPT_HEADER_SHELF));
-                        if (!receiptDetailService.updateById(receiptDetail)) {
-                            throw new ServiceException("更新入库单详情失败");
-                        }
-                        //更新头表状态
-                        receiptDetailService.updateReceiptHeaderLastStatus(receiptDetail.getReceiptId());
-
-                    }
-
-                    task.setContainQty(conatinQty);
-                    if (!taskHeaderService.updateById(task)) {
-                        throw new ServiceException("更新任务头表容器数量失败");
-                    }
-                } else {
-                    throw new ServiceException("生成任务头表失败");
-                }
-            }
-        }
-        return AjaxResult.success("生成上架任务成功");
-    }
-    
-    /**
      * 自动分配库位
      * @param taskId  任务号
      * @param high 1是高库位,否则低库位
@@ -1054,10 +729,14 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
             condition.setWarehouseCode(ShiroUtils.getWarehouseCode());
             condition.setTaskId(taskHeader.getId());
             LambdaQueryWrapper<TaskDetail> taskDetailLambdaQueryWrapper = Wrappers.lambdaQuery(condition);
-            TaskDetail taskDetail = taskDetailService.getOne(taskDetailLambdaQueryWrapper);
-            if (taskDetail != null) {
-                taskDetail.setToLocation(location.getCode());
-                taskDetailService.update(taskDetail, taskDetailLambdaQueryWrapper);
+            List<TaskDetail> taskDetailList = taskDetailService.list(taskDetailLambdaQueryWrapper);
+            if(taskDetailList != null && taskDetailList.size() > 0) {
+                for(TaskDetail taskDetail : taskDetailList) {
+                    if (taskDetail != null) {
+                        taskDetail.setToLocation(location.getCode());
+                        taskDetailService.update(taskDetail, taskDetailLambdaQueryWrapper);
+                    }
+                }
             }
         }
         //给任务分配库位
--
libgit2 0.22.2