From d3e1346d52806f00d21eba23cabf9cfa4f61d7d4 Mon Sep 17 00:00:00 2001
From: hwh <332078369@qq.com>
Date: 星期四, 05 九月 2024 16:34:00 +0800
Subject: [PATCH] 测试页面,修复bug

---
 Web/src/views/device/deviceInfo/index.vue                       |   13 ++++--
 Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs |   10 +++--
 Web/src/views/device/deviceMonitor/index.vue                    |   49 ++++++++++--------------
 Admin.NET/WCS.Application/PLC/PLCUtil.cs                        |    5 +-
 Web/src/views/device/alarmManage/index.vue                      |    6 +-
 Admin.NET/WCS.Application/Service/WcsPlc/WcsPlcService.cs       |   11 -----
 Web/src/api/wcs/wcsPlc.ts                                       |    9 ++++
 Admin.NET/WCS.Application/Hub/PlcHub.cs                         |    2 
 8 files changed, 52 insertions(+), 53 deletions(-)

diff --git a/Admin.NET/WCS.Application/Hub/PlcHub.cs b/Admin.NET/WCS.Application/Hub/PlcHub.cs
index f85da61..de41681 100644
--- a/Admin.NET/WCS.Application/Hub/PlcHub.cs
+++ b/Admin.NET/WCS.Application/Hub/PlcHub.cs
@@ -55,7 +55,7 @@
         //鑷埛鏂�
         if (context.BoRefresh.HasValue)
             PLCTaskAction.boRefresh = context.BoRefresh.Value;
-        await _plcHubContext.Clients.All.UpdateService(context);
+        await _plcHubContext.Clients.All.UpdateService(new PLCServiceModel() { BoRunningState = PLCTaskAction.boRunningState, BoRefresh = PLCTaskAction.boRefresh, BoOffline = PLCTaskAction.boOffline });
     }
 }
 public class PLCServiceModel
diff --git a/Admin.NET/WCS.Application/PLC/PLCUtil.cs b/Admin.NET/WCS.Application/PLC/PLCUtil.cs
index 481080c..27e6c55 100644
--- a/Admin.NET/WCS.Application/PLC/PLCUtil.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCUtil.cs
@@ -42,8 +42,9 @@
     /// <param name="DbNumber">DB鍖烘寚瀹氬��</param>
     /// <param name="PosType">瀛楃绫诲瀷</param>
     /// <param name="Pos">鍋忕Щ閲�/鍦板潃</param>
+    /// <param name="Length">闀垮害锛堝瓧绗︿覆锛�</param>
     /// <returns></returns>
