ZengTao
2024-01-05 03920f72fe2051349ba5c8872d243388765d3408
添加出片队列铝框暂停出片功能
15个文件已修改
297 ■■■■■ 已修改文件
CanadaMes-ui/src/api/home.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/lang/locales/en-US.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/lang/locales/zh-CN.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/layout/index.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/home/index.vue 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/entity/Out_slice.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/North_Glass_Buffer1Service.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/api/home.js
@@ -238,3 +238,10 @@
    })
}
export function FrameStateUpdate(frameno,framestate) {
    return request({
        url: '/home/FrameStateUpdate?frameno=' + frameno+'&framestate='+framestate,
        method: 'post',
        data:""
    })
}
CanadaMes-ui/src/lang/locales/en-US.json
@@ -341,6 +341,9 @@
  "EXTERIQR OUT AND BYPASS TO THE RIGHT":"EXTERIQR OUT AND BYPASS TO THE RIGHT",
  "Complete Task":"Complete Task",
  "Outed":"Outed",
  "Queue State":"Queue State",
  "Sorting State":"Sorting State",
  "Confirm State":"Confirm State",
    "ServoManualone": {
      "A01 所在格子": "A01 Current Grid",
      "数量": "Quantity",
CanadaMes-ui/src/lang/locales/zh-CN.json
@@ -330,6 +330,9 @@
  "EXTERIQR OUT AND BYPASS TO THE RIGHT":"EXTERIQR OUT AND BYPASS TO THE RIGHT",
  "Complete Task":"完成任务",
  "Outed":"已出笼",
  "Queue State":"队列状态",
  "Sorting State":"排序状态",
  "Confirm State":"确认状态",
  "langparameter": {
    "conveyor Velocity(Auto FAST)": "D01-D06 皮带输送自动快速",
    "conveyor Velocity(Auto SLOW)": "D01-D06 皮带输送自动慢速",
CanadaMes-ui/src/layout/index.vue
@@ -103,19 +103,19 @@
      </el-table>
    </el-dialog>
    <el-dialog :visible.sync="dialogFormCountDown" :title="$t('Approximately resettable time')" top="5vh">
            <div :style="'font-size: ' + PromptSize + 'px;text-align: center;'">
                <!-- {{ this.CountDowns }} -->
                {{ this.CountDowns }}
            </div>
        </el-dialog>
    <el-dialog :visible.sync="dialogFormVisible3">
      <div :style="'font-size: ' + PromptSize + 'px;text-align: center;'">
        <!-- {{ this.CountDowns }} -->
        {{ this.CountDowns }}
      </div>
    </el-dialog>
    <!-- <el-dialog :visible.sync="dialogFormVisible3">
      <el-button :class="{ 'blue-button': receivedData === 1 }" @click="toggleButtonValue(1)">{{
        $t('A01Abort/ResumeTasks') }}</el-button>
      <el-button :class="{ 'blue-button': receivedData2 === 1 }" @click="toggleButtonValue(2)">{{
        $t('A02Abort/ResumeTasks') }}</el-button>
    </el-dialog>
    </el-dialog> -->
  </el-container>
</template>
@@ -161,7 +161,7 @@
      CountDowns: "0",
      EmergencyStop: false,
      PromptSize: 250,
      dialogFormCountDown:false
      dialogFormCountDown: false
    }
  },
