修改打印样式
修改报工界面查询条件
修改磨边获取出片线路条件
大理片非钢化出片添加宽度与数量限制
| | |
| | | export default { |
| | | serverUrl: "10.153.19.150:88/api", |
| | | // serverUrl: "10.153.19.150:88/api", |
| | | // serverUrl: "10.153.19.44:88/api", |
| | | // serverUrl: "192.168.1.199:88/api", |
| | | serverUrl: "192.168.1.199:88/api", |
| | | // serverUrl: "127.0.0.1:88/api", |
| | | serverUrl2: "10.153.19.150:88" |
| | | // serverUrl2: "10.153.19.150:88" |
| | | // serverUrl2: "10.153.19.44:88" |
| | | // serverUrl2: "192.168.1.199:88" |
| | | serverUrl2: "192.168.1.199:88" |
| | | // serverUrl2: "127.0.0.1:88" |
| | | |
| | | //serverUrl:"res.abeim.cn" |
| | |
| | | number:'Serial Number', |
| | | taskstatus:'Task state', |
| | | filmenter:'Waiting for input glass', |
| | | filmwait:'Waiting for start', |
| | | infilm:'In progress', |
| | | endtask:'End task', |
| | | completetask:'Complete the task', |
| | |
| | | number:'序号', |
| | | taskstatus:'任务状态', |
| | | filmenter:'等待进片', |
| | | infilm:'进行中', |
| | | filmwait:'等待启动', |
| | | infilm:'进片中', |
| | | endtask:'结束任务', |
| | | completetask:'完成任务', |
| | | intoglassid:'进片玻璃ID', |
| | |
| | | loading :'正在上片:', |
| | | }, |
| | | reportmanage:{ |
| | | scan:'扫码', |
| | | feeding:'正在进卧转立', |
| | | in:'在卧转立', |
| | | car:'在车上', |
| | | cage:'在笼子里', |
| | | oneline:'一线', |
| | | twoline:'二线', |
| | | id:'编号', |
| | | targetSlot:'目标格子', |
| | | state:'任务状态', |
| | | width:'宽', |
| | | height:'高', |
| | | createTime:'创建时间', |
| | | totalCounts:'总片数', |
| | | totalAreas:'总面积', |
| | | totalDamages:'总破损', |
| | | totalTakes:'总拿走', |
| | | |
| | | productiontime :'生产时间', |
| | | starttime :'开始时间', |
| | | endtime :'结束时间', |
| | |
| | | }, |
| | | ] |
| | | }, |
| | | /*----------- 报表管理 ----------------*/ |
| | | { |
| | | path: 'reportManage', |
| | | name: 'reportManage', |
| | | component: () => import('../views/Reportmanage/reportmanage.vue'), |
| | | children: [ |
| | | { |
| | | path: '/Reportmanage/reportmanage', |
| | | name: 'reportManage', |
| | | component: () => import('../views/Reportmanage/reportmanage.vue') |
| | | }, |
| | | ] |
| | | }, |
| | | |
| | | /*----------- 中空 ----------------*/ |
| | | { |
| | |
| | | // export const WebSocketHost = "192.168.1.199"; |
| | | export const WebSocketHost = "10.153.19.150"; |
| | | export const WebSocketHost = "192.168.1.199"; |
| | | // export const WebSocketHost = "10.153.19.150"; |
| | | // export const WebSocketHost = "10.153.19.44"; |
| | | // export const WebSocketHost = "127.0.0.1"; |
| | | export const host = "88"; |
| | | export const host = "88"; |
| | |
| | | const existingRects = adjustedRects2.value.filter(rect => newGlassIds.has(rect.glassId)); |
| | | // 计算新的矩形 |
| | | const newRects = data.intoGlass2[0].map(rect => { |
| | | const scaleFactor = 845/5000; |
| | | const scaleFactorY = 430/2750; |
| | | const scaleFactor = 800/5000; |
| | | const scaleFactorY = 407/2750; |
| | | let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta; |
| | | let newX = rect.yCoordinate; |
| | | if (rect.width < rect.height) { |
| | |
| | | const newGlassIds = new Set(data.intoGlass1[0].map(rect => rect.glassId)); |
| | | const existingRects = adjustedRects1.value.filter(rect => newGlassIds.has(rect.glassId)); |
| | | const newRects = data.intoGlass1[0].map(rect => { |
| | | const scaleFactor = 845/5000; |
| | | const scaleFactorY = 430/2750; |
| | | const scaleFactor = 800/5000; |
| | | const scaleFactorY = 407/2750; |
| | | // const scaleFactor = 600/5087; |
| | | // const scaleFactorY = 200/2800; |
| | | let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta; |
| | |
| | | const newGlassIds = new Set(data.intoGlass3[0].map(rect => rect.glassId)); |
| | | const existingRects = adjustedRects3.value.filter(rect => newGlassIds.has(rect.glassId)); |
| | | const newRects = data.intoGlass3[0].map(rect => { |
| | | const scaleFactor = 845/5000; |
| | | const scaleFactorY = 430/2750; |
| | | const scaleFactor = 800/5000; |
| | | const scaleFactorY = 407/2750; |
| | | let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta; |
| | | let newX = rect.yCoordinate; |
| | | if (rect.width < rect.height) { |
| | |
| | | const existingRects = adjustedRects4.value.filter(rect => newGlassIds.has(rect.glassId)); |
| | | // 计算新的矩形 |
| | | const newRects = data.intoGlass4[0].map(rect => { |
| | | const scaleFactor = 845/5000; |
| | | const scaleFactorY = 430/2750; |
| | | const scaleFactor = 800/5000; |
| | | const scaleFactorY = 407/2750; |
| | | let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta; |
| | | let newX = rect.yCoordinate; |
| | | if (rect.width < rect.height) { |
| | |
| | | <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 1000px;" |
| | | v-loading="loading"> |
| | | |
| | | <div style="width: 845px;float: right;background-color: #f4f4f5;height: 430px;margin-top: 20px;"> |
| | | <div style="width: 800px;float: right;background-color: #f4f4f5;height: 430px;margin-top: 20px;"> |
| | | <div v-if="adjustedRects3.length > 0"> |
| | | <!-- <div style="text-align: center;">炉号3:{{ engineerIdDisplay }}-{{ adjustedRects[0].temperingLayoutId }}</div> --> |
| | | <div style="text-align: center;"> {{ $t('processCard.temperinglayout') }}:{{ adjustedRects3[0].engineerId }}-{{ adjustedRects3[0].temperingLayoutId }} </div> |
| | | <el-scrollbar height="430px" style="background-color: #e9e9eb;"> |
| | | <el-scrollbar height="417px" style="background-color: #e9e9eb;"> |
| | | <div style="position: relative;max-width: 1400px;"> |
| | | <div |
| | | v-for="(rect, index) in adjustedRects3" |
| | |
| | | </el-scrollbar> |
| | | </div> |
| | | </div> |
| | | <div style="width: 845px;float: left;background-color: #f4f4f5;height: 430px;margin-top: 20px;"> |
| | | <div style="width: 800px;float: left;background-color: #f4f4f5;height: 430px;margin-top: 20px;"> |
| | | <div v-if="adjustedRects4.length > 0"> |
| | | <div style="text-align: center;"> {{ $t('processCard.temperinglayout') }}:{{ adjustedRects4[0].engineerId }}-{{ adjustedRects4[0].temperingLayoutId }} </div> |
| | | <!-- <div style="text-align: center;">炉号4:{{ engineerIdDisplay2 }}-{{ adjustedRects[0].temperingLayoutId }}</div> --> |
| | | <el-scrollbar height="430px" style="background-color: #e9e9eb;"> |
| | | <el-scrollbar height="417px" style="background-color: #e9e9eb;"> |
| | | <div style="position: relative;max-width: 1400px;"> |
| | | <div |
| | | v-for="(rect, index) in adjustedRects4" |
| | |
| | | </el-scrollbar> |
| | | </div> |
| | | </div> |
| | | <div style="width: 845px;float: right;background-color: #f4f4f5;height: 430px;margin-top: 20px;"> |
| | | <div style="width: 800px;float: right;background-color: #f4f4f5;height: 430px;margin-top: 20px;"> |
| | | <div v-if="adjustedRects1.length > 0"> |
| | | <!-- <div style="text-align: center;">炉号1:{{ engineerIdDisplay }}-{{ adjustedRects[0].temperingLayoutId }}</div> --> |
| | | <div style="text-align: center;"> {{ $t('processCard.temperinglayout') }}:{{ adjustedRects1[0].engineerId }}-{{ adjustedRects1[0].temperingLayoutId }} </div> |
| | | <el-scrollbar height="430px" style="background-color: #e9e9eb;"> |
| | | <el-scrollbar height="417px" style="background-color: #e9e9eb;"> |
| | | <div style="position: relative;"> |
| | | <div |
| | | v-for="(rect, index) in adjustedRects1" |
| | |
| | | </el-scrollbar> |
| | | </div> |
| | | </div> |
| | | <div style="width: 845px;float: left;background-color: #f4f4f5;height: 430px;margin-top: 20px;"> |
| | | <div style="width: 800px;float: left;background-color: #f4f4f5;height: 430px;margin-top: 20px;"> |
| | | <div v-if="adjustedRects2.length > 0"> |
| | | <div style="text-align: center;"> {{ $t('processCard.temperinglayout') }}:{{ adjustedRects2[0].engineerId }}-{{ adjustedRects2[0].temperingLayoutId }} </div> |
| | | <!-- <div style="text-align: center;">炉号2:{{ engineerIdDisplay2 }}-{{ adjustedRects[0].temperingLayoutId }}</div> --> |
| | | <el-scrollbar height="430px" style="background-color: #e9e9eb;"> |
| | | <el-scrollbar height="417px" style="background-color: #e9e9eb;"> |
| | | <div style="position: relative;max-width: 1400px;"> |
| | | <div |
| | | v-for="(rect, index) in adjustedRects2" |
| | |
| | | value-format="YYYY-MM-DD" :start-placeholder="$t('reportmanage.starttime')" |
| | | :end-placeholder="$t('reportmanage.endtime')" :default-time="defaultTime" /> |
| | | <el-select v-model="report.type" :placeholder="$t('reportmanage.ctype')" style="margin-left: 10px;"> |
| | | <el-option :label="$t('reportmanage.all')" value="0"></el-option> |
| | | <el-option :label="$t('reportmanage.completed')" value="1"></el-option> |
| | | <!-- <el-option :label="$t('reportmanage.all')" value="0"></el-option> --> |
| | | <!-- <el-option :label="$t('reportmanage.completed')" value="1"></el-option> --> |
| | | <el-option :label="$t('reportmanage.broke')" value="8"></el-option> |
| | | <el-option :label="$t('reportmanage.takeout')" value="9"></el-option> |
| | | </el-select> |
| | | <el-select v-model="report.status" :placeholder="$t('reportmanage.cstate')" style="margin-left: 10px;"> |
| | | <el-option :label="$t('reportmanage.all')" value="0"></el-option> |
| | | <!-- <el-option :label="$t('reportmanage.all')" value="0"></el-option> --> |
| | | <el-option :label="$t('reportmanage.dreportwork')" value="1"></el-option> |
| | | <!-- <el-option :label="$t('reportmanage.pendingwork')" value="2"></el-option> --> |
| | | <el-option :label="$t('reportmanage.reportwork')" value="3"></el-option> |
| | |
| | | import { useI18n } from 'vue-i18n' |
| | | const { t } = useI18n() |
| | | const report = ref({ |
| | | type: '0', |
| | | status: '0', |
| | | type: '8', |
| | | status: '1', |
| | | workingProcedure: '0', |
| | | }); |
| | | const reportData = ref([]) |
| | | const endDate = new Date(); |
| | | const startDate = new Date(); |
| | | startDate.setDate(endDate.getDate() - 20); // 获取一个星期前的时间 |
| | | startDate.setDate(endDate.getDate() - 7); // 获取一个星期前的时间 |
| | | // 格式化为 "YYYY-MM-DD" 格式 |
| | | const formatDate = (date) => { |
| | | const year = date.getFullYear(); |
| | |
| | | const selectReportData = async () => { |
| | | const response = await request.post("/cacheVerticalGlass/damage/selectDamage", { |
| | | startTime: timeRange.value[0], |
| | | endTime: timeRange.value[1], |
| | | endTime: timeRange.value[1]+" 23:59:59", |
| | | type: report.value.type, |
| | | status: report.value.status, |
| | | workingProcedure: report.value.workingProcedure |
| | |
| | | <el-table-column prop="bigStorageCageFeedTask.taskState" align="center" |
| | | :label="$t('searchOrder.taskstatus')" min-width="120"> |
| | | <template #default="scope"> |
| | | <el-tag type="success">{{ scope.row.bigStorageCageFeedTask.taskState == 0 ? $t('searchOrder.filmenter') |
| | | : |
| | | $t('searchOrder.infilm') }}</el-tag> |
| | | <el-tag type="success">{{ scope.row.bigStorageCageFeedTask.taskState == 1 ? $t('searchOrder.filmenter') |
| | | :scope.row.bigStorageCageFeedTask.taskState == 2?$t('searchOrder.filmwait') |
| | | :$t('searchOrder.infilm') }}</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="bigStorageCageFeedTask.line" align="center" :label="$t('searchOrder.line')" |
| | |
| | | import companyInfo from "@/lang/companyInfo"; |
| | | import QRCode from "qrcode"; |
| | | |
| | | |
| | | const currentTime = new Date(); |
| | | const formattedTime = currentTime.getFullYear() |
| | | + '-' + (currentTime.getMonth() + 1) + '-' |
| | | + currentTime.getDate() + ' ' + currentTime.getHours() + ':' |
| | | + currentTime.getMinutes();formattedTime |
| | | const company = companyInfo() |
| | | const printMerge = null |
| | | let props = defineProps({ |
| | |
| | | <tr v-for="(itemFlow, index) in item.detail" :key="index"> |
| | | <td colspan="29"> |
| | | <div style="float: left;"><input style="border: none;font-size: 28px;width: 70px;margin: 5px " /></div> |
| | | <div id="bj" style="float: right;font-size: 28px">{{ id + 1 }}</div> |
| | | <div id="bj" style="float: right;font-size: 28px">{{ props.printLayer }}</div> |
| | | <div>{{ company.companyName }}</div> |
| | | <div>生产流程卡</div> |
| | | <div v-if="itemFlow.technologyNumberMerge != ''" style="text-align: right;font-weight: bolder"> |
| | | {{ itemFlow.otherRemarks }} |
| | | <div style="font-weight: bolder;display: flex;justify-content:space-between"> |
| | | <div> |
| | | 时间:{{formattedTime}} |
| | | |
| | | </div> |
| | | <div>{{itemFlow.rack}} |
| | | 流程卡号: {{ |
| | | itemFlow.process_id |
| | | }}/{{ itemFlow.technologyNumberMerge }} 共 {{ flowCardCount }} 架 |
| | | }}/{{ props.printLayer }} |
| | | </div> |
| | | <div v-else style="text-align: right;font-weight: bolder"> |
| | | {{ itemFlow.otherRemarks }} |
| | | 流程卡号: {{ |
| | | itemFlow.process_id |
| | | }}/{{ itemFlow.technologyNumber }} 共 {{ flowCardCount }} 架 |
| | | </div> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | <tr v-for="(items, index) in item.detail" :key="index"> |
| | | <td class="tdNowrap">客户名称:</td> |
| | | <td colspan="2">{{ items.customer_name }}</td> |
| | | <td class="tdNowrap">项目名称:</td> |
| | | <td colspan="2">{{ items.project }}</td> |
| | | <td class="tdNowrap">工艺流程:</td> |
| | | <td colspan="22" style="width: 500px">{{ items.process }}</td> |
| | | </tr> |
| | | <tr v-for="(itemTr, index) in item.detail" :key="index"> |
| | | <td class="tdNowrap">磨边类型:</td> |
| | | <td colspan="2">{{ itemTr.edging_type }}</td> |
| | | <td class="tdNowrap">单片名称:</td> |
| | | <td colspan="2">{{ itemTr.glass_child }}</td> |
| | | <td class="tdNowrap">产品名称:</td> |
| | | <td colspan="22">{{ itemTr.product_name }}</td> |
| | | </tr> |
| | | <tr v-for="(items,index) in item.detail" :key="index"> |
| | | <td class="tdNowrap" style="width: 75px">客户名称:</td> |
| | | <td colspan="1" style="width: 150px;font-size: 17px">{{ items.customer_name }}</td> |
| | | <td class="tdNowrap" style="min-width: 75px">磨边类型:</td> |
| | | <td colspan="1" style="min-width: 50px">{{ items.edging_type }}</td> |
| | | <td colspan="2" style="min-width: 150px" class="tdNowrap">工艺流程:</td> |
| | | <td :colspan="item.processList.length*2" style="width: 500px">{{ items.process }}</td> |
| | | </tr> |
| | | <tr v-for="(itemTr,index) in item.detail" :key="index"> |
| | | <td class="tdNowrap">项目名称:</td> |
| | | <td colspan="1" style="font-size: 17px">{{ itemTr.project }}</td> |
| | | <td class="tdNowrap">单片名称:</td> |
| | | <td colspan="1">{{ itemTr.glass_child }}</td> |
| | | <td colspan="2" class="tdNowrap">产品名称:</td> |
| | | <td :colspan="item.processList.length*2">{{ itemTr.product_name }}</td> |
| | | </tr> |
| | | <tr> |
| | | <td rowspan='2'>序号</td> |
| | | <!-- <td rowspan='2'>编号</td> --> |
| | | <td rowspan="2">小片顺序</td> |
| | | <td rowspan='2' style="width: 90px">宽*高</td> |
| | | <td rowspan='4' style="width: 90px">宽*高</td> |
| | | <td rowspan='2'>数量</td> |
| | | <td rowspan='2'>落架</td> |
| | | <td rowspan='2'>面积</td> |
| | | <td rowspan='2'>周长</td> |
| | | <td rowspan='2'>半径</td> |
| | | <!-- <td rowspan='2'>周长</td> |
| | | <td rowspan='2'>半径</td> --> |
| | | <td rowspan='2'>备注</td> |
| | | <td v-for="(itemPr, index) in item.processList" :key="index" colspan="2">{{ itemPr.process }}</td> |
| | | </tr> |
| | | <tr> |
| | | <template v-for=" n in item.processList.length"> |
| | | <td>正品</td> |
| | | <td>次品</td> |
| | | <td colspan='2'>正品</td> |
| | | </template> |
| | | </tr> |
| | | </thead> |
| | |
| | | <tr v-for="(itemDatile, index) in item.detailList" :key="index"> |
| | | <td>{{ itemDatile.order_number }}</td> |
| | | <!-- <td>{{ itemDatile.s01Value }}</td> --> |
| | | <td>{{ itemDatile.technology_number }}</td> |
| | | <!-- <td>{{ itemDatile.technology_number }}</td> --> |
| | | <td>{{ itemDatile.child_width }}</td> |
| | | <td class="item" style="width: 5%;height: 100%;"> |
| | | {{ itemDatile.quantity }} |
| | |
| | | </td> |
| | | <td>{{ itemDatile.quantity1 }}</td> |
| | | <td>{{ itemDatile.total_area }}</td> |
| | | <td>{{ itemDatile.perimeter }}</td> |
| | | <td>{{ itemDatile.bend_radius }}</td> |
| | | <!-- <td>{{ itemDatile.perimeter }}</td> |
| | | <td>{{ itemDatile.bend_radius }}</td> --> |
| | | <td>{{ itemDatile.remarks }}</td> |
| | | <template v-for=" n in item.processList.length"> |
| | | <td></td> |
| | | <td></td> |
| | | <td colspan='2'></td> |
| | | </template> |
| | | </tr> |
| | | |
| | |
| | | </tr> |
| | | <tr> |
| | | <td>完工签名</td> |
| | | <td colspan="2"></td> |
| | | <td colspan="1"></td> |
| | | <td colspan="2"></td> |
| | | <td colspan="2"></td> |
| | | <td colspan="2"></td> |
| | |
| | | </tr> |
| | | <tr> |
| | | <td>质检签名</td> |
| | | <td colspan="1"></td> |
| | | <td colspan="2"></td> |
| | | <td colspan="2">生产签名</td> |
| | | <td colspan="2"></td> |
| | | <template v-for=" n in item.processList.length"> |
| | | <td colspan="2"></td> |
| | | </template> |
| | | </tr> |
| | | <tr> |
| | | <td>原片箱号</td> |
| | | <td colspan="28"></td> |
| | | </tr> |
| | | |
| | | <tr v-for="(qrCodeItem, index) in item.detail" :key="index"> |
| | |
| | | <el-button @click="open(scope.row)" v-if="scope.row.workstationId!=7" :disabled="scope.row.flowCardId == null">{{ $t('reportWork.processcard') }}</el-button> |
| | | <el-button @click="open1(scope.row)" v-if="scope.row.workstationId!=7" :disabled="(scope.row.flowCardId == null&&scope.row.workstationId!=7)">{{ $t('reportWork.printlabels') }}</el-button> |
| | | <el-button @click="handleBindRack3()" :disabled="(scope.row.totalQuantity ==0)" v-if="scope.row.workstationId==7">{{ $t('reportWork.clear') }}</el-button> |
| | | <el-button @click="open1(scope.row)" :disabled="(scope.row.totalQuantity ==0)">{{ $t('reportWork.printlabels') }}</el-button> |
| | | <el-button @click="open1(scope.row)" v-if="scope.row.workstationId==7" :disabled="(scope.row.totalQuantity ==0&&scope.row.workstationId==7)">{{ $t('reportWork.printlabels') }}</el-button> |
| | | </template> |
| | | |
| | | </el-table-column> |
| | |
| | | @Override |
| | | public List<Damage> selectDamage(String startTime, String endTime, int type, int status, String workingProcedure) { |
| | | LambdaQueryWrapper<Damage> damageSelectWrapper = new LambdaQueryWrapper<>(); |
| | | if (endTime != null && !endTime.isEmpty()) { |
| | | endTime = endTime + " 23:59:59"; |
| | | } |
| | | damageSelectWrapper.between(Damage::getDamageTime, startTime, endTime); |
| | | damageSelectWrapper.ne(Damage::getStatus, 7); |
| | | if (type != 0) { |
| | |
| | | } |
| | | if (!"0".equals(workingProcedure)) { |
| | | damageSelectWrapper.eq(Damage::getWorkingProcedure, workingProcedure); |
| | | } |
| | | List<Damage> damageList = baseMapper.selectList(damageSelectWrapper); |
| | | for (Damage damage : damageList) { |
| | | damage.setStatus(3); |
| | | } |
| | | return baseMapper.selectList(damageSelectWrapper); |
| | | } |
| | |
| | | |
| | | List<Map<String, Object>> selectFlowCard(@Param("processId") String processId, @Param("technologyNumber") Integer technologyNumber); |
| | | |
| | | List<Map<String, Object>> selectLabel(@Param(value = "list") List<String> processId, @Param("technologyNumber") Integer technologyNumber); |
| | | List<Map<String, Object>> selectLabel(@Param(value = "list") List<String> processId, @Param("technologyNumber") List<Integer> technologyNumber); |
| | | } |
| | |
| | | |
| | | List<Map<String, Object>> selectFlowCard(String processId, Integer technologyNumber); |
| | | |
| | | List<Map<String, Object>> selectLabel(List<String> processId, Integer technologyNumber); |
| | | List<Map<String, Object>> selectLabel(List<String> processId, List<Integer> technologyNumber); |
| | | } |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> selectLabel(List<String> processId, Integer technologyNumber){ |
| | | public List<Map<String, Object>> selectLabel(List<String> processId, List<Integer> technologyNumber){ |
| | | return baseMapper.selectLabel(processId, technologyNumber); |
| | | } |
| | | } |
| | |
| | | from sd.order_glass_detail as ogd |
| | | where ogd.order_id = left (#{processId} |
| | | , 10) |
| | | and position (ogd.technology_number in #{technologyNumber}) |
| | | and position(ogd.technology_number in #{technologyNumber}) |
| | | GROUP BY order_id, order_number) as ogdc |
| | | on ogdc.order_id = ogd.order_id and ogdc.order_number = ogd.order_number and |
| | | ogdc.technology_number = ogd.technology_number |
| | |
| | | left join sd.basic_glass_type bgt on bgt.type_id = pt.type_id |
| | | where fc.process_id in ( |
| | | <foreach collection="processId" item="item" separator=","> |
| | | #{item} |
| | | #{item} |
| | | </foreach> |
| | | ) |
| | | and fc.technology_number in ( |
| | | <foreach collection="technologyNumber" item="items" separator=","> |
| | | #{items} |
| | | </foreach> |
| | | ) |
| | | and fc.technology_number = #{technologyNumber} |
| | | group by od.order_number, od.width, od.height |
| | | group by fc.process_id, fc.technology_number, od.order_number, od.width, od.height |
| | | </select> |
| | | |
| | | |
| | |
| | | out08Glassstate = "1"; |
| | | } |
| | | |
| | | // taskRequestTypeValue = "3"; |
| | | // taskRequestTypeValue = "2"; |
| | | // out08Glassstate = "1"; |
| | | // out10Glassstate = "1"; |
| | | // currentSlot = "1"; |
| | | // confirmationWrodValue = "0"; |
| | | // glassIdeValue = "P25010108|44|1"; |
| | | // glassIdeValue = "P25021704|75|12"; |
| | | |
| | | log.info("1、获取到的请求字为:{},获取到的扫描ID为:{},获取到的确认字为:{},获取到的出片状态分别为:A09:{}、A10:{},当前格子号为:{}", |
| | | taskRequestTypeValue, glassIdeValue, confirmationWrodValue, out08Glassstate, out10Glassstate, currentSlot); |
| | |
| | | endcell = queryLineByGlassInfo(a09EdgGlass, a10EdgGlass, glassInfo, out08Glassstate, out10Glassstate); |
| | | } else { |
| | | //按照状态判断两条线走那条线 |
| | | endcell = computerLineByState(out08Glassstate, out10Glassstate); |
| | | |
| | | GlassInfo glassInfos = glassInfoService.getOne( |
| | | new LambdaQueryWrapper<GlassInfo>() |
| | | .eq(GlassInfo::getGlassId, glassId) |
| | | ); |
| | | if(glassInfos!=null){ |
| | | if (Math.max(glassInfos.getWidth(), glassInfos.getHeight()) > Integer.parseInt(firstLength) && out08Glassstate == 1) { |
| | | endcell = Const.A09_OUT_TARGET_POSITION; |
| | | } else { |
| | | endcell = computerLineByState(out08Glassstate, out10Glassstate); |
| | | } |
| | | }else{ |
| | | endcell = computerLineByState(out08Glassstate, out10Glassstate); |
| | | } |
| | | if (out08Glassstate == 1 && out10Glassstate == 1) { |
| | | EdgStorageCageDetails a09EdgGlass = queryGlassByTaskCache(Const.A09_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT_ALL); |
| | | EdgStorageCageDetails a10EdgGlass = queryGlassByTaskCache(Const.A10_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT_ALL); |
| | |
| | | wrapper.last("order by count(t.glass_id) desc limit 2"); |
| | | List<EdgStorageCageDetails> list = edgStorageCageDetailsService.list(wrapper); |
| | | if (CollectionUtil.isEmpty(list)) { |
| | | log.info("笼子内没有找到合适的玻璃"); |
| | | MPJQueryWrapper<GlassInfo> queryWrapper = new MPJQueryWrapper<GlassInfo>() |
| | | .selectAll(GlassInfo.class).eq("t.glass_id", glassId); |
| | | if (endcell == Const.A10_OUT_TARGET_POSITION) { |
| | | queryWrapper.innerJoin("(select glass_id, case when height <= width then width else height end as first_length, " + |
| | | queryWrapper.leftJoin("(select glass_id, case when height <= width then width else height end as first_length, " + |
| | | "case when width < height then width else height end as second_length from edg_storage_cage_details) t1 " + |
| | | "on t.glass_id = t1.glass_id and (t1.first_length between " + minTwoFirstLength + " and " + firstLength |
| | | + " and t1.second_length between " + minTwoSecondLength + " and " + secondLength + ") "); |
| | | } else { |
| | | queryWrapper.innerJoin("(select glass_id, case when height <= width then width else height end as first_length, " + |
| | | queryWrapper.leftJoin("(select glass_id, case when height <= width then width else height end as first_length, " + |
| | | "case when width < height then width else height end as second_length from edg_storage_cage_details) t1 " + |
| | | "on t.glass_id = t1.glass_id and (t1.first_length >=" + minOneFirstLength + " and t1.second_length>=" + minOneSecondLength + ") "); |
| | | } |
| | | GlassInfo one = glassInfoService.getOne(queryWrapper); |
| | | log.info("找到合适的玻璃" + one); |
| | | if (one != null) { |
| | | EdgStorageCageDetails resultDetails = new EdgStorageCageDetails(); |
| | | BeanUtils.copyProperties(one, resultDetails); |
| | |
| | | } |
| | | } |
| | | } |
| | | if (endcell == Const.A09_OUT_TARGET_POSITION && Math.min(glassInfo.getWidth(), glassInfo.getHeight()) < Integer.parseInt(minOneFirstLength)) { |
| | | log.info("尺寸不符合最大线最小尺寸{}", glassInfo); |
| | | return Boolean.FALSE; |
| | | } |
| | | return saveOutGlassMessageBySlot(glassInfo, endcell, confirmationWrodAddress, glassId, currentSlot); |
| | | } |
| | | |
| | |
| | | cloud: |
| | | nacos: |
| | | discovery: |
| | | server-addr: 10.153.19.150:8848 |
| | | server-addr: 10.153.19.150:8840 |
| | | application: |
| | | name: cacheGlass |
| | | redis: |
| | |
| | | min: |
| | | one: #第一条磨边线的最小尺寸信息 |
| | | firstLength: 500 |
| | | secondLength: 400 |
| | | secondLength: 500 |
| | | two: #第二条磨边线的最小尺寸信息 |
| | | firstLength: 400 |
| | | secondLength: 400 |
| | |
| | | .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT) |
| | | .isNotNull(BigStorageCageFeedTask::getTargetSlot); |
| | | List<BigStorageCageFeedTask> bigStorageCageFeedTaskList = bigStorageCageFeedTaskMapper.selectList(feedTaskWrapper); |
| | | |
| | | List<String> glassIds = bigStorageCageDetailsList.stream().map(BigStorageCageDetails::getGlassId).collect(Collectors.toList()); |
| | | List<BigStorageCageFeedTask> feedTasks = bigStorageCageFeedTaskList.stream() |
| | | .filter(task -> !glassIds.contains(task.getGlassId())) |
| | | .collect(Collectors.toList()); |
| | | |
| | | |
| | | Map<String, BigStorageCageFeedTask> listMap = bigStorageCageFeedTaskList.stream() |
| | | .collect(Collectors.toMap(BigStorageCageFeedTask::getGlassId, task -> task)); |
| | | Iterator<BigStorageCageDetails> iterator = bigStorageCageDetailsList.iterator(); |
| | |
| | | BigStorageCageFeedTask bigStorageCageFeedTask = listMap.get(bigStorageCageDetails.getGlassId()); |
| | | bigStorageCageDetails.setBigStorageCageFeedTask(bigStorageCageFeedTask); |
| | | } |
| | | for (BigStorageCageFeedTask bigStorageCageFeedTask : feedTasks |
| | | ) { |
| | | BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails(); |
| | | bigStorageCageDetails.setBigStorageCageFeedTask(bigStorageCageFeedTask); |
| | | bigStorageCageDetailsList.add(bigStorageCageDetails); |
| | | } |
| | | bigStorageCageDetailsList.sort(Comparator |
| | | .comparing((BigStorageCageDetails detail) -> detail.getBigStorageCageFeedTask().getId())); |
| | | return bigStorageCageDetailsList; |
| | | } |
| | | |
| | |
| | | package com.mes.bigstoragetask.controller; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.mes.bigstorage.entity.BigStorageCageDetails; |
| | | import com.mes.bigstoragetask.entity.BigStorageCageFeedTask; |
| | | import com.mes.bigstoragetask.service.BigStorageCageFeedTaskService; |
| | | import com.mes.damage.entity.Damage; |
| | | import com.mes.utils.Result; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import liquibase.util.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | |
| | | @Autowired |
| | | private BigStorageCageFeedTaskService bigStorageCageFeedTaskService; |
| | | |
| | | @ApiOperation("理片笼详情删除") |
| | | @ApiOperation("进片任务删除") |
| | | @PostMapping("/updateBigStorageCageFeedTask") |
| | | public Result deleteBigStorageCageDetails(@RequestBody BigStorageCageFeedTask bigStorageCageFeedTask) { |
| | | bigStorageCageFeedTaskService.updateById(bigStorageCageFeedTask); |
| | | return Result.build(200, "修改成功", 1); |
| | | } |
| | | |
| | | @ApiOperation("进片任务报表") |
| | | @PostMapping("/selectBigStorageCageFeedTask") |
| | | public Result selectBigStorageCageFeedTask(@RequestBody BigStorageCageFeedTask bigStorageCageFeedTask, |
| | | @RequestParam(required = false) String startTime, |
| | | @RequestParam(required = false) String endTime) { |
| | | if (endTime != null && !endTime.isEmpty()) { |
| | | endTime = endTime + " 23:59:59"; |
| | | } |
| | | LambdaQueryWrapper<BigStorageCageFeedTask> wrapper = new LambdaQueryWrapper<>(); |
| | | if (bigStorageCageFeedTask.getTargetSlot() != null) { |
| | | wrapper.eq(BigStorageCageFeedTask::getTargetSlot, bigStorageCageFeedTask.getTargetSlot()); |
| | | } |
| | | if (bigStorageCageFeedTask.getWidth() != null) { |
| | | wrapper.eq(BigStorageCageFeedTask::getWidth, bigStorageCageFeedTask.getWidth()); |
| | | } |
| | | if (bigStorageCageFeedTask.getHeight() != null) { |
| | | wrapper.eq(BigStorageCageFeedTask::getHeight, bigStorageCageFeedTask.getHeight()); |
| | | } |
| | | if (bigStorageCageFeedTask.getLine() != 0) { |
| | | wrapper.eq(BigStorageCageFeedTask::getLine, bigStorageCageFeedTask.getLine()); |
| | | } |
| | | if (bigStorageCageFeedTask.getTaskState() != -1) { |
| | | wrapper.eq(BigStorageCageFeedTask::getTaskState, bigStorageCageFeedTask.getTaskState()); |
| | | } |
| | | if (bigStorageCageFeedTask.getTaskType() != 0) { |
| | | wrapper.eq(BigStorageCageFeedTask::getTaskType, bigStorageCageFeedTask.getTaskType()); |
| | | } |
| | | if (startTime != null && !startTime.isEmpty()) { |
| | | wrapper.ge(BigStorageCageFeedTask::getCreateTime, startTime); |
| | | } |
| | | if (endTime != null && !endTime.isEmpty()) { |
| | | wrapper.le(BigStorageCageFeedTask::getCreateTime, endTime); |
| | | } |
| | | wrapper.orderByDesc(BigStorageCageFeedTask::getId); |
| | | wrapper.and(item -> item.eq(BigStorageCageFeedTask::getDeleted, 0) |
| | | .or() |
| | | .eq(BigStorageCageFeedTask::getDeleted, 1)); |
| | | wrapper.between(BigStorageCageFeedTask::getCreateTime, startTime, endTime); |
| | | return Result.build(200, "查询成功", bigStorageCageFeedTaskService.list(wrapper)); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | * 目标位置 |
| | | */ |
| | | @ApiModelProperty(value = "目标位置", position = 4) |
| | | private int targetSlot; |
| | | private Integer targetSlot; |
| | | |
| | | /** |
| | | * 玻璃类型 |
| | |
| | | maxX = e.getXCoordinate(); |
| | | slot = e.getSlot(); |
| | | bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.TEMPERING_OUT_TARGET_POSITION, |
| | | e.getWidth() * 10, e.getHeight(), trainNumber, serialNumber++, 1, new Date())); |
| | | e.getWidth() * 10, e.getHeight() * 10, trainNumber, serialNumber++, 1, new Date())); |
| | | } |
| | | } else { |
| | | bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.ARTIFICIAL_OUT_TARGET_POSITION, |
| | | e.getWidth() * 10, e.getHeight(), trainNumber, serialNumber++, 1, new Date())); |
| | | if(serialNumber <= outCarMaxSize && remainWidth > maxLength){ |
| | | remainWidth = remainWidth - maxLength - glassGap; |
| | | bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.ARTIFICIAL_OUT_TARGET_POSITION, |
| | | e.getWidth() * 10, e.getHeight() * 10, trainNumber, serialNumber++, 1, new Date())); |
| | | }else{ |
| | | remainWidth = carWidth - maxLength - glassGap; |
| | | trainNumber = trainNumber + 1; |
| | | serialNumber = 1; |
| | | bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.ARTIFICIAL_OUT_TARGET_POSITION, |
| | | e.getWidth() * 10, e.getHeight() * 10, trainNumber, serialNumber++, 1, new Date())); |
| | | } |
| | | |
| | | } |
| | | } |
| | | if (isTask == 2) { |
| | |
| | | and deleted = 0 |
| | | and (target_slot = 0 or target_slot is null) |
| | | group by line |
| | | HAVING DATEDIFF(SECOND, max(create_time), GETDATE()) + 45 > 40 or SUM(case task_state when 2 then 1 else 0 end)>1 |
| | | HAVING DATEDIFF(SECOND, max(create_time), GETDATE()) > 40 or SUM(case task_state when 2 then 1 else 0 end)>1 |
| | | ) t |
| | | where t.total_count = t.real_count |
| | | order by real_count desc,line desc |
| | |
| | | |
| | | @Test |
| | | public void ca11() { |
| | | plcStorageCageTask.queryAndChangeGlass("P24110503|17|4"); |
| | | bigStorageCageDetailsService.selectFeedTask(); |
| | | // plcStorageCageTask.queryAndChangeGlass("P24110503|17|4"); |
| | | } |
| | | |
| | | @Resource |
| | |
| | | |
| | | @Test |
| | | public void computeOutMoreGlassInfo() { |
| | | List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.selectJoinList(TemperingGlassInfo.class, new MPJLambdaWrapper<TemperingGlassInfo>() |
| | | .selectAll(TemperingGlassInfo.class) |
| | | .leftJoin(BigStorageCageOutTask.class, BigStorageCageOutTask::getGlassId, TemperingGlassInfo::getGlassId) |
| | | .eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW) |
| | | .isNull(BigStorageCageOutTask::getGlassId) |
| | | .orderByAsc(TemperingGlassInfo::getTemperingFeedSequence)); |
| | | plcStorageCageTask.computeOutMoreGlassInfo(temperingGlassInfoList, true, 1); |
| | | // List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.selectJoinList(TemperingGlassInfo.class, new MPJLambdaWrapper<TemperingGlassInfo>() |
| | | // .selectAll(TemperingGlassInfo.class) |
| | | // .leftJoin(BigStorageCageOutTask.class, BigStorageCageOutTask::getGlassId, TemperingGlassInfo::getGlassId) |
| | | // .eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW) |
| | | // .isNull(BigStorageCageOutTask::getGlassId) |
| | | // .orderByAsc(TemperingGlassInfo::getTemperingFeedSequence)); |
| | | // plcStorageCageTask.computeOutMoreGlassInfo(temperingGlassInfoList, true, 1); |
| | | List<BigStorageCageDetails> artificialList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>() |
| | | .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL) |
| | | .orderByAsc(BigStorageCageDetails::getSlot) |
| | | .orderByDesc(BigStorageCageDetails::getId)); |
| | | plcStorageCageTask.computeOutMoreGlassInfo(artificialList, Boolean.FALSE, 1); |
| | | } |
| | | |
| | | @Test |
| | |
| | | port: 8083 |
| | | spring: |
| | | profiles: |
| | | active: cz |
| | | active: dev |
| | | application: |
| | | name: loadGlass |
| | | liquibase: |
| | |
| | | */ |
| | | List<Map<String, Object>> downGlassLabelPrint(@Param("processId") String processId, @Param("technologyNumber") Integer technologyNumber, @Param(value = "glassIds") List<String> glassIds); |
| | | |
| | | /** |
| | | * 获取打印信息 |
| | | * |
| | | * @param processId,technologyNumber |
| | | * @return |
| | | */ |
| | | List<Map<String, Object>> downGlassLabelPrintScan(@Param("processId") String processId, @Param("technologyNumber") Integer technologyNumber, @Param(value = "glassIds") List<String> glassIds); |
| | | |
| | | } |
| | |
| | | List<String> glassIds = downGlassTasks.stream().map(DownGlassTask::getGlassId).collect(Collectors.toList()); |
| | | resultList = baseMapper.downGlassLabelPrint(null, null, glassIds); |
| | | } else { |
| | | resultList = baseMapper.downGlassLabelPrint(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer(), null); |
| | | if (downGlassInfo.getGlassId() != null) { |
| | | List<String> glassIds = new ArrayList<>(); |
| | | glassIds.add(downGlassInfo.getGlassId()); |
| | | // resultList = baseMapper.downGlassLabelPrint(null, null, glassIds); |
| | | resultList = baseMapper.downGlassLabelPrintScan(null, null, glassIds); |
| | | } else { |
| | | if (downGlassInfo.getLayer() == 0) { |
| | | downGlassInfo.setLayer(null); |
| | | } |
| | | resultList = baseMapper.downGlassLabelPrint(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer(), null); |
| | | } |
| | | } |
| | | if (CollectionUtils.isNotEmpty(resultList)) { |
| | | List<String> flowCardIds = resultList.stream() |
| | | .map(map -> (String) map.get("flow_card_id")) |
| | | .distinct() |
| | | .collect(Collectors.toList()); |
| | | List<Integer> layers = resultList.stream() |
| | | .map(map -> (Integer) map.get("layer")) |
| | | .distinct() |
| | | .collect(Collectors.toList()); |
| | | log.info("MES落架数据:{}", resultList); |
| | |
| | | List<Map<String, Object>> labelInfo; |
| | | if (downGlassInfo.getFlowCardId() != null) { |
| | | flowCardIds.add(downGlassInfo.getFlowCardId()); |
| | | labelInfo = flowCardService.selectLabel(flowCardIds, 1); |
| | | labelInfo = flowCardService.selectLabel(flowCardIds, layers); |
| | | } else { |
| | | labelInfo = flowCardService.selectLabel(flowCardIds, 1); |
| | | labelInfo = flowCardService.selectLabel(flowCardIds, layers); |
| | | } |
| | | log.info("标签数据:{}", labelInfo); |
| | | |
| | |
| | | int orderNumber = (int) row1.get("orderNumber"); |
| | | int technologyNumber = (int) row1.get("technologyNumber"); |
| | | String processId = (String) row1.get("process_id"); |
| | | // if (downGlassInfo.getLayer() != 0) { |
| | | if (orderNumber == glass_type && processId.equals(flowCardId)) { |
| | | if (orderNumber == glass_type && processId.equals(flowCardId) && technologyNumber == layer) { |
| | | String order_id = (String) row1.get("order_id"); |
| | | String project = (String) row1.get("project"); |
| | | Long customer_id = (Long) row1.get("customer_id"); |
| | | BigDecimal width = (BigDecimal) row1.get("width"); |
| | | BigDecimal height = (BigDecimal) row1.get("height"); |
| | | Long quantity = (Long) row1.get("quantity"); |
| | | String glass_child = (String) row1.get("glass_child"); |
| | | String process = (String) row1.get("process"); |
| | | String customer_name = (String) row1.get("customer_name"); |
| | | String processing_note = (String) row1.get("processing_note"); |
| | | String other_colunmns = (String) row1.get("other_colunmns"); |
| | | String building_number = (String) row1.get("building_number"); |
| | | String bend_radius = (String) row1.get("bend_radius"); |
| | | |
| | | String order_id = (String) row1.get("order_id"); |
| | | String project = (String) row1.get("project"); |
| | | Long customer_id = (Long) row1.get("customer_id"); |
| | | BigDecimal width = (BigDecimal) row1.get("width"); |
| | | BigDecimal height = (BigDecimal) row1.get("height"); |
| | | Long quantity = (Long) row1.get("quantity"); |
| | | String glass_child = (String) row1.get("glass_child"); |
| | | String process = (String) row1.get("process"); |
| | | String customer_name = (String) row1.get("customer_name"); |
| | | String processing_note = (String) row1.get("processing_note"); |
| | | String other_colunmns = (String) row1.get("other_colunmns"); |
| | | String building_number = (String) row1.get("building_number"); |
| | | String bend_radius = (String) row1.get("bend_radius"); |
| | | |
| | | row.put("orderNumber", orderNumber); |
| | | row.put("technology_number", technologyNumber); |
| | | row.put("order_id", order_id); |
| | | row.put("project", project); |
| | | row.put("customer_id", customer_id); |
| | | row.put("width", width); |
| | | row.put("height", height); |
| | | row.put("quantity", quantity); |
| | | row.put("glass_child", glass_child); |
| | | row.put("process", process); |
| | | row.put("customer_name", customer_name); |
| | | row.put("processing_note", processing_note); |
| | | row.put("other_colunmns", other_colunmns); |
| | | row.put("building_number", building_number); |
| | | row.put("bend_radius", bend_radius); |
| | | } |
| | | // } else { |
| | | // if (orderNumber == glass_type) { |
| | | // |
| | | // String order_id = (String) row1.get("order_id"); |
| | | // String project = (String) row1.get("project"); |
| | | // Long customer_id = (Long) row1.get("customer_id"); |
| | | // BigDecimal width = (BigDecimal) row1.get("width"); |
| | | // BigDecimal height = (BigDecimal) row1.get("height"); |
| | | // Long quantity = (Long) row1.get("quantity"); |
| | | // String glass_child = (String) row1.get("glass_child"); |
| | | // String process = (String) row1.get("process"); |
| | | // String customer_name = (String) row1.get("customer_name"); |
| | | // String processing_note = (String) row1.get("processing_note"); |
| | | // String other_colunmns = (String) row1.get("other_colunmns"); |
| | | // String building_number = (String) row1.get("building_number"); |
| | | // String bend_radius = (String) row1.get("bend_radius"); |
| | | // |
| | | // row.put("orderNumber", orderNumber); |
| | | // row.put("technology_number", technologyNumber); |
| | | // row.put("order_id", order_id); |
| | | // row.put("project", project); |
| | | // row.put("customer_id", customer_id); |
| | | // row.put("width", width); |
| | | // row.put("height", height); |
| | | // row.put("quantity", quantity); |
| | | // row.put("glass_child", glass_child); |
| | | // row.put("process", process); |
| | | // row.put("customer_name", customer_name); |
| | | // row.put("processing_note", processing_note); |
| | | // row.put("other_colunmns", other_colunmns); |
| | | // row.put("building_number", building_number); |
| | | // row.put("bend_radius", bend_radius); |
| | | // } |
| | | // } |
| | | row.put("orderNumber", orderNumber); |
| | | row.put("technology_number", technologyNumber); |
| | | row.put("order_id", order_id); |
| | | row.put("project", project); |
| | | row.put("customer_id", customer_id); |
| | | row.put("width", width); |
| | | row.put("height", height); |
| | | row.put("quantity", quantity); |
| | | row.put("glass_child", glass_child); |
| | | row.put("process", process); |
| | | row.put("customer_name", customer_name); |
| | | row.put("processing_note", processing_note); |
| | | row.put("other_colunmns", other_colunmns); |
| | | row.put("building_number", building_number); |
| | | row.put("bend_radius", bend_radius); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | GlassInfo glassInfo = new GlassInfo(); |
| | | BeanUtils.copyProperties(downStorageCageDetails, glassInfo); |
| | | //删除理片笼表拿走/破损数据数据 |
| | | GlassInfo glassInfo1 = glassInfoService.getOne( |
| | | new LambdaUpdateWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassInfo.getGlassId()) |
| | | ); |
| | | glassInfo.setLayer(glassInfo1.getLayer()); |
| | | damageService.deleteByGlassId(glassInfo.getGlassId()); |
| | | return initDownGlassTask(glassInfo, downStorageCageDetails.getSlot(), endCell, taskType); |
| | | } |
| | |
| | | </foreach> |
| | | |
| | | </if> |
| | | group by a.flow_card_id, a.layer, a.width, a.height, a.filmsid, a.thickness, a.glass_type, a.id |
| | | group by a.glass_id, a.flow_card_id, a.layer, a.width, a.height, a.filmsid, a.thickness, a.glass_type |
| | | order by a.id |
| | | </select> |
| | | |
| | | <select id="downGlassLabelPrintScan" resultType="java.util.Map"> |
| | | select a.flow_card_id, |
| | | a.layer, |
| | | a.width, |
| | | a.height, |
| | | a.filmsid, |
| | | a.thickness, |
| | | a.glass_type, |
| | | COUNT(*) AS quantity, |
| | | a.tempering_layout_id, |
| | | a.tempering_feed_sequence |
| | | from glass_info a |
| | | where |
| | | 1=1 |
| | | <if test="processId != null"> |
| | | and a.flow_card_id = #{processId} |
| | | </if> |
| | | <if test="technologyNumber != null"> |
| | | and a.layer = #{technologyNumber} |
| | | </if> |
| | | <if test="glassIds != null and !glassIds.isEmpty()"> |
| | | and a.glass_id in |
| | | <foreach collection="glassIds" item="item" open="(" close=")" separator=","> |
| | | #{item} <!-- 这里 MyBatis 会自动处理字符串 --> |
| | | </foreach> |
| | | |
| | | </if> |
| | | group by a.glass_id, a.flow_card_id, a.layer, a.width, a.height, a.filmsid, a.thickness, a.glass_type |
| | | order by a.id |
| | | </select> |
| | | |