From 4110b7475eccf48283ff22c0e4545850849d445d Mon Sep 17 00:00:00 2001 From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com> Date: 星期三, 30 七月 2025 14:03:06 +0800 Subject: [PATCH] 代码提交 --- 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json | 169 ++-- 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs | 37 + 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.suo | 0 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json | 181 ++-- 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs | 2 项目代码/WCS/WIDESEAWCS_Client/src/views/LineInfocopy.vue | 199 +++++ 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneDBName.cs | 5 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/WIDESEAWCS_QuartzJob.csproj | 2 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/IDeviceInfoService.cs | 71 ++ 项目代码/WCS/WIDESEAWCS_Client/src/views/LineComponent copy.vue | 16 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceInfoController.cs | 61 + 项目代码/WCS/WIDESEAWCS_Client/src/views/LineComponent.vue | 174 ++++ 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DeviceInfoService.cs | 673 +++++++++++++++++++ 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RGVJob_FirstFloor/CommonRGV_FirstFloorJob.cs | 4 项目代码/WCS/WIDESEAWCS_Client/src/views/Home.vue | 421 +++++++---- 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/HandTask/StackerHandTask.cs | 16 16 files changed, 1,646 insertions(+), 385 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Home.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Home.vue" index 0ad79c8..d89ec78 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Home.vue" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/Home.vue" @@ -11,8 +11,10 @@ <el-col :span="8"> <div class="line-container"> <div class="RGVline"></div> - <div :class="updateRGVOne()" :style="{ marginTop: RGV01.LevelPoint + 'px' }" ref="childDot" @click="mouseClick">1</div> - <div :class="updateRGVTwo()" :style="{ marginTop: RGV02.LevelPoint + 'px' }" ref="childDot" @click="mouseClick">2</div> + <div :class="updateRGVOne()" :style="{ marginTop: RGV01.LevelPoint + 'px' }" + @click="mouseClickRGVFirst">1</div> + <div :class="updateRGVTwo()" :style="{ marginTop: RGV02.LevelPoint + 'px' }" + @click="mouseClickSecond">2</div> </div> </el-col> <el-col :span="8"> @@ -21,7 +23,8 @@ <div class="positionY-group"> <LineInfoCopy v-for="(line, lineIndex) in group.lines" :key="lineIndex" :equipNo="line.equipNo" :imgType="line.imgType" :positionX="line.positionX" - :positionY="line.positionY" :condition="line.condition" /> + :positionY="line.positionY" :condition="line.condition" + url="api/Equipment/GetLineInfoByNo" /> </div> </div> <div style="margin-top: 118px;"></div> @@ -29,7 +32,8 @@ <div class="positionY-group"> <LineInfoCopy v-for="(line, lineIndex) in group.lines" :key="lineIndex" :equipNo="line.equipNo" :imgType="line.imgType" :positionX="line.positionX" - :positionY="line.positionY" :condition="line.condition" /> + :positionY="line.positionY" :condition="line.condition" + url="api/Equipment/GetLineInfoByNo" /> </div> </div> <div style="margin-top: 115px;"></div> @@ -37,7 +41,8 @@ <div class="positionY-group"> <LineInfoCopy v-for="(line, lineIndex) in group.lines" :key="lineIndex" :equipNo="line.equipNo" :imgType="line.imgType" :positionX="line.positionX" - :positionY="line.positionY" :condition="line.condition" /> + :positionY="line.positionY" :condition="line.condition" + url="api/Equipment/GetLineInfoByNo" /> </div> </div> <div style="margin-top: 112px;"></div> @@ -103,57 +108,6 @@ </div> </div> </el-col> - <!-- <el-col :span="8"> - <div> - <div v-for="(group, index) in groupedLines(linescopy3)" :key="index"> - <div class="positionY-group"> - <LineInfoCopy v-for="(line, lineIndex) in group.lines" :key="lineIndex" :equipNo="line.equipNo" - :imgType="line.imgType" :positionX="line.positionX" :positionY="line.positionY" - url="api/Equipment/GetLineInfoByNo" :condition="line.condition" /> - </div> - </div> - <div style="margin-top: 105px;"></div> - <div v-for="(group, index) in groupedLines(linescopy3)" :key="index"> - <div class="positionY-group"> - <LineInfoCopy v-for="(line, lineIndex) in group.lines" :key="lineIndex" :equipNo="line.equipNo" - :imgType="line.imgType" :positionX="line.positionX" :positionY="line.positionY" - url="api/Equipment/GetLineInfoByNo" :condition="line.condition" /> - </div> - </div> - <div style="margin-top: 105px;"></div> - <div v-for="(group, index) in groupedLines(linescopy3)" :key="index"> - <div class="positionY-group"> - <LineInfoCopy v-for="(line, lineIndex) in group.lines" :key="lineIndex" :equipNo="line.equipNo" - :imgType="line.imgType" :positionX="line.positionX" :positionY="line.positionY" - url="api/Equipment/GetLineInfoByNo" :condition="line.condition" /> - </div> - </div> - <div style="margin-top: 105px;"></div> - <div v-for="(group, index) in groupedLines(linescopy3)" :key="index"> - <div class="positionY-group"> - <LineInfoCopy v-for="(line, lineIndex) in group.lines" :key="lineIndex" :equipNo="line.equipNo" - :imgType="line.imgType" :positionX="line.positionX" :positionY="line.positionY" - url="api/Equipment/GetLineInfoByNo" :condition="line.condition" /> - </div> - </div> - <div style="margin-top: 100px;"></div> - <div v-for="(group, index) in groupedLines(linescopy3)" :key="index"> - <div class="positionY-group"> - <LineInfoCopy v-for="(line, lineIndex) in group.lines" :key="lineIndex" :equipNo="line.equipNo" - :imgType="line.imgType" :positionX="line.positionX" :positionY="line.positionY" - url="api/Equipment/GetLineInfoByNo" :condition="line.condition" /> - </div> - </div> - <div style="margin-top: 100px;"></div> - <div v-for="(group, index) in groupedLines(linescopy3)" :key="index"> - <div class="positionY-group"> - <LineInfoCopy v-for="(line, lineIndex) in group.lines" :key="lineIndex" :equipNo="line.equipNo" - :imgType="line.imgType" :positionX="line.positionX" :positionY="line.positionY" - url="api/Equipment/GetLineInfoByNo" :condition="line.condition" /> - </div> - </div> - </div> - </el-col> --> </el-row> <el-row :gutter="20" class="cardWidthrow"> <el-col :span="12"> @@ -170,9 +124,110 @@ </el-col> </el-row> - + </div> - + <el-dialog v-model="RGVFirst" title="RGV淇℃伅鏌ョ湅" :before-close="handleClose"> + <el-form ref="$form" :model="StackerCrane" label-position="left" label-width="120px" size="medium"> + <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> + <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> + <el-form-item label="璁惧缂栧彿锛�"> + <!-- <el-input v-model="equipNo"></el-input> --> + <j-el-description :value="RGV01.DeviceName" type="primary" ellipsis></j-el-description> + </el-form-item> + </el-col> + <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> + <el-form-item label="璁惧鐘舵��:"> + <j-el-description :value="RGV01.Fault" type="primary" ellipsis></j-el-description> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> + <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> + <el-form-item label="宸ヤ綔妯″紡:"> + <j-el-description :value="RGV01.Automatic" type="primary" ellipsis></j-el-description> + </el-form-item> + </el-col> + <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> + <el-form-item label="浠诲姟鍙凤細"> + <j-el-description :value="RGV01.CurrentTaskNum" type="primary" ellipsis></j-el-description> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20" type="flex" justify="start" align="top" tag="div" style="margin-bottom: 10px;"> + <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> + <el-form-item label="浣滀笟鐘舵��:"> + <j-el-description :value="RGV01.Running" type="primary" ellipsis></j-el-description> + </el-form-item> + </el-col> + <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> + <el-form-item label="褰撳墠姘村钩浣嶇疆锛�"> + <j-el-description :value="RGV01.LevelPoint" type="primary" ellipsis></j-el-description> + </el-form-item> + </el-col> + </el-row> + <el-divider /> + <h4 style="margin-bottom: 50px;">鎵嬪姩鎿嶄綔</h4> + <el-form ref="form" :model="formFirst" label-width="90px"> + <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> + <el-col :span="16" :offset="0" :push="0" :pull="0" tag="div"> + <el-form-item label="浠诲姟鍛戒护" prop="TargetAddress"> + <el-select size="large" v-model="formFirst.TaskType" placeholder="璇烽�夋嫨浠诲姟鍛戒护"> + <el-option label="鍏ュ簱" value="17" /> + <el-option label="鍑哄簱" value="18" /> + <el-option label="绉诲簱" value="20" /> + <el-option label="鍙栬揣" value="24" /> + <el-option label="鏀捐揣" value="48" /> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> + <el-col :span="16" :offset="0" :push="0" :pull="0" tag="div"> + <el-form-item label="璧风偣琛屽垪灞�:"> + <el-input size="large" v-model="formFirst.SourceAddress" style="width: 800px" + placeholder="璇疯緭鍏ヨ捣鐐硅鍒楀眰" /> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> + <el-col :span="16" :offset="0" :push="0" :pull="0" tag="div"> + <el-form-item label="缁堢偣琛屽垪灞�:"> + <el-input size="large" v-model="formFirst.TargetAddress" style="width: 800px" + placeholder="璇疯緭鍏ョ粓鐐硅鍒楀眰" /> + </el-form-item> + </el-col> + </el-row> + </el-form> + <el-divider /> + <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> + <el-col :span="8" :offset="0" :push="0" :pull="0" tag="div"> + <el-button type="primary" size="small" plain @click="start"> + <i class="el-icon-check">鍚姩</i> + </el-button> + + </el-col> + <el-col :span="8" :offset="0" :push="0" :pull="0" tag="div"> + <el-button type="warning" size="small" plain @click="reset"> + <i class="el-icon-check">澶嶄綅</i> + </el-button> + + </el-col> + <el-col :span="8" :offset="0" :push="0" :pull="0" tag="div"> + <el-button type="danger" size="small" plain @click="emergencyStop"> + <i class="el-icon-check">鎬ュ仠</i> + </el-button> + </el-col> + </el-row> + </el-form> + <template #footer> + <div class="dialog-footer"> + <el-button @click="RGVFirst = false">鍙栨秷</el-button> + <el-button type="primary" @click="RGVFirst = false"> + 纭 + </el-button> + </div> + </template> + </el-dialog> </template> <script> @@ -182,7 +237,7 @@ import LineInfoCopy from "./LineInfocopy.vue"; import LineComponent from './LineComponent.vue'; import eventBus from "../uitils/eventBus"; - +import JElDescription from "./JElDescription"; export default { data() { @@ -545,7 +600,12 @@ CurrentTaskNum: "", Running: "", DeviceName: "", + DeviceCOde: "", + StackerAlarm:"", }, + RGVFirst: false, + RGVSecond: false, + RGVThird: false, xValue1: 0, xValue2: 0, xValue3: 0, @@ -554,38 +614,45 @@ xValue6: 0, timer1: null, // 瀹氭椂鍣ㄥ彉閲� timer2: null, // 瀹氭椂鍣ㄥ彉閲� - RGV01:{ + RGV01: { Automatic: "", Fault: "", - LevelPoint:0, + LevelPoint: 0, CurrentTaskNum: "", Running: "", DeviceName: "", - DeviceCode:"RGV01", + DeviceCode: "RGV01", }, - RGV02:{ + RGV02: { Automatic: "", Fault: "", - LevelPoint:1280, + LevelPoint: 1280, CurrentTaskNum: "", Running: "", DeviceName: "", - DeviceCode:"RGV02", + DeviceCode: "RGV02", }, - RGV03:{ + RGV03: { Automatic: "", Fault: "", - LevelPoint:0, + LevelPoint: 0, CurrentTaskNum: "", Running: "", DeviceName: "", - DeviceCode:"", + DeviceCode: "", + }, + formFirst: { + TaskType: "", + SourceAddress: "", + TargetAddress: "", + DeviceCode: "", }, }; }, components: { LineInfoCopy, LineComponent, + JElDescription, }, methods: { groupedLines(linescopy) { @@ -602,42 +669,51 @@ }); return Object.values(groups); }, - updateRGVOne(){ - if(this.RGV01.Automatic=="鑱旀満妯″紡"&&this.RGV01.Fault!="鏁呴殰"&&this.RGV01.Running=="寰呮満"){ - return 'dot-Automatic '; - } - else if(this.RGV01.Automatic=="鑱旀満妯″紡"&&this.RGV01.Fault!="鏁呴殰"&&this.RGV01.Running=="杩愯涓�"){ - return 'dot-Running '; - }else if(this.RGV01.Fault=="鏁呴殰"){ - return 'dot-Fault '; - }else{ - return 'dot-Fault '; - } + updateRGVOne() { + if (this.RGV01.Automatic == "鑱旀満妯″紡" && this.RGV01.Fault != "鏁呴殰" && this.RGV01.Running == "寰呮満") { + return 'dot-Automatic '; + } + else if (this.RGV01.Automatic == "鑱旀満妯″紡" && this.RGV01.Fault != "鏁呴殰" && this.RGV01.Running == "杩愯涓�") { + return 'dot-Running '; + } else if (this.RGV01.Fault == "鏁呴殰") { + return 'dot-Fault '; + } else { + return 'dot-Fault '; + } }, - updateRGVTwo(){ - if(this.RGV02.Automatic=="鑱旀満妯″紡"&&this.RGV02.Fault!="鏁呴殰"&&this.RGV02.Running=="寰呮満"){ - return 'dot-Automatic '; - } - else if(this.RGV02.Automatic=="鑱旀満妯″紡"&&this.RGV01.Fault!="鏁呴殰"&&this.RGV02.Running=="杩愯涓�"){ - return 'dot-Running '; - }else if(this.RGV02.Fault=="鏁呴殰"){ - return 'dot-Fault '; - }else{ - return 'dot-Fault '; - } + updateRGVTwo() { + if (this.RGV02.Automatic == "鑱旀満妯″紡" && this.RGV02.Fault != "鏁呴殰" && this.RGV02.Running == "寰呮満") { + return 'dot-Automatic '; + } + else if (this.RGV02.Automatic == "鑱旀満妯″紡" && this.RGV01.Fault != "鏁呴殰" && this.RGV02.Running == "杩愯涓�") { + return 'dot-Running '; + } else if (this.RGV02.Fault == "鏁呴殰") { + return 'dot-Fault '; + } else { + return 'dot-Fault '; + } }, - updateRGV03(){ - if(this.RGV03.Automatic=="鑱旀満妯″紡"&&this.RGV03.Fault!="鏁呴殰"&&this.RGV03.Running=="寰呮満"){ - return 'dot-Automatic '; - } - else if(this.RGV03.Automatic=="鑱旀満妯″紡"&&this.RGV03.Fault!="鏁呴殰"&&this.RGV03.Running=="杩愯涓�"){ - return 'dot-Running '; - }else if(this.RGV03.Fault=="鏁呴殰"){ - return 'dot-Fault '; - }else{ - return 'dot-Fault '; - } + updateRGV03() { + if (this.RGV03.Automatic == "鑱旀満妯″紡" && this.RGV03.Fault != "鏁呴殰" && this.RGV03.Running == "寰呮満") { + return 'dot-Automatic '; + } + else if (this.RGV03.Automatic == "鑱旀満妯″紡" && this.RGV03.Fault != "鏁呴殰" && this.RGV03.Running == "杩愯涓�") { + return 'dot-Running '; + } else if (this.RGV03.Fault == "鏁呴殰") { + return 'dot-Fault '; + } else { + return 'dot-Fault '; + } }, + mouseClickRGVFirst() { + this.fullscreenLoading = true; + this.RGVFirst = true; + this.fullscreenLoading = false; + }, mouseClickSecond() { + this.fullscreenLoading = true; + this.RGVSecond = true; + this.fullscreenLoading = false; + } }, computed: { @@ -646,7 +722,7 @@ }, created() { eventBus.on('stackerData', eventData => { - + const stackerComponentsMap = { "SC01": 'stacker1', "SC02": 'stacker2', @@ -657,13 +733,16 @@ }; const componentKey = stackerComponentsMap[eventData.data.deviceCode]; if (componentKey) { - this.StackerCrane.Automatic=eventData.data.automatic; - this.StackerCrane.Fault=eventData.data.fault; - this.StackerCrane.Running=eventData.data.running; - this.StackerCrane.CurrentColumn=eventData.data.currentColumn; - this.StackerCrane.CurrentLayer=eventData.data.currentLayer; - this.StackerCrane.LevelPoint=eventData.data.levelPoint; - this.StackerCrane.DeviceName=eventData.data.deviceName; + this.StackerCrane.Automatic = eventData.data.automatic; + this.StackerCrane.Fault = eventData.data.fault; + this.StackerCrane.Running = eventData.data.running; + this.StackerCrane.CurrentColumn = eventData.data.currentColumn; + this.StackerCrane.CurrentLayer = eventData.data.currentLayer; + this.StackerCrane.LevelPoint = eventData.data.levelPoint; + this.StackerCrane.DeviceName = eventData.data.deviceName; + this.StackerCrane.DeviceCode = eventData.data.deviceCode; + this.StackerCrane.StackerAlarm = eventData.data.stackerAlarm; + this.$nextTick(() => { this.$refs[componentKey].moveDot(this.StackerCrane); }); @@ -671,26 +750,25 @@ }); eventBus.on('RGVData', eventData => { - - if(eventData.data.deviceCode=="RGV01"){ - this.RGV01.Automatic=eventData.data.automatic; - this.RGV01.Fault=eventData.data.fault; - this.RGV01.Running=eventData.data.running; - this.RGV01.LevelPoint=eventData.data.levelPoint; - this.RGV01.DeviceName=eventData.data.deviceName; - console.log(this.RGV01.LevelPoint) - }else if(eventData.data.deviceCode=="RGV02"){ - this.RGV02.Automatic=eventData.data.automatic; - this.RGV02.Fault=eventData.data.fault; - this.RGV02.Running=eventData.data.running; - this.RGV02.LevelPoint=eventData.data.levelPoint; - this.RGV02.DeviceName=eventData.data.deviceName; - }else if(eventData.data.deviceCode=="RGV03"){ - this.RGV03.Automatic=eventData.data.automatic; - this.RGV03.Fault=eventData.data.fault; - this.RGV03.Running=eventData.data.running; - this.RGV03.LevelPoint=eventData.data.levelPoint; - this.RGV03.DeviceName=eventData.data.deviceName; + + if (eventData.data.deviceCode == "RGV01") { + this.RGV01.Automatic = x.Automatic == null ? "鏁呴殰" : x.Automatic; + this.RGV01.Fault = x.Fault == null ? "鏁呴殰" : x.Fault; + this.RGV01.Running = x.Running == null ? "鏁呴殰" : x.Running; + this.RGV01.LevelPoint = x.LevelPoint; + this.RGV01.DeviceName = x.DeviceName; + } else if (eventData.data.deviceCode == "RGV02") { + this.RGV02.Automatic = x.Automatic == null ? "鏁呴殰" : x.Automatic; + this.RGV02.Fault = x.Fault == null ? "鏁呴殰" : x.Fault; + this.RGV02.Running = x.Running == null ? "鏁呴殰" : x.Running; + this.RGV02.LevelPoint = x.LevelPoint; + this.RGV02.DeviceName = x.DeviceName; + } else if (eventData.data.deviceCode == "RGV03") { + this.RGV03.Automatic = x.Automatic == null ? "鏁呴殰" : x.Automatic; + this.RGV03.Fault = x.Fault == null ? "鏁呴殰" : x.Fault; + this.RGV03.Running = x.Running == null ? "鏁呴殰" : x.Running; + this.RGV03.LevelPoint = x.LevelPoint; + this.RGV03.DeviceName = x.DeviceName; } }); @@ -762,52 +840,54 @@ color: rgba(0, 195, 255, 0.822); margin-bottom: 12px; } + .dot-Running { - position: absolute; - top: -5px; - width: 20px; + position: absolute; + top: -5px; + width: 20px; height: 20px; - border-radius: 50%; - background-color: #409eff; - transition: transform 0.3s ease; - display: flex; - justify-content: center; - align-items: center; - font-size: 9px; - font-weight: bold; - color: white; + border-radius: 50%; + background-color: #409eff; + transition: transform 0.3s ease; + display: flex; + justify-content: center; + align-items: center; + font-size: 9px; + font-weight: bold; + color: white; } + .dot-Automatic { - position: absolute; - top: -5px; - width: 20px; + position: absolute; + top: -5px; + width: 20px; height: 20px; - border-radius: 50%; - background-color: #0df705; - transition: transform 0.3s ease; - display: flex; - justify-content: center; - align-items: center; - font-size: 9px; - font-weight: bold; - color: white; + border-radius: 50%; + background-color: #0df705; + transition: transform 0.3s ease; + display: flex; + justify-content: center; + align-items: center; + font-size: 9px; + font-weight: bold; + color: white; } .dot-Fault { - position: absolute; - top: -5px; - width: 20px; + position: absolute; + top: -5px; + width: 20px; height: 20px; /* right:0px; */ - border-radius: 50%; - background-color: #f80410; - transition: transform 0.3s ease; - display: flex; - justify-content: center; - align-items: center; - font-size: 9px; - font-weight: bold; - color: white; + border-radius: 50%; + background-color: #f80410; + transition: transform 0.3s ease; + display: flex; + justify-content: center; + align-items: center; + font-size: 9px; + font-weight: bold; + color: white; } @@ -816,9 +896,10 @@ height: 1280px; background-color: #ecf5ff; width: 20px; - top:30px; - left:200px + top: 30px; + left: 200px } + .RGVline { position: absolute; top: 0; @@ -827,6 +908,7 @@ height: 2px; background-color: #a0cfff; } + .line { position: absolute; top: 0; @@ -835,4 +917,7 @@ height: 2px; background-color: #a0cfff; } -</style> \ No newline at end of file + +:deep(.j-el-description) { + background-color: #e40e0e; +}</style> \ No newline at end of file diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineComponent copy.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineComponent copy.vue" index 5c5043c..cf55c98 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineComponent copy.vue" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineComponent copy.vue" @@ -83,6 +83,22 @@ </el-form-item> </el-col> </el-row> + + <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> + <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> + <el-form-item label="浣滀笟鐘舵��:"> + <el-input v-model="input" style="width: 240px" placeholder="Please input" /> + </el-form-item> + </el-col> + <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> + <el-form-item label="褰撳墠琛屽垪灞傦細"> + <j-el-description + :value="StackerCrane.CurrentRow + '-' + StackerCrane.CurrentColumn + '-' + StackerCrane.CurrentLayer" + type="primary" ellipsis></j-el-description> + </el-form-item> + </el-col> + </el-row> + </el-form> <template #footer> <div class="dialog-footer"> diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineComponent.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineComponent.vue" index d377da6..0aebd5a 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineComponent.vue" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineComponent.vue" @@ -20,7 +20,9 @@ <div class="line-container"> <div class="line"></div> <!-- <div class="dot" :style="{ right: dotPosition + 'px' }" ref="childDot" @click="mouseClick"></div> --> - <div :class="update()" :style="{ transform: `translateX(${StackerCrane.CurrentColumn<33?StackerCrane.CurrentColumn * 30-29:0}px)` }" ref="childDot" @click="mouseClick"></div> + <div :class="update()" + :style="{ transform: `translateX(${StackerCrane.CurrentColumn < 33 ? StackerCrane.CurrentColumn * 30 - 29 : 0}px)` }" + ref="childDot" @click="mouseClick"></div> </div> <div> <el-row style="padding-top: 5px;"> @@ -41,19 +43,17 @@ </el-row> </div> - <el-dialog v-model="dialogVisible" title="淇℃伅鏌ョ湅" :before-close="handleClose"> - <el-form ref="$form" :model="StackerCrane" label-position="left" label-width="100px" size="medium"> + <el-dialog v-model="dialogVisible" title="鍫嗗灈鏈轰俊鎭煡鐪�" :before-close="handleClose"> + <el-form ref="$form" :model="StackerCrane" label-position="left" label-width="120px" size="medium"> <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> <el-form-item label="璁惧缂栧彿锛�"> - <!-- <el-input v-model="equipNo"></el-input> --> <j-el-description :value="StackerCrane.DeviceName" type="primary" ellipsis></j-el-description> </el-form-item> </el-col> <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> <el-form-item label="璁惧鐘舵��:"> - <j-el-description :value="StackerCrane.Fault" type="primary" - ellipsis></j-el-description> + <j-el-description :value="StackerCrane.Fault" type="primary" ellipsis></j-el-description> </el-form-item> </el-col> </el-row> @@ -69,7 +69,7 @@ </el-form-item> </el-col> </el-row> - <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> + <el-row :gutter="20" type="flex" justify="start" align="top" tag="div" style="margin-bottom: 10px;"> <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> <el-form-item label="浣滀笟鐘舵��:"> <j-el-description :value="StackerCrane.Running" type="primary" ellipsis></j-el-description> @@ -81,6 +81,64 @@ :value="StackerCrane.CurrentRow + '-' + StackerCrane.CurrentColumn + '-' + StackerCrane.CurrentLayer" type="primary" ellipsis></j-el-description> </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20" type="flex" justify="start" align="top" tag="div" style="margin-bottom: 10px;"> + <el-col :span="24" :offset="0" :push="0" :pull="0" tag="div"> + <el-form-item label="鎶ヨ淇℃伅:"> + <j-el-description :value="StackerCrane.StackerAlarm" type="primary" ellipsis></j-el-description> + </el-form-item> + </el-col> + </el-row> + <el-divider /> + <h4 style="margin-bottom: 50px;">鎵嬪姩鎿嶄綔</h4> + <el-form ref="form" :model="form" label-width="90px"> + <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> + <el-col :span="16" :offset="0" :push="0" :pull="0" tag="div"> + <el-form-item label="浠诲姟鍛戒护" prop="TargetAddress"> + <el-select size="large" v-model="form.TaskType" placeholder="璇烽�夋嫨浠诲姟鍛戒护"> + <el-option label="鍏ュ簱" value="17" /> + <el-option label="鍑哄簱" value="18" /> + <el-option label="绉诲簱" value="20" /> + <el-option label="鍙栬揣" value="24" /> + <el-option label="鏀捐揣" value="48" /> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> + <el-col :span="16" :offset="0" :push="0" :pull="0" tag="div"> + <el-form-item label="璧风偣琛屽垪灞�:"> + <el-input size="large" v-model="form.SourceAddress" style="width: 800px" placeholder="璇疯緭鍏ヨ捣鐐硅鍒楀眰" /> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> + <el-col :span="16" :offset="0" :push="0" :pull="0" tag="div"> + <el-form-item label="缁堢偣琛屽垪灞�:"> + <el-input size="large" v-model="form.TargetAddress" style="width: 800px" placeholder="璇疯緭鍏ョ粓鐐硅鍒楀眰" /> + </el-form-item> + </el-col> + </el-row> + </el-form> + <el-divider /> + <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> + <el-col :span="8" :offset="0" :push="0" :pull="0" tag="div"> + <el-button type="primary" size="small" plain @click="start"> + <i class="el-icon-check">鍚姩</i> + </el-button> + + </el-col> + <el-col :span="8" :offset="0" :push="0" :pull="0" tag="div"> + <el-button type="warning" size="small" plain @click="reset"> + <i class="el-icon-check">澶嶄綅</i> + </el-button> + + </el-col> + <el-col :span="8" :offset="0" :push="0" :pull="0" tag="div"> + <el-button type="danger" size="small" plain @click="emergencyStop"> + <i class="el-icon-check">鎬ュ仠</i> + </el-button> </el-col> </el-row> </el-form> @@ -116,7 +174,15 @@ CurrentTaskNum: "", Running: "", DeviceName: "", - } + DeviceCode: "", + StackerAlarm:"", + }, + form: { + TaskType: "", + SourceAddress: "", + TargetAddress: "", + DeviceCode: "", + }, }; }, props: { @@ -135,31 +201,84 @@ }, methods: { moveDot(x) { - this.StackerCrane.Automatic=x.Automatic==null?"鏁呴殰":x.Automatic; - this.StackerCrane.Fault=x.Fault==null?"鏁呴殰":x.Fault; - this.StackerCrane.Running=x.Running==null?"鏁呴殰":x.Running; - this.StackerCrane.CurrentColumn=x.CurrentColumn==undefined?1:x.CurrentColumn; - this.StackerCrane.CurrentLayer=x.CurrentLayer==undefined?1:x.CurrentLayer; - this.StackerCrane.LevelPoint=x.LevelPoint; - this.StackerCrane.DeviceName=x.DeviceName; + this.StackerCrane.Automatic = x.Automatic == null ? "鏁呴殰" : x.Automatic; + this.StackerCrane.Fault = x.Fault == null ? "鏁呴殰" : x.Fault; + this.StackerCrane.Running = x.Running == null ? "鏁呴殰" : x.Running; + this.StackerCrane.CurrentColumn = x.CurrentColumn == undefined ? 1 : x.CurrentColumn; + this.StackerCrane.CurrentLayer = x.CurrentLayer == undefined ? 1 : x.CurrentLayer; + this.StackerCrane.LevelPoint = x.LevelPoint; + this.StackerCrane.DeviceName = x.DeviceName; + this.StackerCrane.StackerAlarm = x.StackerAlarm; + this.form.DeviceCode = x.DeviceCode; }, - update(){ - if(this.StackerCrane.Automatic=="鑱旀満妯″紡"&&this.StackerCrane.Fault!="鏁呴殰"&&this.StackerCrane.Running=="寰呮満"){ - return 'dot-Automatic '; - } - else if(this.StackerCrane.Automatic=="鑱旀満妯″紡"&&this.StackerCrane.Fault!="鏁呴殰"&&this.StackerCrane.Running=="杩愯涓�"){ - return 'dot-Running '; - }else if(this.StackerCrane.Fault=="鏁呴殰"){ - return 'dot-Fault '; - }else{ - return 'dot-Fault '; - } - }, + update() { + if (this.StackerCrane.Automatic == "鑱旀満妯″紡" && this.StackerCrane.Fault != "鏁呴殰" && this.StackerCrane.Running == "寰呮満") { + return 'dot-Automatic '; + } + else if (this.StackerCrane.Automatic == "鑱旀満妯″紡" && this.StackerCrane.Fault != "鏁呴殰" && this.StackerCrane.Running == "杩愯涓�") { + return 'dot-Running '; + } else if (this.StackerCrane.Fault == "鏁呴殰") { + return 'dot-Fault '; + } else { + return 'dot-Fault '; + } + }, mouseClick() { this.fullscreenLoading = true; this.dialogVisible = true; this.fullscreenLoading = false; }, + start() { + this.fullscreenLoading = true; + this.http.post("api/DeviceInfo/StackerHandTask", this.form) + .then((x) => { + if (!x.status) { + this.$message.error(x.message); + } else { + this.$Message.success("鍫嗗灈鏈哄懡浠ゅ凡涓嬪彂"); + // $vue.success("鎴愬姛."); + this.show = false; + $vue.refresh(); + } + }) + .finally(() => { + this.fullscreenLoading = false; + }); + }, reset() { + this.fullscreenLoading = true; + this.http.post("api/DeviceInfo/StackerReset?DeviceCode=" + this.form.DeviceCode) + .then((x) => { + if (!x.status) { + this.$message.error(x.message); + } else { + this.$Message.success("澶嶄綅鎴愬姛"); + // $vue.success("鎴愬姛."); + this.show = false; + $vue.refresh(); + } + }) + .finally(() => { + this.fullscreenLoading = false; + }); + }, + + emergencyStop() { + this.fullscreenLoading = true; + this.http.post("api/DeviceInfo/StackerEmergencyStop?DeviceCode=" + this.form.DeviceCode) + .then((x) => { + if (!x.status) { + this.$message.error(x.message); + } else { + this.$Message.success("鎬ュ仠宸叉寜涓�"); + // $vue.success("鎴愬姛."); + // this.show = false; + // $vue.refresh(); + } + }) + .finally(() => { + this.fullscreenLoading = false; + }); + } }, }; </script> @@ -196,6 +315,7 @@ font-weight: bold; color: white; } + .dot-Automatic { position: absolute; top: -5px; diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineInfocopy.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineInfocopy.vue" index 015c540..544ed9e 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineInfocopy.vue" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineInfocopy.vue" @@ -1,10 +1,11 @@ <template> - <div :class="update()" :style="{ left: left, top: top, marginBottom:0+'px',marginTop:15+'px'} " @click="mouseClick" v-loading.fullscreen.lock="fullscreenLoading"> + <div :class="update()" :style="{ left: left, top: top, marginBottom: 0 + 'px', marginTop: 15 + 'px' }" + @click="mouseClick" v-loading.fullscreen.lock="fullscreenLoading"> <img v-if="imgType === '2'" src="../../public/lines.png" /> <img v-if="imgType === '1'" src="../../public/lines2.png" /> <label v-if="equipNo" class="equip-no">{{ equipNo }}</label> </div> - <el-dialog v-model="dialogVisible" title="淇℃伅鏌ョ湅" :before-close="handleClose"> + <el-dialog v-model="dialogVisible" title="杈撻�佺嚎淇℃伅鏌ョ湅" :before-close="handleClose"> <el-form ref="$form" :model="lineItemInfo" label-position="left" label-width="100px" size="medium"> <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> @@ -14,26 +15,78 @@ </el-col> <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> <el-form-item label="鏄惁鏈夌洏:"> - <j-el-description :value="lineItemInfo.r_Line_HasPallet" type="primary" - ellipsis></j-el-description> + <j-el-description :value="lineItemInfo.r_Line_HasPallet" type="primary" ellipsis></j-el-description> </el-form-item> </el-col> </el-row> <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> <el-form-item label="鎵樼洏鏉$爜:"> - <j-el-description :value="lineItemInfo.r_Line_Barcode" type="primary" - ellipsis></j-el-description> + <j-el-description :value="lineItemInfo.r_Line_Barcode" type="primary" ellipsis></j-el-description> </el-form-item> </el-col> <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> <el-form-item label="鎶ヨ浠g爜锛�"> - <j-el-description :value="lineItemInfo.r_Line_ErrorCode" type="primary" - ellipsis></j-el-description> + <j-el-description :value="lineItemInfo.r_Line_ErrorCode" type="primary" ellipsis></j-el-description> + </el-form-item> + </el-col> + </el-row> + + </el-form><el-divider /> + <h4 style="margin-bottom: 20px;">鎵嬪姩鎿嶄綔</h4> + <el-form ref="form" :model="form" label-width="100px"> + <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> + <el-col :span="16" :offset="0" :push="0" :pull="0" tag="div"> + <el-form-item label="浠� 鍔� 鍛� 浠�" prop="TargetAddress"> + <el-select size="large" v-model="form.TaskType" placeholder="璇烽�夋嫨浠诲姟鍛戒护"> + <el-option label="鍏ュ簱" value="1" /> + <el-option label="鍑哄簱" value="2" /> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> + <el-col :span="16" :offset="0" :push="0" :pull="0" tag="div"> + <el-form-item label="涓嬩竴鐩爣鍦板潃:"> + <el-input size="large" v-model="form.SourceAddress" placeholder="璇疯緭鍏ヨ捣鐐硅鍒楀眰" /> </el-form-item> </el-col> </el-row> </el-form> + <el-divider /> + <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> + <el-col :span="4" :offset="0" :push="0" :pull="0" tag="div"> + <el-button type="primary" size="small" plain @click="SendCommand"> + <i class="el-icon-check">鍙戦�佸懡浠�</i> + </el-button> + </el-col> + <el-col :span="4" :offset="0" :push="0" :pull="0" tag="div"> + <el-button type="warning" size="small" plain @click="ConveyorLineReset"> + <i class="el-icon-check">澶嶄綅</i> + </el-button> + + </el-col> + <el-col :span="4" :offset="0" :push="0" :pull="0" tag="div"> + <el-button type="danger" size="small" plain @click="ConveyorLineEmergencyStop"> + <i class="el-icon-check">鍋滄</i> + </el-button> + </el-col> + <el-col :span="4" :offset="0" :push="0" :pull="0" tag="div"> + <el-button type="danger" size="small" plain @click="ConveyorLineReturn"> + <i class="el-icon-check">閫�鍥�</i> + </el-button> + </el-col> + <el-col :span="4" :offset="0" :push="0" :pull="0" tag="div"> + <el-button type="danger" size="small" plain @click="ConveyorLineCancel"> + <i class="el-icon-check">鍙栨秷浠诲姟</i> + </el-button> + </el-col> + <el-col :span="4" :offset="0" :push="0" :pull="0" tag="div"> + <el-button type="danger" size="small" plain @click="ConveyorLineInitialize"> + <i class="el-icon-check">宸ヤ綅鍒濆鍖�</i> + </el-button> + </el-col> + </el-row> <template #footer> <div class="dialog-footer"> <el-button @click="dialogVisible = false">鍙栨秷</el-button> @@ -77,7 +130,7 @@ type: String, default: "", }, - condition:{ + condition: { type: Boolean, default: false, }, @@ -94,6 +147,11 @@ r_Line_ErrorCode: "", r_Line_Target: "", }, + form: { + TaskType: "", + TargetAddress: "", + DeviceCode: "", + }, }; }, mounted() { @@ -109,25 +167,110 @@ this.fullscreenLoading = true; this.dialogVisible = true; // 澶勭悊鐐瑰嚮浜嬩欢 - if (this.url != "") { - this.http.post(this.url + "?equipNo=" + this.equipNo, null, "") - .then((x) => { - if (x.status) { - this.lineItemInfo = x.data; - } else { - this.$message({ - type: "error", - message: x.message, - }); - } - }); - } + this.http.post("api/DeviceInfo/GetConveyorLineInfo?DeviceChildCode=" + this.equipNo, null, "") + .then((x) => { + if (x.status) { + this.lineItemInfo = x.data; + } else { + this.$message({ + type: "error", + message: x.message, + }); + } + }); + this.fullscreenLoading = false; - // this.dialogVisible = false; }, - - update(){ - return !this.condition ? 'custom-img' : 'custom-img-color' + + SendCommand() { + this.fullscreenLoading = true; + this.form.DeviceCode=this.equipNo; + this.http.post("api/DeviceInfo/ConveyorLineHandTask" ,this.form) + .then((x) => { + if (!x.status) { + this.$message.error(x.message); + } else { + this.$Message.success(x.message); + } + }) + .finally(() => { + this.fullscreenLoading = false; + }); + }, + ConveyorLineReset() { + this.fullscreenLoading = true; + this.http.post("api/DeviceInfo/ConveyorLineReset?DeviceChildCode=" + this.equipNo, null, "") + .then((x) => { + if (!x.status) { + this.$message.error(x.message); + } else { + this.$Message.success(x.message); + + } + }) + .finally(() => { + this.fullscreenLoading = false; + }); + }, + ConveyorLineEmergencyStop() { + this.fullscreenLoading = true; + this.http.post("api/DeviceInfo/ConveyorLineEmergencyStop?DeviceChildCode=" + this.equipNo, null, "") + .then((x) => { + if (!x.status) { + this.$message.error(x.message); + } else { + this.$Message.success(x.message); + + } + }) + .finally(() => { + this.fullscreenLoading = false; + }); + }, + ConveyorLineReturn() { + this.fullscreenLoading = true; + this.http.post("api/DeviceInfo/ConveyorLineReturn?DeviceChildCode=" + this.equipNo, null, "") + .then((x) => { + if (!x.status) { + this.$message.error(x.message); + } else { + this.$Message.success(x.message); + } + }) + .finally(() => { + this.fullscreenLoading = false; + }); + }, + ConveyorLineCancel() { + this.fullscreenLoading = true; + this.http.post("api/DeviceInfo/ConveyorLineCancel?DeviceChildCode=" + this.equipNo, null, "") + .then((x) => { + if (!x.status) { + this.$message.error(x.message); + } else { + this.$Message.success(x.message); + } + }) + .finally(() => { + this.fullscreenLoading = false; + }); + }, + ConveyorLineInitialize() { + this.fullscreenLoading = true; + this.http.post("api/DeviceInfo/ConveyorLineInitialize?DeviceChildCode=" + this.equipNo, null, "") + .then((x) => { + if (!x.status) { + this.$message.error(x.message); + } else { + this.$Message.success(x.message); + } + }) + .finally(() => { + this.fullscreenLoading = false; + }); + }, + update() { + return !this.condition ? 'custom-img' : 'custom-img-color' }, startTimer() { // 寮�鍚畾鏃跺櫒锛屾瘡3绉掓墽琛屼竴娆� @@ -145,10 +288,11 @@ display: inline-block; /* background-color: #d9ecff ; */ } + .custom-img-color { position: relative; display: inline-block; - background-color: #05fa7f ; + background-color: #05fa7f; color: white; text-align: center; } @@ -168,6 +312,7 @@ width: 40px; height: 40px; } + .custom-img-color img { width: 40px; height: 40px; diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.suo" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.suo" index f147b03..784ae71 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.suo" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.suo" Binary files differ diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json" index cc8311d..7722730 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json" @@ -3,36 +3,40 @@ "WorkspaceRootPath": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\conveyorlinejob\\task\\requestinbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\conveyorlinejob\\task\\requestinbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\stackercranejob\\stackercranedbname.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\stackercranedbname.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_quartzjob\\service\\deviceinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\service\\deviceinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\quartzjob\\deviceinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\quartzjob\\deviceinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\rgvjob\\commonrgvjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\rgvjob\\commonrgvjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_quartzjob\\service\\ideviceinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\service\\ideviceinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\rgvjob_firstfloor\\commonrgv_firstfloorjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\rgvjob_firstfloor\\commonrgv_firstfloorjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\rgvjob\\commonrgvjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\rgvjob\\commonrgvjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{C2D3D138-9109-481B-8BEB-A27597890B2C}|WIDESEAWCS_DTO\\WIDESEAWCS_DTO.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_dto\\enum\\taskstatusenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{C2D3D138-9109-481B-8BEB-A27597890B2C}|WIDESEAWCS_DTO\\WIDESEAWCS_DTO.csproj|solutionrelative:wideseawcs_dto\\enum\\taskstatusenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|solutionrelative:wideseawcs_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\conveyorlinejob\\task\\requestinbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\conveyorlinejob\\task\\requestinbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" } ], "DocumentGroupContainers": [ @@ -54,107 +58,120 @@ }, { "$type": "Document", - "DocumentIndex": 6, - "Title": "TaskStatusEnum.cs", - "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\Enum\\TaskStatusEnum.cs", - "RelativeDocumentMoniker": "WIDESEAWCS_DTO\\Enum\\TaskStatusEnum.cs", - "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\Enum\\TaskStatusEnum.cs", - "RelativeToolTip": "WIDESEAWCS_DTO\\Enum\\TaskStatusEnum.cs", - "ViewState": "AgIAAEUAAAAAAAAAAAAewFQAAAAMAAAAAAAAAA==", + "DocumentIndex": 1, + "Title": "StackerCraneDBName.cs", + "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs", + "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs", + "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs", + "ViewState": "AgIAAG4AAAAAAAAAAADwv5EAAAAQAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-29T03:10:22.341Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 3, - "Title": "CommonConveyorLineJob.cs", - "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs", - "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs", - "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs", - "RelativeToolTip": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs", - "ViewState": "AgIAALEAAAAAAAAAAAAvwNIAAAAlAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-24T03:47:03.579Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 5, - "Title": "CommonRGV_FirstFloorJob.cs", - "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RGVJob_FirstFloor\\CommonRGV_FirstFloorJob.cs", - "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\RGVJob_FirstFloor\\CommonRGV_FirstFloorJob.cs", - "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RGVJob_FirstFloor\\CommonRGV_FirstFloorJob.cs", - "RelativeToolTip": "WIDESEAWCS_Tasks\\RGVJob_FirstFloor\\CommonRGV_FirstFloorJob.cs", - "ViewState": "AgIAAMsCAAAAAAAAAAD4v+QCAAA7AAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-28T02:06:53.534Z", + "WhenOpened": "2025-07-30T05:32:19.549Z", "EditorCaption": "" }, { "$type": "Document", "DocumentIndex": 2, + "Title": "DeviceInfoService.cs", + "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\DeviceInfoService.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Service\\DeviceInfoService.cs", + "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\DeviceInfoService.cs", + "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Service\\DeviceInfoService.cs", + "ViewState": "AgIAAOQBAAAAAAAAAAA4wPgBAAA/AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-30T01:59:05.153Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 8, "Title": "RequestInbound.cs", "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\Task\\RequestInbound.cs", "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ConveyorLineJob\\Task\\RequestInbound.cs", "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\Task\\RequestInbound.cs", "RelativeToolTip": "WIDESEAWCS_Tasks\\ConveyorLineJob\\Task\\RequestInbound.cs", - "ViewState": "AgIAABQAAAAAAAAAAAAowC4AAAAxAAAAAAAAAA==", + "ViewState": "AgIAADQAAAAAAAAAAAAWwDgAAACkAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-24T04:21:01.123Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 4, - "Title": "CommonRGVJob.cs", - "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RGVJob\\CommonRGVJob.cs", - "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\RGVJob\\CommonRGVJob.cs", - "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RGVJob\\CommonRGVJob.cs", - "RelativeToolTip": "WIDESEAWCS_Tasks\\RGVJob\\CommonRGVJob.cs", - "ViewState": "AgIAAJIAAAAAAAAAAAAAAKsAAACWAAAAAAAAAA==", + "DocumentIndex": 7, + "Title": "TaskStatusEnum.cs", + "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\Enum\\TaskStatusEnum.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_DTO\\Enum\\TaskStatusEnum.cs", + "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\Enum\\TaskStatusEnum.cs", + "RelativeToolTip": "WIDESEAWCS_DTO\\Enum\\TaskStatusEnum.cs", + "ViewState": "AgIAAMcAAAAAAAAAAAAAwM8AAAAeAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-28T04:13:17.74Z", + "WhenOpened": "2025-07-29T03:10:22.341Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "CommonConveyorLineJob.cs", + "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs", + "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs", + "RelativeToolTip": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs", + "ViewState": "AgIAAAgBAAAAAAAAAAD4vx4BAACTAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-24T03:47:03.579Z", "EditorCaption": "" }, { "$type": "Document", "DocumentIndex": 0, - "Title": "TaskService.cs", - "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs", - "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskService.cs", - "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs", - "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\TaskService.cs", - "ViewState": "AgIAALkCAAAAAAAAAAAAAJwCAABKAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-24T03:47:03.559Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 7, - "Title": "ITaskService.cs", - "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITaskInfoService\\ITaskService.cs", - "RelativeDocumentMoniker": "WIDESEAWCS_ITaskInfoService\\ITaskService.cs", - "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITaskInfoService\\ITaskService.cs", - "RelativeToolTip": "WIDESEAWCS_ITaskInfoService\\ITaskService.cs", - "ViewState": "AgIAAFIAAAAAAAAAAAAnwGIAAAAiAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-28T11:23:22.437Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 1, "Title": "CommonStackerCraneJob.cs", "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs", "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs", "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs", "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs", - "ViewState": "AgIAAMUAAAAAAAAAAAAUwNQAAABEAAAAAAAAAA==", + "ViewState": "AgIAAHIAAAAAAAAAAAAuwKgAAAAkAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-24T03:54:34.335Z", "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "IDeviceInfoService.cs", + "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\IDeviceInfoService.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Service\\IDeviceInfoService.cs", + "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\IDeviceInfoService.cs", + "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Service\\IDeviceInfoService.cs", + "ViewState": "AgIAACwAAAAAAAAAAAAcwEcAAAAoAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-30T02:35:39.48Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "DeviceInfoController.cs", + "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceInfoController.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceInfoController.cs", + "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceInfoController.cs", + "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceInfoController.cs", + "ViewState": "AgIAACoAAAAAAAAAAAAMwDkAAAAqAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-30T02:36:25.787Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "CommonRGVJob.cs", + "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RGVJob\\CommonRGVJob.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\RGVJob\\CommonRGVJob.cs", + "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RGVJob\\CommonRGVJob.cs", + "RelativeToolTip": "WIDESEAWCS_Tasks\\RGVJob\\CommonRGVJob.cs", + "ViewState": "AgIAAJwAAAAAAAAAAAAQwKsAAACWAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-28T04:13:17.74Z", + "EditorCaption": "" } ] } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json" index fb1863b..8ddf200 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json" @@ -3,24 +3,28 @@ "WorkspaceRootPath": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\rgvjob_firstfloor\\commonrgv_firstfloorjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\rgvjob_firstfloor\\commonrgv_firstfloorjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\conveyorlinejob\\task\\requestinbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\conveyorlinejob\\task\\requestinbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\stackercranejob\\stackercranedbname.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\stackercranedbname.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_quartzjob\\service\\deviceinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\service\\deviceinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\quartzjob\\deviceinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\quartzjob\\deviceinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_quartzjob\\service\\ideviceinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\service\\ideviceinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\rgvjob\\commonrgvjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", @@ -31,8 +35,8 @@ "RelativeMoniker": "D:0:0:{C2D3D138-9109-481B-8BEB-A27597890B2C}|WIDESEAWCS_DTO\\WIDESEAWCS_DTO.csproj|solutionrelative:wideseawcs_dto\\enum\\taskstatusenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|solutionrelative:wideseawcs_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\aotansiwcs\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\conveyorlinejob\\task\\requestinbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\conveyorlinejob\\task\\requestinbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" } ], "DocumentGroupContainers": [ @@ -42,7 +46,7 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 4, + "SelectedChildIndex": 7, "Children": [ { "$type": "Bookmark", @@ -54,13 +58,52 @@ }, { "$type": "Document", - "DocumentIndex": 6, + "DocumentIndex": 1, + "Title": "StackerCraneDBName.cs", + "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs", + "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs", + "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs", + "ViewState": "AgIAAG4AAAAAAAAAAADwv5EAAAAQAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-30T05:32:19.549Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "DeviceInfoService.cs", + "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\DeviceInfoService.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Service\\DeviceInfoService.cs", + "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\DeviceInfoService.cs", + "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Service\\DeviceInfoService.cs", + "ViewState": "AgIAAOQBAAAAAAAAAAA4wPgBAAA/AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-30T01:59:05.153Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 8, + "Title": "RequestInbound.cs", + "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\Task\\RequestInbound.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ConveyorLineJob\\Task\\RequestInbound.cs", + "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\Task\\RequestInbound.cs", + "RelativeToolTip": "WIDESEAWCS_Tasks\\ConveyorLineJob\\Task\\RequestInbound.cs", + "ViewState": "AgIAADQAAAAAAAAAAAAWwDgAAACkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-24T04:21:01.123Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 7, "Title": "TaskStatusEnum.cs", "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\Enum\\TaskStatusEnum.cs", "RelativeDocumentMoniker": "WIDESEAWCS_DTO\\Enum\\TaskStatusEnum.cs", "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\Enum\\TaskStatusEnum.cs", "RelativeToolTip": "WIDESEAWCS_DTO\\Enum\\TaskStatusEnum.cs", - "ViewState": "AgIAAEUAAAAAAAAAAAAewFQAAAAMAAAAAAAAAA==", + "ViewState": "AgIAAMcAAAAAAAAAAAAAwM8AAAAeAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-29T03:10:22.341Z", "EditorCaption": "" @@ -73,7 +116,7 @@ "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs", "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs", "RelativeToolTip": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs", - "ViewState": "AgIAALEAAAAAAAAAAAAvwNIAAAAlAAAAAAAAAA==", + "ViewState": "AgIAAAgBAAAAAAAAAAD4vx4BAACTAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-24T03:47:03.579Z", "EditorCaption": "" @@ -81,79 +124,53 @@ { "$type": "Document", "DocumentIndex": 0, - "Title": "CommonRGV_FirstFloorJob.cs", - "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RGVJob_FirstFloor\\CommonRGV_FirstFloorJob.cs", - "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\RGVJob_FirstFloor\\CommonRGV_FirstFloorJob.cs", - "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RGVJob_FirstFloor\\CommonRGV_FirstFloorJob.cs", - "RelativeToolTip": "WIDESEAWCS_Tasks\\RGVJob_FirstFloor\\CommonRGV_FirstFloorJob.cs", - "ViewState": "AgIAAL8AAAAAAAAAAAAtwNUAAAAcAAAAAAAAAA==", + "Title": "CommonStackerCraneJob.cs", + "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs", + "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs*", + "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs*", + "ViewState": "AgIAAGMAAAAAAAAAAAAuwKgAAACSAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-28T02:06:53.534Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 3, - "Title": "RequestInbound.cs", - "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\Task\\RequestInbound.cs", - "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ConveyorLineJob\\Task\\RequestInbound.cs", - "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\Task\\RequestInbound.cs", - "RelativeToolTip": "WIDESEAWCS_Tasks\\ConveyorLineJob\\Task\\RequestInbound.cs", - "ViewState": "AgIAABQAAAAAAAAAAAAowC4AAAAxAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-24T04:21:01.123Z", + "WhenOpened": "2025-07-24T03:54:34.335Z", "EditorCaption": "" }, { "$type": "Document", "DocumentIndex": 5, + "Title": "IDeviceInfoService.cs", + "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\IDeviceInfoService.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Service\\IDeviceInfoService.cs", + "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\IDeviceInfoService.cs", + "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Service\\IDeviceInfoService.cs", + "ViewState": "AgIAACwAAAAAAAAAAAAcwEcAAAAoAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-30T02:35:39.48Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "DeviceInfoController.cs", + "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceInfoController.cs", + "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceInfoController.cs", + "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceInfoController.cs", + "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceInfoController.cs", + "ViewState": "AgIAACoAAAAAAAAAAAAMwDkAAAAqAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-30T02:36:25.787Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 6, "Title": "CommonRGVJob.cs", "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RGVJob\\CommonRGVJob.cs", "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\RGVJob\\CommonRGVJob.cs", "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RGVJob\\CommonRGVJob.cs", "RelativeToolTip": "WIDESEAWCS_Tasks\\RGVJob\\CommonRGVJob.cs", - "ViewState": "AgIAAJIAAAAAAAAAAAAAAKsAAACWAAAAAAAAAA==", + "ViewState": "AgIAAJwAAAAAAAAAAAAQwKsAAACWAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-28T04:13:17.74Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 1, - "Title": "TaskService.cs", - "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs", - "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskService.cs", - "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs", - "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\TaskService.cs", - "ViewState": "AgIAAH0CAAAAAAAAAAAuwJwCAABKAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-24T03:47:03.559Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 7, - "Title": "ITaskService.cs", - "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITaskInfoService\\ITaskService.cs", - "RelativeDocumentMoniker": "WIDESEAWCS_ITaskInfoService\\ITaskService.cs", - "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITaskInfoService\\ITaskService.cs", - "RelativeToolTip": "WIDESEAWCS_ITaskInfoService\\ITaskService.cs", - "ViewState": "AgIAAFIAAAAAAAAAAAAnwGIAAAAiAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-28T11:23:22.437Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 2, - "Title": "CommonStackerCraneJob.cs", - "DocumentMoniker": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs", - "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs", - "ToolTip": "E:\\GET\\AoTanSiWCS\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs", - "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs", - "ViewState": "AgIAAMUAAAAAAAAAAAAUwNQAAABEAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-24T03:54:34.335Z", "EditorCaption": "" } ] diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/HandTask/StackerHandTask.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/HandTask/StackerHandTask.cs" new file mode 100644 index 0000000..c5681e9 --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/HandTask/StackerHandTask.cs" @@ -0,0 +1,16 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEAWCS_DTO.StackerHandTask +{ + public class HandTask + { + public string DeviceCode { get; set; } + public string TaskType { get; set; } + public string SourceAddress { get; set; } + public string TargetAddress { get; set; } + } +} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DeviceInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DeviceInfoService.cs" index f6551e1..c96806a 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DeviceInfoService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DeviceInfoService.cs" @@ -16,31 +16,41 @@ #endregion << 鐗� 鏈� 娉� 閲� >> using AutoMapper; +using HslCommunication; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using WIDESEAWCS_BasicInfoRepository; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseRepository; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_Core.Helper; +using WIDESEAWCS_DTO.StackerHandTask; +using WIDESEAWCS_IBasicInfoRepository; +using WIDESEAWCS_Model.BasicInfo; +using WIDESEAWCS_QuartzJob.DeviceBase; using WIDESEAWCS_QuartzJob.DeviceEnum; using WIDESEAWCS_QuartzJob.DTO; using WIDESEAWCS_QuartzJob.Models; using WIDESEAWCS_QuartzJob.Repository; +using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database; +using static WIDESEAWCS_QuartzJob.Service.DeviceInfoService; namespace WIDESEAWCS_QuartzJob.Service { public class DeviceInfoService : ServiceBase<Dt_DeviceInfo, IDeviceInfoRepository>, IDeviceInfoService { private readonly IUnitOfWorkManage _unitOfWorkManage; + private readonly IDt_StationManagerRepository _stationManagerRepository; private readonly IMapper _mapper; - public DeviceInfoService(IDeviceInfoRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IMapper mapper) : base(BaseDal) + public DeviceInfoService(IDeviceInfoRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IMapper mapper, IDt_StationManagerRepository stationManagerRepository) : base(BaseDal) { _unitOfWorkManage = unitOfWorkManage; _mapper = mapper; + _stationManagerRepository = stationManagerRepository; } public override WebResponseContent AddData(SaveModel saveModel) @@ -57,5 +67,666 @@ List<Dt_DeviceInfo> deviceInfos = await Db.Queryable<Dt_DeviceInfo>().Where(x => x.DeviceStatus == ((int)DeviceStatusEnum.Enable).ToString()).Includes(x => x.ProtocolList).ToListAsync(); return _mapper.Map<List<DeviceInfoDTO>>(deviceInfos); } + + #region 鍫嗗灈鏈烘墜鍔ㄥ懡浠� + + public WebResponseContent StackerHandTask(HandTask stackerhand) + { + WebResponseContent content = new WebResponseContent(); + try + { + StackerCraneTaskCommand stackerCraneTaskCommand = new StackerCraneTaskCommand(); + + if (stackerhand == null || stackerhand.TaskType == "") + { + return content.Error("璇疯緭鍏ヤ换鍔″懡浠�"); + } + stackerCraneTaskCommand.WorkType = (byte)Convert.ToSByte(stackerhand.TaskType); + //鍏ュ簱 + if (stackerhand.TaskType == "17") + { + string[] sourceCodes = stackerhand.SourceAddress.Split("-"); + if (sourceCodes.Length == 3) + { + stackerCraneTaskCommand.StartRow = (byte)Convert.ToSByte(sourceCodes[0]); + stackerCraneTaskCommand.StartColumn = (byte)Convert.ToSByte(sourceCodes[1]); + stackerCraneTaskCommand.StartLayer = (byte)Convert.ToSByte(sourceCodes[2]); + } + else + { + return content.Error($"璧风偣閿欒锛氥�恵stackerhand.SourceAddress}銆�"); + } + + string[] targetCodes = stackerhand.TargetAddress.Split("-"); + if (targetCodes.Length == 3) + { + stackerCraneTaskCommand.EndRow = (byte)Convert.ToSByte(targetCodes[0]); + stackerCraneTaskCommand.EndColumn = (byte)Convert.ToSByte(targetCodes[1]); + stackerCraneTaskCommand.EndLayer = (byte)Convert.ToSByte(targetCodes[2]); + } + else + { + return content.Error($"缁堢偣閿欒锛氥�恵stackerhand.TargetAddress}銆�"); + } + } + //鍑哄簱 + else if (stackerhand.TaskType == "18") + { + string[] sourceCodes = stackerhand.SourceAddress.Split("-"); + if (sourceCodes.Length == 3) + { + stackerCraneTaskCommand.StartRow = (byte)Convert.ToSByte(sourceCodes[0]); + stackerCraneTaskCommand.StartColumn = (byte)Convert.ToSByte(sourceCodes[1]); + stackerCraneTaskCommand.StartLayer = (byte)Convert.ToSByte(sourceCodes[2]); + } + else + { + return content.Error($"璧风偣閿欒锛氥�恵stackerhand.SourceAddress}銆�"); + } + string[] targetCodes = stackerhand.TargetAddress.Split("-"); + if (targetCodes.Length == 3) + { + stackerCraneTaskCommand.EndRow = (byte)Convert.ToSByte(targetCodes[0]); + stackerCraneTaskCommand.EndColumn = (byte)Convert.ToSByte(targetCodes[1]); + stackerCraneTaskCommand.EndLayer = (byte)Convert.ToSByte(targetCodes[2]); + } + else + { + return content.Error($"缁堢偣閿欒锛氥�恵stackerhand.TargetAddress}銆�"); + } + } + //绉诲簱 + else if (stackerhand.TaskType == "20") + { + string[] sourceCodes = stackerhand.SourceAddress.Split("-"); + if (sourceCodes.Length == 3) + { + stackerCraneTaskCommand.StartRow = (byte)Convert.ToSByte(sourceCodes[0]); + stackerCraneTaskCommand.StartColumn = (byte)Convert.ToSByte(sourceCodes[1]); + stackerCraneTaskCommand.StartLayer = (byte)Convert.ToSByte(sourceCodes[2]); + } + else + { + return content.Error($"璧风偣閿欒锛氥�恵stackerhand.SourceAddress}銆�"); + } + + string[] targetCodes = stackerhand.TargetAddress.Split("-"); + if (targetCodes.Length == 3) + { + stackerCraneTaskCommand.EndRow = (byte)Convert.ToSByte(targetCodes[0]); + stackerCraneTaskCommand.EndColumn = (byte)Convert.ToSByte(targetCodes[1]); + stackerCraneTaskCommand.EndLayer = (byte)Convert.ToSByte(targetCodes[2]); + } + else + { + return content.Error($"缁堢偣閿欒锛氥�恵stackerhand.TargetAddress}銆�"); + } + } + //鍙栬揣 + else if (stackerhand.TaskType == "24") + { + string[] sourceCodes = stackerhand.SourceAddress.Split("-"); + if (sourceCodes.Length == 3) + { + stackerCraneTaskCommand.StartRow = (byte)Convert.ToSByte(sourceCodes[0]); + stackerCraneTaskCommand.StartColumn = (byte)Convert.ToSByte(sourceCodes[1]); + stackerCraneTaskCommand.StartLayer = (byte)Convert.ToSByte(sourceCodes[2]); + + stackerCraneTaskCommand.EndRow = (byte)Convert.ToSByte(0); + stackerCraneTaskCommand.EndColumn = (byte)Convert.ToSByte(0); + stackerCraneTaskCommand.EndLayer = (byte)Convert.ToSByte(0); + } + else + { + return content.Error($"璧风偣閿欒锛氥�恵stackerhand.SourceAddress}銆�"); + } + } + //鏀捐揣 + else if (stackerhand.TaskType == "48") + { + string[] targetCodes = stackerhand.TargetAddress.Split("-"); + if (targetCodes.Length == 3) + { + stackerCraneTaskCommand.StartRow = (byte)Convert.ToSByte(0); + stackerCraneTaskCommand.StartColumn = (byte)Convert.ToSByte(0); + stackerCraneTaskCommand.StartLayer = (byte)Convert.ToSByte(0); + + stackerCraneTaskCommand.EndRow = (byte)Convert.ToSByte(targetCodes[0]); + stackerCraneTaskCommand.EndColumn = (byte)Convert.ToSByte(targetCodes[1]); + stackerCraneTaskCommand.EndLayer = (byte)Convert.ToSByte(targetCodes[2]); + } + else + { + return content.Error($"缁堢偣閿欒锛氥�恵stackerhand.SourceAddress}銆�"); + } + } + else + { + return content.Error("鏈壘鍒颁换鍔″懡浠�"); + } + StackerSendCommand(stackerCraneTaskCommand, stackerhand.DeviceCode); + return content; + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + } + + public WebResponseContent StackerReset(string DeviceCode) + { + WebResponseContent content = new WebResponseContent(); + try + { + IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == DeviceCode); + + if (device != null) + { + CommonStackerCrane commonStackerCrane = (CommonStackerCrane)device; + + commonStackerCrane.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(2)); + return content.OK(); + } + else + { + return content.Error("鏈壘鍒拌澶囦俊鎭鑱旂郴IT"); + } + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + } + + public WebResponseContent StackerEmergencyStop(string DeviceCode) + { + WebResponseContent content = new WebResponseContent(); + try + { + IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == DeviceCode); + + if (device != null) + { + CommonStackerCrane commonStackerCrane = (CommonStackerCrane)device; + + commonStackerCrane.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(2)); + return content.OK(); + } + else + { + return content.Error("鏈壘鍒拌澶囦俊鎭鑱旂郴IT"); + } + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + } + + public void StackerSendCommand(StackerCraneTaskCommand? command,string DeviceCode) + { + IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == DeviceCode); + + if (device != null) + { + CommonStackerCrane commonStackerCrane = (CommonStackerCrane)device; + if (commonStackerCrane.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.Automatic) && !commonStackerCrane.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.Fault) && !commonStackerCrane.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.Running)) + { + commonStackerCrane.SetValue(StackerCraneDBName.TaskNum, (short)Convert.ToInt16(1)); + Thread.Sleep(100); + + commonStackerCrane.SetValue(StackerCraneDBName.StartRow, command.StartRow); + Thread.Sleep(100); + + commonStackerCrane.SetValue(StackerCraneDBName.StartColumn, command.StartColumn); + Thread.Sleep(100); + + commonStackerCrane.SetValue(StackerCraneDBName.StartColumn, command.StartLayer); + Thread.Sleep(100); + + commonStackerCrane.SetValue(StackerCraneDBName.EndRow, command.EndRow); + Thread.Sleep(100); + + commonStackerCrane.SetValue(StackerCraneDBName.EndColumn, command.EndColumn); + Thread.Sleep(100); + commonStackerCrane.SetValue(StackerCraneDBName.EndLayer, command.EndLayer); + Thread.Sleep(100); + commonStackerCrane.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(command.WorkType)); + } + else + { + throw new Exception("璇峰湪鍫嗗灈鏈鸿仈鏈烘ā寮忋�佸緟鏈虹姸鎬併�佹棤鏁呴殰鐨勬儏鍐典笅涓嬪彂浠诲姟"); + } + } + else + { + throw new Exception("鏈壘鍒拌澶囦俊鎭鑱旂郴IT"); + } + } + + + public class StackerCraneTaskCommand + { + #region <Public Menber> + + /// <summary> + /// 璧峰琛� + /// </summary> + public byte StartRow { get; set; } + + /// <summary> + /// 璧峰鍒� + /// </summary> + public byte StartColumn { get; set; } + + /// <summary> + /// 璧峰灞� + /// </summary> + public byte StartLayer { get; set; } + + /// <summary> + /// 鐩爣琛� + /// </summary> + public byte EndRow { get; set; } + + /// <summary> + /// 鐩爣鍒� + /// </summary> + public byte EndColumn { get; set; } + + /// <summary> + /// 鐩爣灞� + /// </summary> + public byte EndLayer { get; set; } + + + /// <summary> + /// 浣滀笟绫诲瀷 + /// </summary> + public byte WorkType { get; set; } + + + /// <summary> + /// 棰勭暀瀛楄妭 + /// </summary> + public byte Spare { get; set; } + + /// <summary> + /// 浠诲姟鍙� + /// </summary> + public short TaskNum { get; set; } + + #endregion <Public Menber> + } + public enum StackerCraneDBName + { + /// <summary> + /// 浠诲姟鍙� + /// </summary> + TaskNum, + + /// <summary> + /// 浣滀笟绫诲瀷 + /// </summary> + WorkType, + + /// <summary> + /// 璧峰琛� + /// </summary> + StartRow, + + /// <summary> + /// 璧峰鍒� + /// </summary> + StartColumn, + + /// <summary> + /// 璧峰灞� + /// </summary> + StartLayer, + + /// <summary> + /// 鐩爣琛� + /// </summary> + EndRow, + + /// <summary> + /// 鐩爣鍒� + /// </summary> + EndColumn, + + /// <summary> + /// 鐩爣灞� + /// </summary> + EndLayer, + + /// <summary> + /// 鎵樼洏鍙� + /// </summary> + Barcode, + + /// <summary> + /// 璧风偣 + /// </summary> + StartAddress, + + /// <summary> + /// 缁堢偣 + /// </summary> + EndAddress, + + /// <summary> + /// 浠诲姟瀹屾垚 + /// </summary> + TaskCompleted, + + /// <summary> + /// 浠诲姟鍙戦�� + /// </summary> + SendTask, + + /// <summary> + /// 鑷姩鐘舵�� + /// </summary> + Automatic, + + /// <summary> + /// 浣滀笟瀹屾垚 + /// </summary> + WorkCompleted, + + /// <summary> + /// 杩愯涓� + /// </summary> + Running, + + /// <summary> + /// 鏁呴殰 + /// </summary> + Fault, + + /// <summary> + /// 浣滀笟绫诲瀷 + /// </summary> + TaskType, + + /// <summary> + /// 褰撳墠浠诲姟鍙� + /// </summary> + CurrentTaskNum, + + /// <summary> + /// 鏈夎揣 + /// </summary> + InStock, + PickupLocation, + PutcargoLocation, + + /// <summary> + /// 褰撳墠鍒� + /// </summary> + CurrentColumn, + + /// <summary> + /// 褰撳墠灞� + /// </summary> + CurrentLayer, + + /// <summary> + /// 姘村钩鐐逛綅 + /// </summary> + LevelPoint, + } + + #endregion + + #region 杈撻�佺嚎鎵嬪姩鍛戒护 + + public WebResponseContent GetConveyorLineInfo(string DeviceChildCode) + { + WebResponseContent content = new WebResponseContent(); + try + { + Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == DeviceChildCode); + if (stationManager != null) + { + IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManager.stationPLC); + if (device != null) + { + CommonConveyorLine conveyorLine = (CommonConveyorLine)device; + ushort x = conveyorLine.GetValue<ConveyorLineDBName, ushort>(ConveyorLineDBName.InteractiveSignal, stationManager.stationChildCode); + var structs = BitConverter.GetBytes(x).ToArray().ToBoolArray(); + short ConveyorLineTaskNum = conveyorLine.GetValue<ConveyorLineDBName, short>(ConveyorLineDBName.ConveyorLineTaskNum, stationManager.stationChildCode); + int ConveyorLineAlarm = conveyorLine.GetValue<ConveyorLineDBName, int>(ConveyorLineDBName.ConveyorLineAlarm, stationManager.stationChildCode); + ConveyorLineTaskCommand obj = new() + { + InStock = structs[2] == true ? "鏈夎揣" : "绌洪棽", + TaskNum = ConveyorLineTaskNum.ToString(), + Alarm = AlarmInfo(ConveyorLineAlarm) + }; + return content.OK(data:obj); + } + } + return content.Error("鏈壘鍒拌澶囦俊鎭鑱旂郴IT"); + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + } + + public WebResponseContent ConveyorLineHandTask(HandTask ConveyorLinehand) + { + WebResponseContent content = new WebResponseContent(); + try + { + if (ConveyorLinehand == null || ConveyorLinehand.TaskType == "") + { + return content.Error("璇疯緭鍏ヤ换鍔″懡浠�"); + } + Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == ConveyorLinehand.DeviceCode); + if (stationManager != null) + { + IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManager.stationPLC); + if (device != null) + { + CommonConveyorLine conveyorLine = (CommonConveyorLine)device; + //鍏ュ簱 + if (ConveyorLinehand.TaskType == "1") + { + conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, Convert.ToInt16(ConveyorLinehand.TargetAddress), stationManager.stationChildCode); + Thread.Sleep(100); + conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTaskNum, Convert.ToInt16(1), stationManager.stationChildCode); + Thread.Sleep(100); + conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(ConveyorLinehand.TaskType), stationManager.stationChildCode); + return content.OK("鍙戦�佽緭閫佺嚎鍏ュ簱浠诲姟鎴愬姛!"); + } + //鍑哄簱 + else if (ConveyorLinehand.TaskType == "2") + { + conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, Convert.ToInt16(ConveyorLinehand.TargetAddress), stationManager.stationChildCode); + Thread.Sleep(100); + conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTaskNum, Convert.ToInt16(1), stationManager.stationChildCode); + Thread.Sleep(100); + conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(ConveyorLinehand.TaskType), stationManager.stationChildCode); + return content.OK("鍙戦�佽緭閫佺嚎鍑哄簱浠诲姟鎴愬姛!"); + } + else + { + return content.Error("鏈壘鍒颁换鍔″懡浠�"); + } + } + } + return content.Error("鏈壘鍒拌澶囦俊鎭鑱旂郴IT"); + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + } + + public WebResponseContent ConveyorLineReset(string DeviceChildCode) + { + WebResponseContent content = new WebResponseContent(); + try + { + Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == DeviceChildCode); + if (stationManager != null) + { + IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManager.stationPLC); + if (device != null) + { + CommonConveyorLine conveyorLine = (CommonConveyorLine)device; + conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(7), stationManager.stationChildCode); + return content.OK("澶嶄綅鎴愬姛"); + } + } + return content.Error("鏈壘鍒拌澶囦俊鎭鑱旂郴IT"); + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + } + + public WebResponseContent ConveyorLineEmergencyStop(string DeviceChildCode) + { + WebResponseContent content = new WebResponseContent(); + try + { + Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == DeviceChildCode); + if (stationManager != null) + { + IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManager.stationPLC); + if (device != null) + { + CommonConveyorLine conveyorLine = (CommonConveyorLine)device; + conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(7), stationManager.stationChildCode); + return content.OK("鍋滄鎴愬姛"); + } + } + return content.Error("鏈壘鍒拌澶囦俊鎭鑱旂郴IT"); + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + } + public WebResponseContent ConveyorLineReturn(string DeviceChildCode) + { + WebResponseContent content = new WebResponseContent(); + try + { + Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == DeviceChildCode); + if (stationManager != null) + { + IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManager.stationPLC); + if (device != null) + { + CommonConveyorLine conveyorLine = (CommonConveyorLine)device; + conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(3), stationManager.stationChildCode); + return content.OK("鍋滄鎴愬姛"); + } + } + return content.Error("鏈壘鍒拌澶囦俊鎭鑱旂郴IT"); + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + } + public WebResponseContent ConveyorLineCancel(string DeviceChildCode) + { + WebResponseContent content = new WebResponseContent(); + try + { + Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == DeviceChildCode); + if (stationManager != null) + { + IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManager.stationPLC); + if (device != null) + { + CommonConveyorLine conveyorLine = (CommonConveyorLine)device; + conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(4), stationManager.stationChildCode); + return content.OK("鍋滄鎴愬姛"); + } + } + return content.Error("鏈壘鍒拌澶囦俊鎭鑱旂郴IT"); + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + } + public WebResponseContent ConveyorLineInitialize(string DeviceChildCode) + { + WebResponseContent content = new WebResponseContent(); + try + { + Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == DeviceChildCode); + if (stationManager != null) + { + IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManager.stationPLC); + if (device != null) + { + CommonConveyorLine conveyorLine = (CommonConveyorLine)device; + conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(6), stationManager.stationChildCode); + return content.OK("鍋滄鎴愬姛"); + } + } + return content.Error("鏈壘鍒拌澶囦俊鎭鑱旂郴IT"); + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + } + + string AlarmInfo(int Alarm) => Alarm switch + { + 0 => "鎬ュ仠", + 1 => "鍙橀鍣ㄦ姤璀�1", + 2 => "鍙橀鍣ㄦ姤璀�2", + 3 => "宸﹁秴瀹�", + 4 => "鍙宠秴瀹�", + 5 => "瓒呴珮", + 6 => "璇荤爜澶辫触", + 7 => "璐х墿瓒呴噸", + 8 => "杩愯瓒呮椂", + 9 => "宸ヤ綅浼犳劅鍣ㄥ紓甯�", + 10 => "棰勭暀1", + 11 => "棰勭暀2", + 12 => "棰勭暀3", + 13 => "棰勭暀4", + 14 => "棰勭暀5", + 15 => "棰勭暀6", + }; + + public enum ConveyorLineDBName + { + InteractiveSignal, + ConveyorLineBarcode, + ConveyorLineAlarm, + ConveyorLineTargetAddress, + ConveyorLineTaskNum, + + WriteInteractiveSignal, + WriteConveyorLineTargetAddress, + WriteConveyorLineTaskNum, + } + public class ConveyorLineTaskCommand + { + public string InStock { get; set; } + + public string TaskNum { get; set; } + + public string Alarm { get; set; } + } + #endregion + + #region RGV鎵嬪姩鍛戒护 + + + #endregion } } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/IDeviceInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/IDeviceInfoService.cs" index 7ef5d26..f737f39 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/IDeviceInfoService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/IDeviceInfoService.cs" @@ -22,7 +22,7 @@ using System.Threading.Tasks; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseServices; - +using WIDESEAWCS_DTO.StackerHandTask; using WIDESEAWCS_QuartzJob.DTO; using WIDESEAWCS_QuartzJob.Models; @@ -36,5 +36,74 @@ /// <returns>杩斿洖璁惧淇℃伅浠ュ強瀵瑰簲鍗忚淇℃伅鐨勯泦鍚堛��</returns> Task<List<DeviceInfoDTO>> QueryDeviceProInfos(); + /// <summary> + /// 鍫嗗灈鏈烘墜鍔ㄤ换鍔� + /// </summary> + /// <param name="stackerhand"></param> + /// <returns></returns> + WebResponseContent StackerHandTask(HandTask stackerhand); + + /// <summary> + /// 鍫嗗灈鏈烘�ュ仠 + /// </summary> + /// <param name="DeviceCode"></param> + /// <returns></returns> + WebResponseContent StackerEmergencyStop(string DeviceCode); + + /// <summary> + /// 鍫嗗灈鏈哄浣� + /// </summary> + /// <param name="DeviceCode"></param> + /// <returns></returns> + WebResponseContent StackerReset(string DeviceCode); + + /// <summary> + /// 鑾峰彇杈撻�佺嚎淇℃伅 + /// </summary> + /// <param name="DeviceChildCode"></param> + /// <returns></returns> + WebResponseContent GetConveyorLineInfo(string DeviceChildCode); + + /// <summary> + /// 杈撻�佺嚎鎵嬪姩浠诲姟 + /// </summary> + /// <param name="stackerhand"></param> + /// <returns></returns> + WebResponseContent ConveyorLineHandTask(HandTask stackerhand); + + /// <summary> + /// 杈撻�佺嚎澶嶄綅 + /// </summary> + /// <param name="DeviceChildCode"></param> + /// <returns></returns> + WebResponseContent ConveyorLineReset(string DeviceChildCode); + + /// <summary> + /// 杈撻�佺嚎鎬ュ仠 + /// </summary> + /// <param name="DeviceChildCode"></param> + /// <returns></returns> + WebResponseContent ConveyorLineEmergencyStop(string DeviceChildCode); + + /// <summary> + /// 杈撻�佺嚎閫�鍥� + /// </summary> + /// <param name="DeviceChildCode"></param> + /// <returns></returns> + WebResponseContent ConveyorLineReturn(string DeviceChildCode); + + /// <summary> + /// 杈撻�佺嚎鍙栨秷浠诲姟 + /// </summary> + /// <param name="DeviceChildCode"></param> + /// <returns></returns> + WebResponseContent ConveyorLineCancel(string DeviceChildCode); + + /// <summary> + /// 杈撻�佺嚎鍒濆鍖� + /// </summary> + /// <param name="DeviceChildCode"></param> + /// <returns></returns> + WebResponseContent ConveyorLineInitialize(string DeviceChildCode); } } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/WIDESEAWCS_QuartzJob.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/WIDESEAWCS_QuartzJob.csproj" index d9a8d3a..7851d37 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/WIDESEAWCS_QuartzJob.csproj" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/WIDESEAWCS_QuartzJob.csproj" @@ -13,8 +13,10 @@ </ItemGroup> <ItemGroup> + <ProjectReference Include="..\WIDESEAWCS_BasicInfoRepository\WIDESEAWCS_BasicInfoRepository.csproj" /> <ProjectReference Include="..\WIDESEAWCS_Communicator\WIDESEAWCS_Communicator.csproj" /> <ProjectReference Include="..\WIDESEAWCS_Core\WIDESEAWCS_Core.csproj" /> + <ProjectReference Include="..\WIDESEAWCS_DTO\WIDESEAWCS_DTO.csproj" /> </ItemGroup> </Project> diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceInfoController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceInfoController.cs" index 5996ff9..5392760 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceInfoController.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceInfoController.cs" @@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Mvc; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseController; +using WIDESEAWCS_DTO.StackerHandTask; using WIDESEAWCS_ISystemServices; using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob.DTO; @@ -26,5 +27,65 @@ { return await Service.QueryDeviceProInfos(); } + + [HttpPost, Route("StackerHandTask"), AllowAnonymous] + public WebResponseContent StackerHandTask([FromBody] HandTask stackerhand) + { + return Service.StackerHandTask(stackerhand); + } + + [HttpPost, Route("StackerReset"), AllowAnonymous] + public WebResponseContent StackerReset(string DeviceCode) + { + return Service.StackerReset(DeviceCode); + } + + [HttpPost, Route("StackerEmergencyStop"), AllowAnonymous] + public WebResponseContent StackerEmergencyStop(string DeviceCode) + { + return Service.StackerEmergencyStop(DeviceCode); + } + + [HttpPost, Route("GetConveyorLineInfo"), AllowAnonymous] + public WebResponseContent GetConveyorLineInfo(string DeviceChildCode) + { + return Service.GetConveyorLineInfo(DeviceChildCode); + } + + [HttpPost, Route("ConveyorLineHandTask"), AllowAnonymous] + public WebResponseContent ConveyorLineHandTask([FromBody] HandTask stackerhand) + { + return Service.ConveyorLineHandTask(stackerhand); + } + + [HttpPost, Route("ConveyorLineReset"), AllowAnonymous] + public WebResponseContent ConveyorLineReset(string DeviceChildCode) + { + return Service.ConveyorLineReset(DeviceChildCode); + } + + [HttpPost, Route("ConveyorLineEmergencyStop"), AllowAnonymous] + public WebResponseContent ConveyorLineEmergencyStop(string DeviceChildCode) + { + return Service.ConveyorLineEmergencyStop(DeviceChildCode); + } + + [HttpPost, Route("ConveyorLineReturn"), AllowAnonymous] + public WebResponseContent ConveyorLineReturn(string DeviceChildCode) + { + return Service.ConveyorLineReturn(DeviceChildCode); + } + + [HttpPost, Route("ConveyorLineCancel"), AllowAnonymous] + public WebResponseContent ConveyorLineCancel(string DeviceChildCode) + { + return Service.ConveyorLineCancel(DeviceChildCode); + } + + [HttpPost, Route("ConveyorLineInitialize"), AllowAnonymous] + public WebResponseContent ConveyorLineInitialize(string DeviceChildCode) + { + return Service.ConveyorLineInitialize(DeviceChildCode); + } } } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs" index d89caf3..860137f 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs" @@ -141,7 +141,7 @@ } else { - DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceChildCode == stationManager.stationChildCode && x.DeviceProParamName == "ConveyorLineBarcode").FirstOrDefault(); + DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceChildCode == stationManager.stationNextChildCode && x.DeviceProParamName == "ConveyorLineBarcode").FirstOrDefault(); var x = conveyorLine.Communicator.Read(devicePro.DeviceProAddress, 5); string Barcode = Encoding.UTF8.GetString(x); diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RGVJob_FirstFloor/CommonRGV_FirstFloorJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RGVJob_FirstFloor/CommonRGV_FirstFloorJob.cs" index 52840da..8bf8834 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RGVJob_FirstFloor/CommonRGV_FirstFloorJob.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RGVJob_FirstFloor/CommonRGV_FirstFloorJob.cs" @@ -184,7 +184,7 @@ #endregion #region RGV02璋冨害 - if (commonRGVSecond != null && commonRGVFirst is CommonRGV_FirstFloor SecondRgv)//杩欐牱鑳界湅鍑烘潵浼犲弬鍒板簳鍝噷鏈夐棶棰� + if (commonRGVSecond != null && commonRGVSecond is CommonRGV_FirstFloor SecondRgv)//杩欐牱鑳界湅鍑烘潵浼犲弬鍒板簳鍝噷鏈夐棶棰� { if (SecondRgv.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.WorkCompleted)) { @@ -435,7 +435,7 @@ { var tasks = _taskService.QueryRGVTask(); Dt_Task task; - if (tasks == null && tasks.Count() == 0) + if (tasks.Count() == 0) { return null; } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs" index 6966f3b..dae9457 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs" @@ -122,6 +122,41 @@ true => "鏁呴殰", false => "姝e父", }; + string StackerCraneAlarm(int alarm) => alarm switch + { + 0 => "鎸囦护鎴栧湴鍧�閿欒", + 1 => "鎬ュ仠", + 2 => "鍏夐�氳涓柇", + 3 => "缁勬�佸け鑱�", + 4 => "琛岃蛋鍙橀鏁呴殰", + 5 => "琛岃蛋鏋侀檺瑙﹀彂", + 6 => "琛岃蛋杩愯瓒呮椂", + 7 => "鎻愬崌鍙橀鏁呴殰", + 8 => "鎻愬崌鏋侀檺瑙﹀彂", + 9 => "鎻愬崌杩愯瓒呮椂", + 10 => "杞借揣鍙拌秴杞�", + 11 => "杞借揣鍙版瑺杞斤紙鏉剧怀)", + 12 => "杞借揣鍙板け閫�", + 13 => "璐у弶鍙橀鎶ヨ", + 14 => "璐у弶杩愯瓒呮椂", + 15 => "璐у弶鏋侀檺瑙﹀彂", + 16 => "璐у弶涓嶅眳涓�", + 17 => "宸︿晶瓒呴珮", + 18 => "鍙充晶瓒呴珮", + 19 => "宸︿晶瓒呭", + 20 => "鍙充晶瓒呭", + 21 => "宸﹁秴鍑�", + 22 => "鍙宠秴鍑�", + 23 => "鍙栬揣鏃惰浇璐у彴鏈夎揣", + 24 => "鍙栬揣鍚庤浇璐у彴鏃犺揣", + 25 => "鍙栨繁璐т綅鏃舵祬璐т綅鏈夎揣", + 26 => "鏀捐揣鏃惰浇璐у彴鏃犺揣", + 27 => "鏀捐揣鏃惰揣鏋舵湁璐�", + 28 => "鏀捐揣鍚庤浇璐у彴鏈夎揣", + 29 => "鏀炬繁璐ф椂娴呰揣浣嶆湁璐�", + 30 => "", + 31 => "", + }; object obj = new { Automatic = StackerCraneAutoStatus(commonStackerCrane.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.Automatic)), @@ -131,6 +166,8 @@ CurrentLayer = Convert.ToInt32(commonStackerCrane.GetValue<StackerCraneDBName, byte>(StackerCraneDBName.CurrentLayer)), LevelPoint = commonStackerCrane.GetValue<StackerCraneDBName, int>(StackerCraneDBName.LevelPoint), CurrentTaskNum = commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.CurrentTaskNum), + //StackerAlarm = StackerCraneAlarm(commonStackerCrane.GetValue<StackerCraneDBName, int>(StackerCraneDBName.StackerAlarm)), + commonStackerCrane.DeviceCode, commonStackerCrane.DeviceName, }; diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneDBName.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneDBName.cs" index a8c3bfa..852c098 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneDBName.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneDBName.cs" @@ -141,5 +141,10 @@ /// 姘村钩鐐逛綅 /// </summary> LevelPoint, + + /// <summary> + /// 鎶ヨ淇℃伅 + /// </summary> + StackerAlarm, } } -- Gitblit v1.9.3