From 7c75c8b98bb06517bacd809e01ad29ab77b2f2dc Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期三, 14 五月 2025 15:53:10 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/RgvThread.java             |   74 ++++++++++++++
 src/main/webapp/views/taskWrk/taskWrk.html                  |   77 +++++++++++++++
 src/main/java/com/zy/asrs/controller/RgvController.java     |   18 +++
 src/main/webapp/views/commandManage/commandManage.html      |    3 
 src/main/java/com/zy/asrs/controller/TaskWrkController.java |   91 +++++++++++++++++
 src/main/webapp/views/deviceOperate/rgvOperate.html         |    1 
 6 files changed, 256 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/RgvController.java b/src/main/java/com/zy/asrs/controller/RgvController.java
index edea0af..86f0f0f 100644
--- a/src/main/java/com/zy/asrs/controller/RgvController.java
+++ b/src/main/java/com/zy/asrs/controller/RgvController.java
@@ -285,4 +285,22 @@
 
         return R.ok("浠诲姟鐢熸垚鎴愬姛");
     }
+
+    @PostMapping("/run/delRgvTask")//Take  Put  Walk
+    @ManagerAuth(memo = "灏忚溅鍙栬揣")
+    public R rgvDelRgvTask(@RequestParam(defaultValue = "0") Integer rgvNo
+    ) {
+        if (rgvNo==null || rgvNo==0){
+            return R.error("璇烽�夋嫨灏忚溅");
+        }
+
+        try {
+            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
+            rgvThread.setDelRgvTask();
+        } catch (Exception e) {
+            return R.error("浠诲姟鐢熸垚澶辫触"+e.getMessage());
+        }
+
+        return R.ok("浠诲姟鐢熸垚鎴愬姛");
+    }
 }
diff --git a/src/main/java/com/zy/asrs/controller/TaskWrkController.java b/src/main/java/com/zy/asrs/controller/TaskWrkController.java
index ec82562..856ae84 100644
--- a/src/main/java/com/zy/asrs/controller/TaskWrkController.java
+++ b/src/main/java/com/zy/asrs/controller/TaskWrkController.java
@@ -8,10 +8,11 @@
 import com.core.common.DateUtils;
 import com.zy.asrs.domain.enums.TaskStatusType;
 import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.StaDesc;
 import com.zy.asrs.entity.TaskWrk;
-import com.zy.asrs.service.ApiLogService;
-import com.zy.asrs.service.LocMastService;
-import com.zy.asrs.service.TaskWrkService;
+import com.zy.asrs.entity.param.CarryParam;
+import com.zy.asrs.entity.param.TaskCreateParam;
+import com.zy.asrs.service.*;
 import com.core.annotations.ManagerAuth;
 import com.core.common.BaseRes;
 import com.core.common.Cools;
@@ -38,6 +39,12 @@
 
     @Autowired
     private LocMastService locMastService;
+
+    @Autowired
+    private OpenService openService;
+
+    @Autowired
+    private StaDescService staDescService;
 
     @Value("${wms.taskStatusFeedbackPath}")
     private String taskStatusFeedbackPath;
@@ -147,6 +154,84 @@
         return R.ok();
     }
 