-    public (IoTClient.Result, dynamic value) GetPlcDBValue(PLCDataTypeEnum PosType, string DbNumber, string Pos)
+    public (IoTClient.Result, dynamic value) GetPlcDBValue(PLCDataTypeEnum PosType, string DbNumber, string Pos, int? Length = 0)
     {
         lock (OLock)
         {
@@ -86,7 +87,7 @@
                     result = _client.ReadDouble(address);
                     break;
                 case PLCDataTypeEnum.String:
-                    result = _client.ReadString(address);
+                    result = _client.ReadString(address, Convert.ToUInt16(Length));
                     break;
                 default:
                     result = new IoTClient.Result<object>();
diff --git a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
index 7b91e7e..165dd6c 100644
--- a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
+++ b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
@@ -219,7 +219,9 @@
                     //璇诲彇plc鐨勫��
                     var modConn = PLCTaskAction.listPlcConn.FirstOrDefault(s => s != null && s.PlcId == modDevice.PlcId);
                     if (modConn == null)
-                        break;
+                    {
+                        continue;
+                    }
                     try
                     {
                         var listPosition = await _wcsDeviceRep.Context.Queryable<WcsPosition>().Where(s => s.DeviceId == modDevice.Id).ToListAsync();
@@ -229,7 +231,7 @@
                         modDevice.Wcs = Convert.ToString(wcs);
                         //浠诲姟鍙�
                         var modPositionTask = listPosition.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
-                        (result, var taskNo) = modConn.GetPlcDBValue(modPositionTask.PosType, modDevice.DbNumber, modPositionTask.PlcPos);
+                        (result, var taskNo) = modConn.GetPlcDBValue(modPositionTask.PosType, modDevice.DbNumber, modPositionTask.PlcPos, modPositionTask.StringLength);
                         modDevice.TaskNo = Convert.ToString(taskNo);
                         //浠诲姟绫诲瀷
                         var modPositionTaskType = listPosition.FirstOrDefault(s => s.Text == "浠诲姟绫诲瀷");
@@ -245,7 +247,7 @@
                         modDevice.EndLocatNo = Convert.ToString(endLocatNo);
                         //鎵樼洏鐮�
                         var modPositionPalletNo = listPosition.FirstOrDefault(s => s.Text == "鎵樼洏鐮�");
-                        (result, var palletNo) = modConn.GetPlcDBValue(modPositionPalletNo.PosType, modDevice.DbNumber, modPositionPalletNo.PlcPos);
+                        (result, var palletNo) = modConn.GetPlcDBValue(modPositionPalletNo.PosType, modDevice.DbNumber, modPositionPalletNo.PlcPos, modPositionPalletNo.StringLength);
                         modDevice.PalletNo = Convert.ToString(palletNo);
                     }
                     catch (Exception)
@@ -288,7 +290,7 @@
                 .Select(u => new
                 {
                     id = u.Id,
-                    name = u.Text                    
+                    name = u.Text
                 }
                 ).ToListAsync();
     }
diff --git a/Admin.NET/WCS.Application/Service/WcsPlc/WcsPlcService.cs b/Admin.NET/WCS.Application/Service/WcsPlc/WcsPlcService.cs
index 4480c14..e4fce43 100644
--- a/Admin.NET/WCS.Application/Service/WcsPlc/WcsPlcService.cs
+++ b/Admin.NET/WCS.Application/Service/WcsPlc/WcsPlcService.cs
@@ -106,7 +106,7 @@
     [DisplayName("鑾峰彇PLC鍒楄〃")]
     public async Task<List<WcsPlcOutput>> List([FromQuery] PageWcsPlcInput input)
     {
-        return await _wcsPlcRep.AsQueryable().Select<WcsPlcOutput>().ToListAsync();
+        return await _wcsPlcRep.AsQueryable().WhereIF(input.Type != null, s => s.Type == input.Type).Select<WcsPlcOutput>().ToListAsync();
     }
 
     /// <summary>
@@ -147,15 +147,6 @@
     [DisplayName("鑾峰彇浣嶇疆淇℃伅")]
     public List<PlcPositionInfo> ListPosition()
     {
-        //娴嬭瘯鐢�
-        //return new List<PlcPositionInfo>()
-        //{
-        //    new PlcPositionInfo(){ Type=PLCTypeEnum.ConveyorLine, StationNum="147", BoHaveItem=true },
-        //    new PlcPositionInfo(){ Type=PLCTypeEnum.ConveyorLine, StationNum="143", BoHaveItem=true },
-
-        //    new PlcPositionInfo(){ Type=PLCTypeEnum.StackingMachine, StationNum="002", BoxHeight=30 },
-        //};
-
         var list = PLCTaskAction.listPositionInfo.ToList();
         return list;
     }
diff --git a/Web/src/api/wcs/wcsPlc.ts b/Web/src/api/wcs/wcsPlc.ts
index 9c8386a..cfccaff 100644
--- a/Web/src/api/wcs/wcsPlc.ts
+++ b/Web/src/api/wcs/wcsPlc.ts
@@ -5,6 +5,7 @@
   UpdateWcsPlc = '/api/wcsPlc/update',
   PageWcsPlc = '/api/wcsPlc/page',
   DetailWcsPlc = '/api/wcsPlc/detail',
+  ListWcsPlc = '/api/wcsPlc/list',
   ListStatus = '/api/wcsPlc/ListStatus',
   ListPosition = 'api/wcsPlc/ListPosition'
 }
@@ -48,7 +49,13 @@
 			method: 'get',
 			data: { id },
 		});
-
+// 鍒嗛〉鏌ヨPLC
+export const listWcsPlc = (params?: any) => 
+	request({
+			url: Api.ListWcsPlc,
+			method: 'get',
+			data: params,
+		});
 
 // 鑾峰彇PLC杩炴帴鐘舵�佸拰鏈嶅姟鐘舵��
 export const listStatus = () => 
