From 4d6bae90f7a2075a5522c7eb0213dbdf5e37a7ff Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期三, 12 六月 2024 10:13:25 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/CreateInTaskParam.java         |   20 +++++
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/CreateOutTaskParam.java        |    3 
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/task/ShuttlePowerEarlyWarning.java          |  117 +++++++++++++++++++++++++++++
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/CreateManualTakeTaskParam.java |    3 
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java              |   76 ++++++++++++++++++
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/CreateMoveTaskParam.java       |    3 
 6 files changed, 219 insertions(+), 3 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java
index 0aab8fc..3e9339b 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.zy.asrs.framework.common.R;
 import com.zy.asrs.framework.common.SnowflakeIdWorker;
+import com.zy.asrs.wcs.core.domain.param.CreateInTaskParam;
 import com.zy.asrs.wcs.core.domain.param.CreateManualTakeTaskParam;
 import com.zy.asrs.wcs.core.domain.param.CreateMoveTaskParam;
 import com.zy.asrs.wcs.core.domain.param.CreateOutTaskParam;
@@ -49,6 +50,57 @@
     @Autowired
     private LocService locService;
 
+    //鐢熸垚鍏ュ簱浠诲姟
+    @PostMapping("/createInTask")
+    public R createInTask(@RequestBody CreateInTaskParam param) {
+        //鑾峰彇鍏ュ簱浠诲姟绫诲瀷
+        TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>()
+                .eq(TaskCtg::getFlag, "IN")
+                .eq(TaskCtg::getStatus, 1));
+        if (taskCtg == null) {
+            return R.error("浠诲姟绫诲瀷寮傚父");
+        }
+
+        Loc loc = locService.selectByLocNo(param.getDestLoc());
+        if (loc == null) {
+            return R.error("搴撲綅鍙蜂笉瀛樺湪");
+        }
+
+        if (!loc.getLocStsFlag().equals("O")) {
+            return R.error("搴撲綅鐘舵�佷笉婊¤冻鍏ュ簱鏉′欢");
+        }
+
+        //浼樺厛绾�
+        Integer priority = 10;
+        if (param.getPriority() != null) {
+            priority = param.getPriority();
+        }
+
+        Task task = new Task();
+        task.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
+        task.setTaskNo(String.valueOf(Utils.getTaskNo("IN")));
+        task.setTaskSts(TaskStsType.NEW_INBOUND.sts);
+        task.setTaskCtg(taskCtg.getId());
+        task.setPriority(priority);
+        task.setOriginSite(param.getOriginSite());
+        task.setOriginLoc(null);
+        task.setDestSite(param.getDestSite());
+        task.setDestLoc(param.getDestLoc());
+        task.setIoTime(new Date());
+        task.setStartTime(new Date());
+        task.setStatus(1);
+        task.setMemo("");
+        task.setShuttleNo(null);//绛夊緟涓荤嚎绋嬪垎閰嶅皬杞�
+        task.setRecordLoc("Y");//璁板綍搴撳瓨淇℃伅
+        task.setHostId(1L);//涓存椂鎺у埗鍙厑璁竓ost涓�1
+
+        boolean result = taskService.save(task);
+        if (!result) {
+            return R.error("鐢熸垚鍏ュ簱浠诲姟澶辫触锛�");
+        }
+        return R.ok();
+    }
+
     //鐢熸垚鍑哄簱浠诲姟
     @PostMapping("/createOutTask")
     public R createOutTask(@RequestBody CreateOutTaskParam param) {
@@ -69,12 +121,18 @@
             return R.error("搴撲綅鐘舵�佷笉婊¤冻鍑哄簱鏉′欢");
         }
 
+        //浼樺厛绾�
+        Integer priority = 10;
+        if (param.getPriority() != null) {
+            priority = param.getPriority();
+        }
+
         Task task = new Task();
         task.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
         task.setTaskNo(String.valueOf(Utils.getTaskNo("OUT")));
         task.setTaskSts(TaskStsType.NEW_OUTBOUND.sts);
         task.setTaskCtg(taskCtg.getId());
