wu
2024-11-14 5780c58879296cfced72012c8831c1d3cf4dafb2
增加任务队列 任务日志,客户名称字段
15个文件已修改
501 ■■■■ 已修改文件
Albania_Mes-ui/src/api/home.js 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Albania_Mes-ui/src/lang/locales/en-US.json 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Albania_Mes-ui/src/lang/locales/zh-CN.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Albania_Mes-ui/src/views/home/index.vue 376 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/entity/FlowCard.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/entity/GlassInfo.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/entity/StorageCage.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/entity/flowcard.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/entity/glassinfo.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/HomeService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Albania_Mes-ui/src/api/home.js
@@ -300,6 +300,14 @@
        data:{"num":num}
    })
}
export function DeleteOutTask(id) {
    return request({
        url: '/home/DeleteOutTask?id='+id,
        method: 'post',
        data:{"num":id}
    })
}
export function SoftEmergencyStop() {
    return request({
@@ -392,6 +400,13 @@
        data:""
    })
}
export function UpdateOutTask(id,state) {
    return request({
        url: '/home/UpdateOutTask?id='+id+'&state='+state,
        method: 'post',
        data:""
    })
}
Albania_Mes-ui/src/lang/locales/en-US.json
@@ -40,6 +40,7 @@
  "Measure":"Measure",
  "StorageCage":"StorageCage",
  "Task queue":"Task queue",
  "Task Id":"Task Id",
  "Height":"Height",
  "Thickness":"Thickness",
  "Clear":"Clear",
@@ -364,6 +365,7 @@
  "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",
  "Outing Queue":"Outing Queue",
  "Out Records":"Out Records",
  "Enter the Frame No":"Enter the Frame No",
  "Frame No":"Frame No",
  "Glass information corresponding to aluminum frame":"Glass information corresponding to aluminum frame",
Albania_Mes-ui/src/lang/locales/zh-CN.json
@@ -39,6 +39,7 @@
  "Measure":"测量",
  "StorageCage":"笼子",
  "Task queue":"任务队列",
  "Task Id":"任务编号",
  "Height":"高",
  "Thickness":"厚度",
  "Clear":"清除",
@@ -46,6 +47,7 @@
  "results":"结果",
  "start work":"开始上片",
  "stop work":"暂停上片",
  "Line":"线路",
  "Please select a route":"请选择线路",
  "This route already has a task":"此路线已存在任务",
@@ -353,6 +355,7 @@
  "The glass ID already exists in the loading queue": "上片队列已存在此玻璃id",
  "This glass ID already exists in the sorting cage": "理片笼内已存在此玻璃id",
  "Outing Queue":"出片队列",
  "Out Records":"出片记录",
  "Enter the Aluminum Frame No":"请输入铝框id",
  "Frame No":"铝框id",
  "Glass information corresponding to aluminum frame":"铝框对应的玻璃信息",
Albania_Mes-ui/src/views/home/index.vue
@@ -124,7 +124,6 @@
    left: 500px;
    top: -10px;
} */
.blocks-img3 {
    height: 90px;
    max-width: 100vw;
@@ -334,14 +333,14 @@
    font-weight: bold;
    text-align: center;
}
.el-table .el-table__body-wrapper tr {
  height: 40px;  /* 设置每行的高度为 30px */
  line-height: 30px;
    height: 40px;
    /* 设置每行的高度为 30px */
    line-height: 30px;
}
.el-table .el-table__body-wrapper td {
    /* 确保单元格内容垂直居中 */
}
/* 出片队列显示表 */
</style>
<template>
    <el-container>
@@ -379,9 +378,9 @@
                    :class="SoftEmergencyStopState == true ? 'hide' : ''">
                    {{ $t('Task queue') }}</el-button>
                    <!-- <el-button type="primary" @click="showform(5)" :disabled="SoftEmergencyStopState" style="z-index: 999;"
                <el-button type="primary" @click="showform(5)" :disabled="SoftEmergencyStopState" style="z-index: 999;"
                    :class="SoftEmergencyStopState == true ? 'hide' : ''">
                    {{ $t('Outing Queue') }}</el-button> -->
                    {{ $t('Outing Queue') }}</el-button>
            </div>
            <div style="display: flex;align-items: center;overflow: hidden;">
@@ -462,7 +461,7 @@
                            <template slot-scope='scope'>
                                <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                                    @click="FinishTask(scope.row.id)">{{ $t('Complete') }}</el-button>
                                    <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                                <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                                    @click="TerminateTask(scope.row.id)">{{ $t('Terminate') }}</el-button>
                            </template>
                        </el-table-column>
@@ -480,7 +479,7 @@
                            <template slot-scope='scope'>
                                <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                                    @click="FinishTask(scope.row.id)">{{ $t('Complete') }}</el-button>
                                    <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                                <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                                    @click="TerminateTask(scope.row.id)">{{ $t('Terminate') }}</el-button>
                            </template>
                        </el-table-column>
