CanadaMes-ui/src/api/home.js
@@ -238,9 +238,49 @@ }) } export function FrameStateUpdate(frameno,framestate) { export function FrameStateUpdate(frameno) { return request({ url: '/home/FrameStateUpdate?frameno=' + frameno+'&framestate='+framestate, url: '/home/FrameStateUpdate?frameno=' + frameno, method: 'post', data:"" }) } export function WriteGlassID(glassid) { return request({ url: '/home/WriteGlassID?glassid='+glassid, method: 'post', data:"" }) } export function ClearGlassId(position,glassid) { return request({ url: '/home/ClearGlassId?position='+position+'&glassid='+glassid, method: 'post', data:"" }) } export function CloseForm7() { return request({ url: '/home/CloseForm7', method: 'post', data:"" }) } export function TaskStop(num) { return request({ url: '/home/TaskStop?num='+num, method: 'post', data:"" }) } export function SoftEmergencyStop() { return request({ url: '/home/SoftEmergencyStop', method: 'post', data:"" }) CanadaMes-ui/src/lang/locales/en-US.json
@@ -344,6 +344,11 @@ "Queue State":"Queue State", "Sorting State":"Sorting State", "Confirm State":"Confirm State", "Next":"Next", "Current Frame":"Current Frame", "Outside":"Outside", "Inside":"Inside", "Cancel":"Cancel", "ServoManualone": { "A01 所在格子": "A01 Current Grid", "数量": "Quantity", CanadaMes-ui/src/lang/locales/zh-CN.json
@@ -333,6 +333,11 @@ "Queue State":"队列状态", "Sorting State":"排序状态", "Confirm State":"确认状态", "Next":"下一个", "Current Frame":"当前铝框", "Outside":"外侧", "Inside":"内侧", "Cancel":"取消", "langparameter": { "conveyor Velocity(Auto FAST)": "D01-D06 皮带输送自动快速", "conveyor Velocity(Auto SLOW)": "D01-D06 皮带输送自动慢速", CanadaMes-ui/src/layout/index.vue
@@ -340,7 +340,7 @@ }, 1000 ); if (this.reset == false) { if (this.reset == false&&this.EmergencyStop != true) { this.dialogFormCountDown = true; } }, CanadaMes-ui/src/views/home/index.vue
@@ -81,7 +81,9 @@ } .blocks-img { height: 100px; height: 88px; line-height: 90px; color: white; max-width: 100vw; background-repeat: no-repeat; background-attachment: local; @@ -108,7 +110,7 @@ top: 366px; */ } .orderbutton1 { /* .orderbutton1 { position: absolute; left: 1070px; top: 70px; @@ -118,7 +120,7 @@ position: absolute; left: 500px; top: -10px; } } */ .blocks-img3 { height: 90px; @@ -216,10 +218,23 @@ display: flex; } /* .el-table td, .el-table th { padding: 0px 0; } */ .device { font-weight: bold; width: 25px; height: 72px; line-height: 72px; color: white; font-size: 12px; position: absolute; } .glass { font-weight: bold; font-size: 12px; width: 105px; height: 15px; position: absolute; } </style> <template> <el-container> @@ -235,11 +250,26 @@ </div> </div> <div style="display:flex;justify-content: space-around;width: 9zz5%;margin: 0 auto;"> <el-input style="width:15%;" :placeholder="$t('Enter the glass barcode')" v-model="glassid1" :class="ManuallyInfeedGlass == true ? 'hide' : ''"></el-input> <!-- <el-input style="width:15%;" :placeholder="$t('Enter the glass barcode')" v-model="glassid1" :class="ManuallyInfeedGlass == true ? 'hide' : ''"></el-input> --> <el-button type="primary" @click="SelectGlassByGlassIDs(2)" :disabled="ManuallyInfeedGlass" :class="ManuallyInfeedGlass == true ? 'hide' : ''"> {{ $t('Manually Infeed Glass') }}</el-button> <el-button type="primary" @click="showform2()" :disabled="OrderInfo" :class="OrderInfo == true ? 'hide' : ''">{{ $t('OrderInfo') }}</el-button> <el-button type="primary" @click="showform6()" :disabled="OutingQueue" :class="OutingQueue == true ? 'hide' : ''"> {{ $t('Outing Queue') }}</el-button> <el-button type="primary" @click="TaskStop(0)" :disabled="OutingQueue" :class="StopTask == true ? 'hide' : ''"> {{ $t('Stop Feeding') }}</el-button> <el-button type="primary" @click="TaskStop(1)" :disabled="StopTask" :class="StopTask == true ? 'hide' : ''"> {{ $t('Stop Outing') }}</el-button> <el-button type="primary" @click="SoftEmergencyStop()" :disabled="SoftEmergencyStop" :class="SoftEmergencyStop == true ? 'hide' : ''"> {{ $t('SoftEmergencyStop') }}</el-button> <!-- <el-input style="width:15%;" :placeholder="$t('Enter the Order No')" v-model="order"></el-input> <el-button type="warning" @click="showform1();">{{ $t('Exit the glass by order number') }}</el-button> --> </div> @@ -328,41 +358,57 @@ <div class="blue gezi" :style="{ display: 'flex', position: 'absolute', float: 'left', top: 105 + 'px', left: 1050 + 'px', height: loadglassheight2 + 'px', width: 4 + 'px' }"> </div> <div class="blocks-img" :style="{ left: car1 + 'px', top: '16px' }"></div> <div class="blocks-img" :style="{ left: car2 + 'px', top: '175px' }"></div> <div class="blocks-img2"></div> <div class="blocks-img3"></div> <el-button class="orderbutton1" type="primary" @click="showform2()" :disabled="OrderInfo" :class="OrderInfo == true ? 'hide' : ''">{{ $t('OrderInfo') }}</el-button> <el-button class="orderbutton2" type="primary" @click="showform6()" :disabled="OutingQueue" :class="OutingQueue == true ? 'hide' : ''"> {{ $t('Outing Queue') }}</el-button> <!-- <div style="display:flex;position: absolute;float:left;z-index: 999;top:112px;left:328px;"> <div :class="getStatusClass(item.state)" v-for="(item,index) in cagelist1" :key="item['date']" :style="{ height: 35 * item['glassWidth'] + 'px',left:4.22*index+'px' }" @click="showcageinfo(item['cage'])"></div> <div class="device" :style="'top: 25px;left: 1027px;background-color: ' + ShowDeviceList(0) + ';'">D01</div> <div class="device" :style="'top: 105px;left: 1027px;background-color: ' + ShowDeviceList(1) + ';'">D02 </div> <div style="display:flex;position: absolute;float:left;z-index: 999;top:112px;left:885px;"> <div :class="getStatusClass(item.state)" v-for="(item,index) in cagelist2" :key="item['date']" :style="{ height: 35 * item['glassWidth'] + 'px',left:4.22*index+'px' }" @click="showcageinfo(item['cage'])"></div> </div> <div style="display:flex;position: absolute;float:left;z-index: 999;top:154px;left:328px;"> <div :class="getStatusClass(item.state)" v-for="(item,index) in cagelist3" :key="item['date']" :style="{ height: 35 * item['glassWidth'] + 'px', top: item['width'] * 35 - 35 + 'px',left:4.22*index+'px' }" @click="showcageinfo(item['cage'])"></div> </div> <div style="display:flex;position: absolute;float:left;z-index: 999;top:154px;left:885px;"> <div :class="getStatusClass(item.state)" v-for="(item,index) in cagelist4" :key="item['date']" :style="{ height: 35 * item['glassWidth'] + 'px', top: item['width'] * 35 - 35 + 'px',left:4.22*index+'px' }" @click="showcageinfo(item['cage'])"></div> </div> <div class="blocks-img" :style="{ left: car1 + 'px', top: '16px' }"></div> <div class="blocks-img" :style="{ left: car2 + 'px', top: '194px' }"></div> <div class="blocks-img2" :style="{ left: '912px', top: '366px' }"></div> <div class="blocks-img3" :style="{ left: '875px', top: '455px' }"></div> --> <div class="device" :style="'top: 102px;left: 605px;background-color: ' + ShowDeviceList(2) + ';'">B01</div> <div class="device" :style="'top: 102px;left: 197px;background-color: ' + ShowDeviceList(3) + ';'">B02</div> <div class="blocks-img" :style="'left:' + car2 + 'px;top:175px;background-color:' + ShowDeviceList(4) + ''"> A01</div> <div class="blocks-img" :style="'left:' + car1 + 'px;top:16px;background-color:' + ShowDeviceList(5) + ''"> A02</div> <div class="device" :style="'top: 108px;left: 150px;background-color: ' + ShowDeviceList(6) + ';'">D03</div> <div class="device" :style="'top: 185px;left: 150px;background-color: ' + ShowDeviceList(7) + ';'">D04</div> <div class="device" :style="'top: 262px;left: 150px;background-color: ' + ShowDeviceList(8) + ';'">D05</div> <div class="device" :style="'top: 339px;left: 150px;background-color: ' + ShowDeviceList(9) + ';'">D06</div> <div class="glass D01" style="top: 54px;left: 1055px;position: absolute;" @click="ClearGlassId('DB101.9.2', 0)">{{ ShowGlassIdList(0) }}</div> <div class="glass D02" style="top: 132px;left: 1055px;position: absolute;" @click="ClearGlassId('DB101.9.2', 1)">{{ ShowGlassIdList(1) }}</div> <div class="glass B01" style="top: 270px;left: 640px;position: absolute;" @click="ClearGlassId('DB101.10.2', 2)"> B01:{{ ShowGlassIdList(2) }}</div> <div class="glass B02" style="top: 290px;left: 640px;position: absolute;" @click="ClearGlassId('DB101.10.3', 3)">B02:{{ ShowGlassIdList(3) }}</div> <div class="glass A01" style="top: 270px;left: 289px;position: absolute;" @click="ClearGlassId('DB101.10.0', 4)"> A01.1:{{ ShowGlassIdList(4) }}</div> <div class="glass A01" style="top: 290px;left: 289px;position: absolute;" @click="ClearGlassId('DB101.10.1,5')">A01.2:{{ ShowGlassIdList(5) }}</div> <div class="glass A02" style="top: 310px;left: 300px;position: absolute;" @click="ClearGlassId('DB101.10.2,6')">A02:{{ ShowGlassIdList(6) }}</div> <div class="glass D03" style="top: 137px;left: 42px;position: absolute;" @click="ClearGlassId('DB101.9.4', 7)"> {{ ShowGlassIdList(7) }}</div> <div class="glass D04" style="top: 213px;left: 42px;position: absolute;" @click="ClearGlassId('DB101.9.5', 8)"> {{ ShowGlassIdList(8) }}</div> <div class="glass D05" style="top: 290px;left: 42px;position: absolute;" @click="ClearGlassId('DB101.9.6', 9)"> {{ ShowGlassIdList(9) }}</div> <div class="glass D06" style="top: 367px;left: 42px;position: absolute;" @click="ClearGlassId('DB101.9.5', 10)"> {{ ShowGlassIdList(10) }}</div> </div> </el-footer> <el-dialog :visible.sync="dialogFormVisible" :title="$t('Please confirm the glass information')"> @@ -442,7 +488,13 @@ style="width: 100%;overflow: auto;"> <el-table-column :min-width="50" prop="cage" :label="$t('Cage No')"></el-table-column> <el-table-column :min-width="50" prop="cell" :label="$t('Slot No')"></el-table-column> <el-table-column :min-width="55" prop="tier" :label="$t('The Side')"></el-table-column> <el-table-column :min-width="55" prop="tier" :label="$t('The Side')"> <template slot-scope='scope'> {{ scope.row.tier == 1 ? $t('Inside') : $t('Outside') }} </template> </el-table-column> <el-table-column :min-width="145" prop="glassId" :label="$t('Barcode')"></el-table-column> <el-table-column :min-width="80" prop="orderId" :label="$t('Order No')"></el-table-column> <el-table-column :min-width="80" prop="listId" :label="$t('List No')"></el-table-column> @@ -460,7 +512,7 @@ {{ scope.row.glassWidthMm }}{{ scope.row.glassWidthMm > 0 ? "*" : "" }}{{ scope.row.glassHeightMm }} </template> </el-table-column> <el-table-column :min-width="80" prop="lengthWidth" :label="$t('State')"> <template slot-scope='scope'> {{ scope.row.disabled == 0 ? $t('Enable') : $t('Disable') }} @@ -514,12 +566,26 @@ </el-dialog> <el-dialog :visible.sync="dialogFormVisible5" :title="$t('Please confirm the glass information')"> <el-form :model="form" label-width="100px" style="padding-right: 30px"> <div style="display: flex;justify-content: center;"> <!-- <el-form-item> <el-input style="width:50%;margin-left: 20%;" :placeholder="$t('Enter the glass barcode')" v-model="glassid2"></el-input> <el-button type="primary" @click="SelectGlassByGlassIDs(1)">{{ $t('Query') }}</el-button> </el-form-item> --> <el-form-item> <el-input style="width:70%;" :placeholder="$t('Enter the glass barcode')" v-model="glassid1"></el-input> <el-button type="primary" @click="SelectGlassByGlassIDs(2)">{{ $t('Add') }}</el-button> </el-form-item> </div> <div style="display: flex;justify-content: space-around;"> <label for="">{{ $t('Upper film position') }}</label> <div> {{ $t('Confirm State') }}:{{ this.isConfirm == true ? $t('Not Allow') : $t('Allow') }} <el-button type="primary" @click="isConfirmState()"> {{ this.isConfirm == true ? $t('Allow') : $t('Not Allow') }}</el-button> <el-button type="primary" @click="isConfirmState()"> {{ this.isConfirm == true ? $t('Allow') : $t('Not Allow') }}</el-button> </div> <label for="">{{ $t('Scan Code Point') }}</label> </div> @@ -529,20 +595,7 @@ <label for="">{{ $t('current Information') }}</label> <label for="">{{ $t('Modify Information') }}</label> </div> <div style="display: flex;justify-content: space-around;"> <el-form-item> <el-input style="width:50%;margin-left: 20%;" :placeholder="$t('Enter the glass barcode')" v-model="glassid2"></el-input> <el-button type="primary" @click="SelectGlassByGlassIDs(1)">{{ $t('Query') }}</el-button> </el-form-item> <el-form-item> <el-input style="width:50%;margin-left: 20%;" :placeholder="$t('Enter the glass barcode')" v-model="glassid1"></el-input> <el-button type="primary" @click="SelectGlassByGlassIDs(2)">{{ $t('Query') }}</el-button> </el-form-item> </div> <div style="display: flex;justify-content: space-around;"> <el-form-item :label="$t('Barcode')"> <el-input v-model="form2.glassId" readonly autocomplete="off" /> @@ -627,14 +680,15 @@ <el-input v-model="form5.glassheightmm" readonly autocomplete="off" /> </el-form-item> </div> <div style="display: flex;justify-content: space-around;"> <el-button @click="DeleteQueueGlasss(2)" type="primary">{{ $t('Clear Current') <div style="display: flex;justify-content: right;"> <!-- <el-button @click="DeleteQueueGlasss(2)" type="primary">{{ $t('Clear Current') }}</el-button> <el-button @click="InsertQueueGlass(2)" type="primary" :disabled="disabled"> {{ $t('Confirm Modification') }}</el-button> <el-button @click="DeleteQueueGlasss(1)" type="primary">{{ $t('Clear Current') }}</el-button> <el-button @click="InsertQueueGlass(1)" type="primary" :disabled="disabled1"> }}</el-button> --> <el-button @click="InsertQueueGlass(1)" style="margin-right: 100px;" type="primary" :disabled="disabled1"> {{ $t('Confirm Modification') }}</el-button> </div> </el-form> @@ -646,68 +700,75 @@ </el-dialog> <el-dialog :visible.sync="dialogFormVisible6" :title="$t('Outing Queue')" top="5vh"> {{ $t('Queue State') }}: {{ $t('Queue State') }}: {{ this.isAllowQueue == true ? $t('Start') : $t('Stop') }} <el-button type="primary" @click="isAllowQueueState()" :disabled="!this.isAllowReordering">{{ this.isAllowQueue == true ? $t('Stop') : $t('Start') }}</el-button> {{ $t('Sorting State') }}: <!-- {{ $t('Sorting State') }}: {{ this.isAllowReordering == true ? $t('Not Allow') : $t('Allow') }} <el-button type="primary" @click="isAllowReorderings()" :disabled="this.isAllowQueue">{{ this.isAllowReordering == true ? $t('Allow') : $t('Not Allow') }}</el-button> <el-input style="width:15%;" :placeholder="$t('Enter the Frame No')" v-model="framebarcode"></el-input> <el-button type="primary" @click="AddOutSliceS()">{{ $t('Add') }}</el-button> <label style="background-color:yellow;font-size: 23px;" for="">{{ isQueueWarning== true ? $t('The cage is disabled') : "" }}</label> }}</el-button> --> <!-- <el-input style="width:15%;" :placeholder="$t('Enter the Frame No')" v-model="framebarcode"></el-input> --> <el-button type="primary" @click="showform7()">{{ $t('Add') }}</el-button> <label style="background-color:yellow;font-size: 23px;" for=""> {{ isQueueWarning == true ? $t('The cage is disabled') : "" }} </label> <!-- <span style="background-color:yellow;"> {{ isQueueWarning== true ? $t('The cage is disabled') : $t('The cage is disabled') }} </span> --> <el-table :data="this.OutSlice" :height="700" :span-method="objectSpanMethod" border :cell-style="cellStyle" style="width: 100%;overflow: auto;font-size: 18px;"> <el-table-column :min-width="175" prop="glassId" :label="$t('Barcode')"></el-table-column> <el-table-column :min-width="70" prop="orderId" :label="$t('Order No')"></el-table-column> <el-table-column :min-width="70" prop="listId" :label="$t('List No')"></el-table-column> <el-table-column :min-width="70" prop="boxId" :label="$t('Box No')"></el-table-column> <el-table-column :min-width="100" prop="glasswidthmm" :label="$t('Length')"></el-table-column> <el-table-column :min-width="100" prop="glassheightmm" :label="$t('Width')"></el-table-column> <el-table-column :min-width="90" prop="state" :label="$t('Glass State')"> <template slot-scope='scope'> {{ scope.row.state == 0 ? $t('Waiting') : scope.row.state == 1 ? $t('Outing') : scope.row.state == 2 ? $t('Outed') : scope.row.state == 3 ? $t('Absent') : $t('Completed') }} </template> </el-table-column> <el-table-column prop="sequence" :label="$t('Sequence')"></el-table-column> <el-table-column :min-width="90" prop="barcode" :label="$t('Complete')"> <template slot-scope='scope' style="height:100px;height:100px;"> <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" :disabled="!(!isAllowQueue && scope.row.state != 2 && scope.row.state != 4)" @click="CompleteQueue(scope.row.id, scope.row.barcode, scope.row.glassId)">{{ $t('Complete') }}</el-button> </template> </el-table-column> <el-table-column :min-width="300" prop="position" :label="$t('Position')" style="font-size: 20px;"> <div style="display:flex;"> <div style="width:70%;"> <el-table :data="this.OutSlice" :height="700" :span-method="objectSpanMethod" border :cell-style="cellStyle" style="width: 100%;overflow: auto;font-size: 18px;"> <el-table-column prop="barcode" :label="$t('Frame No')"></el-table-column> <el-table-column :min-width="175" prop="glassId" :label="$t('Barcode')"></el-table-column> <el-table-column :min-width="70" prop="orderId" :label="$t('Order No')"></el-table-column> <el-table-column :min-width="70" prop="listId" :label="$t('List No')"></el-table-column> <el-table-column :min-width="70" prop="boxId" :label="$t('Box No')"></el-table-column> <el-table-column :min-width="100" prop="glasswidthmm" :label="$t('Length')"></el-table-column> <el-table-column :min-width="100" prop="glassheightmm" :label="$t('Width')"></el-table-column> <el-table-column :min-width="90" prop="state" :label="$t('Glass State')"> <template slot-scope='scope'> {{ scope.row.state == 0 ? $t('Waiting') : scope.row.state == 1 ? $t('Outing') : scope.row.state == 2 ? $t('Outed') : scope.row.state == 3 ? $t('Absent') : $t('Completed') }} </template> </el-table-column> <el-table-column prop="sequence" :label="$t('Sequence')"></el-table-column> <el-table-column :min-width="90" prop="barcode" :label="$t('Complete')"> <template slot-scope='scope' style="height:100px;height:100px;"> <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" :disabled="!(!isAllowQueue && scope.row.state != 2 && scope.row.state != 4)" @click="CompleteQueue(scope.row.id, scope.row.barcode, scope.row.glassId)">{{ $t('Complete') }}</el-button> </template> </el-table-column> <!-- <el-table-column :min-width="300" prop="position" :label="$t('Position')" style="font-size: 20px;"> <template slot-scope='scope'> <div :style="'width:' + (scope.row.position == 1 ? '300' : '100') + 'px;height:' + (scope.row.position == 1 ? '100' : '200') + 'px;background-Color:gray;margin:0 auto;'"> </div> </template> </el-table-column> <el-table-column prop="position" :label="$t('Flipped')" :min-width="200"> </el-table-column> --> <!-- <el-table-column prop="position" :label="$t('Flipped')" :min-width="200"> <template slot-scope='scope'> {{ scope.row.flip == true ? $t('EXTERIQR OUT AND BYPASS TO THE LEFT') : $t('EXTERIQR OUT AND BYPASS TO THE RIGHT') }} </template> </el-table-column> <el-table-column prop="barcode" :label="$t('Frame No')"></el-table-column> <el-table-column :width="240" :label="$t('Operate')"> <template slot-scope='scope'> <el-button type="text" size="small" @click="getTopMove(scope.row, scope.$index)" </el-table-column> --> <el-table-column :width="100" :label="$t('Operate')"> <template slot-scope='scope'> <!-- <el-button type="text" size="small" @click="getTopMove(scope.row, scope.$index)" style="font-size: 15px;" :disabled="(scope.$index == 0 || isAllowReordering == true || scope.row.state == 1)"> {{ $t('Top') }} @@ -721,25 +782,47 @@ style="font-size: 15px;" :disabled="(OutSlice.length - 1 == scope.$index || isAllowReordering == true || scope.row.state == 1)"> {{ $t('Down') }} </el-button> <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" :disabled="isAllowQueue" @click="deleteproductionqueueglass(scope.row.barcode)">{{ $t('Delete') }}</el-button> </el-button> --> <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" :disabled="isAllowQueue" @click="deleteproductionqueueglass(scope.row.barcode)">{{ $t('Delete') }}</el-button> <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" :disabled="isAllowQueue" <!-- <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" :disabled="isAllowQueue" @click="FrameStateUpdate(scope.row.barcode,scope.row.framestate)">{{ scope.row.framestate == 0 ? $t('Stop') : $t('Start') }}</el-button> </template> </el-table-column> </el-table> scope.row.framestate == 0 ? $t('Stop') : $t('Start') }}</el-button> --> </template> </el-table-column> </el-table> </div> <div style="width:30%;" v-for="(item) in CurrentFrame" :key="item['barcode']"> <el-button style="margin-left: 42%;" type="primary" @click="FrameStateUpdate(item['barcode'])">{{ $t('Next') }}</el-button> <h1 style="font-size: 40px;text-align: center;">{{ $t('Current Frame') }}:{{ item['barcode'] }}</h1> <h1 style="font-size: 30px;text-align: center;"> {{ item['flip'] == true ? $t('EXTERIQR OUT AND BYPASS TO THE LEFT') : $t('EXTERIQR OUT AND BYPASS TO THE RIGHT') }} </h1> <h1 style="font-size: 30px;text-align: center;">{{ item['framewidthmm'] }}*{{ item['frameheightmm'] }} </h1> <div class="frame" :style="'background-color: green;margin-top:30px;margin:0 auto;width: ' + FrameWidthHeight('before', item['framewidthmm'], item['frameheightmm'], item['position']) + 'px;height:' + FrameWidthHeight('after', item['framewidthmm'], item['frameheightmm'], item['position']) + 'px;' "> </div> </div> </div> </el-dialog> <el-dialog :visible.sync="dialogFormVisible7" :title="$t('Glass information corresponding to aluminum frame')" top="5vh"> <el-input style="width:15%;" :placeholder="$t('Enter the Frame No')" v-model="framebarcode"></el-input> <el-button type="primary" @click="showform7()">{{ $t('Query') }}</el-button> <el-button type="primary" @click="addoutslice()">{{ $t('Add') }}</el-button> <el-button type="primary" @click="AddOutSliceS()">{{ $t('Add') }}</el-button> <el-button type="primary" @click="CloseForm7()">{{ $t('Cancel') }}</el-button> <el-table :data="this.AluminumFrame" :height="700" border style="width: 100%;overflow: auto;"> <el-table-column prop="frameBarcode" :label="$t('Frame No')"></el-table-column> <el-table-column prop="barcode" :label="$t('Barcode')"></el-table-column> <el-table-column prop="ordernumber" :label="$t('Order No')"></el-table-column> <el-table-column prop="listnumber" :label="$t('List No')"></el-table-column> @@ -748,9 +831,15 @@ <el-table-column prop="glassheight" :label="$t('Width')"></el-table-column> <el-table-column prop="storageCage.cage" :label="$t('Cage No')"></el-table-column> <el-table-column prop="storageCage.cell" :label="$t('Slot No')"></el-table-column> <el-table-column prop="storageCage.tier" :label="$t('The Side')"></el-table-column> <el-table-column prop="FrameNo" :label="$t('Frame No')"></el-table-column> <el-table-column prop="Flip" :label="$t('Flipped')"></el-table-column> <el-table-column prop="storageCage.tier" :label="$t('The Side')"> <template slot-scope='scope'> {{ scope.row.storageCage == null ? "" : scope.row.storageCage.tier == 1 ? $t('Inside') : $t('Outside') }} </template> </el-table-column> <!-- <el-table-column prop="Flip" :label="$t('Flipped')"></el-table-column> --> <el-table-column prop="out_slice.state" :label="$t('In the queue')"> <template slot-scope='scope'> {{ scope.row.out_slice != null ? $t('Yes') : $t('No') }} @@ -762,12 +851,12 @@ {{ scope.row.storageCage != null ? $t('Yes') : $t('No') }} </template> </el-table-column> <el-table-column :width="80" :label="$t('Operate')"> <!-- <el-table-column :width="80" :label="$t('Operate')"> <template slot-scope='scope'> <el-checkbox label="" :disabled="!(scope.row.storageCage != null && scope.row.out_slice == null)" :checked="scope.row.isCheck" @change="CheckBoxchange(scope.row.barcode, $event)"></el-checkbox> </template> </el-table-column> </el-table-column> --> </el-table> </el-dialog> <el-dialog :visible.sync="dialogFormCountDown" :title="$t('Approximately resettable time')" top="5vh"> @@ -784,7 +873,7 @@ home, home2, InsertOrder, Addglassid, UpdateTask, SelectAlarmmgInfo, SelectCageInfo, DeleteByGlassID, OutByGlassID, Loadcarlist, SelectPassword, SelectGlassByGlassID, Disabled, Inglassid, SelectGlass, InsertQueueGlassId, UpdateQueueState, DeleteQueueGlass, SelectGlassNo, SelectAluminumFrameInfoById, DeleteProductionQueueGlass, AddOutSliceS, isAllowQueues, isConfirmStates, SelectPermissionByUserName, currentUsername, CompleteQueue, isAllowReorderings, FrameStateUpdate isAllowReorderings, FrameStateUpdate, WriteGlassID, ClearGlassId, CloseForm7, TaskStop, SoftEmergencyStop } from "../../api/home"; @@ -870,16 +959,23 @@ OutingQueue: true, OrderInfo: true, CageDetails: true, ClearGlassID:true, StopTask:true, SoftEmergencyStop:true, CountDowns: "0", D01RequestState: false, EmergencyStop: false, PromptSize: 250, reset: false, isQueueWarning: false isQueueWarning: false, CurrentFrame: [], DeviceList: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], GlassIdList: [] }; }, created() { this.load(); this.init(); } , @@ -920,6 +1016,24 @@ this.tasklist1 = obj.tasklist1[0]; this.tasklist2 = obj.tasklist2[0]; this.alarm = obj.alarmmg[0]; //查询当前铝框信息 this.CurrentFrame = obj.CurrentFrame; //获取设备状态 if (obj.DeviceList != null) { this.DeviceList = obj.DeviceList[0]; } //获取设备上的玻璃id if (obj.GlassIdList != null) { this.GlassIdList = obj.GlassIdList[0]; } //获取待确认的铝框玻璃信息 if (obj.AluminumFrame != null) { this.AluminumFrame = obj.AluminumFrame[0]; if (this.dialogFormVisible6 == true) { this.dialogFormVisible7 = true; } } // if (obj.alarmmg[0].length > 0) { // if (this.alarm.length > 0) { // if (this.alarm[this.alarm.length - 1].id != obj.alarmmg[0][obj.alarmmg[0].length - 1].id) { @@ -1040,6 +1154,15 @@ } if (item.permissionId == "35" && item.state == 1) { this.CageDetails = false; } if (item.permissionId == "36" && item.state == 1) { this.ClearGlassID = false; } if (item.permissionId == "37" && item.state == 1) { this.StopTask = false; } if (item.permissionId == "38" && item.state == 1) { this.SoftEmergencyStop = false; } }); }); @@ -1173,39 +1296,48 @@ showform3() { this.dialogFormVisible5 = true; }, //手动写入plc扫码位玻璃id WriteGlassID() { if (this.glassid1 != "") { WriteGlassID(this.glassid1).then(res => { console.log(res.data); this.$message.success(this.$t('Successful operation')); }); } }, //获取扫码位和上片位数据 SelectGlassByGlassIDs(parameter) { this.showform3(); if (parameter == 1) { SelectGlassByGlassID(this.glassid2).then(res => { if (res.data.form != null) { if (res.data.form.glassId != null) { this.form4 = res.data.form; this.$message.success(this.$t('query was successful')); this.Sizerange(this.form4, 2); } else { this.$message.error(this.$t('There is no such glass')); } // if (parameter == 1) { // SelectGlassByGlassID(this.glassid2).then(res => { // if (res.data.form != null) { // if (res.data.form.glassId != null) { // this.form4 = res.data.form; // this.$message.success(this.$t('query was successful')); // this.Sizerange(this.form4, 2); // } else { // this.$message.error(this.$t('There is no such glass')); // } } else { this.$message.error(this.$t('There is no such glass')); } }); } else { SelectGlassByGlassID(this.glassid1).then(res => { if (res.data.form != null) { if (res.data.form.glassId != null) { this.form5 = res.data.form; this.$message.success(this.$t('query was successful')); this.Sizerange(this.form5, 1); } else { this.$message.error(this.$t('There is no such glass')); } } else { this.$message.error(this.$t('There is no such glass')); } }); } // } else { // this.$message.error(this.$t('There is no such glass')); // } // }); // } else { // SelectGlassByGlassID(this.glassid1).then(res => { // if (res.data.form != null) { // if (res.data.form.glassId != null) { // this.form5 = res.data.form; // this.$message.success(this.$t('query was successful')); // this.Sizerange(this.form5, 1); // } else { // this.$message.error(this.$t('There is no such glass')); // } // } else { // this.$message.error(this.$t('There is no such glass')); // } // }); // } }, //查询客户玻璃信息 @@ -1230,23 +1362,19 @@ showform7() { //查询铝框id对应玻璃信息 SelectAluminumFrameInfoById(this.framebarcode).then(res => { this.AluminumFrame = res.data.listAluminumFrame; this.AluminumFrame.sort(function (x, y) { if (x['storageCage'] != null && y['storageCage'] != null) { return y['storageCage']['tier'] - x['storageCage']['tier']; } }); this.AluminumFrame.forEach(item => { if (item.storageCage != null && item.out_slice == null) { item.isCheck = true; } else { item.isCheck = false; } item.Flip = res.data.flip; item.FrameNo = this.framebarcode; }); this.AluminumFrame = res.data.AluminumFrame; console.log(this.AluminumFrame); // this.AluminumFrame.forEach(item => { // if (item.storageCage != null && item.out_slice == null) { // item.isCheck = true; // } else { // item.isCheck = false; // } // item.Flip = res.data.flip; // item.FrameNo = this.framebarcode; // }); }); // this.dialogFormVisible7 = true; this.dialogFormVisible7 = true; }, //取消操作时关闭页面 cancel() { @@ -1535,27 +1663,25 @@ }, //添加到出片队列 AddOutSliceS() { // var dats_ = new Array(); // this.AluminumFrame.forEach(item => { // var dats2_ = new Array(); // dats2_[0] = item.barcode; // dats2_[1] = item.isCheck; // dats2_[2] = item.Flip; // dats2_[3] = item.FrameNo; // dats2_[4] = item.glasslengthmm; // dats2_[5] = item.glassheightmm; // dats_[dats_.length] = dats2_; // }); // AddOutSliceS(dats_).then(res => { // if (res.data.message == 200) { // this.$message.success(this.$t('Operation successful')); // } // }); AddOutSliceS(this.framebarcode).then(res => { if (res.data.message == 200) { this.$message.success(this.$t('Operation successful')); } }); if (this.AluminumFrame != null) { AddOutSliceS(this.AluminumFrame[0].frameBarcode).then(res => { if (res.data.message == 200) { this.$message.success(this.$t('Operation successful')); } }); } }, //关闭待确认铝框信息界面并清除待确认信息 CloseForm7() { if (this.AluminumFrame != null) { CloseForm7().then(res => { if (res.data.message == 200) { this.AluminumFrame = null; this.dialogFormVisible7 = false; this.$message.success(this.$t('Operation successful')); } }); } }, //置顶 getTopMove(row, index) { @@ -1699,7 +1825,8 @@ rowIndex = column; let style = ""; if (columnIndex === 8) { style = "font-size:200px;text-align: center;"; // style = "font-size:200px;text-align: center;"; style = ""; } // if (columnIndex === 9 && row.flip == 1) { // style = "background-Color:yellow;"; @@ -1724,7 +1851,7 @@ if (rowIndex != 0) { barcode2 = arrOutSlice[rowIndex - 1].barcode; } if (columnIndex === 12 || columnIndex === 9 || columnIndex === 10 || columnIndex === 11) { if (columnIndex === 0 || columnIndex === 10) { if (barcode != barcode2) { // this.FrameNoFlag = barcode; for (let i = rowIndex; i < this.OutSlice.length; i++) { @@ -1822,17 +1949,119 @@ ); }, FrameStateUpdate(frameno,framestate){ if(framestate == 1){ framestate=0; }else{ framestate=1; } FrameStateUpdate(frameno,framestate).then(res=>{ if(res.data.message == 200){ //更换当前铝框 FrameStateUpdate(frameno) { FrameStateUpdate(frameno).then(res => { if (res.data.message == 200) { this.$message.success("Operation successful"); } }); }, //当前铝框图形 FrameWidthHeight(state, width, height, position) { if (state == "before") { if (position == 0) { if (width > height) { return 400; } else { return width / height * 400; } } else { if (width > height) { return height / width * 400; } else { return 400; } } } if (state == "after") { if (position == 0) { if (width < height) { return 400; } else { return height / width * 400; } } else { if (width < height) { return width / height * 400; } else { return 400; } } } }, //获取设备显示状态 ShowDeviceList(num) { if (this.DeviceList != null && this.DeviceList.length > 0) { if (this.DeviceList[num] == 0) { return ""; } else if (this.DeviceList[num] == 1) { return "rgba(0,128,0,0.5)"; } else if (this.DeviceList[num] == 2) { return "rgba(255,0,0)"; } } }, //获取设备玻璃id ShowGlassIdList(num) { if (this.GlassIdList != null && this.GlassIdList.length > 0) { const specialChars = /[^\w\s]/g; return this.GlassIdList[num].replace(specialChars, ""); } }, //清除玻璃id ClearGlassId(position, num) { if (this.ClearGlassID == false) { if (this.DeviceList[position] != null) { if (this.GlassIdList[num].length == 14) { this.$confirm(this.$t('Are you sure to clear this barcode ?'), this.$t('confirm'), { confirmButtonText: this.$t('Yes'), cancelButtonText: this.$t('No'), type: 'warning' }).then(() => { ClearGlassId(position, this.GlassIdList[num]).then(res => { if (res.data.message3 == 200) { this.$message.success(this.$t('Operation successful')); } else { this.$message.success(this.$t('operation failed')); } }); }).catch(() => { this.$message({ type: 'info', message: this.$t('Operation canceled') }); }); } else { this.$message.error(this.$t('There is no glass ID here')); } } else { //自动状态不能清除玻璃id this.$message.error(this.$t('Unable to clear glass ID in automatic mode')); } } else { this.$message.error(this.$t('You do not have this permission')); } }, //终止进/出片任务 TaskStop(num) { TaskStop(num).then(res => { if (res.data.message == 200) { this.$message.success(this.$t('Operation successful')); } }); }, SoftEmergencyStop() { SoftEmergencyStop.then(res => { if (res.data.message == 200) { this.$message.success(this.$t('Operation successful')); } }); } } } springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
@@ -16,6 +16,7 @@ import com.example.springboot.entity.Queue; import com.example.springboot.entity.StorageCage; import com.example.springboot.entity.alarmmg; import com.example.springboot.entity.north_glass_buffer1; import com.example.springboot.mapper.HomeMapper; import com.example.springboot.mapper.SpianMapper; @@ -31,20 +32,22 @@ // 出片队列是否允许出片 public static Boolean isAllowQueue = true; public static Boolean isAllowReordering = true; //出片队列警告 public static Boolean isQueueWarning=false; // 出片队列警告 public static Boolean isQueueWarning = false; // 铝框id public static String FrameNo = ""; // 是否需要手动确认玻璃 public static Boolean isConfirm = false; //待确认的出片队列 public static List<north_glass_buffer1> AluminumFrame; private Configuration config; // private Configuration config; private StorageCageService storageCageService; public Plchome() throws IOException { config = new Configuration("config.properties"); } // public Plchome() throws IOException { // config = new Configuration("config.properties"); // } // public static Map b=new HashMap<>(); // b.put() @@ -106,23 +109,40 @@ jsonObject.append("listoutslice", listoutslice); // 获取当前出片队列出片状态 jsonObject.append("isAllowQueue", Plchome.isAllowQueue); //获取出片队列警告状态 // 获取出片队列警告状态 jsonObject.append("isQueueWarning", Plchome.isQueueWarning); // 获取当前出片队列调序状态 jsonObject.append("isAllowReordering", Plchome.isAllowReordering); // 是否需要人工确认上片玻璃 jsonObject.append("isConfirm", isConfirm); // String framenos="X21763329601FB"; // if (!framenos.equals(Plchome.FrameNo)) { // Plchome.FrameNo = framenos; // try { // north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo); // } catch (SQLException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // } // 查询当前铝框信息 Out_slice CurrentFrame = outSliceServive.SelectCurrentFrame(); jsonObject.append("CurrentFrame", CurrentFrame); if (S7control.getinstance().CheckConnected() == true) { // 获取D01-D06,A01,A02,B01,B02状态 List<Short> DeviceList = S7control.getinstance().ReadWord("DB103.0", 10); jsonObject.append("DeviceList", DeviceList); // 获取D01-D06,A01,A02,B01,B02玻璃id List<String> GlassIdList = new ArrayList<String>(); GlassIdList.add(spianService.queGlassid("DB103.40", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.58", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.184", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.212", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.128", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.142", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.156", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.72", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.86", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.100", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.114", 14).toString()); jsonObject.append("GlassIdList", GlassIdList); // 读去Plc进片车与出片车位置W List<String> addressList = new ArrayList<String>(); addressList.add("DB106.12"); @@ -147,20 +167,58 @@ } } // 获取铝框idDB106.DBW64,添加到出片队列 // // 获取铝框idDB106.DBW64,添加到出片队列 // String frameno="X21763329601FB"; String frameno = spianService.queGlassid("DB103.270", 14).toString(); // String frameno="X12345611002GV"; // frameno="X21763329601FB"; if (!frameno.equals(Plchome.FrameNo)) { Plchome.FrameNo = frameno; try { north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo); Short num=0; List<north_glass_buffer1> north_glass_buffer1s = north_Glass_Buffer1Service.SelectAluminumFrameInfoById(Plchome.FrameNo); for (north_glass_buffer1 north_glass_buffer1 : north_glass_buffer1s) { if(north_glass_buffer1.getstorageCage()==null){ break; } num++; } if(num==north_glass_buffer1s.size()){ north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo); }else{ Plchome.AluminumFrame=north_glass_buffer1s; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(AluminumFrame!=null){ jsonObject.append("AluminumFrame", AluminumFrame); } // // 获取铝框idDB106.DBW64,添加到出片队列 // String frameno = spianService.queGlassid("DB103.270", 14).toString(); // // String frameno="X12345611002GV"; // // frameno="X21763329601FB"; // if (!frameno.equals(Plchome.FrameNo)) { // Plchome.FrameNo = frameno; // try { // Short num=0; // List<north_glass_buffer1> north_glass_buffer1s = north_Glass_Buffer1Service.SelectAluminumFrameInfoById(Plchome.FrameNo); // for (north_glass_buffer1 north_glass_buffer1 : north_glass_buffer1s) { // if(north_glass_buffer1.getstorageCage()==null){ // north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo); // break; // } // num++; // } // if(num==north_glass_buffer1s.size()){ // jsonObject.append("AluminumFrame", north_glass_buffer1s); // } // } catch (SQLException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // } // 获取进片请求状态 List<Short> D01Request = S7control.getinstance().ReadWord("DB106.24", 1); @@ -184,36 +242,36 @@ // 是否急停 List<Boolean> emergencystops = S7control.getinstance().ReadBits("DB104.5.1", 1); for (Boolean emergencystop : emergencystops) { jsonObject. append("emergencystop", emergencystop); jsonObject.append("emergencystop", emergencystop); } // // 终止继续按钮 // List<String> niuanaddressList3 = Arrays.asList(config.getProperty("Parameter2.stop").split(",")); // List<Boolean> anniuread = S7control.getinstance().readBits(niuanaddressList3); // List<String> niuanaddressList3 = // Arrays.asList(config.getProperty("Parameter2.stop").split(",")); // List<Boolean> anniuread = // S7control.getinstance().readBits(niuanaddressList3); // // Boolean[] value4 = { false, false}; // // List<Boolean> anniuread = new ArrayList<>(Arrays.asList(value4)); // Boolean[] value5 = { true }; // List<Boolean> resets = new ArrayList<>(Arrays.asList(value5)); // short[] anniuparams = new short[anniuread.size()]; // for (int i = 0; i < anniuread.size(); i++) { // boolean value = anniuread.get(i); // anniuparams[i] = value ? (short) 1 : (short) 0; // boolean value = anniuread.get(i); // anniuparams[i] = value ? (short) 1 : (short) 0; // } // short[] resets2 = new short[resets.size()]; // for (int i = 0; i < resets.size(); i++) { // boolean value = resets.get(i); // resets2[i] = value ? (short) 1 : (short) 0; // boolean value = resets.get(i); // resets2[i] = value ? (short) 1 : (short) 0; // } // for (short number : resets2) { // if (number == 1) { // jsonObject.append("Abort", anniuparams); // if (number == 1) { // jsonObject.append("Abort", anniuparams); // } // } // } } @@ -267,59 +325,60 @@ // String lastMessage = messages.get(messages.size() - 1); // System.out.println("lastMessage:" + lastMessage); // JSONArray messageArray = new JSONArray(lastMessage); // try { // // 检查索引是否有效 // if (messageArray.getJSONArray(0).size() > 0) { // // 获取消息数组 // JSONArray jsonArray = messageArray.getJSONArray(0); // // 创建一个布尔值列表 // List<Boolean> sValue = new ArrayList<>(); // // 遍历消息数组 // for (int i = 0; i < jsonArray.size(); i++) { // // 获取消息数组中的值 // Object value = jsonArray.get(i); // // 检查值是否有效 // if (value != null && !value.toString().equals("null")) { // try { // // 移除非数字和数字字符 // String cleanedValue = value.toString().replaceAll("[^0-9-]", ""); // // 解析为布尔值 // boolean val = "1".equals(cleanedValue.trim()); // // 将布尔值添加到布尔值列表中 // sValue.add(val); // System.out.println( // "messageValue: " + Arrays.asList(val) + " added to the list"); // // 检查索引是否有效 // if (messageArray.getJSONArray(0).size() > 0) { // // 获取消息数组 // JSONArray jsonArray = messageArray.getJSONArray(0); // // 创建一个布尔值列表 // List<Boolean> sValue = new ArrayList<>(); // // 遍历消息数组 // for (int i = 0; i < jsonArray.size(); i++) { // // 获取消息数组中的值 // Object value = jsonArray.get(i); // // 检查值是否有效 // if (value != null && !value.toString().equals("null")) { // try { // // 移除非数字和数字字符 // String cleanedValue = value.toString().replaceAll("[^0-9-]", ""); // // 解析为布尔值 // boolean val = "1".equals(cleanedValue.trim()); // // 将布尔值添加到布尔值列表中 // sValue.add(val); // System.out.println( // "messageValue: " + Arrays.asList(val) + " added to the list"); // } catch (NumberFormatException e) { // // 如果无法解析为 boolean 类型,则忽略该部分 // System.err.println("Could not parse value: " + value); // } // } // } // // 终止进片任务 // boolean Value1 = sValue.get(0); // boolean Value2 = sValue.get(1); // } catch (NumberFormatException e) { // // 如果无法解析为 boolean 类型,则忽略该部分 // System.err.println("Could not parse value: " + value); // } // } // } // // 终止进片任务 // boolean Value1 = sValue.get(0); // boolean Value2 = sValue.get(1); // if (Value1) { // storageCageService.EndTask(0); // if (Value1) { // storageCageService.EndTask(0); // } // if (Value2) { // storageCageService.EndTask(1); // } // if (Value2) { // storageCageService.EndTask(1); // } // // 检查布尔值列表是否为空 // if (!sValue.isEmpty()) { // } // // 检查布尔值列表是否为空 // if (!sValue.isEmpty()) { // // 调用 S7control.getinstance().WriteBit 方法将布尔值列表写入地址列表 // S7control.getinstance().WriteBit(niuanaddressList3, sValue); // System.out.println( // "Values " + sValue + " written to PLC at address " + niuanaddressList3); // } // } // // 调用 S7control.getinstance().WriteBit 方法将布尔值列表写入地址列表 // S7control.getinstance().WriteBit(niuanaddressList3, sValue); // System.out.println( // "Values " + sValue + " written to PLC at address " + niuanaddressList3); // } // } // } catch (Exception e) { // System.err.println("An error occurred while writing bit to PLC: " + e.getMessage()); // System.err.println("An error occurred while writing bit to PLC: " + // e.getMessage()); // } webserver.clearMessages(); } springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
@@ -17,25 +17,25 @@ // System.out.println("启动完成"); new PlcHold().start(); // new PlcHold().start(); new Plchome().start(); new Plcalarm().start(); // new Plcalarm().start(); new Plcsign().start(); // new Plcsign().start(); new Plcstate().start(); new PlcPositioning1().start(); // new Plcstate().start(); // new PlcPositioning1().start(); new PlcParameter2().start(); // new PlcParameter2().start(); new PLCAutomaticParameterSetting().start(); // new PLCAutomaticParameterSetting().start(); new PlcManualonePosition().start(); new PlcManualonePosition2().start(); new PlcServoManualone().start(); new PLCManualJog().start(); new Plclog().start(); // new PlcManualonePosition().start(); // new PlcManualonePosition2().start(); // new PlcServoManualone().start(); // new PLCManualJog().start(); // new Plclog().start(); } } springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
@@ -4,7 +4,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; import org.springframework.beans.factory.annotation.Autowired; @@ -17,9 +17,9 @@ import com.example.springboot.service.SpianService; import com.example.springboot.service.StorageCageService; import com.example.springboot.common.Result; import com.example.springboot.component.Plchome; import com.example.springboot.component.S7control; import com.example.springboot.entity.CarPosition; import com.example.springboot.entity.StorageCage; import com.example.springboot.entity.alarmmg; @@ -34,11 +34,7 @@ @RequestMapping("/home") public class HomeController { @Autowired HomeMapper homeMapper; @Autowired HomeService storageRackService; @Autowired SpianService spianService; @@ -138,11 +134,11 @@ return Result.success(map); } //终止进片/出片任务 // 终止进片/出片任务 @GetMapping("/EndTask") public Result EndTask(int types) { storageCageService.EndTask(types); Map<String, Object> map = new HashMap<>(); map.put("message3", "200"); return Result.success(map); @@ -183,15 +179,18 @@ if (result == null) { north_glass_buffer1 north_glass_buffer1 = jdbcConnections.SelectGlassByGlassIdOrderIdFrameId(glassid, "", ""); String flip = jdbcConnections.SelectFlipByFrameBarcode(north_glass_buffer1.getFrameBarcode()); if (flip != null) { String position = jdbcConnections.SelectPositionByFrameBarcode(north_glass_buffer1.getFrameBarcode()); if (position != null) { String framelength = jdbcConnections.SelectFrameLengthByFrameBarcode(north_glass_buffer1.getFrameBarcode()); String frameheight = jdbcConnections.SelectFrameHeightByFrameBarcode(north_glass_buffer1.getFrameBarcode()); int sequence = homeMapper.SelectMaxSquence(); homeMapper.AddOutSliceS(glassid, flip, north_glass_buffer1.getFrameBarcode(), north_glass_buffer1.getglasslengthmm().toString(), north_glass_buffer1.getglassheightmm().toString(), sequence, position, (short) 0, north_glass_buffer1.getordernumber(), north_glass_buffer1.getlistnumber(), north_glass_buffer1.getboxnumber(), north_glass_buffer1.getglasslength().toString(), north_glass_buffer1.getglassheight().toString()); north_glass_buffer1.getglassheight().toString(), framelength, frameheight); map.put("message2", "200"); } else { map.put("message2", "300"); @@ -321,9 +320,9 @@ @PostMapping("/SelectAluminumFrameInfoById") public Result SelectAluminumFrameInfoById(String FrameBarcode) throws SQLException { String flip = jdbcConnections.SelectFlipByFrameBarcode(FrameBarcode); List<north_glass_buffer1> listAluminumFrame = north_Glass_Buffer1Service.SelectAluminumFrameInfoById(FrameBarcode); List<north_glass_buffer1> AluminumFrame = north_Glass_Buffer1Service.SelectAluminumFrameInfoById(FrameBarcode); Map<String, Object> map = new HashMap<>(); map.put("listAluminumFrame", listAluminumFrame); map.put("AluminumFrame", AluminumFrame); map.put("flip", flip); return Result.success(map); } @@ -341,7 +340,8 @@ // 添加铝框id对应玻璃到出片队列 @PostMapping("/AddOutSliceS") public Result AddOutSliceS(String FrameNo) throws SQLException { //public Result AddOutSliceS(@RequestBody String[][] AluminumFrames) throws SQLException { // public Result AddOutSliceS(@RequestBody String[][] AluminumFrames) throws // SQLException { north_Glass_Buffer1Service.AddOutSliceS(FrameNo); Map<String, Object> map = new HashMap<>(); map.put("message", "200"); @@ -353,9 +353,10 @@ public Result isAllowQueues(Boolean isAllowQueue, @RequestBody List<Out_slice> out_slice) { Plchome.isAllowQueue = isAllowQueue; // if (isAllowQueue == true) { // for (Out_slice out_slice2 : out_slice) { // homeMapper.UpdateOutSliceSequence(out_slice2.getGlassId(), out_slice2.getSequence()); // } // for (Out_slice out_slice2 : out_slice) { // homeMapper.UpdateOutSliceSequence(out_slice2.getGlassId(), // out_slice2.getSequence()); // } // } Map<String, Object> map = new HashMap<>(); map.put("message", "200"); @@ -393,9 +394,57 @@ // 手动完成任务 @PostMapping("/FrameStateUpdate") public Result FrameStateUpdate(String frameno, String framestate) { return outSliceServive.FrameStateUpdate(frameno, framestate); public Result FrameStateUpdate(String frameno) { return outSliceServive.FrameStateUpdate(frameno); } // 手动写入plc扫码位玻璃id @PostMapping("/WriteGlassID") public void WriteGlassID(String glassid) { // 扫码位写入玻璃id } // 清除指定位置id @PostMapping("/ClearGlassId") public Result ClearGlassId(String position, String glassid) { return storageCageService.ClearGlassId(position, glassid); } // 清除待确认铝框信息 @PostMapping("/CloseForm7") public Result CloseForm7() { Plchome.AluminumFrame = null; Map<String, Object> map = new HashMap<>(); map.put("message", "200"); return Result.success(map); } // 终止进/出片任务 @PostMapping("/TaskStop") public Result TaskStop(Short num) { storageCageService.EndTask(num); Map<String, Object> map = new HashMap<>(); map.put("message", "200"); return Result.success(map); } // 软急停 @PostMapping("/SoftEmergencyStop") public Result SoftEmergencyStop(Short num) { String position="DB101.11.3"; Map<String, Object> map = new HashMap<>(); if (S7control.getinstance().CheckConnected() == true) { S7control.getinstance().WriteBit(position, false); try { TimeUnit.MILLISECONDS.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); } S7control.getinstance().WriteBit(position, true); map.put("message", "200"); } else { map.put("message", "300"); } return Result.success(map); } } springboot-vue3/src/main/java/com/example/springboot/entity/Out_slice.java
@@ -1,4 +1,5 @@ package com.example.springboot.entity; //出片队列表 public class Out_slice { private int id;//自增id @@ -16,8 +17,9 @@ private String boxId;//箱子id private double glasswidthmm;//玻璃宽mm private double glassheightmm;//玻璃高mm private String position_x;//x坐标 private int framestate;//y坐标 private int framestate;//铝框状态 private double framewidthmm; private double frameheightmm; public String getPosition() { return position; @@ -178,4 +180,21 @@ public void SetFrameState(int framestate) { this.framestate = framestate; } public double getFrameWidthMm() { return framewidthmm; } public void setFrameWidthMm(double framewidthmm) { this.framewidthmm = framewidthmm; } public double getFrameHeightMm() { return frameheightmm; } public void setFrameHeightMm(double frameheightmm) { this.frameheightmm = frameheightmm; } } springboot-vue3/src/main/java/com/example/springboot/entity/north_glass_buffer1.java
@@ -21,7 +21,7 @@ private String slotnumber;// 格子 private String datemodified;// private String datecreated;// private String FrameBarcode;// 铝框id private String frameBarcode;// 铝框id public StorageCage storageCage; @@ -154,11 +154,11 @@ } public String getFrameBarcode() { return FrameBarcode; return frameBarcode; } public void setFrameBarcode(String FrameBarcode) { this.FrameBarcode = FrameBarcode; public void setFrameBarcode(String frameBarcode) { this.frameBarcode = frameBarcode; } } springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
@@ -161,8 +161,8 @@ Out_slice SelectQueueByglassid(String getbarcode); //添加出片队列 @Insert("INSERT INTO out_slice( `glassId`, `barcode`, `glasswidth`, `glassheight`, `state`, `flip`, `sequence`, `time` ,`position` ,`orderid` ,`listid` ,`boxid` ,`glasswidthmm` ,`glassheightmm`) VALUES ( #{glassid}, #{FrameNo}, #{glasslengthMm}, #{glassheightMm}, #{state}, #{flip}, #{sequence}, now(), #{position}, #{orderid}, #{listid}, #{boxid}, #{glasswidth}, #{glassheight});") void AddOutSliceS(String glassid, String flip, String FrameNo, String glasslengthMm, String glassheightMm, int sequence, String position, Short state,String orderid, String listid, String boxid, String glasswidth, String glassheight); @Insert("INSERT INTO out_slice( `glassId`, `barcode`, `glasswidth`, `glassheight`, `state`, `flip`, `sequence`, `time` ,`position` ,`orderid` ,`listid` ,`boxid` ,`glasswidthmm` ,`glassheightmm` ,`framewidthmm` ,`frameheightmm` ) VALUES ( #{glassid}, #{FrameNo}, #{glasslengthMm}, #{glassheightMm}, #{state}, #{flip}, #{sequence}, now(), #{position}, #{orderid}, #{listid}, #{boxid}, #{glasswidth}, #{glassheight}, #{framewidthmm}, #{frameheightmm});") void AddOutSliceS(String glassid, String flip, String FrameNo, String glasslengthMm, String glassheightMm, int sequence, String position, Short state,String orderid, String listid, String boxid, String glasswidth, String glassheight,String framewidthmm,String frameheightmm); //出片队列调序 @Update("update out_slice set sequence=#{sequence} where glassid=#{glassId}") @@ -172,15 +172,15 @@ @Select("select ifnull(max(sequence),0)+1 from out_slice ") Short SelectMaxSquence(); //查询用户权限 @Select("select rp.* from role_permission rp inner join user r on rp.role_id=r.role_id and r.username=#{username} and (permission_id=32 or permission_id=33 or permission_id=34 or permission_id=35)") @Select("select rp.* from role_permission rp inner join user r on rp.role_id=r.role_id and r.username=#{username} and (permission_id=32 or permission_id=33 or permission_id=34 or permission_id=35 or permission_id=36 or permission_id=37 or permission_id=38)") List<RolePermission> SelectPermissionByUserName(String username); //根据玻璃完成出片任务 @Update("update out_slice set state=4 where id=#{id}") @Update("update out_slice set state=3 where id=#{id}") void CompleteQueue(String id); //根据玻璃完成出片任务 @Update("update out_slice set state=4 where id=#{id}") @Update("update out_slice set state=3 where id=#{id}") void CompleteQueueByGlassId(String glassid); //查询铝框id对应玻璃完成数量 @@ -204,7 +204,15 @@ List<StorageTask> SelectTaskByState(int task_type); //修改出片队列铝框状态 @Select("update out_slice set framestate=#{framestate} where barcode=#{frameno}") void FrameStateUpdate(String frameno, String framestate); @Update("update out_slice set framestate=1 where barcode=#{frameno}") void FrameStateUpdate(String frameno); //查询当前铝框信息 @Select("select * from out_slice where framestate=0 order by id limit 1") Out_slice SelectCurrentFrame(); //根据玻璃id查询任务信息 @Select("select task_type from storage_task where glass_id=#{glassid} and task_state!=2") Short SelectTaskByGlassId(String glassid); } springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java
@@ -95,7 +95,7 @@ // queue.setdatecreated(rs.getString("datecreated")); // queue.setFrameBarcode(rs.getString("FrameBarcode")); } // conn.close(); conn.close(); return queue; } @@ -134,7 +134,7 @@ glass.add(north_glass_buffer1s); } // conn.close(); conn.close(); return glass; } @@ -169,7 +169,7 @@ glass.add(north_glass_buffer1s); } // conn.close(); conn.close(); return glass; } @@ -186,7 +186,7 @@ flip=rs.getString("Flip"); } // conn.close(); conn.close(); return flip; } //根据铝框id查询是否铝框摆放 @@ -201,7 +201,39 @@ while (rs.next()) { position=rs.getString("position"); } // conn.close(); conn.close(); return position; } //根据铝框id查询铝框宽 public String SelectFrameLengthByFrameBarcode(String frameBarcode) throws SQLException { conn = getConn(); // north_glass_buffer1 glass=new north_glass_buffer1(); String position=""; String sql1 = "select * from north_glass_buffer1_frames where Barcode=? limit 1"; ps = conn.prepareStatement(sql1); ps.setString(1, frameBarcode); rs= ps.executeQuery(); while (rs.next()) { position=rs.getString("framelength"); } conn.close(); return position; } //根据铝框id查询铝框高 public String SelectFrameHeightByFrameBarcode(String frameBarcode) throws SQLException { conn = getConn(); // north_glass_buffer1 glass=new north_glass_buffer1(); String position=""; String sql1 = "select * from north_glass_buffer1_frames where Barcode=? limit 1"; ps = conn.prepareStatement(sql1); ps.setString(1, frameBarcode); rs= ps.executeQuery(); while (rs.next()) { position=rs.getString("frameheight"); } conn.close(); return position; } springboot-vue3/src/main/java/com/example/springboot/service/North_Glass_Buffer1Service.java
@@ -56,7 +56,7 @@ north_glass_buffer1.setstorageCage(homeMapper.SelectStorageGlassById(north_glass_buffer1.getbarcode())); north_glass_buffer1.setOut_slice(homeMapper.SelectQueueByglassid(north_glass_buffer1.getbarcode())); } // 对嵌套类的其中一列进行排序 // 对嵌套类进行排序 Collections.sort(listAluminumFrame, new north_glass_buffer1Comparator()); return listAluminumFrame; } @@ -66,6 +66,8 @@ List<north_glass_buffer1> north_glass_buffer1s = SelectAluminumFrameInfoById(FrameBarcode); String flip = jdbcConnections.SelectFlipByFrameBarcode(FrameBarcode); String position = jdbcConnections.SelectPositionByFrameBarcode(FrameBarcode); String framelength=jdbcConnections.SelectFrameLengthByFrameBarcode(FrameBarcode); String frameheight=jdbcConnections.SelectFrameHeightByFrameBarcode(FrameBarcode); int sequence = homeMapper.SelectMaxSquence(); for (north_glass_buffer1 north_glass_buffer1 : north_glass_buffer1s) { Short state = 0; @@ -78,7 +80,7 @@ north_glass_buffer1.getglassheightmm().toString(), sequence, position, state, north_glass_buffer1.getordernumber(), north_glass_buffer1.getlistnumber(), north_glass_buffer1.getboxnumber(), north_glass_buffer1.getglasslength().toString(), north_glass_buffer1.getglassheight().toString()); north_glass_buffer1.getglassheight().toString(),framelength,frameheight); sequence += 1; } } springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java
@@ -24,7 +24,6 @@ @Autowired SpianService spianService; public void AddOutSliceS(String[][] AluminumFrames) throws SQLException { // int sequence = homeMapper.SelectMaxSquence(); @@ -57,7 +56,7 @@ homeMapper.CompleteQueueByFrameNo(frameid); } StorageCage storageCage = homeMapper.SelectGlassInfo(glassid); if (storageCage != null&&storageCage.getState().equals("3")) { if (storageCage != null && storageCage.getState().equals("3")) { spianMapper.UpdataOutCage1(storageCage.getGlassWidth(), storageCage.getCage(), storageCage.getCell()); homeMapper.DeleteByGlassID(glassid); } @@ -69,40 +68,45 @@ // 确认后完成修改出片队列状态 public void CompleteQueueByGlassId(String glassid) { homeMapper.CompleteQueueByGlassId(glassid); Out_slice outslice=homeMapper.SelectQueueByglassid(glassid); Out_slice outslice = homeMapper.SelectQueueByglassid(glassid); Short num = homeMapper.SelectCountByFrameNo(outslice.getBarCode()); if (num == 0) { homeMapper.CompleteQueueByFrameNo(outslice.getBarCode()); } } //终止进片/出片 // 终止进片/出片 public void StopTask(String glassid, int i) { if (i == 0) {// 进片终止 spianService.overtask(glassid); DeleteByGlassIDs(glassid); homeMapper.UpdateOutSliceGlass(glassid); } else {// 出片终止 spianMapper.UpdatetaskOut(glassid);//完成出片任务 spianMapper.UpdatetaskOut(glassid);// 完成出片任务 spianMapper.UpdataGlassCage(glassid, 0);// 清除出片格子玻璃信息 spianMapper.UpdateCageOver(glassid, 0);// 更改笼子表出片状态 homeMapper.UpdateOutSliceGlass(glassid);//修改出片队列此玻璃状态为缺失 homeMapper.UpdateOutSliceGlass(glassid);// 修改出片队列此玻璃状态为缺失 } } //删除笼内玻璃还原宽度 // 删除笼内玻璃还原宽度 public void DeleteByGlassIDs(String glassid) { StorageCage glassinfor = homeMapper.SelectGlassInfo(glassid); spianMapper.UpdataOutCage1(glassinfor.getGlassWidth(), glassinfor.getCage(), glassinfor.getCell()); homeMapper.DeleteByGlassID(glassid); } public Result FrameStateUpdate(String frameno, String framestate) { homeMapper.FrameStateUpdate(frameno, framestate); //修改铝框确认状态 public Result FrameStateUpdate(String frameno) { homeMapper.FrameStateUpdate(frameno); Map<String, Object> map = new HashMap<>(); map.put("message", "200"); return Result.success(map); } } //查询当前铝框 public Out_slice SelectCurrentFrame() { return homeMapper.SelectCurrentFrame(); } } springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java
@@ -1,10 +1,15 @@ package com.example.springboot.service; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.example.springboot.common.Result; import com.example.springboot.component.S7control; import com.example.springboot.entity.StorageCage; import com.example.springboot.entity.StorageTask; import com.example.springboot.mapper.HomeMapper; @@ -21,10 +26,25 @@ private SpianService spianService; public void EndTask(int types) { String A01glassid1 = spianService.queGlassid("DB103.128", 14).toString(); String A01glassid2 = spianService.queGlassid("DB103.142", 14).toString(); String A02glassid1 = spianService.queGlassid("DB103.156", 14).toString(); String B01glassid = spianService.queGlassid("DB103.184", 14).toString(); String B02glassid = spianService.queGlassid("DB103.198", 14).toString(); if (types == 0) {// 终止进片任务 List<StorageTask> cageList = homeMapper.SelectTaskByState(types); for (StorageTask storageTask : cageList) { outSliceServive.StopTask(storageTask.getGlassId(), types); // 判断出片任务位置并清除对应玻璃id if (storageTask.getGlassId() == A01glassid1 || storageTask.getGlassId() == A01glassid2) { outSliceServive.StopTask(storageTask.getGlassId(), types); ClearGlassId("DB101.10.0"); } else if (storageTask.getGlassId() == B01glassid) { outSliceServive.StopTask(storageTask.getGlassId(), types); ClearGlassId("DB101.10.2"); } else if (storageTask.getGlassId() == B02glassid) { ClearGlassId("DB101.10.3"); outSliceServive.StopTask(storageTask.getGlassId(), types); } } // 发送终止进片任务信号 } else {// 终止出片任务 @@ -37,22 +57,78 @@ } else {// 出片 outSliceServive.StopTask(storageCagez.getGlassId(), types); } // 判断出片任务位置并清除对应玻璃id if (storageCagez.getGlassId() == A02glassid1) { outSliceServive.StopTask(storageCagez.getGlassId(), types); ClearGlassId("DB101.10.1"); } else if (storageCagez.getGlassId() == B01glassid) { outSliceServive.StopTask(storageCagez.getGlassId(), types); ClearGlassId("DB101.10.2"); } else if (storageCagez.getGlassId() == B02glassid) { ClearGlassId("DB101.10.3"); outSliceServive.StopTask(storageCagez.getGlassId(), types); } } } } } //手动完成任务 public void UpdateTask(Integer types, Integer shelfrack, String glassid) { if (types == 0) {// 完成进片 spianService.overtask(glassid); } else if (types == 1) {// 完成出片 spianService.overtask(glassid); } else if (types == 2) {// 终止进片任务 outSliceServive.StopTask(glassid, 0); // 发送终止进片任务信号 } else {// 终止出片任务 outSliceServive.StopTask(glassid, 1); } // else if (types == 2) {// 终止进片任务 // outSliceServive.StopTask(glassid, 0); // // 发送终止进片任务信号 // } else {// 终止出片任务 // outSliceServive.StopTask(glassid, 1); // } } //判断任务类型后清除对应玻璃id public Result ClearGlassId(String position, String glassid) { Map<String, Object> map = new HashMap<>(); if (S7control.getinstance().CheckConnected() == true) { // 判断进出还是出片任务 Short type = homeMapper.SelectTaskByGlassId(glassid); if (type == 0) { // 进片 outSliceServive.StopTask(glassid, 0); } else if (type == 1) { // 出片 outSliceServive.StopTask(glassid, 1); } else { // 调拨 outSliceServive.StopTask(glassid, 0); outSliceServive.StopTask(glassid, 1); } ClearGlassId(position); map.put("message", "200"); } else { map.put("message", "300"); } return Result.success(map); } //清除玻璃id public Result ClearGlassId(String position) { Map<String, Object> map = new HashMap<>(); if (S7control.getinstance().CheckConnected() == true) { S7control.getinstance().WriteBit(position, true); try { TimeUnit.MILLISECONDS.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); } S7control.getinstance().WriteBit(position, false); map.put("message", "200"); } else { map.put("message", "300"); } return Result.success(map); } }