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