+    @RequestMapping(value = "/taskWrk/addTask/auth")
+    @ManagerAuth
+    public R addTaskPoint(CarryParam param){
+        try{
+            param.updateIoTyoe(param.getIoType());//涓埅涓嬪彂  1锛氬嚭搴擄紝2锛氱Щ搴� 3锛氬叆搴�   ====杞崲涓�====>  1锛氬叆搴擄紝2锛氬嚭搴擄紝3锛氱Щ搴�
+            param.updateLocNo();
+            if (Cools.isEmpty(param)){
+                return R.error("鍙傛暟涓虹┖锛�");
+            } else if (Cools.isEmpty(param.getTaskNo())){
+                return R.error("浠诲姟鍙蜂负绌猴紒");
+            } else if (Cools.isEmpty(param.getIoType())){
+                return R.error("浠诲姟绫诲瀷涓虹┖锛�");
+            }
+            if (Cools.isEmpty(param.getStartPoint()) || Cools.isEmpty(param.getTargetPoint())){
+                return R.error("鍒濆鐩爣鎴栬�呯洰鏍囦綅涓虹┖");
+            }
+
+
+            String locNo=null;
+            if(param.getIoType()==1){
+                locNo=param.getTargetPoint();
+            }else{
+                locNo=param.getStartPoint();
+            }
+            LocMast locMast = locMastService.selectByLocNo(locNo);
+            if(Cools.isEmpty(locMast)){
+                return R.error("鍒濆搴撲綅鏃犳硶鎵惧埌");
+            }
+
+            R r = null;
+
+            if(param.getIoType() == 1){
+                //鍏ュ簱浠诲姟鍒涘缓
+                StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
+                        .eq("type_no",1)
+                        .eq("crn_no",locMast.getCrnNo())
+                        .eq("stn_no",param.getStartPoint()));
+                if(Cools.isEmpty(staDesc)){
+                    return R.error("鍏ュ簱璺姴涓嶅瓨鍦�");
+                }
+                r = openService.taskCreate(new TaskCreateParam(param,staDesc.getCrnNo(),staDesc.getCrnStn()));
+
+            }else if(param.getIoType() == 2){
+                //鍑哄簱浠诲姟鍒涘缓
+                StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
+                        .eq("type_no",2)
+                        .eq("crn_no",locMast.getCrnNo())
+                        .eq("stn_no",param.getTargetPoint()));
+                if(Cools.isEmpty(staDesc)){
+                    return R.error("鍑哄簱璺姴涓嶅瓨鍦�");
+                }
+                r = openService.taskCreate(new TaskCreateParam(param,staDesc.getCrnNo(),staDesc.getStnNo()));
+            }else if (param.getIoType() == 3){
+                LocMast locMast2 = locMastService.selectByLocNo(param.getTargetPoint());
+                if(Cools.isEmpty(locMast2)){
+                    return R.error("鐩爣搴撲綅鏃犳硶鎵惧埌");
+                }
+                if (!locMast2.getCrnNo().equals(locMast.getCrnNo())){
+                    return R.error("璧峰搴撲綅涓庣洰鏍囧簱浣嶄笉鍐嶅悓涓�宸烽亾");
+                }
+                //绉诲簱浠诲姟鍒涘缓
+                r = openService.taskCreate(new TaskCreateParam(param,locMast.getCrnNo()));
+            }
+
+            apiLogService.save("wcs鎵嬪姩鐢熸垚Wms浠诲姟"
+                    ,request.getRemoteAddr()+request.getRequestURI()
+                    ,null
+                    ,request.getRemoteAddr()
+                    ,JSON.toJSONString(param)
+                    ,r.toString()
+                    ,true
+            );
+        } catch (Exception e){
+
+        }
+        return R.ok();
+    }
+
     @RequestMapping(value = "/taskWrk/delete/auth")
     @ManagerAuth
     public R delete(@RequestParam String taskNo){
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 5379142..365d9b9 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -66,6 +66,7 @@
     private boolean resetFlag2 = false;
 
     private boolean connectRgv = false;
+    private boolean delRgvTask = false;
 
     public RgvThread(RgvSlave slave) {
         this.slave = slave;
@@ -142,6 +143,11 @@
     private void taskComplete() {
         while (true) {
             try {
+                if (delRgvTask){
+                    writeDelRgvTask();
+                    delRgvTask = false;
+                    continue;
+                }
                 Thread.sleep(100);
                 OperateResultExOne<byte[]> result = siemensNet.Read("DB100.12", (short) 1);
                 boolean[] status = siemensNet.getByteTransform().TransBool(result.Content, 0, 1);
@@ -201,7 +207,6 @@
                             taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection());
                             break;
                         } else {
-                            Thread.sleep(100);
                             TaskProtocol issued = new TaskProtocol(taskProtocol,true);
                             write(issued);
                             taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection());
@@ -286,6 +291,21 @@
                 for (TaskProtocol taskProtocol : allTakeTaskProtocol) {
                     if (taskProtocol.getIsRunning() == 1) {//鍑嗗涓嬪彂
 //                        RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
+                        if (taskProtocol.getTaskStatus()==3){
+                            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, taskProtocol.getTargetPositionStaNoPlcId());
+                            StaProtocol staProtocol = devpThread.getStation().get(taskProtocol.getTargetPositionStaNo());
+                            if (staProtocol == null ) {
+                                continue;
+                            }
+                            // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+                            if (!staProtocol.isAutoing() || staProtocol.isLoading()
+                                    || staProtocol.getWorkNo() != 0
+                            ){
+                                Thread.sleep(500);
+//                                    System.out.println("<鏀捐揣鐩爣绔�>" + taskProtocol.getTargetPositionStaNo() + "<闈炶嚜鍔ㄦ垨鑰呮湁鐗╂垨鑰呭瓨鍦ㄥ伐浣滃彿锛侊紒锛�>");
+//                                continue;
+                            }
+                        }
                         //鍙岃溅
                         if (rgvOtherStatusEnable()) {
                             //鍙︿竴鍙拌溅鏄惁鍏佽姝ゅ彴杞︽墽琛�
@@ -295,7 +315,6 @@
                         }
                         if (taskProtocol.getTargetPosition()<=rgvProtocol.getRgvPos()+50
                                 && taskProtocol.getTargetPosition()>=rgvProtocol.getRgvPos()-50){
-                            Thread.sleep(100);
                             if (taskProtocol.getTaskStatus()==3){
                                 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, taskProtocol.getTargetPositionStaNoPlcId());
                                 StaProtocol staProtocol = devpThread.getStation().get(taskProtocol.getTargetPositionStaNo());
@@ -306,7 +325,8 @@
                                 if (!staProtocol.isAutoing() || staProtocol.isLoading()
                                         || staProtocol.getWorkNo() != 0
                                 ){
-                                    System.out.println("<鏀捐揣鐩爣绔�>" + taskProtocol.getTargetPositionStaNo() + "<闈炶嚜鍔ㄦ垨鑰呮湁鐗╂垨鑰呭瓨鍦ㄥ伐浣滃彿锛侊紒锛�>");
+                                    Thread.sleep(500);
+//                                    System.out.println("<鏀捐揣鐩爣绔�>" + taskProtocol.getTargetPositionStaNo() + "<闈炶嚜鍔ㄦ垨鑰呮湁鐗╂垨鑰呭瓨鍦ㄥ伐浣滃彿锛侊紒锛�>");
                                     continue;
                                 }
                             }
@@ -315,7 +335,6 @@
                             taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection());
                             break;
                         } else {
-                            Thread.sleep(100);
                             TaskProtocol issued = new TaskProtocol(taskProtocol,true);
                             write(issued);
                             break;
@@ -741,6 +760,53 @@
         }
     }
 