@@ -534,26 +533,27 @@
                        style="z-index: 999;">{{ $t('Manual matching') }}</el-button>
                    <el-button type="primary" @click="ManualTake()" :disabled="(this.LastQueue.state > 0)"
                        style="z-index: 999;">{{
                $t('Manual removal') }}</el-button>
                    <el-button type="primary" @click="AnewMeasure()"
                        style="z-index: 999;">{{
                            $t('Remeasure') }}</el-button>
                            $t('Manual removal') }}</el-button>
                    <el-button type="primary" @click="AnewMeasure()" style="z-index: 999;">{{
                        $t('Remeasure') }}</el-button>
                    <!-- 输入下拉框1 -->
                    <!-- SelectSetting -->
                    <label for="file-upload"  style="font-weight: bold;font-size: 16px;margin-left: 50px;">{{ $t('Films') }}:{{SelectSetting.films }}</label>
                    <label for="file-upload" style="font-weight: bold;font-size: 16px;margin-left: 50px;">{{ $t('Films')
                        }}:{{ SelectSetting.films }}</label>
                    <el-select v-model="selectedValue1" :placeholder="$t('Films')">
                        <el-option v-for="item in selectedOption1.films" :key="item.value" :label="item.films"
                            :value="item.films">
                        </el-option>
                    </el-select>
                    <!-- 输入下拉框2 -->
                    <label for="file-upload"  style="font-weight: bold;font-size: 16px;">{{ $t('Thickness') }}:{{SelectSetting.thickness }}mm</label>
                    <label for="file-upload" style="font-weight: bold;font-size: 16px;">{{ $t('Thickness')
                        }}:{{ SelectSetting.thickness }}mm</label>
                    <el-select v-model="selectedValue2" :placeholder="$t('Thickness')">
                        <el-option v-for="item in selectedOption2.thickness" :key="item.value" :label="item.thickness"
                            :value="item.thickness">
                        </el-option>
                    </el-select>
                    <el-button type="primary" @click="SaveMeasure(selectedValue1,selectedValue2)"
                    <el-button type="primary" @click="SaveMeasure(selectedValue1, selectedValue2)"
                        style="z-index: 999;">{{
                            $t('Save') }}</el-button>
                </div>
@@ -561,7 +561,8 @@
                <!--显示-->
                <div style="width:900px;height: 720px;border: 2px solid #d1d1d1;float: left;">
                    <!--玻璃图  #81b337-->
                    <div :style="'top:10px;bottom: 10px;left: 10px;right: 10px;margin:'
                    <div
                        :style="'top:10px;bottom: 10px;left: 10px;right: 10px;margin:'
                            + ((720 - (this.LastQueue.glassheight / 25 * 7)) / 2) + 'px auto;width:'
                            + (this.LastQueue.glasswidth / 25 * 7) + 'px;height:'
                            + (this.LastQueue.glassheight / 25 * 7) + 'px;line-height: '
@@ -571,8 +572,10 @@
                            {{ $t('Measure') }}
                        </div>
                        <div>
                            {{ $t('Width') + "*" + $t('Height') }}:{{ (this.LastQueue.glasswidth +this.LastQueue.glassheight) != 0 ?
                            (this.LastQueue.glasswidth +"*" + this.LastQueue.glassheight) + "" : "" }}
                            {{ $t('Width') + "*" + $t('Height') }}:{{ (this.LastQueue.glasswidth
                                + this.LastQueue.glassheight) !=
                                0 ?
                                (this.LastQueue.glasswidth +"*" + this.LastQueue.glassheight) + "" : "" }}
                        </div>
                        <div>
@@ -604,7 +607,8 @@
                this.LastQueue.state > 0 ? $t('Matching successful') :
                    (this.LastQueue.state == 0 ? $t('Multiple data matching') : $t('Matching failed')) }}</span>
                    <br> -->
                    <el-table :data="this.tasklist3" :height="700"  :row-class-name="rowClassName" style="width: 100%;padding:0;">
                    <el-table :data="this.tasklist3" :height="700" :row-class-name="rowClassName"
                        style="width: 100%;padding:0;">
                        <el-table-column prop="flowcard" :label="$t('Flowcard')"></el-table-column>
                        <el-table-column prop="mateid" :label="$t('Mateid')"></el-table-column>
                        <el-table-column prop="films" :label="$t('Films')"></el-table-column>
@@ -625,6 +629,7 @@
                <el-table-column :min-width="80" prop="cage" :label="$t('Cage No')"></el-table-column>
                <el-table-column :min-width="80" prop="cell" :label="$t('Slot No')"></el-table-column>
                <el-table-column :min-width="80" prop="flowcard" :label="$t('Flowcard')"></el-table-column>
                <el-table-column :min-width="80" prop="customer" :label="$t('Customer')"></el-table-column>
                <el-table-column :min-width="80" prop="mateid" :label="$t('Mateid')"></el-table-column>
                <el-table-column :min-width="80" prop="glassWidth" :label="$t('Width')"></el-table-column>
                <el-table-column :min-width="80" prop="glassHeight" :label="$t('Height')"></el-table-column>
