Merge branch 'master' of http://115.159.85.185:8098/r/HuaYiZhongHeng/BaiBuLiKu
| | |
| | | *.BuildWithSkipAnalyzers |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="Linebox"> |
| | | <div class="card"> |
| | | <div class="card-header"> |
| | | <div id="lines2" > |
| | | <div class="card-body">{{device.deviceName}}<br/> |
| | | -{{ device.data.childDeviceCode }}- |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="card-body"> |
| | | <ul class="list-group lis"> |
| | | <li class="list-group-item list-group-item-dark">读åä¿¡å·</li> |
| | | <li class="list-group-item list-group-item-secondary">ä»»å¡å·ï¼{{ device.data.commandAfter.conveyorLineTaskNum }}</li> |
| | | <li class="list-group-item list-group-item-secondary">æçå·ï¼{{ device.data.commandAfter.conveyorLineBarcode }}</li> |
| | | <li class="list-group-item list-group-item-secondary">ç»ç¹å°åï¼{{ device.data.commandAfter.conveyorLineTargetAddress }}</li> |
| | | <li class="list-group-item list-group-item-secondary">æ¯å¦æçï¼{{ device.data.commandAfter.hasPallet }}</li> |
| | | <li class="list-group-item list-group-item-secondary">æ¥è¦ä»£ç ï¼{{ device.data.commandAfter.conveyorLineAlarm }}</li> |
| | | <li class="list-group-item list-group-item-secondary">请æ±åé¦ï¼{{ device.data.commandAfter.responState }}</li> |
| | | <li :class="device.data.commandAfter.interactiveSignal !=0 ? 'list-group-item list-group-item-success' :'list-group-item list-group-item-danger'">交äºä¿¡å·</li> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import { defineProps } from "vue"; |
| | | |
| | | // å®ä¹ç»ä»¶å±æ§ |
| | | const props = defineProps({ |
| | | device: { |
| | | type: Object, |
| | | required: true |
| | | } |
| | | }); |
| | | |
| | | // è·åä¿¡å·ç±»å |
| | | const getSignalClass = (signal) => { |
| | | // console.log("ð ~ getSignalClass ~ signal:", signal) |
| | | return signal !== true ? 'list-group-item list-group-item-danger' : 'list-group-item list-group-item-success'; |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .Stackerbox { |
| | | width: 220px; |
| | | float: left; |
| | | } |
| | | .Linebox { |
| | | width: 300px; |
| | | float: left; |
| | | } |
| | | .box1 { |
| | | float: left; |
| | | } |
| | | .card-body { |
| | | text-align: center; |
| | | border-radius: 6%; |
| | | } |
| | | .Stacker { |
| | | background-color: burlywood; |
| | | } |
| | | .lis { |
| | | float: left; |
| | | width: 266px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div> |
| | | <div> |
| | | <div class="Stackerbox"> |
| | | <div class="card"> |
| | | <div class="card-header"> |
| | | <div> |
| | | <div class="card-body Stacker"> |
| | | {{ StackerOne.deviceName }} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="card-body"> |
| | | <ul class="list-group"> |
| | | <li class="list-group-item list-group-item-secondary"> |
| | | ä»»å¡å·ï¼{{ StackerOne.data.currentTaskNum || 'ææ ä»»å¡å·' }} |
| | | </li> |
| | | <li :class="getStatusClass(StackerOne.data.stackerCraneAutoStatusDes)"> |
| | | 工使¨¡å¼ï¼{{ StackerOne.data.stackerCraneAutoStatusDes }} |
| | | </li> |
| | | <li :class="getStatusClass(StackerOne.data.stackerCraneStatusDes)"> |
| | | 设å¤ç¶æï¼{{ StackerOne.data.stackerCraneStatusDes }} |
| | | </li> |
| | | <li :class="getStatusClass(StackerOne.data.stackerCraneWorkStatusDes)"> |
| | | å·¥ä½ç¶æï¼{{ StackerOne.data.stackerCraneWorkStatusDes }} |
| | | </li> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <el-row> |
| | | <el-col :span="3"> |
| | | |
| | | <device-stacker v-for="stacker in Stackers" :key="stacker.deviceName" :Stacker="stacker"></device-stacker> |
| | | </el-col> |
| | | <el-col :span="21"> |
| | | <device-line v-for="device in devices" :key="device.deviceName" :device="device" /> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { onMounted, reactive, toRefs } from "vue"; |
| | | import eventBus from "@/uitils/eventBus"; |
| | | import DeviceLine from "@/components/DeviceLine.vue"; |
| | | import DeviceStacker from "@/components/DeviceStacker.vue"; |
| | | |
| | | // å åæº |
| | | const StackerOne = reactive({ |
| | | deviceName: "", |
| | | data: { |
| | | } |
| | | }); |
| | | const Stackers = reactive([]); |
| | | |
| | | // 设å¤å表ï¼ä¿®æ¹éå¤è®¾å¤åç§°ï¼ |
| | | const devices = reactive([ |
| | | { deviceName: "éååºåºè¾é线", data: { command: {}, commandWrite: {}, writeInteractiveSignal: [] } }, |
| | | { deviceName: "éåå
¥åºè¾é线", data: { command: {}, commandWrite: {}, writeInteractiveSignal: [] } }, |
| | | // { deviceName: "å åæº1", data: { command: {}, commandWrite: {}, writeInteractiveSignal: [] } }, |
| | | // Add all devices similarly... |
| | | ]); |
| | | const devices = reactive([]); |
| | | |
| | | // è·åç¶æç±»åï¼ä¼åç¶æå¤æï¼ |
| | | const getStatusClass = (status) => { |
| | | if (status === 'æ£å¸¸' || status === 'èªå¨' || status === 'å¾
æº') { |
| | | return 'list-group-item list-group-item-success'; |
| | | } |
| | | if (status === 'æ
é' || status === 'åæº') { |
| | | return 'list-group-item list-group-item-danger'; |
| | | } |
| | | return 'list-group-item list-group-item-warning'; // é»è®¤è¦åç¶æ |
| | | const intToBitArrayFromBinaryString = (num, numBits) => { |
| | | let binaryString = num.toString(2).padStart(numBits, '0'); |
| | | return Array.from({ length: numBits }, (_, index) => binaryString[index] === '1'); |
| | | }; |
| | | |
| | | // çå¬è®¾å¤æ°æ®åå |
| | | onMounted(() => { |
| | | eventBus.on('locationData', eventData => { |
| | | const device = devices.find(d => d.deviceName === eventData.deviceName); |
| | | console.log(eventData) |
| | | if (eventData.deviceName === "éåå
¥åºè¾é线"||eventData.deviceName === "éåå
¥åºè¾é线") { |
| | | |
| | | if (devices.length <= 0) { |
| | | devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.childDeviceCode }); |
| | | } |
| | | else { |
| | | const device = devices.find(c => c.childDeviceCode == eventData.childDeviceCode) |
| | | if (device) { |
| | | // ä½¿ç¨æ©å±è¿ç®ç¬¦æ´æ°å¯¹è±¡å±æ§ï¼ä¿æååºæ§ |
| | | device.data = { ...device.data, ...eventData.data }; |
| | | const number = eventData.data.commandWrite.writeInteractiveSignal; |
| | | const writeInteractiveSignal = intToBitArrayFromBinaryString(number, 8) |
| | | eventData.data.writeInteractiveSignal = writeInteractiveSignal; |
| | | device.data = eventData.data |
| | | } |
| | | else { |
| | | const number = eventData.data.commandWrite.writeInteractiveSignal; |
| | | const writeInteractiveSignal = intToBitArrayFromBinaryString(number, 8) |
| | | eventData.data.writeInteractiveSignal = writeInteractiveSignal; |
| | | devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.childDeviceCode }); |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | eventBus.on('stackerData', eventData => { |
| | | if (eventData.deviceName == "éå1å·å åæº"||eventData.deviceName == "éå2å·å åæº") { |
| | | if (Stackers.length == 0) { |
| | | Stackers.push({ deviceName: eventData.deviceName, data: eventData.data }); |
| | | } |
| | | else { |
| | | const Stacker = Stackers.find(c => c.deviceName == eventData.deviceName); |
| | | if (Stacker) { |
| | | Stacker.data = eventData.data |
| | | } |
| | | else { |
| | | Stackers.push({ deviceName: eventData.deviceName, data: eventData.data }); |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | }); |
| | | </script> |
| | | <style scoped> |
| | |
| | | const writeInteractiveSignal = intToBitArrayFromBinaryString(number, 8) |
| | | eventData.data.writeInteractiveSignal = writeInteractiveSignal; |
| | | device.data = eventData.data |
| | | console.log("ð ~ onMounted ~ device:", device.data) |
| | | |
| | | } |
| | | else { |
| | | const number = eventData.data.commandWrite.writeInteractiveSignal; |
| | |
| | | }); |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .Linebox{ |
| | | width: 573px; |
| | | float: left; |
| | | } |
| | | .box1{ |
| | | float: left; |
| | | } |
| | | .card-body{ |
| | | text-align: center; |
| | | border-radius: 6% ; |
| | | } |
| | | .Stacker{ |
| | | background-color: burlywood; |
| | | } |
| | | .lis{ |
| | | float: left; |
| | | width: 269px; |
| | | } |
| | | </style> |
| | |
| | | // çå¬è®¾å¤æ°æ®åå |
| | | onMounted(() => { |
| | | eventBus.on('locationData', eventData => { |
| | | console.log(eventData) |
| | | if (eventData.deviceName === "éç½®è¾é线") { |
| | | |
| | | if (devices.length <= 0) { |
| | |
| | | } |
| | | } |
| | | } |
| | | // if (eventData.deviceName == "éå1å·å åæº") { |
| | | // StackerOne.deviceName = eventData.deviceName; |
| | | // StackerOne.data = eventData.data |
| | | // } |
| | | }) |
| | | }); |
| | | </script> |
| | |
| | | }); |
| | | }); |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .Linebox{ |
| | | width: 573px; |
| | | float: left; |
| | | } |
| | | .box1{ |
| | | float: left; |
| | | } |
| | | .card-body{ |
| | | text-align: center; |
| | | border-radius: 6% ; |
| | | } |
| | | .Stacker{ |
| | | background-color: burlywood; |
| | | } |
| | | .lis{ |
| | | float: left; |
| | | width: 269px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div> |
| | | åå®¹åº |
| | | </div> |
| | | <el-row> |
| | | <el-col :span="3"> |
| | | <device-stacker v-for="stacker in Stackers" :key="stacker.deviceName" :Stacker="stacker"></device-stacker> |
| | | </el-col> |
| | | <el-col :span="21"> |
| | | <DeviceLineVo v-for="device in devices" :key="device.deviceName" :device="device" /> |
| | | </el-col> |
| | | </el-row> |
| | | </template> |
| | | <script setup> |
| | | |
| | | |
| | | import { onMounted, ref, reactive, toRaw } from "vue"; |
| | | import eventBus from "@/uitils/eventBus"; |
| | | import DeviceLineVo from "@/components/DeviceLineVo.vue"; |
| | | import DeviceStacker from "@/components/DeviceStacker.vue"; |
| | | // å åæº |
| | | const Stackers = reactive([]); |
| | | var i=0; |
| | | // 设å¤å表ï¼ä¿®æ¹éå¤è®¾å¤åç§°ï¼ |
| | | const devices = reactive([]); |
| | | const num = reactive([]) |
| | | onMounted(() => { |
| | | eventBus.on('stackerData', eventData => { |
| | | if (eventData.deviceName === "å容3线å
¥åºè¾é线"||eventData.deviceName === "å容åºåºè¾é线") { |
| | | if (devices.length <= 0) { |
| | | devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.data.childDeviceCode }); |
| | | } |
| | | else { |
| | | const device = devices.find(c => c.childDeviceCode == eventData.data.childDeviceCode) |
| | | if(device){ |
| | | device.data = eventData.data |
| | | }else{ |
| | | devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.data.childDeviceCode }); |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | eventBus.on('stackerData', eventData => { |
| | | if (eventData.deviceName == "å容3å·å åæº"||eventData.deviceName == "å容2å·å åæº") { |
| | | if (Stackers.length == 0) { |
| | | Stackers.push({ deviceName: eventData.deviceName, data: eventData.data }); |
| | | } |
| | | else { |
| | | const Stacker = Stackers.find(c => c.deviceName == eventData.deviceName); |
| | | if (Stacker) { |
| | | Stacker.data = eventData.data |
| | | } |
| | | else { |
| | | Stackers.push({ deviceName: eventData.deviceName, data: eventData.data }); |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | }) |
| | | </script> |
| | | <style scoped> |
| | | |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-row> |
| | | <el-col :span="21"> |
| | | <DeviceLineVo v-for="device in devices" :key="device.deviceName" :device="device" /> |
| | | </el-col> |
| | | </el-row> |
| | | </template> |
| | | <script setup> |
| | | import { onMounted, ref, reactive, toRaw } from "vue"; |
| | | import eventBus from "@/uitils/eventBus"; |
| | | import DeviceLineVo from "@/components/DeviceLineVo.vue"; |
| | | import DeviceStacker from "@/components/DeviceStacker.vue"; |
| | | // å åæº |
| | | const Stackers = reactive([]); |
| | | var i=0; |
| | | // 设å¤å表ï¼ä¿®æ¹éå¤è®¾å¤åç§°ï¼ |
| | | const devices = reactive([]); |
| | | const num = reactive([]) |
| | | onMounted(() => { |
| | | eventBus.on('stackerData', eventData => { |
| | | if (eventData.deviceName === "å
è£
åºåºè¾é线") { |
| | | if (devices.length <= 0) { |
| | | devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.data.childDeviceCode }); |
| | | } |
| | | else { |
| | | const device = devices.find(c => c.childDeviceCode == eventData.data.childDeviceCode) |
| | | if(device){ |
| | | device.data = eventData.data |
| | | }else{ |
| | | devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.data.childDeviceCode }); |
| | | } |
| | | } |
| | | |
| | | } |
| | | }) |
| | | |
| | | }) |
| | | |
| | | </script> |
| | | <style scoped> |
| | | |
| | | </style> |
| | |
| | | <template> |
| | | <div> |
| | | 髿¸©åº |
| | | </div> |
| | | <el-row> |
| | | <el-col :span="3"> |
| | | <device-stacker v-for="stacker in Stackers" :key="stacker.deviceName" :Stacker="stacker"></device-stacker> |
| | | </el-col> |
| | | <el-col :span="21"> |
| | | <DeviceLineVo v-for="device in devices" :key="device.deviceName" :device="device" /> |
| | | </el-col> |
| | | </el-row> |
| | | </template> |
| | | <script setup> |
| | | import { onMounted, ref, reactive, toRaw } from "vue"; |
| | | import eventBus from "@/uitils/eventBus"; |
| | | import DeviceLineVo from "@/components/DeviceLineVo.vue"; |
| | | import DeviceStacker from "@/components/DeviceStacker.vue"; |
| | | // å åæº |
| | | const Stackers = reactive([]); |
| | | var i=0; |
| | | // 设å¤å表ï¼ä¿®æ¹éå¤è®¾å¤åç§°ï¼ |
| | | const devices = reactive([]); |
| | | const num = reactive([]) |
| | | onMounted(() => { |
| | | eventBus.on('stackerData', eventData => { |
| | | // console.log(eventData) |
| | | |
| | | console.log(eventData) |
| | | |
| | | if (eventData.deviceName === "èåå
¥åºè¾é线") { |
| | | if (devices.length <= 0) { |
| | | devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.data.childDeviceCode }); |
| | | } |
| | | else { |
| | | const device = devices.find(c => c.childDeviceCode == eventData.data.childDeviceCode) |
| | | if(device){ |
| | | device.data = eventData.data |
| | | }else{ |
| | | devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.data.childDeviceCode }); |
| | | } |
| | | } |
| | | |
| | | } |
| | | }) |
| | | eventBus.on('stackerData', eventData => { |
| | | if (eventData.deviceName == "èå1å·å åæº") { |
| | | if (Stackers.length == 0) { |
| | | Stackers.push({ deviceName: eventData.deviceName, data: eventData.data }); |
| | | } |
| | | else { |
| | | const Stacker = Stackers.find(c => c.deviceName == eventData.deviceName); |
| | | if (Stacker) { |
| | | Stacker.data = eventData.data |
| | | } |
| | | else { |
| | | Stackers.push({ deviceName: eventData.deviceName, data: eventData.data }); |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | }) |
| | | </script> |
| | | <style scoped> |
| | | |
| | | </style> |
| | |
| | | <template> |
| | | <div> |
| | | å¸¸æ¸©åº |
| | | </div> |
| | | <el-row> |
| | | <el-col :span="3"> |
| | | <device-stacker v-for="stacker in Stackers" :key="stacker.deviceName" :Stacker="stacker"></device-stacker> |
| | | </el-col> |
| | | <el-col :span="21"> |
| | | <DeviceLineVo v-for="device in devices" :key="device.deviceName" :device="device" /> |
| | | </el-col> |
| | | </el-row> |
| | | </template> |
| | | <script setup> |
| | | import { onMounted, ref, reactive, toRaw } from "vue"; |
| | | import eventBus from "@/uitils/eventBus"; |
| | | import DeviceLineVo from "@/components/DeviceLineVo.vue"; |
| | | import DeviceStacker from "@/components/DeviceStacker.vue"; |
| | | // å åæº |
| | | const Stackers = reactive([]); |
| | | var i=0; |
| | | // 设å¤å表ï¼ä¿®æ¹éå¤è®¾å¤åç§°ï¼ |
| | | const devices = reactive([]); |
| | | const num = reactive([]) |
| | | onMounted(() => { |
| | | eventBus.on('stackerData', eventData => { |
| | | // console.log(eventData) |
| | | |
| | | console.log(eventData) |
| | | |
| | | if (eventData.deviceName === "常温å
¥åºè¾é线") { |
| | | if (devices.length <= 0) { |
| | | devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.data.childDeviceCode }); |
| | | } |
| | | else { |
| | | const device = devices.find(c => c.childDeviceCode == eventData.data.childDeviceCode) |
| | | if(device){ |
| | | device.data = eventData.data |
| | | }else{ |
| | | devices.push({ deviceName: eventData.deviceName, data: eventData.data, childDeviceCode: eventData.data.childDeviceCode }); |
| | | } |
| | | } |
| | | |
| | | } |
| | | }) |
| | | eventBus.on('stackerData', eventData => { |
| | | if (eventData.deviceName == "常温1å·å åæº"||eventData.deviceName == "常温2å·å åæº"||eventData.deviceName == "常温3å·å åæº"||eventData.deviceName == "常温4å·å åæº") { |
| | | if (Stackers.length == 0) { |
| | | Stackers.push({ deviceName: eventData.deviceName, data: eventData.data }); |
| | | } |
| | | else { |
| | | const Stacker = Stackers.find(c => c.deviceName == eventData.deviceName); |
| | | if (Stacker) { |
| | | Stacker.data = eventData.data |
| | | } |
| | | else { |
| | | Stackers.push({ deviceName: eventData.deviceName, data: eventData.data }); |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | }) |
| | | </script> |
| | | <style scoped> |
| | | |
| | | </style> |
| | |
| | | <RouterLink class="navlink" to="/AgingLibrary" >éååº</RouterLink> |
| | | <RouterLink class="navlink" to="/FormationLibrary" >åæåº</RouterLink> |
| | | <RouterLink class="navlink" to="/StaticLibrary" >éç½®åº</RouterLink> |
| | | <RouterLink class="navlink" to="/Twoletters" >äºå°åº</RouterLink> |
| | | <RouterLink class="navlink" to="/Twoletters" >äºå°</RouterLink> |
| | | <RouterLink class="navlink" to="/Volume" >å容åº</RouterLink> |
| | | <RouterLink class="navlink" to="/highTemperature" >髿¸©åº</RouterLink> |
| | | <RouterLink class="navlink" to="/highTemperature" >èååº</RouterLink> |
| | | <RouterLink class="navlink" to="/roomTemperature" >常温åº</RouterLink> |
| | | <RouterLink class="navlink" to="/Baozhuang" >å
è£
</RouterLink> |
| | | </div> |
| | | <!--注æäºé¡¹--> |
| | | <div class="area"> |
| | | <RouterView></RouterView> |
| | | <RouterView :key="$route.fullPath" ></RouterView> |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | |
| | | //è¿æ¥å符串 |
| | | //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=", |
| | | //"ConnectionString": "Data Source=127.0.0.1;Initial Catalog=WIDESEA_WCS2F08;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=True", |
| | | "ConnectionString": "Data Source=.\\LIULEI;Initial Catalog=WIDESEAWCS_TEST;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //"ConnectionString": "Data Source=192.168.20.251;Initial Catalog=WIDESEA_WCSDB;User ID=sa;Password=123456@gy;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //"ConnectionString": "Data Source=192.168.5.251;Initial Catalog=WIDESEAWCS_TEST;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | "ConnectionString": "Data Source=192.168.5.251;Initial Catalog=WIDESEAWCS_TEST;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //è·¨å |
| | | "Cors": { |
| | | "PolicyName": "CorsIpAccess", //çç¥åç§° |
| | |
| | | ConveyorLineTaskCommandWrite commandWrite = conveyorLine.ReadCustomer<ConveyorLineTaskCommandWrite>(childDeviceCode, "DeviceCommand"); |
| | | if (command != null && commandWrite != null) |
| | | { |
| | | |
| | | #region è°ç¨äºä»¶æ»çº¿éç¥å端 |
| | | |
| | | var tokenInfos = _cacheService.Get<List<UserInfo>>("Cache_UserToken"); |
| | | if (tokenInfos == null || !tokenInfos.Any()) |
| | | { |
| | | //throw new Exception(conveyorLine.DeviceName + "ç¼å䏿ªæ¾å°Tokenç¼å"); |
| | | return; |
| | | } |
| | | var userTokenIds = tokenInfos?.Select(x => x.Token_ID).ToList(); |
| | | var userIds = tokenInfos?.Select(x => x.UserId).ToList(); |
| | | |
| | | object obj = new |
| | | { |
| | | command, |
| | | commandWrite |
| | | }; |
| | | _noticeService.LineData(userIds?.FirstOrDefault(), userTokenIds, new { conveyorLine.DeviceName, childDeviceCode, data = obj }); |
| | | |
| | | #endregion è°ç¨äºä»¶æ»çº¿éç¥å端 |
| | | |
| | | var structs = BitConverter.GetBytes(commandWrite.WriteInteractiveSignal).Reverse().ToArray().ToBoolArray(); |
| | | |
| | | List<DeviceProtocolDetailDTO>? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.Where(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand.InteractiveSignal)).ToList(); |
| | |
| | | } |
| | | } |
| | | |
| | | #region è°ç¨äºä»¶æ»çº¿éç¥å端 |
| | | |
| | | var tokenInfos = _cacheService.Get<List<UserInfo>>("Cache_UserToken"); |
| | | if (tokenInfos == null || !tokenInfos.Any()) |
| | | { |
| | | //throw new Exception(conveyorLine.DeviceName + "ç¼å䏿ªæ¾å°Tokenç¼å"); |
| | | return; |
| | | } |
| | | var userTokenIds = tokenInfos?.Select(x => x.Token_ID).ToList(); |
| | | var userIds = tokenInfos?.Select(x => x.UserId).ToList(); |
| | | |
| | | object obj = new |
| | | { |
| | | command, |
| | | commandWrite |
| | | }; |
| | | _noticeService.LineData(userIds?.FirstOrDefault(), userTokenIds, new { conveyorLine.DeviceName, childDeviceCode, data = obj }); |
| | | |
| | | #endregion è°ç¨äºä»¶æ»çº¿éç¥å端 |
| | | } |
| | | } |
| | | |
| | |
| | | { |
| | | HandleTaskOut(conveyorLine, command, childDeviceCode, ProtocalDetailValue, task); |
| | | } |
| | | else |
| | | { |
| | | var next = task.NextAddress; |
| | | var taskCommand = MapTaskCommand(task, command); |
| | | task.NextAddress = next; |
| | | conveyorLine.SendCommand(taskCommand, childDeviceCode); |
| | | |
| | | ConsoleHelper.WriteWarningLine($"ã{conveyorLine._deviceName}ãä»»å¡å·ï¼ã{command.TaskNum}ã,æçæ¡ç ï¼ã{command.Barcode}ãå·²å°è¾¾ã{childDeviceCode}ãè¯·æ±æ«ç å
¥åº,ä¸ä¸ç®æ å°åã{taskCommand.TargetAddress}ã"); |
| | | |
| | | ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); |
| | | _taskService.UpdateTaskStatusToNext(task); |
| | | } |
| | | } |
| | | else |
| | | { |
| | |
| | | private Dt_Task? GetTask(CommonStackerCrane commonStackerCrane) |
| | | { |
| | | Dt_Task task; |
| | | var taskRun = _taskRepository.QueryFirst(x => x.Roadway == commonStackerCrane.DeviceCode && (x.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting || x.TaskState == (int)TaskInStatusEnum.SC_InExecuting)); |
| | | if (taskRun != null) { return null; } |
| | | //var taskRun = _taskRepository.QueryFirst(x => x.Roadway == commonStackerCrane.DeviceCode && (x.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting || x.TaskState == (int)TaskInStatusEnum.SC_InExecuting)); |
| | | //if (taskRun != null) { return null; } |
| | | if (commonStackerCrane.LastTaskType == null) |
| | | { |
| | | task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode); |
| | |
| | | { field: 'isFull', title: 'åºåç±»å', type: 'bool', width: 110, align: 'left', bind: { key: "isFull", data: [] }, }, |
| | | { field: 'linedProcessFeedbackTime', title: 'å·¥èºå¼å§æ¶é´', type: 'string', width: 110, align: 'left',}, |
| | | { field: 'specialParameterDuration', title: 'å·¥èºæ¶é¿', type: 'string', width: 110, align: 'left', sort: true }, |
| | | { field: 'outboundTime', title: 'åºåºåºæ¶é´', type: 'string', width: 110, align: 'left', }, |
| | | { field: 'outboundTime', title: 'åºåºåºæ¶é´', type: 'string', width: 110, align: 'left', sort: true }, |
| | | { field: 'productionLine', title: 'ç产产线', type: 'string', width: 110, align: 'left', }, |
| | | { field: 'areaCode', title: 'åºåº', type: 'string', width: 110, align: 'left', bind: { key: "AreaType", data: [] } }, |
| | | { field: 'remark', title: 'çµè¯æ°é', type: 'string', width: 120, align: 'left', }, |
| | |
| | | } |
| | | return sortDic; |
| | | } |
| | | else if (propertyInfo.Any(x => x.Name == pageData.Sort)) |
| | | else if (propertyInfo.Any(x => x.Name.ToUpper() == pageData.Sort.ToUpper())) |
| | | { |
| | | return new Dictionary<string, OrderByType> { |
| | | { |
| | | pageData.Sort,pageData.Order?.ToLower() == OrderByType.Asc.ToString() ? OrderByType.Asc : OrderByType.Desc |
| | | pageData.Sort,pageData.Order?.ToLower() == OrderByType.Asc.ToString().ToLower()? OrderByType.Asc : OrderByType.Desc |
| | | } }; |
| | | } |
| | | } |
| | |
| | | { |
| | | SlotNo = x.OrderNo.ToInt32(), |
| | | SerialNo = x.SerialNumber, |
| | | SerialNoResult = isNG, |
| | | SerialNoResult = true, //isNG, |
| | | ParameterInfo = new List<ParameterInfoOutput> { |
| | | new ParameterInfoOutput() { |
| | | Value = outHours.ToString(), |
| | | ParameterCode =parameterInfo.ParameterCode, |
| | | ParameterDesc = parameterInfo.Description, |
| | | ParameterResult = isNG.ToString(), |
| | | ParameterResult = "OK", //isNG.ToString(), |
| | | TargetValue = parameterInfo.TargetValue, |
| | | LowerLomit = parameterInfo.LowerSpecificationsLimit, |
| | | UpperLimit = parameterInfo.UpperSpecificationsLimit, |
| | |
| | | if (result.SerialNos.Count <= 0) |
| | | { |
| | | // 空æçå
¥åºé»è¾ |
| | | var staion = _stationManagerRepository.QueryFirst(x => x.stationChildCode == input.Position && x.stationType == 1 && x.remark == "IN"); |
| | | if (staion != null) |
| | | { |
| | | return await HandleErrorCells(input, area); |
| | | } |
| | | else |
| | | { |
| | | return await RequestTrayInTaskAsync(input); |
| | | } |
| | | } |
| | | else |
| | | return content.Error(result.MOMMessage); |
| | | } |
| | |
| | | /// <summary> |
| | | /// çµè¯NGéè³NGå£ |
| | | /// </summary> |
| | | private async Task<WebResponseContent> HandleErrorCells(RequestTaskDto input, Dt_AreaInfo area, List<SerialNoDto> serialNosError) |
| | | private async Task<WebResponseContent> HandleErrorCells(RequestTaskDto input, Dt_AreaInfo area, List<SerialNoDto> serialNosError = null) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | // TODO å建任å¡éè³NGæåºå£ |
| | |
| | | { |
| | | throw new Exception("æªæ¾å°NGå
¥åºç«å°é
ç½®"); |
| | | } |
| | | List<string> NGStation = stationManagers.Roadway.Split(',').ToList(); |
| | | if (NGStation.Count <= 0) |
| | | { |
| | | NGStation = stationManagers.stationNGChildCode.Split(',').ToList(); |
| | | } |
| | | //List<string> NGStation = stationManagers.Roadway.Split(',').ToList(); |
| | | //if (NGStation.Count <= 0) |
| | | //{ |
| | | // NGStation = stationManagers.stationNGChildCode.Split(',').ToList(); |
| | | //} |
| | | List<string> NGStation = stationManagers.stationNGChildCode.Split(',').ToList(); |
| | | content = await CreateNewTask(input, NGStation, 2); |
| | | return content.Error("åå¨å¼å¸¸çµè¯"); |
| | | } |