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 37cbab9..5744429 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
@@ -138,16 +138,36 @@ public class ReceiptTaskService {
             if (!receiptContainerHeader.getWarehouseCode().equals(ShiroUtils.getWarehouseCode())) {
                 throw new ServiceException("id:" + id + "的入库组盘不能在" + ShiroUtils.getWarehouseCode() + "仓库操作");
             }
-            Container container = containerService.getContainerByCode(receiptContainerHeader.getContainerCode());
-            if(container.getStatus().equals(QuantityConstant.STATUS_CONTAINER_LOCK)) {
-                throw new ServiceException("托盘已经锁定,不能生成任务");
-            }
-            //锁定容器
-            containerService.updateStatus(receiptContainerHeader.getContainerCode(), QuantityConstant.STATUS_CONTAINER_LOCK, container.getWarehouseCode());
+
+
             //查询入库组盘明细
-            List<ReceiptContainerDetail> list = receiptContainerDetailService.list(new LambdaQueryWrapper<ReceiptContainerDetail>().eq(ReceiptContainerDetail::getReceiptContainerId, id));
+            LambdaQueryWrapper<ReceiptContainerDetail> lam = Wrappers.lambdaQuery();
+            lam.eq(ReceiptContainerDetail::getReceiptContainerId,id);
+            lam.lt(ReceiptContainerDetail::getStatus,QuantityConstant.RECEIPT_CONTAINER_TASK);
+            List<ReceiptContainerDetail> list = receiptContainerDetailService.list(lam);
+
+//            List<ReceiptContainerDetail> list = receiptContainerDetailService.list(new LambdaQueryWrapper<ReceiptContainerDetail>().eq(ReceiptContainerDetail::getReceiptContainerId, id));
             if (list.isEmpty()) {
-                throw new ServiceException("id:" + id + "的入库组盘,没有组盘明细,请先组盘!");
+                throw new ServiceException("id:" + id + "的入库组盘,没有未生成任务的组盘明细!");
+            }
+            Container container = containerService.getContainerByCode(receiptContainerHeader.getContainerCode());
+            if(container.getStatus().equals(QuantityConstant.STATUS_CONTAINER_LOCK)) {
+                //一般只有一个异常数据
+                ReceiptContainerDetail itemReceiptContainerDetail = list.get(0);
+                if (itemReceiptContainerDetail!=null) {
+                    LambdaQueryWrapper<TaskDetail> detaillam = Wrappers.lambdaQuery();
+                    detaillam.eq(TaskDetail::getAllocationId,itemReceiptContainerDetail.getId());
+                    detaillam.last("limit 1");
+                    TaskDetail taskDetail=taskDetailService.getOne(detaillam);
+                    if(taskDetail!=null){
+                        //更新入库组盘明细状态
+                        itemReceiptContainerDetail.setStatus(QuantityConstant.RECEIPT_CONTAINER_TASK);
+                        receiptContainerDetailService.updateById(itemReceiptContainerDetail);
+                        return AjaxResult.success("生成任务成功").setData(taskDetail.getTaskId());
+                    }
+                }else{
+                    throw new ServiceException("托盘已经锁定,不能生成任务");
+                }
             }
             if(StringUtils.isNotEmpty(receiptContainerHeader.getFromLocation())) {
                 locationService.updateStatus(receiptContainerHeader.getFromLocation(), QuantityConstant.STATUS_LOCATION_LOCK);
@@ -157,11 +177,11 @@ public class ReceiptTaskService {
                 locationService.updateStatus(locationCode, QuantityConstant.STATUS_LOCATION_LOCK);
                 Location desLocation = locationService.getLocationByCode(locationCode);
                 if (desLocation==null){
-                    return AjaxResult.error(receiptContainerHeader.getContainerCode()+",该托盘没有这个库位,"+locationCode);
+                    throw new ServiceException(receiptContainerHeader.getContainerCode()+",该托盘没有这个库位,"+locationCode);
                 }
                 String loginWarehouse = ShiroUtils.getWarehouseCode();
                 if(!desLocation.getWarehouseCode().equals(loginWarehouse)) {
-                    return AjaxResult.error("库位对应仓库不对");
+                    throw new ServiceException("库位对应仓库不对");
                 }
                 //if (taskHeaderService.getUncompleteTaskInNear(desLocation) > 0) {
                 //    return AjaxResult.error("目标库位:" + desLocation + "旁边存在任务,请完成任务以后再分配");
@@ -174,109 +194,24 @@ public class ReceiptTaskService {
                         throw new ServiceException("组盘状态更新失败");
                     }
                 }
-                //添加任务主表
-                TaskHeader task = new TaskHeader();
-                //成品入库任务将typeid改成1
-                if(StringUtils.isNotEmpty(receiptContainerHeader.getBarCodeHeaderCode())){
-                    task.setTypeId(1);
-                }
-                task.setAllocationHeadId(receiptContainerHeader.getId());
-                task.setElectricQuantity(receiptContainerHeader.getElectricQuantity());
-                task.setAllocationHeadId(receiptContainerHeader.getId());
-                task.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT);
-                task.setWarehouseCode(receiptContainerHeader.getWarehouseCode());
-                task.setCompanyCode(receiptContainerHeader.getCompanyCode());
-                task.setStatus(QuantityConstant.TASK_STATUS_BUILD);
-                task.setTaskType(receiptContainerHeader.getTaskType());
-                task.setFromLocation(receiptContainerHeader.getFromLocation());
-                if(StringUtils.isNotEmpty(receiptContainerHeader.getToLocation())){
-                    task.setToLocation(receiptContainerHeader.getToLocation());
-                    Location location = locationService.getLocationByCode(task.getToLocation(), ShiroUtils.getWarehouseCode());
-                    if(location != null) {
-                        task.setZoneCode(location.getZoneCode());
-                    }
-                }
-                if(StringUtils.isNotEmpty(receiptContainerHeader.getBarCodeHeaderCode())){
-                    task.setBarCodeHeaderCode(receiptContainerHeader.getBarCodeHeaderCode());
-                    task.setBarCodeHeaderId(receiptContainerHeader.getBarCodeHeaderId());
-                }
-                task.setContainerCode(receiptContainerHeader.getContainerCode());
-                task.setRecvDock(receiptContainerHeader.getRecvDock());
-                task.setPort(receiptContainerHeader.getPort());
-                //是否需要检测放电
+                //锁定容器
+                containerService.updateStatus(receiptContainerHeader.getContainerCode(), QuantityConstant.STATUS_CONTAINER_LOCK, container.getWarehouseCode());
+                              //是否需要检测放电
                 int isBatteryFlag=1;
+                TaskHeader task=createTask(receiptContainerHeader);
+
                 if (taskHeaderService.save(task)) {
                     //添加任务明细表
                     for (ReceiptContainerDetail item : list) {
-                        TaskDetail taskDetail = new TaskDetail();
-                        taskDetail.setTaskId(task.getId());
-                        taskDetail.setTaskType(task.getTaskType());
-                        taskDetail.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT);
-                        taskDetail.setWarehouseCode(task.getWarehouseCode());
-                        taskDetail.setAllocationId(item.getId());
-                        taskDetail.setCompanyCode(task.getCompanyCode());
-                        taskDetail.setBatteryPackTwoCode(item.getBatteryPackTwoCode());
-                        taskDetail.setMaterialCode(item.getMaterialCode());
-                        taskDetail.setMaterialName(item.getMaterialName());
-                        taskDetail.setMaterialSpec(item.getMaterialSpec());
-                        taskDetail.setMaterialUnit(item.getMaterialUnit());
-                        taskDetail.setMaterialIsBattery(item.getMaterialIsBattery());
-                        taskDetail.setInventorySts(item.getInventorySts());
-                        taskDetail.setBillCode(item.getReceiptCode());
-                        taskDetail.setBillDetailId(item.getReceiptDetailId());
-                        //成品入库任务将typeid改成1
-                        if(StringUtils.isNotEmpty(receiptContainerHeader.getBarCodeHeaderCode())){
-                            taskDetail.setTypeId(1);
-                            //taskDetail.setBillDetailId(item.getBarcodeDetailsId());
-                            taskDetail.setBarcodeDetailsCode(item.getBarcodeDetailsCode());
-                            taskDetail.setBarcodeDetailsId(item.getBarcodeDetailsId());
-                            //taskDetail.setBillDetailId(rec);
-                        }
-                        taskDetail.setQty(item.getQty());
-                        taskDetail.setWeights(item.getWeights());
-                        taskDetail.setContainerCode(task.getContainerCode());
-                        taskDetail.setFromLocation(task.getFromLocation());
-                        taskDetail.setElectricQuantity(item.getElectricQuantity());
-                        taskDetail.setMaterialNetWeight(item.getMaterialNetWeight());
-                        taskDetail.setMaterialGrossWeight(item.getMaterialGrossWeight());
-                        taskDetail.setMaterialNetWeight(item.getMaterialNetWeight());
-                        taskDetail.setMaterialTareWeight(item.getMaterialTareWeight());
-                        taskDetail.setMaterialBatch(item.getMaterialBatch());
-                        if(StringUtils.isNotEmpty(task.getToLocation() )) {
-                            taskDetail.setToLocation(task.getToLocation());
-                        }
-                        if(StringUtils.isNotEmpty(item.getSn() )){
-                            taskDetail.setSn(item.getSn());
-                        }
-                        taskDetail.setBatch(item.getBatch());
-                        taskDetail.setProjectNo(item.getProjectNo());
-                        taskDetail.setBatteryQty(item.getBatteryQty());
-                        taskDetail.setBatteryPackType(item.getBatteryPackType());
-                        taskDetail.setBatteryTypes(item.getBatteryTypes());
-                        taskDetail.setCompleteness(item.getCompleteness());
-                        taskDetail.setRemark(item.getRemark());
-                        taskDetail.setCountryCode(item.getCountryCode());
-                        taskDetail.setRecycler(item.getRecycler());
-                       /* System.out.println("id=="+item.getId());
-                        System.out.println("taskDetail.getMaterialIsBattery()=="+taskDetail.getMaterialIsBattery());
-                        System.out.println("taskDetail.getBatteryTypes()=="+taskDetail.getBatteryTypes());*/
-                        if(taskDetail.getMaterialIsBattery()==1&&StringUtils.isNotEmpty(taskDetail.getBatteryTypes())&&taskDetail.getBatteryTypes().equals("1")){
-                            taskDetail.setDischargeReview(2);
-                            isBatteryFlag=2;
-                        }else{
-                            taskDetail.setDischargeReview(1);
+                        TaskDetail taskDetail=createTaskDetail(task,isBatteryFlag,item,receiptContainerHeader);
+                        if (!taskDetailService.save(taskDetail)) {
+                            throw new ServiceException("生成任务明细失败");
                         }
                         //更新入库组盘明细状态
                         item.setStatus(QuantityConstant.RECEIPT_CONTAINER_TASK);
                         if (!receiptContainerDetailService.updateById(item)) {
                             throw new ServiceException("更新入库组盘明细状态出错");
                         }
-                        taskDetail.setPoundCode(item.getPoundCode());
-                        taskDetail.setSupplierCode(item.getSupplierCode());
-                        if (!taskDetailService.save(taskDetail)) {
-                            throw new ServiceException("生成任务明细失败");
-                        }
-
 
                         /* 修改明细状态为上架*/
                         ReceiptDetail receiptDetail = receiptDetailService.getById(item.getReceiptDetailId());
@@ -315,6 +250,106 @@ public class ReceiptTaskService {
 
     }
 
+
+    public TaskHeader createTask(ReceiptContainerHeader receiptContainerHeader){
+        //添加任务主表
+        TaskHeader task = new TaskHeader();
+        //成品入库任务将typeid改成1
+        if(StringUtils.isNotEmpty(receiptContainerHeader.getBarCodeHeaderCode())){
+            task.setTypeId(1);
+        }
+        task.setAllocationHeadId(receiptContainerHeader.getId());
+        task.setElectricQuantity(receiptContainerHeader.getElectricQuantity());
+        task.setAllocationHeadId(receiptContainerHeader.getId());
+        task.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT);
+        task.setWarehouseCode(receiptContainerHeader.getWarehouseCode());
+        task.setCompanyCode(receiptContainerHeader.getCompanyCode());
+        task.setStatus(QuantityConstant.TASK_STATUS_BUILD);
+        task.setTaskType(receiptContainerHeader.getTaskType());
+        task.setFromLocation(receiptContainerHeader.getFromLocation());
+        if(StringUtils.isNotEmpty(receiptContainerHeader.getToLocation())){
+            task.setToLocation(receiptContainerHeader.getToLocation());
+            Location location = locationService.getLocationByCode(task.getToLocation(), ShiroUtils.getWarehouseCode());
+            if(location != null) {
+                task.setZoneCode(location.getZoneCode());
+            }
+        }
+        if(StringUtils.isNotEmpty(receiptContainerHeader.getBarCodeHeaderCode())){
+            task.setBarCodeHeaderCode(receiptContainerHeader.getBarCodeHeaderCode());
+            task.setBarCodeHeaderId(receiptContainerHeader.getBarCodeHeaderId());
+        }
+        task.setContainerCode(receiptContainerHeader.getContainerCode());
+        task.setRecvDock(receiptContainerHeader.getRecvDock());
+        task.setPort(receiptContainerHeader.getPort());
+
+        return task;
+    }
+
+
+    public TaskDetail createTaskDetail(TaskHeader task,int isBatteryFlag,ReceiptContainerDetail item,ReceiptContainerHeader receiptContainerHeader){
+        TaskDetail taskDetail = new TaskDetail();
+        taskDetail.setTaskId(task.getId());
+        taskDetail.setTaskType(task.getTaskType());
+        taskDetail.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT);
+        taskDetail.setWarehouseCode(task.getWarehouseCode());
+        taskDetail.setAllocationId(item.getId());
+        taskDetail.setCompanyCode(task.getCompanyCode());
+        taskDetail.setBatteryPackTwoCode(item.getBatteryPackTwoCode());
+        taskDetail.setMaterialCode(item.getMaterialCode());
+        taskDetail.setMaterialName(item.getMaterialName());
+        taskDetail.setMaterialSpec(item.getMaterialSpec());
+        taskDetail.setMaterialUnit(item.getMaterialUnit());
+        taskDetail.setMaterialIsBattery(item.getMaterialIsBattery());
+        taskDetail.setInventorySts(item.getInventorySts());
+        taskDetail.setBillCode(item.getReceiptCode());
+        taskDetail.setBillDetailId(item.getReceiptDetailId());
+        //成品入库任务将typeid改成1
+        if(StringUtils.isNotEmpty(receiptContainerHeader.getBarCodeHeaderCode())){
+            taskDetail.setTypeId(1);
+            //taskDetail.setBillDetailId(item.getBarcodeDetailsId());
+            taskDetail.setBarcodeDetailsCode(item.getBarcodeDetailsCode());
+            taskDetail.setBarcodeDetailsId(item.getBarcodeDetailsId());
+            //taskDetail.setBillDetailId(rec);
+        }
+        taskDetail.setQty(item.getQty());
+        taskDetail.setWeights(item.getWeights());
+        taskDetail.setContainerCode(task.getContainerCode());
+        taskDetail.setFromLocation(task.getFromLocation());
+        taskDetail.setElectricQuantity(item.getElectricQuantity());
+        taskDetail.setMaterialNetWeight(item.getMaterialNetWeight());
+        taskDetail.setMaterialGrossWeight(item.getMaterialGrossWeight());
+        taskDetail.setMaterialNetWeight(item.getMaterialNetWeight());
+        taskDetail.setMaterialTareWeight(item.getMaterialTareWeight());
+        taskDetail.setMaterialBatch(item.getMaterialBatch());
+        if(StringUtils.isNotEmpty(task.getToLocation() )) {
+            taskDetail.setToLocation(task.getToLocation());
+        }
+        if(StringUtils.isNotEmpty(item.getSn() )){
+            taskDetail.setSn(item.getSn());
+        }
+        taskDetail.setBatch(item.getBatch());
+        taskDetail.setProjectNo(item.getProjectNo());
+        taskDetail.setBatteryQty(item.getBatteryQty());
+        taskDetail.setBatteryPackType(item.getBatteryPackType());
+        taskDetail.setBatteryTypes(item.getBatteryTypes());
+        taskDetail.setCompleteness(item.getCompleteness());
+        taskDetail.setRemark(item.getRemark());
+        taskDetail.setCountryCode(item.getCountryCode());
+        taskDetail.setRecycler(item.getRecycler());
+                       /* System.out.println("id=="+item.getId());
+                        System.out.println("taskDetail.getMaterialIsBattery()=="+taskDetail.getMaterialIsBattery());
+                        System.out.println("taskDetail.getBatteryTypes()=="+taskDetail.getBatteryTypes());*/
+        if(taskDetail.getMaterialIsBattery()==1&&StringUtils.isNotEmpty(taskDetail.getBatteryTypes())&&taskDetail.getBatteryTypes().equals("1")){
+            taskDetail.setDischargeReview(2);
+            isBatteryFlag=2;
+        }else{
+            taskDetail.setDischargeReview(1);
+        }
+        taskDetail.setPoundCode(item.getPoundCode());
+        taskDetail.setSupplierCode(item.getSupplierCode());
+        return taskDetail;
+    }
+
     public WcsTask createWcsTask(TaskHeader task){
         WcsTask wcsTask=new WcsTask();
         wcsTask.setTaskNo(task.getId().toString());