@@ -646,13 +651,14 @@
                            :disabled="scope.row.number >= 1 ? false : true"
                            @click="UpdateStroageCageByCell(scope.row.cell, scope.row.number, -1)">{{ $t('Reduce')
                            }}</el-button>
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                            :disabled="scope.row.number >= 1 ? false : true"
                            @click="AddOutGlass(scope.row.cell,scope.row.glasstype)">{{ $t('OutGlass')
                        }}</el-button>
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                            :disabled="scope.row.number >= 1 ? false : true"
                            @click="UpdateStroageCageByCell(scope.row.cell, scope.row.number, 0)">{{ $t('Delete')
                            }}</el-button>
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                            :disabled="scope.row.number >= 1 ? false : true"
                            @click="AddOutGlass(scope.row.cell, scope.row.glasstype)">{{ $t('OutGlass')
                            }}</el-button>
                    </template>
                </el-table-column>
@@ -669,11 +675,18 @@
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="customer" :label="$t('Customer')" width="150" align="center">
                    <template slot-scope='scope'>
                        <div>
                            {{ scope.row.customer }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="mateid" :label="$t('Mateid')" align="center">
                </el-table-column>
                <el-table-column prop="tier" :label="$t('Tier')" align="center">
                <el-table-column prop="tier" :label="$t('Tier')" width="50"  align="center">
                </el-table-column>
                <el-table-column prop="number" :label="$t('Number')" align="center">
                <el-table-column prop="number" :label="$t('Number')" width="50" align="center">
                </el-table-column>
                <el-table-column prop="cageno" :label="$t('Cage GlassNumber')" align="center">
                </el-table-column>
@@ -703,7 +716,7 @@
                    </template>
                </el-table-column> -->
                <el-table-column prop="method" :label="$t('Task Method')" align="center">
                    <template slot-scope='scope'>
                    <template slot-scope='scope' >
                        <div style="text-align: center;width: 105%;">
                            {{ scope.row.state >= 0 ? (scope.row.method == 0 ? $t('Out') : $t('All Out')) : "" }}
                        </div>
@@ -711,26 +724,27 @@
                </el-table-column>
                <el-table-column prop="line" :label="$t('Task Line')">
                </el-table-column>
                <el-table-column width="380" :label="$t('Operate')">
                <el-table-column width="420" :label="$t('Operate')">
                    <template slot-scope='scope'>
                        <el-select v-model="selected[scope.$index]" :placeholder="$t('Line')"
                    <template slot-scope='scope'  >
                        <el-select v-model="selected[scope.$index]" :placeholder="$t('Line')" style="min-width: 70px; max-width: 70px;"
                            v-show="scope.row.state >= 0 ? true : false">
                            <el-option v-for="item in options" :key="item.value" :label="item.label"
                                :value="item.value">
                            </el-option>
                        </el-select>
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                            v-show="scope.row.state >= 0 ? true : false" @click="StartChange(scope.row.flowcard, scope.row.orderstate)">
                            v-show="scope.row.state >= 0 ? true : false"
                            @click="StartChange(scope.row.flowcard, scope.row.orderstate)">
                            {{ scope.row.orderstate > 0 ? $t('stop work') : $t('start work') }}</el-button>
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                            v-show="scope.row.state >= 0 ? true : false"
                            @click="ModeChange(scope.row.flowcard, scope.row.method)">
                            {{ $t('Mode Change') }}</el-button>
                            <el-button type="primary" style="padding: 4px 10px;font-size: 12px;margin-left: 6px;"
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;margin-left: 6px;"
                            v-show="scope.row.state >= 0 ? true : false"
                            @click="ClaimTasks(scope.row.flowcard, scope.row.state, selected[scope.$index], scope.row.line)">
                            {{ scope.row.state > 0 ? $t('Stop Task') : $t('Start Task') }}</el-button>
@@ -743,86 +757,177 @@
                </el-table-column>
            </el-table>
        </el-dialog>
         <!-- 出片队列显示表 -->
         <!-- <el-dialog :visible.sync="Outqueue" :title="$t('Outing Queue')" top="5vh">
            <el-table :data="tableData2" style="width: 100%;margin-bottom: 20px;" row-key="id" border lazy
                :tree-props="{ children: 'glassinfo', hasChildren: 'hasChildren' }">
                <el-table-column prop="flowcard" :label="$t('Order')" width="150" align="center">
                    <template slot-scope='scope'>
                        <div>
        <!-- 出片队列显示表 -->
        <el-dialog :visible.sync="Outqueue" top="5vh" style="height: 100%; overflow-y: auto;">
            <!-- //出片记录 -->
            <label style="font-weight: bold; font-size: 18px;">{{$t('Out Records')}}</label>
            <el-table :data="OutLog" style="width: 100%;margin-bottom: 20px;" row-key="id" border lazy>
                <el-table-column prop="id" :label="$t('Task Id')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.id }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="flowcard" :label="$t('Flowcard')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.flowcard }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="mateid" :label="$t('Mateid')" align="center">
                <el-table-column prop="customer" :label="$t('Customer')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.customer }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="tier" :label="$t('Tier')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.tier }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="number" :label="$t('Number')" align="center">
                </el-table-column>
                <el-table-column prop="cageno" :label="$t('Cage GlassNumber')" align="center">
                </el-table-column>
                <el-table-column prop="finishnumber" :label="$t('Finish No')" align="center">
                </el-table-column>
                <el-table-column prop="mateid" :label="$t('Mate No')" align="center">
                </el-table-column>
                <el-table-column prop="films" :label="$t('Films')" align="center">
                </el-table-column>
                <el-table-column prop="thickness" :label="$t('Thickness')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.thickness }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="width" :label="$t('Width')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.width }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="height" :label="$t('Height')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.height }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="state" :label="$t('Task State')" align="center">
                <el-table-column prop="cell" :label="$t('Slot No')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.cell }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="films" :label="$t('Films')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.films }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="mateid" :label="$t('Mateid')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.mateid }}
                        </div>
                    </template>
                </el-table-column>
                </el-table>
                <label style="font-weight: bold; font-size: 18px;">{{$t('Outing Queue')}}</label>
                <!-- //出片队列 -->
            <el-table :data="OutTask" style="width: 100%;margin-bottom: 20px;" row-key="id" border lazy>
                <el-table-column prop="id" :label="$t('Task Id')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.id }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="flowcard" :label="$t('Flowcard')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.flowcard }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="customer" :label="$t('Customer')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.customer }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="tier" :label="$t('Tier')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.tier }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="thickness" :label="$t('Thickness')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.thickness }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="width" :label="$t('Width')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.width }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="height" :label="$t('Height')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.height }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="films" :label="$t('Films')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.films }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="mateid" :label="$t('Mateid')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.mateid }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="task_state" :label="$t('Task State')" align="center">
                    <template slot-scope='scope'>
                        <div
                            :style="{ backgroundColor: scope.row.state === 0 ? '' : '#00FFFF', width: '105%', height: '125%', lineHeight: '50px' }">
                            {{ scope.row.state >= 0 ? scope.row.state == 0 ? $t('Stop') : $t('Start') : "" }}
                            :style="{backgroundColor: scope.row.state === 0 ? '#00FFFF' : '', width: '105%', height: '100%%', lineHeight: '38px' }">
                            {{scope.row.state == 0 ? $t('Waiting') : $t('Suspend') }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="method" :label="$t('Task Method')" align="center">
                <el-table-column width="250" :label="$t('Operate')">
                    <template slot-scope='scope'>
                        <div style="text-align: center;width: 105%;">
                            {{ scope.row.state >= 0 ? (scope.row.method == 0 ? $t('Out') : $t('All Out')) : "" }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="line" :label="$t('Task Line')">
                </el-table-column>
                <el-table-column width="380" :label="$t('Operate')">
                    <template slot-scope='scope'>
                        <el-select v-model="selected[scope.$index]" :placeholder="$t('Line')"
                            v-show="scope.row.state >= 0 ? true : false">
                            <el-option v-for="item in options" :key="item.value" :label="item.label"
                                :value="item.value">
                            </el-option>
                        </el-select>
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                            v-show="scope.row.state >= 0 ? true : false" @click="StartChange(scope.row.flowcard, scope.row.orderstate)">
                            {{ scope.row.orderstate > 0 ? $t('stop work') : $t('start work') }}</el-button>
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;height:42px;width: 70px;"
                            v-show="scope.row.state >= 0 ? true : false"
                            @click="ModeChange(scope.row.flowcard, scope.row.method)">
                            {{ $t('Mode Change') }}</el-button>
                            @click="UpdateOutTask(scope.row.id, scope.row.state)">
                            {{ scope.row.state == 0 ? $t('Suspend') : $t('Start') }}</el-button>
                            <el-button type="primary" style="padding: 4px 10px;font-size: 12px;margin-left: 6px;"
                            v-show="scope.row.state >= 0 ? true : false"
                            @click="ClaimTasks(scope.row.flowcard, scope.row.state, selected[scope.$index], scope.row.line)">
                            {{ scope.row.state > 0 ? $t('Stop Task') : $t('Start Task') }}</el-button>
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                            v-show="scope.row.state >= 0 ? true : false" @click="deleteTasks(scope.row.flowcard)">
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;height:42px;width: 70px;"
                            v-show="scope.row.state >= 0 ? true : false" @click="DeleteOutTask(scope.row.id)">
                            {{ $t('langDelete') }}</el-button>
                    </template>
                </el-table-column>
            </el-table>
        </el-dialog> -->
        </el-dialog>
        <!-- 人工匹配 -->
        <el-dialog :visible.sync="StorageCageAdd" :title="$t('StorageCageAdd')" top="5vh" width="80%">
            <div style="display: flex;height: 40px;line-height: 40px;">
@@ -864,7 +969,7 @@
    Disabled, SelectPermissionByUserName, currentUsername, CompleteQueue,
    isAllowReorderings,
    UpdateStroageCageByCell,AddOutGlass, FinishTask,TerminateTask, SelectGlassInfo, StorageCageAddGlass, ClaimTasks, ModeChange, UpdateQueue, importData, ManualTake, AnewMeasure, StartChange, deleteTasks,SaveMeasure
    UpdateStroageCageByCell, AddOutGlass, FinishTask, TerminateTask, SelectGlassInfo, StorageCageAddGlass, ClaimTasks, ModeChange, UpdateQueue, importData, ManualTake, AnewMeasure, StartChange,UpdateOutTask,DeleteOutTask, deleteTasks, SaveMeasure
} from "../../api/home";
@@ -888,21 +993,23 @@
            // 测量下拉框膜系
            selectedOption1: {
                films: [],
              },
              selectedOption2: {
            },
            selectedOption2: {
                thickness: [],
              },
            },
            //  selectedOption1: [films],
            //  selectedOption2: [thickness],
            selectedValue1: null, // 用于存储第一个下拉框的选中值
            selectedValue2: null, // 用于存储第二个下拉框的选中值
            // 将值赋给 selectedValue1 和 selectedValue2
            dataList: [],
            tableData1: [],
            tableData2: [],
            OutTask: [],
            OutLog: [],
            Measuermode: false,
            confirm1: false,
            confirm2: false,