+    private boolean writeDelRgvTask() throws InterruptedException {
+//
+        OperateResult result = siemensNet.Write("DB100.12.0", false);
+        OperateResult result0 = siemensNet.Write("DB100.0", (int) 0);
+        OperateResult result1 = siemensNet.Write("DB100.4", (short) 0);
+        OperateResult result2 = siemensNet.Write("DB100.6", (int) 0);
+        OperateResult result3 = siemensNet.Write("DB100.10", (short) 0); // 鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級    true:宸�   false:鍙�
+
+        try {
+            // 鏃ュ織璁板綍
+            BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class);
+            BasRgvOpt basRgvOpt = new BasRgvOpt(
+                    0,
+                    0,
+                    slave.getId(),
+                    new Date(),
+                    String.valueOf(0),
+                    null,
+                    null,
+                    null,
+                    result.IsSuccess ? 1 : 0,
+                    null,
+                    new Date(),
+                    null
+            );
+            bean.insert(basRgvOpt);
+        } catch (Exception ignore) {
+        }
+
+        if (result != null && result.IsSuccess) {
+            Thread.sleep(200);
+            this.readStatus();
+            log.info("RGV 鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON("null"));
+            OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON("null")));
+            return true;
+        } else {
+            OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戝啓鍏GV plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+            log.error("鍐欏叆RGV plc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+            return false;
+        }
+    }
+
+
+    public void setDelRgvTask() {
+        delRgvTask = true;
+    }
+
     @Override
     public void close() {
         siemensNet.ConnectClose();
diff --git a/src/main/webapp/views/commandManage/commandManage.html b/src/main/webapp/views/commandManage/commandManage.html
index 3dae8d3..9fdd32a 100644
--- a/src/main/webapp/views/commandManage/commandManage.html
+++ b/src/main/webapp/views/commandManage/commandManage.html
@@ -178,6 +178,9 @@
 				}
 				this.getTableData()
 			},
