From 9c00fa2c197de15f789beba4f039410c6d85ca1a Mon Sep 17 00:00:00 2001
From: yiwenpeng <ywp303@163.com>
Date: Wed, 13 Sep 2023 15:45:51 +0800
Subject: [PATCH] fix:pda根据出库单号查询任务,新增根据库区筛选

---
 src/main/java/com/huaheng/api/mes/controller/MesReceiptController.java            |  18 +++++++++++++++---
 src/main/java/com/huaheng/pc/task/taskDetail/domain/PdaTaskDetail.java            |  19 +++++++++++++++++++
 src/main/java/com/huaheng/pc/task/taskDetail/domain/PdaTaskHeader.java            |  19 +++++++++++++++++++
 src/main/java/com/huaheng/pc/task/taskDetail/domain/PdaTaskVo.java                |  20 ++++++++++++++++++++
 src/main/java/com/huaheng/pc/task/taskDetail/domain/TaskDetailDto.java            |  26 --------------------------
 src/main/java/com/huaheng/pc/task/taskHeader/controller/TaskHeaderController.java | 160 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------
 6 files changed, 171 insertions(+), 91 deletions(-)
 create mode 100644 src/main/java/com/huaheng/pc/task/taskDetail/domain/PdaTaskDetail.java
 create mode 100644 src/main/java/com/huaheng/pc/task/taskDetail/domain/PdaTaskHeader.java
 create mode 100644 src/main/java/com/huaheng/pc/task/taskDetail/domain/PdaTaskVo.java
 delete mode 100644 src/main/java/com/huaheng/pc/task/taskDetail/domain/TaskDetailDto.java

diff --git a/src/main/java/com/huaheng/api/mes/controller/MesReceiptController.java b/src/main/java/com/huaheng/api/mes/controller/MesReceiptController.java
index f366bb2..479cfff 100644
--- a/src/main/java/com/huaheng/api/mes/controller/MesReceiptController.java
+++ b/src/main/java/com/huaheng/api/mes/controller/MesReceiptController.java
@@ -17,6 +17,7 @@ import com.huaheng.common.constant.QuantityConstant;
 import com.huaheng.common.exception.service.ServiceException;
 import com.huaheng.common.utils.StringUtils;
 import com.huaheng.common.utils.reflect.ReflectUtils;
+import com.huaheng.common.utils.security.ShiroUtils;
 import com.huaheng.framework.aspectj.lang.annotation.ApiLogger;
 import com.huaheng.framework.web.controller.BaseController;
 import com.huaheng.framework.web.domain.AjaxResult;