@@ -274,7 +274,6 @@
            }
            //复位倒计时
            console.log(obj.countdown);
            if (obj.countdown != null) {
              if ((obj.countdown[0] == true && this.CountDowns == 0) || this.EmergencyStop == true) {
                this.CountDown();
@@ -292,13 +291,12 @@
          if (obj.Abort) {
            if (obj.Abort[0].length > 0) {
              this.receivedData = obj.Abort[0][0];
              this.receivedData2 = obj.Abort[0][1];
              this.dialogFormVisible3 = true;
              // this.dialogFormVisible3 = true;
            }
          }
          this.$forceUpdate();
@@ -328,7 +326,6 @@
              this.PromptSize = 500;
              this.CountDowns = count;
              count--;
              this.dialogFormCountDown = true;
            }
            else {
              this.PromptSize = 200;
@@ -339,10 +336,13 @@
              }
            }
          }
        },
        1000
      );
      if (this.reset == false) {
        this.dialogFormCountDown = true;
      }
    },
    logout: function () {
      removeToken()
CanadaMes-ui/src/views/home/index.vue
@@ -245,13 +245,13 @@
            </div>
            <div>
                <el-table :data="this.tasklist1" border style="width: 100%">
                    <el-table-column :width="180" prop="glassId" :label="$t('Outfeed glass barcode')"></el-table-column>
                    <el-table-column :width="130" prop="cage" :label="$t('Cage No')"></el-table-column>
                    <el-table-column :width="130" prop="cell" :label="$t('Slot No')"></el-table-column>
                    <el-table-column :width="130" prop="orderId" :label="$t('Order No')"></el-table-column>
                    <el-table-column :min-width="180" prop="glassId" :label="$t('Outfeed glass barcode')"></el-table-column>
                    <el-table-column :min-width="130" prop="cage" :label="$t('Cage No')"></el-table-column>
                    <el-table-column :min-width="130" prop="cell" :label="$t('Slot No')"></el-table-column>
                    <el-table-column :min-width="130" prop="orderId" :label="$t('Order No')"></el-table-column>
                    <el-table-column prop="orderId" :label="$t('List No')"></el-table-column>
                    <el-table-column prop="orderId" :label="$t('Box No')"></el-table-column>
                    <el-table-column :width="130" prop="lengthWidth" :label="$t('Dim')">
                    <el-table-column :min-width="150" prop="lengthWidth" :label="$t('Dim')">
                        <template slot-scope='scope'>
                            {{ scope.row.glasswidthmm }}*{{ scope.row.glassheightmm }}
                        </template>
@@ -265,13 +265,13 @@
                    </el-table-column>
                </el-table>
                <el-table :data="this.tasklist2" border style="width: 100%">
                    <el-table-column :width="180" prop="glassId" :label="$t('Infeed glass barcode')"></el-table-column>
                    <el-table-column :width="130" prop="cage" :label="$t('Cage No')"></el-table-column>
                    <el-table-column :width="130" prop="cell" :label="$t('Slot No')"></el-table-column>
                    <el-table-column :width="130" prop="orderId" :label="$t('Order No')"></el-table-column>
                    <el-table-column :min-width="180" prop="glassId" :label="$t('Infeed glass barcode')"></el-table-column>
                    <el-table-column :min-width="130" prop="cage" :label="$t('Cage No')"></el-table-column>
                    <el-table-column :min-width="130" prop="cell" :label="$t('Slot No')"></el-table-column>
                    <el-table-column :min-width="130" prop="orderId" :label="$t('Order No')"></el-table-column>
                    <el-table-column prop="orderId" :label="$t('List No')"></el-table-column>
                    <el-table-column prop="orderId" :label="$t('Box No')"></el-table-column>
                    <el-table-column :width="130" prop="lengthWidth" :label="$t('Dim')">
                    <el-table-column :min-width="150" prop="lengthWidth" :label="$t('Dim')">
                        <template slot-scope='scope'>
                            {{ scope.row.glasswidthmm }}*{{ scope.row.glassheightmm }}
                        </template>
@@ -444,10 +444,10 @@
                <el-table-column :min-width="50" prop="cell" :label="$t('Slot No')"></el-table-column>
                <el-table-column :min-width="55" prop="tier" :label="$t('The Side')"></el-table-column>
                <el-table-column :min-width="145" prop="glassId" :label="$t('Barcode')"></el-table-column>
                <el-table-column :min-width="100" prop="orderId" :label="$t('Order No')"></el-table-column>
                <el-table-column :min-width="80" prop="orderId" :label="$t('Order No')"></el-table-column>
                <el-table-column :min-width="80" prop="listId" :label="$t('List No')"></el-table-column>
                <el-table-column :min-width="100" prop="boxId" :label="$t('Box No')"></el-table-column>
                <el-table-column :min-width="90" prop="state" :label="$t('Glass State')">
                <el-table-column :min-width="50" prop="boxId" :label="$t('Box No')"></el-table-column>
                <el-table-column :min-width="80" prop="state" :label="$t('Glass State')">
                    <template slot-scope='scope'>
                        {{
                            scope.row.state == 1 ? $t('Normal') : scope.row.state == 2 ? $t('Entering') : scope.row.state == 3 ?
@@ -460,6 +460,12 @@
                        {{ scope.row.glassWidthMm }}{{ scope.row.glassWidthMm > 0 ? "*" : "" }}{{ scope.row.glassHeightMm }}
                    </template>
                </el-table-column>
                <el-table-column :min-width="80" prop="lengthWidth" :label="$t('State')">
                    <template slot-scope='scope'>
                        {{ scope.row.disabled == 0 ? $t('Enable') : $t('Disable') }}
                    </template>
                </el-table-column>
                <el-table-column :min-width="250" :label="$t('Operate')">
                    <template slot-scope='scope'>
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
@@ -470,7 +476,7 @@
                            @click="outglass(scope.row.glassId, scope.row.state)">{{ $t('Out') }}</el-button>
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                            @click="UpdateDisabled(scope.row.cage, scope.row.cell, scope.row.disabled == 0 ? 1 : 0)">
                            {{ scope.row.disabled == 0 ? $t('Enable') : $t('Disable') }}</el-button>
                            {{ scope.row.disabled == 0 ? $t('Disable') : $t('Enable') }}</el-button>
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                            :disabled="scope.row.glassId != null ? true : false"
                            @click="insertglass(scope.row.cage, scope.row.cell, scope.row.tier)">{{ $t('Add')
@@ -510,8 +516,11 @@
            <el-form :model="form" label-width="100px" style="padding-right: 30px">
                <div style="display: flex;justify-content: space-around;">
                    <label for="">{{ $t('Upper film position') }}</label>
                    <div>
                        {{ $t('Confirm State') }}:{{ this.isConfirm == true ? $t('Not Allow') : $t('Allow') }}
                    <el-button type="primary" @click="isConfirmState()">
                        {{ this.isConfirm == true ? "Allow" : "Not Allow" }}</el-button>
                        {{ this.isConfirm == true ? $t('Allow') : $t('Not Allow') }}</el-button>
                    </div>
                    <label for="">{{ $t('Scan Code Point') }}</label>
                </div>
                <div style="display: flex;justify-content: space-around;height: 40px;">
@@ -637,18 +646,31 @@
        </el-dialog>
        <el-dialog :visible.sync="dialogFormVisible6" :title="$t('Outing Queue')" top="5vh">
            <el-button type="primary" @click="isAllowQueueState()" :disabled="!this.isAllowReordering">{{ this.isAllowQueue
            {{  $t('Queue State') }}:
            {{ this.isAllowQueue
                == true ? $t('Start') : $t('Stop')
            }}
            <el-button type="primary" @click="isAllowQueueState()" :disabled="!this.isAllowReordering">{{ this.isAllowQueue
                == true ? $t('Stop') : $t('Start')
            }}</el-button>
            <el-button type="primary" @click="isAllowReorderings()" :disabled="this.isAllowQueue">{{
            {{  $t('Sorting State') }}:
            {{
                this.isAllowReordering == true ? $t('Not Allow') : $t('Allow')
            }}
            <el-button type="primary" @click="isAllowReorderings()" :disabled="this.isAllowQueue">{{
                this.isAllowReordering == true ? $t('Allow') : $t('Not Allow')
            }}</el-button>
            <el-input style="width:15%;" :placeholder="$t('Enter the Frame No')" v-model="framebarcode"></el-input>
            <el-button type="primary" @click="AddOutSliceS()">{{ $t('Add') }}</el-button>
            <label style="background-color:yellow;font-size: 23px;" for="">{{ isQueueWarning== true ? $t('The cage is disabled') : "" }}</label>
            <!-- <span style="background-color:yellow;">
                {{ isQueueWarning== true ? $t('The cage is disabled') : $t('The cage is disabled') }}
            </span> -->
            <el-table :data="this.OutSlice" :height="700" :span-method="objectSpanMethod" border :cell-style="cellStyle"
                style="width: 100%;overflow: auto;font-size: 18px;">
                <el-table-column :min-width="175" prop="glassId" :label="$t('Barcode')"></el-table-column>
                <el-table-column :min-width="100" prop="orderId" :label="$t('Order No')"></el-table-column>
                <el-table-column :min-width="70" prop="orderId" :label="$t('Order No')"></el-table-column>
                <el-table-column :min-width="70" prop="listId" :label="$t('List No')"></el-table-column>
                <el-table-column :min-width="70" prop="boxId" :label="$t('Box No')"></el-table-column>
                <el-table-column :min-width="100" prop="glasswidthmm" :label="$t('Length')"></el-table-column>
@@ -670,12 +692,10 @@
                </el-table-column>
                <el-table-column :min-width="300" prop="position" :label="$t('Position')" style="font-size: 20px;">
                    <template slot-scope='scope'>
                        <!-- {{ scope.row.position == 1 ? "<>▄▄▄" : "▋" }} -->
                        <div
                            :style="'width:' + (scope.row.position == 1 ? '300' : '100') + 'px;height:' + (scope.row.position == 1 ? '100' : '200') + 'px;background-Color:gray;margin:0 auto;'">
                            <!-- <div :style="'width:100px;height:300px;background-Color:red;'"></div> -->
                        </div>
                        <!-- {{ scope.row.position == 1 ? "<div></div>" : "<div></div>" }} -->
                    </template>
                </el-table-column>
                <el-table-column prop="position" :label="$t('Flipped')" :min-width="200">
@@ -685,9 +705,7 @@
                    </template>
                </el-table-column>
                <el-table-column prop="barcode" :label="$t('Frame No')"></el-table-column>
                <el-table-column :width="200" :label="$t('Operate')">
                <el-table-column :width="240" :label="$t('Operate')">
                    <template slot-scope='scope'>
                        <el-button type="text" size="small" @click="getTopMove(scope.row, scope.$index)"
                            style="font-size: 15px;"
@@ -706,6 +724,10 @@
                        </el-button>
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" :disabled="isAllowQueue"
                            @click="deleteproductionqueueglass(scope.row.barcode)">{{ $t('Delete') }}</el-button>
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" :disabled="isAllowQueue"
                            @click="FrameStateUpdate(scope.row.barcode,scope.row.framestate)">{{
                            scope.row.framestate == 0 ? $t('Stop') : $t('Start') }}</el-button>
                    </template>
                </el-table-column>
            </el-table>
@@ -762,7 +784,7 @@
    home, home2, InsertOrder, Addglassid, UpdateTask, SelectAlarmmgInfo, SelectCageInfo, DeleteByGlassID, OutByGlassID, Loadcarlist,
    SelectPassword, SelectGlassByGlassID, Disabled, Inglassid, SelectGlass, InsertQueueGlassId, UpdateQueueState, DeleteQueueGlass, SelectGlassNo,
    SelectAluminumFrameInfoById, DeleteProductionQueueGlass, AddOutSliceS, isAllowQueues, isConfirmStates, SelectPermissionByUserName, currentUsername, CompleteQueue,
    isAllowReorderings
    isAllowReorderings, FrameStateUpdate
} from "../../api/home";
@@ -852,7 +874,8 @@
            D01RequestState: false,
            EmergencyStop: false,
            PromptSize: 250,
            reset: false
            reset: false,
            isQueueWarning: false
        };
    },
    created() {
@@ -933,6 +956,8 @@
                    //是否允许出片
                    this.isAllowQueue = obj.isAllowQueue[0];
                    //当前出片格子是否被禁用
                    this.isQueueWarning = obj.isQueueWarning[0];
                    //是否允许出片队列调序
                    this.isAllowReordering = obj.isAllowReordering[0];
                    //出片队列
@@ -1796,6 +1821,18 @@
                1000
            );
        },
        FrameStateUpdate(frameno,framestate){
            if(framestate == 1){
                framestate=0;
            }else{
                framestate=1;
            }
            FrameStateUpdate(frameno,framestate).then(res=>{
                if(res.data.message == 200){
                    this.$message.success("Operation successful");
                }
            });
        }
    }
}
springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
@@ -58,8 +58,9 @@
        // 判断当前是否有未执行的任务
        int outnum = spianMapper.SelectOutSliceshu();
        int cageoutsum=spianMapper.Selectcageout(3);
        // 当没有任务执行并且出片车空闲时
        if (outnum == 0 && outstate == true && Plchome.isAllowQueue == true) {
        if (outnum == 0 && outstate == true && Plchome.isAllowQueue == true&&cageoutsum==0) {
          // 判断铝框出片队列表是否有待出片的玻璃
          String outglassid = spianMapper.SelectOutSlice();
          if (outglassid != null) {
springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java
@@ -28,7 +28,7 @@
    FileInputStream fileInputStream;
    try {
      // 从文件中读取字节数据存入 fileInputStream
      fileInputStream = new FileInputStream("D:/canadames/Alarm.json");
      fileInputStream = new FileInputStream("D:/code/canadames/Alarm.json");
      // 读取 fileInputStream 中字节并将其解码为字符
      InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
      // 提高读取效率,在 BufferedReader 内包装 InputStreamReader
springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
@@ -31,6 +31,8 @@
    // 出片队列是否允许出片
    public static Boolean isAllowQueue = true;
    public static Boolean isAllowReordering = true;
    //出片队列警告
    public static Boolean isQueueWarning=false;
    // 铝框id
    public static String FrameNo = "";
    // 是否需要手动确认玻璃
@@ -104,20 +106,22 @@
            jsonObject.append("listoutslice", listoutslice);
            // 获取当前出片队列出片状态
            jsonObject.append("isAllowQueue", Plchome.isAllowQueue);
            //获取出片队列警告状态
            jsonObject.append("isQueueWarning", Plchome.isQueueWarning);
            // 获取当前出片队列调序状态
            jsonObject.append("isAllowReordering", Plchome.isAllowReordering);
            // 是否需要人工确认上片玻璃
            jsonObject.append("isConfirm", isConfirm);
            String framenos="X21763329601FB";
                if (!framenos.equals(Plchome.FrameNo)) {
                    Plchome.FrameNo = framenos;
                    try {
                        north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo);
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            // String framenos="X21763329601FB";
            //     if (!framenos.equals(Plchome.FrameNo)) {
            //         Plchome.FrameNo = framenos;
            //         try {
            //             north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo);
            //         } catch (SQLException e) {
            //             // TODO Auto-generated catch block
            //             e.printStackTrace();
            //         }
            //     }
            if (S7control.getinstance().CheckConnected() == true) {
                // 读去Plc进片车与出片车位置W
                List<String> addressList = new ArrayList<String>();
@@ -147,7 +151,7 @@
                // 获取铝框idDB106.DBW64,添加到出片队列
                String frameno = spianService.queGlassid("DB103.270", 14).toString();
                // String frameno="X12345611002GV";
                frameno="X21763329601FB";
                // frameno="X21763329601FB";
                if (!frameno.equals(Plchome.FrameNo)) {
                    Plchome.FrameNo = frameno;
                    try {
@@ -180,36 +184,38 @@
                // 是否急停
                List<Boolean> emergencystops = S7control.getinstance().ReadBits("DB104.5.1", 1);
                for (Boolean emergencystop : emergencystops) {
                    jsonObject.append("emergencystop", emergencystop);
                    jsonObject.
                    append("emergencystop", emergencystop);
                }
                // 终止继续按钮
                List<String> niuanaddressList3 = Arrays.asList(config.getProperty("Parameter2.stop").split(","));
                List<Boolean> anniuread = S7control.getinstance().readBits(niuanaddressList3);
                // Boolean[] value4 = { false, false};
                // List<Boolean> anniuread = new ArrayList<>(Arrays.asList(value4));
                Boolean[] value5 = { true };
                List<Boolean> resets = new ArrayList<>(Arrays.asList(value5));
                short[] anniuparams = new short[anniuread.size()];
                for (int i = 0; i < anniuread.size(); i++) {
                    boolean value = anniuread.get(i);
                    anniuparams[i] = value ? (short) 1 : (short) 0;
                }
                // // 终止继续按钮
                // List<String> niuanaddressList3 = Arrays.asList(config.getProperty("Parameter2.stop").split(","));
                // List<Boolean> anniuread = S7control.getinstance().readBits(niuanaddressList3);
                // // Boolean[] value4 = { false, false};
                // // List<Boolean> anniuread = new ArrayList<>(Arrays.asList(value4));
                // Boolean[] value5 = { true };
                // List<Boolean> resets = new ArrayList<>(Arrays.asList(value5));
                // short[] anniuparams = new short[anniuread.size()];
                // for (int i = 0; i < anniuread.size(); i++) {
                //     boolean value = anniuread.get(i);
                //     anniuparams[i] = value ? (short) 1 : (short) 0;
                // }
                short[] resets2 = new short[resets.size()];
                for (int i = 0; i < resets.size(); i++) {
                    boolean value = resets.get(i);
                    resets2[i] = value ? (short) 1 : (short) 0;
                }
                // short[] resets2 = new short[resets.size()];
                // for (int i = 0; i < resets.size(); i++) {
                //     boolean value = resets.get(i);
                //     resets2[i] = value ? (short) 1 : (short) 0;
                // }
                for (short number : resets2) {
                // for (short number : resets2) {
                    if (number == 1) {
                        jsonObject.append("Abort", anniuparams);
                //     if (number == 1) {
                //         jsonObject.append("Abort", anniuparams);
                    }
                //     }
                }
                // }
            }
            // 铝框线交互
@@ -257,11 +263,11 @@
                        List<String> messages = webserver.getMessages();
                        if (!messages.isEmpty()) {
                            // 将最后一个消息转换为整数类型的列表
                            // // 将最后一个消息转换为整数类型的列表
                            // String lastMessage = messages.get(messages.size() - 1);
                            // System.out.println("lastMessage:" + lastMessage);
                            // JSONArray messageArray = new JSONArray(lastMessage);
                            //
                            // try {
                            //     // 检查索引是否有效
                            //     if (messageArray.getJSONArray(0).size() > 0) {
springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
@@ -17,25 +17,25 @@
        //
        System.out.println("启动完成");
        // new PlcHold().start();
        new PlcHold().start();
        new Plchome().start();
        // new Plcalarm().start();
        new Plcalarm().start();
        // new Plcsign().start();
        new Plcsign().start();
        // new Plcstate().start();
        // new PlcPositioning1().start();
        new Plcstate().start();
        new PlcPositioning1().start();
        // new PlcParameter2().start();
        new PlcParameter2().start();
        // new PLCAutomaticParameterSetting().start();
        new PLCAutomaticParameterSetting().start();
        // new PlcManualonePosition().start();
        // new PlcManualonePosition2().start();
        // new PlcServoManualone().start();
        // new PLCManualJog().start();
        // new Plclog().start();
        new PlcManualonePosition().start();
        new PlcManualonePosition2().start();
        new PlcServoManualone().start();
        new PLCManualJog().start();
        new Plclog().start();
    }
}
springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
@@ -391,4 +391,11 @@
    return outSliceServive.CompleteQueue(id, frameid, glassid);
  }
  // 手动完成任务
  @PostMapping("/FrameStateUpdate")
  public Result FrameStateUpdate(String frameno, String framestate) {
    return outSliceServive.FrameStateUpdate(frameno, framestate);
  }
}
springboot-vue3/src/main/java/com/example/springboot/entity/Out_slice.java
@@ -16,6 +16,8 @@
    private String boxId;//箱子id
    private double glasswidthmm;//玻璃宽mm
    private double glassheightmm;//玻璃高mm
    private String position_x;//x坐标
    private int framestate;//y坐标
    public String getPosition() {
        return position;
@@ -168,4 +170,12 @@
    public void setBoxno(String boxId) {
        this.boxId = boxId;
    }
    public int getFrameState() {
        return framestate;
    }
    public void SetFrameState(int framestate) {
        this.framestate = framestate;
    }
}
springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
@@ -154,7 +154,7 @@
  List<north_glass_buffer1> SelectAluminumFrameInfoById(String FrameBarcode);
  //查询玻璃是否已存在于出片队列
  //根据玻璃id查询出片队列信息
  @Select("select * from out_slice where glassid=#{getbarcode}")
  Out_slice SelectQueueByglassid(String getbarcode);
@@ -172,9 +172,14 @@
  //查询用户权限
  @Select("select rp.* from role_permission rp inner join user r on rp.role_id=r.role_id and r.username=#{username} and (permission_id=32 or permission_id=33 or permission_id=34 or permission_id=35)")
  List<RolePermission> SelectPermissionByUserName(String username);
  //完成出片任务
  //根据玻璃完成出片任务
  @Update("update out_slice set state=4 where id=#{id}")
  void CompleteQueue(String id);
  //根据玻璃完成出片任务
  @Update("update out_slice set state=4 where id=#{id}")
  void CompleteQueueByGlassId(String glassid);
  //查询铝框id对应玻璃完成数量
  @Select("select count(*) from out_slice where barcode=#{frameid} and state!=4")
@@ -196,4 +201,8 @@
  @Select("select * from storage_task where task_state=0 and task_type=#{task_type}")
  List<StorageTask> SelectTaskByState(int task_type);
  //修改出片队列铝框状态
  @Select("update out_slice set framestate=#{framestate} where barcode=#{frameno}")
  void FrameStateUpdate(String frameno, String framestate);
}
springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
@@ -94,7 +94,7 @@
    void UpdataOutCage1(double width, int cage, int cell);
    // 调拨更换笼子信息
    @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=#{tier})as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.state=1,a.glasswidth=b.glasswidth,a.glassheight=b.glassheight,a.glasswidthmm=b.glasswidthmm,a.glassheightmm=b.glassheightmm,a.listid=b.listid,a.boxid=b.boxid where a.id=#{id1}")
    @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=#{tier})as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.state=1,a.glasswidth=b.glasswidth,a.glassheight=b.glassheight,a.glasswidthmm=b.glasswidthmm,a.glassheightmm=b.glassheightmm,a.listid=b.listid,a.boxid=b.boxid,a.FrameBarcode=b.FrameBarcode where a.id=#{id1}")
    void UpdateDBCage(int id1, int cage, int cell, int tier);
    // @Insert("insert into user(name, date, address, user_no) values (#{name},
@@ -117,11 +117,11 @@
    String SelectOrderout();
    // 内外片调换
    @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=1)as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.state=1,a.glasswidth=b.glasswidth,a.glassheight=b.glassheight,a.glasswidthmm=b.glasswidthmm,a.glassheightmm=b.glassheightmm,a.listid=b.listid,a.boxid=b.boxid where a.cage=#{cage} and a.cell=#{cell} and a.tier=2")
    @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=1)as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.state=1,a.glasswidth=b.glasswidth,a.glassheight=b.glassheight,a.glasswidthmm=b.glasswidthmm,a.glassheightmm=b.glassheightmm,a.listid=b.listid,a.boxid=b.boxid,a.FrameBarcode=b.FrameBarcode where a.cage=#{cage} and a.cell=#{cell} and a.tier=2")
    void UpdateDBCage1(int cage, int cell);
    // 清除内片数据
    @Update("update storage_cage a set glass_id='',order_id='',state=0,glasswidth=0,glassheight=0,glasswidthmm=0,glassheightmm=0,listid=null,boxid=null where a.cage=#{cage} and a.cell=#{cell} and a.tier=1;")
    @Update("update storage_cage a set glass_id=null,order_id=null,state=0,glasswidth=null,glassheight=null,glasswidthmm=null,glassheightmm=null,listid=null,boxid=null,FrameBarcode=null where a.cage=#{cage} and a.cell=#{cell} and a.tier=1;")
    void UpdateDBCage2(int cage, int cell);
    // 判断是否有调拨完后出片的任务
@@ -196,6 +196,9 @@
    // 判断铝框出片表是否有玻璃正在出片中
    @Select("SELECT count(*) FROM `out_slice` where state=1;")
    int SelectOutSliceshu();
    //判断是否有调拨任务未完成
    @Select("SELECT count(*) FROM `storage_cage` where state=#{state};")
    int Selectcageout(int state);
    // 更新出片队列的任务状态
    @Update("update out_slice set state=#{state} where glassid=#{glassid} and state=#{state2}")
springboot-vue3/src/main/java/com/example/springboot/service/North_Glass_Buffer1Service.java
@@ -26,15 +26,15 @@
        public int compare(north_glass_buffer1 n1, north_glass_buffer1 n2) {//对查询到的铝框对应的玻璃数据进行排序,将离出片位置近的,靠近笼子出片侧的玻璃排在前面
            if (n1.getstorageCage() != null) {
                if (n2.getstorageCage() != null) {
                    int cageComparison = n2.getstorageCage().getCage().compareTo(n1.getstorageCage().getCage());
                    int cageComparison = n2.getstorageCage().getCage().compareTo(n1.getstorageCage().getCage());//靠出片口近的笼子优先
                    if (cageComparison != 0) {
                        return cageComparison;
                    } else {
                        int cellComparison = n2.getstorageCage().getCell().compareTo(n1.getstorageCage().getCell());
                        int cellComparison = n2.getstorageCage().getCell().compareTo(n1.getstorageCage().getCell());//靠出片口近的格子优先
                        if (cellComparison != 0) {
                            return cellComparison;
                        } else {
                            return n2.getstorageCage().getTier().compareTo(n1.getstorageCage().getTier());
                            return n2.getstorageCage().getTier().compareTo(n1.getstorageCage().getTier());//靠出片口近的格子外层优先
                        }
                    }
                } else {
springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java
@@ -66,6 +66,16 @@
    return Result.success(map);
  }
  // 确认后完成修改出片队列状态
  public void CompleteQueueByGlassId(String glassid) {
    homeMapper.CompleteQueueByGlassId(glassid);
    Out_slice outslice=homeMapper.SelectQueueByglassid(glassid);
    Short num = homeMapper.SelectCountByFrameNo(outslice.getBarCode());
    if (num == 0) {
      homeMapper.CompleteQueueByFrameNo(outslice.getBarCode());
    }
  }
  //终止进片/出片
  public void StopTask(String glassid, int i) {
    if (i == 0) {// 进片终止
@@ -88,4 +98,11 @@
    homeMapper.DeleteByGlassID(glassid);
  }
public Result FrameStateUpdate(String frameno, String framestate) {
    homeMapper.FrameStateUpdate(frameno, framestate);
    Map<String, Object> map = new HashMap<>();
    map.put("message", "200");
    return Result.success(map);
}
}