Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes
| | |
| | | })
|
| | | }
|
| | |
|
| | | export function Inglassid(cage,cell,tier,data) {
|
| | | export function Inglassid(cage, cell, tier, data) {
|
| | | return request({
|
| | | url: '/home/Inglassid?cage=' + cage + '&cell=' + cell+ '&tier=' + tier,
|
| | | url: '/home/Inglassid?cage=' + cage + '&cell=' + cell + '&tier=' + tier,
|
| | | method: 'post',
|
| | | data
|
| | | })
|
| | | }
|
| | |
|
| | | export function SelectGlass(orderid) {
|
| | | return request({
|
| | | url: '/home/SelectGlass?orderid=' + orderid,
|
| | | method: 'post',
|
| | | data: ""
|
| | | })
|
| | | }
|
| | |
|
| | | export function InsertQueueGlassId(glassid, id) {
|
| | | return request({
|
| | | url: '/home/InsertQueueGlassId?glassid=' + glassid + '&id=' + id,
|
| | | method: 'post',
|
| | | data: ""
|
| | | })
|
| | | }
|
| | |
|
| | | export function UpdateQueueState() {
|
| | | return request({
|
| | | url: '/home/UpdateQueueState',
|
| | | method: 'post',
|
| | | data: ""
|
| | | })
|
| | | }
|
| | |
|
| | | export function DeleteQueueGlass(id) {
|
| | | return request({
|
| | | url: '/home/DeleteQueueGlass?id=' + id,
|
| | | method: 'post',
|
| | | data: ""
|
| | | })
|
| | | } |
| New file |
| | |
| | | { |
| | | "action": [ |
| | | { |
| | | "name": "D01 VFD conveyor" |
| | | }, |
| | | { |
| | | "name": "D02 VFD conveyor" |
| | | }, |
| | | { |
| | | "name": "D03 VFD conveyor" |
| | | }, |
| | | { |
| | | "name": "D04 VFD conveyor" |
| | | }, |
| | | { |
| | | "name": "D05 VFD conveyor" |
| | | }, |
| | | { |
| | | "name": "D06 VFD conveyor" |
| | | }, |
| | | { |
| | | "name": "A01 VFD conveyor" |
| | | }, |
| | | { |
| | | "name": "A02 VFD conveyor" |
| | | }, |
| | | { |
| | | "name": "B01 VFD conveyor" |
| | | }, |
| | | { |
| | | "name": "B02 VFD conveyor" |
| | | }, |
| | | { |
| | | "name": "A01 SERVE TURN JOG+" |
| | | }, |
| | | { |
| | | "name": "A02 SERVE TURN JOG-" |
| | | }, |
| | | { |
| | | "name": "A01 SERVE TRAVEL JOG+" |
| | | }, |
| | | { |
| | | "name": "A02 SERVE TRAVEL JOG-" |
| | | }, |
| | | { |
| | | "name": "B01 SERVE TRAVEL JOG+" |
| | | }, |
| | | { |
| | | "name": "B02 SERVE TRAVEL JOG-" |
| | | }, |
| | | { |
| | | "name": "A01 SERVE TURN POS" |
| | | }, |
| | | { |
| | | "name": "A02 SERVE TURN POS" |
| | | }, |
| | | { |
| | | "name": "A01 SERVE TRAVEL POS" |
| | | }, |
| | | { |
| | | "name": "A02 SERVE TRAVEL POS" |
| | | }, |
| | | { |
| | | "name": "B01 SERVE TRAVEL POS" |
| | | }, |
| | | { |
| | | "name": "B02 SERVE TRAVEL POS" |
| | | }, |
| | | { |
| | | "name": "B01 YV TURN" |
| | | }, |
| | | { |
| | | "name": "B01 YV UP DOWN" |
| | | }, |
| | | { |
| | | "name": "B02 YV TURN" |
| | | }, |
| | | { |
| | | "name": "B02 YV UP DOWN" |
| | | } |
| | | ], |
| | | "address": [ |
| | | { |
| | | "name": "DB2.0.0", |
| | | "count": 26 |
| | | } |
| | | ] |
| | | } |
| New file |
| | |
| | | { |
| | | "para": [ |
| | | { |
| | | "name": "conveyor Velocity(Auto FAST)", |
| | | "read": 33, |
| | | "sending": 0, |
| | | "unit": "m/min" |
| | | }, |
| | | { |
| | | "name": "conveyor Velocity(Auto SLOW)", |
| | | "read": 11, |
| | | "sending": 0, |
| | | "unit": "m/min" |
| | | }, |
| | | { |
| | | "name": "conveyor Velocity(Manual)", |
| | | "read": 22, |
| | | "sending": 0, |
| | | "unit": "m/min" |
| | | }, |
| | | { |
| | | "name": "A01 A02 TURN JOG Velocity", |
| | | "read": 0, |
| | | "sending": 0, |
| | | "unit": "mm/S" |
| | | }, |
| | | { |
| | | "name": "A01 A02 TRAVEL JOG Velocity", |
| | | "read": 0, |
| | | "sending": 0, |
| | | "unit": "mm/S" |
| | | }, |
| | | { |
| | | "name": "B01 B02 TRAVEL JOG Velocity", |
| | | "read": 0, |
| | | "sending": 0, |
| | | "unit": "mm/S" |
| | | }, |
| | | { |
| | | "name": "A01 A02 TURN POS Velocity AUTO", |
| | | "read": 0, |
| | | "sending": 0, |
| | | "unit": "mm/S" |
| | | }, |
| | | { |
| | | "name": "A01 A02 TURN POS Velocity manual", |
| | | "read": 0, |
| | | "sending": 0, |
| | | "unit": "mm/S" |
| | | }, |
| | | { |
| | | "name": "A01 A02 TRAVEL POS Velocity AUTO", |
| | | "read": 0, |
| | | "sending": 0, |
| | | "unit": "mm/S" |
| | | }, |
| | | { |
| | | "name": "A01 A02 TRAVEL POS Velocity manual", |
| | | "read": 0, |
| | | "sending": 0, |
| | | "unit": "mm/S" |
| | | }, |
| | | { |
| | | "name": "B01 B02 TRAVEL POS Velocity AUTO", |
| | | "read": 0, |
| | | "sending": 0, |
| | | "unit": "mm/S" |
| | | }, |
| | | { |
| | | "name": "B01 B02 TRAVEL POS Velocity manual", |
| | | "read": 0, |
| | | "sending": 0, |
| | | "unit": "mm/S" |
| | | } |
| | | ], |
| | | "address": [ |
| | | { |
| | | "name": "DB100.0", |
| | | "count": 12 |
| | | }, |
| | | { |
| | | "name": "DB100.0", |
| | | "count": 12 |
| | | } |
| | | ] |
| | | } |
| New file |
| | |
| | | { |
| | | "sign": [ |
| | | { |
| | | "name": "D01.SR dec", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "D01.SR in pos", |
| | | "value": "0", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "D02.SR dec", |
| | | "value": "0", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "D02.SR in pos", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "D03.SR into", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "D03.SR dec", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "D03.SR in pos", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "D04.SR dec", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "D04.SR in pos", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "D05.SR dec", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "D05.SR in pos", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "D06.SR dec", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "D06.SR in pos", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B01.SR out dec", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B01.SR out in pos", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B01.SR in dec", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B01.SR in in pos", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B01.SR turn on", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B01.SR turn off", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B01.SR up", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B01.SR down", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B02.SR out dec", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B02.SR out in pos", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B02.SR in dec", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B02.SR in in pos", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B02.SR turn on", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B02.SR turn off", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B02.SR up", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B02.SR down", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B01.SR out safety", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B01.SR in safety", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B02.SR out safety", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "SB.start(+)", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "SB.stop(1)", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "SB.reset", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "SB.auto/manul", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "SB.pause", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "SB.emg", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "D01.SB.start", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "D06.SB.start", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B02.SR in safety", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "SAFETYDOOR.requset", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "SAFETYDOOR.confirm", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "SAFETYDOOR.reset", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "LED.red", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "LED.green", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "LED.yellow", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "D01.LED.green", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "D06.LED.green", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B01.YV.turn", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B01.YV.up down", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B01.YV.gassing", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B02.YV.turn", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B02.YV.up down", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "B02.YV.gassing", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "SAFETYDOOR.led", |
| | | "value": "1", |
| | | "state": "1" |
| | | }, |
| | | { |
| | | "name": "SAFETYDOOR.open", |
| | | "value": "1", |
| | | "state": "1" |
| | | } |
| | | ], |
| | | "address": [ |
| | | { |
| | | "name": "DB102.0.0", |
| | | "count": 58 |
| | | } |
| | | ] |
| | | } |
| New file |
| | |
| | | { |
| | | "state": [ |
| | | { |
| | | "name": "D01.State" |
| | | }, |
| | | { |
| | | "name": "D02.State" |
| | | }, |
| | | { |
| | | "name": "B01.State" |
| | | }, |
| | | { |
| | | "name": "B02.State" |
| | | }, |
| | | { |
| | | "name": "A01.State" |
| | | }, |
| | | { |
| | | "name": "A02.State" |
| | | }, |
| | | { |
| | | "name": "D03.State" |
| | | }, |
| | | { |
| | | "name": "D04.State" |
| | | }, |
| | | { |
| | | "name": "D05.State" |
| | | }, |
| | | { |
| | | "name": "D06.State" |
| | | } |
| | | ], |
| | | "address": [ |
| | | { |
| | | "name": "DB103.0", |
| | | "count": 10 |
| | | } |
| | | ] |
| | | } |
| | |
| | | "width":"width",
|
| | | "Operate":"Operate",
|
| | | "end task":"end task",
|
| | | "cancal":"cancal",
|
| | | "cancel":"cancel",
|
| | | "confirm":"confirm",
|
| | | "number":"number",
|
| | | "Outfeed Barcodid":"Outfeed Barcodid",
|
| | |
| | | "Usage":"Usage",
|
| | | "Space (Pieces)":"Space (Pieces)",
|
| | | "This glass is already in the cage":"This glass is already in the cage",
|
| | | "permission update":"permission update"
|
| | | "Enter the Order lD":"Enter the Order lD",
|
| | | "OrderInfo":"OrderInfo",
|
| | | "Query":"Query",
|
| | | "permission update":"permission update",
|
| | | "query was successful":"query was successful",
|
| | | "Scan Code Point":"Scan Code Point",
|
| | | "Upper film position":"Upper film position",
|
| | | "Glass Information":"Glass Information",
|
| | | "current Information":"current information",
|
| | | "Modify Information":"Modify information",
|
| | | "Clear Current":"Clear Current",
|
| | | "Confirm Modification":"Confirm modification",
|
| | | "The glass ID already exists in the loading queue":"The glass ID already exists in the loading queue",
|
| | | "This glass ID already exists in the sorting cage":"This glass ID already exists in the sorting cage"
|
| | |
|
| | | } |
| | |
| | | "width":"宽",
|
| | | "Operate":"操作",
|
| | | "end task":"完成任务",
|
| | | "cancal":"取消",
|
| | | "cancel":"取消",
|
| | | "confirm":"确认",
|
| | | "number":"数量",
|
| | | "Outfeed Barcodid":"出片玻璃id",
|
| | |
| | | "Usage":"使用率",
|
| | | "Space (Pieces)":"空间(片数)",
|
| | | "This glass is already in the cage":"笼子里已有此玻璃",
|
| | | "permission update":"权限编辑"
|
| | | "Enter the Order lD":"请输入订单id",
|
| | | "OrderInfo":"订单信息",
|
| | | "Query":"查询",
|
| | | "permission update":"权限编辑",
|
| | | "query was successful":"查询成功",
|
| | | "Scan Code Point":"扫码位",
|
| | | "Upper film position":"上片位",
|
| | | "Glass Information":"玻璃信息",
|
| | | "current Information":"当前信息",
|
| | | "Modify Information":"修改信息",
|
| | | "Clear Current":"清除当前",
|
| | | "Confirm Modification":"确认修改",
|
| | | "The glass ID already exists in the loading queue":"上片队列已存在此玻璃id",
|
| | | "This glass ID already exists in the sorting cage":"理片笼内已存在此玻璃id"
|
| | |
|
| | | } |
| | |
| | | <div class="app"> |
| | | <!--面包屑导航区域--> |
| | | <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb"> |
| | | <router-link to="/Electrical/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm') }}</router-link> |
| | | <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State') }}</router-link> |
| | | <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action') }}</router-link> |
| | | <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter') }}</router-link> |
| | | <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign') }}</router-link> |
| | | <router-link to="/Electrical/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm') |
| | | }}</router-link> |
| | | <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State') |
| | | }}</router-link> |
| | | <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action') |
| | | }}</router-link> |
| | | <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter') |
| | | }}</router-link> |
| | | <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign') |
| | | }}</router-link> |
| | | </el-breadcrumb> |
| | | <div>Action</div> |
| | | <el-form label-width="100px" style="display: flex;flex-wrap: wrap;" :model="{ messagepack }"> |
| | |
| | | <el-input v-model="item.name" style="width: 240px;" class="in_mc" readonly></el-input> |
| | | <el-switch v-model="item.value" active-value="1" inactive-value="0" @change="send()"></el-switch> |
| | | </div> |
| | | |
| | | |
| | | </el-form> |
| | | |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <script > |
| | | <script > |
| | | import LanguageMixin from '../../lang/LanguageMixin' |
| | | import data from '../../configuration/Action' |
| | | let socket; |
| | | export default { |
| | | name: "Action", |
| | | mixins: [LanguageMixin], |
| | | data () { |
| | | return { |
| | | jsonData: data, |
| | | activeButton: '', |
| | | record: { |
| | | params: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
| | |
| | | } |
| | | }, |
| | | created () { |
| | | this.init(); |
| | | this.init(); |
| | | }, |
| | | methods: { |
| | | setActiveButton(buttonName) { |
| | | this.activeButton = buttonName; |
| | | }, |
| | | |
| | | setActiveButton (buttonName) { |
| | | this.activeButton = buttonName; |
| | | }, |
| | | init () { |
| | | let viewname = "action"; |
| | | |
| | |
| | | }; |
| | | // 浏览器端收消息,获得从服务端发送过来的文本消息 |
| | | socket.onmessage = (msg) => { |
| | | //console.log("收到数据====" + msg.data); |
| | | if (!msg.data) { |
| | | return; // 如果收到空数据,则直接返回,不执行后续逻辑 |
| | | } |
| | | |
| | | let obj = JSON.parse(msg.data); |
| | | if (obj.params ){ |
| | | this.record.params[0] = obj.params[0]; |
| | | |
| | | for (let a = 0; a <= this.record.params[0].length - 1; a++) { |
| | | if (!this.record.xyData[a]) { |
| | | this.record.xyData[a] = { name: this.record.canshu[a], value: this.record.params[0][a].toString() }; |
| | | } else { |
| | | if (obj.params) { |
| | | this.record.params[0] = obj.params[0]; |
| | | for (let a = 0; a <= this.record.params[0].length - 1; a++) { |
| | | this.record.xyData[a].name = this.jsonData.action[a].name; |
| | | this.record.xyData[a].value = this.record.params[0][a].toString(); |
| | | } |
| | | const language = this.$i18n.locale; |
| | | if (language === 'en-US') { |
| | | this.replaceChineseWithEnglish(); |
| | | } else { |
| | | this.localizedRoles = [...this.record.xyData]; |
| | | } |
| | | } |
| | | } |
| | | // console.log(this.record.xyData); |
| | | this.$forceUpdate(); |
| | | this.replaceChineseWithEnglish(); |
| | | }; |
| | | |
| | | //关闭事件 |
| | |
| | | this.messagepack.data = this.record.xyData.map(item => parseInt(item.value)); // 转换为整数数组 |
| | | //console.log(this.messagepack); |
| | | socket?.send(JSON.stringify(this.messagepack)); |
| | | } |
| | | }, |
| | | //语言转换 |
| | | replaceChineseWithEnglish () { |
| | | const translation = this.$t('langActions'); |
| | | this.record.xyData = this.record.xyData.map(item => { return { name: translation[item.name] || item.name, value: item.value }; }); |
| | | console.log(translation); |
| | | }, |
| | | |
| | | } |
| | | |
| | |
| | | .el-input__inner { |
| | | border: none; |
| | | } |
| | | |
| | | .blue-button { |
| | | background-color: skyblue; |
| | | } |
| | |
| | | <div class="app">
|
| | | <!-- 面包屑导航区域 -->
|
| | | <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
|
| | | <router-link to="/Electrical/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm') }}</router-link>
|
| | | <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State') }}</router-link>
|
| | | <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action') }}</router-link>
|
| | | <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter') }}</router-link>
|
| | | <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign') }}</router-link>
|
| | | <router-link to="/Electrical/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm')
|
| | | }}</router-link>
|
| | | <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State')
|
| | | }}</router-link>
|
| | | <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action')
|
| | | }}</router-link>
|
| | | <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter')
|
| | | }}</router-link>
|
| | | <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
|
| | | }}</router-link>
|
| | | </el-breadcrumb>
|
| | |
|
| | | <div>Parameter</div>
|
| | |
|
| | | <el-form label-width="100px" style="display: flex; flex-wrap: wrap;" :model="messagepack.data">
|
| | | <div id="btn_div">
|
| | | <el-button type="primary" @click="send()" id="xiafa" :disabled="isButtonDisabled">{{ $t('Distribute parameters') }}</el-button>
|
| | | <el-button type="primary" @click="send()" id="xiafa" :disabled="isButtonDisabled">{{ $t('Distribute parameters')
|
| | | }}</el-button>
|
| | |
|
| | | </div>
|
| | | <div class="kuai_div" v-for="(item, index) in record.xyData" :key="index">
|
| | | <el-input style="width: 280px; border:none;" class="in_mc" v-model="item.name" readonly></el-input>
|
| | | |
| | | <span style="margin-right: 5px; width: 50px;">{{ item.value }}</span>
|
| | | <span style="margin-right: 5px; font-size: 14px;color: red;">|</span>
|
| | | <input v-model="item.value2" type="number" style="width: 43px; margin-right: 5px; margin-top: 5px; font-size: 16px;">
|
| | |
|
| | | <span style="margin-right: 5px; width: 50px;">{{ item.value }}</span>
|
| | | <span style="margin-right: 5px; font-size: 14px;color: red;">|</span>
|
| | | <input v-model="item.value2" type="number"
|
| | | style="width: 43px; margin-right: 5px; margin-top: 5px; font-size: 16px;">
|
| | | <span style="margin-right: 5px; width: 50px;">{{ item.unit }}</span>
|
| | |
|
| | | </div>
|
| | | </el-form>
|
| | |
|
| | | <div>
|
| | | |
| | | </div>
|
| | | </div>
|
| | |
|
| | |
|
| | | |
| | | </div>
|
| | | </div>
|
| | | </template>
|
| | |
|
| | | <script> |
| | | <script>
|
| | |
|
| | | let socket;
|
| | | import LanguageMixin from '../../lang/LanguageMixin'
|
| | | import data from '../../configuration/Parameter'
|
| | | export default {
|
| | | name: "Parameter",
|
| | | mixins: [LanguageMixin],
|
| | | data () {
|
| | | return {
|
| | | jsonData: data,
|
| | | dialogVisible: true,
|
| | | password: '',
|
| | | activeButton: '',
|
| | | record: {
|
| | | params: [100, 200, 10, 10, 10, 10],
|
| | | xyData: [
|
| | | { name: "conveyor Velocity(Auto FAST)", value: 0, value2: 0 },
|
| | | { name: "conveyor Velocity(Auto SLOW)", value: 0, value2: 0 },
|
| | | { name: "conveyor Velocity(Manual)", value: 0, value2: 0 },
|
| | | { name: "A01 A02 TURN JOG Velocity", value: 0, value2: 0 },
|
| | | { name: "A01 A02 TRAVEL JOG Velocity", value: 0, value2: 0 },
|
| | | { name: "B01 B02 TRAVEL JOG Velocity", value: 0, value2: 0 },
|
| | | { name: "A01 A02 TURN POS Velocity AUTO", value: 0, value2: 0 },
|
| | | { name: "A01 A02 TURN POS Velocity manual", value: 0, value2: 0 },
|
| | | { name: "A01 A02 TRAVEL POS Velocity AUTO", value: 0, value2: 0 },
|
| | | { name: "A01 A02 TRAVEL POS Velocity manual", value: 0, value2: 0 },
|
| | | { name: "B01 B02 TRAVEL POS Velocity AUTO", value: 0, value2: 0 },
|
| | | { name: "B01 B02 TRAVEL POS Velocity manual", value: 0, value2: 0 }
|
| | | { name: "conveyor Velocity(Auto FAST)", value: 0, value2: 0, unit: "m/min" },
|
| | | { name: "conveyor Velocity(Auto SLOW)", value: 0, value2: 0, unit: "m/min" },
|
| | | { name: "conveyor Velocity(Manual)", value: 0, value2: 0, unit: "m/min" },
|
| | | { name: "A01 A02 TURN JOG Velocity", value: 0, value2: 0, unit: "mm/S" },
|
| | | { name: "A01 A02 TRAVEL JOG Velocity", value: 0, value2: 0, unit: "mm/S" },
|
| | | { name: "B01 B02 TRAVEL JOG Velocity", value: 0, value2: 0, unit: "mm/S" },
|
| | | { name: "A01 A02 TURN POS Velocity AUTO", value: 0, value2: 0, unit: "mm/S" },
|
| | | { name: "A01 A02 TURN POS Velocity manual", value: 0, value2: 0, unit: "mm/S" },
|
| | | { name: "A01 A02 TRAVEL POS Velocity AUTO", value: 0, value2: 0, unit: "mm/S" },
|
| | | { name: "A01 A02 TRAVEL POS Velocity manual", value: 0, value2: 0, unit: "mm/S" },
|
| | | { name: "B01 B02 TRAVEL POS Velocity AUTO", value: 0, value2: 0, unit: "mm/S" },
|
| | | { name: "B01 B02 TRAVEL POS Velocity manual", value: 0, value2: 0, unit: "mm/S" }
|
| | | ],
|
| | | canshu: []
|
| | | },
|
| | |
| | |
|
| | | created () {
|
| | | this.initWebSocket();
|
| | | this.isButtonDisabled = true; |
| | | this.isButtonDisabled = true;
|
| | |
|
| | | },
|
| | | methods: {
|
| | | |
| | | |
| | | |
| | | setActiveButton(buttonName) {
|
| | | showdata () {
|
| | | console.log(1111);
|
| | | console.log(this.jsonData.para[0].name);
|
| | | // console.log(this.record.xyData);
|
| | |
|
| | | },
|
| | |
|
| | |
|
| | | setActiveButton (buttonName) {
|
| | | this.activeButton = buttonName;
|
| | | },
|
| | | initWebSocket () {
|
| | |
| | | let obj = JSON.parse(msg.data);
|
| | |
|
| | |
|
| | | if (obj.params && obj.state){
|
| | | if (obj.params && obj.state) {
|
| | |
|
| | |
|
| | | |
| | |
|
| | | this.record.params[0] = obj.params[0];
|
| | | this.record.state = obj.state[0];
|
| | | if (obj.state && obj.state.length > 0) {
|
| | | let isButtonDisabled = this.record.state.includes(1);
|
| | | this.isButtonDisabled = isButtonDisabled;
|
| | |
|
| | | |
| | | // 判断state中是否存在1
|
| | | //console.log(isButtonDisabled)
|
| | | // 将判断结果保存到变量isButtonDisabled中
|
| | | this.record.params[0] = obj.params[0];
|
| | | this.record.state = obj.state[0];
|
| | | if (obj.state && obj.state.length > 0) {
|
| | | let isButtonDisabled = this.record.state.includes(1);
|
| | | this.isButtonDisabled = isButtonDisabled;
|
| | |
|
| | | for (let a = 0; a <= this.record.params[0].length - 1; a++) {
|
| | | if (!this.record.xyData[a]) {
|
| | | this.record.xyData[a] = { name: this.record.canshu[a], value: this.record.params[0][a] };
|
| | | } else {
|
| | | this.record.xyData[a].value = this.record.params[0][a];
|
| | |
|
| | | // 判断state中是否存在1
|
| | | //console.log(isButtonDisabled)
|
| | | // 将判断结果保存到变量isButtonDisabled中
|
| | |
|
| | | for (let a = 0; a <= this.record.params[0].length - 1; a++) {
|
| | | // this.record.xyData[a] =
|
| | | // {
|
| | | // name: this.jsonData.para[a].name,
|
| | | // value: this.jsonData.para[a].read,
|
| | | // value2: this.jsonData.para[a].sending,
|
| | | // unit: this.jsonData.para[a].unit
|
| | | // };
|
| | |
|
| | | // if (!this.xyData[a]) {
|
| | | this.record.xyData[a] =
|
| | | {
|
| | | name: this.jsonData.para[a].name,
|
| | | value: this.record.params[0][a],
|
| | | unit: this.jsonData.para[a].unit
|
| | | };
|
| | | }
|
| | | // else {
|
| | | // this.xyData[a].value = this.record.params[0][a];
|
| | | // }
|
| | | // }
|
| | | const language = this.$i18n.locale;
|
| | | if (language === 'en-US') {
|
| | | this.replaceChineseWithEnglish();
|
| | | } else {
|
| | | this.localizedRoles = [...this.record.xyData];
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | //console.log(this.record.xyData);
|
| | | this.$forceUpdate();
|
| | | this.replaceChineseWithEnglish();
|
| | | };
|
| | |
|
| | | // 关闭事件
|
| | |
| | | },
|
| | | handleChange (index, value) {
|
| | | this.record.xyData[index].value = value;
|
| | | }
|
| | | },
|
| | | //语言转换
|
| | | replaceChineseWithEnglish () {
|
| | | const translation = this.$t('langparameter');
|
| | | this.record.xyData = this.record.xyData.map(item => { return { name: translation[item.name] || item.name, value: item.value, unit: item.unit }; });
|
| | | //console.log(translation);
|
| | | },
|
| | | }
|
| | | };
|
| | | </script>
|
| | |
| | |
|
| | | .blue-button {
|
| | | background-color: skyblue;
|
| | | |
| | |
|
| | | }
|
| | |
|
| | | #btn_div {
|
| | | width: 100%;
|
| | | }
|
| | |
| | | <!--面包屑导航区域-->
|
| | | <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
|
| | |
|
| | | <router-link to="/Electrical/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm') }}</router-link>
|
| | | <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State') }}</router-link>
|
| | | <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action') }}</router-link>
|
| | | <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter') }}</router-link>
|
| | | <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign') }}</router-link>
|
| | | <router-link to="/Electrical/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm')
|
| | | }}</router-link>
|
| | | <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State')
|
| | | }}</router-link>
|
| | | <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action')
|
| | | }}</router-link>
|
| | | <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter')
|
| | | }}</router-link>
|
| | | <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
|
| | | }}</router-link>
|
| | |
|
| | | |
| | |
|
| | | </el-breadcrumb>
|
| | | <div>{{ $t('Sign') }}</div>
|
| | | <div style="padding-right: 30px;display: flex;flex-wrap: wrap;" class="neir">
|
| | | <div class="kuai_sb" v-for="item in record.xyData" :key="item.name">
|
| | | <el-col class="deng" :class="getStatusClass(item.value)">
|
| | | </el-col>
|
| | | <el-col class="deng" :class="getStatusClass(item.value)"></el-col>
|
| | | <el-input v-model="item.name" style="width: 280px;" class="in_mc"></el-input>
|
| | |
|
| | | </div>
|
| | |
| | |
|
| | | <script >
|
| | | import LanguageMixin from '../../lang/LanguageMixin'
|
| | | import data from '../../configuration/Sign'
|
| | | let socket;
|
| | | export default {
|
| | | name: "Sign",
|
| | | mixins: [LanguageMixin],
|
| | | data () {
|
| | | return {
|
| | | jsonData: data,
|
| | | activeButton: '',
|
| | | record: {
|
| | | //定义数组,并添加默认值
|
| | | params: [1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
|
| | | 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,],
|
| | | xyData: [
|
| | | { name: 'D01.SR dec', value: 1 },
|
| | | { name: "D01.SR in pos", value: 1 },
|
| | | { name: "D02.SR dec", value: 1 },
|
| | | { name: "D02.SR in pos", value: 1 },
|
| | | { name: "D03.SR into", value: 1 },
|
| | | { name: "D03.SR dec", value: 1 },
|
| | | { name: 'D03.SR in pos', value: 1 },
|
| | | { name: "D04.SR dec", value: 1 },
|
| | | { name: "D04.SR in pos", value: 1 },
|
| | | { name: "D05.SR dec", value: 1 },
|
| | | { name: "D05.SR in pos", value: 1 },
|
| | | { name: "D06.SR dec", value: 1 },
|
| | | { name: 'D06.SR in pos', value: 1 },
|
| | | { name: "B01.SR out dec", value: 1 },
|
| | | { name: "B01.SR out in pos", value: 1 },
|
| | | { name: "B01.SR in dec", value: 1 },
|
| | | { name: "B01.SR in in pos", value: 1 },
|
| | | { name: "B01.SR turn on", value: 1 },
|
| | | { name: 'B01.SR turn off', value: 1 },
|
| | | { name: "B01.SR up", value: 1 },
|
| | | { name: "B01.SR down", value: 1 },
|
| | | { name: "B02.SR out dec", value: 1 },
|
| | | { name: "B02.SR out in pos", value: 1 },
|
| | | { name: "B02.SR in dec", value: 1 },
|
| | | { name: 'B02.SR in in pos', value: 1 },
|
| | | { name: "B02.SR turn on", value: 1 },
|
| | | { name: "B02.SR turn off", value: 1 },
|
| | | { name: "B02.SR up", value: 1 },
|
| | | { name: "B02.SR down", value: 1 },
|
| | | { name: "B01.SR out safety", value: 1 },
|
| | | { name: "B01.SR in safety", value: 1 },
|
| | | { name: "B02.SR out safety", value: 1 },
|
| | | { name: "SB.start(+)", value: 1 },
|
| | | { name: "SB.stop(1)", value: 1 },
|
| | | { name: "SB.reset", value: 1 },
|
| | | { name: "SB.auto/manul", value: 1 },
|
| | | { name: "SB.pause", value: 1 },
|
| | | { name: "SB.emg", value: 1 },
|
| | | { name: "D01.SB.start", value: 1 },
|
| | | { name: "D06.SB.start", value: 1 },
|
| | | { name: "B02.SR in safety", value: 1 },
|
| | | { name: "SAFETYDOOR.requset", value: 1 },
|
| | | { name: "SAFETYDOOR.confirm", value: 1 },
|
| | | { name: "SAFETYDOOR.reset", value: 1 },
|
| | | { name: "LED.red", value: 1 },
|
| | | { name: "LED.green", value: 1 },
|
| | | { name: "LED.yellow", value: 1 },
|
| | | { name: "D01.LED.green", value: 1 },
|
| | | { name: "D06.LED.green", value: 1 },
|
| | | { name: "B01.YV.turn", value: 1 },
|
| | | { name: "B01.YV.up down", value: 1 },
|
| | | { name: "B01.YV.gassing", value: 1 },
|
| | | { name: "B02.YV.turn", value: 1 },
|
| | | { name: "B02.YV.up down", value: 1 },
|
| | | { name: "B02.YV.gassing", value: 1 },
|
| | | { name: "SAFETYDOOR.led", value: 1 },
|
| | | { name: "SAFETYDOOR.open", value: 1 },
|
| | |
|
| | | ],
|
| | | canshu: [
|
| | | 'D01.SR dec',
|
| | | 'D01.SR in pos',
|
| | | 'D02.SR dec',
|
| | | 'D02.SR in pos',
|
| | | 'D03.SR into',
|
| | | 'D03.SR dec',
|
| | | 'D03.SR in pos',
|
| | | 'D04.SR dec',
|
| | | 'D04.SR in pos',
|
| | | 'D05.SR dec',
|
| | | 'D05.SR in pos',
|
| | | 'D06.SR dec',
|
| | | 'D06.SR in pos',
|
| | | 'B01.SR out dec',
|
| | | 'B01.SR out in pos',
|
| | | 'B01.SR in dec',
|
| | | 'B01.SR in in pos',
|
| | | 'B01.SR turn on',
|
| | | 'B01.SR turn off',
|
| | | 'B01.SR up',
|
| | | 'B01.SR down',
|
| | | 'B02.SR out dec',
|
| | | 'B02.SR out in pos',
|
| | | 'B02.SR in dec',
|
| | | 'B02.SR in in pos',
|
| | | 'B02.SR turn on',
|
| | | 'B02.SR turn off',
|
| | | 'B02.SR up',
|
| | | 'B02.SR down',
|
| | | 'LED.red',
|
| | | 'LED.green',
|
| | | 'LED.yellow',
|
| | | ],
|
| | |
|
| | | //定义数组
|
| | | params: [],
|
| | | xyData: [],
|
| | | },
|
| | |
|
| | |
|
| | |
| | | },
|
| | | created () {
|
| | | this.init();
|
| | | //this.showdata();
|
| | | },
|
| | | methods: {
|
| | | showdata () {
|
| | | console.log(1111);
|
| | | console.log(this.jsonData.sign[0].name);
|
| | | // console.log(this.record.xyData);
|
| | |
|
| | | },
|
| | |
|
| | | onButtonClick () {
|
| | | this.isButtonClicked = true; // 将按钮颜色设置为蓝色
|
| | | setTimeout(() => {
|
| | |
| | | },
|
| | | //根据读取PLC的值,根据名称改变颜色
|
| | | getStatusClass (zhuangtai) {
|
| | | // console.log(this.record.xyData);
|
| | | if (zhuangtai === 0) {
|
| | | return "op";
|
| | | }
|
| | |
| | | //console.log("收到数据====" + msg.data);
|
| | | let obj = JSON.parse(msg.data);
|
| | | this.record.params[0] = obj.sig[0];
|
| | | for (let a = 0; a < this.record.params[0].length; a++) {
|
| | | if (!this.record.xyData[a]) {
|
| | | this.record.xyData[a] = { name: this.record.canshu[a], value: this.record.params[0][a] };
|
| | |
|
| | | } else {
|
| | | this.record.xyData[a].value = this.record.params[0][a];
|
| | | this.record.xyData = this.jsonData.sign;
|
| | |
|
| | | }
|
| | |
|
| | | for (let a = 0; a < this.record.xyData.length; a++) {
|
| | | this.record.xyData[a].value = this.record.params[0][a];
|
| | |
|
| | | }
|
| | |
|
| | | this.record.xyData = this.jsonData.sign.filter(item => {
|
| | | return item.state != 0;
|
| | | }
|
| | |
|
| | | );
|
| | |
|
| | |
|
| | | const language = this.$i18n.locale;
|
| | | if (language === 'en-US') {
|
| | | this.replaceChineseWithEnglish();
|
| | | } else {
|
| | | this.localizedRoles = [...this.record.xyData];
|
| | | }
|
| | | this.$forceUpdate();
|
| | | this.replaceChineseWithEnglish();
|
| | |
|
| | | }.bind(this);
|
| | | //关闭事件
|
| | |
| | | }
|
| | | }
|
| | | },
|
| | | //语言转换
|
| | | replaceChineseWithEnglish () {
|
| | | const translation = this.$t('Signlang');
|
| | |
|
| | | this.record.xyData = this.record.xyData.map(item => { return { name: translation[item.name] || item.name, value: item.value }; });
|
| | | //console.log(translation);
|
| | | }
|
| | | }
|
| | |
|
| | | }
|
| | |
| | | .blue-button {
|
| | | background-color: skyblue;
|
| | | }
|
| | |
|
| | | .dark-theme {
|
| | | display: none;
|
| | | }
|
| | | </style> |
| | |
| | |
|
| | | </el-breadcrumb>
|
| | | <div>{{ $t('State') }}</div>
|
| | |
|
| | |
|
| | | <el-form label-width="100px" style="display: flex;flex-wrap: wrap;" :model="messagepack.data">
|
| | |
|
| | | <div class="kuai_div" v-for="item in this.record.xyData" :key="item.name">
|
| | | <el-input style="width: 60%;" class="in_mc" v-model="item.name" readonly></el-input>
|
| | | <el-input v-model="item.value" readonly="readonly" style="width: 90px;"></el-input>
|
| | | </div>
|
| | |
|
| | |
|
| | |
|
| | | </el-form>
|
| | |
|
| | |
| | |
|
| | | <script >
|
| | | import LanguageMixin from '../../lang/LanguageMixin'
|
| | | import data from '../../configuration/State'
|
| | | let socket;
|
| | | export default {
|
| | | name: "State",
|
| | | mixins: [LanguageMixin],
|
| | | data () {
|
| | | return {
|
| | | jsonData: data,
|
| | | activeButton: '',
|
| | | record: {
|
| | | params: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1,],
|
| | |
| | | this.record.params[0] = obj.sta[0];
|
| | | //将读取到的PLC的数据,与定义的xyData,组合成新的数组
|
| | | for (let a = 0; a < this.record.params[0].length; a++) {
|
| | | if (!this.record.xyData[a]) {
|
| | | this.record.xyData[a] = { name: this.record.canshu[a], value: this.record.params[0][a] };
|
| | | } else {
|
| | | this.record.xyData[a].value = this.record.params[0][a];
|
| | | }
|
| | |
|
| | | this.record.xyData[a].name = this.jsonData.state[a].name;
|
| | | this.record.xyData[a].value = this.record.params[0][a];
|
| | |
|
| | | }
|
| | | const language = this.$i18n.locale;
|
| | |
| | | } else {
|
| | | this.localizedRoles = [...this.record.xyData];
|
| | | }
|
| | | //console.log(this.localizedRoles);
|
| | | this.$forceUpdate();
|
| | | this.replaceChineseWithEnglish();
|
| | |
|
| | | }.bind(this);
|
| | | //关闭事件
|
| | |
| | | //语言转换
|
| | | replaceChineseWithEnglish () {
|
| | | const translation = this.$t('dvstate');
|
| | | this.record.xyData = this.record.xyData.map(item => { return { name: item.name, value: translation[item.value] || item.value }; });
|
| | | console.log(translation);
|
| | | const translation1 = this.$t('Statelang');
|
| | | this.record.xyData = this.record.xyData.map(item => { return { name: translation1[item.name] || item.name, value: translation[item.value] || item.value }; });
|
| | | //console.log(translation);
|
| | | },
|
| | |
|
| | |
|
| | |
| | | top: 366px; */
|
| | | }
|
| | |
|
| | | .orderbutton {
|
| | | position: absolute;
|
| | | left: 1070px;
|
| | | top: 70px;
|
| | | }
|
| | |
|
| | | .blocks-img3 {
|
| | | height: 90px;
|
| | | max-width: 100vw;
|
| | |
| | |
|
| | | .text {
|
| | | width: auto;
|
| | | |
| | |
|
| | | white-space: nowrap;
|
| | | animation: textScroll 20s linear infinite;
|
| | | margin: 0 auto;
|
| | |
| | | </div>
|
| | | </div>
|
| | | <div style="display:flex;justify-content: space-around;width: 95%;margin: 0 auto;">
|
| | | <el-input style="width:15%;" :placeholder="$t('Enter the glass lD')" v-model="glassid"></el-input>
|
| | | <el-button type="primary" @click="showform(1)">{{ $t('Infeed barcodid') }}</el-button>
|
| | | <el-input style="width:15%;" :placeholder="$t('Enter the glass lD')" v-model="glassid1"></el-input>
|
| | | <el-button type="primary" @click="SelectGlassByGlassIDs(2)">{{ $t('Infeed barcodid') }}</el-button>
|
| | | <el-input style="width:15%;" :placeholder="$t('Enter the order number')" v-model="order"></el-input>
|
| | | <el-button type="warning" @click="showform1();">{{ $t('Exit the glass by order number') }}</el-button>
|
| | | </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="orderbutton" type="primary" @click="showform2()">{{ $t('OrderInfo') }}</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' }"
|
| | |
| | | </el-footer>
|
| | | <el-dialog :visible.sync="dialogFormVisible" :title="$t('Please confirm the glass information')">
|
| | | <el-form :model="form" label-width="100px" style="padding-right: 30px">
|
| | |
|
| | | <el-form-item :label="$t('Barcodid')">
|
| | | <el-input style="width:15%;" :placeholder="$t('Enter the glass lD')" v-model="glassid"></el-input>
|
| | | <el-button type="primary" @click="showform(3)">query</el-button>
|
| | | <el-button type="primary" @click="showform(3)">{{ $t('Query') }}</el-button>
|
| | | </el-form-item>
|
| | | <el-form-item :label="$t('order')">
|
| | | <el-input v-model="form.orderId" readonly autocomplete="off" />
|
| | |
| | | <el-button @click="FeedInglassid()" :style="{ display: confirm2 == true ? '' : 'none' }"
|
| | | type="primary">{{
|
| | | $t('confirm') }}</el-button>
|
| | | <el-button @click="cancal()">{{ $t('cancal') }}</el-button>
|
| | | <el-button @click="cancel()">{{ $t('cancel') }}</el-button>
|
| | | </span>
|
| | | </template>
|
| | | </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: space-around;">
|
| | | <el-form-item>
|
| | | <label for="">{{ $t('Upper film position') }}</label>
|
| | | <label for="">{{ $t('Scan Code Point') }}</label>
|
| | | </el-form-item>
|
| | | </div>
|
| | | <div style="display: flex;justify-content: space-around;height: 40px;">
|
| | | <label for="">{{ $t('current Information') }}</label>
|
| | | <label for="">{{ $t('Modify Information') }}</label>
|
| | | <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 lD')"
|
| | | v-model="glassid2"></el-input>
|
| | | <el-button type="primary" @click="SelectGlassByGlassIDs(1)" :disabled="disabled">{{ $t('Query')
|
| | | }}</el-button>
|
| | | </el-form-item>
|
| | | <el-form-item>
|
| | | <el-input style="width:50%;margin-left: 20%;" :placeholder="$t('Enter the glass lD')"
|
| | | v-model="glassid1"></el-input>
|
| | | <el-button type="primary" @click="SelectGlassByGlassIDs(2)" :disabled="disabled">{{ $t('Query')
|
| | | }}</el-button>
|
| | | </el-form-item>
|
| | | </div>
|
| | | <div style="display: flex;justify-content: space-around;">
|
| | | <el-form-item :label="$t('Barcodid')">
|
| | | <el-input v-model="form2.glassId" readonly autocomplete="off" />
|
| | | </el-form-item>
|
| | | <el-form-item :label="$t('Barcodid')">
|
| | | <el-input v-model="form4.glassId" readonly autocomplete="off" />
|
| | | </el-form-item>
|
| | | <el-form-item :label="$t('Barcodid')">
|
| | | <el-input v-model="form3.glassId" readonly autocomplete="off" />
|
| | | </el-form-item>
|
| | | <el-form-item :label="$t('Barcodid')">
|
| | | <el-input v-model="form5.glassId" readonly autocomplete="off" />
|
| | | </el-form-item>
|
| | | </div>
|
| | | <div style="display: flex;justify-content: space-around;">
|
| | | <el-form-item :label="$t('order')">
|
| | | <el-input v-model="form2.orderId" readonly autocomplete="off" />
|
| | | </el-form-item>
|
| | | <el-form-item :label="$t('order')">
|
| | | <el-input v-model="form4.orderId" readonly autocomplete="off" />
|
| | | </el-form-item>
|
| | | <el-form-item :label="$t('order')">
|
| | | <el-input v-model="form3.orderId" readonly autocomplete="off" />
|
| | | </el-form-item>
|
| | | <el-form-item :label="$t('order')">
|
| | | <el-input v-model="form5.orderId" readonly autocomplete="off" />
|
| | | </el-form-item>
|
| | | </div>
|
| | | <div style="display: flex;justify-content: space-around;">
|
| | | <el-form-item :label="$t('length')">
|
| | | <el-input v-model="form2.height" readonly autocomplete="off" />
|
| | | </el-form-item>
|
| | | <el-form-item :label="$t('length')">
|
| | | <el-input v-model="form4.height" readonly autocomplete="off" />
|
| | | </el-form-item>
|
| | | <el-form-item :label="$t('length')">
|
| | | <el-input v-model="form3.height" readonly autocomplete="off" />
|
| | | </el-form-item>
|
| | | <el-form-item :label="$t('length')">
|
| | | <el-input v-model="form5.height" readonly autocomplete="off" />
|
| | | </el-form-item>
|
| | | </div>
|
| | | <div style="display: flex;justify-content: space-around;">
|
| | | <el-form-item :label="$t('width')">
|
| | | <el-input v-model="form2.width" readonly autocomplete="off" />
|
| | | </el-form-item>
|
| | | <el-form-item :label="$t('width')">
|
| | | <el-input v-model="form4.width" readonly autocomplete="off" />
|
| | | </el-form-item>
|
| | | <el-form-item :label="$t('width')">
|
| | | <el-input v-model="form3.width" readonly autocomplete="off" />
|
| | | </el-form-item>
|
| | | <el-form-item :label="$t('width')">
|
| | | <el-input v-model="form5.width" readonly autocomplete="off" />
|
| | | </el-form-item>
|
| | | </div>
|
| | | <div style="display: flex;justify-content: space-around;">
|
| | | <el-button @click="DeleteQueueGlasss(2)" type="primary" :disabled="disabled1">{{ $t('Clear Current')
|
| | | }}</el-button>
|
| | | <el-button @click="InsertQueueGlass(2)" type="primary" :disabled="disabled1">
|
| | | {{ $t('Confirm Modification') }}</el-button>
|
| | | <el-button @click="DeleteQueueGlasss(1)" type="primary" :disabled="disabled1">{{ $t('Clear Current')
|
| | | }}</el-button>
|
| | | <el-button @click="InsertQueueGlass(1)" type="primary" :disabled="disabled1">
|
| | | {{ $t('Confirm Modification') }}</el-button>
|
| | | </div>
|
| | | </el-form>
|
| | | <template #footer>
|
| | | <span class="dialog-footer">
|
| | |
|
| | | <el-button @click="cancel3()">{{ $t('cancel') }}</el-button>
|
| | | </span>
|
| | | </template>
|
| | | </el-dialog>
|
| | |
|
| | | <el-dialog :visible.sync="dialogFormVisible1" :title="$t('Please confirm the Ordering Information')">
|
| | | <el-form :model="form1" label-width="100px" style="padding-right: 30px">
|
| | | <el-form-item :label="$t('order')">
|
| | |
| | | <template #footer>
|
| | | <span class="dialog-footer">
|
| | | <el-button @click="getOrder();" type="primary">{{ $t('confirm') }}</el-button>
|
| | | <el-button @click="cancal1()">{{ $t('cancal') }}</el-button>
|
| | | <el-button @click="cancel1()">{{ $t('cancel') }}</el-button>
|
| | | </span>
|
| | | </template>
|
| | | </el-dialog>
|
| | |
| | | <el-dialog :visible.sync="dialogFormVisible3" :title="$t('Cage Details')" top="5vh">
|
| | | <el-table :data="this.cageinfo" :height="700" border style="width: 100%;overflow: auto;">
|
| | | <el-table-column :width="90" prop="cage" :label="$t('The Cage number')"></el-table-column>
|
| | | <el-table-column :width="90" prop="cell" :label="$t('The Slot Number')"></el-table-column>
|
| | | <el-table-column :width="90" prop="cell" :label="$t('The Slot Number')"></el-table-column>
|
| | | <el-table-column :width="55" prop="tier" :label="$t('The Side')"></el-table-column>
|
| | | <el-table-column :width="100" prop="glassId" :label="$t('Barcodid')"></el-table-column>
|
| | | <el-table-column :width="100" prop="orderId" :label="$t('Order Number')"></el-table-column>
|
| | |
| | | </el-table-column>
|
| | | </el-table>
|
| | | </el-dialog>
|
| | | <el-dialog :visible.sync="dialogFormVisible4" :title="$t('OrderInfo')" top="5vh">
|
| | | <el-input style="width:15%;" :placeholder="$t('Enter the Order lD')" v-model="orderid"></el-input>
|
| | | <el-button type="primary" @click="selectglassinfo()">{{ $t('Query') }}</el-button>
|
| | | <el-table :data="GlassInfo.slice((currentPage - 1) * pagesize, currentPage * pagesize)
|
| | | " :height="700" border style="width: 100%;overflow: auto;">
|
| | | <el-table-column prop="glassId" :label="$t('Barcodid')"></el-table-column>
|
| | | <el-table-column prop="orderId" :label="$t('Order Number')"></el-table-column>
|
| | | <el-table-column prop="width" :label="$t('length')"></el-table-column>
|
| | | <el-table-column prop="height" :label="$t('width')"></el-table-column>
|
| | | </el-table>
|
| | |
|
| | |
|
| | | <!-- <el-table :data="tableDatas.slice((currentPage - 1) * pagesize, currentPage * pagesize)
|
| | | " style="width: 100%">
|
| | | <el-table-column label="Date" prop="date"> </el-table-column>
|
| | | <el-table-column label="Name" prop="name"> </el-table-column>
|
| | | <el-table-column label="操作">
|
| | | <template slot-scope="scope">
|
| | | <el-button size="mini" @click="handleEdit(scope.$index, scope.row)">Edit</el-button>
|
| | | <el-button size="mini" type="danger"
|
| | | @click="handleDelete(scope.$index, scope.row)">Delete</el-button>
|
| | | </template>
|
| | | </el-table-column>
|
| | | </el-table> -->
|
| | |
|
| | | <!-- 表格分页 -->
|
| | | <!-- pager-count pager-count属性可以设置最大页码按钮数,超出折叠,默认为7-->
|
| | | <!-- 注意:若数据是后端接口返回的则此时:total="pageCount"-->
|
| | | <el-pagination :style="'margin-top:-2px'" @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
| | | :pager-count="7" :current-page="currentPage" :page-sizes="[5, 10, 15, 20]" :page-size="pagesize"
|
| | | layout="total, sizes, prev, pager, next, jumper" :total="GlassInfo.length > 0 ? GlassInfo.length : null"
|
| | | background style="float: right; margin-top: 20px">
|
| | | </el-pagination>
|
| | |
|
| | |
|
| | | </el-dialog>
|
| | | </el-container>
|
| | | </template>
|
| | | <script>
|
| | | //:disabled="scope.row.glassId > 0 || scope.row.disabled == 1 ? true : false"
|
| | | import {
|
| | | home, home2, loadtask, InsertOrder, Addglassid, UpdateTask, SelectAlarmmgInfo,
|
| | | SelectCageInfo, DeleteByGlassID, OutByGlassID, Loadcarlist, SelectPassword, SelectGlassByGlassID, Disabled, Inglassid
|
| | | home, home2, loadtask, InsertOrder, Addglassid, UpdateTask, SelectAlarmmgInfo, SelectCageInfo, DeleteByGlassID, OutByGlassID, Loadcarlist,
|
| | | SelectPassword, SelectGlassByGlassID, Disabled, Inglassid, SelectGlass, InsertQueueGlassId, UpdateQueueState, DeleteQueueGlass
|
| | | } from "../../api/home";
|
| | |
|
| | |
|
| | |
| | | dialogFormVisible1: false,
|
| | | dialogFormVisible2: false,
|
| | | dialogFormVisible3: false,
|
| | | dialogFormVisible4: false,
|
| | | dialogFormVisible5: false,
|
| | | form: {
|
| | | orderId: "",
|
| | | glassId: "",
|
| | |
| | | form1: {
|
| | | order: "NG2210210",
|
| | | number: 800,
|
| | | },
|
| | | form2: {
|
| | | orderId: "",
|
| | | glassId: "",
|
| | | height: "",
|
| | | width: ""
|
| | | },
|
| | | form3: {
|
| | | orderId: "",
|
| | | glassId: "",
|
| | | height: "",
|
| | | width: ""
|
| | | },
|
| | | form4: {
|
| | | orderId: "",
|
| | | glassId: "",
|
| | | height: "",
|
| | | width: ""
|
| | | },
|
| | | form5: {
|
| | | orderId: "",
|
| | | glassId: "",
|
| | | height: "",
|
| | | width: ""
|
| | | },
|
| | | alarm: [],
|
| | | tableData: [],
|
| | |
| | | tasklist2: [],
|
| | | order: "",
|
| | | glassid: "",
|
| | | glassid1: "",
|
| | | glassid2: "",
|
| | | url: "../../img/bigcar01.png",
|
| | | car1: 145,
|
| | | car2: 210,
|
| | |
| | | loadglassheight: 0,
|
| | | password: 1,
|
| | | text: "",
|
| | | zhuangtai: ""
|
| | | zhuangtai: "",
|
| | | orderid: "",
|
| | | GlassInfo: [],
|
| | | disabled: false,
|
| | | disabled1: false,
|
| | | currentPage: 1, //默认初始页
|
| | | pagesize: 15, //每页默认显示的数据
|
| | | pageCount: 0
|
| | | };
|
| | | },
|
| | | created() {
|
| | |
| | | };
|
| | | // 浏览器端收消息,获得从服务端发送过来的文本消息
|
| | | socket.onmessage = function (msg) {
|
| | |
|
| | | //console.log("收到数据====" + msg.data);
|
| | | let obj = JSON.parse(msg.data);
|
| | | if (obj.params != null) {
|
| | |
| | | this.tasklist2 = obj.tasklist2[0];
|
| | | this.alarm = obj.alarmmg[0];
|
| | | this.loadglassheight = obj.loadglassheight;
|
| | | this.zhuangtai = obj.zhuangtai[0];
|
| | | if (obj.zhuangtai != null) {
|
| | | this.zhuangtai = obj.zhuangtai[0];
|
| | | }
|
| | |
|
| | | // this.glassid1 = obj.queid[0];
|
| | | // if (obj.queid[0] != "" && obj.queid[0] != null && obj.state[0] == 0) {
|
| | | // this.state = false;
|
| | | // this.disabled = true;
|
| | | // this.disabled1 = false;
|
| | | // this.showform3();
|
| | | // } else if (obj.queid[0] != "" && obj.queid[0] != null && obj.state[0] == 1) {
|
| | | // this.state = true;
|
| | | // this.disabled = true;
|
| | | // this.disabled1 = true;
|
| | | // }
|
| | | // else {
|
| | | // this.state = true;
|
| | | // this.disabled = false;
|
| | | // this.disabled1 = false;
|
| | | // }
|
| | | if (obj.form2 != null && obj.form2 != "") {
|
| | | this.form2 = obj.form2[0];
|
| | | } else {
|
| | | this.form2 = {
|
| | | orderId: "",
|
| | | glassId: "",
|
| | | height: "",
|
| | | width: ""
|
| | | };
|
| | | }
|
| | |
|
| | | if (obj.form3 != null && obj.form3 != "" && obj.state[0] == 1) {
|
| | | this.form3 = obj.form3[0];
|
| | | } else {
|
| | | this.form3 = {
|
| | | orderId: "",
|
| | | glassId: "",
|
| | | height: "",
|
| | | width: ""
|
| | | };
|
| | | }
|
| | | if (obj.form3 != null && obj.form3 != "" && obj.state[0] == 0) {
|
| | | this.form5 = obj.form3[0];
|
| | | }
|
| | | //if (obj.dbconnected == "false") {
|
| | | this.text = this.$t('DataBase Connection failed');
|
| | | // }
|
| | | SelectCageInfo(this.cage).then(res => {
|
| | | this.cageinfo = res.data.cageinfo;
|
| | | });
|
| | | SelectGlass(this.orderid).then(res => {
|
| | | this.GlassInfo = res.data.glass;
|
| | | });
|
| | |
|
| | | this.$forceUpdate();
|
| | |
| | | }
|
| | | },
|
| | | load() {
|
| | | //加载笼子使用情况数据
|
| | | home().then(res => {
|
| | | this.tableData = res.data.list;
|
| | | });
|
| | | //加载理片笼玻璃数据
|
| | | home2().then(res => {
|
| | | this.cagelist1 = res.data.list1;
|
| | | this.cagelist2 = res.data.list2;
|
| | | this.cagelist3 = res.data.list3;
|
| | | this.cagelist4 = res.data.list4;
|
| | | });
|
| | | //加载进片任务数据
|
| | | loadtask(this.task1).then(res => {
|
| | | this.tasklist1 = res.data.list;
|
| | | if (res.data.list.length > 0) {
|
| | | this.incell = this.tasklist1[0]['cell'];
|
| | | }
|
| | | });
|
| | | loadtask(this.task2).then(res => {
|
| | | this.tasklist2 = res.data.list;
|
| | | if (res.data.list.length > 0) {
|
| | | this.outcell = this.tasklist2[0]['cell'];
|
| | | }
|
| | | });
|
| | | //加载进出片任务数据
|
| | | loadtask(this.task2).then(res => {
|
| | | this.tasklist2 = res.data.list;
|
| | | });
|
| | | //加载报警信息
|
| | | SelectAlarmmgInfo().then(res => {
|
| | | this.alarm = res.data.alarmmg;
|
| | | });
|
| | | //加载小车位置信息
|
| | | Loadcarlist().then(res => {
|
| | | this.carlist = res.data.carlist;
|
| | | });
|
| | | //加载确认密码
|
| | | SelectPassword().then(res => {
|
| | | this.password = res.data.password;
|
| | | });
|
| | |
| | | Addglassid(this.glassid).then(res => {
|
| | | if (res.data.message2 == 200) {
|
| | | this.$message.success(this.$t('Operation successful'));
|
| | | this.cancal();
|
| | | this.cancel();
|
| | | } else if (res.data.message2 == 500) {
|
| | | this.$message.error(this.$t('There are currently tasks'));
|
| | | }
|
| | |
| | | }
|
| | | }
|
| | | },
|
| | | //显示确认玻璃信息也没
|
| | | showform(buttons) {
|
| | | if (buttons == 1) {
|
| | | this.confirm1 = true;
|
| | |
| | | this.confirm1 = false;
|
| | | this.confirm2 = true;
|
| | | }
|
| | | //根据输入的玻璃id获取玻璃信息
|
| | | SelectGlassByGlassID(this.glassid).then(res => {
|
| | | if (res.data.form != null) {
|
| | | this.form = res.data.form;
|
| | | this.dialogFormVisible = true;
|
| | | this.$message.success('query was successful');
|
| | | this.$message.success(this.$t('query was successful'));
|
| | | } else {
|
| | | this.dialogFormVisible = true;
|
| | | this.$message.error(this.$t('There is no such glass'));
|
| | | }
|
| | | });
|
| | | },
|
| | | //显示订单信息页面
|
| | | showform1() {
|
| | | if (this.order != "") {
|
| | | this.form1 =
|
| | |
| | | };
|
| | | this.dialogFormVisible1 = true;
|
| | | }
|
| | | },
|
| | | //显示扫码位和上片位
|
| | | showform3() {
|
| | | this.dialogFormVisible5 = true;
|
| | | },
|
| | | //获取扫码位和上片位数据
|
| | | SelectGlassByGlassIDs(parameter) {
|
| | | this.showform3();
|
| | | if (parameter == 1) {
|
| | | SelectGlassByGlassID(this.glassid2).then(res => {
|
| | | if (res.data.form != null) {
|
| | | this.form4 = res.data.form;
|
| | | this.$message.success(this.$t('query was successful'));
|
| | | } else {
|
| | | this.$message.error(this.$t('There is no such glass'));
|
| | | }
|
| | | if (this.form4.length > 0) {
|
| | | if (this.form4.glassId == "") {
|
| | | this.disabled = false;
|
| | | } else {
|
| | | this.disabled = true;
|
| | | }
|
| | | }
|
| | |
|
| | | });
|
| | | } else {
|
| | | SelectGlassByGlassID(this.glassid1).then(res => {
|
| | | if (res.data.form != null) {
|
| | | this.form5 = res.data.form;
|
| | | this.$message.success(this.$t('query was successful'));
|
| | | } else {
|
| | | this.$message.error(this.$t('There is no such glass'));
|
| | | }
|
| | | if (this.form5.length > 0) {
|
| | | if (this.form5.glassId == "") {
|
| | | this.disabled = false;
|
| | | } else {
|
| | | this.disabled = true;
|
| | | }
|
| | | }
|
| | |
|
| | | });
|
| | | }
|
| | |
|
| | | },
|
| | | cancal() {
|
| | | selectglassinfo() {
|
| | | SelectGlass(this.orderid).then(res => {
|
| | | this.GlassInfo = res.data.glass;
|
| | | });
|
| | | },
|
| | | showform2() {
|
| | | SelectGlass(this.orderid).then(res => {
|
| | | this.GlassInfo = res.data.glass;
|
| | | });
|
| | | this.dialogFormVisible4 = true;
|
| | | },
|
| | | //取消操作时关闭页面
|
| | | cancel() {
|
| | | this.dialogFormVisible = false;
|
| | | this.form = {
|
| | | orderId: "",
|
| | |
| | | width: ""
|
| | | };
|
| | | },
|
| | | cancal1() {
|
| | | //取消操作时关闭页面
|
| | | cancel1() {
|
| | | this.dialogFormVisible1 = false;
|
| | | this.form1 = {};
|
| | | },
|
| | | cancel3() {
|
| | | this.dialogFormVisible5 = false;
|
| | | this.form1 = {};
|
| | | },
|
| | | //结束进/出片任务
|
| | | endtask(type, glassid, cell) {
|
| | | this.$prompt(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), {
|
| | | inputType: 'password',
|
| | |
| | | });
|
| | | });
|
| | | },
|
| | | //显示理片笼详情信息
|
| | | showcageinfo(cage) {
|
| | | this.cage = cage;
|
| | | SelectCageInfo(cage).then(res => {
|
| | |
| | | this.dialogFormVisible3 = true;
|
| | | });
|
| | | },
|
| | | //删除理片笼玻璃
|
| | | deleteglass(glassid, state) {
|
| | | this.$prompt(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), {
|
| | | inputType: 'password',
|
| | |
| | | });
|
| | | });
|
| | | },
|
| | | //手动出片
|
| | | outglass(glassid, state) {
|
| | | this.$prompt(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), {
|
| | | inputType: 'password',
|
| | |
| | | });
|
| | | });
|
| | | },
|
| | | //手动往理片笼添加玻璃
|
| | | insertglass(cage, cell, tier) {
|
| | | this.$prompt(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), {
|
| | | inputType: 'password',
|
| | |
| | | type: 'warning'
|
| | | }).then(({ value }) => {
|
| | | if (this.password == value) {
|
| | | // OutByGlassID(glassid).then(res => {
|
| | | // if (res.data.message3 == 200) {
|
| | | // this.$message.success(this.$t('Operation successful'));
|
| | | // }
|
| | | // else if (res.data.message2 == 300) {
|
| | | // this.$message.error(this.$t('There is no such grid'));
|
| | | // }
|
| | | // });
|
| | | this.insertcage = cage;
|
| | | this.insertcell = cell;
|
| | | this.inserttier = tier;
|
| | |
| | | });
|
| | | });
|
| | | },
|
| | | //手动上片
|
| | | FeedInglassid() {
|
| | | Inglassid(this.insertcage, this.insertcell, this.inserttier, this.form).then(res => {
|
| | | if (this.form.glassId != "") {
|
| | |
| | |
|
| | | });
|
| | | },
|
| | | //启用//理片笼禁用
|
| | | UpdateDisabled(cage, cell, disabled) {
|
| | | Disabled(cage, cell, disabled).then(res => {
|
| | | if (res.data.message == 200) {
|
| | | this.$message.success(this.$t('Operation successful'));
|
| | | }
|
| | | });
|
| | | },
|
| | | handleEdit(index, row) {
|
| | | console.log(index, row);
|
| | | },
|
| | | //表格删除
|
| | | handleDelete(index, row) {
|
| | | console.log(index, row);
|
| | | },
|
| | | //改变每页容纳的数据量
|
| | | handleSizeChange: function (size) {
|
| | | this.pagesize = size;
|
| | | },
|
| | | //切换页码
|
| | | handleCurrentChange: function (currentPage) {
|
| | | this.currentPage = currentPage;
|
| | | },
|
| | | //手动添加扫码位玻璃
|
| | | InsertQueueGlass(parameter) {
|
| | | if (parameter == 1 && this.form5.glassId != "") {
|
| | | if (this.form5.glassId != this.form2.glassId) {
|
| | | InsertQueueGlassId(this.form5.glassId, 1).then(res => {
|
| | | if (res.data.message == 200) {
|
| | | this.form5 = {
|
| | | orderId: "",
|
| | | glassId: "",
|
| | | height: "",
|
| | | width: ""
|
| | | };
|
| | | this.$message.success(this.$t('Operation successful'));
|
| | | }else{
|
| | | this.$message.error(this.$t('This glass ID already exists in the sorting cage'));
|
| | | }
|
| | | });
|
| | | } else {
|
| | | this.$message.error(this.$t('The glass ID already exists in the loading queue'));
|
| | | }
|
| | | } else if (parameter == 2 && this.form4.glassId != "") {
|
| | | if (this.form4.glassId != this.form3.glassId) {
|
| | | InsertQueueGlassId(this.form4.glassId, 2).then(res => {
|
| | | if (res.data.message == 200) {
|
| | | this.form4 = {
|
| | | orderId: "",
|
| | | glassId: "",
|
| | | height: "",
|
| | | width: ""
|
| | | };
|
| | | this.$message.success(this.$t('Operation successful'));
|
| | | }else{
|
| | | this.$message.error(this.$t('This glass ID already exists in the sorting cage'));
|
| | | }
|
| | | });
|
| | | } else {
|
| | | this.$message.error(this.$t('The glass ID already exists in the loading queue'));
|
| | | }
|
| | |
|
| | |
|
| | | }
|
| | | },
|
| | | //清除上片队列玻璃
|
| | | DeleteQueueGlasss(parameter) {
|
| | | if (parameter == 1) {
|
| | | DeleteQueueGlass(1).then(res => {
|
| | | if (res.data.message == 200) {
|
| | | this.$message.success(this.$t('Operation successful'));
|
| | | }
|
| | | });
|
| | | } else {
|
| | | DeleteQueueGlass(2).then(res => {
|
| | | if (res.data.message == 200) {
|
| | | this.$message.success(this.$t('Operation successful'));
|
| | | }
|
| | | });
|
| | | }
|
| | | },
|
| | | //修改扫码位玻璃状态
|
| | | UpdateQueueStates() {
|
| | | UpdateQueueState().then(res => {
|
| | | if (res.data.message == 200) {
|
| | | this.$message.success(this.$t('Operation successful'));
|
| | | }
|
| | | });
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | </properties> |
| | | |
| | | <dependencies> |
| | | <dependencies> |
| | | <dependency> |
| | | <groupId>com.google.code.gson</groupId> |
| | | <artifactId>gson</artifactId> |
| | | <version>2.8.7</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>commons-io</groupId> |
| | | <artifactId>commons-io</artifactId> |
| | | <version>2.10.0</version> |
| | | </dependency> |
| | | </dependencies> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-web</artifactId> |
| | |
| | | <dependency> |
| | | <groupId>org.apache.shiro</groupId> |
| | | <artifactId>shiro-spring-boot-starter</artifactId> |
| | | <version>1.8.0</version> |
| | | <version>1.8.0</version> |
| | | </dependency> |
| | | <!--mybatis-plus--> |
| | | <dependency> |
| | |
| | | spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class); |
| | | jdbcConnections = WebSocketServer.applicationContext.getBean(JdbcConnections.class); |
| | | |
| | | spianService.selectout("1145"); |
| | | //spianService.selectAll2(); |
| | | //增加队列表数据 |
| | | //spianMapper.insertqueue("1",1,1500); |
| | | |
| | | |
| | | // 根据玻璃id获取订单号,单独数据源 |
| | | // try { |
| | | |
| | |
| | | // // TODO Auto-generated catch block |
| | | // e.printStackTrace(); |
| | | // } |
| | | // spianService.selectAll((short)257); |
| | | |
| | | //判断进片请求 |
| | | List<Short> datas1List = S7control.getinstance().ReadWord("DB106.24", 1);// 获取prc进片请求数据 |
| | | List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8", 1);// 获取进片车状态 |
| | | List<Short> datas1ListState2 = S7control.getinstance().ReadWord("DB105.12", 1);// 获取进片车任务是否启动 |
| | | |
| | | //测试启动自定义prc值 |
| | | // List<Short> datas1List=new ArrayList<>(); |
| | | // datas1List.add((short)1); |
| | | // List<Short> datas1ListState=new ArrayList<>(); |
| | | // datas1List.add((short)0); |
| | | // List<Short> datas1ListState2=new ArrayList<>(); |
| | | // datas1List.add((short)0); |
| | | |
| | | |
| | | if (datas1List != null && datas1ListState != null) { |
| | | |
| | | // 获取prc进片请求数据 |
| | |
| | | StringBuilder strId=new StringBuilder(); |
| | | StringBuilder writedstrId=new StringBuilder(); |
| | | |
| | | if(!inglassbegin&!exist1) |
| | | if(!inglassbegin&!exist1)//当进片车不空闲时 |
| | | { |
| | | inglassbegin=true; |
| | | } |
| | | if(inglassbegin&exist1) |
| | | if(inglassbegin&exist1)//当进片车空闲时 |
| | | { |
| | | inglassbegin=false; |
| | | spianMapper.Updatetask(1, 0);//立即结束数据库表中的上片任务 |
| | |
| | | if (exist1 == true) { |
| | | //获取已下发的进片id 与plc请求的id作比较 |
| | | byte[] writedglassidbytes = S7control.getinstance().ReadByte("DB105.16", 1); |
| | | if (writedglassidbytes != null) { |
| | | if (writedglassidbytes != null) { // |
| | | // 获取玻璃id |
| | | for (byte iditem : writedglassidbytes) { |
| | | writedstrId.append(iditem); |
| | |
| | | } |
| | | if(!writedstrId.toString().equals(strId.toString())) //已经下发的id与plc请求的id不一样时,认为不是重复的任务,才执行下发任务指令 |
| | | { |
| | | spianService.selectAll(strId.toString()); |
| | | |
| | | int glasslimit=1;//判断是否是多片上片 |
| | | if(glasslimit==1){ |
| | | spianService.selectAll(strId.toString()); |
| | | }else{ |
| | | spianService.selectAll(strId.toString()); |
| | | } |
| | | S7control.getinstance().WriteByte("DB105.16",datas1ListID);//派发进片id |
| | | |
| | | |
| | | } |
| | | //spianService.selectAll(Short.parseShort(strId.toString())); |
| | | } |
| | |
| | | package com.example.springboot.component; |
| | | |
| | | import cn.hutool.json.JSONArray; |
| | | import cn.hutool.json.JSONObject; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Arrays; |
| | | import java.io.BufferedReader; |
| | | import java.io.File; |
| | | import java.io.FileInputStream; |
| | | import java.io.FileNotFoundException; |
| | | import java.io.IOException; |
| | | import java.io.InputStreamReader; |
| | | import java.io.UnsupportedEncodingException; |
| | | |
| | | import org.apache.commons.io.FileUtils; |
| | | |
| | | public class PlcParameter extends Thread { |
| | | @Override |
| | | public void run() { |
| | | while (this != null) { |
| | | try { |
| | | Thread.sleep(500); |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | String name = ""; |
| | | Integer count = 0; |
| | | |
| | | List<Short> arraylist = S7control.getinstance().ReadWord("DB100.0", 12); |
| | | List<Short> state = S7control.getinstance().ReadWord("DB103.0", 10); |
| | | JSONObject jsonObject = new JSONObject(); |
| | | // new short[]{1,1, 1, 1, 1, 1, 2, 33, 2,3, 4, 5} |
| | | // new short[]{0,0, 0, 0, 0, 0, 0, 0, 0, 0} |
| | | jsonObject.append("params", arraylist ); |
| | | jsonObject.append("state", state); |
| | | WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Parameter"); |
| | | if (sendwServer != null) { |
| | | sendwServer.sendMessage(jsonObject.toString()); |
| | | } |
| | | public static String readFileToString(String filePath) throws IOException { |
| | | File file = new File(filePath); |
| | | return FileUtils.readFileToString(file, "UTF-8"); |
| | | } |
| | | |
| | | WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("Parameter"); |
| | | if (webSocketServer != null) { |
| | | List<String> messages = webSocketServer.getMessages(); |
| | | public void readValue() { |
| | | String str = ""; |
| | | BufferedReader bufferedReader = null; |
| | | FileInputStream fileInputStream; |
| | | try { |
| | | // 从文件中读取字节数据存入 fileInputStream |
| | | fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/Parameter.json"); |
| | | // 读取 fileInputStream 中字节并将其解码为字符 |
| | | InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8"); |
| | | // 提高读取效率,在 BufferedReader 内包装 InputStreamReader |
| | | bufferedReader = new BufferedReader(inputStreamReader); |
| | | String line = null; |
| | | // 将 bufferedReader 内容一行一行赋值给str |
| | | while ((line = bufferedReader.readLine()) != null) { |
| | | str += line; |
| | | } |
| | | |
| | | String addressList = "DB100.0"; |
| | | // 将str字符串格式转为json |
| | | JSONObject jsonObject = new JSONObject(str); |
| | | |
| | | if (!messages.isEmpty()) { |
| | | // 将最后一个消息转换为 short 类型的列表 |
| | | String lastMessage = messages.get(messages.size() - 1); |
| | | System.out.println("messages:" + messages); |
| | | String[] parts = lastMessage.split(","); |
| | | List<Short> messageValues = new ArrayList<>(); |
| | | for (String part : parts) { |
| | | try { |
| | | // 使用正则表达式清除非数字字符 |
| | | String cleanedPart = part.replaceAll("[^0-9-]", ""); |
| | | short value = Short.parseShort(cleanedPart.trim()); |
| | | messageValues.add(value); |
| | | } catch (NumberFormatException e) { |
| | | // 如果无法解析为 short 类型,则忽略该部分 |
| | | // 获取json中的值 |
| | | JSONArray address = jsonObject.getJSONArray("address"); |
| | | for (int i = 0; i < address.size(); i++) { |
| | | JSONObject ress = (JSONObject) address.get(i); |
| | | |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | this.name = ress.getStr("name"); |
| | | this.count = ress.getInt("count"); |
| | | |
| | | // 将消息值写入 PLC |
| | | S7control.getinstance().WriteWord(addressList, messageValues); |
| | | System.out.println("messageValues:" + messageValues); |
| | | System.out.println("addressList:" + addressList); |
| | | // 清空消息列表 |
| | | webSocketServer.clearMessages(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } catch (FileNotFoundException e) { |
| | | e.printStackTrace(); |
| | | } catch (UnsupportedEncodingException e) { |
| | | e.printStackTrace(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void run() { |
| | | while (this != null) { |
| | | try { |
| | | Thread.sleep(500); |
| | | |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | this.readValue(); |
| | | String PlcAddress = this.name; |
| | | Integer Plccount = this.count; |
| | | |
| | | // System.out.println(stt); |
| | | // List<Short> arraylist = S7control.getinstance().ReadWord("DB100.0", 12); |
| | | // List<Short> state = S7control.getinstance().ReadWord("DB103.0", 10); |
| | | Short[] values1 = { 1, 1, 1, 1, 1, 1, 2, 33, 2, 3, 4, 5 }; |
| | | List<Short> arraylist = new ArrayList<>(Arrays.asList(values1)); |
| | | |
| | | Short[] values2 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; |
| | | List<Short> state = new ArrayList<>(Arrays.asList(values2)); |
| | | |
| | | JSONObject jsonObject = new JSONObject(); |
| | | // new short[]{1,1, 1, 1, 1, 1, 2, 33, 2,3, 4, 5} |
| | | // new short[]{0,0, 0, 0, 0, 0, 0, 0, 0, 0} |
| | | |
| | | jsonObject.append("params", arraylist); |
| | | jsonObject.append("state", state); |
| | | WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Parameter"); |
| | | if (sendwServer != null) { |
| | | sendwServer.sendMessage(jsonObject.toString()); |
| | | } |
| | | |
| | | WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("Parameter"); |
| | | if (webSocketServer != null) { |
| | | List<String> messages = webSocketServer.getMessages(); |
| | | |
| | | String addressList = "DB100.0"; |
| | | |
| | | if (!messages.isEmpty()) { |
| | | // 将最后一个消息转换为 short 类型的列表 |
| | | String lastMessage = messages.get(messages.size() - 1); |
| | | System.out.println("messages:" + messages); |
| | | String[] parts = lastMessage.split(","); |
| | | List<Short> messageValues = new ArrayList<>(); |
| | | for (String part : parts) { |
| | | try { |
| | | // 使用正则表达式清除非数字字符 |
| | | String cleanedPart = part.replaceAll("[^0-9-]", ""); |
| | | short value = Short.parseShort(cleanedPart.trim()); |
| | | messageValues.add(value); |
| | | } catch (NumberFormatException e) { |
| | | // 如果无法解析为 short 类型,则忽略该部分 |
| | | |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | // 将消息值写入 PLC |
| | | S7control.getinstance().WriteWord(addressList, messageValues); |
| | | System.out.println("messageValues:" + messageValues); |
| | | System.out.println("addressList:" + addressList); |
| | | // 清空消息列表 |
| | | webSocketServer.clearMessages(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | package com.example.springboot.component;
|
| | |
|
| | | import cn.hutool.json.JSONArray;
|
| | | import cn.hutool.json.JSONObject;
|
| | |
|
| | | import java.io.BufferedReader;
|
| | | import java.io.FileInputStream;
|
| | | import java.io.FileNotFoundException;
|
| | | import java.io.IOException;
|
| | | import java.io.InputStreamReader;
|
| | | import java.io.UnsupportedEncodingException;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Arrays;
|
| | | import java.util.List;
|
| | |
|
| | | public class Plcaction extends Thread {
|
| | | String name = "";
|
| | | Integer count = 0;
|
| | |
|
| | | public void readValue() {
|
| | | String str = "";
|
| | | BufferedReader bufferedReader = null;
|
| | | FileInputStream fileInputStream;
|
| | | try {
|
| | | // 从文件中读取字节数据存入 fileInputStream
|
| | | fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/Action.json");
|
| | | // 读取 fileInputStream 中字节并将其解码为字符
|
| | | InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
|
| | | // 提高读取效率,在 BufferedReader 内包装 InputStreamReader
|
| | | bufferedReader = new BufferedReader(inputStreamReader);
|
| | | String line = null;
|
| | | // 将 bufferedReader 内容一行一行赋值给str
|
| | | while ((line = bufferedReader.readLine()) != null) {
|
| | | str += line;
|
| | | }
|
| | |
|
| | | // 将str字符串格式转为json
|
| | | JSONObject jsonObject = new JSONObject(str);
|
| | |
|
| | | // 获取json中的值
|
| | | JSONArray address = jsonObject.getJSONArray("address");
|
| | | for (int i = 0; i < address.size(); i++) {
|
| | | JSONObject ress = (JSONObject) address.get(i);
|
| | |
|
| | | this.name = ress.getStr("name");
|
| | | this.count = ress.getInt("count");
|
| | |
|
| | | }
|
| | |
|
| | | } catch (FileNotFoundException e) {
|
| | | e.printStackTrace();
|
| | | } catch (UnsupportedEncodingException e) {
|
| | | e.printStackTrace();
|
| | | } catch (IOException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void run() {
|
| | | while (this != null) {
|
| | |
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | // List<Boolean> paramlist = S7control.getinstance().ReadBits("DB100.DBW", 12);
|
| | | ////
|
| | | // JSONObject jsonObject = new JSONObject();
|
| | | // jsonObject.append("params", new short[]{1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0});
|
| | | // 调用方法,进行赋值
|
| | | this.readValue();
|
| | | String PlcAddress = this.name;
|
| | | Integer Plccount = this.count;
|
| | | // System.out.println(PlcAddress);
|
| | |
|
| | | List<Boolean> paramlist = S7control.getinstance().ReadBits("DB2.0.0", 26);
|
| | | // Boolean[] values = {true, true,true, true,true, true,true, true,true, true,true, true,true, true,true, true,true, true,true, true,true, true,true, true,false, true};
|
| | | // List<Boolean> paramlist = new ArrayList<>(Arrays.asList(values));
|
| | | if (paramlist == null) {
|
| | | // List<Boolean> paramlist = S7control.getinstance().ReadBits("DB2.0.0", 26);
|
| | | Boolean[] values = { false, true, true, true, true, true, true, true, true,
|
| | | true, true, true, true, true, true, true, true, true, true, true, true, true, true,
|
| | | true, false, true };
|
| | | List<Boolean> paramlist = new ArrayList<>(Arrays.asList(values));
|
| | |
|
| | | } else {
|
| | | if (paramlist != null) {
|
| | |
|
| | | short[] params = new short[paramlist.size()];
|
| | |
|
| | | for (int i = 0; i < paramlist.size(); i++) {
|
| | | boolean value = paramlist.get(i);
|
| | | params[i] = value ? (short) 1 : (short) 0;
|
| | | }
|
| | |
|
| | | JSONObject jsonObject = new JSONObject();
|
| | | jsonObject.append("params", params);
|
| | | WebSocketServer sendwServer = WebSocketServer.sessionMap.get("action");
|
| | |
| | | }
|
| | | }
|
| | |
|
| | |
|
| | | WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("action");
|
| | | if (webSocketServer != null) {
|
| | |
|
| | | List<String> messages = webSocketServer.getMessages();
|
| | | List<String> messages = webSocketServer.getMessages();
|
| | |
|
| | | String addressList = "DB2.0.0";
|
| | | String addressList = "DB2.0.0";
|
| | |
|
| | | if (!messages.isEmpty()) {
|
| | | // 将最后一个消息转换为整数类型的列表
|
| | | String lastMessage = messages.get(messages.size() - 1);
|
| | | System.out.println("messages:" + messages);
|
| | | String[] parts = lastMessage.split(",");
|
| | | List<Integer> messageValues = new ArrayList<>();
|
| | | for (String part : parts) {
|
| | | try {
|
| | | // 使用正则表达式清除非数字字符
|
| | | String cleanedPart = part.replaceAll("[^0-9-]", "");
|
| | | Integer value = Integer.parseInt(cleanedPart.trim());
|
| | | messageValues.add(value);
|
| | | } catch (NumberFormatException e) {
|
| | | // 如果无法解析为整数类型,则忽略该部分
|
| | | e.printStackTrace();
|
| | | }
|
| | | if (!messages.isEmpty()) {
|
| | | // 将最后一个消息转换为整数类型的列表
|
| | | String lastMessage = messages.get(messages.size() - 1);
|
| | | System.out.println("messages:" + messages);
|
| | | String[] parts = lastMessage.split(",");
|
| | | List<Integer> messageValues = new ArrayList<>();
|
| | | for (String part : parts) {
|
| | | try {
|
| | | // 使用正则表达式清除非数字字符
|
| | | String cleanedPart = part.replaceAll("[^0-9-]", "");
|
| | | Integer value = Integer.parseInt(cleanedPart.trim());
|
| | | messageValues.add(value);
|
| | | } catch (NumberFormatException e) {
|
| | | // 如果无法解析为整数类型,则忽略该部分
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | // 将消息值转换为布尔列表
|
| | | List<Boolean> messageBooleans = new ArrayList<>();
|
| | | for (Integer value : messageValues) {
|
| | | messageBooleans.add(value == 1 ? true : false);
|
| | | }
|
| | | // 将消息值转换为布尔列表
|
| | | List<Boolean> messageBooleans = new ArrayList<>();
|
| | | for (Integer value : messageValues) {
|
| | | messageBooleans.add(value == 1 ? true : false);
|
| | | }
|
| | |
|
| | | // 将布尔列表写入 PLC
|
| | | S7control.getinstance().WriteBit(addressList, messageBooleans);
|
| | | System.out.println("messageValues:" + messageBooleans);
|
| | | System.out.println("addressList:" + addressList);
|
| | | // 将布尔列表写入 PLC
|
| | | S7control.getinstance().WriteBit(addressList, messageBooleans);
|
| | | System.out.println("messageValues:" + messageBooleans);
|
| | | System.out.println("addressList:" + addressList);
|
| | | // 清空消息列表
|
| | | webSocketServer.clearMessages();
|
| | | }
|
| | |
| | | import cn.hutool.json.JSONObject; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | |
| | | import com.example.springboot.common.Result; |
| | | import com.example.springboot.entity.Glass; |
| | | import com.example.springboot.entity.StorageCage; |
| | | import com.example.springboot.entity.alarmmg; |
| | | import com.example.springboot.mapper.HomeMapper; |
| | | import com.example.springboot.mapper.SpianMapper; |
| | | import com.example.springboot.service.JdbcConnections; |
| | | |
| | | public class Plchome extends Thread { |
| | | |
| | | private HomeMapper homeMapper; |
| | | private SpianMapper spianMapper; |
| | | private JdbcConnections dbserve; |
| | | |
| | | @Override |
| | | public void run() { |
| | | while (this != null) { |
| | |
| | | |
| | | // 注入mapper |
| | | homeMapper = WebSocketServer.applicationContext.getBean(HomeMapper.class); |
| | | spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class); |
| | | // 笼子使用情况 |
| | | List<StorageCage> tableData = homeMapper.selectAll(); |
| | | jsonObject.append("tableData", tableData); |
| | |
| | | List<StorageCage> cagelist3 = homeMapper.selectRack3(); |
| | | List<StorageCage> cagelist4 = homeMapper.selectRack4(); |
| | | jsonObject.append("cagelist1", cagelist1); |
| | | jsonObject.append("cagelist2", (Object)cagelist2); |
| | | jsonObject.append("cagelist2", (Object) cagelist2); |
| | | jsonObject.append("cagelist3", cagelist3); |
| | | jsonObject.append("cagelist4", cagelist4); |
| | | // 进出片任务 |
| | |
| | | // 查询报警信息 |
| | | List<alarmmg> alarmmg = homeMapper.SelectAlarmmgInfo(); |
| | | jsonObject.append("alarmmg", alarmmg); |
| | | // 读去Plc进片车与出片车位置W |
| | | List<String> addressList = new ArrayList<String>(); |
| | | addressList.add("DB106.12"); |
| | | addressList.add("DB106.0"); |
| | | List<Short> paramlist= S7control.getinstance().ReadWord(addressList); |
| | | // 获取进片车状态 |
| | | List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8", 1);// 获取进片车状态 |
| | | boolean exist1 = datas1ListState.contains((short) 0); |
| | | jsonObject.append("zhuangtai",exist1); |
| | | // // 读去Plc进片车与出片车位置W |
| | | // List<String> addressList = new ArrayList<String>(); |
| | | // addressList.add("DB106.12"); |
| | | // addressList.add("DB106.0"); |
| | | // List<Short> paramlist = S7control.getinstance().ReadWord(addressList); |
| | | // if (paramlist != null) { |
| | | // jsonObject.append("params", paramlist); |
| | | // } |
| | | // // 获取进片车状态 |
| | | // List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8", 1);// 获取进片车状态 |
| | | // boolean exist1 = datas1ListState.contains((short) 0); |
| | | // jsonObject.append("zhuangtai", exist1); |
| | | //获取进片玻璃信息 |
| | | // List<Short> inglassInfo = S7control.getinstance().ReadWord("DB106.24", 1); |
| | | // if (inglassInfo != null) { |
| | | // if (inglassInfo.size() > 0) |
| | | // jsonObject.append("loadglassheight", inglassInfo.get(0) * 70); |
| | | // } |
| | | // 伍 获取进是否有待确认的玻璃id |
| | | String queid = spianMapper.Selectqueueid(); |
| | | String state = spianMapper.Selectqueuestate(); |
| | | jsonObject.append("queid", queid); |
| | | jsonObject.append("state", state); |
| | | // 获取扫码位与上片位玻璃信息 |
| | | Glass form2 = homeMapper.GetQueueInfo(2); |
| | | Glass form3 = homeMapper.GetQueueInfo(1); |
| | | jsonObject.append("form2", form2); |
| | | jsonObject.append("form3", form3); |
| | | // List<Short> paramlists = new ArrayList<Short>(); |
| | | // short para1 = 11111; |
| | | // short para2 = 32000; |
| | |
| | | // System.out.println(paramlists); |
| | | |
| | | |
| | | |
| | | if(paramlist!=null){ |
| | | jsonObject.append("params", paramlist); |
| | | } |
| | | List<Short> inglassInfo= S7control.getinstance().ReadWord("DB106.24",1); |
| | | if(inglassInfo!=null){ |
| | | if(inglassInfo.size()>0) |
| | | jsonObject.append("loadglassheight", inglassInfo.get(0)*70); |
| | | } |
| | | dbserve = WebSocketServer.applicationContext.getBean(JdbcConnections.class); |
| | | boolean dbconnected=false; |
| | | try { |
| | | dbserve = WebSocketServer.applicationContext.getBean(JdbcConnections.class); |
| | | boolean dbconnected = false; |
| | | try { |
| | | dbserve.getConn(); |
| | | dbconnected=true; |
| | | } catch (Exception e) { |
| | | dbconnected = true; |
| | | } catch (Exception e) { |
| | | // TODO: handle exception |
| | | dbconnected=false; |
| | | } |
| | | jsonObject.append("dbconnected", dbconnected); |
| | | dbconnected = false; |
| | | } |
| | | jsonObject.append("dbconnected", dbconnected); |
| | | // jsonObject.append("params", new short[] { 30, 40, }); |
| | | WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Home"); |
| | | if (sendwServer != null) { |
| | |
| | | package com.example.springboot.component; |
| | | |
| | | import cn.hutool.json.JSONArray; |
| | | import cn.hutool.json.JSONObject; |
| | | |
| | | import java.io.BufferedReader; |
| | | import java.io.FileInputStream; |
| | | import java.io.FileNotFoundException; |
| | | import java.io.IOException; |
| | | import java.io.InputStreamReader; |
| | | import java.io.UnsupportedEncodingException; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Arrays; |
| | | |
| | | public class Plcsign extends Thread { |
| | | String name = ""; |
| | | Integer count = 0; |
| | | |
| | | public void readValue() { |
| | | String str = ""; |
| | | BufferedReader bufferedReader = null; |
| | | FileInputStream fileInputStream; |
| | | try { |
| | | // 从文件中读取字节数据存入 fileInputStream |
| | | fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/Sign.json"); |
| | | // 读取 fileInputStream 中字节并将其解码为字符 |
| | | InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8"); |
| | | // 提高读取效率,在 BufferedReader 内包装 InputStreamReader |
| | | bufferedReader = new BufferedReader(inputStreamReader); |
| | | String line = null; |
| | | // 将 bufferedReader 内容一行一行赋值给str |
| | | while ((line = bufferedReader.readLine()) != null) { |
| | | str += line; |
| | | } |
| | | |
| | | // 将str字符串格式转为json |
| | | JSONObject jsonObject = new JSONObject(str); |
| | | |
| | | // 获取json中的值 |
| | | JSONArray address = jsonObject.getJSONArray("address"); |
| | | for (int i = 0; i < address.size(); i++) { |
| | | JSONObject ress = (JSONObject) address.get(i); |
| | | |
| | | this.name = ress.getStr("name"); |
| | | this.count = ress.getInt("count"); |
| | | |
| | | } |
| | | |
| | | } catch (FileNotFoundException e) { |
| | | e.printStackTrace(); |
| | | } catch (UnsupportedEncodingException e) { |
| | | e.printStackTrace(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void run() { |
| | | while (this != null) { |
| | |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | List<Boolean> plclist = S7control.getinstance().ReadBits("DB102.0.0", 44); |
| | | List<Boolean> plclist2 = S7control.getinstance().ReadBits("DB102.5.5", 13); |
| | | this.readValue(); |
| | | String PlcAddress = this.name; |
| | | Integer Plccount = this.count; |
| | | // System.out.println(PlcAddress); |
| | | |
| | | // Boolean[] values = { true, false, true, false, true, false, true, false, |
| | | // true, false, true, false, true, false, |
| | | // true, false, true, false, true, false, true, false, true, false, true, false, |
| | | // true, false, true, false, true, |
| | | // false, true, false, true, false, |
| | | // true, false, true, false, true, false, true, false, }; |
| | | // List<Boolean> plclist = new ArrayList<>(Arrays.asList(values)); |
| | | // List<Boolean> plclist = S7control.getinstance().ReadBits("DB102.0.0", 44); |
| | | // List<Boolean> plclist2 = S7control.getinstance().ReadBits("DB102.5.5", 13); |
| | | |
| | | // Boolean[] values2 = { true, false, |
| | | // true, false, true, false, true, false, |
| | | // true, false, true, false, true, }; |
| | | // List<Boolean> plclist2 = new ArrayList<>(Arrays.asList(values2)); |
| | | Boolean[] values = { true, true, true, true, true, false, true, false, |
| | | true, false, true, false, true, false, |
| | | true, false, true, false, true, false, true, false, true, false, true, false, |
| | | true, false, true, false, true, |
| | | false, true, false, true, false, |
| | | true, false, true, false, true, false, true, false, null, |
| | | true, false, |
| | | true, false, true, false, true, false, |
| | | true, false, true, false, true, }; |
| | | List<Boolean> plclist = new ArrayList<>(Arrays.asList(values)); |
| | | |
| | | // 将plclist2的元素添加到plclist中 |
| | | plclist.addAll(plclist2); |
| | | // System.out.println(plclist); |
| | | if (plclist != null) { |
| | | // 将获取的布尔类型转换为整数类型 |
| | | List<Integer> Intlist = new ArrayList<>(); |
| | | for (Boolean value : plclist) { |
| | | Intlist.add(value == true ? 0 : 1); |
| | | if (value != null) { |
| | | Intlist.add(value == true ? 0 : 1); |
| | | } |
| | | |
| | | } |
| | | JSONObject jsonObject = new JSONObject(); |
| | |
| | | package com.example.springboot.component; |
| | | |
| | | import cn.hutool.json.JSONArray; |
| | | import cn.hutool.json.JSONObject; |
| | | |
| | | import java.io.BufferedReader; |
| | | import java.io.FileInputStream; |
| | | import java.io.FileNotFoundException; |
| | | import java.io.IOException; |
| | | import java.io.InputStreamReader; |
| | | import java.io.UnsupportedEncodingException; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Arrays; |
| | | |
| | | public class Plcstate extends Thread { |
| | | String name = ""; |
| | | Integer count = 0; |
| | | |
| | | public void readValue() { |
| | | String str = ""; |
| | | BufferedReader bufferedReader = null; |
| | | FileInputStream fileInputStream; |
| | | try { |
| | | // 从文件中读取字节数据存入 fileInputStream |
| | | fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/State.json"); |
| | | // 读取 fileInputStream 中字节并将其解码为字符 |
| | | InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8"); |
| | | // 提高读取效率,在 BufferedReader 内包装 InputStreamReader |
| | | bufferedReader = new BufferedReader(inputStreamReader); |
| | | String line = null; |
| | | // 将 bufferedReader 内容一行一行赋值给str |
| | | while ((line = bufferedReader.readLine()) != null) { |
| | | str += line; |
| | | } |
| | | |
| | | // 将str字符串格式转为json |
| | | JSONObject jsonObject = new JSONObject(str); |
| | | |
| | | // 获取json中的值 |
| | | JSONArray address = jsonObject.getJSONArray("address"); |
| | | for (int i = 0; i < address.size(); i++) { |
| | | JSONObject ress = (JSONObject) address.get(i); |
| | | |
| | | this.name = ress.getStr("name"); |
| | | this.count = ress.getInt("count"); |
| | | |
| | | } |
| | | |
| | | } catch (FileNotFoundException e) { |
| | | e.printStackTrace(); |
| | | } catch (UnsupportedEncodingException e) { |
| | | e.printStackTrace(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void run() { |
| | | while (this != null) { |
| | |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | List<Short> plclist = S7control.getinstance().ReadWord("DB103.0", 10); |
| | | // Short[] values = { 0, 1, 1, 0, 1, 0, 1, 0, |
| | | // 1, 0, }; |
| | | // List<Short> plclist = new ArrayList<>(Arrays.asList(values)); |
| | | this.readValue(); |
| | | String PlcAddress = this.name; |
| | | Integer Plccount = this.count; |
| | | // System.out.println(PlcAddress); |
| | | |
| | | // List<Short> plclist = S7control.getinstance().ReadWord("DB103.0", 10); |
| | | Short[] values = { 0, 1, 1, 0, 1, 0, 1, 0, |
| | | 1, 0, }; |
| | | List<Short> plclist = new ArrayList<>(Arrays.asList(values)); |
| | | if (plclist != null) { |
| | | |
| | | List<String> Intlist = new ArrayList<>(); |
| | |
| | | // |
| | | System.out.println("启动完成"); |
| | | |
| | | new PlcHold().start(); |
| | | // new PlcHold().start(); |
| | | |
| | | // new Plcaction().start(); |
| | | new Plcaction().start(); |
| | | |
| | | new Plchome().start(); |
| | | |
| | |
| | | |
| | | @Autowired |
| | | SpianMapper spianMapper; |
| | | |
| | | |
| | | //查询理片笼使用情况 |
| | | @GetMapping("/load") |
| | | public Result selectAll() { |
| | | List<StorageCage> storageCagelist = homeMapper.selectAll(); |
| | |
| | | map.put("list", storageCagelist); |
| | | return Result.success(map); |
| | | } |
| | | |
| | | //查询理片笼玻璃情况 |
| | | @GetMapping("/loads") |
| | | public Result selectRack() { |
| | | List<StorageCage> storageCagelist1 = homeMapper.selectRack1(); |
| | |
| | | map.put("list4", storageCagelist4); |
| | | return Result.success(map); |
| | | } |
| | | |
| | | //查询进/出片任务 |
| | | @GetMapping("/loadinout") |
| | | public Result selectinout(Integer types) { |
| | | List<StorageCage> storageCageinout = homeMapper.selectinout(types); |
| | |
| | | map.put("list", storageCageinout); |
| | | return Result.success(map); |
| | | } |
| | | |
| | | //按订单出片 |
| | | @GetMapping("/InsertOrder") |
| | | public Result InsertOrder(String orderid) { |
| | | short result = homeMapper.SelectOrder(orderid); |
| | |
| | | } |
| | | return Result.success(map); |
| | | } |
| | | |
| | | //根据玻璃id手动上片 |
| | | @GetMapping("/Addglassid") |
| | | public Result Addglassid(String glassid) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | |
| | | } |
| | | return Result.success(map); |
| | | } |
| | | |
| | | //手动完成进/出片任务 |
| | | @GetMapping("/UpdateTask") |
| | | public Result UpdateTask(Integer types, Integer shelfrack, String glassid) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | |
| | | map.put("message3", "200"); |
| | | return Result.success(map); |
| | | } |
| | | |
| | | //查询报警信息 |
| | | @GetMapping("/SelectAlarmmgInfo") |
| | | public Result SelectAlarmmgInfo() { |
| | | List<alarmmg> alarmmg = homeMapper.SelectAlarmmgInfo(); |
| | |
| | | map.put("alarmmg", alarmmg); |
| | | return Result.success(map); |
| | | } |
| | | |
| | | //查询理片笼详情 |
| | | @GetMapping("/SelectCageInfo") |
| | | public Result SelectCageInfo(short cage) { |
| | | List<StorageCage> cageinfo = homeMapper.SelectCageInfo(cage); |
| | |
| | | map.put("cageinfo", cageinfo); |
| | | return Result.success(map); |
| | | } |
| | | |
| | | //手动删除理片笼玻璃 |
| | | @GetMapping("/DeleteByGlassID") |
| | | public Result DeleteByGlassID(String glassid) { |
| | | StorageCage glassinfor = homeMapper.SelectGlassInfo(glassid); |
| | |
| | | map.put("message3", "200"); |
| | | return Result.success(map); |
| | | } |
| | | |
| | | //根据玻璃id手动出片 |
| | | @GetMapping("/OutByGlassID") |
| | | public Result OutByGlassID(String glassid) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | |
| | | |
| | | return Result.success(map); |
| | | } |
| | | |
| | | //加载小车位置 |
| | | @GetMapping("/Loadcarlist") |
| | | public Result Loadcarlist() { |
| | | List<CarPosition> carlist = homeMapper.Loadcarlist(); |
| | |
| | | map.put("carlist", carlist); |
| | | return Result.success(map); |
| | | } |
| | | |
| | | //查询确认密码 |
| | | @GetMapping("/SelectPassword") |
| | | public Result SelectPassword() { |
| | | String pwdct = homeMapper.SelectPassword(); |
| | |
| | | map.put("password", pwdct); |
| | | return Result.success(map); |
| | | } |
| | | |
| | | //根据玻璃id查询玻璃信息 |
| | | @GetMapping("/SelectGlassByGlassID") |
| | | public Result SelectGlassByGlassID(String glassid) { |
| | | Glass Glass = homeMapper.SelectGlassByGlassID(glassid); |
| | |
| | | map.put("form", Glass); |
| | | return Result.success(map); |
| | | } |
| | | |
| | | //启用/禁用理片笼格子 |
| | | @GetMapping("/Disabled") |
| | | public Result Disabled(short cage, short cell, short disabled) { |
| | | homeMapper.Disabled(cage, cell, disabled); |
| | |
| | | map.put("message", "200"); |
| | | return Result.success(map); |
| | | } |
| | | |
| | | //手动往理片笼添加玻璃 |
| | | @PostMapping("/Inglassid") |
| | | public Result Inglassid(short cage, short cell, short tier, @RequestBody Glass glass) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | |
| | | map.put("message", "300"); |
| | | } else { |
| | | homeMapper.Inglassid(glass, cage, cell, tier); |
| | | spianMapper.UpdataAddCage1(glass.getWidth(), cage, cell); |
| | | spianMapper.UpdataAddCage1(glass.getGlassWidth(), cage, cell); |
| | | } |
| | | return Result.success(map); |
| | | } |
| | | |
| | | //查询玻璃信息 |
| | | @PostMapping("/SelectGlass") |
| | | public Result SelectGlass(String orderid) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | List<Glass> glass=homeMapper.SelectGlass(orderid); |
| | | map.put("glass", glass); |
| | | return Result.success(map); |
| | | } |
| | | |
| | | //手动添加扫码位玻璃 |
| | | @PostMapping("/InsertQueueGlassId") |
| | | public Result InsertQueueGlassId(String glassid,Short id) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | short result = homeMapper.SelectStorageByGlassId(glassid); |
| | | if (result > 0) { |
| | | map.put("message", "300"); |
| | | }else{ |
| | | homeMapper.InsertQueueGlassId(glassid,id); |
| | | map.put("message", "200"); |
| | | } |
| | | return Result.success(map); |
| | | } |
| | | |
| | | //确认扫码位玻璃信息 |
| | | @PostMapping("/UpdateQueueState") |
| | | public Result UpdateQueueState() { |
| | | homeMapper.UpdateQueueState(); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("message", "200"); |
| | | return Result.success(map); |
| | | } |
| | | |
| | | //清除上片队列玻璃 |
| | | @PostMapping("/DeleteQueueGlass") |
| | | public Result DeleteQueueGlass(String id) { |
| | | homeMapper.DeleteQueueGlass(id); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("message", "200"); |
| | | return Result.success(map); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | |
| | | public class Glass{ |
| | | private Integer id; |
| | | private Short orderId; |
| | | private double glassWidth; |
| | | private double glassHeight; |
| | | private String orderId; |
| | | private double width; |
| | | private double height; |
| | | private String glassId; |
| | | |
| | | |
| | |
| | | return id; |
| | | } |
| | | |
| | | public Short getOrderId() { |
| | | public String getOrderId() { |
| | | return orderId; |
| | | } |
| | | |
| | | public void setOrderId(Short orderId) { |
| | | public void setOrderId(String orderId) { |
| | | this.orderId = orderId; |
| | | } |
| | | |
| | | public double getWidth() { |
| | | return glassWidth; |
| | | public double getwidth() { |
| | | return width; |
| | | } |
| | | |
| | | public void setHeight(double glassHeight) { |
| | | this.glassHeight = glassHeight; |
| | | public void setHeight(double height) { |
| | | this.height = height; |
| | | } |
| | | |
| | | public double getHeight() { |
| | | return glassHeight; |
| | | return height; |
| | | } |
| | | |
| | | public void setWidth(double glassWidth) { |
| | | this.glassWidth = glassWidth; |
| | | public void setWidth(double width) { |
| | | this.width = width; |
| | | } |
| | | |
| | | public String getGlassId() { |
| | |
| | | |
| | | import java.util.Date; |
| | | |
| | | |
| | | public class alarmmg { |
| | | private Integer id; |
| | | private String content; |
| | |
| | | |
| | | private String timeons; |
| | | |
| | | // 自增id |
| | | public void setid(Integer id) { |
| | | this.id = id; |
| | | } |
| | |
| | | return id; |
| | | } |
| | | |
| | | // 报警内容 |
| | | public void setontent(String content) { |
| | | this.content = content; |
| | | } |
| | |
| | | return content; |
| | | } |
| | | |
| | | // 报警开始时间 |
| | | public void settimeon(Date timeon) { |
| | | this.timeon = timeon; |
| | | } |
| | |
| | | return timeon; |
| | | } |
| | | |
| | | // 报警结束时间 |
| | | public void setendTime(Date endTime) { |
| | | this.endTime = endTime; |
| | | } |
| New file |
| | |
| | | package com.example.springboot.entity; |
| | | |
| | | public class north_glass_buffer1 { |
| | | private Integer id; //自增id |
| | | private String ordernumber;//订单id |
| | | private String listnumber;//集合id |
| | | private String boxnumber;//箱子id |
| | | private String barcode;//玻璃id |
| | | private double glasslength;//玻璃宽 |
| | | private double glassheight;//玻璃高 |
| | | private double glasslength_mm;//玻璃宽mm |
| | | private double glassheight_mm;//玻璃高mm |
| | | |
| | | public Integer id() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | | public String getordernumber() { |
| | | return ordernumber; |
| | | } |
| | | public void setordernumber(String ordernumber) { |
| | | this.ordernumber = ordernumber; |
| | | } |
| | | public String getlistnumber() { |
| | | return listnumber; |
| | | } |
| | | public void setlistnumber(String listnumber) { |
| | | this.listnumber = listnumber; |
| | | } |
| | | |
| | | public String getboxnumber() { |
| | | return boxnumber; |
| | | } |
| | | public void setboxnumber(String boxnumber) { |
| | | this.boxnumber = boxnumber; |
| | | } |
| | | |
| | | |
| | | public String getbarcode() { |
| | | return barcode; |
| | | } |
| | | public void setbarcode(String barcode) { |
| | | this.barcode = barcode; |
| | | } |
| | | |
| | | |
| | | public Double getglasslength() { |
| | | return glasslength; |
| | | } |
| | | public void setglasslength(Double glasslength) { |
| | | this.glasslength = glasslength; |
| | | } |
| | | |
| | | public Double getglassheight() { |
| | | return glassheight; |
| | | } |
| | | public void setglassheight(Double glassheight) { |
| | | this.glassheight = glassheight; |
| | | } |
| | | |
| | | public Double getglasslength_mm() { |
| | | return glasslength_mm; |
| | | } |
| | | public void setglasslength_mm(Double glasslength_mm) { |
| | | this.glasslength_mm = glasslength_mm; |
| | | } |
| | | |
| | | public Double glassheight_mm() { |
| | | return glassheight_mm; |
| | | } |
| | | public void setglassheight_mm(Double glassheight_mm) { |
| | | this.glassheight_mm = glassheight_mm; |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | @Select("select count(*) from storage_cage where glass_id=#{glassId}") |
| | | short SelectStorageByGlassId(String glassId); |
| | | |
| | | //根据订单查询玻璃信息 |
| | | @Select("select * from glass where position(#{orderid} in orderid)") |
| | | List<Glass> SelectGlass(String orderid); |
| | | |
| | | //获取上片队列信息 |
| | | @Select("select gl.* from queue qe inner join glass gl on qe.glassid=gl.glassid where qe.id=#{id}") |
| | | Glass GetQueueInfo(int id); |
| | | |
| | | //手动添加扫码位玻璃 |
| | | @Select("update queue set glassid=#{glassid},state=1 where id=#{id}") |
| | | void InsertQueueGlassId(String glassid,Short id); |
| | | |
| | | //确认扫码位玻璃信息 |
| | | @Select("update queue set state=1 where id=1") |
| | | void UpdateQueueState(); |
| | | |
| | | //手动添加扫码位玻璃 |
| | | @Select("update queue set glassid='' where id=#{id}") |
| | | void DeleteQueueGlass(String id); |
| | | |
| | | |
| | | } |
| | |
| | | |
| | | //@Select("(select*from storage_cage as a where a.state=0 and cage%2=0 ORDER BY id LIMIT 1)union (select a.* from storage_cage a inner join (select cage,if(shu2=1,shu3,shu5) as gezi from ( select cage, count(case when state1=1 and state2=0 then cell else null end)as shu1, count(case when state1=0 then cell else null end) as shu2, min(case when state1=1 and state2=0 then cell else null end) as shu3, min(case when state1=0 then cell else null end) as shu4, min(case when state1=0 or state2=0 then cell else null end) as shu5 from (select *,max(state) as state1,min(state) as state2 from storage_cage group by cage,cell) as a where cage%2!=0 GROUP BY cage HAVING shu2>1 or (shu2=1 and shu1>0) ) as sss limit 1)as b on a.cage=b.cage and a.cell=b.gezi and a.state=0 order by tier limit 1) ORDER BY id LIMIT 1;") |
| | | //获取订单号排序的空订单笼子 |
| | | @Select("select cage,COUNT(if(order_id=#{orderids},order_id,null))as orderid,cell,min(state)as state1 from storage_cage where (order_id=#{orderids} or ''='') GROUP BY cage,cell HAVING state1=0 ORDER BY orderid desc; ") |
| | | List<StorageCage> selectAll(Short orderids); |
| | | @Select("select a.cage,COUNT(if(a.order_id=#{orderids},a.order_id,null))as orderid,b.shu,c.shu2,a.cell,min(a.state)as state1 from storage_cage a left join (select COUNT(*)shu,cage from storage_cage where order_id=#{orderids} GROUP BY cage)as b on a.cage=b.cage left join(select cage ,COUNT(glass_id)as shu2 from storage_cage GROUP BY cage)c on a.cage=c.cage where (order_id=#{orderids} or ''='') GROUP BY cage,cell HAVING state1=0 ORDER BY shu desc,shu2,cage asc; ") |
| | | List<StorageCage> selectAll(String orderids); |
| | | |
| | | //判断该笼子是否有合适宽度空格 |
| | | @Select("select cage,cell,tier,id,ROUND(id/2)as prcId,width from storage_cage where cage=#{cage1} and cell=#{cell} and state=0 and width>=#{width} ORDER BY cell asc,tier desc LIMIT 1") |
| | |
| | | void insert(StorageTask storageTask); |
| | | |
| | | //出片任务查询 |
| | | @Select("select cage,cell,tier,glasswidth,ROUND(id/2)as prcId,id,glass_id from storage_cage as a where a.order_id=#{orderId} and state=1 order by cage desc,tier desc,cell desc LIMIT 1") |
| | | @Select("select COUNT(order_id)order_id,cage,cell,glasswidth,tier,ROUND(id/2)as prcId,glass_id from storage_cage a where a.order_id=#{orderId} GROUP BY cage,cell ORDER BY cage desc,order_id desc,cell desc,glasswidth desc limit 1") |
| | | StorageCage selectOut(String orderId); |
| | | // @Select("select cage,cell,tier,glasswidth,ROUND(id/2)as prcId,id,glass_id from storage_cage as a where a.order_id=#{orderId} and state=1 order by cage desc,tier desc,cell desc LIMIT 1") |
| | | // StorageCage selectOut(String orderId); |
| | | //按玻璃ID出片任务查询 |
| | | @Select("select cage,cell,tier,glasswidth,ROUND(id/2)as prcId,id from storage_cage as a where a.glass_id=#{glassid} and state=1 order by cage desc,tier desc,cell desc LIMIT 1") |
| | | StorageCage selectOut2(String glassid); |
| | | |
| | | //判断出片为1时,是否可直接出片 |
| | | @Select("select state from storage_cage where cage=#{cage} and cell=#{cell} and tier=2;") |
| | | @Select("select COUNT(state) from storage_cage where cage=#{cage} and cell=#{cell}") |
| | | int selectGlassState(int cage,int cell); |
| | | |
| | | //判断该调拨的笼子 |
| | |
| | | |
| | | //修改笼子信息(进片) |
| | | @Update("update storage_cage set state=#{state},glass_id=#{glassid},order_id=#{orderid},glasswidth=#{width} where id=#{id};") |
| | | void UpdataAddCage(Short orderid,String glassid,double width,int cage,int cell,int id,int state); |
| | | void UpdataAddCage(String orderid,String glassid,double width,int cage,int cell,int id,int state); |
| | | //修改笼子信息(多片进片) |
| | | @Update("update storage_cage set state=#{state},glass_id=#{glassid},order_id=#{orderid},glasswidth=#{width} where cage=#{cage} and cell=#{cell} and tier=#{tier};") |
| | | void UpdataAddqueCage(String orderid,String glassid,double width,int cage,int cell,int tier,int state); |
| | | //修改同笼子格子宽度 |
| | | @Update("update storage_cage set width=width-#{width} where cage=#{cage} and cell=#{cell};") |
| | | void UpdataAddCage1(double width,int cage,int cell); |
| | |
| | | //根据笼子格子层数获取玻璃id |
| | | @Select("SELECT COUNT(*) FROM `storage_cage` where state=3;") |
| | | Integer Selectoutstate(); |
| | | //添加任务序列 |
| | | //获取进片队列id |
| | | @Insert("INSERT INTO `canadames`.`queue`(`glassid`, `type`, `state`,width) VALUES (#{glassid},#{type},0,#{width});") |
| | | void insertqueue(String glassid,int type,double width); |
| | | //获取任务序列 |
| | | @Select("select glassid,orderid,width,type from queue where state=#{state}") |
| | | StorageCage SelectQueue(int state); |
| | | //获取序列表的玻璃宽 |
| | | @Select("select sum(width)+400 as width,orderid from queue where state=0 limit 1") |
| | | StorageCage SelectQueueWidth(); |
| | | //判断该笼子是否有合适完整空格 |
| | | @Select("select cage,cell,tier,id,ROUND(id/2)as prcId,width,max(state)state1 from storage_cage where cage=#{cage1} and cell=#{cell} and state=0 and width>=#{width} HAVING state1=0 ORDER BY cell asc,tier desc LIMIT 1") |
| | | StorageCage selectqueCage1(int cage1,int cell,double width); |
| | | //获取序列表的玻璃 |
| | | @Select("select glassid,orderid,width from queue where state=0 and type=#{type}") |
| | | Glass SelectQueueGlass(int type); |
| | | //多片出库清除一整个空格 |
| | | @Update("update storage_cage set glass_id='',order_id='',glasswidth=0,width=2750,state=0 where cage=#{cage} and cell=#{cell}") |
| | | void UpdatequeOut(int cage,int cell); |
| | | //判断序列表里的玻璃是否是同一订单 |
| | | @Select("select COUNT(distinct orderid) from queue ") |
| | | int SelectQueOrder(); |
| | | //寻找可以多片出片的玻璃 |
| | | @Select("select cage,cell,ROUND(id/2)as prcId,width,count(glass_id)shu from storage_cage where order_id=#{orderid} and (cage!=#{cage} or cell!=#{cell}) GROUP BY cage,cell HAVING shu=1 ORDER BY cage desc,cell desc limit 1") |
| | | StorageCage SelectQueout(String orderid,int cage,int cell); |
| | | //获取进片队列id |
| | | @Select("select glassid from queue where type=1 and state=0;") |
| | | @Select("select glassid from queue where type=1") |
| | | String Selectqueueid(); |
| | | //获取进片队列id |
| | | @Select("select state from queue where type=1") |
| | | String Selectqueuestate(); |
| | | } |
| | | |
| | |
| | | ps.setInt(1, glassid); |
| | | rs= ps.executeQuery(); |
| | | while (rs.next()) { |
| | | glass.setOrderId(rs.getShort("orderid")); |
| | | glass.setOrderId(rs.getString("orderid")); |
| | | } |
| | | conn.close(); |
| | | return glass; |
| | |
| | | @Autowired |
| | | private SpianMapper spianMapper; |
| | | |
| | | // @GetMapping("/all2") |
| | | public Result selectout(String orderid) { |
| | | |
| | | //spianMapper.UpdatetaskOut(); //完成上一次出片或者调度任务,改到plchold里,出片或调度任务完成立即改变结束任务; |
| | | // 定义PRC数据传送数组 |
| | | List<String> adddresslist = new ArrayList<>(); |
| | | adddresslist.add("DB105.6");// 出片车起始位置 |
| | | adddresslist.add("DB105.8");// 出片车目标位置 |
| | | adddresslist.add("DB105.10");// 出片笼玻璃数 |
| | | adddresslist.add("DB105.14");// 出片车启动 1为启动 |
| | | List<Short> datas = new ArrayList<>(); |
| | | // 获取优先出片的位置 |
| | | StorageCage cageout = spianMapper.selectOut(orderid); |
| | | if(cageout==null){ |
| | | return Result.success("200"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | int cage = cageout.getCage(); // 储存出片位置,笼子格子几号玻璃 |
| | | int cell = cageout.getCell();// 出片格号 |
| | | int tier = cageout.getTier();// 出片内外片 |
| | | int prcid = cageout.getPrcId();// prcid |
| | | String glassid=cageout.getGlassId(); |
| | | int prcid2; |
| | | int ids; |
| | | int cages; |
| | | int cells; |
| | | double glasswidth = cageout.getGlassWidth(); |
| | | // 判断玻璃内外片 |
| | | if (tier == 2) { |
| | | // 判断玻璃可直接出片时 |
| | | // 修改数据库笼子表(出片) |
| | | datas.add((short) prcid); |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 3);//清除格子玻璃信息 |
| | | spianMapper.Inserttask(1, 0,cageout.getId(),1000,orderid);//新增任务 |
| | | S7control.getinstance().WriteWord(adddresslist, datas);//派发出片车任务 |
| | | outmesid(glassid);//派发出片ID |
| | | return Result.success(datas);//结束 |
| | | } else { |
| | | // 获取格子的玻璃数量 |
| | | int state = spianMapper.selectGlassState(cage, cell); |
| | | // 判断内片是否需要调拨 |
| | | if (state == 0) { |
| | | //spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0); |
| | | datas.add((short) prcid); |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | spianMapper.Inserttask(1, 0,cageout.getId(),1000,orderid);//新增任务 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 3);//清除格子玻璃信息 |
| | | S7control.getinstance().WriteWord(adddresslist, datas);//派发出片车任务 |
| | | outmesid(glassid);//派发出片ID |
| | | //spianMapper.Updatetask(1, 1);//完成任务 |
| | | return Result.success(datas);//结束 |
| | | |
| | | } else { |
| | | // 玻璃需要调拨时,判断属于哪个半区的笼子 |
| | | if (cage < 6) { |
| | | StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 0, 6); |
| | | if (cagecell == null) { |
| | | return Result.success(cagecell); |
| | | } |
| | | // 获取调拨位置进行调拨 |
| | | prcid2 = cagecell.getPrcId();// 调拨目标位PRCID |
| | | ids = cagecell.getId();// 调拨目标位ID |
| | | cages=cagecell.getCage();//调拨目标位笼子 |
| | | cells=cagecell.getCell();//调拨目标位格子 |
| | | |
| | | // 填入调拨数据 |
| | | datas.add((short) prcid);// 调拨外片起始位置 |
| | | datas.add((short) prcid2); |
| | | datas.add((short) 2); |
| | | datas.add((short) 1); |
| | | // 更换玻璃的笼子 |
| | | String glassids=spianMapper.SelectGlassid(cage, cell); //获取被调拨的玻璃id |
| | | spianMapper.UpdateDBCage(ids, cage, cell);// 将原格子数据更新到新格子里 |
| | | spianMapper.UpdataAddCage1(glasswidth, cages, cells);//减少新格子宽度 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 3);// 清除被调拨格子数据 |
| | | spianMapper.Inserttask(2, 0,cageout.getId(),ids,orderid);//新增调度任务 |
| | | // 传输mes数据,坐标,数据 |
| | | S7control.getinstance().WriteWord(adddresslist, datas);//派发出片车任务 |
| | | System.out.println(datas); |
| | | outmesid(glassids);//派发调拨玻璃ID |
| | | return Result.success(cagecell); //结束 |
| | | |
| | | } else {// 笼子号大于5时 |
| | | StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 5, 11); |
| | | if (cagecell == null) { |
| | | return Result.success(cagecell); |
| | | } |
| | | // 获取调拨位置进行调拨 |
| | | prcid2 = cagecell.getPrcId();// 调拨目标位prcID |
| | | ids = cagecell.getId();// 调拨目标位ID |
| | | cages=cagecell.getCage();//调拨目标位笼子 |
| | | cells=cagecell.getCell();//调拨目标位格子 |
| | | // 填入调拨数据 |
| | | datas.add((short) prcid); |
| | | datas.add((short) prcid2); |
| | | datas.add((short) 2); |
| | | datas.add((short) 1); |
| | | String glassids=spianMapper.SelectGlassid(cage, cell); //获取被调拨的玻璃id |
| | | spianMapper.UpdateDBCage(ids, cage, cell);// 将原格子数据更新到新格子里 |
| | | spianMapper.Inserttask(2, 0,cageout.getId(),ids,orderid);//新增调度任务 |
| | | spianMapper.UpdataAddCage1(glasswidth, cages, cells);//减少新格子宽度 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 3);// 清除被调拨格子数据 |
| | | // 传输mes数据,坐标,数据 |
| | | S7control.getinstance().WriteWord(adddresslist, datas);//派发出片车任务 |
| | | |
| | | outmesid(glassids);//派发调拨玻璃ID |
| | | return Result.success(cagecell); //结束 |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | // @GetMapping("/all") |
| | | // 进片任务,传订单id |
| | | // 按订单优先进片 |
| | |
| | | int tiers; |
| | | int prctier; |
| | | double width; |
| | | double minwidth=0; |
| | | //spianMapper.Updatetask(1, 0);//完成任务,改到plchold里,出片或调度任务完成立即改变结束任务; |
| | | Glass glasslist = spianMapper.selectGlass(glassid); |
| | | if(glasslist==null){ |
| | | return (300); |
| | | double minwidth = 0; |
| | | |
| | | Glass glasslist = spianMapper.selectGlass(glassid); // 获取玻璃参数 |
| | | if (glasslist == null) { |
| | | return (300); |
| | | } |
| | | double widths = glasslist.getWidth(); |
| | | Short orderids = glasslist.getOrderId(); |
| | | double widths = glasslist.getwidth(); |
| | | String orderids = glasslist.getOrderId(); |
| | | |
| | | List<String> adddresslist = new ArrayList<>(); |
| | | adddresslist.add("DB105.0");// 进片车起始位置 |
| | |
| | | |
| | | // String orderid="A001"; |
| | | // 获取订单相关度最高的笼子排序 |
| | | List<StorageCage> storageCage = spianMapper.selectAll(orderids); |
| | | List<StorageCage> storageCage = spianMapper.selectAll(orderids.toString()); |
| | | if (storageCage == null) { |
| | | return (400); |
| | | } |
| | |
| | | cage1 = storageCage2.getCage(); |
| | | // 判断该笼子号相邻最大的空格数 |
| | | int cages = spianMapper.selectCage(cage1); |
| | | StorageCage cages1 ; |
| | | //判断是否是第二片需要加间隔物 |
| | | StorageCage cages1; |
| | | // 判断是否是第二片需要加间隔物 |
| | | prctier = spianMapper.selectsum(cage1, storageCage2.getCell());// 传给prc的格子内玻璃数 |
| | | if(prctier>0){ |
| | | cages1 = spianMapper.selectCage1(cage1,storageCage2.getCell(),widths+400); |
| | | }else{ |
| | | cages1 = spianMapper.selectCage1(cage1,storageCage2.getCell(),widths); |
| | | } |
| | | if (prctier > 0) { |
| | | cages1 = spianMapper.selectCage1(cage1, storageCage2.getCell(), widths + 400); |
| | | } else { |
| | | cages1 = spianMapper.selectCage1(cage1, storageCage2.getCell(), widths); |
| | | } |
| | | // 判断选中笼子是否有合适宽度空格 |
| | | // 有合适空格时进片 |
| | | if (cages1 != null&&cages>=1) { |
| | | // 有合适空格时进片 |
| | | if (cages1 != null && cages >= 1) { |
| | | ids = cages1.getId();// 数据库ID |
| | | tiers = cages1.getTier();// 内外片 |
| | | cells = cages1.getCell();// 格子号 |
| | | prcid = cages1.getPrcId();// 传给prc的目标地id |
| | | width=cages1.getWidth();//格子剩余宽度 |
| | | widths=glasslist.getWidth(); |
| | | width = cages1.getWidth();// 格子剩余宽度 |
| | | widths = glasslist.getwidth(); |
| | | |
| | | // 执行进片 |
| | | datas.add((short) 1000); |
| | | datas.add((short) prcid); |
| | | datas.add((short) prctier); |
| | | datas.add((short) 1); |
| | | // 数据库修改笼子表新增一条玻璃 |
| | | spianMapper.UpdataAddCage(orderids, glassid, widths, cage1, cells, ids, 2); |
| | | spianMapper.UpdataAddCage1(widths, cage1, cells);//减少格子宽度 |
| | | spianMapper.Inserttask(0, 0, 1000, ids,glassid.toString());//新增任务 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | |
| | | // S7control.getinstance().WriteByte("DB105.16",glassid); |
| | | return (200); |
| | | |
| | | // 执行进片 |
| | | datas.add((short) 1000); |
| | | datas.add((short) prcid); |
| | | datas.add((short) prctier); |
| | | datas.add((short) 1); |
| | | // 数据库修改笼子表新增一条玻璃 |
| | | spianMapper.UpdataAddCage(orderids.toString(), glassid, widths, cage1, cells, ids, 2); |
| | | spianMapper.UpdataAddCage1(widths, cage1, cells);// 减少格子宽度 |
| | | spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString());// 新增任务 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | |
| | | // S7control.getinstance().WriteByte("DB105.16",glassid); |
| | | return (200); |
| | | |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | } |
| | | |
| | | public Short selectAll2() { // 多片上片 |
| | | int cage1; |
| | | int cells; |
| | | int ids; |
| | | int prcid; |
| | | int tiers; |
| | | int prctier; |
| | | double width; |
| | | double minwidth = 0; |
| | | List<String> adddresslist = new ArrayList<>(); |
| | | adddresslist.add("DB105.0");// 进片车起始位置 |
| | | adddresslist.add("DB105.2");// 进片车目标位置 |
| | | adddresslist.add("DB105.4");// 进片笼玻璃数 |
| | | adddresslist.add("DB105.12");// 进片车启动 1为启动 |
| | | List<Short> datas = new ArrayList<>(); |
| | | |
| | | // 获取多片序列玻璃宽度 |
| | | StorageCage queGlass = spianMapper.SelectQueueWidth(); |
| | | double widths = queGlass.getWidth(); |
| | | String orderids = queGlass.getOrderId(); |
| | | int num = spianMapper.SelectQueOrder(); |
| | | |
| | | if (num == 1) { |
| | | |
| | | // 获取订单相关度最高的笼子排序 |
| | | List<StorageCage> storageCage = spianMapper.selectAll(orderids); |
| | | if (storageCage == null) { |
| | | return (400); |
| | | } |
| | | for (StorageCage storageCage2 : storageCage) { |
| | | // 保存订单优先顺序笼子号 |
| | | cage1 = storageCage2.getCage(); |
| | | // 判断该笼子号相邻最大的空格数 |
| | | int cages = spianMapper.selectCage(cage1); |
| | | StorageCage cages1; |
| | | // 判断是否有合适完整空格 |
| | | cages1 = spianMapper.selectqueCage1(cage1, storageCage2.getCell(), widths); |
| | | // 判断选中笼子是否有合适宽度空格 |
| | | // 有合适空格时进片 |
| | | if (cages1 != null && cages >= 1) { |
| | | ids = cages1.getId();// 数据库ID |
| | | cells = cages1.getCell();// 格子号 |
| | | prcid = cages1.getPrcId();// 传给prc的目标地id |
| | | // 数据库修改笼子表新增一条玻璃 |
| | | for (int i = 2; i > 0; i--) { |
| | | Glass qglass = spianMapper.SelectQueueGlass(i); |
| | | width = qglass.getwidth();// 格子剩余宽度 |
| | | spianMapper.UpdataAddqueCage(qglass.getOrderId(), qglass.getGlassId(), width, cage1, cells, i, |
| | | 1); |
| | | spianMapper.UpdataAddCage1(width, cage1, cells);// 减少格子宽度 |
| | | spianMapper.Inserttask(0, 0, 1000, ids, qglass.getGlassId().toString());// 新增任务 |
| | | } |
| | | // 执行进片 |
| | | datas.add((short) 1000); |
| | | datas.add((short) prcid); |
| | | datas.add((short) 0); |
| | | datas.add((short) 1); |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | |
| | | return (200); |
| | | |
| | | } |
| | | } |
| | | |
| | | } else { |
| | | for (int i = 2; i > 0; i--) { |
| | | Glass qglass = spianMapper.SelectQueueGlass(i); |
| | | String orderid = qglass.getOrderId().toString(); |
| | | String glassid = qglass.getGlassId(); |
| | | widths = qglass.getwidth(); |
| | | List<StorageCage> storageCage = spianMapper.selectAll(orderid); |
| | | if (storageCage == null) { |
| | | return (400); |
| | | } |
| | | for (StorageCage storageCage2 : storageCage) { |
| | | // 保存订单优先顺序笼子号 |
| | | cage1 = storageCage2.getCage(); |
| | | // 判断该笼子号相邻最大的空格数 |
| | | int cages = spianMapper.selectCage(cage1); |
| | | StorageCage cages1; |
| | | // 判断是否是第二片需要加间隔物 |
| | | prctier = spianMapper.selectsum(cage1, storageCage2.getCell());// 传给prc的格子内玻璃数 |
| | | if (prctier > 0) { |
| | | cages1 = spianMapper.selectCage1(cage1, storageCage2.getCell(), widths + 400); |
| | | } else { |
| | | cages1 = spianMapper.selectCage1(cage1, storageCage2.getCell(), widths); |
| | | } |
| | | // 判断选中笼子是否有合适宽度空格 |
| | | // 有合适空格时进片 |
| | | if (cages1 != null && cages >= 1) { |
| | | ids = cages1.getId();// 数据库ID |
| | | tiers = cages1.getTier();// 内外片 |
| | | cells = cages1.getCell();// 格子号 |
| | | prcid = cages1.getPrcId();// 传给prc的目标地id |
| | | width = cages1.getWidth();// 格子剩余宽度 |
| | | widths = qglass.getwidth(); |
| | | |
| | | // 执行进片 |
| | | datas.add((short) 1000); |
| | | datas.add((short) prcid); |
| | | datas.add((short) prctier); |
| | | datas.add((short) 1); |
| | | // 数据库修改笼子表新增一条玻璃 |
| | | spianMapper.UpdataAddCage(orderid, glassid, widths, cage1, cells, ids, 2); |
| | | spianMapper.UpdataAddCage1(widths, cage1, cells);// 减少格子宽度 |
| | | spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString());// 新增任务 |
| | | // S7control.getinstance().WriteWord(adddresslist, datas); |
| | | break; |
| | | // S7control.getinstance().WriteByte("DB105.16",glassid); |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | return (400); |
| | | |
| | | } |
| | | |
| | | // 按订单出片 |
| | | public Result selectout(String orderid) { |
| | | |
| | | // spianMapper.UpdatetaskOut(); //完成上一次出片或者调度任务,改到plchold里,出片或调度任务完成立即改变结束任务; |
| | | // 定义PRC数据传送数组 |
| | | List<String> adddresslist = new ArrayList<>(); |
| | | adddresslist.add("DB105.6");// 出片车起始位置 |
| | | adddresslist.add("DB105.8");// 出片车目标位置 |
| | | adddresslist.add("DB105.10");// 出片笼玻璃数 |
| | | adddresslist.add("DB105.14");// 出片车启动 1为启动 |
| | | List<Short> datas = new ArrayList<>(); |
| | | // 获取优先出片的位置 |
| | | StorageCage cageout = spianMapper.selectOut(orderid); |
| | | if (cageout == null) { |
| | | return Result.success("200"); |
| | | } |
| | | // 判断是否同一格内都为同一订单 |
| | | |
| | | int orders = Integer.valueOf(cageout.getOrderId()).intValue(); |
| | | |
| | | int cage = cageout.getCage(); // 储存出片位置,笼子格子几号玻璃 |
| | | int cell = cageout.getCell();// 出片格号 |
| | | int tier = cageout.getTier();// 出片内外片 |
| | | int prcid = cageout.getPrcId();// prcid |
| | | String glassid = cageout.getGlassId(); |
| | | int prcid2; |
| | | int ids; |
| | | int cages; |
| | | int cells; |
| | | double glasswidth = cageout.getGlassWidth(); |
| | | // 当一格内都为同一订单时 |
| | | |
| | | if (orders == 2) { |
| | | datas.add((short) prcid); |
| | | datas.add((short) 1000); |
| | | datas.add((short) 2); |
| | | datas.add((short) 1); |
| | | spianMapper.UpdatequeOut(cage, cell); |
| | | return Result.success("200"); |
| | | } else { |
| | | // 判断是否除此格子内还有其他格子有单独的订单玻璃 |
| | | StorageCage pd = spianMapper.SelectQueout(orderid,cage, cell); |
| | | // 判断玻璃内外片 |
| | | if (tier == 2) { |
| | | |
| | | // 判断玻璃可直接出片时 |
| | | // 修改数据库笼子表(出片) |
| | | datas.add((short) prcid); |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 3);// 清除格子玻璃信息 |
| | | spianMapper.Inserttask(1, 0, cageout.getId(), 1000, orderid);// 新增任务 |
| | | S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务 |
| | | outmesid(glassid);// 派发出片ID |
| | | if (pd != null) { |
| | | cage = pd.getCage(); |
| | | cell = pd.getCage(); |
| | | // 清除本格数据出片 |
| | | spianMapper.UpdatequeOut(cage, cell); |
| | | return Result.success("200"); |
| | | } |
| | | return Result.success(datas);// 结束 |
| | | } else { |
| | | // 获取格子的玻璃数量 |
| | | int state = spianMapper.selectGlassState(cage, cell); |
| | | // 判断内片是否需要调拨 |
| | | if (state == 1) { |
| | | // spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0); |
| | | datas.add((short) prcid); |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | spianMapper.Inserttask(1, 0,prcid, 1000, orderid);// 新增任务 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0);// 清除格子玻璃信息 |
| | | //S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务 |
| | | //outmesid(glassid);// 派发出片ID |
| | | if (pd != null) { |
| | | cage = pd.getCage(); |
| | | cell = pd.getCage(); |
| | | // 清除本格数据出片 |
| | | spianMapper.UpdatequeOut(cage, cell); |
| | | return Result.success("200"); |
| | | } |
| | | return Result.success(datas);// 结束 |
| | | |
| | | } else { |
| | | // 玻璃需要调拨时,判断属于哪个半区的笼子 |
| | | if (cage < 6) { |
| | | StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 0, 6); |
| | | if (cagecell == null) { |
| | | return Result.success(cagecell); |
| | | } |
| | | // 获取调拨位置进行调拨 |
| | | prcid2 = cagecell.getPrcId();// 调拨目标位PRCID |
| | | ids = cagecell.getId();// 调拨目标位ID |
| | | cages = cagecell.getCage();// 调拨目标位笼子 |
| | | cells = cagecell.getCell();// 调拨目标位格子 |
| | | |
| | | // 填入调拨数据 |
| | | datas.add((short) prcid);// 调拨外片起始位置 |
| | | datas.add((short) prcid2); |
| | | datas.add((short) 2); |
| | | datas.add((short) 1); |
| | | // 更换玻璃的笼子 |
| | | String glassids = spianMapper.SelectGlassid(cage, cell); // 获取被调拨的玻璃id |
| | | spianMapper.UpdateDBCage(ids, cage, cell);// 将原格子数据更新到新格子里 |
| | | spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 减少新格子宽度 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 3);// 清除被调拨格子数据 |
| | | spianMapper.Inserttask(2, 0, cageout.getId(), ids, orderid);// 新增调度任务 |
| | | // 传输mes数据,坐标,数据 |
| | | S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务 |
| | | System.out.println(datas); |
| | | outmesid(glassids);// 派发调拨玻璃ID |
| | | return Result.success(cagecell); // 结束 |
| | | |
| | | } else {// 笼子号大于5时 |
| | | StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 5, 11); |
| | | if (cagecell == null) { |
| | | return Result.success(cagecell); |
| | | } |
| | | // 获取调拨位置进行调拨 |
| | | prcid2 = cagecell.getPrcId();// 调拨目标位prcID |
| | | ids = cagecell.getId();// 调拨目标位ID |
| | | cages = cagecell.getCage();// 调拨目标位笼子 |
| | | cells = cagecell.getCell();// 调拨目标位格子 |
| | | // 填入调拨数据 |
| | | datas.add((short) prcid); |
| | | datas.add((short) prcid2); |
| | | datas.add((short) 2); |
| | | datas.add((short) 1); |
| | | String glassids = spianMapper.SelectGlassid(cage, cell); // 获取被调拨的玻璃id |
| | | spianMapper.UpdateDBCage(ids, cage, cell);// 将原格子数据更新到新格子里 |
| | | spianMapper.Inserttask(2, 0, cageout.getId(), ids, orderid);// 新增调度任务 |
| | | spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 减少新格子宽度 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 3);// 清除被调拨格子数据 |
| | | // 传输mes数据,坐标,数据 |
| | | S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务 |
| | | |
| | | outmesid(glassids);// 派发调拨玻璃ID |
| | | return Result.success(cagecell); // 结束 |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | // @GetMapping("/all2") |
| | | public Short selectout2(String glassid) { |
| | | //spianMapper.UpdatetaskOut(); //完成上一次出片或者调度任务,改到plchold里,出片或调度任务完成立即改变结束任务; |
| | | // spianMapper.UpdatetaskOut(); //完成上一次出片或者调度任务,改到plchold里,出片或调度任务完成立即改变结束任务; |
| | | // 定义PRC数据传送数组 |
| | | List<String> adddresslist = new ArrayList<>(); |
| | | adddresslist.add("DB105.6");// 出片车起始位置 |
| | |
| | | List<Short> datas = new ArrayList<>(); |
| | | // 获取优先出片的位置 |
| | | StorageCage cageout = spianMapper.selectOut2(glassid); |
| | | if(cageout==null){ |
| | | return (300); |
| | | if (cageout == null) { |
| | | return (300); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | int cage = cageout.getCage(); // 储存出片位置,笼子格子几号玻璃 |
| | | int cell = cageout.getCell();// 出片格号 |
| | |
| | | int prcid2; |
| | | int ids; |
| | | int cages; |
| | | int cells; |
| | | int cells; |
| | | double glasswidth = cageout.getGlassWidth(); |
| | | // 判断玻璃内外片 |
| | | if (tier == 2) { |
| | | int state = spianMapper.selectGlassState(cage, cell);//获取格子数量 |
| | | int state = spianMapper.selectGlassState(cage, cell);// 获取格子数量 |
| | | // 判断玻璃可直接出片时 |
| | | // 修改数据库笼子表(出片) |
| | | datas.add((short) prcid); |
| | | datas.add((short) 1000); |
| | | datas.add((short) state); |
| | | datas.add((short) 1); |
| | | |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 3);//清除格子玻璃信息 |
| | | spianMapper.Inserttask(1, 0,cageout.getId(),1000,glassid);//新增任务 |
| | | //int state = spianMapper.selectGlassState(cage, cell);//获取格子数量 |
| | | if(state==2){ |
| | | |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 3);// 清除格子玻璃信息 |
| | | spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid);// 新增任务 |
| | | // int state = spianMapper.selectGlassState(cage, cell);//获取格子数量 |
| | | if (state == 2) { |
| | | spianMapper.UpdateDBCage1(cage, cell);// 将内片数据更新到外片里 |
| | | spianMapper.UpdateDBCage2(cage, cell);// 清除内片数据 |
| | | } |
| | | S7control.getinstance().WriteWord(adddresslist, datas);//派发出片车任务 |
| | | outmesid(glassid);//派发出片ID |
| | | |
| | | |
| | | return (200);//结束 |
| | | S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务 |
| | | //outmesid(glassid);// 派发出片ID |
| | | |
| | | return (200);// 结束 |
| | | } else { |
| | | // 获取格子的玻璃数量 |
| | | int state = spianMapper.selectGlassState(cage, cell); |
| | | // 判断内片是否需要调拨 |
| | | if (state == 0) { |
| | | //spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 3); |
| | | // spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 3); |
| | | datas.add((short) prcid); |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | spianMapper.Inserttask(1, 0,cageout.getId(),1000 ,glassid);//新增任务 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 3);//清除格子玻璃信息 |
| | | outmesid(glassid);//派发出片ID |
| | | S7control.getinstance().WriteWord(adddresslist, datas);//派发出片车任务 |
| | | |
| | | |
| | | return (200);//结束 |
| | | spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid);// 新增任务 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 3);// 清除格子玻璃信息 |
| | | //outmesid(glassid);// 派发出片ID |
| | | S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务 |
| | | |
| | | return (200);// 结束 |
| | | |
| | | } else { |
| | | // 玻璃需要调拨时,判断属于哪个半区的笼子 |
| | |
| | | // 获取调拨位置进行调拨 |
| | | prcid2 = cagecell.getPrcId();// 调拨目标位PRCID |
| | | ids = cagecell.getId();// 调拨目标位ID |
| | | cages=cagecell.getCage();//调拨目标位笼子 |
| | | cells=cagecell.getCell();//调拨目标位格子 |
| | | |
| | | |
| | | cages = cagecell.getCage();// 调拨目标位笼子 |
| | | cells = cagecell.getCell();// 调拨目标位格子 |
| | | |
| | | // 填入调拨数据 |
| | | datas.add((short) prcid);// 调拨外片起始位置 |
| | | datas.add((short) prcid2); |
| | | datas.add((short) 2); |
| | | datas.add((short) 1); |
| | | // 更换玻璃的笼子 |
| | | String glassids=spianMapper.SelectGlassid(cage, cell); //获取被调拨的玻璃id |
| | | spianMapper.UpdateDBCage(ids, cage, cell);// 将原格子数据更新到新格子里 |
| | | spianMapper.UpdataAddCage1(glasswidth, cages, cells);//减少新格子宽度 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 3);// 清除被调拨格子数据 |
| | | spianMapper.Inserttask(2, 0,cageout.getId(),ids,glassid);//新增调度任务 |
| | | spianMapper.Inserttask(1, 0,cageout.getId(),1000,glassid);//新增出片任务 |
| | | // 更换玻璃的笼子 |
| | | String glassids = spianMapper.SelectGlassid(cage, cell); // 获取被调拨的玻璃id |
| | | spianMapper.UpdateDBCage(ids, cage, cell);// 将原格子数据更新到新格子里 |
| | | spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 减少新格子宽度 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 3);// 清除被调拨格子数据 |
| | | spianMapper.Inserttask(2, 0, cageout.getId(), ids, glassid);// 新增调度任务 |
| | | spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid);// 新增出片任务 |
| | | // 传输mes数据,坐标,数据 |
| | | S7control.getinstance().WriteWord(adddresslist, datas);//派发出片车任务 |
| | | |
| | | outmesid(glassids);//派发调拨玻璃ID |
| | | return (200); //结束 |
| | | S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务 |
| | | |
| | | outmesid(glassids);// 派发调拨玻璃ID |
| | | return (200); // 结束 |
| | | |
| | | } else {// 笼子号大于5时 |
| | | StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 5, 11); |
| | |
| | | // 获取调拨位置进行调拨 |
| | | prcid2 = cagecell.getPrcId();// 调拨目标位prcID |
| | | ids = cagecell.getId();// 调拨目标位ID |
| | | cages=cagecell.getCage();//调拨目标位笼子 |
| | | cells=cagecell.getCell();//调拨目标位格子 |
| | | cages = cagecell.getCage();// 调拨目标位笼子 |
| | | cells = cagecell.getCell();// 调拨目标位格子 |
| | | // 填入调拨数据 |
| | | datas.add((short) prcid); |
| | | datas.add((short) prcid2); |
| | | datas.add((short) 2); |
| | | datas.add((short) 1); |
| | | String glassids=spianMapper.SelectGlassid(cage, cell); //获取被调拨的玻璃id |
| | | spianMapper.Inserttask(2, 0,cageout.getId()+1,ids,glassid);//新增调度任务 |
| | | spianMapper.Inserttask(1, 0,cageout.getId(),1000,glassid);//新增出片任务 |
| | | String glassids = spianMapper.SelectGlassid(cage, cell); // 获取被调拨的玻璃id |
| | | spianMapper.Inserttask(2, 0, cageout.getId() + 1, ids, glassid);// 新增调度任务 |
| | | spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid);// 新增出片任务 |
| | | spianMapper.UpdateDBCage(ids, cage, cell);// 将原格子数据更新到新格子里 |
| | | spianMapper.UpdataAddCage1(glasswidth, cages, cells);//减少新格子宽度 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度 |
| | | spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 减少新格子宽度 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 3);// 清除被调拨格子数据 |
| | | // 传输mes数据,坐标,数据 |
| | | S7control.getinstance().WriteWord(adddresslist, datas);//派发出片车任务 |
| | | |
| | | outmesid(glassids);//派发调拨玻璃ID |
| | | return (200);//结束 |
| | | S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务 |
| | | |
| | | outmesid(glassids);// 派发调拨玻璃ID |
| | | return (200);// 结束 |
| | | |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | public void outmesid(String glassid) { |
| | | System.out.println("outmesid:"+glassid); |
| | | List<Byte> glassidlist=new ArrayList(); |
| | | for (char iditem : glassid.toCharArray()) { |
| | | glassidlist.add(Byte.valueOf(String.valueOf(iditem))); |
| | | } |
| | | byte[] bytes= Bytes.toArray(glassidlist); |
| | | System.out.println("outmesidbytes:"+bytes.length); |
| | | S7control.getinstance().WriteByte("DB105.30", bytes);//派发出片id |
| | | System.out.println("outmesid:" + glassid); |
| | | List<Byte> glassidlist = new ArrayList(); |
| | | for (char iditem : glassid.toCharArray()) { |
| | | glassidlist.add(Byte.valueOf(String.valueOf(iditem))); |
| | | } |
| | | byte[] bytes = Bytes.toArray(glassidlist); |
| | | System.out.println("outmesidbytes:" + bytes.length); |
| | | S7control.getinstance().WriteByte("DB105.30", bytes);// 派发出片id |
| | | } |
| | | |
| | | /*** 修改用户* @throws SQLException */ |
| | |
| | | // } |
| | | |
| | | } |
| | | |