@@ -468,15 +469,26 @@ public class MesReceiptController extends BaseController {
     //@ApiLogger(apiName = "post调用E_Rd_In(MOM)入库接口", from="ROBOT")
     @PostMapping("/postE_Rd_In")
     public ReturnInfo postE_Rd_In(@RequestBody ReceiptDetail receiptDetail) {
+        if (StringUtils.isNotBlank(receiptDetail.getLastUpdatedBy())) {
+            receiptDetail.setLastUpdatedBy("PDA");
+        } else if (StringUtils.isNotEmpty(ShiroUtils.getName())) {
+            receiptDetail.setLastUpdatedBy(ShiroUtils.getName());
+        }
         User user = userService.selectUserByEmail(receiptDetail.getLastUpdatedBy());
-        ReceiptHeader receiptHeader = receiptHeaderService.getById(receiptDetail.getReceiptId()); //59
+        String loginName = "";
+        if (user == null) {
+            loginName = "PDA";
+        } else {
+            loginName = user.getLoginName();
+        }
+        ReceiptHeader receiptHeader = receiptHeaderService.getById(receiptDetail.getReceiptId());
         JSONObject Rd_In_M = new JSONObject();
         Rd_In_M.put("mno", receiptHeader.getCode());
         Rd_In_M.put("MGPK", receiptHeader.getMOMID());
         Rd_In_M.put("cBusType", receiptHeader.getReceiptType());
         Rd_In_M.put("TAID", receiptHeader.getTAID());
         Rd_In_M.put("FAID", receiptHeader.getFAID());
-        Rd_In_M.put("UserNo", user.getLoginName());
+        Rd_In_M.put("UserNo", loginName);
         Rd_In_M.put("warehouse", receiptHeader.getWarehouse());
 
         JSONArray jsonArray = new JSONArray();
@@ -493,7 +505,7 @@ public class MesReceiptController extends BaseController {
         Rd_In_S.put("receiptBarcode", receiptDetail.getReceiptBarcode());
         Rd_In_S.put("warehouse", receiptHeader.getWarehouse());
         Rd_In_S.put("warehouseName", receiptHeader.getWarehouseName());
-        Rd_In_S.put("creatorCode", user.getLoginName());
+        Rd_In_S.put("creatorCode", loginName);
         Rd_In_S.put("creatorName", receiptDetail.getLastUpdatedBy());
         Rd_In_S.put("productionWorker", receiptHeader.getProductionWorker());
         Rd_In_S.put("productionWorkerName", receiptHeader.getProductionWorkerName());
diff --git a/src/main/java/com/huaheng/pc/task/taskDetail/domain/PdaTaskDetail.java b/src/main/java/com/huaheng/pc/task/taskDetail/domain/PdaTaskDetail.java
new file mode 100644
index 0000000..6afa7f1
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/task/taskDetail/domain/PdaTaskDetail.java
@@ -0,0 +1,19 @@
+package com.huaheng.pc.task.taskDetail.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yiwenpeng
+ * @date 2023/9/13 14:18
+ */
+@Data
+public class PdaTaskDetail implements Serializable {
+    private static final long serialVersionUID = 1L;
+    private String materialCode;
+    private String materialName;
+    private String recordCode;
+    private BigDecimal qty;
+}
diff --git a/src/main/java/com/huaheng/pc/task/taskDetail/domain/PdaTaskHeader.java b/src/main/java/com/huaheng/pc/task/taskDetail/domain/PdaTaskHeader.java
new file mode 100644
index 0000000..b682ab1
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/task/taskDetail/domain/PdaTaskHeader.java
@@ -0,0 +1,19 @@
+package com.huaheng.pc.task.taskDetail.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yiwenpeng
+ * @date 2023/9/13 14:29
+ */
+@Data
+public class PdaTaskHeader implements Serializable {
+    private static final long serialVersionUID = 1L;
+    private Integer taskId;
+    private String zoneCode;
+    private String zoneName;
+    private List<PdaTaskDetail> pdaTaskDetail;
+}
diff --git a/src/main/java/com/huaheng/pc/task/taskDetail/domain/PdaTaskVo.java b/src/main/java/com/huaheng/pc/task/taskDetail/domain/PdaTaskVo.java
new file mode 100644
index 0000000..ebc3c86
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/task/taskDetail/domain/PdaTaskVo.java
@@ -0,0 +1,20 @@
+package com.huaheng.pc.task.taskDetail.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author yiwenpeng
+ * @date 2023/9/13 13:48
+ */
+
+@Data
+public class PdaTaskVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private List<PdaTaskHeader> pdaTaskHeader;
+
+}
diff --git a/src/main/java/com/huaheng/pc/task/taskDetail/domain/TaskDetailDto.java b/src/main/java/com/huaheng/pc/task/taskDetail/domain/TaskDetailDto.java
deleted file mode 100644
index df0b3eb..0000000
--- a/src/main/java/com/huaheng/pc/task/taskDetail/domain/TaskDetailDto.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.huaheng.pc.task.taskDetail.domain;
-
-import com.baomidou.mybatisplus.annotation.*;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.util.Date;
-
-
-@Data
-public class TaskDetailDto implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private Integer taskId;
-    private String materialCode;
-    private String materialName;
-    private String materialSpec;
-    private String materialUnit;
-    private String zoneCode;
-    private String zoneName;
-    private String recordCode;
-    private BigDecimal qty;
-}
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/controller/TaskHeaderController.java b/src/main/java/com/huaheng/pc/task/taskHeader/controller/TaskHeaderController.java
index 1fdf48c..40d8b6d 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/controller/TaskHeaderController.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/controller/TaskHeaderController.java
@@ -35,8 +35,10 @@ import com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail;
 import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
 import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
 import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
+import com.huaheng.pc.task.taskDetail.domain.PdaTaskDetail;
+import com.huaheng.pc.task.taskDetail.domain.PdaTaskHeader;
+import com.huaheng.pc.task.taskDetail.domain.PdaTaskVo;
 import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
-import com.huaheng.pc.task.taskDetail.domain.TaskDetailDto;
 import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
 import com.huaheng.pc.task.taskHeader.domain.MobileTask;
 import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
@@ -55,10 +57,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
-import java.util.AbstractList;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -349,72 +348,109 @@ public class TaskHeaderController extends BaseController {
         return AjaxResult.success();
     }
 
+
+    //@PostMapping("/getTaskByShipmentCode")
+    //@ResponseBody
+    //public AjaxResult getTaskByShipmentCode(String shipmentCode) {
+    //    if (StringUtils.isEmpty(shipmentCode)) {
+    //        return AjaxResult.error("单据号为空!");
+    //    }
+    //    List<TaskDetailDto> DTO = new ArrayList<>();
+    //    List<TaskDetail> list = taskDetailService.list(new LambdaQueryWrapper<TaskDetail>().eq(TaskDetail::getBillCode, shipmentCode));
+    //    if (list.isEmpty()) {
+    //        return AjaxResult.error("该单据号,没有查到对应平库出库任务:" + shipmentCode);
+    //    }
+    //    for (TaskDetail taskDetail : list) {
+    //        if (taskDetail.getFlat() != null && taskDetail.getFlat() == 1 && taskDetail.getStatus().equals(QuantityConstant.TASK_STATUS_BUILD)) {
+    //            TaskDetailDto taskDetailDto = new TaskDetailDto();
+    //            taskDetailDto.setTaskId(taskDetail.getTaskId());
+    //            taskDetailDto.setMaterialName(taskDetail.getMaterialName());
+    //            taskDetailDto.setMaterialCode(taskDetail.getMaterialCode());
+    //            taskDetailDto.setZoneCode(taskDetail.getZoneCode());
+    //            taskDetailDto.setZoneName(taskDetail.getZoneName());
+    //            taskDetailDto.setRecordCode(taskDetail.getRecordCode());
+    //            taskDetailDto.setQty(taskDetail.getQty());
+    //            DTO.add(taskDetailDto);
+    //        }
+    //    }
+    //    return AjaxResult.success(DTO);
+    //}
+
     @PostMapping("/getTaskByShipmentCode")
     @ResponseBody
-    public AjaxResult getTaskByShipmentCode(String shipmentCode) {
+    public AjaxResult getTaskByShipmentCode(String shipmentCode, String zoneCode) {
         if (StringUtils.isEmpty(shipmentCode)) {
             return AjaxResult.error("单据号为空!");
         }
-        List<TaskDetailDto> DTO = new ArrayList<>();
-        List<TaskDetail> list = taskDetailService.list(new LambdaQueryWrapper<TaskDetail>().eq(TaskDetail::getBillCode, shipmentCode));
-        if (list.isEmpty()) {
+        List<TaskDetail> taskDetails = taskDetailService.list(new LambdaQueryWrapper<TaskDetail>()
+                .eq(StringUtils.isNotEmpty(zoneCode), TaskDetail::getZoneCode, zoneCode)
+                .eq(TaskDetail::getBillCode, shipmentCode));
+        if (taskDetails.isEmpty()) {
             return AjaxResult.error("该单据号,没有查到对应平库出库任务:" + shipmentCode);
-            //List<TaskDetail> list1 = taskDetailService.list(new LambdaQueryWrapper<TaskDetail>().eq(TaskDetail::getRecordCode, shipmentCode));
-            //if (!list1.isEmpty()) {
-            //    shipmentCode = list1.get(0).getBillCode();
-            //    list = taskDetailService.list(new LambdaQueryWrapper<TaskDetail>().eq(TaskDetail::getBillCode, shipmentCode));
-            //} else {
-            //    return AjaxResult.error("该单据号,没有查到对应平库出库任务:" + shipmentCode);
-            //}
         }
-        for (TaskDetail taskDetail : list) {
-            if (taskDetail.getFlat() != null && taskDetail.getFlat() == 1 && taskDetail.getStatus().equals(QuantityConstant.TASK_STATUS_BUILD)) {
-                TaskDetailDto taskDetailDto = new TaskDetailDto();
-                taskDetailDto.setTaskId(taskDetail.getTaskId());
-                taskDetailDto.setMaterialName(taskDetail.getMaterialName());
-                taskDetailDto.setMaterialCode(taskDetail.getMaterialCode());
-                taskDetailDto.setZoneCode(taskDetail.getZoneCode());
-                taskDetailDto.setZoneName(taskDetail.getZoneName());
-                taskDetailDto.setRecordCode(taskDetail.getRecordCode());
-                taskDetailDto.setQty(taskDetail.getQty());
-                DTO.add(taskDetailDto);
+        List<Integer> ids = taskDetails.stream().map(TaskDetail::getTaskId).distinct().collect(Collectors.toList());
+        PdaTaskVo VO = new PdaTaskVo();
+        List<TaskHeader> taskHeaders = taskHeaderService.list(new LambdaQueryWrapper<TaskHeader>().in(TaskHeader::getId, ids));
+        List<PdaTaskHeader> headerList = new ArrayList<>();
+        for (TaskHeader taskHeader : taskHeaders) {
+            List<PdaTaskDetail> details = new ArrayList<>();
+            if (taskHeader.getFlat() != null && taskHeader.getFlat() == 1 && taskHeader.getStatus().equals(QuantityConstant.TASK_STATUS_BUILD)) {
+                PdaTaskHeader header = new PdaTaskHeader();
+                header.setTaskId(taskHeader.getId());
+                header.setZoneCode(taskHeader.getZoneCode());
+                String name = zoneService.getOne(new LambdaQueryWrapper<Zone>().eq(Zone::getCode, taskHeader.getZoneCode())).getName();
+                header.setZoneName(name);
+                for (TaskDetail taskDetail : taskDetails) {
+                    if (taskDetail.getTaskId().equals(taskHeader.getId())) {
+                        PdaTaskDetail detail = new PdaTaskDetail();
+                        detail.setMaterialCode(taskDetail.getMaterialCode());
+                        detail.setMaterialName(taskDetail.getMaterialName());
+                        detail.setRecordCode(taskDetail.getRecordCode());
+                        detail.setQty(taskDetail.getQty());
+                        details.add(detail);
+                    }
+
+                }
+                header.setPdaTaskDetail(details);
+                headerList.add(header);
             }
         }
-        return AjaxResult.success(DTO);
+        VO.setPdaTaskHeader(headerList);
+        return AjaxResult.success(VO);
     }
 
-    @PostMapping("/getTaskByTaskId")
-    @ResponseBody
-    public AjaxResult getTaskByTaskId(String taskId) {
-        if (StringUtils.isEmpty(taskId)) {
-            return AjaxResult.error("任务号为空!");
-        }
-        TaskHeader taskHeader = taskHeaderService.getById(taskId);
-        if (taskHeader == null) {
-            return AjaxResult.error("任务没找到ID:" + taskId);
-        }
-        if (!taskHeader.getStatus().equals(QuantityConstant.TASK_STATUS_BUILD)) {
-            return AjaxResult.error("任务不是新建状态,可能已完成");
-        }
-        if (taskHeader.getFlat() == null || taskHeader.getFlat() != 1) {
-            return AjaxResult.error("只能扫平库任务");
-        }
-        List<TaskDetail> taskDetails = taskDetailService.list(new LambdaQueryWrapper<TaskDetail>().eq(TaskDetail::getTaskId, taskId));
-        if (taskDetails.isEmpty()) {
-            return AjaxResult.error("没有查到对应的任务明细");
-        }
-        List<TaskDetailDto> DTO = new ArrayList<>();
-        for (TaskDetail taskDetail : taskDetails) {
-            TaskDetailDto taskDetailDto = new TaskDetailDto();
-            taskDetailDto.setTaskId(taskDetail.getTaskId());
-            taskDetailDto.setMaterialName(taskDetail.getMaterialName());
-            taskDetailDto.setMaterialCode(taskDetail.getMaterialCode());
-            taskDetailDto.setZoneCode(taskDetail.getZoneCode());
-            taskDetailDto.setZoneName(taskDetail.getZoneName());
-            taskDetailDto.setRecordCode(taskDetail.getRecordCode());
-            taskDetailDto.setQty(taskDetail.getQty());
-            DTO.add(taskDetailDto);
-        }
-        return AjaxResult.success(DTO);
-    }
+    //@PostMapping("/getTaskByTaskId")
+    //@ResponseBody
+    //public AjaxResult getTaskByTaskId(String taskId) {
+    //    if (StringUtils.isEmpty(taskId)) {
+    //        return AjaxResult.error("任务号为空!");
+    //    }
+    //    TaskHeader taskHeader = taskHeaderService.getById(taskId);
+    //    if (taskHeader == null) {
+    //        return AjaxResult.error("任务没找到ID:" + taskId);
+    //    }
+    //    if (!taskHeader.getStatus().equals(QuantityConstant.TASK_STATUS_BUILD)) {
+    //        return AjaxResult.error("任务不是新建状态,可能已完成");
+    //    }
+    //    if (taskHeader.getFlat() == null || taskHeader.getFlat() != 1) {
+    //        return AjaxResult.error("只能扫平库任务");
+    //    }
+    //    List<TaskDetail> taskDetails = taskDetailService.list(new LambdaQueryWrapper<TaskDetail>().eq(TaskDetail::getTaskId, taskId));
+    //    if (taskDetails.isEmpty()) {
+    //        return AjaxResult.error("没有查到对应的任务明细");
+    //    }
+    //    List<TaskDetailDto> DTO = new ArrayList<>();
+    //    for (TaskDetail taskDetail : taskDetails) {
+    //        TaskDetailDto taskDetailDto = new TaskDetailDto();
+    //        taskDetailDto.setTaskId(taskDetail.getTaskId());
+    //        taskDetailDto.setMaterialName(taskDetail.getMaterialName());
+    //        taskDetailDto.setMaterialCode(taskDetail.getMaterialCode());
+    //        taskDetailDto.setZoneCode(taskDetail.getZoneCode());
+    //        taskDetailDto.setZoneName(taskDetail.getZoneName());
+    //        taskDetailDto.setRecordCode(taskDetail.getRecordCode());
+    //        taskDetailDto.setQty(taskDetail.getQty());
+    //        DTO.add(taskDetailDto);
+    //    }
+    //    return AjaxResult.success(DTO);
+    //}
 }
--
libgit2 0.22.2