-        task.setPriority(10);
+        task.setPriority(priority);
         task.setOriginSite(param.getOriginSite());
         task.setOriginLoc(param.getOriginLoc());
         task.setDestSite(param.getDestSite());
@@ -105,12 +163,18 @@
             return R.error("浠诲姟绫诲瀷寮傚父");
         }
 
+        //浼樺厛绾�
+        Integer priority = 10;
+        if (param.getPriority() != null) {
+            priority = param.getPriority();
+        }
+
         Task task = new Task();
         task.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
         task.setTaskNo(String.valueOf(Utils.getTaskNo("OUT")));
         task.setTaskSts(TaskStsType.NEW_MANUAL.sts);
         task.setTaskCtg(taskCtg.getId());
-        task.setPriority(10);
+        task.setPriority(priority);
         task.setOriginSite(null);
         task.setOriginLoc(param.getOriginLoc());//婧愬簱浣�
         task.setDestSite(null);
@@ -158,12 +222,18 @@
             return R.error("绌挎杞﹀拰鐩爣浣嶇疆涓嶅湪鍚屼竴妤煎眰");
         }
 
+        //浼樺厛绾�
+        Integer priority = 10;
+        if (param.getPriority() != null) {
+            priority = param.getPriority();
+        }
+
         Task task = new Task();
         task.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
         task.setTaskNo(String.valueOf(Utils.getTaskNo("OUT")));
         task.setTaskSts(TaskStsType.NEW_MOVE.sts);
         task.setTaskCtg(taskCtg.getId());
-        task.setPriority(10);
+        task.setPriority(priority);
         task.setOriginSite(null);
         task.setOriginLoc(null);
         task.setDestSite(param.getDestSite());
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/CreateInTaskParam.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/CreateInTaskParam.java
new file mode 100644
index 0000000..19ed5ad
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/CreateInTaskParam.java
@@ -0,0 +1,20 @@
+package com.zy.asrs.wcs.core.domain.param;
+
+import lombok.Data;
+
+@Data
+public class CreateInTaskParam {
+
+    //鍏ュ簱搴撲綅
+    private String destLoc;
+
+    //婧愮珯
+    private String originSite;
+
+    //鐩爣绔�
+    private String destSite;
+
+    //浼樺厛绾�
+    private Integer priority;
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/CreateManualTakeTaskParam.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/CreateManualTakeTaskParam.java
index 96fc209..01d7338 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/CreateManualTakeTaskParam.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/CreateManualTakeTaskParam.java
@@ -14,4 +14,7 @@
     //鏄惁璁板綍搴撳瓨淇℃伅
     private Boolean record;
 
+    //浼樺厛绾�
+    private Integer priority;
+
 }
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/CreateMoveTaskParam.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/CreateMoveTaskParam.java
index 76c45cc..e3d609b 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/CreateMoveTaskParam.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/CreateMoveTaskParam.java
@@ -11,4 +11,7 @@
     //鐩爣搴撲綅
     private String destSite;
 
+    //浼樺厛绾�
+    private Integer priority;
+
 }
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/CreateOutTaskParam.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/CreateOutTaskParam.java
index 49285ab..d7d86f0 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/CreateOutTaskParam.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/CreateOutTaskParam.java
@@ -14,4 +14,7 @@
     //鐩爣绔�
     private String destSite;
 