@@ -1025,7 +1132,7 @@
                this.StorageCage = true;
            } else if (i == 4) {
                this.Taskqueue = true;
            }else if (i == 5) {
            } else if (i == 5) {
                this.Outqueue = true;
            }
        },
@@ -1065,7 +1172,7 @@
                    this.tasklist3 = obj.glassInfoFlowCard[0];
                    this.tasklist2 = obj.StoragTaskeTaskFeed[0];
                    this.tasklist1 = obj.StoragTaskeTaskOut[0];
                    this.SelectSetting=obj.SelectSetting[0];
                    this.SelectSetting = obj.SelectSetting[0];
                    this.selectedOption1.films = obj.SelectMeasure[0];
                    this.selectedOption2.thickness = obj.SelectMeasure[0];
                    // if(obj.StorageCageForm.length == 0){
@@ -1076,7 +1183,7 @@
                    // }else{
                    //     this.StorageCageForm = obj.StorageCageForm[0];
                    // }
                    // console.log(obj.StorageCageForm[0]);
@@ -1098,6 +1205,11 @@
                    }
                    this.tableData1 = obj.OrderTask[0];
                    this.OutTask = obj.OutTask[0];
                    this.OutLog = obj.OutLog[0];
                    this.tableData2 = obj.OrderTask[0];
                    this.LastQueue = obj.LastQueue[0];