diff --git a/Web/src/views/device/alarmManage/index.vue b/Web/src/views/device/alarmManage/index.vue
index a2e24b7..4013f0a 100644
--- a/Web/src/views/device/alarmManage/index.vue
+++ b/Web/src/views/device/alarmManage/index.vue
@@ -1961,19 +1961,19 @@
 //鍒囨崲灞傚钩闈�
 function floorTogglePlain(buttonNumber) {
 	if (buttonNumber === 1) {
-		isPlain1.value = !isPlain1.value;
+		isPlain1.value = false;
 		isPlain2.value = true;
 		isPlain3.value = true;
 		//鍒囨崲杈撻�佺嚎鏁版嵁
 		cellsData.value = cellsDataOne.value;
 	} else if (buttonNumber === 2) {
-		isPlain2.value = !isPlain2.value;
+		isPlain2.value = false;
 		isPlain1.value = true;
 		isPlain3.value = true;
 		//鍒囨崲杈撻�佺嚎鏁版嵁
 		cellsData.value = cellsDataTwo.value;
 	} else if (buttonNumber === 3) {
-		isPlain3.value = !isPlain3.value;
+		isPlain3.value = false;
 		isPlain1.value = true;
 		isPlain2.value = true;
 		//鍒囨崲杈撻�佺嚎鏁版嵁
diff --git a/Web/src/views/device/deviceInfo/index.vue b/Web/src/views/device/deviceInfo/index.vue
index 9101e17..9d46727 100644
--- a/Web/src/views/device/deviceInfo/index.vue
+++ b/Web/src/views/device/deviceInfo/index.vue
@@ -37,9 +37,12 @@
 			</el-col>
 			<el-col :span="21">
 				<div class="card-page">
-					<el-button type="primary" :plain="floorStates.isPlain1" @click="floorTogglePlain(1)">涓�灞傚钩闈�</el-button>
-					<el-button type="primary" :plain="floorStates.isPlain2" @click="floorTogglePlain(2)">浜屽眰骞抽潰</el-button>
-					<el-button type="primary" :plain="floorStates.isPlain3" @click="floorTogglePlain(3)">涓夊眰骞抽潰</el-button>
+					<el-button type="primary" :plain="floorStates.isPlain1"
+						@click="floorTogglePlain(1)">涓�灞傚钩闈�</el-button>
+					<el-button type="primary" :plain="floorStates.isPlain2"
+						@click="floorTogglePlain(2)">浜屽眰骞抽潰</el-button>
+					<el-button type="primary" :plain="floorStates.isPlain3"
+						@click="floorTogglePlain(3)">涓夊眰骞抽潰</el-button>
 				</div>
 				<div style="margin: 40px; height: 50%;">
 					<div class="grid-container-line">
@@ -148,7 +151,9 @@
 	});
 });
 const handleSwitchChange = (field: string, value: boolean) => {
-	signalR.invoke('UpdateService', state.value);
+	const param = { [field]: value };
+	debugger;
+	signalR.invoke('UpdateService', param);
 };
 
 // 鏇存柊杈撻�佺嚎鏁版嵁鐨勯�氱敤鍑芥暟
diff --git a/Web/src/views/device/deviceMonitor/index.vue b/Web/src/views/device/deviceMonitor/index.vue
index 66a81a1..8865fab 100644
--- a/Web/src/views/device/deviceMonitor/index.vue
+++ b/Web/src/views/device/deviceMonitor/index.vue
@@ -4,14 +4,12 @@
             <el-card class="box-card">
                 <div slot="header" class="linefix">
                     <span>杈撻�佺嚎</span>
-                    <div
-                        :class="['lineStatus', { 'device-status-0': stationValue.status === true }, { 'device-status-1': stationValue.status === false }]">
-                    </div>
+                    <div :class="['lineStatus', stationValue.status ? 'device-status-0' : 'device-status-1']"></div>
                 </div>
                 <div class="choosefix">
                     <el-select v-model="lineValue" placeholder="璇烽�夋嫨" @change="handleLineChange('item', $event)">
-                        <el-option v-for="item in lineOptions" :key="item.value" :label="item.label"
-                            :value="item.value"></el-option>
+                        <el-option v-for="item in lineOptions" :key="item.id" :label="item.text"
+                            :value="item.id"></el-option>
                     </el-select>
                     <el-select v-model="stationValue" placeholder="璇烽�夋嫨" style="margin-top: 10px;"
                         value-key="stationNum">
