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