+    //浼樺厛绾�
+    private Integer priority;
+
 }
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/task/ShuttlePowerEarlyWarning.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/task/ShuttlePowerEarlyWarning.java
new file mode 100644
index 0000000..ffb3a37
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/task/ShuttlePowerEarlyWarning.java
@@ -0,0 +1,117 @@
+package com.zy.asrs.wcs.core.task;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.asrs.common.utils.HttpHandler;
+import com.zy.asrs.wcs.core.model.enums.DeviceCtgType;
+import com.zy.asrs.wcs.rcs.cache.SlaveConnection;
+import com.zy.asrs.wcs.rcs.entity.Device;
+import com.zy.asrs.wcs.rcs.model.enums.SlaveType;
+import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol;
+import com.zy.asrs.wcs.rcs.service.DeviceService;
+import com.zy.asrs.wcs.rcs.thread.ShuttleThread;
+import com.zy.asrs.wcs.system.entity.Dict;
+import com.zy.asrs.wcs.system.service.DictService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 灏忚溅鐢甸噺棰勮妫�娴� => 寮哄埗棰勮
+ */
+@Component
+@Slf4j
+public class ShuttlePowerEarlyWarning {
+
+    @Autowired
+    private DictService dictService;
+    @Autowired
+    private DeviceService deviceService;
+
+    /**
+     * 灏忚溅鐢甸噺棰勮妫�娴� => 寮哄埗棰勮
+     * 姣�30鍒嗛挓鎵弿涓�娆�
+     */
+    @Scheduled(cron = "0 30 * * * ? ")
+    public synchronized void shuttlePowerEarlyWarning() {
+        Dict dict = dictService.getOne(new LambdaQueryWrapper<Dict>().eq(Dict::getFlag, "dingdingReportUrl"));
+        if (dict == null) {
+            return;
+        }
+
+        if (dict.getStatus() == 0) {
+            return;//閫氱煡绂佺敤
+        }
+
+        //灏忚溅鐢甸噺棰勮闃堝��
+        int shuttlePowerEarlyValue = 20;//榛樿20
+        Dict shuttlePowerEarlyConfig = dictService.getOne(new LambdaQueryWrapper<Dict>().eq(Dict::getFlag, "shuttlePowerEarlyValue"));
+        if (shuttlePowerEarlyConfig != null) {
+            shuttlePowerEarlyValue = Integer.parseInt(shuttlePowerEarlyConfig.getValue());
+        }
+
+        String title = "銆愰�氱煡銆戝洓鍚戝簱";
+        Dict shuttlePowerEarlyTitle = dictService.getOne(new LambdaQueryWrapper<Dict>().eq(Dict::getFlag, "shuttlePowerEarlyTitle"));
+        if (shuttlePowerEarlyTitle != null) {
+            title = shuttlePowerEarlyTitle.getValue();
+        }
+        StringBuffer buffer = new StringBuffer();
+        buffer.append(title);
+        buffer.append("\n");//娑堟伅鏍囬
+
+        boolean hasReport = false;//鏄惁鏈夐渶瑕佹姤鍛婄殑鏁版嵁
+        List<Device> list = deviceService.list(new LambdaQueryWrapper<Device>()
+                .eq(Device::getDeviceType, DeviceCtgType.SHUTTLE.val())
+                .eq(Device::getStatus, 1));
+        for (Device device : list) {
+            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getId().intValue());
+            if (shuttleThread == null) {
+                continue;
+            }
+
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                continue;
+            }
+
+            if (shuttleProtocol.getHasCharge()) {
+                continue;//鍏呯數涓紝鏃犻渶閫氱煡
+            }
+
+            if (Double.parseDouble(shuttleProtocol.getBatteryPower()) < shuttlePowerEarlyValue) {
+                buffer.append(shuttleProtocol.getShuttleNo()).append("鍙峰皬杞︼紝鐢甸噺").append(shuttleProtocol.getBatteryPower()).append("锛岃娉ㄦ剰銆俓n");
+                hasReport = true;
+            }
+        }
+
+        if (hasReport) {
+            try {
+                HashMap<String, Object> param = new HashMap<>();
+                HashMap<String, Object> data = new HashMap<>();
+                data.put("content", buffer.toString());
+                param.put("msgtype", "text");
+                param.put("text", data);
+                String response = new HttpHandler.Builder()
+                        .setUri(dict.getValue())
+                        .setJson(JSON.toJSONString(param))
+                        .setHttps(true)
+                        .build()
+                        .doPost();
+                JSONObject jsonObject = JSON.parseObject(response);
+                if (jsonObject.get("errmsg").equals("ok")) {
+                    return;//鍙戦�佹垚鍔�
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
+    }
+
+}

--
Gitblit v1.9.1