@@ -1138,7 +1250,7 @@
                });
            }
        },
        load() {
            //加载用户权限
            currentUsername().then(res => {
@@ -1230,23 +1342,38 @@
                }
            });
        },//选择开始工程
        StartChange(flowcard,orderstate) {
            if(orderstate==1){
            StartChange(flowcard,0).then(res => {
                if (res.data.message == 200) {
                    this.$message.success(this.$t('Operation successful'));
                }
            });
        }else{
            StartChange(flowcard,1).then(res => {
                if (res.data.message == 200) {
                    this.$message.success(this.$t('Operation successful'));
                }
            });
        }
        StartChange(flowcard, orderstate) {
            if (orderstate == 1) {
                StartChange(flowcard, 0).then(res => {
                    if (res.data.message == 200) {
                        this.$message.success(this.$t('Operation successful'));
                    }
                });
            } else {
                StartChange(flowcard, 1).then(res => {
                    if (res.data.message == 200) {
                        this.$message.success(this.$t('Operation successful'));
                    }
                });
            }
        },
        //选择开始工程
        //开始/暂停出片队列
        UpdateOutTask(id, state) {
            console.log(id + " 状态" + state);
            if( state == 0){
                state=2
            }else{
                state=0
            }
                UpdateOutTask(id, state).then(res => {
                    if (res.data.message == 200) {
                        this.$message.success(this.$t('Operation successful'));
                    }
                });
        },
        //删除工程
        deleteTasks(flowcard) {
            deleteTasks(flowcard).then(res => {
                console.log("@" + flowcard + "@");
@@ -1255,11 +1382,20 @@
                }
            });
        },
        //删除出片队列
        DeleteOutTask(id) {
            DeleteOutTask(id).then(res => {
                if (res.data.message == 200) {
                    this.$message.success(this.$t('Operation successful'));
                }
            });
        },
        //保存测量膜系的参数
        SaveMeasure(films,thickness) {
        SaveMeasure(films, thickness) {
            console.log('Films:', films);  // 打印 films
            console.log('Thickness:', thickness);  // 打印 thickness
            SaveMeasure(films,thickness).then(res => {
            SaveMeasure(films, thickness).then(res => {
                if (res.data.message >= 1) {
                    this.$message.success(this.$t('Operation successful'));
                }
@@ -1268,7 +1404,7 @@
        //查询玻璃信息
        SelectGlassInfo() {
            console.log(this.StorageCageForm.glasswidthmm);
            SelectGlassInfo(this.StorageCageForm.glasswidthmm, this.StorageCageForm.glassheightmm, this.StorageCageForm.thickness, this.StorageCageForm.films).then(res => {
                this.StorageCageAddInfo = res.data.StorageCageAddInfo;
            })
@@ -1308,15 +1444,15 @@
            }
        },
        AddOutGlass(cell,glasstype) {
            AddOutGlass(cell,glasstype).then(res => {
        AddOutGlass(cell, glasstype) {
            AddOutGlass(cell, glasstype).then(res => {
                if (res.data.message == 200) {
                    this.$message.success(this.$t('Operation successful'));
                }else {
                } else {
                    this.$message.error(this.$t('Operation failed'));
                }
            });
        },
        //启用//理片笼禁用
        UpdateDisabled(cage, cell, disabled) {
springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
@@ -14,6 +14,7 @@
import com.example.springboot.entity.Glass;
import com.example.springboot.entity.GlassInfo;
import com.example.springboot.entity.MeasureSetting;
import com.example.springboot.entity.OutTask;
import com.example.springboot.entity.Out_slice;
import com.example.springboot.entity.Queue;
import com.example.springboot.entity.StorageCage;
@@ -206,6 +207,15 @@
                List<StorageTask> StoragTaskeTaskOut = storageCageService.SelectStorageTask(1);
                jsonObject.append("StoragTaskeTaskOut", StoragTaskeTaskOut);
                 // 查询当前出片队列
                 List<Map> OutTask = storageCageService.SelectOutTask();
                 jsonObject.append("OutTask", OutTask);
                 // 查询最后6次出片记录
                 List<Map> OutLog = storageCageService.SelectOutLog();
                 jsonObject.append("OutLog", OutLog);
                // 查询所有玻璃厚度和膜系
                List<GlassInfo> SelectMeasure = storageCageService.SelectMeasure();
                jsonObject.append("SelectMeasure", SelectMeasure);
springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
@@ -551,8 +551,13 @@
  // 开始工程
  @PostMapping("/StartChange")
  public Result StartChange(String flowcard,int orderstate) {
  public Result StartChange(String flowcard,Integer orderstate) {
    return storageCageService.StartChange(flowcard,orderstate);
  }
  // 开始/暂停出片队列
  @PostMapping("/UpdateOutTask")
  public Result UpdateOutTask(Integer id,Integer state) {
    return storageCageService.UpdateOutTask(id,state);
  }
  // 重新测量
@@ -573,7 +578,13 @@
    System.out.println("控制器:" + num);
    return storageCageService.deleteTasks(num);
  }
//删除出片队列
  @PostMapping("/DeleteOutTask")
  public Result DeleteOutTask(Integer id) {
    System.out.println("控制器:" + id);
    return storageCageService.DeleteOutTask(id);
  }
  // 保存膜系设置
  @PostMapping("/SaveMeasure")
  public Result SaveMeasure(String films, Integer thickness) {
springboot-vue3/src/main/java/com/example/springboot/entity/FlowCard.java
@@ -18,6 +18,7 @@
  private Integer method;// 出片方式
  private Date starttime;// 任务领取时间
  private Integer orderstate;// 任务领取时间
  private String customer;// 客户
  
  
springboot-vue3/src/main/java/com/example/springboot/entity/GlassInfo.java
@@ -25,5 +25,6 @@
  private Integer cageno;//笼内数量
  private Integer method;//出片方式
  private Integer orderstate;//出片方式
  private String customer;//客户
  
}
springboot-vue3/src/main/java/com/example/springboot/entity/StorageCage.java
@@ -88,5 +88,9 @@
     * 配片ID
     */
    private Integer mateid;
    /**
     * 客户名称
     */
    private String customer;
}
springboot-vue3/src/main/java/com/example/springboot/entity/flowcard.java
@@ -18,6 +18,7 @@
  private Integer method;// 出片方式
  private Date starttime;// 任务领取时间
  private Integer orderstate;// 任务领取时间
  private String customer;// 客户
  
  
springboot-vue3/src/main/java/com/example/springboot/entity/glassinfo.java
@@ -25,5 +25,6 @@
  private Integer cageno;//笼内数量
  private Integer method;//出片方式
  private Integer orderstate;//出片方式
  private String customer;//客户
  
}
springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
@@ -235,7 +235,7 @@
  Short SelectOutingQueueCount(String frameNo);
  // 查询理片笼内信息
  @Select("select * from storage_cage")
  @Select("select *,b.customer from storage_cage a left join flowcard b on a.flowcard=b.flowcard")
  List<StorageCage> SelectStorageCageInfo();
  // 删除格子内玻璃信息
@@ -247,7 +247,7 @@
  void updateStroageCageByCell(Integer cell, Integer num);
  // 计算格子内剩余宽度
  @Update("update storage_cage set width=4300-if(glasswidth is null,0,glasswidth+300)*number where cell=#{cell}")
  @Update("update storage_cage set width=4300-if(glasswidth is null,0,glasswidth+300)*number+300 where cell=#{cell}")
  void UpdateStroageCageWidthByCell(Integer cell);
  // 根据任务类型获取任务
@@ -278,12 +278,12 @@
  @Update("update storage_cage set glasstype=#{glassInfo.glasstype},mateid=#{glassInfo.mateid},glass_id=#{glassInfo.glassid},flowcard=#{glassInfo.flowcard},glasswidth=#{glassInfo.width},glassheight=#{glassInfo.height},thickness=#{glassInfo.thickness},films=#{glassInfo.films},number=0 where cell=#{cell}")
  void StorageCageAddGlass(String cell, GlassInfo glassInfo);
  @Select("select * from flowcard where state!=2")
  @Select("select id,flowcard,Customer,totaltier,line,state,method,starttime,orderstate from flowcard where state!=2")
  List<Flowcard> SelectOrderTask();
  // @Select("select gi.*,sum(sc.number) as cageno from glassinfo gi left join storage_cage sc on gi.glasstype=sc.glasstype where gi.flowcard=#{flowcard} group by gi.id order by gi.mateid,gi.tier")
  // List<GlassInfo> SelectOrderView(String flowcard);
  @Select("select gi.id, gi.glasstype, gi.mateid, gi.glassid, gi.tier, gi.films, gi.width, gi.height, gi.thickness, gi.number, gi.finishnumber, gi.sumtier, gi.measurenumber,sum(sc.number) as cageno,IFNULL(c.orderstate,0) as orderstate from  glassinfo gi left join storage_cage sc on gi.glasstype=sc.glasstype left join flowcard c on gi.flowcard=c.flowcard where gi.flowcard=#{flowcard} group by gi.id,orderstate order by gi.mateid,gi.tier")
  @Select("select gi.id,gi.customer, gi.glasstype, gi.mateid, gi.glassid, gi.tier, gi.films, gi.width, gi.height, gi.thickness, gi.number, gi.finishnumber, gi.sumtier, gi.measurenumber,sum(sc.number) as cageno,IFNULL(c.orderstate,0) as orderstate from  glassinfo gi left join storage_cage sc on gi.glasstype=sc.glasstype left join flowcard c on gi.flowcard=c.flowcard where gi.flowcard=#{flowcard} group by gi.id,orderstate order by gi.mateid,gi.tier")
  List<GlassInfo> SelectOrderView(String flowcard);
@@ -307,7 +307,12 @@
  // int deleteGlassinfo(String flowcard);
  @Update("Update  flowcard set state=2, flowcard=CONCAT('已删除', #{flowcard}),orderstate=0  where flowcard=#{flowcard}")
  int deleteFlowcard(String flowcard);
  //修改出片队列状态
  @Update("Update out_task set task_state=#{state} where id=#{id}")
  int UpdateOutTask(Integer id, Integer state);
  //删除出片队列
  @Delete("DELETE from out_task  where id=#{id}")
  int DeleteOutTask(Integer id);
  @Update("Update  glassinfo set flowcard=CONCAT('已删除', #{flowcard}) where flowcard=#{flowcard}")
  int deleteGlassinfo(String flowcard);
  //人工匹配修改一条
@@ -325,11 +330,11 @@
  void OutGlassNo(Integer glasstype);
  // 添加出片队列
  @Insert("INSERT INTO glassinfo (`flowcard`, `glasstype`, `mateid`, `glassid`, `tier`, `films`, `width`, `height`, `thickness`, `number`, `finishnumber`, `sumtier`, `measurenumber`)"
  @Insert("INSERT INTO glassinfo (`flowcard`, `glasstype`, `mateid`, `glassid`, `tier`, `films`, `width`, `height`, `thickness`, `number`, `finishnumber`, `sumtier`, `measurenumber`,Customer)"
      +
      " VALUES (#{flowcard}, #{glasstype}, #{mateid}, #{glassid}, #{tier}, #{films}, CASE WHEN #{width} > #{height} THEN #{width} ELSE #{height} END, CASE WHEN #{height} > #{width} THEN #{width} ELSE #{height} END, #{thickness}, #{number}, 0, #{sumtier}, 0)")
      " VALUES (#{flowcard}, #{glasstype}, #{mateid}, #{glassid}, #{tier}, #{films}, CASE WHEN #{width} > #{height} THEN #{width} ELSE #{height} END, CASE WHEN #{height} > #{width} THEN #{width} ELSE #{height} END, #{thickness}, #{number}, 0, #{sumtier}, 0, #{Customer})")
  void AddGlassinfo(String flowcard, Integer glasstype, Integer mateid, String glassid, Integer tier, String films,
      Double width, Double height, Double thickness, Integer number, Integer sumtier);
      Double width, Double height, Double thickness, Integer number, Integer sumtier,String Customer);
  // 最大玻璃类型
  @Select("select max(glasstype)+1 from glassinfo")
@@ -360,9 +365,9 @@
  List<StorageCage> SelectStorageCageByCage(Integer cage);
  // 添加出片队列
  @Insert("INSERT INTO flowcard(`flowcard`, `totaltier`, `number`, `line`, `state`, `method`, `starttime`) "
                    +" select #{flowcard}, 0, #{number}, 0, 0, 0, now() where 0=( select count(*) from flowcard where flowcard=#{flowcard});")
  void InsertFlowcard(String flowcard, Integer number);
  @Insert("INSERT INTO flowcard(`flowcard`, `totaltier`, `number`, `line`, `state`, `method`, `starttime`,Customer) "
                    +" select #{flowcard}, 0, #{number}, 0, 0, 0, now(),#{Customer} where 0=( select count(*) from flowcard where flowcard=#{flowcard});")
  void InsertFlowcard(String flowcard, Integer number,String Customer);
    @Delete("DELETE FROM queue WHERE id = (SELECT id FROM ( SELECT id FROM queue WHERE glasstype = #{glassId} ORDER BY time ASC LIMIT 1) AS temp);")
    void DeletequeueByGlassid(String glassId);
@@ -372,4 +377,10 @@
  //修改测量设定膜系和厚度
    @Update("UPDATE measuresetting SET `films` = #{films}, `thickness` = #{thickness} WHERE `id` = 1;")
    int SaveMeasure(String films, Integer thickness);
    //查询出片队列数据
    @Select("SELECT a.id,a.flowcard,customer,a.mateid,a.tier,b.films,b.thickness,b.width,b.height,a.task_state as state FROM `out_task` a left join glassinfo b on a.glasstype=b.glasstype where task_state!=1 ORDER BY task_state")
    List<Map>SelectOutTask();
     //查询出片记录数据
     @Select(" select a.id,a.flowcard,customer,a.mateid,a.tier,b.films,b.thickness,b.width,b.height,a.task_state,a.shelf_rack as cell from storage_task a left join glassinfo b on a.glasstype=b.glasstype where task_state=1 and task_type=1 ORDER BY a.id desc LIMIT 6;")
     List<Map>SelectOutLog();
}
springboot-vue3/src/main/java/com/example/springboot/service/HomeService.java
@@ -88,7 +88,7 @@
            GlassInfoMapper.updatemeasurenumber(GlassInfo.getId());
            
            System.out.println("添加条数:"+insertCount);
            System.out.println("匹配成功");
            System.out.println("匹配成功测量宽高:"+width+" "+height);
            System.out.println(GlassInfo.getGlassid());
            return true;
        } else if (Result.size() > 1) {
springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java
@@ -49,13 +49,17 @@
        } else {
            // 判断玻璃是否进入大片笼
            if (glassInfo.getThickness() > 4 &&glassInfo.getWidth()>= 1500) {
            if (glassInfo.getThickness() > 14) {
                cage = albaniaMapper.SelectNewCell(3, 5);
            } else {
                cage = albaniaMapper.SelectNewCell(0, 4);
                // System.out.println(cage + "理片笼判断");
            }
            //当小片笼子不够,则符合条件的可以进入大片笼
            if(cage==null&&glassInfo.getWidth()>= 1500&&glassInfo.getThickness() > 4){
                cage = albaniaMapper.SelectNewCell(3, 5);
            }
            // 当返回的格子号为空时,返回400笼子已满
            if (cage != null) {
                albaniaMapper.AddCage(cage.getId(), glassid, width, height, 1, glasstype, 0, thickness,
springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java
@@ -276,6 +276,15 @@
        }
        return storageTasks;
    }
    //查询出片队列
    public List<Map> SelectOutTask() {
        return homeMapper.SelectOutTask();
    }
     //查询出片队列
     public List<Map> SelectOutLog() {
        return homeMapper.SelectOutLog();
    }
    // 查询进/出片任务
    public List<GlassInfo> SelectMeasure() {
@@ -441,6 +450,7 @@
        // 删除数据
        Map<String, Object> map = new HashMap<>();
        // QueueMapper.DeleteQueue();
        System.out.println("人工匹配ID:"+glassInfo.getMateid()+"膜系:"+glassInfo.getFilms());
        int count = homeMapper.SelectQueue();
        if (count > 0) {
            homeMapper.UpdateQueue(glassInfo.getFlowcard(), glassInfo.getWidth(), glassInfo.getHeight(),
@@ -478,6 +488,20 @@
        homeMapper.StartChange(flowcard, orderstate);
        Map<String, Object> map = new HashMap<>();
        int state = homeMapper.selectStartChange(flowcard);
        map.put("message", "200");
        return Result.success(map);
    }
    // 开始/暂停出片队列
    public Result UpdateOutTask(Integer id, Integer state) {
        homeMapper.UpdateOutTask(id, state);
        Map<String, Object> map = new HashMap<>();
        map.put("message", "200");
        return Result.success(map);
    }
    //删除出片队列
    public Result DeleteOutTask(Integer id) {
        homeMapper.DeleteOutTask(id);
        Map<String, Object> map = new HashMap<>();
        map.put("message", "200");
        return Result.success(map);
    }
@@ -529,7 +553,7 @@
                        &&
                        item.get("films") != null && item.get("base") != null && item.get("height") != null
                        && item.get("thickness") != null && item.get("quantity") != null
                        && item.get("matching") != null))
                        && item.get("matching") != null)&& item.get("Customer") != null)
                .collect(Collectors.toList());
        TypeDatas.forEach(item -> {
@@ -585,16 +609,15 @@
                glasstype = Integer.valueOf(value);
            }
            //
            homeMapper.AddGlassinfo(map.get("order").toString(), glasstype,
                    Integer.parseInt(map.get("matching").toString()) // 需要计算 配片ID
                    , map.get("order").toString() + "-" + count + "" // 需要计算 玻璃ID
                    , Integer.parseInt(map.get("tier").toString()), map.get("films").toString(),
                    Double.parseDouble(map.get("base").toString()), Double.parseDouble(map.get("height").toString()),
                    Double.parseDouble(map.get("thickness").toString()),
                    Integer.parseInt(map.get("quantity").toString()), groupby.get(tierkey));// 需要计算总层数
                    Integer.parseInt(map.get("quantity").toString()), groupby.get(tierkey),map.get("Customer").toString());// 需要计算总层数
            // 订单内总层数
            homeMapper.InsertFlowcard(map.get("order").toString(), OrderFinishedProduct.get(tierkey + "_Sum"));
            homeMapper.InsertFlowcard(map.get("order").toString(), OrderFinishedProduct.get(tierkey + "_Sum"), map.get("Customer").toString());
            count++;
        }
        Map<String, Object> ResultCode = new HashMap<>();