From d2577544b333d545cf5269a2ef6701b7f609654d Mon Sep 17 00:00:00 2001
From: lsh <1>
Date: 星期一, 08 七月 2024 08:23:29 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/controller/OpenController.java              |   12 ++
 src/main/java/com/zy/asrs/task/AutoMoveHaiKangScheduler.java          |  122 ++++++++++++++++++++
 src/main/java/com/zy/asrs/entity/param/AgvHaiKangTaskCreateParam.java |   34 +++++
 src/main/java/com/zy/asrs/entity/WrkMast.java                         |   11 +
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java           |   12 ++
 src/main/java/com/zy/asrs/service/OpenService.java                    |    3 
 src/main/resources/application.yml                                    |    2 
 src/main/java/com/zy/asrs/entity/WrkMastExecute.java                  |    9 +
 src/main/java/com/zy/asrs/task/handler/AutoMoveHaiKangHandler.java    |  149 ++++++++++++++++++++++++
 9 files changed, 352 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index cb34a46..8dbba94 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -204,4 +204,16 @@
         System.out.println(JSON.toJSONString(param1));
     }
 
+
+    /**
+     * 搴撳瓨缁熻
+     */
+    @RequestMapping("/agv/haikang/complete/v1")
+    public R agvHaiKang(@RequestHeader(required = false) String wrkNo,
+                        HttpServletRequest request) {
+//        auth(wrkNo, null, request);
+        return R.ok().add(openService.agvHaiKang(wrkNo));
+    }
+
+
 }
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index 83298e9..4aeb57c 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -495,6 +495,15 @@
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.logErrTime);
     }
 
-
+    public Long getWrkStsComplete(){
+        if (Cools.isEmpty(this.wrkSts)){
+            return this.wrkSts;
+        }
+        if (this.ioType>10){
+            return this.wrkSts+2;
+        }else {
+            return this.wrkSts+2;
+        }
+    }
 
 }
diff --git a/src/main/java/com/zy/asrs/entity/WrkMastExecute.java b/src/main/java/com/zy/asrs/entity/WrkMastExecute.java
index 80451ba..ec65a91 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMastExecute.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMastExecute.java
@@ -240,5 +240,14 @@
         return null;
     }
 
+    public Long getWrkStsCode(){
+        switch (this.wrkSts.intValue()){
+            case 1:
+                return (long)2;
+            default:
+                return this.wrkSts+1;
+        }
+    }
+
 
 }
diff --git a/src/main/java/com/zy/asrs/entity/param/AgvHaiKangTaskCreateParam.java b/src/main/java/com/zy/asrs/entity/param/AgvHaiKangTaskCreateParam.java
new file mode 100644
index 0000000..02a5e8f
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/AgvHaiKangTaskCreateParam.java
@@ -0,0 +1,34 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 瀵规帴ESS 浠诲姟涓嬪彂鍙傛暟
+ */
+@Data
+public class AgvHaiKangTaskCreateParam implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    //浠诲姟鍙�
+    private String taskCode;
+
+    //浠诲姟绫诲瀷
+    private String taskTyp;
+
+    private Long sign;
+
+    private Integer start;
+    private Integer end;
+
+//    //浠诲姟缁�
+//    private String taskGroupCode;
+//
+//    //浠诲姟缁勪紭鍏堢骇
+//    private int groupPriority;
+}
+
+
+
diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java
index afd90b1..93ff722 100644
--- a/src/main/java/com/zy/asrs/service/OpenService.java
+++ b/src/main/java/com/zy/asrs/service/OpenService.java
@@ -43,4 +43,7 @@
      * @param param
      */
     void syncMat(MatSyncParam param);
+
+    boolean agvHaiKang(String wrkNo);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 5d8970a..8e74b99 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -48,6 +48,8 @@
     private TagService tagService;
     @Autowired
     private TagMapper tagMapper;
+    @Autowired
+    private WrkMastService wrkMastService;
 
     @Override
     @Transactional
@@ -544,4 +546,14 @@
 
     }
 