@@ -27,8 +25,9 @@
                         </el-form-item>
                         <el-form-item label="浠诲姟绫诲瀷">
                             <el-select clearable v-model="stationValue.taskType" placeholder="璇烽�夋嫨浠诲姟绫诲瀷">
-								<el-option v-for="(item,index) in dl('TaskTypeEnum')" :key="index" :value="Number(item.value)" :label="`${item.name} [${item.value}]`"></el-option>
-							</el-select>
+                                <el-option v-for="(item, index) in dl('TaskTypeEnum')" :key="index"
+                                    :value="Number(item.value)" :label="`${item.name} [${item.value}]`"></el-option>
+                            </el-select>
                         </el-form-item>
                         <el-form-item label="璧峰宸ヤ綅">
                             <el-input v-model="stationValue.startLocatNo"></el-input>
@@ -77,8 +76,7 @@
                             <el-form-item label="浠诲姟绫诲瀷">
                                 <el-select clearable="" v-model="deviceInfo.taskType" placeholder="璇烽�夋嫨鐘舵��">
                                     <el-option v-for="(item, index) in dl('TaskTypeEnum')" :key="index"
-                                        :value="Number(item.value)"
-                                        :label="`${item.name} [${item.value}] `" />
+                                        :value="Number(item.value)" :label="`${item.name} [${item.value}] `" />
                                 </el-select>
                             </el-form-item>
                             <el-form-item label="璧峰宸ヤ綅">
@@ -116,17 +114,17 @@
 import { ref, reactive } from 'vue';
 import { listWcsDevice } from '/@/api/wcs/wcsDevice';
 import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
-import { getDictLabelByVal as dv } from '/@/utils/dict-utils';
+import { listWcsPlc } from '/@/api/wcs/wcsPlc';
 
 const stations = ref<any>([]);
 const listStationsData = ref<any>([]);
 const listStackingMachineData = ref<any>([]);
-
+const lineOptions = ref<any>([]);
 const lineValue = ref(1);
 const stationValue = ref<any>({
     taskNo: '',
     taskType: '',
-    startLocatNo:'',
+    startLocatNo: '',
     endLocatNo: '',
     plc: '',
     wcs: '',
@@ -135,16 +133,17 @@
 
 // 鏌ヨ鎿嶄綔
 const handleQuery = async () => {
+    var listplc = await listWcsPlc({ type: 1 });
+    lineOptions.value = listplc.data.result;
+    lineValue.value = listplc.data.result[0].id;
     var res = await listWcsDevice();
     listStackingMachineData.value = res.data.result.filter(s => s.type == 0);
-    const listConveyorLineData = res.data.result.filter(s => s.type == 1 || s.type == 4);
-    stations.value = {
-        1: listConveyorLineData.filter(s => s.text == '1灞傛墭鐩樿緭閫佺嚎'),
-        2: listConveyorLineData.filter(s => s.text == '2灞傛墭鐩樿緭閫佺嚎'),
-        3: listConveyorLineData.filter(s => s.text == '3灞傛墭鐩樿緭閫佺嚎')
-    }
-    if (stations.value[1].length > 0) {
-        listStationsData.value = stations.value[1];
+    const listConveyorLineData = res.data.result.filter(s => s.type == 1);
+    listplc.data.result.forEach(s => {
+        stations.value[s.id] = listConveyorLineData.filter(c => c.plcId === s.id)
+    });
+    if (stations.value[lineValue.value].length > 0) {
+        listStationsData.value = stations.value[lineValue.value];
         stationValue.value = listStationsData.value[0];
     }
 };
@@ -152,15 +151,9 @@
 
 const handleLineChange = (field: string, value: number) => {
     listStationsData.value = stations.value[value];
-    stationValue.value = {};
+    if (listStationsData.value.length > 0)
+        stationValue.value = listStationsData.value[0];
 };
-
-
-const lineOptions = [
-    { value: 1, label: '涓�妤艰緭閫佺嚎' },
-    { value: 2, label: '浜屾ゼ杈撻�佺嚎' },
-    { value: 3, label: '涓夋ゼ杈撻�佺嚎' }
-];
 
 </script>
 

--
Gitblit v1.8.0