From 45d602719964509214d06ec5173f23e5307d5dfe Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期二, 16 四月 2024 12:24:10 +0800
Subject: [PATCH] 无空库位时,不做空板入库操作

---
 src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java |  234 ++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 184 insertions(+), 50 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
index cb4be34..b4c571f 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
@@ -2,96 +2,230 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.core.common.Cools;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.AgvWrkMast;
 import com.zy.asrs.entity.param.AgvTaskCreateParam;
 import com.zy.asrs.entity.param.AgvTaskParam;
-import com.zy.asrs.entity.param.AgvTaskkDescribeParam;
 import com.zy.asrs.mapper.AgvWrkMastMapper;
-import com.zy.asrs.service.AgvWrkMastService;
+import com.zy.asrs.service.*;
 import com.zy.common.utils.HttpHandler;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
+import java.util.*;
 
 @Service
+@Slf4j
 public class AgvWrkMastServiceImp extends ServiceImpl<AgvWrkMastMapper, AgvWrkMast> implements AgvWrkMastService {
+
+    @Value("${agv.url}")
+    private String url;
+
+    @Value("${agv.taskCreatePath}")
+    private String taskCreatePath;
+
+    @Value("${agv.taskCancelPath}")
+    private String taskCancelPath;
+
+    @Value("${agv.containerMoveInPath}")
+    private String containerMoveInPath;
+
+    @Value("${agv.containerMoveOutPath}")
+    private String containerMoveOutPath;
+
+    @Value("${agv.containerArrivedPath}")
+    private String containerArrivedPath;
 
     @Autowired
     AgvWrkMastMapper agvWrkMastMapper;
+    @Autowired
+    AgvWrkDetlService agvWrkDetlService;
+    @Autowired
+    AgvLocMastService agvLocMastService;
+    @Autowired
+    ApiLogService apiLogService;
+    @Autowired
+    AgvBasDevpService agvBasDevpService;
 
     public void updateWrkStsByWrkNo(int wrkNo, long wrkSts) {
         AgvWrkMast agvWrkMast = this.selectById(wrkNo);
+        //鍒ゆ柇瑕佷慨鏀圭殑宸ヤ綔妗g姸鎬佹槸鍚﹀悎鐞嗭紝濡傛灉涓嶅悎鐞嗗垯鎶涘嚭寮傚父
+        checkWrkSts(agvWrkMast,wrkSts);
         agvWrkMast.setWrkSts(wrkSts);
         this.updateById(agvWrkMast);
     }
 
-    public Map<String,List<Map<String,String>>> startWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
+    // TODO 鍒ゆ柇瑙勫垯
+    private boolean checkWrkSts(AgvWrkMast agvWrkMast,long wrkSts){
+
+
+
+        return true;
+    }
+
+    public int startWrk(AgvWrkMast agvWrkMast) throws IOException {
 
         AgvTaskCreateParam agvTaskCreateParam = new AgvTaskCreateParam();
-        agvTaskCreateParam.setTaskType("putaway");
+        //agvTaskCreateParam.setTaskType(taskType);
 
+        getRequestParam(agvTaskCreateParam,agvWrkMast);
+
+        return doHttpRequest(agvTaskCreateParam,"鎼繍浠诲姟涓嬪彂",url, taskCreatePath,null,"127.0.0.1");
+
+        //return containerMoveParam;
+    }
+
+    //瀹瑰櫒鍏ュ満
+    public int containerMoveIn(List<AgvWrkMast> agvWrkMastList) throws IOException {
         //璋冪敤瀹瑰櫒鍏ュ満鏃舵墍闇�瑕佸弬鏁�
         Map<String,List<Map<String,String>>> containerMoveParam = new HashMap<>();
         List<Map<String,String>> positionCodeMapList = new ArrayList<>();
         containerMoveParam.put("containerMoveIns",positionCodeMapList);
 
-        List<AgvTaskParam> agvTaskParamList = agvWrkMastList.stream().map(agvWrkMast -> {
-            AgvTaskParam agvTaskParam = new AgvTaskParam();
-            AgvTaskkDescribeParam agvTaskkDescribeParam = new AgvTaskkDescribeParam();
-            agvTaskParam.setTaskDescribe(agvTaskkDescribeParam);
-            //AgvTaskParam
-            agvTaskParam.setTaskCode(agvWrkMast.getWrkNo().toString());
-            agvTaskParam.setTaskPriority(agvWrkMast.getIoPri().intValue());
+        getContainerMoveParam(agvWrkMastList,positionCodeMapList);
 
-            //寰�瀹瑰櫒鍏ュ満鍙傛暟涓斁鍏ユ簮绔欑偣浣嶇疆
+        if(Cools.isEmpty(positionCodeMapList)){
+            return 0;
+        }
+        return doHttpRequest(containerMoveParam,"瀹瑰櫒鍏ュ満浠诲姟涓嬪彂",url, containerMoveInPath,null,"127.0.0.1");
+
+    }
+
+    //瀹瑰櫒绂诲満
+    public int containerMoveOut(List<AgvWrkMast> agvWrkMastList){
+        Map<String,List<Map<String,String>>> containerMoveParam = new HashMap<>();
+        List<Map<String,String>> positionCodeMapList = new ArrayList<>();
+        containerMoveParam.put("containerMoveOuts",positionCodeMapList);
+        for(AgvWrkMast agvWrkMast : agvWrkMastList){
+            Map<String,String> positionCodeMap = new HashMap<>();
+            positionCodeMap.put("positionCode",agvWrkMast.getLocNo());
+            positionCodeMapList.add(positionCodeMap);
+        }
+        return doHttpRequest(containerMoveParam,"瀹瑰櫒绂诲満浠诲姟涓嬪彂",url, containerMoveOutPath,null,"127.0.0.1");
+    }
+
+    public boolean insertByIncrease(AgvWrkMast agvWrkMast) {
+        int index = this.baseMapper.insertByIncrease(agvWrkMast);
+
+        return index > 0;
+    }
+
+    @Override
+    public boolean deleteByWrkNo(int wrkNo) {
+        return this.delete(new EntityWrapper<AgvWrkMast>().eq("wrk_no", wrkNo));
+    }
+
+    //瀹瑰櫒鍒拌揪閫氱煡
+    public int containerArrived(AgvWrkMast agvWrkMast) {
+
+        Map<String,String> containerArrivedParam = new HashMap<>();
+        containerArrivedParam.put("slotCode",agvWrkMast.getSourceLocNo());
+        containerArrivedParam.put("containerCode",agvWrkMast.getBarcode());
+
+        return doHttpRequest(containerArrivedParam,"瀹瑰櫒杈惧埌閫氱煡",url, containerArrivedPath,null,"127.0.0.1");
+    }
+
+    @Override
+    public List<AgvWrkMast> selectReadyAgvWrkMast() {
+        List<String> stationCodes = agvBasDevpService.selectAllStationCode();
+        Wrapper<AgvWrkMast> wrapper = new EntityWrapper<AgvWrkMast>().eq("wrk_sts", 21L).like(false, "loc_no", "@");
+        wrapper.in("loc_no",stationCodes);
+        return this.selectList(wrapper);
+        //return this.baseMapper.selectReadyAgvWrkMast();
+    }
+
+    @Override
+    public AgvWrkMast selectByContainerCode(String containerCode) {
+        return this.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode",containerCode));
+    }
+
+    @Override
+    public int callCancelTask(int wrkNo) {
+
+        AgvTaskCreateParam agvTaskCreateParam = new AgvTaskCreateParam();
+        agvTaskCreateParam.setTaskCode(wrkNo + "");
+
+        return doHttpRequest(agvTaskCreateParam,"鍙栨秷浠诲姟涓嬪彂",url, taskCancelPath,null,"127.0.0.1");
+
+    }
+
+
+    private void getContainerMoveParam(List<AgvWrkMast> agvWrkMastList,List<Map<String,String>> positionCodeMapList){
+        //寰�瀹瑰櫒鍏ュ満鍙傛暟涓斁鍏ユ簮绔欑偣浣嶇疆
+        for(AgvWrkMast agvWrkMast : agvWrkMastList){
+            //鍒ゆ柇鏄惁涓鸿緭閫佺嚎鍏ュ簱锛屾槸鍒欎笉闇�瑕佸鍣ㄨ繘鍦鸿姹�
+            if("Y".equals(agvWrkMast.getMk())){
+                continue;
+            }
             Map<String,String> positionCodeMap = new HashMap<>();
             positionCodeMap.put("positionCode",agvWrkMast.getSourceLocNo());
             positionCodeMapList.add(positionCodeMap);
-
-            //AgvTaskkDescribeParam
-            agvTaskkDescribeParam.setFromLocationCode(agvWrkMast.getSourceLocNo());
-            agvTaskkDescribeParam.setToLocationCode(agvWrkMast.getLocNo());
-            agvTaskkDescribeParam.setContainerCode(agvWrkMast.getBarcode());
-            return agvTaskParam;
-        }).collect(Collectors.toList());
-
-        agvTaskCreateParam.setTasks(agvTaskParamList);
-
-        String response = new HttpHandler.Builder()
-                .setUri("localhost:8080")
-                .setPath("test/task/create")
-                .setJson(JSONObject.toJSONString(agvTaskCreateParam))
-                .build()
-                .doPost();
-
-        JSONObject jsonObject = JSON.parseObject(response);
-        //save log api
-        int code = (int) jsonObject.get("code");
-        if(code != 0){
-            throw new CoolException("璋冪敤AGV鎺ュ彛澶辫触");
         }
-
-        return containerMoveParam;
     }
 
-    public int containerMove(Map<String, List<Map<String, String>>> containerMoveParam) throws IOException {
-        String response = new HttpHandler.Builder()
-                .setUri("localhost:8080")
-                .setPath("test/container/moveIn")
-                .setJson(JSONObject.toJSONString(containerMoveParam))
-                .build()
-                .doPost();
+    private void getRequestParam(AgvTaskCreateParam agvTaskCreateParam,AgvWrkMast agvWrkMast){
 
-        JSONObject jsonObject = JSON.parseObject(response);
-        return (int) jsonObject.get("code");
+        List<AgvTaskParam> agvTaskParamList = Arrays.asList(
+                //璧峰浣�
+                new AgvTaskParam(agvWrkMast.getSourceLocNo()),
+                //鐩爣浣�
+                new AgvTaskParam(agvWrkMast.getLocNo()));
+
+//        //璧峰浣�
+//        agvTaskParamList.add(new AgvTaskParam(agvWrkMast.getSourceLocNo()));
+//        //鐩爣浣�
+//        agvTaskParamList.add(new AgvTaskParam(agvWrkMast.getLocNo()));
+
+        if(agvWrkMast.getIoType() == 53 || agvWrkMast.getIoType() == 57 ){
+            agvWrkMast.setWrkNo(-agvWrkMast.getWrkNo());
+        }
+        agvTaskCreateParam.setTaskCode(agvWrkMast.getWrkNo().toString());
+        agvTaskCreateParam.setTaskTyp("F01");
+        agvTaskCreateParam.setPositionCodePath(agvTaskParamList);
+
+    }
+
+    private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String ip){
+        String response = "";
+        boolean success = false;
+
+        try {
+            response = new HttpHandler.Builder()
+                    .setUri(url)
+                    .setPath(path)
+                    .setJson(JSONObject.toJSONString(requestParam))
+                    .build()
+                    .doPost();
+            JSONObject jsonObject = JSON.parseObject(response);
+
+            int code = Integer.parseInt(jsonObject.get("code").toString());
+            if(code != 0){
+                throw new CoolException("璋冪敤AGV鍝嶅簲閿欒");
+            }
+            success = true;
+            return code;
+        }catch (Exception e){
+            log.error(e.getMessage());
+            throw new CoolException("璋冪敤AGV鍝嶅簲閿欒");
+        }finally {
+            apiLogService.save(
+                    namespace,
+                    url + path,
+                    appkey,
+                    ip,
+                    JSON.toJSONString(JSONObject.toJSONString(requestParam)),
+                    response,
+                    success
+            );
+        }
+
     }
 
 }

--
Gitblit v1.9.1