From 07fcaec39d580896b7c4779e48f4c8aa79d22812 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期四, 29 五月 2025 17:49:13 +0800
Subject: [PATCH] 新增PDA并板操作

---
 src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java     |   10 +
 src/main/webapp/views/deviceOperate/errorTaskOperate.html          |  492 +++++++++++++++++++++++++++++++++++++++++++++++++
 src/main/java/com/zy/asrs/controller/BasErrorDeviceController.java |   50 +++++
 src/main/resources/mapper/LocMastMapper.xml                        |   21 ++
 src/main/java/com/zy/asrs/mapper/LocMastMapper.java                |    2 
 src/main/java/com/zy/asrs/entity/param/ErrorDeviceParam.java       |   16 +
 src/main/java/com/zy/asrs/service/LocMastService.java              |    2 
 7 files changed, 593 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/BasErrorDeviceController.java b/src/main/java/com/zy/asrs/controller/BasErrorDeviceController.java
new file mode 100644
index 0000000..8f30756
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/BasErrorDeviceController.java
@@ -0,0 +1,50 @@
+package com.zy.asrs.controller;
+
+import com.core.annotations.ManagerAuth;
+import com.core.common.R;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.param.ErrorDeviceParam;
+import com.zy.asrs.service.LocMastService;
+import com.zy.common.web.BaseController;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+@RestController
+@RequestMapping("error/device")
+public class BasErrorDeviceController extends BaseController {
+
+    @Autowired
+    private LocMastService locMastService;
+
+    @RequestMapping(value = "/task/depthAndShallowness")
+    @ManagerAuth
+    public R taskDepthAndShallowness() {
+        ArrayList<ErrorDeviceParam> errorDeviceParamList = new ArrayList<>();
+        List<LocMast> locMastList1 = locMastService.asrLocMastNotInDetl1();
+
+        for (LocMast locMast : locMastList1){
+            ErrorDeviceParam errorDeviceParam = new ErrorDeviceParam();
+            errorDeviceParam.setErrorM("搴撲綅涓篎浣嗘病鏈夋槑缁�");
+            errorDeviceParam.setCategory("搴撲綅");
+            errorDeviceParam.setEquipmentNo(locMast.getLocNo());
+            errorDeviceParamList.add(errorDeviceParam);
+        }
+
+        List<LocMast> locMastList2 = locMastService.asrLocMastNotInDetl2();
+
+        for (LocMast locMast : locMastList2){
+            ErrorDeviceParam errorDeviceParam = new ErrorDeviceParam();
+            errorDeviceParam.setErrorM("搴撲綅涓篠RQP浣嗘病鏈夊伐浣滄。妗�");
+            errorDeviceParam.setCategory("搴撲綅");
+            errorDeviceParam.setEquipmentNo(locMast.getLocNo());
+            errorDeviceParamList.add(errorDeviceParam);
+        }
+        return R.ok(errorDeviceParamList);
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/ErrorDeviceParam.java b/src/main/java/com/zy/asrs/entity/param/ErrorDeviceParam.java
new file mode 100644
index 0000000..105eace
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/ErrorDeviceParam.java
@@ -0,0 +1,16 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+/**
+ * Created by vincent on 2020/6/28
+ */
+@Data
+public class ErrorDeviceParam {
+
+    private String category = "-";//		瀛楃涓�	绫诲埆
+    private String equipmentNo = "-";//	鏄�	瀛楃涓�	璁惧鍙�
+    private String categoryOther = "-";//		瀛楃涓�	鐩稿叧璁惧绫诲埆
+    private String equipmentNoOther = "-";//		瀛楃涓�	鐩稿叧璁惧鍙�
+    private String errorM = "-";//		瀛楃涓�	寮傚父鎻忚堪
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
index d348646..9350973 100644
--- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -14,6 +14,8 @@
 public interface LocMastMapper extends BaseMapper<LocMast> {
 
     LocMast queryFreeLocMast(@Param("row") Integer row, @Param("locType1") Short locType1);
+    List<LocMast> asrLocMastNotInDetl1();
+    List<LocMast> asrLocMastNotInDetl2();
 
     @Select("select loc_no from asr_loc_mast where 1=1 and loc_sts = 'O' and crn_no = #{crnNo}")
     List<String> queryGroupEmptyStock(Integer crnNo);
diff --git a/src/main/java/com/zy/asrs/service/LocMastService.java b/src/main/java/com/zy/asrs/service/LocMastService.java
index b8d24c5..d5fc919 100644
--- a/src/main/java/com/zy/asrs/service/LocMastService.java
+++ b/src/main/java/com/zy/asrs/service/LocMastService.java
@@ -12,6 +12,8 @@
      * 妫�绱㈠彲鐢ㄥ簱浣�
      */
     LocMast queryFreeLocMast(Integer row, Short locType1);
+    List<LocMast>  asrLocMastNotInDetl1();
+    List<LocMast>  asrLocMastNotInDetl2();
 
     /**
      * 鑾峰彇鍚岀粍璐ф灦鐨勭┖搴撲綅
diff --git a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
index 11c5c07..bebbb96 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -25,6 +25,16 @@
     }
 
     @Override
+    public List<LocMast> asrLocMastNotInDetl1() {
+        return this.baseMapper.asrLocMastNotInDetl1();
+    }
+
+    @Override
+    public List<LocMast>  asrLocMastNotInDetl2() {
+        return this.baseMapper.asrLocMastNotInDetl2();
+    }
+
+    @Override
     public List<String> queryGroupEmptyStock(String sourceLocNo) {
         if (Cools.isEmpty(sourceLocNo)) {
             return null;
diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index 82aa34b..622df9b 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -48,6 +48,27 @@
         order by loc_sts desc ,lev1 asc,bay1 asc
     </select>
 
+<!--    搴撲綅涓篎浣嗘病鏈夋槑缁�-->
+    <select id="asrLocMastNotInDetl1" resultMap="BaseResultMap">
+        SELECT a.*
+        FROM asr_loc_mast AS a
+                 LEFT JOIN asr_loc_detl AS b ON a.loc_no = b.loc_no
+        WHERE a.loc_sts = 'F'
+          AND b.loc_no IS NULL
+    </select>
+
+<!--    搴撲綅涓篠RQP浣嗘病鏈夊伐浣滄。妗�-->
+    <select id="asrLocMastNotInDetl2" resultMap="BaseResultMap">
+        SELECT a.*
+        FROM asr_loc_mast AS a
+        WHERE a.loc_sts IN ('S','R','Q','P')
+          AND NOT EXISTS (
+            SELECT 1
+            FROM asr_wrk_mast AS d
+            WHERE a.loc_no = d.loc_no OR a.loc_no = d.source_loc_no
+          )
+    </select>
+
     <select id="queryShallowLocFMast" resultMap="BaseResultMap">
         select * from asr_loc_mast
         where 1=1
diff --git a/src/main/webapp/views/deviceOperate/errorTaskOperate.html b/src/main/webapp/views/deviceOperate/errorTaskOperate.html
new file mode 100644
index 0000000..faf33d4
--- /dev/null
+++ b/src/main/webapp/views/deviceOperate/errorTaskOperate.html
@@ -0,0 +1,492 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+	<meta charset="UTF-8">
+	<title>纭寲缃愯澶�</title>
+	<link rel="stylesheet" href="../../static/css/element.css">
+	<link rel="stylesheet" href="../../static/css/element-ui.css">
+	<link rel="icon" href="../../static/images/favicon.ico" type="image/x-icon">
+	<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+	<script type="text/javascript" src="../../static/js/common.js"></script>
+	<script type="text/javascript" src="../../static/js/vue.min.js"></script>
+	<script type="text/javascript" src="../../static/js/element.js"></script>
+</head>
+<style scoped>
+
+</style>
+
+<body>
+	<div id="app" style="display: flex;justify-content: center;flex-wrap: wrap;">
+		<div style="width: 100%;">
+			<el-table border ref="singleTable" :data="tableData" highlight-current-row @row-click="handleRowClick"
+				max-height="350" style="width: 100%">
+				<el-table-column property="category" label="绫诲埆">
+				</el-table-column>
+				<el-table-column property="equipmentNo" label="璁惧鍙�">
+				</el-table-column>
+				<el-table-column property="categoryOther" label="鐩稿叧璁惧绫诲埆">
+				</el-table-column>
+				<el-table-column property="equipmentNoOther" label="鐩稿叧璁惧鍙�">
+				</el-table-column>
+				<el-table-column property="errorM" label="寮傚父鎻忚堪">
+				</el-table-column>
+			</el-table>
+		</div>
+
+	</div>
+	<script>
+		var app = new Vue({
+			el: '#app',
+			data: {
+				showLayer: false,
+				valueUpdate: false,
+				selectedOption: null,
+				updateJarNo: null,
+				optionsUpdate: [
+					{ id: '1', value: '1', text: '1鎵�' },
+					{ id: '2', value: '2', text: '2鎵�' },
+					{ id: '3', value: '3', text: '3鎵�' },
+					{ id: '4', value: '4', text: '4鎵�' },
+					{ id: '5', value: '5', text: '5鎵�' },
+					{ id: '6', value: '6', text: '6鎵�' },
+					{ id: '7', value: '7', text: '7鎵�' },
+					{ id: '999', value: '999', text: '鍙栨秷' },
+				],
+				tableData: [],
+				currentRow: null,
+				currentTitle: "鏈�夋嫨璁惧",
+				currentIndex: null,
+				formParam: {
+					rgvNo: null,
+					sourceStaNo: null,
+					sourceRow: 1,
+					sourceBay: 0,
+					sourceLev: 1,
+					staNo: null,
+					row: 1,
+					bay: 0,
+					lev: 1,
+					barcode:null,
+					barcodeType:null,
+					emptyContainer:null
+				},
+				formParamD: {
+					rgvNo: null,
+					sourceStaNo: null,
+					sourceRow: 1,
+					sourceBay: 0,
+					sourceLev: 1,
+					staNo: null,
+					row: 1,
+					bay: 0,
+					lev: 1,
+					barcode:null,
+					barcodeType:null,
+					emptyContainer:null
+				},
+				enableIn: false,
+				enableOut: false,
+				options:[
+					{
+						value:'1',
+						label:'鏄�'
+					},
+					{
+						value:'0',
+						label:'鍚�'
+					}
+				],
+				demo: 'X',
+				rgvMode: 0,
+				itemMast: []
+			},
+			created() {
+				this.init()
+			},
+			watch: {
+				valueUpdate(newVal) {
+					if (newVal) {
+						this.showLayer = true;
+						// 鍙互鍦ㄨ繖閲屾坊鍔犲欢鏃跺叧闂眰鎴栧叾浠栭�昏緫
+					}
+				},
+			},
+			methods: {
+				historicalTasks(){
+					let that = this
+					that.selectedOption = 0;
+					that.valueUpdate = false;
+					if (that.currentIndex != null){
+						$.ajax({
+							url: baseUrl + "/basJarMastLog/historicalTasks/auth",
+							headers: {
+								'token': localStorage.getItem('token')
+							},
+							data:{
+								id: that.tableData[that.currentIndex].jarNo
+							},
+							success: function (res) {
+								that.itemMast = res.data
+								// console.log(that.itemMast)
+							}
+						});
+					}
+
+				},
+				staTova(sta,end){
+					let that = this
+					that.$confirm('姝ゆ搷浣滃瓨鍦ㄩ闄╋紝鏄惁缁х画','鎻愮ず',{
+						confirmButtonText: '纭畾',
+						cancelButtonText: '鍙栨秷',
+						type: 'warning'
+					}).then(()=>{
+						$.ajax({
+							url: baseUrl + "/rgv/rgvDemoTask",
+							headers: {
+								'token': localStorage.getItem('token')
+							},
+							data:{
+								rgvNo : this.formParam.rgvNo,
+								sta : sta,
+								end : end
+							},
+							method: 'Get',
+							success: function (res) {
+								if (res.code == 200) {
+									that.$message({
+										message: res.msg,
+										type: 'success'
+									});
+								} else {
+									that.$message({
+										message: res.msg,
+										type: 'error'
+									});
+								}
+							}
+						});
+					})
+				},
+				init() {
+					this.getTableData()
+
+					setInterval(() => {
+						this.getTableData()
+						// this.demoStatus()
+					}, 1000)
+				},
+				confirmEvent() {
+					var that = this
+					that.valueUpdate = true;
+				},
+				cancelEvent() {
+					var that = this
+					that.valueUpdate = false;
+				},
+				handleSubmit() {
+					if ( this.selectedOption > 998 ){
+						this.selectedOption = 0;
+						this.valueUpdate = false;
+					} else if ( this.selectedOption > 0 ){
+						var that = this
+						if (that.updateJarNo == null){
+							console.log("this.updateJarNo;null;null;null;null;null")
+						} else {
+							$.ajax({
+								url: baseUrl + "/basJar/update/uodate/jar/count/auth",
+								headers: {
+									'token': localStorage.getItem('token')
+								},
+								data: {
+									jarCount: that.selectedOption,
+									jarNo: that.updateJarNo
+								},
+								success: function (res) {
+									if (res.code == 200) {
+										that.$message({
+											message: res.msg,
+											type: 'success'
+										});
+									} else {
+										that.$message({
+											message: res.msg,
+											type: 'error'
+										});
+									}
+								}
+							});
+						}
+						this.selectedOption = 0;
+						this.valueUpdate = false;
+					}
+				},
+				handleRowClick(row, col, event) {
+					var that = this
+					const index = that.tableData.indexOf(row)
+					that.currentRow = row;
+					that.currentIndex = index
+					this.updateJarNo = row.jarNo
+					that.currentTitle = row.jarNo + "鍙风~鍖栫綈"
+					that.formParam.rgvNo = row.rgvNo
+					that.enableIn = row.inEnable == "Y" ? true : false
+					that.enableOut = row.outEnable == "Y" ? true : false
+					this.selectedOption = 0;
+					this.valueUpdate = false;
+
+					$.ajax({
+						url: baseUrl + "/basJarMast/JatId/auth",
+						headers: {
+							'token': localStorage.getItem('token')
+						},
+						data: {
+							id: row.jarNo
+						},
+						success: function (res) {
+							that.itemMast = res.data
+							// console.log(that.itemMast)
+						}
+					});
+				},
+				getTableData() {
+					let that = this;
+					$.ajax({
+						url: baseUrl + "/error/device/task/depthAndShallowness",
+						headers: {
+							'token': localStorage.getItem('token')
+						},
+						data: {},
+						dataType: 'json',
+						contentType: 'application/json;charset=UTF-8',
+						method: 'post',
+						success: function (res) {
+							that.tableData = res.data
+						}
+					});
+				},
+				demoStatus() {
+					let that = this;
+					$.ajax({
+						url: baseUrl + "/rgv/demo/status",
+						data:{
+							rgvNo : this.formParam.rgvNo
+						},
+						headers: {
+							'token': localStorage.getItem('token')
+						},
+						contentType: 'application/json;charset=UTF-8',
+						method: 'get',
+						success: function (res) {
+							// console.log(res)
+							that.demo = res.data.demo
+							that.rgvMode = res.data.rgvMode
+						}
+					});
+				},
+				initiate(){
+					let that = this
+					that.$confirm('姝ゆ搷浣滃瓨鍦ㄩ闄╋紝鏄惁缁х画','鎻愮ず',{
+						confirmButtonText: '纭畾',
+						cancelButtonText: '鍙栨秷',
+						type: 'warning'
+					}).then(()=>{
+						$.ajax({
+							url: baseUrl + "/rgv/operator/put",
+							headers: {
+								'token': localStorage.getItem('token')
+							},
+							data: this.formParam,
+							method: 'POST',
+							success: function (res) {
+								if (res.code == 200) {
+									that.$message({
+										message: res.msg,
+										type: 'success'
+									});
+								} else {
+									that.$message({
+										message: res.msg,
+										type: 'error'
+									});
+								}
+							}
+						});
+					})
+				},
+				initiateD(method){
+					let urlS = "/rgv/operator/single/step/three/put";
+					if (method===1){
+						urlS = "/rgv/operator/single/step/one/put";
+					}else if (method === 2){
+						urlS = "/rgv/operator/single/step/two/put";
+					}else if (method === 3){
+						urlS = "/rgv/operator/single/step/three/put";
+					}
+					let that = this
+					that.$confirm('姝ゆ搷浣滃瓨鍦ㄩ闄╋紝鏄惁缁х画','鎻愮ず',{
+						confirmButtonText: '纭畾',
+						cancelButtonText: '鍙栨秷',
+						type: 'warning'
+					}).then(()=>{
+						$.ajax({
+							url: baseUrl + urlS,
+							headers: {
+								'token': localStorage.getItem('token')
+							},
+							data: this.formParam,
+							method: 'POST',
+							success: function (res) {
+								if (res.code == 200) {
+									that.$message({
+										message: res.msg,
+										type: 'success'
+									});
+								} else {
+									that.$message({
+										message: res.msg,
+										type: 'error'
+									});
+								}
+							}
+						});
+					})
+				},
+				demos(method){
+					let that = this
+					that.$confirm('姝ゆ搷浣滃瓨鍦ㄩ闄╋紝鏄惁缁х画','鎻愮ず',{
+						confirmButtonText: '纭畾',
+						cancelButtonText: '鍙栨秷',
+						type: 'warning'
+					}).then(()=>{
+						$.ajax({
+							url: baseUrl + "/rgv/demo/status/" + method,
+							headers: {
+								'token': localStorage.getItem('token')
+							},
+							data:{
+								rgvNo : this.formParam.rgvNo
+							},
+							method: 'Get',
+							success: function (res) {
+								if (res.code == 200) {
+									that.$message({
+										message: res.msg,
+										type: 'success'
+									});
+								} else {
+									that.$message({
+										message: res.msg,
+										type: 'error'
+									});
+								}
+							}
+						});
+					})
+				},
+				rgvStatus(method){
+					let that = this
+					that.$confirm('姝ゆ搷浣滃瓨鍦ㄩ闄╋紝鏄惁缁х画','鎻愮ず',{
+						confirmButtonText: '纭畾',
+						cancelButtonText: '鍙栨秷',
+						type: 'warning'
+					}).then(()=>{
+						$.ajax({
+							url: baseUrl + "/rgv/demo/status/rgvStatus",
+							headers: {
+								'token': localStorage.getItem('token')
+							},
+							data:{
+								rgvNo : this.formParam.rgvNo,
+								status : Number(method)
+							},
+							method: 'Get',
+							success: function (res) {
+								if (res.code == 200) {
+									that.$message({
+										message: res.msg,
+										type: 'success'
+									});
+								} else {
+									that.$message({
+										message: res.msg,
+										type: 'error'
+									});
+								}
+							}
+						});
+					})
+				},
+				requestOperate(method) {
+					let that = this
+					that.$confirm('姝ゆ搷浣滃瓨鍦ㄩ闄╋紝鏄惁缁х画','鎻愮ず',{
+						confirmButtonText: '纭畾',
+						cancelButtonText: '鍙栨秷',
+						type: 'warning'
+					}).then(()=>{
+						$.ajax({
+							url: baseUrl + "/rgv/operator/" + method,
+							headers: {
+								'token': localStorage.getItem('token')
+							},
+							data: this.formParam,
+							method: 'POST',
+							success: function (res) {
+								if (res.code == 200) {
+									that.$message({
+										message: res.msg,
+										type: 'success'
+									});
+								} else {
+									that.$message({
+										message: res.msg,
+										type: 'error'
+									});
+								}
+							}
+						});
+					})
+
+				},
+				updateEnableInOut(type) {
+					let that = this
+					let param = {}
+					if (type == "in") {
+						param = {
+							inEnable: this.enableIn ? "Y" : "N",
+							rgvNo: this.formParam.rgvNo
+						}
+					} else {
+						param = {
+							outEnable: this.enableOut ? "Y" : "N",
+							rgvNo: this.formParam.rgvNo
+						}
+					}
+
+					$.ajax({
+						url: baseUrl + "/basCrnp/update/auth",
+						headers: {
+							'token': localStorage.getItem('token')
+						},
+						data: param,
+						method: 'POST',
+						success: function (res) {
+							if (res.code == 200) {
+								that.$message({
+									message: res.msg,
+									type: 'success'
+								});
+							} else {
+								that.$message({
+									message: res.msg,
+									type: 'error'
+								});
+							}
+						}
+					});
+				}
+			}
+		})
+	</script>
+</body>
+
+</html>
\ No newline at end of file

--
Gitblit v1.9.1