From 165752f9f321d7b49874da3244a825db8eabb7a4 Mon Sep 17 00:00:00 2001
From: pengcheng <1432755665@qq.com>
Date: Fri, 11 Oct 2019 22:24:23 +0800
Subject: [PATCH] 重入和空出处理

---
 src/main/java/com/huaheng/api/wcs/service/emptyOutHandle/EmptyOutHandleServiceImpl.java |  25 +++++++++++++++++++++++--
 src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java | 122 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 2 files changed, 140 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/huaheng/api/wcs/service/emptyOutHandle/EmptyOutHandleServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/emptyOutHandle/EmptyOutHandleServiceImpl.java
index cc610a2..0d690df 100644
--- a/src/main/java/com/huaheng/api/wcs/service/emptyOutHandle/EmptyOutHandleServiceImpl.java
+++ b/src/main/java/com/huaheng/api/wcs/service/emptyOutHandle/EmptyOutHandleServiceImpl.java
@@ -3,19 +3,29 @@ package com.huaheng.api.wcs.service.emptyOutHandle;
 import com.huaheng.api.wcs.domain.WcsTask;
 import com.huaheng.common.utils.StringUtils;
 import com.huaheng.framework.web.domain.AjaxResult;
+import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
+import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 @Service
 public class EmptyOutHandleServiceImpl implements EmptyOutHandleService {
 
+
+    @Autowired
+    private TaskHeaderService taskHeaderService;
+
     /**
      * 空出处理
      * 1、判断非空字段
-     * 2、
+     * 2、根据任务号查找任务
+     * 3、修改该任务为空出,过后处理
      * @param wcsTask
      * @return
      */
     @Override
+    @Transactional
     public AjaxResult EmptyOutHandle(WcsTask wcsTask) {
 
         //1、判断非空字段
@@ -23,7 +33,18 @@ public class EmptyOutHandleServiceImpl implements EmptyOutHandleService {
             return AjaxResult.error("任务号为空");
         }
 
+        //2、根据任务号查找任务
+        TaskHeader taskHeader = taskHeaderService.getById(Integer.valueOf(wcsTask.getTaskNo()));
+        if(taskHeader == null){
+            return AjaxResult.error("任务号错误,没有找到该任务");
+        }
 
-        return null;
+        //3、修改该任务为空出,过后处理
+        taskHeader.setUserDef1("空托出库");
+        Boolean flag = taskHeaderService.updateById(taskHeader);
+        if(flag == false){
+            return AjaxResult.error("修改任务失败,空出处理失败");
+        }
+        return AjaxResult.success("空出处理成功");
     }
 }
diff --git a/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java
index d12e829..4451fc5 100644
--- a/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java
+++ b/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java
@@ -1,24 +1,56 @@
 package com.huaheng.api.wcs.service.overrideHandle;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.huaheng.api.wcs.domain.WcsTask;
 import com.huaheng.common.exception.service.ServiceException;
 import com.huaheng.common.utils.StringUtils;
+import com.huaheng.common.utils.security.ShiroUtils;
 import com.huaheng.framework.web.domain.AjaxResult;
+import com.huaheng.pc.config.location.domain.Location;
+import com.huaheng.pc.config.location.service.LocationService;
+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.task.taskDetail.domain.TaskDetail;
+import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
 import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