+			addTask() {
+				this.addTaskFormVisible = true
+			},
 			exportTable() {
 				this.tableSearchParam = {
 					task_no: null,
diff --git a/src/main/webapp/views/deviceOperate/rgvOperate.html b/src/main/webapp/views/deviceOperate/rgvOperate.html
index be2464d..a873e63 100644
--- a/src/main/webapp/views/deviceOperate/rgvOperate.html
+++ b/src/main/webapp/views/deviceOperate/rgvOperate.html
@@ -57,6 +57,7 @@
 							<el-button @click="requestOperate('TakeAndPut')" type="primary">鍙栨斁璐�</el-button>
 							<el-button @click="requestOperate('walk')" type="warning">琛岃蛋</el-button>
 							<el-button @click="requestOperate('del')" type="warning">浠诲姟娓呯┖</el-button>
+							<el-button @click="requestOperate('delRgvTask')" type="warning">灏忚溅寮哄埗澶嶄綅锛堟湁浠诲姟鎴栬�呰繍琛屾椂涓嶈鎿嶄綔锛�</el-button>
 						</div>
 					</div>
 				</el-card>
diff --git a/src/main/webapp/views/taskWrk/taskWrk.html b/src/main/webapp/views/taskWrk/taskWrk.html
index 0dc3af6..a823d63 100644
--- a/src/main/webapp/views/taskWrk/taskWrk.html
+++ b/src/main/webapp/views/taskWrk/taskWrk.html
@@ -44,6 +44,7 @@
                 <el-form-item>
                     <el-button type="primary" @click="getTableData">鏌ヨ</el-button>
                     <el-button type="primary" @click="resetParam">閲嶇疆</el-button>
+                    <el-button type="primary" @click="addTask">鎵嬪姩娣诲姞浠诲姟</el-button>
                 </el-form-item>
             </el-form>
             <el-table ref="singleTable" :data="tableData" style="width: 100%;">
@@ -113,6 +114,36 @@
         </div>
     </el-dialog>
 
+    <el-dialog :title="addTaskFormTitle" :visible.sync="addTaskFormVisible">
+        <el-form :model="addTaskForm">
+            <el-form-item label="浠诲姟鍙�" :label-width="addTaskFormLabelWidth">
+                <el-input v-model="addTaskForm.taskNo" autocomplete="off"></el-input>
+            </el-form-item>
+            <el-form-item label="浠诲姟绫诲瀷=銆�1锛氬嚭搴撱��2锛氱Щ搴撱��3锛氬叆搴�" :label-width="200">
+                <el-input v-model="addTaskForm.ioType" autocomplete="off"></el-input>
+            </el-form-item>
+            <el-form-item label="浼樺厛绾�" :label-width="addTaskFormLabelWidth">
+                <el-input v-model="addTaskForm.taskPriority" autocomplete="off"></el-input>
+            </el-form-item>
+            <el-form-item label="瀹瑰櫒缂栫爜" :label-width="addTaskFormLabelWidth">
+                <el-input v-model="addTaskForm.barcode" autocomplete="off"></el-input>
+            </el-form-item>
+            <el-form-item label="璧风偣浣嶇疆" :label-width="addTaskFormLabelWidth">
+                <el-input v-model="addTaskForm.startPoint" autocomplete="off"></el-input>
+            </el-form-item>
+            <el-form-item label="缁堢偣浣嶇疆" :label-width="addTaskFormLabelWidth">
+                <el-input v-model="addTaskForm.targetPoint" autocomplete="off"></el-input>
+            </el-form-item>
+            <el-form-item label="澶囨敞" :label-width="addTaskFormLabelWidth">
+                <el-input v-model="addTaskForm.memo" autocomplete="off"></el-input>
+            </el-form-item>
+        </el-form>
+        <div slot="footer" class="dialog-footer">
+            <el-button @click="addTaskFormVisible = false">鍙� 娑�</el-button>
+            <el-button type="primary" @click="addTaskFormConfirm">纭� 瀹�</el-button>
+        </div>
+    </el-dialog>
+
 </div>
 <script>
     var $layui = layui.config({
@@ -135,9 +166,21 @@
                 datetime: null,
             },
             taskWrkFormVisible: false,
+            addTaskFormVisible: false,
             taskWrkForm: {},
+            addTaskForm: {
+                taskNo:"9001",
+                ioType:"0",
+                taskPriority:1,
+                barcode:"10000001",
+                startPoint:"1000",
+                targetPoint:"F-F01-01-01-01",
+                memo:"cs"
+            },
             taskWrkFormLabelWidth: '80px',
-            taskWrkFormTitle: ''
+            addTaskFormLabelWidth: '80px',
+            taskWrkFormTitle: '',
+            addTaskFormTitle: '鎵嬪姩娣诲姞浠诲姟'
         },
         created() {
             this.init()
@@ -205,6 +248,9 @@
                     wrk_no: null
                 }
                 this.getTableData()
+            },
+            addTask() {
+                this.addTaskFormVisible = true
             },
             handleCommand(command, row) {
                 switch (command) {
@@ -440,6 +486,35 @@
                         }
                     }
                 });
+            },
+            addTaskFormConfirm() {
+                //淇敼鎸囧畾浠诲姟鏁版嵁
+                let that = this
+                $.ajax({
+                    url: baseUrl + "/taskWrk/addTask/auth",
+                    headers: {
+                        'token': localStorage.getItem('token')
+                    },
+                    data: this.addTaskForm,
+                    method: 'POST',
+                    success: function (res) {
+                        if (res.code == 200) {
+                            that.addTaskFormVisible = false
+                            that.$message({
+                                message: "鏇存柊鎴愬姛",
+                                type: 'success'
+                            });
+                            that.getTableData()
+                        } else if (res.code === 403) {
+                            top.location.href = baseUrl + "/";
+                        } else {
+                            that.$message({
+                                message: res.msg,
+                                type: 'error'
+                            });
+                        }
+                    }
+                });
             }
         }
     })

--
Gitblit v1.9.1