Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes
| | |
| | | })
|
| | | }
|
| | |
|
| | | export function UpdateTask(types,shelfrack) {
|
| | | export function UpdateTask(types,glassid,shelfrack) {
|
| | | return request({
|
| | | url: '/home/UpdateTask?types=' + types + '&shelfrack='+shelfrack,
|
| | | url: '/home/UpdateTask?types=' + types + '&glassid='+glassid+'&shelfrack='+shelfrack,
|
| | | method: 'get',
|
| | | data :""
|
| | | })
|
| | |
| | | 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: 0 },
|
| | | { name: "D01.SR in pos", value: 0 },
|
| | | { name: "D02.SR dec", value: 0 },
|
| | | { name: "D02.SR in pos", value: 0 },
|
| | | { name: "D03.SR into", value: 0 },
|
| | | { name: "D03.SR dec", value: 0 },
|
| | | { name: 'D03.SR in pos', value: 0 },
|
| | | { name: "D04.SR dec", value: 0 },
|
| | | { name: "D04.SR in pos", value: 0 },
|
| | | { name: "D05.SR dec", value: 0 },
|
| | | { name: "D05.SR in pos", value: 0 },
|
| | | { name: "D06.SR dec", value: 0 },
|
| | | { name: 'D06.SR in pos', value: 0 },
|
| | | { name: "B01.SR out dec", value: 0 },
|
| | | { name: "B01.SR out in pos", value: 0 },
|
| | | { name: "B01.SR in dec", value: 0 },
|
| | | { name: "B01.SR in in pos", value: 0 },
|
| | | { name: "B01.SR turn on", value: 0 },
|
| | | { name: 'B01.SR turn off', value: 0 },
|
| | | { name: "B01.SR up", value: 0 },
|
| | | { name: "B01.SR down", value: 0 },
|
| | | { name: "B02.SR out dec", value: 0 },
|
| | | { name: "B02.SR out in pos", value: 0 },
|
| | | { name: "B02.SR in dec", value: 0 },
|
| | | { name: 'B02.SR in in pos', value: 0 },
|
| | | { name: "B02.SR turn on", value: 0 },
|
| | | { name: "B02.SR turn off", value: 0 },
|
| | | { name: "B02.SR up", value: 0 },
|
| | | { name: "B02.SR down", value: 0 },
|
| | | { name: "B01.SR out safety", value: 0 },
|
| | | { name: "B01.SR in safety", value: 0 },
|
| | | { name: "B02.SR out safety", value: 0 },
|
| | | { name: "SB.start(+)", value: 0 },
|
| | | { name: "SB.stop(1)", value: 0 },
|
| | | { name: "SB.reset", value: 0 },
|
| | | { name: "SB.auto/manul", value: 0 },
|
| | | { name: "SB.pause", value: 0 },
|
| | | { name: "SB.emg", value: 0 },
|
| | | { name: "D01.SB.start", value: 0 },
|
| | | { name: "D06.SB.start", value: 0 },
|
| | | { name: "B02.SR in safety", value: 0 },
|
| | | { name: "SAFETYDOOR.requset", value: 0 },
|
| | | { name: "SAFETYDOOR.confirm", value: 0 },
|
| | | { name: "SAFETYDOOR.reset", value: 0 },
|
| | | { name: "LED.red", value: 0 },
|
| | | { name: "LED.green", value: 0 },
|
| | | { name: "LED.yellow", value: 0 },
|
| | | { name: "D01.LED.green", value: 0 },
|
| | | { name: "D06.LED.green", value: 0 },
|
| | | { name: "B01.YV.turn", value: 0 },
|
| | | { name: "B01.YV.up down", value: 0 },
|
| | | { name: "B01.YV.gassing", value: 0 },
|
| | | { name: "B02.YV.turn", value: 0 },
|
| | | { name: "B02.YV.up down", value: 0 },
|
| | | { name: "B02.YV.gassing", value: 0 },
|
| | | { name: "SAFETYDOOR.led", value: 0 },
|
| | | { name: "SAFETYDOOR.open", value: 0 },
|
| | | { 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',
|
| | | // ],
|
| | | 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',
|
| | | ],
|
| | |
|
| | | },
|
| | |
|
| | |
| | | },
|
| | | //根据读取PLC的值,根据名称改变颜色
|
| | | getStatusClass (zhuangtai) {
|
| | | // if (mc === "LED.green" && zhuangtai === 0) {
|
| | | // return "green";
|
| | | // }
|
| | | // if (mc === "LED.red" && zhuangtai === 0) {
|
| | | // return "red";
|
| | | // }
|
| | | // if (mc === "LED.yellow" && zhuangtai === 0) {
|
| | | // return "yellow"
|
| | | // }
|
| | |
|
| | |
|
| | | if (zhuangtai === 0) {
|
| | | return "op";
|
| | | }
|
| | | else {
|
| | | return "dow";
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | | },
|
| | | init () {
|
| | |
| | |
|
| | | //console.log("收到数据====" + msg.data);
|
| | | let obj = JSON.parse(msg.data);
|
| | | //this.$set(this.record.params, 0, obj.params[0]);
|
| | | this.record.params[0] = obj.sig[0];
|
| | | for (let a = 0; a <= this.record.xyData[0] - 1; a++) {
|
| | | 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.$forceUpdate();
|
| | |
| | | }
|
| | | }
|
| | | },
|
| | | send () {
|
| | | this.messagepack.data = { taskname: "前端到后台" };
|
| | | socket?.send(JSON.stringify(this.messagepack)); // 将组装好的json发送给服务端,由服务端进行转发
|
| | | }
|
| | | }
|
| | |
|
| | | }
|
| | |
| | |
|
| | | <div class="kuai_div" v-for="item in this.record.xyData" :key="item.name">
|
| | | <el-input style="width: 280px;" class="in_mc" v-model="item.name"></el-input>
|
| | | <el-input v-model.number="item.value" style="width: 80px;"></el-input>
|
| | | <el-input v-model="item.value" readonly="readonly" style="width: 80px;"></el-input>
|
| | | </div>
|
| | |
|
| | |
|
| | |
| | | return {
|
| | | activeButton: '',
|
| | | record: {
|
| | | params: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0,],
|
| | | params: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1,],
|
| | | xyData: [
|
| | | { name: 'D01.State', value: 0 },
|
| | | { name: 'D02.State', value: 0 },
|
| | | { name: 'B01.State', value: 0 },
|
| | | { name: 'B02.State', value: 0 },
|
| | | { name: 'A01.State', value: 0 },
|
| | | { name: 'A02.State', value: 0 },
|
| | | { name: 'D03.State', value: 0 },
|
| | | { name: 'D04.State', value: 0 },
|
| | | { name: 'D05.State', value: 0 },
|
| | | { name: 'D06.State', value: 0 },
|
| | | { name: 'D01.State', value: "自动" },
|
| | | { name: 'D02.State', value: "自动" },
|
| | | { name: 'B01.State', value: "自动" },
|
| | | { name: 'B02.State', value: "自动" },
|
| | | { name: 'A01.State', value: "自动" },
|
| | | { name: 'A02.State', value: "自动" },
|
| | | { name: 'D03.State', value: "自动" },
|
| | | { name: 'D04.State', value: "自动" },
|
| | | { name: 'D05.State', value: "自动" },
|
| | | { name: 'D06.State', value: "自动" },
|
| | | ],
|
| | | // canshu: [
|
| | | // 'D01.State',
|
| | |
| | | //console.log("收到数据====" + msg.data);
|
| | | let obj = JSON.parse(msg.data);
|
| | | this.record.params[0] = obj.sta[0];
|
| | | console.log(this.record.params[0]);
|
| | | //将读取到的PLC的数据,与定义的xyData,组合成新的数组
|
| | | for (let a = 0; a <= this.record.xyData[0].length - 1; a++) {
|
| | | 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 {
|
| | |
| | | console.log(this.messagepack);
|
| | | socket?.send(JSON.stringify(this.messagepack));
|
| | | },
|
| | | valuezhi (zhi) {
|
| | | if (zhi == 1) {
|
| | | return "自动";
|
| | | }
|
| | | else {
|
| | | return "手动";
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | | }
|
| | |
|
| | |
| | | <el-table-column prop="lengthWidth" label="Length and width"></el-table-column>
|
| | | <el-table-column prop="coating" label="coating"></el-table-column>
|
| | | <el-table-column label="Operate">
|
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" @click="endtask(0)">end
|
| | | task</el-button>
|
| | | <template slot-scope='scope'>
|
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
|
| | | @click="endtask(0, scope.row.glassId, scope.row.cell)">end
|
| | | task</el-button>
|
| | | </template>
|
| | | </el-table-column>
|
| | | </el-table>
|
| | | <el-table :data="this.tasklist2" border style="width: 100%">
|
| | |
| | | <el-table-column prop="lengthWidth" label="Length and width"></el-table-column>
|
| | | <el-table-column prop="coating" label="coating"></el-table-column>
|
| | | <el-table-column label="Operate">
|
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" @click="endtask(1)">end
|
| | | task</el-button>
|
| | | <template slot-scope='scope'>
|
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
|
| | | @click="endtask(1, scope.row.glassId, scope.row.cell)">end
|
| | | task</el-button>
|
| | | </template>
|
| | | </el-table-column>
|
| | | </el-table>
|
| | | </div>
|
| | |
| | | <el-table-column prop="endTime" label="endTime"></el-table-column>
|
| | | </el-table>
|
| | | </el-dialog>
|
| | | <el-dialog :visible.sync="dialogFormVisible3" title="Ordering Information">
|
| | | <el-dialog :visible.sync="dialogFormVisible3" title="Cage Details">
|
| | | <el-table :data="this.cageinfo" border style="width: 100%;height: 700px;overflow: auto;">
|
| | | <el-table-column :width="150" prop="cage" label="the grille number"></el-table-column>
|
| | | <el-table-column prop="cell" label="cell"></el-table-column>
|
| | |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
|
| | | @click="deleteglass(scope.row.glassId, scope.row.state)">delete</el-button>
|
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
|
| | | @click="outglass(scope.row.glassId,scope.row.state)">out</el-button>
|
| | | @click="outglass(scope.row.glassId, scope.row.state)">out</el-button>
|
| | | </template>
|
| | | </el-table-column>
|
| | | </el-table>
|
| | |
| | | url: "../../img/bigcar01.png",
|
| | | car1: 150,
|
| | | car2: 242,
|
| | | incell: "",
|
| | | outcell: "",
|
| | | cageinfo: [],
|
| | | cage: 0
|
| | | };
|
| | |
| | | this.car1 = 150 + 24.6 * obj.params[0][0];
|
| | | this.car2 = 242 + 24.6 * obj.params[0][1];
|
| | | }
|
| | |
|
| | | this.tableData = obj.tableData[0];
|
| | | this.cagelist1 = obj.cagelist1[0];
|
| | | this.cagelist2 = obj.cagelist2[0];
|
| | |
| | | this.cagelist4 = obj.cagelist4[0];
|
| | | this.tasklist1 = obj.tasklist1[0];
|
| | | this.tasklist2 = obj.tasklist2[0];
|
| | | if (this.tasklist1.length > 0) {
|
| | | this.incell = this.tasklist1[0]['cell'];
|
| | | }
|
| | | if (this.tasklist1.length > 0) {
|
| | | this.outcell = this.tasklist2[0]['cell'];
|
| | | }
|
| | | this.alarm = obj.alarmmg[0];
|
| | |
|
| | | SelectCageInfo(this.cage).then(res => {
|
| | |
| | | if (res.data.message2 == 200) {
|
| | | this.$message.success("Operation successful");
|
| | | this.cancal();
|
| | | } else {
|
| | | } else if(res.data.message2 == 500) {
|
| | | this.$message.success("There are currently tasks");
|
| | | }
|
| | | else if(res.data.message2 == 300) {
|
| | | this.$message.success("There is no such grid");
|
| | | }
|
| | | else if(res.data.message2 == 400) {
|
| | | this.$message.success("There is no such grid");
|
| | | }
|
| | | });
|
| | | }
|
| | |
| | | this.dialogFormVisible1 = false;
|
| | | this.form1 = {};
|
| | | },
|
| | | endtask(type) {
|
| | | if (type == 0) {
|
| | | UpdateTask(type, this.incell).then(res => {
|
| | | if (res.data.message3 == 200) {
|
| | | this.$message.success("Operation successful");
|
| | | }
|
| | | });
|
| | | } else {
|
| | | UpdateTask(type, this.outcell).then(res => {
|
| | | if (res.data.message3 == 200) {
|
| | | this.$message.success("Operation successful");
|
| | | }
|
| | | });
|
| | | }
|
| | |
|
| | | endtask(type, glassid, cell) {
|
| | | UpdateTask(type, glassid, cell).then(res => {
|
| | | if (res.data.message3 == 200) {
|
| | | this.$message.success("Operation successful");
|
| | | }
|
| | | });
|
| | | },
|
| | | showcageinfo(cage) {
|
| | | this.cage = cage;
|
| | |
| | | },
|
| | | deleteglass(glassid, state) {
|
| | | if (state == 1) {
|
| | | DeleteByGlassID(glassid).then(res=>{
|
| | | DeleteByGlassID(glassid).then(res => {
|
| | | if (res.data.message3 == 200) {
|
| | | this.$message.success("Operation successful");
|
| | | }
|
| | |
| | | this.$message.success("No out allowed");
|
| | | }
|
| | | },
|
| | | outglass(glassid,state){
|
| | | outglass(glassid, state) {
|
| | | if (state == 1) {
|
| | | OutByGlassID(glassid).then(res=>{
|
| | | OutByGlassID(glassid).then(res => {
|
| | | if (res.data.message3 == 200) {
|
| | | this.$message.success("Operation successful");
|
| | | }
|
| | |
| | | package com.example.springboot.component; |
| | | |
| | | import java.sql.SQLException; |
| | | import java.util.List; |
| | | import com.example.springboot.service.SpianService; |
| | | import com.example.springboot.mapper.AlarmMapper; |
| | | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | |
| | | import com.example.springboot.service.JdbcConnections; |
| | | import com.example.springboot.service.SpianService; |
| | | import com.example.springboot.entity.Glass; |
| | | import com.example.springboot.mapper.AlarmMapper; |
| | | |
| | | public class PlcHold extends Thread { |
| | | |
| | | private AlarmMapper alarmMapper; |
| | | |
| | | @Autowired |
| | | private JdbcConnections jdbcConnections; |
| | | |
| | | private SpianService spianService; |
| | | |
| | | |
| | | @Override |
| | | public void run() { |
| | |
| | | |
| | | Thread.sleep(500); |
| | | } catch (InterruptedException e) { |
| | | // TODO Auto-generated catch block |
| | | //\\ TODO Auto-generated catch block |
| | | e.printStackTrace(); |
| | | } |
| | | spianService = WebSocketServer.applicationContext.getBean(SpianService.class); |
| | | //spianService.selectout("112"); |
| | | |
| | | |
| | | jdbcConnections = WebSocketServer.applicationContext.getBean(JdbcConnections.class); |
| | | try { |
| | | Glass glass=jdbcConnections.selectGlass(112); |
| | | //System.out.println(glass.getOrderId()); |
| | | } catch (SQLException e) { |
| | | // TODO Auto-generated catch block |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | //判断进片请求 |
| | | List<Short> datas1List=S7control.getinstance().ReadWord("DB106.24", 1); |
| | | List<Short> datas1ListState=S7control.getinstance().ReadWord("DB106.8", 1); |
| | |
| | | List<Short> datas1ListID=S7control.getinstance().ReadWord("DB106.26", 13); |
| | | //获取玻璃id |
| | | for(Short list1:datas1ListID){ |
| | | |
| | | spianService.selectAll((short)list1); |
| | | } |
| | | } |
| | |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | import cn.hutool.json.JSONObject; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | |
| | | import com.example.springboot.mapper.AlarmMapper; |
| | |
| | | } |
| | | |
| | | List<Boolean> plclist = S7control.getinstance().ReadBits("DB104.DBx0.0", 40); |
| | | if (plclist == null) { |
| | | |
| | | } else { |
| | | // 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 }; |
| | | // List<Boolean> plclist = new ArrayList<>(Arrays.asList(values)); |
| | | if (plclist != null) { |
| | | |
| | | JSONObject jsonObject = new JSONObject(); |
| | | |
| | |
| | | if (sendwServer != null) { |
| | | sendwServer.sendMessage(jsonObject.toString()); |
| | | } |
| | | // 将读取plc数据的plclist转换为数组 |
| | | Short[] shuzu1 = plclist.toArray(new Short[0]); |
| | | // Short[] shuzu1 = { |
| | | // 0, 1, 0, 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, 0, |
| | | // 1, 0, 1, 0, 1, 0, 1, 0, 1, |
| | | // }; |
| | | |
| | | // 将获取的布尔类型转换为整数类型 |
| | | List<Integer> Intlist = new ArrayList<>(); |
| | | for (Boolean value : plclist) { |
| | | Intlist.add(value == true ? 1 : 0); |
| | | |
| | | } |
| | | // 将Intlist转换为数组 |
| | | Integer[] shuzu1 = Intlist.toArray(new Integer[0]); |
| | | |
| | | String[] shuzu = { |
| | | "D01 VFD error", |
| | |
| | | "B02 OUT pos error", |
| | | }; |
| | | alarmMapper = WebSocketServer.applicationContext.getBean(AlarmMapper.class); |
| | | for (short i = 0; i < shuzu1.length; i++) { |
| | | for (short i = 0; i < shuzu.length; i++) { |
| | | short result = alarmMapper.selectnullti(shuzu[i]); |
| | | if (shuzu1[i] == 1 && result == 0) { |
| | | alarmMapper.Insertalarm(shuzu[i]); |
| | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | |
| | | import com.example.springboot.entity.StorageCage; |
| | | import com.example.springboot.entity.alarmmg; |
| | | import com.example.springboot.mapper.HomeMapper; |
| | |
| | | public void run() { |
| | | while (this != null) { |
| | | try { |
| | | Thread.sleep(5000); |
| | | Thread.sleep(10000); |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | JSONObject jsonObject = new JSONObject(); |
| | | |
| | | //注入mapper |
| | | |
| | | // 注入mapper |
| | | homeMapper = WebSocketServer.applicationContext.getBean(HomeMapper.class); |
| | | // 笼子使用情况 |
| | | List<StorageCage> tableData = homeMapper.selectAll(); |
| | | jsonObject.append("tableData", tableData); |
| | | //格理片笼格子状态 |
| | | // 格理片笼格子状态 |
| | | List<StorageCage> cagelist1 = homeMapper.selectRack1(); |
| | | List<StorageCage> cagelist2 = homeMapper.selectRack2(); |
| | | List<StorageCage> cagelist3 = homeMapper.selectRack3(); |
| | |
| | | jsonObject.append("cagelist2", cagelist2); |
| | | jsonObject.append("cagelist3", cagelist3); |
| | | jsonObject.append("cagelist4", cagelist4); |
| | | //进出片任务 |
| | | List<StorageCage> tasklist1=homeMapper.selectinout(2); |
| | | List<StorageCage> tasklist2=homeMapper.selectinout(3); |
| | | // 进出片任务 |
| | | List<StorageCage> tasklist1 = homeMapper.selectinout(2); |
| | | List<StorageCage> tasklist2 = homeMapper.selectinout(3); |
| | | jsonObject.append("tasklist1", tasklist1); |
| | | jsonObject.append("tasklist2", tasklist2); |
| | | //查询报警信息 |
| | | List<alarmmg> alarmmg=homeMapper.SelectAlarmmgInfo(); |
| | | // 查询报警信息 |
| | | List<alarmmg> alarmmg = homeMapper.SelectAlarmmgInfo(); |
| | | jsonObject.append("alarmmg", alarmmg); |
| | | //读去Plc进片车与出片车位置W |
| | | // 读去Plc进片车与出片车位置W |
| | | List<String> addressList = new ArrayList<String>(); |
| | | addressList.add("DB105.DBW0"); |
| | | addressList.add("DB105.DBW12"); |
| | | addressList.add("DB106.0"); |
| | | addressList.add("DB106.12"); |
| | | List<Short> paramlist = S7control.getinstance().ReadWord(addressList); |
| | | //将集合转为数组 |
| | | |
| | | // List<Short> paramlists = new ArrayList<Short>(); |
| | | // short para1 = 1; |
| | | // short para2 = 2; |
| | | // paramlists.add(para1); |
| | | // paramlists.add(para2); |
| | | // System.out.println(paramlists); |
| | | |
| | | if(paramlist!=null){ |
| | | Short[] paramlists = paramlist.toArray(new Short[0]); |
| | | jsonObject.append("params", paramlists); |
| | | // Short[] paramlists = paramlist.toArray(new Short[0]); |
| | | jsonObject.append("params", paramlist); |
| | | } |
| | | // jsonObject.append("params", new short[] { 30, 40, }); |
| | | WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Home"); |
| | |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Arrays; |
| | | |
| | | public class Plcsign extends Thread { |
| | | @Override |
| | |
| | | } |
| | | |
| | | List<Boolean> plclist = S7control.getinstance().ReadBits("DB102.DBX0.0", 58); |
| | | if (plclist == null) { |
| | | // 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, true, false, |
| | | // true, false, true, false, true, false, |
| | | // true, false, true, false, true, }; |
| | | // List<Boolean> plclist = new ArrayList<>(Arrays.asList(values)); |
| | | if (plclist != null) { |
| | | // 将获取的布尔类型转换为整数类型 |
| | | List<Integer> Intlist = new ArrayList<>(); |
| | | for (Boolean value : plclist) { |
| | | Intlist.add(value == true ? 0 : 1); |
| | | |
| | | } else { |
| | | } |
| | | JSONObject jsonObject = new JSONObject(); |
| | | // jsonObject3.append("sig", |
| | | // new short[] { 0, 0, 0, 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, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, |
| | | // }); |
| | | jsonObject.append("sig", plclist); |
| | | jsonObject.append("sig", Intlist); |
| | | WebSocketServer sendwServer3 = WebSocketServer.sessionMap.get("Sign"); |
| | | if (sendwServer3 != null) { |
| | | sendwServer3.sendMessage(jsonObject.toString()); |
| | |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Arrays; |
| | | |
| | | public class Plcstate extends Thread { |
| | | @Override |
| | |
| | | } |
| | | |
| | | List<Short> plclist = S7control.getinstance().ReadWord("DB103.DBW0", 10); |
| | | if (plclist == null) { |
| | | // Short[] values = { 0, 1, 1, 0, 1, 0, 1, 0, |
| | | // 1, 0, }; |
| | | // List<Short> plclist = new ArrayList<>(Arrays.asList(values)); |
| | | if (plclist != null) { |
| | | |
| | | } else { |
| | | List<String> Intlist = new ArrayList<>(); |
| | | for (Short value : plclist) { |
| | | Intlist.add(value == 1 ? "自动" : "手动"); |
| | | |
| | | } |
| | | JSONObject jsonObject = new JSONObject(); |
| | | // jsonObject.append("sta", |
| | | // new short[] { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, }); |
| | | jsonObject.append("sta", plclist); |
| | | jsonObject.append("sta", Intlist); |
| | | WebSocketServer sendwServer = WebSocketServer.sessionMap.get("State"); |
| | | if (sendwServer != null) { |
| | | sendwServer.sendMessage(jsonObject.toString()); |
| | |
| | | if (taskno > 0) { |
| | | map.put("message2", "500"); |
| | | } else { |
| | | map.put("message2", "200"); |
| | | // 调用伍上片函数 |
| | | spianService.selectAll(glassid); |
| | | short results= spianService.selectAll(glassid); |
| | | if(results==200){ |
| | | map.put("message2", "200"); |
| | | }else if(results==300){ |
| | | map.put("message2", "300"); |
| | | }else if(results==400){ |
| | | map.put("message2", "400"); |
| | | } |
| | | } |
| | | return Result.success(map); |
| | | } |
| | | |
| | | @GetMapping("/UpdateTask") |
| | | public Result UpdateTask(Integer types, Integer shelfrack) { |
| | | public Result UpdateTask(Integer types, Integer shelfrack, Integer glassid) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | homeMapper.UpdateTask(types, shelfrack); |
| | | if (types == 0) { |
| | | homeMapper.UpdateCageTask1(shelfrack); |
| | | homeMapper.UpdateCageTask1(shelfrack,glassid); |
| | | } else { |
| | | homeMapper.UpdateCageTask2(shelfrack); |
| | | homeMapper.UpdateCageTask2(shelfrack,glassid); |
| | | } |
| | | map.put("message3", "200"); |
| | | return Result.success(map); |
| | |
| | | package com.example.springboot.controller; |
| | | |
| | | import com.example.springboot.common.Result; |
| | | import com.example.springboot.component.S7control; |
| | | import com.example.springboot.entity.StorageCage; |
| | | import com.example.springboot.mapper.SpianMapper; |
| | | import com.example.springboot.service.SpianService; |
| | | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.util.List; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | @RestController |
| | | @RequestMapping("/spian") |
| | | |
| | |
| | | List<StorageCage> selectinout(@Param("task_type") Integer task_type); |
| | | |
| | | // 查询是否存在此订单 |
| | | @Select("select count(*) from storage_cage where order_id=#{orderid} and state=0") |
| | | @Select("select count(*) from storage_cage where order_id=#{orderid} and state=1") |
| | | short SelectOrder(@Param("orderid") String orderid); |
| | | |
| | | // @Insert("insert into order_out(orderid) values('#{orderid}')") |
| | | @Insert("INSERT INTO `canadames`.`order_out`( `orderid`,`mod_time`) VALUES ( #{orderid},now())") |
| | | @Insert("INSERT INTO `canadames`.`order_out`( `order_id`,`state`) VALUES ( #{orderid},0)") |
| | | void InsertOrder(String orderid); |
| | | |
| | | // 停止按当前订单出片 |
| | |
| | | void UpdateTask(@Param("task_type") Integer task_type, @Param("shelf_rack") Integer shelf_rack); |
| | | |
| | | // 手动完成进片任务修改笼子数据 |
| | | @Update("update storage_cage set state=1 where cell=#{cell} and state=2") |
| | | void UpdateCageTask1(@Param("cell") Integer cell); |
| | | @Update("update storage_cage set state=1 where cell=#{cell} and glass_id=#{glassid} and state=2") |
| | | void UpdateCageTask1(@Param("cell") Integer cell,@Param("glassid") Integer glassid); |
| | | |
| | | // 手动完成出片任务修改笼子数据 |
| | | @Update("update storage_cage set state=0,glass_id=null,order_id=null,glasswidth=null,glassheight=null,coating=null where cell=#{cell} and state=2") |
| | | void UpdateCageTask2(@Param("cell") Integer cell); |
| | | @Update("update storage_cage set state=0,glass_id=null,order_id=null,glasswidth=null,glassheight=null,coating=null where cell=#{cell} and glass_id=#{glassid} and state=3") |
| | | void UpdateCageTask2(@Param("cell") Integer cell,@Param("glassid") Integer glassid); |
| | | |
| | | //获取报警信息 |
| | | @Select("select id,content,timeon as timeons,endTime from alarmmg where endTime is null") |
| | |
| | | package com.example.springboot.mapper; |
| | | import org.apache.ibatis.annotations.*; |
| | | |
| | | import com.example.springboot.common.Result; |
| | | |
| | | import com.example.springboot.entity.Glass; |
| | | import com.example.springboot.entity.StorageCage; |
| | | import com.example.springboot.entity.StorageTask; |
| | | import com.example.springboot.entity.StorageCage; |
| | | |
| | | |
| | | import java.util.List; |
| | | |
| | |
| | | |
| | | //@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=#{glassid},order_id,null))as orderid from storage_cage where (order_id=#{glassid} or ''='') GROUP BY cage ORDER BY orderid desc; ") |
| | | List<StorageCage> selectAll(Short glassid); |
| | | @Select("select cage,COUNT(if(order_id=#{orderids},order_id,null))as orderid from storage_cage where (order_id=#{orderids} or ''='') GROUP BY cage ORDER BY orderid desc; ") |
| | | List<StorageCage> selectAll(Short orderids); |
| | | |
| | | //判断该笼子是否有合适宽度空格 |
| | | @Select("select cage,cell,tier,id,ROUND(id/2)as prcId from storage_cage where cage=#{cage1} and state=0 and width>=#{width} ORDER BY cell,tier LIMIT 1") |
| | |
| | | @Select("select cage,cell,tier,glasswidth,ROUND(id/2)as prcId,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.order_id=#{orderId} and state=1 order by cage desc,tier desc,cell desc LIMIT 1") |
| | | @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时,是否可直接出片 |
New file |
| | |
| | | package com.example.springboot.service; |
| | | |
| | | import java.sql.Connection; |
| | | import java.sql.DriverManager; |
| | | import java.sql.PreparedStatement; |
| | | import java.sql.ResultSet; |
| | | import java.sql.SQLException; |
| | | |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import com.example.springboot.entity.Glass; |
| | | @Component |
| | | public class JdbcConnections { |
| | | /** |
| | | * 数据库连接参数 |
| | | * driver,url,username,password |
| | | */ |
| | | private static final String DRIVER = "com.mysql.jdbc.Driver"; |
| | | private static final String URL = "jdbc:mysql://localhost:3306/canadames"; |
| | | private static final String USERNAME = "root"; |
| | | private static final String PASSWORD = "beibo.123/"; |
| | | |
| | | private static Connection conn = null; |
| | | private static PreparedStatement ps = null; |
| | | private static ResultSet rs = null; |
| | | |
| | | public Glass selectGlass(int glassid) throws SQLException { |
| | | conn = getConn(); |
| | | Glass glass=new Glass(); |
| | | String sql = "select orderid from glass where glassid=?"; |
| | | ps = conn.prepareStatement(sql); |
| | | ps.setInt(1, glassid); |
| | | rs= ps.executeQuery(); |
| | | while (rs.next()) { |
| | | glass.setOrderId(rs.getShort("orderid")); |
| | | } |
| | | |
| | | return glass; |
| | | } |
| | | /** |
| | | * 1. 加载驱动 |
| | | * 2. 获取连接 conn |
| | | * 3. 创建语句 ps |
| | | * 4. 执行语句 rs |
| | | * 5. 处理结果 |
| | | * 6. 回收资源 |
| | | * |
| | | * 实现CRUD |
| | | * 更新: |
| | | * 1增加 |
| | | * 2删除 |
| | | * 3修改 |
| | | * 查询: |
| | | * 1. 查一个,一个对象 |
| | | * 2. 查一组,做成一个对象列表,查全部 |
| | | */ |
| | | public static Connection getConn() throws SQLException { |
| | | Connection conn = null; |
| | | conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/canadames?serverTimezone=GMT%2B8&characterEncoding=utf-8", "root", "beibo.123/"); |
| | | return conn; |
| | | } |
| | | |
| | | static { |
| | | try { |
| | | Class.forName(DRIVER); |
| | | } catch (ClassNotFoundException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | |
| | | import com.example.springboot.common.Result; |
| | | import com.example.springboot.component.S7control; |
| | |
| | | public class SpianService { |
| | | @Autowired |
| | | private SpianMapper spianMapper; |
| | | @GetMapping("/all2") |
| | | public Result selectout(String orderid){ |
| | | //定义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); |
| | | int cage =cageout.getCage(); //储存出片位置,笼子格子几号玻璃 |
| | | int cell =cageout.getCell();//出片格号 |
| | | int tier =cageout.getTier();//出片内外片 |
| | | int prcid=cageout.getPrcId();//prcid |
| | | int prcid2; |
| | | int ids; |
| | | double glasswidth=cageout.getGlassWidth(); |
| | | //判断玻璃内外片 |
| | | if(tier==2){ |
| | | //判断玻璃可直接出片时 |
| | | //修改数据库笼子表(出片) |
| | | spianMapper.UpdataGlassCage("","",glasswidth, cage, cell, tier, 0); |
| | | |
| | | datas.add((short)prcid); |
| | | datas.add((short)1000); |
| | | datas.add((short)1); |
| | | datas.add((short)1); |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | return Result.success(datas); |
| | | } |
| | | else{ |
| | | //获取格子的玻璃数量 |
| | | int state= spianMapper.selectGlassState(cage,cell); |
| | | //判断内片是否需要调拨 |
| | | if(state==0){ |
| | | return Result.success("状态为0,直接出片"); |
| | | }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 |
| | | //更换玻璃的笼子 |
| | | spianMapper.UpdateDBCage(ids, cage, cell);//将原格子数据更新到新格子里 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);//清除原格子数据 |
| | | //填入调拨数据 |
| | | datas.add((short)prcid);//调拨外片起始位置 |
| | | datas.add((short)prcid2); |
| | | datas.add((short)2); |
| | | datas.add((short)1); |
| | | //传输mes数据,坐标,数据 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | datas.clear(); // 清空整个列表 |
| | | //判断调拨结束后再次出片,填入出片数据 |
| | | datas.add((short)prcid); |
| | | datas.add((short)1000); |
| | | datas.add((short)1); |
| | | datas.add((short)1); |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | //修改数据库笼子表(出片) |
| | | |
| | | 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 |
| | | //填入调拨数据 |
| | | datas.add((short)prcid); |
| | | datas.add((short)prcid2); |
| | | datas.add((short)2); |
| | | datas.add((short)1); |
| | | //转移原调拨格子数据 |
| | | spianMapper.UpdateDBCage(ids, cage, cell);//将原格子数据更新到新格子里 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);//清除原格子数据 |
| | | //传输mes数据,坐标,数据 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | datas.clear(); // 清空整个列表 |
| | | //判断调拨结束后再次出片 |
| | | //填入出片数据 |
| | | datas.add((short)prcid); |
| | | datas.add((short)1000); |
| | | datas.add((short)1); |
| | | datas.add((short)1); |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | return Result.success(cagecell); //调拨位置的参数内容 |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | @GetMapping("/all") |
| | | //进片任务,传订单id |
| | | //按订单优先进片 |
| | | public Result selectAll(Short glassid){ |
| | | //return spianMapper.selectAll(); |
| | | // @GetMapping("/all2") |
| | | public Result selectout(String orderid) { |
| | | // 定义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); |
| | | int cage = cageout.getCage(); // 储存出片位置,笼子格子几号玻璃 |
| | | int cell = cageout.getCell();// 出片格号 |
| | | int tier = cageout.getTier();// 出片内外片 |
| | | int prcid = cageout.getPrcId();// prcid |
| | | int prcid2; |
| | | int ids; |
| | | double glasswidth = cageout.getGlassWidth(); |
| | | // 判断玻璃内外片 |
| | | if (tier == 2) { |
| | | // 判断玻璃可直接出片时 |
| | | // 修改数据库笼子表(出片) |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0); |
| | | |
| | | datas.add((short) prcid); |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | 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); |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | return Result.success("状态为0,直接出片"); |
| | | } 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 |
| | | // 更换玻璃的笼子 |
| | | spianMapper.UpdateDBCage(ids, cage, cell);// 将原格子数据更新到新格子里 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 清除原格子数据 |
| | | // 填入调拨数据 |
| | | datas.add((short) prcid);// 调拨外片起始位置 |
| | | datas.add((short) prcid2); |
| | | datas.add((short) 2); |
| | | datas.add((short) 1); |
| | | // 传输mes数据,坐标,数据 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | datas.clear(); // 清空整个列表 |
| | | // 判断调拨结束后再次出片,填入出片数据 |
| | | datas.add((short) prcid); |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | // 修改数据库笼子表(出片) |
| | | |
| | | 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 |
| | | // 填入调拨数据 |
| | | datas.add((short) prcid); |
| | | datas.add((short) prcid2); |
| | | datas.add((short) 2); |
| | | datas.add((short) 1); |
| | | // 转移原调拨格子数据 |
| | | spianMapper.UpdateDBCage(ids, cage, cell);// 将原格子数据更新到新格子里 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 清除原格子数据 |
| | | // 传输mes数据,坐标,数据 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | datas.clear(); // 清空整个列表 |
| | | // 判断调拨结束后再次出片 |
| | | // 填入出片数据 |
| | | datas.add((short) prcid); |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | return Result.success(cagecell); // 调拨位置的参数内容 |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | // @GetMapping("/all") |
| | | // 进片任务,传订单id |
| | | // 按订单优先进片 |
| | | public Short selectAll(Short glassid) { |
| | | |
| | | int cage1; |
| | | int cells; |
| | | int ids; |
| | |
| | | int tiers; |
| | | int prctier; |
| | | |
| | | Glass glasslist=spianMapper.selectGlass(glassid); |
| | | double widths=glasslist.getWidth(); |
| | | Short orderids=glasslist.getOrderId(); |
| | | Glass glasslist = spianMapper.selectGlass(glassid); |
| | | if (glasslist == null) { |
| | | return (300); |
| | | } |
| | | double widths = glasslist.getWidth(); |
| | | Short orderids = glasslist.getOrderId(); |
| | | |
| | | 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<>(); |
| | | 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<>(); |
| | | |
| | | //String orderid="A001"; |
| | | //获取订单相关度最高的笼子排序 |
| | | List<StorageCage> storageCage=spianMapper.selectAll(glassid); |
| | | if(storageCage==null){ |
| | | return Result.success(storageCage); |
| | | } |
| | | // String orderid="A001"; |
| | | // 获取订单相关度最高的笼子排序 |
| | | 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=spianMapper.selectCage1(cage1,widths); |
| | | ids=cages1.getId();//数据库ID |
| | | tiers=cages1.getTier();//内外片 |
| | | cells=cages1.getCell();//格子号 |
| | | prcid=cages1.getPrcId();//传给prc的目标地id |
| | | prctier=spianMapper.selectsum(cage1, cells);//传给prc的格子内玻璃数 |
| | | //有合适空格时进片 |
| | | if(cages>1 &&cages1.getTier()!=null){ |
| | | //执行进片 |
| | | datas.add((short)1000); |
| | | datas.add((short)prcid); |
| | | datas.add((short)prctier); |
| | | datas.add((short)1); |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | //数据库修改笼子表新增一条玻璃 |
| | | |
| | | spianMapper.UpdataAddCage(orderids, glassid, widths, cage1, cells, ids, 1); |
| | | return Result.success(cages1); |
| | | // 保存订单优先顺序笼子号 |
| | | cage1 = storageCage2.getCage(); |
| | | // 判断该笼子号相邻最大的空格数 |
| | | int cages = spianMapper.selectCage(cage1); |
| | | // 判断选中笼子是否有合适宽度空格 |
| | | StorageCage cages1 = spianMapper.selectCage1(cage1, widths); |
| | | if (cages1 != null) { |
| | | ids = cages1.getId();// 数据库ID |
| | | tiers = cages1.getTier();// 内外片 |
| | | cells = cages1.getCell();// 格子号 |
| | | prcid = cages1.getPrcId();// 传给prc的目标地id |
| | | prctier = spianMapper.selectsum(cage1, cells);// 传给prc的格子内玻璃数 |
| | | // 有合适空格时进片 |
| | | if (cages > 1 && cages1.getTier() != null) { |
| | | // 执行进片 |
| | | datas.add((short) 1000); |
| | | datas.add((short) prcid); |
| | | datas.add((short) prctier); |
| | | datas.add((short) 1); |
| | | // 数据库修改笼子表新增一条玻璃 |
| | | spianMapper.UpdataAddCage(orderids, glassid, widths, cage1, cells, ids, 1); |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | |
| | | return (200); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | return Result.success("不可进片"); |
| | | |
| | | |
| | | } |
| | | return (300); |
| | | |
| | | } |
| | | |
| | | @GetMapping("/all2") |
| | | public Result selectout2(String glassid){ |
| | | //定义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.selectOut2(glassid); |
| | | int cage =cageout.getCage(); //储存出片位置,笼子格子几号玻璃 |
| | | int cell =cageout.getCell();//出片格号 |
| | | int tier =cageout.getTier();//出片内外片 |
| | | int prcid=cageout.getPrcId();//prcid |
| | | int prcid2; |
| | | int ids; |
| | | double glasswidth=cageout.getGlassWidth(); |
| | | //判断玻璃内外片 |
| | | if(tier==2){ |
| | | //判断玻璃可直接出片时 |
| | | //修改数据库笼子表(出片) |
| | | spianMapper.UpdataGlassCage("","",glasswidth, cage, cell, tier, 0); |
| | | |
| | | datas.add((short)prcid); |
| | | datas.add((short)1000); |
| | | datas.add((short)1); |
| | | datas.add((short)1); |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | return Result.success(datas); |
| | | } |
| | | else{ |
| | | //获取格子的玻璃数量 |
| | | int state= spianMapper.selectGlassState(cage,cell); |
| | | //判断内片是否需要调拨 |
| | | if(state==0){ |
| | | return Result.success("状态为0,直接出片"); |
| | | }else{ |
| | | //玻璃需要调拨时,判断属于哪个半区的笼子 |
| | | if(cage<6){ |
| | | StorageCage cagecell= spianMapper.selectGlassCage(cage,glasswidth,0,6); |
| | | if(cagecell==null){ |
| | | return Result.success(cagecell); |
| | | // @GetMapping("/all2") |
| | | public Result selectout2(String glassid) { |
| | | // 定义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.selectOut2(glassid); |
| | | int cage = cageout.getCage(); // 储存出片位置,笼子格子几号玻璃 |
| | | int cell = cageout.getCell();// 出片格号 |
| | | int tier = cageout.getTier();// 出片内外片 |
| | | int prcid = cageout.getPrcId();// prcid |
| | | int prcid2; |
| | | int ids; |
| | | double glasswidth = cageout.getGlassWidth(); |
| | | // 判断玻璃内外片 |
| | | if (tier == 2) { |
| | | // 判断玻璃可直接出片时 |
| | | // 修改数据库笼子表(出片) |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0); |
| | | |
| | | datas.add((short) prcid); |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | return Result.success(datas); |
| | | } else { |
| | | // 获取格子的玻璃数量 |
| | | int state = spianMapper.selectGlassState(cage, cell); |
| | | // 判断内片是否需要调拨 |
| | | if (state == 0) { |
| | | return Result.success("状态为0,直接出片"); |
| | | } 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 |
| | | // 更换玻璃的笼子 |
| | | spianMapper.UpdateDBCage(ids, cage, cell);// 将原格子数据更新到新格子里 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 清除原格子数据 |
| | | // 填入调拨数据 |
| | | datas.add((short) prcid);// 调拨外片起始位置 |
| | | datas.add((short) prcid2); |
| | | datas.add((short) 2); |
| | | datas.add((short) 1); |
| | | // 传输mes数据,坐标,数据 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | datas.clear(); // 清空整个列表 |
| | | // 判断调拨结束后再次出片,填入出片数据 |
| | | datas.add((short) prcid); |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | // 修改数据库笼子表(出片) |
| | | |
| | | 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 |
| | | // 填入调拨数据 |
| | | datas.add((short) prcid); |
| | | datas.add((short) prcid2); |
| | | datas.add((short) 2); |
| | | datas.add((short) 1); |
| | | // 转移原调拨格子数据 |
| | | spianMapper.UpdateDBCage(ids, cage, cell);// 将原格子数据更新到新格子里 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 清除原格子数据 |
| | | // 传输mes数据,坐标,数据 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | datas.clear(); // 清空整个列表 |
| | | // 判断调拨结束后再次出片 |
| | | // 填入出片数据 |
| | | datas.add((short) prcid); |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | return Result.success(cagecell); // 调拨位置的参数内容 |
| | | |
| | | } |
| | | //获取调拨位置进行调拨 |
| | | prcid2=cagecell.getPrcId();//调拨目标位PRCID |
| | | ids=cagecell.getId();//调拨目标位ID |
| | | //更换玻璃的笼子 |
| | | spianMapper.UpdateDBCage(ids, cage, cell);//将原格子数据更新到新格子里 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);//清除原格子数据 |
| | | //填入调拨数据 |
| | | datas.add((short)prcid);//调拨外片起始位置 |
| | | datas.add((short)prcid2); |
| | | datas.add((short)2); |
| | | datas.add((short)1); |
| | | //传输mes数据,坐标,数据 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | datas.clear(); // 清空整个列表 |
| | | //判断调拨结束后再次出片,填入出片数据 |
| | | datas.add((short)prcid); |
| | | datas.add((short)1000); |
| | | datas.add((short)1); |
| | | datas.add((short)1); |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | //修改数据库笼子表(出片) |
| | | |
| | | 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 |
| | | //填入调拨数据 |
| | | datas.add((short)prcid); |
| | | datas.add((short)prcid2); |
| | | datas.add((short)2); |
| | | datas.add((short)1); |
| | | //转移原调拨格子数据 |
| | | spianMapper.UpdateDBCage(ids, cage, cell);//将原格子数据更新到新格子里 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);//清除原格子数据 |
| | | //传输mes数据,坐标,数据 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | datas.clear(); // 清空整个列表 |
| | | //判断调拨结束后再次出片 |
| | | //填入出片数据 |
| | | datas.add((short)prcid); |
| | | datas.add((short)1000); |
| | | datas.add((short)1); |
| | | datas.add((short)1); |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | return Result.success(cagecell); //调拨位置的参数内容 |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | /*** 修改用户* @throws SQLException */ |
| | | // public static int updateUser(Glass user) throws SQLException {conn = |
| | | // getConn(); |
| | | // String sql = "update t_user set name=?,gender=?,age=?,score=?"+ " where |
| | | // id=?";ps = conn.prepareStatement(sql); |
| | | // ps.setString(1, user.getName());ps.setString(2, user.getGender()); |
| | | // ps.setInt(3, user.getAge());ps.setDouble(4, user.getScore());ps.setInt(5, |
| | | // user.getId());return ps.executeUpdate();} |
| | | // /*** 增加用户* @throws SQLException */ |
| | | // public static int insertUser(User user) throws SQLException { |
| | | // conn = getConn(); |
| | | // String sql = "insert into t_user(name,gender,age,score)"+ " values(?,?,?,?)"; |
| | | // ps = conn.prepareStatement(sql);ps.setString(1, |
| | | // user.getName());ps.setString(2, user.getGender()); |
| | | // ps.setInt(3, user.getAge());ps.setDouble(4, user.getScore());return |
| | | // ps.executeUpdate(); |
| | | // } |
| | | |
| | | } |