+import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
 
 @Service
 public class OverrideHandleServiceImpl implements OverrideHandleService {
 
+
+    @Autowired
+    private TaskHeaderService taskHeaderService;
+    @Autowired
+    private TaskDetailService taskDetailService;
+    @Autowired
+    private LocationService locationService;
+    @Autowired
+    private ReceiptContainerHeaderService receiptContainerHeaderService;
+    @Autowired
+    private ReceiptContainerDetailService receiptContainerDetailService;
+
     /**
      * 重入处理
      * 1、判断非空字段
-     * 2、实体转换
-     *
+     * 2、根据任务号查找任务
+     * 3、修改任务目的库位,修改入库组盘的库位,修改库位状态
      */
 
     @Override
+    @Transactional
     public AjaxResult OverrideHandle(WcsTask wcsTask) {
+        Boolean flag = true;
+
         //1、判断非空字段
         if(StringUtils.isEmpty(wcsTask.getTaskNo())){
             return AjaxResult.error("任务号为空");
@@ -27,9 +59,89 @@ public class OverrideHandleServiceImpl implements OverrideHandleService {
             return AjaxResult.error("目的库位为空");
         }
 
-        TaskHeader taskHeader =new TaskHeader();
-        taskHeader.setId(Integer.valueOf(wcsTask.getTaskNo()));
+        //2、根据任务号查找任务
+        TaskHeader taskHeader = taskHeaderService.getById(Integer.valueOf(wcsTask.getTaskNo()));
+        if(taskHeader == null){
+            return AjaxResult.error("任务号错误,没有找到该任务");
+        }
+
+        //3、修改任务目的库位,修改入库组盘的库位,修改库位状态
+        //修改原来目的库位的状态
+        LambdaQueryWrapper<Location> locationLam = Wrappers.lambdaQuery();
+        locationLam.eq(Location::getCode,taskHeader.getToLocation())
+                .eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode());
+        Location location = locationService.getOne(locationLam);
+        if(location == null){
+            return AjaxResult.error("此任务的原目的库位在系统中不存在");
+        }
+        location.setStatus("empty");
+        flag = locationService.updateById(location);
+        if(flag == false){
+            return AjaxResult.error("修改此任务的原目的库位错误");
+        }
+
+        //查看新库位
+        locationLam.eq(Location::getCode,wcsTask.getToLocationCode())
+                .eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode());
+        Location newlocation = locationService.getOne(locationLam);
+        if(newlocation == null){
+            throw  new ServiceException("新目的库位在系统中不存在");
+        }
+        //修改任务
         taskHeader.setToLocation(wcsTask.getToLocationCode());
-        return null;
+        taskHeader.setUserDef1("重入处理");
+        flag = taskHeaderService.updateById(taskHeader);
+        if(flag == false){
+            throw new ServiceException("修改此任务错误");
+        }
+
+        //修改子任务
+        LambdaQueryWrapper<TaskDetail> taskDetailLam = Wrappers.lambdaQuery();
+        taskDetailLam.eq(TaskDetail::getWarehouseCode,ShiroUtils.getWarehouseCode())
+                .eq(TaskDetail::getTaskId,taskHeader.getId());
+        List<TaskDetail> taskDetails = taskDetailService.list(taskDetailLam);
+        List<TaskDetail> taskDetailList = new ArrayList<>();
+        if(taskDetails != null && taskDetails.size()> 0){
+            for(TaskDetail taskDetail : taskDetails){
+                taskDetail.setToLocation(wcsTask.getToLocationCode());
+                taskDetailList.add(taskDetail);
+            }
+            flag = taskDetailService.updateBatchById(taskDetailList);
+            if(flag == false){
+                throw new ServiceException("修改此任务的明细错误");
+            }
+        }
+
+        //修改入库组盘
+        if(taskHeader.getAllocationHeadId() == null){
+            throw new ServiceException("找不到此任务的组盘头id");
+        }
+        ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getById(taskHeader.getAllocationHeadId());
+        if(receiptContainerHeader == null){
+            throw new ServiceException("找不到此任务的组盘头");
+        }
+        receiptContainerHeader.setToLocation(wcsTask.getToLocationCode());
+        flag = receiptContainerHeaderService.updateById(receiptContainerHeader);
+        if(flag == false){
+            throw new ServiceException("修改此任务对应的组盘头错误");
+        }
+
+        //修改入库组盘明细
+        LambdaQueryWrapper<ReceiptContainerDetail> lam = Wrappers.lambdaQuery();
+        lam.eq(ReceiptContainerDetail::getReceiptContainerId,receiptContainerHeader.getId())
+                .eq(ReceiptContainerDetail::getWarehouseCode,ShiroUtils.getWarehouseCode());
+        List<ReceiptContainerDetail> receiptContainerDetails = receiptContainerDetailService.list(lam);
+        List<ReceiptContainerDetail> receiptContainerDetailList = new ArrayList<>();
+        if(receiptContainerDetails != null && receiptContainerDetails.size()> 0){
+            for(ReceiptContainerDetail receiptContainerDetail : receiptContainerDetails){
+                receiptContainerDetail.setLocationCode(wcsTask.getToLocationCode());
+                receiptContainerDetailList.add(receiptContainerDetail);
+            }
+            flag = receiptContainerDetailService.updateBatchById(receiptContainerDetailList);
+            if(flag == false){
+                throw new ServiceException("修改此任务的组盘明细错误");
+            }
+        }
+        return AjaxResult.success("重入处理成功");
     }
 }
--
libgit2 0.22.2