+
+    @Override
+    @Transactional
+    public boolean agvHaiKang(String wrkNo) {
+        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", Long.parseLong(wrkNo)));
+        wrkMast.setWrkSts(wrkMast.getWrkStsComplete());
+        wrkMastService.updateById(wrkMast);
+        return true;
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/task/AutoMoveHaiKangScheduler.java b/src/main/java/com/zy/asrs/task/AutoMoveHaiKangScheduler.java
new file mode 100644
index 0000000..791b9c9
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/AutoMoveHaiKangScheduler.java
@@ -0,0 +1,122 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.WrkMastExecute;
+import com.zy.asrs.service.WrkMastExecuteService;
+import com.zy.asrs.task.handler.AutoMoveHaiKangHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+
+// 鑷姩绉诲簱
+@Slf4j
+@Component
+public class AutoMoveHaiKangScheduler {
+
+    @Autowired
+    private WrkMastExecuteService wrkMastExecuteService;
+    @Autowired
+    private AutoMoveHaiKangHandler autoMoveHaiKangHandler;
+
+    /**
+     * 鎵цagv_wrk_mast_execute浠诲姟
+     */
+//    @Scheduled(cron = "0/2 * * * * ? ")
+    private void autoMove(){
+        List<WrkMastExecute> wrkMastExecuteList = wrkMastExecuteService.selectList(new EntityWrapper<WrkMastExecute>().eq("io_type", 121).eq("wrk_sts",0L));
+        for (WrkMastExecute wrkMastExecute:wrkMastExecuteList){
+            try{
+                if (true){
+                    autoMoveHaiKangHandler.start(wrkMastExecute);
+                }
+            }catch (Exception e){
+                log.error("鎵цagv_wrk_mast_execute浠诲姟寮傚父===銆嬪紓甯稿師鍥狅細"+e.getMessage());
+            }
+        }
+    }
+//
+//    /**
+//     * 涓嬩竴姝gv_wrk_mast_execute浠诲姟
+//     */
+////    @Scheduled(cron = "0/2 * * * * ? ")
+//    private void autoMove2(){
+//        List<WrkMastExecute> wrkMastExecuteList = wrkMastExecuteService.selectList(new EntityWrapper<WrkMastExecute>().eq("io_type", 121).eq("wrk_sts",3L));
+//        for (WrkMastExecute wrkMastExecute:wrkMastExecuteList){
+//            Date now = new Date();
+//            try{
+//                if (wrkMastExecute.getStatus()==2 && wrkMastExecute.getNowPosition()==1){
+//                    //鍒ゆ柇鐢垫蹇欎笉蹇�
+//                    int count = wrkMastExecuteService.selectCount(new EntityWrapper<WrkMastExecute>().eq("io_type", 121).eq("status", 2));
+//                    if(count<3){
+//                        wrkMastExecute.setStatus(3);
+//                        wrkMastExecute.setWrkSts(0L);
+//                        wrkMastExecute.setModiTime(now);
+//                        wrkMastExecute.setEndPosition(4);
+//                        wrkMastExecuteService.updateById(wrkMastExecute);
+//                        updateAgvBasDevp(agvBasDevp,"R",agvBasDevp.getLocType2(),agvBasDevp.getBarcode());
+//                    }
+//                }
+//            }catch (Exception e){
+//                log.error("鎵цagv_wrk_mast_execute浠诲姟寮傚父===銆嬪紓甯稿師鍥狅細"+e.getMessage());
+//            }
+//        }
+//    }
+//
+//    /**
+//     * 涓嬩竴姝gv_wrk_mast_execute浠诲姟
+//     */
+////    @Scheduled(cron = "0/2 * * * * ? ")
+//    private void autoMove3(){
+//        List<WrkMastExecute> wrkMastExecuteList = wrkMastExecuteService.selectList(new EntityWrapper<WrkMastExecute>().eq("io_type", 121).eq("wrk_sts",2L));
+//        for (WrkMastExecute wrkMastExecute:wrkMastExecuteList){
+//            Date now = new Date();
+//            try{
+//                if (wrkMastExecute.getStatus()==2){
+//                    AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("dev_no", wrkMastExecute.getRoute()[wrkMastExecute.getEndPosition()]));
+//                    if (Cools.isEmpty(agvBasDevp) || !agvBasDevp.getLocSts().equals("S")){
+//                        log.error("绔欑偣鐘舵�乴ocsts鍙傛暟鏈夎锛歭ocSts:"+agvBasDevp.getLocSts$());
+//                    }else {
+//                        wrkMastExecute.setWrkSts(wrkMastExecute.getWrkStsCode());
+//                        wrkMastExecute.setModiTime(now);
+//                        wrkMastExecute.setNowPosition(wrkMastExecute.getEndPosition());
+//                        wrkMastExecuteService.updateById(wrkMastExecute);
+//                        updateAgvBasDevp(agvBasDevp,"F",agvBasDevp.getLocType2(),agvBasDevp.getBarcode());
+//                    }
+//                }else if (wrkMastExecute.getStatus()==3 || wrkMastExecute.getStatus()==4){
+//                    AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("dev_no", wrkMastExecute.getRoute()[wrkMastExecute.getNowPosition()]));
+//                    if (Cools.isEmpty(agvBasDevp) || !agvBasDevp.getLocSts().equals("R")){
+//                        log.error("绔欑偣鐘舵�乴ocsts鍙傛暟鏈夎锛歭ocSts:"+agvBasDevp.getLocSts$());
+//                    }else {
+//                        wrkMastExecute.setWrkSts(wrkMastExecute.getWrkStsCode());
+//                        wrkMastExecute.setModiTime(now);
+//                        wrkMastExecute.setNowPosition(wrkMastExecute.getEndPosition());
+//                        wrkMastExecuteService.updateById(wrkMastExecute);
+//                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvBasDevp.getDevNo(),"O","",(short)0);
+//                    }
+//                }else if (wrkMastExecute.getStatus()==1){
+//                    wrkMastExecute.setWrkSts(wrkMastExecute.getWrkStsCode());
+//                    wrkMastExecute.setModiTime(now);
+//                    wrkMastExecute.setNowPosition(wrkMastExecute.getEndPosition());
+//                    wrkMastExecuteService.updateById(wrkMastExecute);
+//                }
+//            }catch (Exception e){
+//                log.error("鎵цagv_wrk_mast_execute浠诲姟寮傚父===銆嬪紓甯稿師鍥狅細"+e.getMessage());
+//            }
+//        }
+//    }
+//
+//
+//
+//    private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts, Short continerType, String containerCode){
+//        if(!Cools.isEmpty(agvBasDevp)){
+//            agvBasDevp.setLocSts(locSts);
+//            agvBasDevp.setLocType2(continerType);
+//            agvBasDevp.setBarcode(containerCode);
+//            agvBasDevpService.updateById(agvBasDevp);
+//        }
+//    }
+}
diff --git a/src/main/java/com/zy/asrs/task/handler/AutoMoveHaiKangHandler.java b/src/main/java/com/zy/asrs/task/handler/AutoMoveHaiKangHandler.java
new file mode 100644
index 0000000..88959fe
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/AutoMoveHaiKangHandler.java
@@ -0,0 +1,149 @@
+package com.zy.asrs.task.handler;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.WrkMastExecute;
+import com.zy.asrs.entity.param.AgvHaiKangTaskCreateParam;
+import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.impl.WrkMastExecuteServiceImpl;
+import com.zy.asrs.task.AbstractHandler;
+import com.zy.asrs.task.core.ReturnT;
+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 org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+@Slf4j
+@Service
+@Transactional
+public class AutoMoveHaiKangHandler extends AbstractHandler<String> {
+
+    @Value("${agv.url}")
+    private String url;
+
+    @Value("${agv.taskCreatePath}")
+    private String taskCreatePath;
+
+    @Autowired
+    private ApiLogService apiLogService;
+    @Autowired
+    private WrkMastExecuteServiceImpl wrkMastExecuteService;
+
+    public ReturnT<String> start(WrkMastExecute wrkMastExecute) {
+        try{
+            AgvHaiKangTaskCreateParam agvTaskCreateParam = new AgvHaiKangTaskCreateParam();
+            getRequestParam(agvTaskCreateParam,wrkMastExecute);
+            int doHttpRequest = doHttpRequest(agvTaskCreateParam, "鎼繍浠诲姟涓嬪彂==>2-3==1", url, taskCreatePath, null, "127.0.0.1");
+            if(doHttpRequest != 0){
+                throw new CoolException("浠诲姟涓嬪彂澶辫触,code:"+doHttpRequest);
+            }
+            wrkMastExecute.setWrkSts(wrkMastExecute.getWrkStsCode());
+            wrkMastExecute.setModiTime(new Date());
+            if (!wrkMastExecuteService.updateById(wrkMastExecute)){
+                throw new CoolException("浠诲姟涓嬪彂鎴愬姛,浣嗘槸鏇存柊鎵ц浠诲姟鐘舵�佸け璐�:"+doHttpRequest);
+            }
+        }catch (Exception e){
+            log.error("鎼繍浠诲姟涓嬪彂===銆嬪紓甯革細"+e.getMessage());
+        }
+        return SUCCESS;
+    }
+
+//    public ReturnT<String> start1(WrkMastExecute wrkMastExecute) {
+//        try{
+//            AgvTaskCreateParam agvTaskCreateParam = new AgvTaskCreateParam();
+//            getRequestParam(agvTaskCreateParam,wrkMastExecute);
+//            int doHttpRequest = doHttpRequest(agvTaskCreateParam, "鎼繍浠诲姟涓嬪彂", url, taskCreatePath, null, "127.0.0.1");
+//            if(doHttpRequest != 0){
+//                throw new CoolException("浠诲姟涓嬪彂澶辫触,code:"+doHttpRequest);
+//            }
+//            wrkMastExecute.setWrkSts(wrkMastExecute.getWrkStsCode());
+//            wrkMastExecute.setModiTime(new Date());
+//            if (!wrkMastExecuteService.updateById(wrkMastExecute)){
+//                throw new CoolException("浠诲姟涓嬪彂鎴愬姛,浣嗘槸鏇存柊鎵ц浠诲姟鐘舵�佸け璐�:"+doHttpRequest);
+//            }
+//        }catch (Exception e){
+//            log.error("鎼繍浠诲姟涓嬪彂===銆嬪紓甯革細"+e.getMessage());
+//        }
+//        return SUCCESS;
+//    }
+//
+    private void getRequestParam(AgvHaiKangTaskCreateParam agvHaiKangTaskCreateParam, WrkMastExecute wrkMastExecute){
+
+//        List<AgvTaskParam> agvTaskParamList = Arrays.asList(
+//                //璧峰浣�
+//                new AgvTaskParam(wrkMastExecute.getRoute()[wrkMastExecute.getNowPosition()]),
+//                //鐩爣浣�
+//                new AgvTaskParam(wrkMastExecute.getRoute()[wrkMastExecute.getEndPosition()]));
+
+        Long wrkNo = wrkMastExecute.getWrkNo();
+        if (wrkMastExecute.getNowPosition()==1){
+            agvHaiKangTaskCreateParam.setTaskCode(wrkMastExecute.getWrkNo().toString());
+        }else {
+            wrkNo = -wrkNo;
+            agvHaiKangTaskCreateParam.setTaskCode(wrkNo.toString());
+        }
+        if (!wrkMastExecute.getSouFloor().equals(wrkMastExecute.getEndFloor())) {
+            agvHaiKangTaskCreateParam.setTaskTyp("F06");
+        } else  {
+            agvHaiKangTaskCreateParam.setTaskTyp("F01");
+        }
+
+//        agvHaiKangTaskCreateParam.setPositionCodePath(agvTaskParamList);
+
+    }
+
+    private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String ip){
+//        if (true){
+//            apiLogService.save(
+//                    namespace,
+//                    url + path,
+//                    appkey,
+//                    ip,
+//                    JSON.toJSONString(JSONObject.toJSONString(requestParam)),
+//                    "",
+//                    true
+//            );
+//            return 0;
+//        }
+        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
+            );
+        }
+
+    }
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index b41e798..7f5c157 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -10,7 +10,7 @@
     enabled: false
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://192.168.4.15:1433;databasename=source
+    url: jdbc:sqlserver://127.0.0.1:1433;databasename=jxgtasrs
     username: sa
     password: sa@123
   mvc:

--
Gitblit v1.9.1