Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override
| | |
| | | font-weight: normal; |
| | | height: 100%; |
| | | width: 100%; |
| | | min-width: 1536px; |
| | | min-height: 730px; |
| | | /*min-width: 1536px; |
| | | min-height: 730px;*/ |
| | | } |
| | | |
| | | a, |
| | |
| | | let money = ref("") |
| | | let otherMoneys = 0 |
| | | let sumMoney = 0 |
| | | let takeCare = "注æ:请妥åä¿ç®¡å¥½æå¸çç»çæ¶ï¼å¦æä¸¢å¤±ææåï¼æ1500å
åªèµå¿ã谢谢é
å!" |
| | | let remark = company.deliveryRemark |
| | | let takeCare =ref("注æ:请妥åä¿ç®¡å¥½æå¸çç»çæ¶ï¼å¦æä¸¢å¤±ææåï¼æ1500å
åªèµå¿ã谢谢é
å!") |
| | | let remark =ref(company.deliveryRemark) |
| | | |
| | | |
| | | |
| | |
| | | </tr> |
| | | <tr class="day-in" style="border: 0;"> |
| | | <td colspan="9" style="border: 0;"> |
| | | <div style="display:flex;text-align: left" class="bottom" v-for="item in remark"> |
| | | {{item}} |
| | | <div style="display:flex;text-align: left;border: 0;margin-top: 10px " class="bottom" > |
| | | <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 20 }" v-model="remark"/> |
| | | </div> |
| | | |
| | | </td> |
| | |
| | | export default defineStore('companyInfo', { |
| | | |
| | | state: () => ({ |
| | | timeOut:true,//éåtrueï¼å
¶ä»falseï¼æ¯å¦å¼å¯è¶
æ¶æ¹åå¤éæ¡ç¶æ |
| | | timeOut:true,//éåtrueï¼å
¶ä»falseï¼æ¯å¦å¼å¯åè´§è¶
æ¶æ¹åå¤éæ¡ç¶æé¢è² |
| | | connectMes:true,//常å·,ä¹ä¹trueï¼å
¶ä»falseï¼æ¾ç¤ºè®¢åæ¥å·¥è½¬ç§»æ¯å¦å¯ç¨ |
| | | companyName: 'éåç¦å天æç»çæéå
¬å¸', |
| | | address:'æµæ±çéåå¸éä¸åºæ¹å®
éå·¥ä¸åè½åºé¹¤å²©è¡28å·2å·', |
| | |
| | | selectOrderReviewShow:true, //订åé¦é¡µå å·¥åå®¡æ ¸æé®æ¯å¦æ¾ç¤º |
| | | productName:"product_name", |
| | | decValue:2,//订åä¿ç使°ï¼å¤©æ´¥3ä½,常å·2ä½ |
| | | label:1,//æ ç¾ç±»å |
| | | label:1,//æ ç¾ç±»åï¼èªå®ä¹æå°æ ç¾å¸¸å·2ï¼å
¶ä»1ï¼ |
| | | calculateType:1,//订åè®¡ç®æ¹å¼ |
| | | reportType:2,//æ¥å·¥æ¯å¦æ¥è¯¢æ ·å订å2æ¥è¯¢ï¼1䏿¥è¯¢ |
| | | qualityInsStatus:2,//跨工åºè´¨æ£å®¡æ ¸ï¼1ä¸éè¦ï¼2éè¦ |
| | |
| | | const dataLoaded = ref(false);
|
| | |
|
| | | const selectLayout = () => {
|
| | | request.post(`/glassOptimize/selectOptimizeResult/${processId}`)
|
| | | .then((res) => {
|
| | | if (res.code == 200) {
|
| | | try {
|
| | | const parsedData = JSON.parse(res.data.data[0].Layouts);
|
| | | layoutData.value = parsedData;
|
| | | dataLoaded.value = true;
|
| | | ElMessage.success("æå¼ç徿å");
|
| | | } catch (error) {
|
| | | ElMessage.error("è§£ææ°æ®æ¶åºé:", error);
|
| | | }
|
| | | } else {
|
| | | ElMessage.error(t('basicData.msg.requestFailed'));
|
| | | }
|
| | | })
|
| | | .catch((error) => {
|
| | | console.error("请æ±å¤±è´¥:", error);
|
| | | ElMessage.error(t('basicData.msg.requestFailed'));
|
| | | });
|
| | | if(processId!=="undefined"){
|
| | | request.post(`/glassOptimize/selectOptimizeResult/${processId}`)
|
| | | .then((res) => {
|
| | | if (res.code == 200) {
|
| | | try {
|
| | | const parsedData = JSON.parse(res.data.data[0].Layouts);
|
| | | layoutData.value = parsedData;
|
| | | dataLoaded.value = true;
|
| | | ElMessage.success("æå¼ç徿å");
|
| | | } catch (error) {
|
| | | ElMessage.error("è§£ææ°æ®æ¶åºé:", error);
|
| | | }
|
| | | }
|
| | | })
|
| | | .catch((error) => {
|
| | | console.error("请æ±å¤±è´¥:", error);
|
| | | ElMessage.error(t('basicData.msg.ServerConnectionError'));
|
| | | });
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | onMounted(() => {
|
| | |
| | | <template> |
| | | <div> |
| | | <el-button id="button" type="primary" @click="handlePrint">æå°çå¾</el-button> |
| | | <el-select |
| | | v-model="printLayout" |
| | | placeholder="éæ©æå°å¸å±" |
| | | @change="handleLayoutChange" |
| | | style="width: 150px; margin-bottom: 10px;"> |
| | | <el-option label="åè¡ä¸¤å" value="4rows-2cols"></el-option> |
| | | <el-option label="ä¸è¡ä¸¤å" value="3rows-2cols"></el-option> |
| | | <el-option label="ä¸è¡ä¸å" value="3rows-1col"></el-option> |
| | | <el-option label="两è¡ä¸¤å" value="2rows-2cols"></el-option> |
| | | </el-select> |
| | | <el-button id="button" type="primary" @click="handlePrint">æå°</el-button> |
| | | |
| | | <div ref="printContainer" style="position: relative;"> |
| | | <RectRenderer |
| | |
| | | :printLayout="printLayout" |
| | | :printWidth="currentPrintWidth" |
| | | :printHeight="currentPrintHeight" |
| | | style="position: absolute;" |
| | | :materialDetails="materialDetails" |
| | | :state="state" |
| | | style="" |
| | | v-if="dataLoaded" |
| | | /> |
| | | </div> |
| | |
| | | import RectRenderer from './page/RectRenderer.vue'; |
| | | import request from "@/utils/request"; |
| | | |
| | | const props = defineProps({ |
| | | project : null, |
| | | state : null |
| | | }); |
| | | const printLayout = ref('2rows-2cols'); |
| | | const rectRenderer = ref(null); |
| | | const savedProjectNo = localStorage.getItem('projectNo'); |
| | | const processId = savedProjectNo; |
| | | const layoutData = ref(null); |
| | | let processId = null; |
| | | const layoutData = ref(); |
| | | const dataLoaded = ref(false); |
| | | const materialDetails = ref(); |
| | | const state = ref(); |
| | | // å®ä¹ä¸åå¸å±å¯¹åºç尺寸 |
| | | const layoutDimensions = { |
| | | '4rows-2cols': { width: 1000, height: 1000 }, |
| | |
| | | .then((res) => { |
| | | if (res.code == 200) { |
| | | try { |
| | | const parsedData = JSON.parse(res.data.data[0].Layouts); |
| | | layoutData.value = parsedData; |
| | | dataLoaded.value = true; |
| | | layoutData.value = JSON.parse(res.data.data[0].Layouts); |
| | | materialDetails.value=res.data.optimizeUse; |
| | | dataLoaded.value=true; |
| | | } catch (error) { |
| | | console.error("è§£æå¸å±æ°æ®å¤±è´¥:", error); |
| | | } |
| | |
| | | }; |
| | | |
| | | onMounted(() => { |
| | | selectLayout(); |
| | | if (props.project) { |
| | | processId=props.project.projectNumber; |
| | | state.value=props.state; |
| | | selectLayout(); |
| | | } |
| | | |
| | | }); |
| | | |
| | | const handlePrint = () => { |
| | |
| | | :layoutData="layoutData"
|
| | | :gw="1400"
|
| | | :gh="800"
|
| | | :state=0
|
| | | style="width: 1500px; height: 800px; position: relative;"
|
| | | v-if="dataLoaded"
|
| | | />
|
| | |
| | | >
|
| | | <option
|
| | | v-for="option in getOptions(param.key)"
|
| | | :key="option.value" |
| | | :key="option.value"
|
| | | :value="option.value"
|
| | | :selected="option.value === settings.optimization[param.key]"
|
| | | >
|
| | | {{ option.label }}
|
| | |
| | | </template>
|
| | | </div>
|
| | |
|
| | | <button class="button" @click="saveToDatabase">ä¿å</button>
|
| | | <button class="button" style="height: 40px;" @click="saveToDatabase">ä¿å</button>
|
| | | </div>
|
| | | </template>
|
| | |
|
| | |
| | | import ProjectCreate from "@/views/pp/glassOptimize/ProjectCreate.vue" |
| | | import GlassComputed from "@/views/pp/glassOptimize/GlassComputed.vue"; |
| | | import ProjectMange from "@/views/pp/glassOptimize/ProjectMange.vue"; |
| | | import OptimizationRectPrint from "@/views/pp/glassOptimize/OptimizationRectPrint.vue"; |
| | | |
| | | import {ref} from "vue"; |
| | | import {ElMessage} from "element-plus"; |
| | | let dialogVisible = ref(false) |
| | | let detailPage = ref(0) |
| | | let state = ref(1) |
| | | const changeDialog = (value) => { |
| | | dialogVisible.value = true |
| | | detailPage.value = value |
| | |
| | | const switchDialog = (number) => { |
| | | projectNumber.value = number; |
| | | detailPage.value = 3; |
| | | }; |
| | | |
| | | const switchDialog1 = (number) => { |
| | | projectNumber.value = number; |
| | | detailPage.value = 4; |
| | | state.value=1; |
| | | }; |
| | | |
| | | const switchDialog2 = (number) => { |
| | | projectNumber.value = number; |
| | | detailPage.value = 4; |
| | | state.value=2; |
| | | }; |
| | | |
| | | //å·¥ç¨ç®¡çå
³éå¼¹çª |
| | |
| | | v-model="dialogVisible" |
| | | :title="detailPage ===1? 'å建工ç¨' : detailPage ===2? 'å·¥ç¨ç®¡ç' : detailPage ===3? '模æè®¡ç®':''" |
| | | destroy-on-close |
| | | style="width: 90%;height:90%;margin-top: 3vh" |
| | | style="width: 90%;height:90%;margin-top: 3vh;overflow: auto" |
| | | z-index="100" |
| | | > |
| | | <project-create v-if="detailPage===1" @switch-dialog="switchDialog"/> |
| | | <project-mange v-if="detailPage===2" @switch-dialog="switchDialog" @closeDetailPage="handlePopupClose"/> |
| | | <project-mange v-if="detailPage===2" @switch-dialog="switchDialog" @switch-dialog-print="switchDialog1" |
| | | @switch-dialog-print2="switchDialog2" @closeDetailPage="handlePopupClose"/> |
| | | <glass-computed v-if="detailPage===3" :project="projectNumber"/> |
| | | <optimization-rect-print v-if="detailPage===4" :project="projectNumber" :state="state"/> |
| | | <div v-else></div> |
| | | </el-dialog> |
| | | |
| | |
| | | {code: 'viewTempered', name: 'æ¥çé¢åçå¾', prefixIcon: 'vxe-icon-custom-column'}, |
| | | {code: 'viewOptimize', name: 'æ¥çä¼åçå¾', prefixIcon: 'vxe-icon-layout'}, |
| | | {code: 'Export', name: 'æ°æ®å¯¼åº', prefixIcon: 'vxe-icon-download', visible: true, disabled: false}, |
| | | {code: 'print', name: 'æå°ä¼åæ¥å', prefixIcon: 'vxe-icon-layout'}, |
| | | {code: 'print2', name: 'æå°ä¼åç徿¥å', prefixIcon: 'vxe-icon-layout'}, |
| | | |
| | | ], |
| | | [] |
| | |
| | | actionFunction: async ({row}) => { |
| | | const projectNo = row.projectNumber; |
| | | emit('switch-dialog', row); |
| | | } |
| | | }, |
| | | { |
| | | code: 'print', // æå° |
| | | initialState: '1', |
| | | temperingState: '0', |
| | | targetState: null, |
| | | successMsg: '模æè®¡ç®å·²å¯å¨ï¼', |
| | | checkMessage: 'å½åå·¥ç¨ç¶æä¸ç¬¦å模æè®¡ç®æ¡ä»¶ï¼è¯·ç¡®è®¤å·¥ç¨ç¶æååæä½ï¼', |
| | | requiresRow: true, |
| | | actionFunction: async ({row}) => { |
| | | const projectNo = row.projectNumber; |
| | | emit('switch-dialog-print', row); |
| | | } |
| | | }, |
| | | { |
| | | code: 'print2', // æå° |
| | | initialState: '1', |
| | | temperingState: '0', |
| | | targetState: null, |
| | | successMsg: '模æè®¡ç®å·²å¯å¨ï¼', |
| | | checkMessage: 'å½åå·¥ç¨ç¶æä¸ç¬¦å模æè®¡ç®æ¡ä»¶ï¼è¯·ç¡®è®¤å·¥ç¨ç¶æååæä½ï¼', |
| | | requiresRow: true, |
| | | actionFunction: async ({row}) => { |
| | | const projectNo = row.projectNumber; |
| | | emit('switch-dialog-print2', row); |
| | | } |
| | | }, |
| | | { |
| | |
| | | } |
| | | if (config.code === 'compute') { |
| | | if(row.state===1 && row.temperingState===0){ |
| | | config.actionFunction({row}); |
| | | }else{ |
| | | ElMessage.warning(config.checkMessage); |
| | | } |
| | | return; |
| | | } |
| | | if (config.code === 'print') { |
| | | if(row.optimizeState===1 ){ |
| | | config.actionFunction({row}); |
| | | }else{ |
| | | ElMessage.warning(config.checkMessage); |
| | | } |
| | | return; |
| | | } |
| | | if (config.code === 'print2') { |
| | | if(row.optimizeState===1 ){ |
| | | config.actionFunction({row}); |
| | | }else{ |
| | | ElMessage.warning(config.checkMessage); |
| | |
| | | } |
| | | |
| | | //å®ä¹åæ¢æ¨¡æè®¡ç®å¼¹çª |
| | | const emit = defineEmits(['switch-dialog', 'close-detail-page']); |
| | | const emit = defineEmits(['switch-dialog', 'close-detail-page','switch-dialog-print','switch-dialog-print2']); |
| | | |
| | | //å®ä¹å·¥ç¨ç¶æ |
| | | const optionVal = ref('all') |
| | |
| | | import {useI18n} from "vue-i18n"; |
| | | import {ElMessage} from "element-plus"; |
| | | import deepClone from "@/utils/deepClone"; |
| | | import {addListener, toolbarButtonClickEvent} from "@/hook/mouseMove"; |
| | | const { t } = useI18n() |
| | | |
| | | const xGrid = ref() |
| | |
| | | scrollX:{enabled: true}, |
| | | scrollY:{ enabled: true ,gt:0},//å¼å¯èææ»å¨ |
| | | showOverflow:true, |
| | | menuConfig: { |
| | | body: { |
| | | options: [ |
| | | [ |
| | | { code: 'copyChecked', name: t('basicData.selectSame'), prefixIcon: 'vxe-icon-copy', visible: true, disabled: false }, |
| | | { code: 'copyAll', name: t('basicData.sameAfterwards'), prefixIcon: 'vxe-icon-feedback', visible: true, disabled: false }, |
| | | ] |
| | | ] |
| | | } |
| | | }, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | |
| | | |
| | | watch(() => props.tableData, async (newData) => { |
| | | if (Array.isArray(newData)) { |
| | | addListener(xGrid.value,gridOptions) |
| | | console.log(newData) |
| | | xGrid.value.loadData(deepClone(newData)) |
| | | const data = xGrid.value.getTableData().fullData |
| | |
| | | // Emit äºä»¶å°æ´æ°åçå¼ä¼ éç»ç¶ç»ä»¶ |
| | | emit('upProcessId', rowClickIndex.value.processId,rowClickIndex.value.patch_state,rowClickIndex.value.technologyNumber); |
| | | emit('updateTechnologyNumber', rowClickIndex.value.processId,rowClickIndex.value.patch_state,rowClickIndex.value.technologyNumber); |
| | | }, |
| | | menuClick ({ menu, row, column }) { |
| | | const $grid = xGrid.value |
| | | if ($grid) { |
| | | switch (menu.code) { |
| | | |
| | | case 'copyChecked' :{ |
| | | let result = toolbarButtonClickEvent() |
| | | if(result){ |
| | | const dataList = xGrid.value.getTableData().visibleData |
| | | let firstVal=null; |
| | | if(result.cell.indexOf('.')>-1){ |
| | | firstVal = eval("dataList["+result.start +"]."+result.cell) |
| | | }else { |
| | | firstVal=dataList[result.start][result.cell]; |
| | | } |
| | | dataList.forEach((item,index) =>{ |
| | | if(index>=result.start && index<=result.end){ |
| | | //åæ¶éä¸ |
| | | if(parseInt(firstVal)<=0){ |
| | | xGrid.value.setCheckboxRow(item, false); |
| | | } |
| | | if(result.cell.indexOf('.')>-1){ |
| | | const columnArr = result.cell.split('.') |
| | | item[columnArr[0]][columnArr[1]] = firstVal |
| | | }else{ |
| | | item[result.cell] = firstVal |
| | | } |
| | | |
| | | } |
| | | }) |
| | | } |
| | | break |
| | | } |
| | | case 'copyAll' :{ |
| | | let result = toolbarButtonClickEvent() |
| | | if(result){ |
| | | const dataList = xGrid.value.getTableData().visibleData |
| | | let firstVal=null; |
| | | if(result.cell.indexOf('.')>-1){ |
| | | firstVal = eval("dataList["+result.start +"]."+result.cell) |
| | | }else { |
| | | firstVal=dataList[result.start][result.cell]; |
| | | } |
| | | dataList.forEach((item,index) =>{ |
| | | if(index>=result.start){ |
| | | //åæ¶éä¸ |
| | | if(parseInt(firstVal)<=0){ |
| | | xGrid.value.setCheckboxRow(item, false); |
| | | } |
| | | if(result.cell.indexOf('.')>-1){ |
| | | const columnArr = result.cell.split('.') |
| | | item[columnArr[0]][columnArr[1]] = firstVal |
| | | }else{ |
| | | item[result.cell] = firstVal |
| | | } |
| | | |
| | | } |
| | | }) |
| | | } |
| | | break |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | height: 20px; |
| | | margin-top: -20px; |
| | | } |
| | | .vxe-grid { |
| | | /* ç¦ç¨æµè§å¨é»è®¤éä¸ */ |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | -ms-user-select: none; |
| | | user-select: none; |
| | | } |
| | | |
| | | </style> |
| | |
| | | import {useRoute} from "vue-router"; |
| | | import {addListener, toolbarButtonClickEvent} from "@/hook/mouseMove"; |
| | | import useOrderInfoStore from "@/stores/sd/order/orderInfo"; |
| | | import useUserInfoStore from "@/stores/userInfo"; |
| | | const { t } = useI18n() |
| | | const userStore = useUserInfoStore() |
| | | const orderInfo = useOrderInfoStore() |
| | | const username = userStore.user.userName |
| | | |
| | | const xGrid = ref() |
| | | const gridOptions = reactive({ |
| | |
| | | let type = ref(1); |
| | | |
| | | const selectMaterialStore = async () =>{ |
| | | request.get(`/glassOptimize/materialStore/${thickness.value}/${model.value}/${projectNo.value}?type=${type.value}`).then((res) => { |
| | | request.get(`/glassOptimize/materialStore/${thickness.value}/${model.value}/${projectNo.value}?type=${type.value}&username=${username}`).then((res) => { |
| | | if (Number(res.code) === 200) { |
| | | const rawData = res.data.data; |
| | | const edgeTrimming = res.data.edgeTrimming; |
| | |
| | | @click="selectLayout(layoutIndex)"
|
| | | :class="{ 'selected': selectedLayoutIndex === layoutIndex }"
|
| | | >
|
| | | {{ layout.width }} Ã {{ layout.height }} Ã {{ layout.quantity }}
|
| | | {{ layout.realWidth }} Ã {{ layout.realHeight }} Ã {{ layout.quantity }}
|
| | | </div>
|
| | | </div>
|
| | |
|
| | |
| | | </div>
|
| | |
|
| | | <!-- Layout Container -->
|
| | | <div class="layout-container" :style="layoutContainerStyle1(layoutIndex)">
|
| | | <div class="layout-container" :style="layoutContainerStyle(layoutIndex)">
|
| | | <!-- ç°è²ç©å½¢ -->
|
| | | <div
|
| | |
| | | :key="`gray-${rectIndex}`"
|
| | | :ref="(el) => { if (el) rectsElements[layoutIndex + '-' + rectIndex] = el }"
|
| | | class="layout-glassDetail"
|
| | | :style="rectStyle(glassDetail, layoutIndex)"
|
| | | :style="rectStyle1(glassDetail, layoutIndex)"
|
| | | @contextmenu.prevent="handleGrayRectRightClick(layoutIndex, rectIndex,glassDetail)"
|
| | | >
|
| | | <!-- <div class="glassDetail-content">
|
| | |
| | | >
|
| | | <div class="glassDetail-content">
|
| | | <div class="size">{{ glassDetail.realWidth }}Ã{{ glassDetail.realHeight }}</div>
|
| | | <div>{{rectIndex }}</div>
|
| | | <div>{{glassDetail.polySort }}</div>
|
| | | <div v-if="showJiaHao" class="jia-hao">{{ glassDetail.rackNo }}</div>
|
| | | <div v-if="showProcessId" class="liuchengka">{{ glassDetail.processId }}</div>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | |
| | | );
|
| | | return {
|
| | | position: 'absolute',
|
| | | left: `20px`,
|
| | | top: `140px`,
|
| | | left: `${layout.leftTrim * scale}px`,
|
| | | top: `${layout.upTrim * scale}px`,
|
| | | width: `${layout.width * scale}px`,
|
| | | height: `${layout.height * scale}px`,
|
| | | overflow: 'visible',
|
| | | border: '1px solid #ccc',
|
| | | //border: '1px solid #ccc',
|
| | | background: '#fff'
|
| | | };
|
| | | };
|
| | |
|
| | | const layoutContainerStyle1 = (layoutIndex) => {
|
| | | const layout = layouts.value[layoutIndex];
|
| | | const scale = Math.min(0.25
|
| | | );
|
| | | return {
|
| | | position: 'absolute',
|
| | | left: `20px`,
|
| | | top: `140px`,
|
| | | width: `${layout.realWidth * scale}px`,
|
| | | height: `${layout.realHeight * scale}px`,
|
| | | overflow: 'visible',
|
| | | //border: '1px solid #ccc',
|
| | | background: '#fff'
|
| | | };
|
| | | };
|
| | |
| | | position: 'absolute',
|
| | | left: `${glassDetail.x * scale}px`,
|
| | | bottom: `${glassDetail.y * scale}px`,
|
| | | width: `${glassDetail.width * scale}px`,
|
| | | height: `${glassDetail.height * scale}px`,
|
| | | backgroundColor: glassDetail.isRemain ? '#f0f0f0' : themeColor.value,
|
| | | border: '1px solid #000',
|
| | | cursor: 'pointer',
|
| | | draggable: !glassDetail.isRemain,
|
| | | zIndex: glassDetail.isRemain ? 1 : 2
|
| | | };
|
| | | };
|
| | |
|
| | | const rectStyle1 = (glassDetail, layoutIndex) => {
|
| | | const layout = layouts.value[layoutIndex];
|
| | | const scale = Math.min(0.25
|
| | | );
|
| | | return {
|
| | | position: 'absolute',
|
| | | left: `${glassDetail.x * scale}px`,
|
| | | top: `${glassDetail.y * scale}px`,
|
| | | width: `${glassDetail.width * scale}px`,
|
| | | height: `${glassDetail.height * scale}px`,
|
| | | backgroundColor: glassDetail.isRemain ? '#f0f0f0' : themeColor.value,
|
| | |
| | | if (!glassDetail) return '';*/
|
| | | const totalRects = layouts.value.length;
|
| | | const currentRectIndex = layoutIndex + 1;
|
| | | const width = layout.width;
|
| | | const height = layout.height;
|
| | | const width = layout.realWidth;
|
| | | const height = layout.realHeight;
|
| | | const percentage = (layout.usageRate * 100).toFixed(2) + '%';
|
| | | return `${currentRectIndex}/${totalRects} ${width}Ã${height} Ã1 ${percentage}`;
|
| | | };
|
| | |
| | | mockData.value = { |
| | | code: 200, |
| | | data: [{ |
| | | "projectNo":"P25041001", |
| | | "totalQuantity":1, |
| | | "glassTotalQuantity":1, |
| | | "glassTotalArea":1, |
| | | "avgCutRate":1, |
| | | "lastCutRate":1, |
| | | "validCutRate":1, |
| | | "layouts":[ |
| | | { |
| | | "stockId":3, |
| | | "usageRate":0.9, |
| | | "width":4500, |
| | | "height":2440, |
| | | "stockCode":11, |
| | | "upTrim":12, |
| | | "downTrim":12, |
| | | "leftTrim":12, |
| | | "rightTrim":12, |
| | | "quantity":1, |
| | | "glassQuantity":6, |
| | | "glassArea":45, |
| | | "materialType":1, |
| | | "mergeID":1, |
| | | "glassDetails":[ |
| | | {"isRemain":false, |
| | | "width":2070, |
| | | "height":725, |
| | | "realWidth":2070, |
| | | "realHeight":725, |
| | | "layer":1, |
| | | "totalLayer":2, |
| | | "orderSort":1, |
| | | "processId":"NG22091408A06", |
| | | "stockSort":1, |
| | | "polySort":1, |
| | | "markIcon":"", |
| | | "x":0, |
| | | "y":0, |
| | | "patchState":0, |
| | | "isRotate":0, |
| | | "rackNo":1, |
| | | "glassPoint":{} |
| | | }, |
| | | {"isRemain":false, |
| | | "width":2070, |
| | | "height":725, |
| | | "realWidth":2070, |
| | | "realHeight":725, |
| | | "layer":1, |
| | | "totalLayer":2, |
| | | "orderSort":1, |
| | | "processId":"NG22091408A06", |
| | | "stockSort":1, |
| | | "polySort":2, |
| | | "markIcon":"", |
| | | "x":2070, |
| | | "y":0, |
| | | "patchState":0, |
| | | "isRotate":0, |
| | | "rackNo":1, |
| | | "glassPoint":{} |
| | | }, |
| | | {"isRemain":false, |
| | | "width":2070, |
| | | "height":725, |
| | | "realWidth":2070, |
| | | "realHeight":725, |
| | | "layer":1, |
| | | "totalLayer":2, |
| | | "orderSort":1, |
| | | "processId":"NG22091408A06", |
| | | "stockSort":1, |
| | | "polySort":3, |
| | | "markIcon":"", |
| | | "x":0, |
| | | "y":725, |
| | | "patchState":0, |
| | | "isRotate":0, |
| | | "rackNo":1, |
| | | "glassPoint":{} |
| | | }, |
| | | {"isRemain":false, |
| | | "width":2070, |
| | | "height":725, |
| | | "realWidth":2070, |
| | | "realHeight":725, |
| | | "layer":1, |
| | | "totalLayer":2, |
| | | "orderSort":1, |
| | | "processId":"NG22091408A06", |
| | | "stockSort":1, |
| | | "polySort":4, |
| | | "markIcon":"", |
| | | "x":2070, |
| | | "y":725, |
| | | "patchState":0, |
| | | "isRotate":0, |
| | | "rackNo":1, |
| | | "glassPoint":{} |
| | | }, |
| | | {"isRemain":false, |
| | | "width":2070, |
| | | "height":725, |
| | | "realWidth":2070, |
| | | "realHeight":725, |
| | | "layer":1, |
| | | "totalLayer":2, |
| | | "orderSort":1, |
| | | "processId":"NG22091408A06", |
| | | "stockSort":1, |
| | | "polySort":5, |
| | | "markIcon":"", |
| | | "x":0, |
| | | "y":1450, |
| | | "patchState":0, |
| | | "isRotate":0, |
| | | "rackNo":1, |
| | | "glassPoint":{} |
| | | }, |
| | | {"isRemain":false, |
| | | "width":2070, |
| | | "height":725, |
| | | "realWidth":2070, |
| | | "realHeight":725, |
| | | "layer":1, |
| | | "totalLayer":2, |
| | | "orderSort":1, |
| | | "processId":"NG22091408A06", |
| | | "stockSort":1, |
| | | "polySort":6, |
| | | "markIcon":"", |
| | | "x":2070, |
| | | "y":1450, |
| | | "patchState":0, |
| | | "isRotate":0, |
| | | "rackNo":1, |
| | | "glassPoint":{} |
| | | }, |
| | | {"isRemain":true, |
| | | "width":2070, |
| | | "height":265, |
| | | "x":0, |
| | | "y":2175 |
| | | }, |
| | | {"isRemain":true, |
| | | "width":2070, |
| | | "height":265, |
| | | "x":2070, |
| | | "y":2175 |
| | | }, |
| | | {"isRemain":true, |
| | | "width":360, |
| | | "height":2440, |
| | | "x":4140, |
| | | "y":0 |
| | | }] |
| | | } |
| | | ]}] |
| | | "projectNo": "P25051501", |
| | | "totalQuantity": 3, |
| | | "glassTotalQuantity": 52, |
| | | "glassTotalArea": "22.65", |
| | | "avgCutRate": "91.06", |
| | | "lastCutRate": "85.06", |
| | | "validCutRate": "95.63", |
| | | "layouts": [{ |
| | | "width": 3285.0, |
| | | "height": 2125.0, |
| | | "stockId": 1, |
| | | "realWidth": 3300.0, |
| | | "realHeight": 2140.0, |
| | | "usageRate": "0.9595522", |
| | | "stockCode": "138", |
| | | "upTrim": 0.0, |
| | | "downTrim": 15.0, |
| | | "leftTrim": 15.0, |
| | | "rightTrim": 0.0, |
| | | "quantity": 1, |
| | | "glassQuantity": 0, |
| | | "glassArea": 0.0, |
| | | "materialType": 1, |
| | | "mergeId": 1, |
| | | "glassDetails": [{ |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 1100.0, |
| | | "realHeight": 1037.0, |
| | | "width": 1102.0, |
| | | "height": 1039.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 17, |
| | | "stockSort": 1, |
| | | "polySort": 1, |
| | | "x": 0.0, |
| | | "y": 0.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 0.0, |
| | | "Y": 1086.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 0.0, |
| | | "Y": 2125.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1102.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1102.0, |
| | | "Y": 2125.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1102.0, |
| | | "Y": 1086.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1102.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 1098.0, |
| | | "realHeight": 1037.0, |
| | | "width": 1100.0, |
| | | "height": 1039.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 21, |
| | | "stockSort": 1, |
| | | "polySort": 2, |
| | | "x": 1102.0, |
| | | "y": 0.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 1102.0, |
| | | "Y": 1086.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1102.0, |
| | | "Y": 2125.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1100.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2202.0, |
| | | "Y": 2125.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2202.0, |
| | | "Y": 1086.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1100.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 1058.0, |
| | | "realHeight": 1037.0, |
| | | "width": 1060.0, |
| | | "height": 1039.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 5, |
| | | "stockSort": 1, |
| | | "polySort": 3, |
| | | "x": 2202.0, |
| | | "y": 0.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 2202.0, |
| | | "Y": 1086.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2202.0, |
| | | "Y": 2125.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1060.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 3262.0, |
| | | "Y": 2125.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 3262.0, |
| | | "Y": 1086.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1060.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 1098.0, |
| | | "realHeight": 1037.0, |
| | | "width": 1100.0, |
| | | "height": 1039.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 21, |
| | | "stockSort": 1, |
| | | "polySort": 4, |
| | | "x": 0.0, |
| | | "y": 1039.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 0.0, |
| | | "Y": 47.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 0.0, |
| | | "Y": 1086.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1100.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1100.0, |
| | | "Y": 1086.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1100.0, |
| | | "Y": 47.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1100.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 1098.0, |
| | | "realHeight": 1037.0, |
| | | "width": 1100.0, |
| | | "height": 1039.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 21, |
| | | "stockSort": 1, |
| | | "polySort": 5, |
| | | "x": 1100.0, |
| | | "y": 1039.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 1100.0, |
| | | "Y": 47.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1100.0, |
| | | "Y": 1086.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1100.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2200.0, |
| | | "Y": 1086.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2200.0, |
| | | "Y": 47.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1100.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 1058.0, |
| | | "realHeight": 1037.0, |
| | | "width": 1060.0, |
| | | "height": 1039.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 5, |
| | | "stockSort": 1, |
| | | "polySort": 6, |
| | | "x": 2200.0, |
| | | "y": 1039.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 2200.0, |
| | | "Y": 47.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2200.0, |
| | | "Y": 1086.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1060.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 3260.0, |
| | | "Y": 1086.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 3260.0, |
| | | "Y": 47.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1060.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": true, |
| | | "isRotate": false, |
| | | "realWidth": 25.0, |
| | | "realHeight": 1086.0, |
| | | "width": 25.0, |
| | | "height": 1086.0, |
| | | "processId": null, |
| | | "layer": 0, |
| | | "totalLayer": 0, |
| | | "orderSort": 0, |
| | | "stockSort": 1, |
| | | "polySort": 1, |
| | | "x": 3260.0, |
| | | "y": 0.0, |
| | | "markIcon": null, |
| | | "patchState": 0, |
| | | "rackNo": null, |
| | | "glassPoint": null |
| | | }, { |
| | | "isRemain": true, |
| | | "isRotate": false, |
| | | "realWidth": 3260.0, |
| | | "realHeight": 47.0, |
| | | "width": 3260.0, |
| | | "height": 47.0, |
| | | "processId": null, |
| | | "layer": 0, |
| | | "totalLayer": 0, |
| | | "orderSort": 0, |
| | | "stockSort": 1, |
| | | "polySort": 2, |
| | | "x": 0.0, |
| | | "y": 0.0, |
| | | "markIcon": null, |
| | | "patchState": 0, |
| | | "rackNo": null, |
| | | "glassPoint": null |
| | | }, { |
| | | "isRemain": true, |
| | | "isRotate": false, |
| | | "realWidth": 23.0, |
| | | "realHeight": 1039.0, |
| | | "width": 23.0, |
| | | "height": 1039.0, |
| | | "processId": null, |
| | | "layer": 0, |
| | | "totalLayer": 0, |
| | | "orderSort": 0, |
| | | "stockSort": 1, |
| | | "polySort": 3, |
| | | "x": 3262.0, |
| | | "y": 1086.0, |
| | | "markIcon": null, |
| | | "patchState": 0, |
| | | "rackNo": null, |
| | | "glassPoint": null |
| | | }] |
| | | }, { |
| | | "width": 3285.0, |
| | | "height": 2125.0, |
| | | "stockId": 2, |
| | | "realWidth": 3300.0, |
| | | "realHeight": 2140.0, |
| | | "usageRate": "0.9530787", |
| | | "stockCode": "138", |
| | | "upTrim": 0.0, |
| | | "downTrim": 15.0, |
| | | "leftTrim": 15.0, |
| | | "rightTrim": 0.0, |
| | | "quantity": 1, |
| | | "glassQuantity": 0, |
| | | "glassArea": 0.0, |
| | | "materialType": 1, |
| | | "mergeId": 2, |
| | | "glassDetails": [{ |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 1085.0, |
| | | "realHeight": 1037.0, |
| | | "width": 1087.0, |
| | | "height": 1039.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 20, |
| | | "stockSort": 2, |
| | | "polySort": 1, |
| | | "x": 0.0, |
| | | "y": 0.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 0.0, |
| | | "Y": 1086.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 0.0, |
| | | "Y": 2125.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1087.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1087.0, |
| | | "Y": 2125.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1087.0, |
| | | "Y": 1086.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1087.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 1055.0, |
| | | "realHeight": 1037.0, |
| | | "width": 1057.0, |
| | | "height": 1039.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 8, |
| | | "stockSort": 2, |
| | | "polySort": 2, |
| | | "x": 1087.0, |
| | | "y": 0.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 1087.0, |
| | | "Y": 1086.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1087.0, |
| | | "Y": 2125.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1057.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2144.0, |
| | | "Y": 2125.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2144.0, |
| | | "Y": 1086.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1057.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 1098.0, |
| | | "realHeight": 1037.0, |
| | | "width": 1100.0, |
| | | "height": 1039.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 21, |
| | | "stockSort": 2, |
| | | "polySort": 3, |
| | | "x": 2144.0, |
| | | "y": 0.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 2144.0, |
| | | "Y": 1086.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2144.0, |
| | | "Y": 2125.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1100.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 3244.0, |
| | | "Y": 2125.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 3244.0, |
| | | "Y": 1086.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1100.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 1098.0, |
| | | "realHeight": 1037.0, |
| | | "width": 1100.0, |
| | | "height": 1039.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 21, |
| | | "stockSort": 2, |
| | | "polySort": 4, |
| | | "x": 0.0, |
| | | "y": 1039.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 0.0, |
| | | "Y": 47.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 0.0, |
| | | "Y": 1086.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1100.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1100.0, |
| | | "Y": 1086.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1100.0, |
| | | "Y": 47.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1100.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 1065.0, |
| | | "realHeight": 1037.0, |
| | | "width": 1067.0, |
| | | "height": 1039.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 9, |
| | | "stockSort": 2, |
| | | "polySort": 5, |
| | | "x": 1100.0, |
| | | "y": 1039.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 1100.0, |
| | | "Y": 47.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1100.0, |
| | | "Y": 1086.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1067.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2167.0, |
| | | "Y": 1086.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2167.0, |
| | | "Y": 47.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1067.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 1065.0, |
| | | "realHeight": 1037.0, |
| | | "width": 1067.0, |
| | | "height": 1039.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 9, |
| | | "stockSort": 2, |
| | | "polySort": 6, |
| | | "x": 2167.0, |
| | | "y": 1039.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 2167.0, |
| | | "Y": 47.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2167.0, |
| | | "Y": 1086.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1067.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 3234.0, |
| | | "Y": 1086.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 3234.0, |
| | | "Y": 47.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1067.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": true, |
| | | "isRotate": false, |
| | | "realWidth": 51.0, |
| | | "realHeight": 1086.0, |
| | | "width": 51.0, |
| | | "height": 1086.0, |
| | | "processId": null, |
| | | "layer": 0, |
| | | "totalLayer": 0, |
| | | "orderSort": 0, |
| | | "stockSort": 2, |
| | | "polySort": 1, |
| | | "x": 3234.0, |
| | | "y": 0.0, |
| | | "markIcon": null, |
| | | "patchState": 0, |
| | | "rackNo": null, |
| | | "glassPoint": null |
| | | }, { |
| | | "isRemain": true, |
| | | "isRotate": false, |
| | | "realWidth": 3234.0, |
| | | "realHeight": 47.0, |
| | | "width": 3234.0, |
| | | "height": 47.0, |
| | | "processId": null, |
| | | "layer": 0, |
| | | "totalLayer": 0, |
| | | "orderSort": 0, |
| | | "stockSort": 2, |
| | | "polySort": 2, |
| | | "x": 0.0, |
| | | "y": 0.0, |
| | | "markIcon": null, |
| | | "patchState": 0, |
| | | "rackNo": null, |
| | | "glassPoint": null |
| | | }, { |
| | | "isRemain": true, |
| | | "isRotate": false, |
| | | "realWidth": 41.0, |
| | | "realHeight": 1039.0, |
| | | "width": 41.0, |
| | | "height": 1039.0, |
| | | "processId": null, |
| | | "layer": 0, |
| | | "totalLayer": 0, |
| | | "orderSort": 0, |
| | | "stockSort": 2, |
| | | "polySort": 3, |
| | | "x": 3244.0, |
| | | "y": 1086.0, |
| | | "markIcon": null, |
| | | "patchState": 0, |
| | | "rackNo": null, |
| | | "glassPoint": null |
| | | }] |
| | | }, { |
| | | "width": 3755.0, |
| | | "height": 2835.0, |
| | | "stockId": 3, |
| | | "realWidth": 3770.0, |
| | | "realHeight": 2850.0, |
| | | "usageRate": "0.8505788", |
| | | "stockCode": "117", |
| | | "upTrim": 0.0, |
| | | "downTrim": 15.0, |
| | | "leftTrim": 15.0, |
| | | "rightTrim": 0.0, |
| | | "quantity": 1, |
| | | "glassQuantity": 0, |
| | | "glassArea": 0.0, |
| | | "materialType": 1, |
| | | "mergeId": 3, |
| | | "glassDetails": [{ |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 1037.0, |
| | | "realHeight": 908.0, |
| | | "width": 1039.0, |
| | | "height": 910.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 19, |
| | | "stockSort": 3, |
| | | "polySort": 2, |
| | | "x": 0.0, |
| | | "y": 1007.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 0.0, |
| | | "Y": 1828.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1039.0, |
| | | "Y": 1828.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 910.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1039.0, |
| | | "Y": 918.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 0.0, |
| | | "Y": 918.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 910.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 1037.0, |
| | | "realHeight": 1005.0, |
| | | "width": 1039.0, |
| | | "height": 1007.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 18, |
| | | "stockSort": 3, |
| | | "polySort": 1, |
| | | "x": 0.0, |
| | | "y": 0.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 0.0, |
| | | "Y": 2835.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1039.0, |
| | | "Y": 2835.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1007.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1039.0, |
| | | "Y": 1828.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 0.0, |
| | | "Y": 1828.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1007.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 1037.0, |
| | | "realHeight": 810.0, |
| | | "width": 1039.0, |
| | | "height": 812.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 12, |
| | | "stockSort": 3, |
| | | "polySort": 3, |
| | | "x": 0.0, |
| | | "y": 1917.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 0.0, |
| | | "Y": 918.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1039.0, |
| | | "Y": 918.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 812.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1039.0, |
| | | "Y": 106.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 0.0, |
| | | "Y": 106.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 812.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 1037.0, |
| | | "realHeight": 908.0, |
| | | "width": 1039.0, |
| | | "height": 910.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 19, |
| | | "stockSort": 3, |
| | | "polySort": 5, |
| | | "x": 1039.0, |
| | | "y": 1032.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 1039.0, |
| | | "Y": 1803.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2078.0, |
| | | "Y": 1803.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 910.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2078.0, |
| | | "Y": 893.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1039.0, |
| | | "Y": 893.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 910.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 1037.0, |
| | | "realHeight": 1030.0, |
| | | "width": 1039.0, |
| | | "height": 1032.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 10, |
| | | "stockSort": 3, |
| | | "polySort": 4, |
| | | "x": 1039.0, |
| | | "y": 0.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 1039.0, |
| | | "Y": 2835.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2078.0, |
| | | "Y": 2835.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1032.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2078.0, |
| | | "Y": 1803.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1039.0, |
| | | "Y": 1803.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1032.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 1037.0, |
| | | "realHeight": 823.0, |
| | | "width": 1039.0, |
| | | "height": 825.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 13, |
| | | "stockSort": 3, |
| | | "polySort": 6, |
| | | "x": 1039.0, |
| | | "y": 1942.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 1039.0, |
| | | "Y": 893.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2078.0, |
| | | "Y": 893.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 825.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2078.0, |
| | | "Y": 68.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 1039.0, |
| | | "Y": 68.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 825.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 823.0, |
| | | "realHeight": 1037.0, |
| | | "width": 825.0, |
| | | "height": 1039.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 13, |
| | | "stockSort": 3, |
| | | "polySort": 7, |
| | | "x": 2078.0, |
| | | "y": 0.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 2078.0, |
| | | "Y": 1796.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2078.0, |
| | | "Y": 2835.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 825.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2903.0, |
| | | "Y": 2835.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2903.0, |
| | | "Y": 1796.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 825.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 823.0, |
| | | "realHeight": 1037.0, |
| | | "width": 825.0, |
| | | "height": 1039.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 13, |
| | | "stockSort": 3, |
| | | "polySort": 9, |
| | | "x": 2078.0, |
| | | "y": 1039.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 2078.0, |
| | | "Y": 757.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2078.0, |
| | | "Y": 1796.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 825.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2903.0, |
| | | "Y": 1796.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2903.0, |
| | | "Y": 757.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 825.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 823.0, |
| | | "realHeight": 1037.0, |
| | | "width": 825.0, |
| | | "height": 1039.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 13, |
| | | "stockSort": 3, |
| | | "polySort": 8, |
| | | "x": 2903.0, |
| | | "y": 0.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 2903.0, |
| | | "Y": 1796.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2903.0, |
| | | "Y": 2835.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 825.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 3728.0, |
| | | "Y": 2835.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 3728.0, |
| | | "Y": 1796.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 825.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": false, |
| | | "isRotate": false, |
| | | "realWidth": 823.0, |
| | | "realHeight": 1037.0, |
| | | "width": 825.0, |
| | | "height": 1039.0, |
| | | "processId": "NG24090106A003", |
| | | "layer": 2, |
| | | "totalLayer": 1, |
| | | "orderSort": 13, |
| | | "stockSort": 3, |
| | | "polySort": 10, |
| | | "x": 2903.0, |
| | | "y": 1039.0, |
| | | "markIcon": "{\"trademark\":\"3C\",\"xImage\":false,\"yImage\":false,\"tag\":true,\"tag2\":true,\"tag3\":true,\"xMargin\":30,\"yMargin\":30,\"location\":\"å³ä¸\"}", |
| | | "patchState": 0, |
| | | "rackNo": "0", |
| | | "glassPoint": [{ |
| | | "X": 2903.0, |
| | | "Y": 757.0, |
| | | "theta": 1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 0, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 2903.0, |
| | | "Y": 1796.0, |
| | | "theta": 0.0, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 825.0, |
| | | "index": 3, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 3728.0, |
| | | "Y": 1796.0, |
| | | "theta": -1.5707963267948966, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 1039.0, |
| | | "index": 2, |
| | | "L": 1.0 |
| | | }, { |
| | | "X": 3728.0, |
| | | "Y": 757.0, |
| | | "theta": 3.1415926535897931, |
| | | "angle": 1.5707963705062866, |
| | | "distance": 825.0, |
| | | "index": 1, |
| | | "L": 1.0 |
| | | }] |
| | | }, { |
| | | "isRemain": true, |
| | | "isRotate": false, |
| | | "realWidth": 1039.0, |
| | | "realHeight": 106.0, |
| | | "width": 1039.0, |
| | | "height": 106.0, |
| | | "processId": null, |
| | | "layer": 0, |
| | | "totalLayer": 0, |
| | | "orderSort": 0, |
| | | "stockSort": 3, |
| | | "polySort": 1, |
| | | "x": 0.0, |
| | | "y": 0.0, |
| | | "markIcon": null, |
| | | "patchState": 0, |
| | | "rackNo": null, |
| | | "glassPoint": null |
| | | }, { |
| | | "isRemain": true, |
| | | "isRotate": false, |
| | | "realWidth": 27.0, |
| | | "realHeight": 2835.0, |
| | | "width": 27.0, |
| | | "height": 2835.0, |
| | | "processId": null, |
| | | "layer": 0, |
| | | "totalLayer": 0, |
| | | "orderSort": 0, |
| | | "stockSort": 3, |
| | | "polySort": 2, |
| | | "x": 3728.0, |
| | | "y": 0.0, |
| | | "markIcon": null, |
| | | "patchState": 0, |
| | | "rackNo": null, |
| | | "glassPoint": null |
| | | }, { |
| | | "isRemain": true, |
| | | "isRotate": false, |
| | | "realWidth": 1039.0, |
| | | "realHeight": 68.0, |
| | | "width": 1039.0, |
| | | "height": 68.0, |
| | | "processId": null, |
| | | "layer": 0, |
| | | "totalLayer": 0, |
| | | "orderSort": 0, |
| | | "stockSort": 3, |
| | | "polySort": 3, |
| | | "x": 1039.0, |
| | | "y": 0.0, |
| | | "markIcon": null, |
| | | "patchState": 0, |
| | | "rackNo": null, |
| | | "glassPoint": null |
| | | }, { |
| | | "isRemain": true, |
| | | "isRotate": false, |
| | | "realWidth": 1650.0, |
| | | "realHeight": 757.0, |
| | | "width": 1650.0, |
| | | "height": 757.0, |
| | | "processId": null, |
| | | "layer": 0, |
| | | "totalLayer": 0, |
| | | "orderSort": 0, |
| | | "stockSort": 3, |
| | | "polySort": 4, |
| | | "x": 2078.0, |
| | | "y": 0.0, |
| | | "markIcon": null, |
| | | "patchState": 0, |
| | | "rackNo": null, |
| | | "glassPoint": null |
| | | }] |
| | | }] |
| | | }] |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | }) |
| | | orderInfo.optimizeData.originalFilm=originalFilm.value |
| | | totalUtilizationRate.value=mockData.value.data[0].avgCutRate*100 |
| | | tailPieceRate.value=mockData.value.data[0].layouts*100 |
| | | totalUtilizationRate.value=mockData.value.data[0].avgCutRate |
| | | tailPieceRate.value=mockData.value.data[0].lastCutRate |
| | | pauseTimer() |
| | | document.getElementById("complete").style.display="block" |
| | | document.getElementById("start").disabled=false |
| | |
| | | import {useRoute} from 'vue-router'; |
| | | import useUserInfoStore from "@/stores/userInfo"; |
| | | import useOrderInfoStore from "@/stores/sd/order/orderInfo"; |
| | | import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove"; |
| | | |
| | | const { t } = useI18n(); |
| | | const userStore = useUserInfoStore() |
| | | const orderInfo = useOrderInfoStore() |
| | | const username = userStore.user.userName |
| | | |
| | | let cellArea = ref() |
| | | const xGrid = ref() |
| | | const gridOptions = reactive({ |
| | | height: '100%', |
| | |
| | | storage: true |
| | | }, |
| | | editConfig: { |
| | | trigger: 'click', |
| | | trigger: 'dblclick', |
| | | mode: 'row', |
| | | showStatus: true |
| | | }, |
| | |
| | | field: 'longGrind1', |
| | | width: 150, |
| | | title: 'é¿ç£¨1', |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | editRender: { name: 'input' },filters:[{ data: '' }],slots: { filter: 'num1_filter' }, |
| | | sortable: true |
| | | }, |
| | | { |
| | | field: 'longGrind2', |
| | | width: 150, |
| | | title: 'é¿ç£¨2', |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | editRender: { name: 'input' },filters:[{ data: '' }],slots: { filter: 'num1_filter' }, |
| | | sortable: true |
| | | }, |
| | | { |
| | | field: 'shortGrind1', |
| | | width: 150, |
| | | title: 'ç磨1', |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | editRender: { name: 'input' },filters:[{ data: '' }],slots: { filter: 'num1_filter' }, |
| | | sortable: true |
| | | }, |
| | | { |
| | | field: 'shortGrind2', |
| | | width: 150, |
| | | title: 'ç磨2', |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | editRender: { name: 'input' },filters:[{ data: '' }],slots: { filter: 'num1_filter' }, |
| | | sortable: true |
| | | }, |
| | | { |
| | |
| | | }, |
| | | |
| | | { |
| | | field: 'layout_id', |
| | | field: 'rackNo', |
| | | width: 150, |
| | | title: 'æ¶å·', |
| | | filters: [{data: ''}], |
| | |
| | | {code: 'Export', name: 'æ°æ®å¯¼åº', prefixIcon: 'vxe-icon-download', visible: true, disabled: false}, |
| | | {code: 'safeDXF', name: 'å¾å½¢å¦å为DXF',}, |
| | | {code: 'exportOPTIMA', name: 'å¯¼åºæ°æ®å°OPTIMA',}, |
| | | {code: 'copyChecked', name: t('basicData.selectSame'), prefixIcon: 'vxe-icon-copy', visible: true, disabled: false }, |
| | | {code: 'copyAll', name: t('basicData.sameAfterwards'), prefixIcon: 'vxe-icon-feedback', visible: true, disabled: false }, |
| | | ], |
| | | [] |
| | | ] |
| | |
| | | ElMessage.info('æ¤åè½ææªå®åï¼ææ¶æ æ³æ§è¡å¯¼åºæ°æ®å°OPTIMAæä½ã'); |
| | | } |
| | | }, |
| | | { |
| | | code: 'copyChecked', |
| | | successMsg: 'æä½æåï¼', |
| | | gridRef: xGrid, |
| | | requiresRow: false, |
| | | hideProcess: () => { |
| | | } |
| | | }, |
| | | { |
| | | code: 'copyAll', |
| | | successMsg: 'æä½æåï¼', |
| | | gridRef: xGrid, |
| | | requiresRow: false, |
| | | hideProcess: () => { |
| | | } |
| | | }, |
| | | ] |
| | | |
| | | // å³é®èåç¹å»é»è¾ |
| | |
| | | if (config.code === 'Export') { |
| | | config.gridRef.value.exportData(); |
| | | ElMessage.success(config.successMsg); |
| | | return; |
| | | } |
| | | if (config.code === 'copyChecked') { |
| | | let result = toolbarButtonClickEvent() |
| | | if(result){ |
| | | const dataList = xGrid.value.getTableData().visibleData |
| | | let firstVal=null; |
| | | if(result.cell.indexOf('.')>-1){ |
| | | firstVal = eval("dataList["+result.start +"]."+result.cell) |
| | | }else { |
| | | firstVal=dataList[result.start][result.cell]; |
| | | } |
| | | dataList.forEach((item,index) =>{ |
| | | if(index>=result.start && index<=result.end){ |
| | | //åæ¶éä¸ |
| | | if(parseInt(firstVal)<=0){ |
| | | xGrid.value.setCheckboxRow(item, false); |
| | | } |
| | | if(result.cell.indexOf('.')>-1){ |
| | | const columnArr = result.cell.split('.') |
| | | item[columnArr[0]][columnArr[1]] = firstVal |
| | | }else{ |
| | | item[result.cell] = firstVal |
| | | } |
| | | |
| | | } |
| | | }) |
| | | } |
| | | return; |
| | | } |
| | | if (config.code === 'copyAll') { |
| | | let result = toolbarButtonClickEvent() |
| | | if(result){ |
| | | const dataList = xGrid.value.getTableData().visibleData |
| | | let firstVal=null; |
| | | if(result.cell.indexOf('.')>-1){ |
| | | firstVal = eval("dataList["+result.start +"]."+result.cell) |
| | | }else { |
| | | firstVal=dataList[result.start][result.cell]; |
| | | } |
| | | dataList.forEach((item,index) =>{ |
| | | if(index>=result.start){ |
| | | //åæ¶éä¸ |
| | | if(parseInt(firstVal)<=0){ |
| | | xGrid.value.setCheckboxRow(item, false); |
| | | } |
| | | if(result.cell.indexOf('.')>-1){ |
| | | const columnArr = result.cell.split('.') |
| | | item[columnArr[0]][columnArr[1]] = firstVal |
| | | }else{ |
| | | item[result.cell] = firstVal |
| | | } |
| | | |
| | | } |
| | | }) |
| | | } |
| | | return; |
| | | } |
| | | // æ·»å 确认æç¤ºå¼¹çªï¼è¯¢é®ç¨æ·æ¯å¦è¿è¡å½åæä½ |
| | |
| | | optimizeMode:null, |
| | | travType:null, |
| | | rackCycleQty:null, |
| | | glassThickness:null, |
| | | glassType:null, |
| | | glassDetails :[], |
| | | materialDetails:[] |
| | | }); |
| | |
| | | } |
| | | detail.width=items.width |
| | | detail.height=items.height |
| | | detail.processId=items.process_id |
| | | detail.processId=items.process_ids |
| | | detail.layer=items.layer |
| | | detail.totalLayer=items.total_layer |
| | | detail.orderSort=items.order_number |
| | |
| | | detail.downGrind=items.longGrind2 |
| | | detail.leftGrind=items.shortGrind1 |
| | | detail.rightGrind=items.shortGrind2 |
| | | detail.rackNo=items.id |
| | | |
| | | optimizeData.value.glassDetails .push(detail) |
| | | }) |
| | |
| | | const projectName = ref(''); |
| | | const thickNess = ref(route.params.thickNess); |
| | | const model = ref(route.params.model); |
| | | const quantitys = ref(route.params.quantity); |
| | | const areas = ref(route.params.area); |
| | | const quantitys = ref(); |
| | | const areas = ref(); |
| | | const optimizeState = ref(route.params.optimizeState); |
| | | onBeforeUnmount(() => { |
| | | localStorage.setItem('projectNo', projectNo.value); |
| | |
| | | |
| | | const saveOptimizeData = () => { |
| | | if(orderInfo.optimizeData!==null){ |
| | | request.post(`/glassOptimize/saveOptimizeData/${projectNo.value}`,orderInfo.optimizeData).then((res) => { |
| | | if ((Number(res.code) === 200)) { |
| | | ElMessage.success("ä¿åæå"); |
| | | } else { |
| | | ElMessage.warning(res.msg); |
| | | } |
| | | if(quantitys.value===orderInfo.optimizeData.optimalResults.glassTotalQuantity){ |
| | | request.post(`/glassOptimize/saveOptimizeData/${projectNo.value}`,orderInfo.optimizeData).then((res) => { |
| | | if ((Number(res.code) === 200)) { |
| | | ElMessage.success("ä¿åæå"); |
| | | } else { |
| | | ElMessage.warning(res.msg); |
| | | } |
| | | |
| | | }).catch((error) => { |
| | | console.error("è·åæ°æ®åºé:", error); |
| | | }); |
| | | }).catch((error) => { |
| | | console.error("è·åæ°æ®åºé:", error); |
| | | }); |
| | | }else{ |
| | | ElMessage.warning("åçä¸è¶³ï¼å°çæªå
¨é¨ä¼å"); |
| | | } |
| | | |
| | | }else { |
| | | ElMessage.warning("æ°æ®æªä¼å"); |
| | | } |
| | |
| | | } |
| | | |
| | | const fetchData = () => { |
| | | request.post(`/glassOptimize/projectInfo/${projectNo.value}`).then((res) => { |
| | | //å¯ç¨è¡¨æ ¼æå¨éä¸ |
| | | addListener(xGrid.value,gridOptions,cellArea.value) |
| | | request.post(`/glassOptimize/projectInfo/${projectNo.value}/${username}`).then((res) => { |
| | | if ((Number(res.code) === 200)) { |
| | | const data = res.data.data; |
| | | const grindingTrimming = res.data.grindingTrimming; |
| | |
| | | item.shortGrind1=0 |
| | | item.shortGrind2=0 |
| | | if(item.width>=formattedData[0].minAutoLenght){ |
| | | item.width+=parseFloat(formattedData[0].leftEdge) |
| | | item.width+=parseFloat(formattedData[0].rightEdge) |
| | | item.longGrind1 = formattedData[0].leftEdge; |
| | | item.longGrind2 = formattedData[0].rightEdge; |
| | | } |
| | | if(item.height>=formattedData[0].minAutoLenght){ |
| | | item.height+=parseFloat(formattedData[0].upEdge) |
| | | item.height+=parseFloat(formattedData[0].downEdge) |
| | | item.shortGrind1 = formattedData[0].upEdge; |
| | | item.shortGrind2 = formattedData[0].downEdge; |
| | | } |
| | |
| | | xGrid.value.loadData(data); |
| | | gridOptions.data = data; |
| | | projectName.value = data[0].project_name; |
| | | quantitys.value=res.data.project.glass_total |
| | | areas.value=res.data.project.glass_total_area |
| | | } else { |
| | | ElMessage.warning(res.msg); |
| | | } |
| | |
| | | if (res.code == "200") { |
| | | const parsedData = JSON.parse(res.data); |
| | | optimizeData.value.projectNo=projectNo.value |
| | | optimizeData.value.glassType=model.value |
| | | optimizeData.value.glassThickness=thickNess.value |
| | | optimizeData.value.allowRotate=parsedData.optimization.smallPieceRotationProhibited |
| | | optimizeData.value.optimizeMode=parsedData.optimization.optimizationMethod |
| | | optimizeData.value.minCutDistance=parsedData.optimization.bendEdgeDistance |
| | |
| | | firstLoading(); |
| | | }else if(orderInfo.projectNo!==null){ |
| | | projectNo.value=orderInfo.projectNo.projectNo |
| | | model.value=orderInfo.projectNo.model |
| | | thickNess.value=orderInfo.projectNo.thickNess |
| | | fetchData(); |
| | | firstLoading(); |
| | | } |
| | |
| | | </vxe-grid> |
| | | |
| | | </div> |
| | | <div class="vxe-table--cell-area" ref="cellArea" > |
| | | <span class="vxe-table--cell-main-area" ></span> |
| | | |
| | | <span class="vxe-table--cell-active-area" ></span> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | margin-left: 10px; |
| | | } |
| | | |
| | | .vxe-grid { |
| | | /* ç¦ç¨æµè§å¨é»è®¤éä¸ */ |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | -ms-user-select: none; |
| | | user-select: none; |
| | | } |
| | | |
| | | </style> |
| | |
| | | <template>
|
| | | <div ref="layoutPanel" :class="panelClass" :style="panelStyle">
|
| | | <div id="printFlowCard">
|
| | | <div v-for="(layout, layoutIndex) in layouts" :key="layoutIndex" class="layout-wrapper">
|
| | | <div class="header" :style="headerStyle(layoutIndex)">
|
| | | å·¥ç¨å·{{ processId }}
|
| | | {{ getCurrentRectInfo(layoutIndex) }}
|
| | | </div>
|
| | | <div ref="layoutPanel" id="printFlowCard" :class="panelClass" :style="panelStyle">
|
| | | <div v-if="dataLoadeds">
|
| | | <h3>å·¥ç¨å·ã{{ processId }}ã</h3>
|
| | | <div style="width: 400px;margin: auto;">
|
| | | <h1 style="margin: auto;text-align: center;">䏿µ·åç»èªå¨å</h1>
|
| | | <h2 style="margin: auto;text-align: center;">ä¼åæ¥å</h2>
|
| | | ä¼åæ¥å·¥
|
| | | <el-table :data="layoutDetails">
|
| | | <el-table-column prop="avgCutRate" label="åè£ç"></el-table-column>
|
| | | <el-table-column prop="validCutRate" label="ææåå²"></el-table-column>
|
| | | <el-table-column prop="lastCutRate" label="å°¾ç"></el-table-column>
|
| | | <el-table-column prop="" label="åçç±»å"></el-table-column>
|
| | | <el-table-column prop="totalQuantity" label="ç颿°é"></el-table-column>
|
| | | </el-table>
|
| | | <br>
|
| | | ç©æä¿¡æ¯
|
| | | <el-table :data="materialDetails">
|
| | | <el-table-column prop="width" label="åç宽"></el-table-column>
|
| | | <el-table-column prop="height" label="åçé«"></el-table-column>
|
| | | <el-table-column prop="processingQuantity" label="æ°é"></el-table-column>
|
| | | </el-table>
|
| | | </div>
|
| | | </div>
|
| | |
|
| | | <div
|
| | | v-for="(layout, layoutIndex) in layouts"
|
| | | :key="layoutIndex"
|
| | | class="layout-wrapper"
|
| | | :style="titleStyle(layoutIndex)"
|
| | | v-if="dataLoaded"
|
| | | >
|
| | | <!-- Layout Info Label -->
|
| | | <div class="layout-info" :style="layoutInfoStyle(layoutIndex)">
|
| | | å·¥ç¨å·{{ processId }}
|
| | | {{ getCurrentRectInfo(layoutIndex) }}
|
| | | </div>
|
| | |
|
| | | <!-- Layout Container -->
|
| | | <div class="layout-container" :style="layoutContainerStyle1(layoutIndex)">
|
| | | <div class="layout-container" :style="layoutContainerStyle(layoutIndex)">
|
| | | <div class="grid-container" :class="`cols-${printColumns}`">
|
| | | <div
|
| | | v-for="(glassDetail, rectIndex) in layout.glassDetails"
|
| | | :key="rectIndex"
|
| | | <!-- ç°è²ç©å½¢ -->
|
| | | <div
|
| | | v-for="(glassDetail, rectIndex) in layout.glassDetails.filter(r => r.isRemain)"
|
| | | :key="`gray-${rectIndex}`"
|
| | | :ref="(el) => { if (el) rectsElements[layoutIndex + '-' + rectIndex] = el }"
|
| | | :class="rectClass"
|
| | | class="layout-glassDetail"
|
| | | :style="rectStyle1(glassDetail, layoutIndex)"
|
| | | >
|
| | | <!-- <div class="glassDetail-content">
|
| | | <div class="size">{{ glassDetail.width }}Ã{{ glassDetail.height }}</div>
|
| | | <div v-if="showJiaHao" class="jia-hao">{{ glassDetail.JiaHao }}</div>
|
| | | <div v-if="showProcessId" class="liuchengka">{{ glassDetail.liuchengka }}</div>
|
| | | </div>-->
|
| | | </div>
|
| | |
|
| | | <!-- èè²ç©å½¢ -->
|
| | | <div
|
| | | v-for="(glassDetail, rectIndex) in layout.glassDetails.filter(r => !r.isRemain)"
|
| | | :key="`blue-${rectIndex}`"
|
| | | :ref="(el) => { if (el) rectsElements[layoutIndex + '-' + rectIndex] = el }"
|
| | | class="layout-glassDetail"
|
| | | :style="rectStyle(glassDetail, layoutIndex)"
|
| | | @click="handleRectClick(layoutIndex, rectIndex)"
|
| | | >
|
| | | <div v-if="!glassDetail.isRemain" class="glassDetail-content">
|
| | | <div class="size">{{ glassDetail.realWidth }}Ã{{ glassDetail.realHeight }}</div>
|
| | | <div class="jia-hao">{{ glassDetail.rackNo}}</div>
|
| | | </div>
|
| | | >
|
| | | <div class="glassDetail-content">
|
| | | <div class="size">{{ glassDetail.realWidth }}Ã{{ glassDetail.realHeight }}</div>
|
| | | <div>{{glassDetail.polySort }}</div>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | |
| | | gh: { type: Number, default: 800 },
|
| | | style: { type: String, default: 'width:100%;height:800px;display:block;background:gray' },
|
| | | printLayout: { type: String, default: '2rows-2cols' }, // å¯éå¼ï¼4rows-2cols, 3rows-2cols, 3rows-1col, 2rows-2cols
|
| | | fixedPageHeight: { type: Number, default: 1100 } // åºå®é¡µé¢é«åº¦
|
| | | fixedPageHeight: { type: Number, default: 1100 }, // åºå®é¡µé¢é«åº¦
|
| | | materialDetails:null,
|
| | | state:null
|
| | | });
|
| | |
|
| | | const emit = defineEmits(['rectClicked']);
|
| | |
| | | const rectsElements = ref({});
|
| | | const focusIndex = ref(null);
|
| | | const layouts = ref([]);
|
| | | const materialDetails = ref([]);
|
| | | const panelClass = ref('');
|
| | | const panelStyle = ref(props.style);
|
| | | const rectClass = ref('layout-glassDetail');
|
| | | const processId = ref();
|
| | | const printColumns = ref(2); // åå§å为2å
|
| | | const layoutsPerPage = ref(4); // é»è®¤æ¯é¡µæ¾ç¤º4个å¸å±ï¼2è¡Ã2åï¼
|
| | | const selectedLayoutIndex = ref(0);
|
| | | const layoutDetails = ref([]);
|
| | | const dataLoaded = ref(false);
|
| | | const dataLoadeds = ref(false);
|
| | | const scale = 0.1;
|
| | | let tops = 0;
|
| | | let lefts = 0;
|
| | |
|
| | | // å®ä¹ä¸åå¸å±çæ¾å¤§æ¯ä¾
|
| | | const layoutScales = {
|
| | |
| | | updateLayout();
|
| | | });
|
| | |
|
| | | const layoutContainerStyle = (layoutIndex) => {
|
| | | const containerWidth = (props.gw - 20) / printColumns.value; // åå°è¾¹è·
|
| | | const containerHeight = (props.gh - 20) / Math.ceil(layoutsPerPage.value / printColumns.value);
|
| | | const x = (layoutIndex % printColumns.value) * containerWidth;
|
| | | const y = Math.floor(layoutIndex / printColumns.value) * containerHeight;
|
| | | const titleStyle = (layoutIndex) => {
|
| | | const layout = layouts.value[layoutIndex-1];
|
| | | if(layoutIndex<2){
|
| | | if(layoutIndex===0){
|
| | | tops = 0;
|
| | | lefts = 0;
|
| | | }else{
|
| | | lefts = "50%";
|
| | | }
|
| | | }else{
|
| | | if(layoutIndex%2===0){
|
| | | tops = tops+layout.height*scale+50;
|
| | | lefts=0;
|
| | | }else{
|
| | | lefts = "50%";
|
| | | }
|
| | | }
|
| | |
|
| | | return {
|
| | | position: 'absolute',
|
| | | left: `${x}px`,
|
| | | top: `${y-25}px`,
|
| | | width: `${containerWidth}px`,
|
| | | height: `${containerHeight}px`,
|
| | | overflow: 'visible',
|
| | | padding: '10px' // æ·»å å
è¾¹è·
|
| | | width: `50%`,
|
| | | left: `${lefts}`,
|
| | | top: `${tops}px`,
|
| | | };
|
| | | };
|
| | |
|
| | | const headerStyle = (layoutIndex) => {
|
| | | const containerWidth = (props.gw - 20) / printColumns.value;
|
| | | const containerHeight = (props.gh - 20) / Math.ceil(layoutsPerPage.value / printColumns.value);
|
| | | const x = (layoutIndex % printColumns.value) * containerWidth;
|
| | | const y = Math.floor(layoutIndex / printColumns.value) * containerHeight;
|
| | | const scale = Math.min(
|
| | | containerWidth,
|
| | | containerHeight
|
| | | ) * 1.2; // æ¾å¤§1.2å
|
| | | const layoutContainerStyle = (layoutIndex) => {
|
| | | const layout = layouts.value[layoutIndex];
|
| | |
|
| | | return {
|
| | | position: 'absolute',
|
| | | left: `${x}px`,
|
| | | top: `${y-25}px`,
|
| | | width: `${scale}px`,
|
| | | left: `${layout.leftTrim * scale}px`,
|
| | | top: `${layout.upTrim * scale}px`,
|
| | | width: `${layout.width * scale}px`,
|
| | | height: `${layout.height * scale}px`,
|
| | | overflow: 'visible',
|
| | | //border: '1px solid #ccc',
|
| | | background: '#fff'
|
| | | };
|
| | | };
|
| | |
|
| | | const layoutContainerStyle1 = (layoutIndex) => {
|
| | | const layout = layouts.value[layoutIndex];
|
| | | return {
|
| | | position: 'absolute',
|
| | | left: `20px`,
|
| | | top: `40px`,
|
| | | width: `${layout.realWidth * scale}px`,
|
| | | height: `${layout.realHeight * scale}px`,
|
| | | overflow: 'visible',
|
| | | //border: '1px solid #ccc',
|
| | | background: '#fff'
|
| | | };
|
| | | };
|
| | |
|
| | | //çå¾å
容头鍿 ·å¼å è½½
|
| | | const layoutInfoStyle = (layoutIndex) => {
|
| | | const layout = layouts.value[layoutIndex];
|
| | | return {
|
| | | position: 'absolute',
|
| | | left: `40px`,
|
| | | top: `0px`,
|
| | | textAlign: 'center',
|
| | | zIndex: 1000,
|
| | | background: '#ffffff',
|
| | | padding: '5px',
|
| | | fontSize: '12px'
|
| | | fontSize: '15px'
|
| | | };
|
| | | };
|
| | |
|
| | | //çå¾å
容å°çæ ·å¼å è½½
|
| | | const rectStyle = (glassDetail, layoutIndex) => {
|
| | | const layout = layouts.value[layoutIndex];
|
| | | const containerWidth = (props.gw - 100) / printColumns.value;
|
| | | const containerHeight = (props.gh - 100) / Math.ceil(layoutsPerPage.value / printColumns.value);
|
| | |
|
| | | // æ ¹æ®å½åæå°å¸å±è·åæ¾å¤§æ¯ä¾
|
| | | const currentScale = layoutScales[props.printLayout] || 1.0;
|
| | |
|
| | | const scale = Math.min(
|
| | | containerWidth / layout.width,
|
| | | containerHeight / layout.height
|
| | | ) ; // åºç¨å½åå¸å±çæ¾å¤§æ¯ä¾
|
| | |
|
| | | return {
|
| | | position: 'absolute',
|
| | | left: `${glassDetail.x * scale}px`,
|
| | |
| | | height: `${glassDetail.height * scale}px`,
|
| | | backgroundColor: glassDetail.isRemain ? '#f0f0f0' : '#a0d8ef',
|
| | | border: '1px solid #000',
|
| | | cursor: 'pointer'
|
| | | cursor: 'pointer',
|
| | | draggable: !glassDetail.isRemain,
|
| | | zIndex: glassDetail.isRemain ? 1 : 2
|
| | | };
|
| | | };
|
| | |
|
| | | const rectStyle1 = (glassDetail, layoutIndex) => {
|
| | | const layout = layouts.value[layoutIndex];
|
| | | return {
|
| | | position: 'absolute',
|
| | | left: `${glassDetail.x * scale}px`,
|
| | | top: `${glassDetail.y * scale}px`,
|
| | | width: `${glassDetail.width * scale}px`,
|
| | | height: `${glassDetail.height * scale}px`,
|
| | | backgroundColor: glassDetail.isRemain ? '#f0f0f0' : '#a0d8ef',
|
| | | border: '1px solid #000',
|
| | | cursor: 'pointer',
|
| | | draggable: !glassDetail.isRemain,
|
| | | zIndex: glassDetail.isRemain ? 1 : 2
|
| | | };
|
| | | };
|
| | |
|
| | |
| | | const layout = layouts.value[layoutIndex];
|
| | | const totalRects = layouts.value.length;
|
| | | const currentRectIndex = layoutIndex + 1;
|
| | | const width = layout.width;
|
| | | const height = layout.height;
|
| | | const width = layout.realWidth;
|
| | | const height = layout.realHeight;
|
| | | const sum = layout.glassDetails.reduce((sum, r) => sum + (width * height), 0);
|
| | | const percentage = (layout.usageRate * 100).toFixed(2) + '%';
|
| | | return `${currentRectIndex}/${totalRects} ${width}X${height}X${layout.quantity} ${percentage}`;
|
| | |
| | | }
|
| | | })
|
| | | layouts.value=originalFilm.value
|
| | | layoutDetails.value.push(props.layoutData)
|
| | | materialDetails.value=props.materialDetails
|
| | | console.log(layouts.value)
|
| | | adjustPrintLayout();
|
| | | // 强å¶éæ°æ¸²æ
|
| | | layoutPanel.value.offsetHeight; // 触åå¸å±æ´æ°
|
| | | };
|
| | |
|
| | | onMounted(() => {
|
| | | updateLayout();
|
| | | if(props.state===2||props.state===0){
|
| | | dataLoaded.value=true
|
| | | }
|
| | | if(props.state>0){
|
| | | dataLoadeds.value=true
|
| | | }
|
| | | updateLayout();
|
| | | });
|
| | |
|
| | | onUnmounted(() => {
|
| | |
| | |
|
| | | .layout-wrapper {
|
| | | position: relative;
|
| | | margin-top: 50px;
|
| | | display: block;
|
| | | }
|
| | |
|
| | | .header {
|
| | |
| | | import {defineEmits} from 'vue'; |
| | | import request from "@/utils/request"; |
| | | import {ElMessage} from "element-plus"; |
| | | import useUserInfoStore from "@/stores/userInfo"; |
| | | import useOrderInfoStore from "@/stores/sd/order/orderInfo"; |
| | | |
| | | const userStore = useUserInfoStore() |
| | | const orderInfo = useOrderInfoStore() |
| | | const username = userStore.user.userName |
| | | |
| | | onMounted(async() => { |
| | | await firstLoading() |
| | | }) |
| | | |
| | | const firstLoading = async() => { |
| | | request.post(`/glassOptimize/getConfiguration/磨é`).then((res) => { |
| | | request.post(`/glassOptimize/getConfiguration/磨é/${username}`).then((res) => { |
| | | if (res.code == "200") { |
| | | const rawData = res.data.data; |
| | | if (Array.isArray(rawData) && rawData.length > 0) { |
| | |
| | | json:json, |
| | | } |
| | | |
| | | request.post(`/glassOptimize/saveConfiguration/磨é`,configuration).then((res) => { |
| | | request.post(`/glassOptimize/saveConfiguration/磨é/${username}`,configuration).then((res) => { |
| | | if(res.code==200 && res.data===true){ |
| | | const amountData = { |
| | | quicksetTop: quicksetTop.value, |
| | |
| | | import {defineEmits} from 'vue'; |
| | | import request from "@/utils/request"; |
| | | import {ElMessage} from "element-plus"; |
| | | import useUserInfoStore from "@/stores/userInfo"; |
| | | import useOrderInfoStore from "@/stores/sd/order/orderInfo"; |
| | | |
| | | const userStore = useUserInfoStore() |
| | | const orderInfo = useOrderInfoStore() |
| | | const username = userStore.user.userName |
| | | |
| | | onMounted(async() => { |
| | | await firstLoading() |
| | | }) |
| | | |
| | | const firstLoading = async() => { |
| | | request.post(`/glassOptimize/getConfiguration/修边`).then((res) => { |
| | | request.post(`/glassOptimize/getConfiguration/修边/${username}`).then((res) => { |
| | | if (res.code == "200") { |
| | | const rawData = res.data.data; |
| | | if (Array.isArray(rawData) && rawData.length > 0) { |
| | |
| | | json:json, |
| | | } |
| | | |
| | | request.post(`/glassOptimize/saveConfiguration/修边`,configuration).then((res) => { |
| | | request.post(`/glassOptimize/saveConfiguration/修边/${username}`,configuration).then((res) => { |
| | | if(res.code==200 && res.data===true){ |
| | | const dataToSend = { |
| | | quicksetTop: quicksetTop.value, |
| | |
| | | <script setup> |
| | | |
| | | document.querySelector('#app').style.minWidth = 'unset'; |
| | | document.querySelector('#app').style.minHeight = 'unset'; |
| | | </script> |
| | | |
| | | <template> |
| | |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
| | |
| | | private UserService userService; |
| | | //å·¥ç¨ä¿¡æ¯ |
| | | @ApiOperation("å·¥ç¨ä¿¡æ¯æ¥å£") |
| | | @PostMapping ("/projectInfo/{projectNo}") |
| | | @PostMapping ("/projectInfo/{projectNo}/{username}") |
| | | public Result projectInfo( |
| | | @PathVariable String projectNo){ |
| | | return Result.seccess(glassOptimizeService.projectInfoSv(projectNo)); |
| | | @PathVariable String projectNo,@PathVariable String username){ |
| | | return Result.seccess(glassOptimizeService.projectInfoSv(projectNo,username)); |
| | | } |
| | | |
| | | //å·¥ç¨ä¿¡æ¯æµç¨å¡ |
| | |
| | | public Result materialStore( |
| | | @PathVariable String thickness, |
| | | @PathVariable String model,@PathVariable String projectNumber, |
| | | @RequestParam(name = "type", required = false) Integer type ){ |
| | | return Result.seccess(glassOptimizeService.materialStoreSv(thickness,model,projectNumber,type)); |
| | | @RequestParam(name = "type", required = false) Integer type,@RequestParam(name = "username", required = false) String username ){ |
| | | return Result.seccess(glassOptimizeService.materialStoreSv(thickness,model,projectNumber,type,username)); |
| | | } |
| | | |
| | | |
| | |
| | | return new ResponseEntity<>(optContent.getBytes(), headers, HttpStatus.OK); |
| | | } |
| | | |
| | | @PostMapping("/getConfiguration/{type}") |
| | | public Result getConfiguration(@PathVariable String type) { |
| | | return Result.seccess(glassOptimizeService.getConfiguration(type)); |
| | | @PostMapping("/getConfiguration/{type}/{username}") |
| | | public Result getConfiguration(@PathVariable String type,@PathVariable String username) { |
| | | return Result.seccess(glassOptimizeService.getConfiguration(type,username)); |
| | | } |
| | | |
| | | @ApiOperation("ä¿®ç磨éä¿®æ¹") |
| | | @PostMapping("/saveConfiguration/{type}") |
| | | public Result saveConfiguration(@PathVariable String type, @RequestBody Map<String,Object> object){ |
| | | return Result.seccess(glassOptimizeService.saveConfiguration(object,type)); |
| | | @PostMapping("/saveConfiguration/{type}/{username}") |
| | | public Result saveConfiguration(@PathVariable String type,@PathVariable String username, @RequestBody Map<String,Object> object){ |
| | | return Result.seccess(glassOptimizeService.saveConfiguration(object,type,username)); |
| | | } |
| | | |
| | | @ApiOperation("模ææç") |
| | |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDate; |
| | | |
| | | @Data |
| | | @TableName("sd.basic_data") |
| | | public class BasicData { |
| | | @TableId(type = IdType.AUTO) |
| | | private Integer id; |
| | |
| | | |
| | | List<Map<String, Object>> analogComputationOptimization(String projectNo); |
| | | |
| | | List<Map<String, Object>> getOptimizeDetail(String projectNo); |
| | | |
| | | List<Map<String, Object>> simulatedTypesettingUsingOpt(List<String> processId,List<Integer> technologyNumber); |
| | | |
| | | //å·¥ç¨ä¿¡æ¯æµç¨å¡ |
| | |
| | | Boolean updateProjectMp(String projectId, String projectNmae, String glassThickness, String glassType, |
| | | Integer sumQuantity, Double sumArea, String userName,Integer processIdCount, String processId, Integer type); |
| | | |
| | | List<Map<String, Object>> getTemperedConfiguration(); |
| | | List<Map<String, Object>> getTemperedConfiguration(String username); |
| | | |
| | | List<Map<String, Object>> getGrindingTrimming(); |
| | | List<Map<String, Object>> getGrindingTrimming(String username); |
| | | |
| | | List<Map<String, Object>> getEdgeTrimming(); |
| | | List<Map<String, Object>> getEdgeTrimming(String username); |
| | | |
| | | Boolean updateOptimizeConfig(String json,Integer type); |
| | | Boolean updateOptimizeConfig(String json,Integer type,String username); |
| | | |
| | | List<Map<String, Object>> getFlowCardListSimulated(String optionVal); |
| | | |
| | |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.sql.Date; |
| | | import java.time.LocalDateTime; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | |
| | | |
| | | String selectNextProcess(String processId, String technologyNumber, String thisProcess); |
| | | |
| | | List<Map<String, String>> selectShiftQuantitySv(String creatorId, String startDate,String endDate); |
| | | List<Map<String, String>> selectShiftQuantitySv(String creatorId, String startDatetime, String endDatetime, String step); |
| | | } |
| | |
| | | public Map<String, Object> selectOptimizeResult(String processId) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("data", glassOptimizeMapper.selectOptimizeResult(processId)); |
| | | map.put("optimizeUse", glassOptimizeMapper.materialStoreOptimizeUse(processId)); |
| | | return map; |
| | | } |
| | | |
| | | //å·¥ç¨ä¿¡æ¯ |
| | | public Map<String, Object> projectInfoSv(String projectNo) { |
| | | public Map<String, Object> projectInfoSv(String projectNo,String username) { |
| | | Map<String, Object> stringObjectMap = glassOptimizeMapper.selectProjectCount(projectNo); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | if(Integer.parseInt(stringObjectMap.get("optimize_state").toString())==1||Integer.parseInt(stringObjectMap.get("tempering_state").toString())==1){ |
| | | if(Integer.parseInt(stringObjectMap.get("optimize_state").toString())==1){ |
| | | map.put("optimizeState", Integer.parseInt(stringObjectMap.get("optimize_state").toString())); |
| | | map.put("data", glassOptimizeMapper.getOptimizeDetail(projectNo)); |
| | | map.put("project", glassOptimizeMapper.selectProjectCount(projectNo)); |
| | | map.put("grindingTrimming", null); |
| | | } else if (Integer.parseInt(stringObjectMap.get("tempering_state").toString())==1) { |
| | | map.put("optimizeState", Integer.parseInt(stringObjectMap.get("optimize_state").toString())); |
| | | map.put("data", glassOptimizeMapper.analogComputationOptimization(projectNo)); |
| | | map.put("grindingTrimming", glassOptimizeMapper.getGrindingTrimming()); |
| | | }else{ |
| | | map.put("project", glassOptimizeMapper.selectProjectCount(projectNo)); |
| | | map.put("grindingTrimming", glassOptimizeMapper.getGrindingTrimming(username)); |
| | | } else{ |
| | | map.put("optimizeState", Integer.parseInt(stringObjectMap.get("optimize_state").toString())); |
| | | map.put("data", glassOptimizeMapper.firstOptimization(projectNo)); |
| | | map.put("grindingTrimming", glassOptimizeMapper.getGrindingTrimming()); |
| | | map.put("project", glassOptimizeMapper.selectProjectCount(projectNo)); |
| | | map.put("grindingTrimming", glassOptimizeMapper.getGrindingTrimming(username)); |
| | | } |
| | | return map; |
| | | } |
| | |
| | | } |
| | | |
| | | //åºåä¿¡æ¯ |
| | | public Map<String, Object> materialStoreSv(String thickness, String model, String projectNumber,Integer type) { |
| | | public Map<String, Object> materialStoreSv(String thickness, String model, String projectNumber,Integer type,String username) { |
| | | Map<String, Object> stringObjectMap = glassOptimizeMapper.selectProjectCount(projectNumber); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | if(Integer.parseInt(stringObjectMap.get("optimize_state").toString())==0){ |
| | |
| | | }else{ |
| | | map.put("data", glassOptimizeMapper.materialStoreSurplusMp(thickness,model)); |
| | | } |
| | | map.put("edgeTrimming", glassOptimizeMapper.getEdgeTrimming()); |
| | | map.put("edgeTrimming", glassOptimizeMapper.getEdgeTrimming(username)); |
| | | }else{ |
| | | map.put("data", glassOptimizeMapper.materialStoreOptimizeUse(projectNumber)); |
| | | map.put("edgeTrimming", null); |
| | | } |
| | | map.put("state", Integer.parseInt(stringObjectMap.get("state").toString())); |
| | | |
| | | return map; |
| | | } |
| | | |
| | |
| | | |
| | | } |
| | | |
| | | public Map<String, Object> getConfiguration(String type) { |
| | | public Map<String, Object> getConfiguration(String type,String username) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | if(type.equals("é¢å")){ |
| | | map.put("data", glassOptimizeMapper.getTemperedConfiguration()); |
| | | map.put("data", glassOptimizeMapper.getTemperedConfiguration(username)); |
| | | }else if(type.equals("磨é")){ |
| | | map.put("data", glassOptimizeMapper.getGrindingTrimming()); |
| | | map.put("data", glassOptimizeMapper.getGrindingTrimming(username)); |
| | | }else if(type.equals("修边")){ |
| | | map.put("data", glassOptimizeMapper.getEdgeTrimming()); |
| | | map.put("data", glassOptimizeMapper.getEdgeTrimming(username)); |
| | | } |
| | | |
| | | return map; |
| | | } |
| | | |
| | | public Boolean saveConfiguration(Map<String,Object> object,String type) { |
| | | public Boolean saveConfiguration(Map<String,Object> object,String type,String username) { |
| | | String json = ""; |
| | | if (object.get("json") != null) { |
| | | json = object.get("json").toString(); |
| | | } |
| | | if(type.equals("é¢å")){ |
| | | glassOptimizeMapper.updateOptimizeConfig(json,1); |
| | | glassOptimizeMapper.updateOptimizeConfig(json,1,username); |
| | | } else if (type.equals("修边")) { |
| | | glassOptimizeMapper.updateOptimizeConfig(json,5); |
| | | glassOptimizeMapper.updateOptimizeConfig(json,5,username); |
| | | }else if (type.equals("磨é")) { |
| | | glassOptimizeMapper.updateOptimizeConfig(json,4); |
| | | glassOptimizeMapper.updateOptimizeConfig(json,4,username); |
| | | } |
| | | return true; |
| | | |
| | |
| | | import com.example.erp.common.Constants; |
| | | import com.example.erp.dto.pp.OrderNumberTransferDTO; |
| | | import com.example.erp.entity.pp.*; |
| | | import com.example.erp.entity.sd.BasicData; |
| | | import com.example.erp.entity.sd.Order; |
| | | import com.example.erp.entity.sd.OrderDetail; |
| | | import com.example.erp.entity.sd.OrderProcessDetail; |
| | |
| | | import com.example.erp.mapper.mm.FinishedOperateLogMapper; |
| | | import com.example.erp.mapper.pp.*; |
| | | import com.baomidou.dynamic.datasource.annotation.DS; |
| | | import com.example.erp.mapper.sd.OrderDetailMapper; |
| | | import com.example.erp.mapper.sd.OrderGlassDetailMapper; |
| | | import com.example.erp.mapper.sd.OrderMapper; |
| | | import com.example.erp.mapper.sd.OrderProcessDetailMapper; |
| | | import com.example.erp.mapper.sd.*; |
| | | import com.example.erp.mapper.userInfo.LogMapper; |
| | | import com.example.erp.service.sd.OrderProcessDetailService; |
| | | import com.example.erp.service.userInfo.LogService; |
| | |
| | | private final RestTemplate restTemplate; |
| | | private final PatchLogMapper patchLogMapper; |
| | | private final ReworkMapper reworkMapper; |
| | | private final BasicDateMapper basicDataMapper; |
| | | |
| | | |
| | | /*public ReportingWorkService(ReportingWorkMapper reportingWorkMapper, BasicDateProduceMapper basicDateProduceMapper, DamageDetailsMapper damageDetailsMapper, ReportingWorkDetailMapper reportingWorkDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, OrderProcessDetailService orderProcessDetailService, OrderMapper orderMapper, FlowCardMapper flowCardMapper, LogService logService, LogMapper logMapper, OrderGlassDetailMapper orderGlassDetailMapper, SysErrorService sysErrorService, OrderDetailMapper orderDetailMapper, FinishedOperateLogMapper finishedOperateLogMapper, ReportingWorkTransferMapper reportingWorkTransferMapper) { |
| | |
| | | date.add(startDate); |
| | | date.add(endDate); |
| | | Map<String, Object> result = new HashMap<>(); |
| | | result.put("data",orderProcessDetailMapper.selectShiftQuantitySv(creatorId, startDate, endDate)); |
| | | BasicData basicData = basicDataMapper |
| | | .selectOne(new QueryWrapper<BasicData>().eq("basic_name", reportingWork.get("process"))); |
| | | result.put("data",orderProcessDetailMapper.selectShiftQuantitySv(creatorId, startDate, endDate,basicData.getNickname())); |
| | | result.put("date",date); |
| | | return result; |
| | | } |
| | |
| | | |
| | | <!--ç¬¬ä¸æ¬¡ä¼åæ¥è¯¢--> |
| | | <select id="firstOptimization"> |
| | | ( SELECT |
| | | c.project_no, |
| | | d.child_width as 'width', |
| | | d.child_height as 'height', |
| | | c.quantity, |
| | | o.shape, |
| | | concat( c.process_id, '-', c.technology_number ) AS 'process_id', |
| | | c.technology_number as layer, |
| | | c.layers_number as total_layer, |
| | | d.glass_child, |
| | | o.product_name, |
| | | o.price, |
| | | o.remarks, |
| | | o.building_number, |
| | | round( d.area * c.quantity, 4 ) as 'area', |
| | | c.order_number, |
| | | d.icon, |
| | | op.project_name, |
| | | 0 as patch_state |
| | | FROM |
| | | pp.flow_card c |
| | | LEFT JOIN sd.order_detail o ON c.order_id = o.order_id |
| | | AND c.order_number = o.order_number |
| | | LEFT JOIN sd.order_glass_detail d ON c.order_id = d.order_id |
| | | AND c.order_number = d.order_number |
| | | AND c.technology_number = d.technology_number |
| | | INNER JOIN pp.optimize_project AS op ON op.project_no = c.project_no |
| | | WHERE |
| | | c.project_no IS NOT NULL |
| | | and c.project_no = #{projectNo} |
| | | ORDER BY |
| | | c.process_id, |
| | | c.order_number |
| | | (SELECT |
| | | c.project_no, |
| | | d.child_width as 'width', |
| | | d.child_height as 'height', |
| | | c.quantity, |
| | | o.shape, |
| | | concat( c.process_id, '-', c.technology_number ) AS 'process_id', |
| | | c.process_id AS 'process_ids', |
| | | c.technology_number as layer, |
| | | c.layers_number as total_layer, |
| | | d.glass_child, |
| | | o.product_name, |
| | | o.price, |
| | | o.remarks, |
| | | o.building_number, |
| | | round( d.area * c.quantity, 4 ) as 'area', |
| | | c.order_number, |
| | | d.icon, |
| | | op.project_name, |
| | | 0 as patch_state, |
| | | a.id as rackNo |
| | | FROM |
| | | pp.flow_card c |
| | | LEFT JOIN sd.order_detail o ON c.order_id = o.order_id |
| | | AND c.order_number = o.order_number |
| | | LEFT JOIN sd.order_glass_detail d ON c.order_id = d.order_id |
| | | AND c.order_number = d.order_number |
| | | AND c.technology_number = d.technology_number |
| | | INNER JOIN pp.optimize_project AS op ON op.project_no = c.project_no |
| | | left join |
| | | (select (@row_number := @row_number + 1) as id,process_id as process_id,technology_number as technology_number from (select process_id,technology_number from pp.flow_card tt where project_no =#{projectNo} group by process_id,technology_number) tt,(select @row_number := 0) as t) a |
| | | on a.process_id=c.process_id and a.technology_number=c.technology_number |
| | | WHERE |
| | | c.project_no IS NOT NULL |
| | | and c.project_no = #{projectNo} |
| | | ORDER BY |
| | | a.id, |
| | | c.process_id, |
| | | c.order_number |
| | | ) union |
| | | ( |
| | | SELECT |
| | |
| | | c.patch_num as quantity, |
| | | o.shape, |
| | | concat( c.process_id, '-', c.technology_number ) AS 'process_id', |
| | | c.process_id AS 'process_ids', |
| | | c.technology_number as layer, |
| | | fc.layers_number as total_layer, |
| | | d.glass_child, |
| | |
| | | c.order_sort as order_number, |
| | | d.icon, |
| | | op.project_name, |
| | | 1 as patch_state |
| | | 1 as patch_state, |
| | | a.id as rackNo |
| | | FROM |
| | | pp.patch_log c |
| | | LEFT JOIN sd.order_detail o ON c.order_id = o.order_id |
| | |
| | | AND c.technology_number = d.technology_number |
| | | INNER JOIN pp.optimize_project AS op ON op.project_no = c.project_no |
| | | LEFT JOIN pp.flow_card fc ON c.process_id = fc.process_id and fc.technology_number=c.technology_number |
| | | left join |
| | | (select (@row_number := @row_number + 1) as id,process_id as process_id,technology_number as technology_number from (select process_id,technology_number from pp.flow_card tt where project_no =#{projectNo} group by process_id,technology_number) tt,(select @row_number := 0) as t) a |
| | | on a.process_id=c.process_id and a.technology_number=c.technology_number |
| | | WHERE |
| | | c.project_no IS NOT NULL |
| | | and c.project_no = #{projectNo} |
| | | ORDER BY |
| | | a.id, |
| | | c.process_id, |
| | | c.order_sort) |
| | | </select> |
| | |
| | | <select id="analogComputationOptimization"> |
| | | SELECT |
| | | h.project_no, |
| | | h.layout_id, |
| | | h.layout_id as rackNo, |
| | | h.width AS width, |
| | | h.height AS height, |
| | | count( 1 ) AS quantity, |
| | |
| | | ORDER BY |
| | | LENGTH( h.layout_id ), |
| | | h.layout_id; |
| | | </select> |
| | | |
| | | |
| | | <select id="getOptimizeDetail"> |
| | | SELECT |
| | | h.project_no, |
| | | h.heat_layout_id as rackNo, |
| | | h.o_width AS width, |
| | | h.o_height AS height, |
| | | (h.height-h.o_height)/2 as shortGrind1, |
| | | (h.height-h.o_height)/2 as shortGrind2, |
| | | (h.width-h.o_width)/2 as longGrind2, |
| | | (h.width-h.o_width)/2 as longGrind1, |
| | | count( 1 ) AS quantity, |
| | | o.shape, |
| | | concat( h.process_id, '-', h.layer ) AS 'process_id', |
| | | h.process_id as process_ids, |
| | | h.layer, |
| | | h.total_layer as total_layer, |
| | | d.glass_child, |
| | | o.product_name, |
| | | o.price, |
| | | o.remarks, |
| | | o.building_number, |
| | | round( d.area * count( 1 ), 4 ) AS 'area', |
| | | c.order_number, |
| | | d.icon, |
| | | o.price, |
| | | h.patch_state |
| | | from |
| | | pp.`optimize_detail` h |
| | | LEFT JOIN pp.flow_card c ON h.process_id = c.process_id |
| | | AND h.layer = c.technology_number |
| | | AND h.order_sort = c.order_number |
| | | LEFT JOIN sd.order_detail o ON c.order_id = o.order_id |
| | | AND c.order_number = o.order_number |
| | | LEFT JOIN sd.order_glass_detail d ON c.order_id = d.order_id |
| | | AND c.order_number = d.order_number |
| | | AND c.technology_number = d.technology_number |
| | | WHERE |
| | | h.project_no =#{projectNo} |
| | | GROUP BY |
| | | h.project_no, |
| | | h.heat_layout_id, |
| | | h.width, |
| | | h.height, |
| | | h.process_id, |
| | | h.layer, |
| | | c.order_number |
| | | ORDER BY |
| | | h.heat_layout_id; |
| | | </select> |
| | | |
| | | <!--å·¥ç¨ä¿¡æ¯æµç¨å¡--> |
| | |
| | | #{glass.orderSort}, |
| | | #{glass.stockSort}, |
| | | #{glass.polySort}, |
| | | #{glass.realwidth}, |
| | | #{glass.realheight}, |
| | | #{glass.realWidth}, |
| | | #{glass.realHeight}, |
| | | #{glass.width}, |
| | | #{glass.height}, |
| | | #{glass.x}, |
| | |
| | | JSON_EXTRACT( oc.config_detail, '$.load_length' ) as load_length, |
| | | JSON_EXTRACT( oc.config_detail, '$.x_space' ) as x_space, |
| | | JSON_EXTRACT( oc.config_detail, '$.y_space' ) as y_space |
| | | from pp.optimize_admin oa left join pp.optimize_config oc on oa.h_id=oc.id where name='admin' |
| | | from pp.optimize_admin oa where config_type=1 and creater=#{username} |
| | | </select> |
| | | |
| | | <select id="getEdgeTrimming"> |
| | |
| | | JSON_EXTRACT( oc.config_detail, '$.down_trim' ) as downTrim, |
| | | JSON_EXTRACT( oc.config_detail, '$.auto_fill_trim' ) as autoFillTrim, |
| | | JSON_EXTRACT( oc.config_detail, '$.quick_trim' ) as quickTrim |
| | | from pp.optimize_config oc where config_type=5 |
| | | from pp.optimize_config oc where config_type=5 and creater=#{username} |
| | | </select> |
| | | |
| | | <select id="getGrindingTrimming"> |
| | |
| | | JSON_EXTRACT( oc.config_detail, '$.auto_fill_edge' ) as autoFillEdge, |
| | | JSON_EXTRACT( oc.config_detail, '$.quick_edge' ) as quickEdge, |
| | | JSON_EXTRACT( oc.config_detail, '$.min_auto_lenght' ) as minAutoLenght |
| | | from pp.optimize_config oc where config_type=4 |
| | | from pp.optimize_config oc where config_type=4 and creater=#{username} |
| | | </select> |
| | | |
| | | <update id="updateOptimizeConfig"> |
| | | UPDATE pp.optimize_config set config_detail=#{json},create_time=now() |
| | | where config_type=#{type} |
| | | where config_type=#{type} and creater=#{username} |
| | | </update> |
| | | |
| | | <select id="simulatedTypesettingUsingOpt"> |
| | |
| | | </select> |
| | | |
| | | <select id="selectShiftQuantitySv"> |
| | | select CAST(concat(b.order_id,'/',a.order_number,'/',a.technology_number) as char ) as 'order_id', |
| | | select * from(select CAST(concat(b.order_id,'/',a.order_number,'/',a.technology_number) as char ) as 'order_id', |
| | | c.child_width, |
| | | c.child_height, |
| | | a.completed_quantity, |
| | | a.breakage_quantity |
| | | a.breakage_quantity, |
| | | a.order_number |
| | | from pp.reporting_work as b |
| | | left join pp.reporting_work_detail as a |
| | | on a.reporting_work_id = b.reporting_work_id |
| | |
| | | and c.technology_number = a.technology_number |
| | | where b.reviewed_state >=0 |
| | | and b.creator_id = #{creatorId} |
| | | and UNIX_TIMESTAMP(b.reporting_work_time) BETWEEN UNIX_TIMESTAMP(#{startDate}) and UNIX_TIMESTAMP(#{endDate}) |
| | | order by b.id desc |
| | | and UNIX_TIMESTAMP(b.reporting_work_time) BETWEEN UNIX_TIMESTAMP(#{startDatetime}) and UNIX_TIMESTAMP(#{endDatetime}) |
| | | order by b.id desc ) as e |
| | | <if test="step != null and step != ''"> |
| | | group by e.order_number |
| | | </if> |
| | | </select> |
| | | </mapper> |