Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override
| | |
| | | let props = defineProps({ |
| | | printList: null, |
| | | printMerge: null, |
| | | printLike: null |
| | | printLike: null, |
| | | printProject:null |
| | | }) |
| | | |
| | | const {currentRoute} = useRouter() |
| | | const route = currentRoute.value |
| | | const printMerge = props.printMerge |
| | | const printProject = props.printProject |
| | | |
| | | //打印时间 |
| | | const currentTime = new Date(); |
| | |
| | | data.value.printList = JSON.parse(props.printList) |
| | | let flowCardCount = '' |
| | | onMounted(() => { |
| | | request.post(`/processCard/getSelectPrinting/${merge}/${like}`, data.value).then((res) => { |
| | | if (res.code == 200) { |
| | | produceList.value = deepClone(res.data.data) |
| | | //处理单片厚度 |
| | | |
| | | for (let j = 0; j < produceList.value.length; j++) { |
| | | let sumWeight = 0 |
| | | produceList.value[j].detailList.forEach((item, index) => { |
| | | // 解析 separation 字段的 JSON 字符串 |
| | | let separationObj = JSON.parse(item.separation); |
| | | |
| | | // 获取 thickness 的原始值 |
| | | let thicknessValue = separationObj.thickness; |
| | | |
| | | // 去除 'mm' 单位 |
| | | let thicknessWithoutUnit = thicknessValue.replace('mm', ''); |
| | | |
| | | item.separation = thicknessWithoutUnit |
| | | |
| | | sumWeight += item.width * item.height * item.quantity / 1000000 * item.separation * 2.5 * 1; |
| | | |
| | | }); |
| | | produceList.value[j].detail[0].weight = sumWeight |
| | | console.log(printProject) |
| | | if(props.printProject!=null){ |
| | | request.post(`/processCard/getSelectPrintProject/${printProject}`).then((res) => { |
| | | if (res.code == 200) { |
| | | console.log(res.data.data) |
| | | load(res.data.data) |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | | } |
| | | //处理合并打印 |
| | | if (printMerge !== null && printMerge !== undefined && printMerge !== "") { |
| | | |
| | | produceList.value.forEach(item => { |
| | | item.detail[0].technologyNumber = printMerge; |
| | | }); |
| | | |
| | | //合并打印工艺流程处理 |
| | | if (like == null) { |
| | | let process = produceList.value[0].detail[0].process |
| | | let indexOfJiaJiao = process.indexOf('夹胶'); |
| | | if (indexOfJiaJiao !== -1) { |
| | | // 使用 substring 截取 "夹胶" 后面的部分,包括 "夹胶" 本身 |
| | | let afterJiaJiao = process.substring(indexOfJiaJiao).trim(); |
| | | produceList.value.forEach(item => { |
| | | item.detail[0].process = afterJiaJiao |
| | | }) |
| | | } |
| | | |
| | | let indexOfProceList = produceList.value[0].processList |
| | | let getProceList = indexOfProceList.findIndex(item => item.process === '夹胶'); |
| | | |
| | | if (getProceList !== -1) { |
| | | // 使用 filter 方法过滤出 "夹胶" 及其之后的对象 |
| | | produceList.value[0].processList = indexOfProceList.filter((item, index) => index >= getProceList); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | produceList.value.forEach(item => { |
| | | let technologyNumberMerge = printMerge.split('').join(','); |
| | | item.detail[0].technologyNumberMerge = technologyNumberMerge |
| | | }) |
| | | //处理编号列 |
| | | //定义存放编号数组 |
| | | const s01Values = []; |
| | | for (let i = 0; i < produceList.value.length; i++) { |
| | | const s01Values = []; |
| | | // 遍历 detailList 数组,提取 S01 值到 s01Values 数组 |
| | | if (produceList.value[i].detailList[0].other_columns != null |
| | | || produceList.value[i].detailList[0].other_columns != undefined) { |
| | | produceList.value[i].detailList.forEach(element => { |
| | | const otherColumnsObject = JSON.parse(element.other_columns); |
| | | const s01Value = otherColumnsObject.S01; |
| | | s01Values.push(s01Value || ''); // 如果 S01 值为空,添加空字符串或者其他默认值 |
| | | }); |
| | | |
| | | // 将 s01Values 中的值赋给每个订单详情对象的 s01Value 属性 |
| | | produceList.value[i].detailList.forEach((detail, index) => { |
| | | detail.s01Value = index < s01Values.length ? s01Values[index] : ''; // 赋值给 s01Value 属性 |
| | | }); |
| | | } |
| | | |
| | | }) |
| | | }else{ |
| | | request.post(`/processCard/getSelectPrinting/${merge}/${like}`, data.value).then((res) => { |
| | | if (res.code == 200) { |
| | | load(res.data.data) |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | | } |
| | | //处理同配置打印 |
| | | handleGetQRCode() |
| | | handleSummary() |
| | | AreaQuantitySummary() |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | |
| | | } |
| | | ) |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | const load = (data) => { |
| | | produceList.value = deepClone(data) |
| | | //处理单片厚度 |
| | | |
| | | for (let j = 0; j < produceList.value.length; j++) { |
| | | let sumWeight = 0 |
| | | produceList.value[j].detailList.forEach((item, index) => { |
| | | // 解析 separation 字段的 JSON 字符串 |
| | | let separationObj = JSON.parse(item.separation); |
| | | |
| | | // 获取 thickness 的原始值 |
| | | let thicknessValue = separationObj.thickness; |
| | | |
| | | // 去除 'mm' 单位 |
| | | let thicknessWithoutUnit = thicknessValue.replace('mm', ''); |
| | | |
| | | item.separation = thicknessWithoutUnit |
| | | |
| | | sumWeight += item.width * item.height * item.quantity / 1000000 * item.separation * 2.5 * 1; |
| | | |
| | | }); |
| | | produceList.value[j].detail[0].weight = sumWeight |
| | | } |
| | | //处理合并打印 |
| | | if (printMerge !== null && printMerge !== undefined && printMerge !== "") { |
| | | |
| | | produceList.value.forEach(item => { |
| | | item.detail[0].technologyNumber = printMerge; |
| | | }); |
| | | |
| | | //合并打印工艺流程处理 |
| | | if (like == null) { |
| | | let process = produceList.value[0].detail[0].process |
| | | let indexOfJiaJiao = process.indexOf('夹胶'); |
| | | if (indexOfJiaJiao !== -1) { |
| | | // 使用 substring 截取 "夹胶" 后面的部分,包括 "夹胶" 本身 |
| | | let afterJiaJiao = process.substring(indexOfJiaJiao).trim(); |
| | | produceList.value.forEach(item => { |
| | | item.detail[0].process = afterJiaJiao |
| | | }) |
| | | } |
| | | |
| | | let indexOfProceList = produceList.value[0].processList |
| | | let getProceList = indexOfProceList.findIndex(item => item.process === '夹胶'); |
| | | |
| | | if (getProceList !== -1) { |
| | | // 使用 filter 方法过滤出 "夹胶" 及其之后的对象 |
| | | produceList.value[0].processList = indexOfProceList.filter((item, index) => index >= getProceList); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | produceList.value.forEach(item => { |
| | | let technologyNumberMerge = printMerge.split('').join(','); |
| | | item.detail[0].technologyNumberMerge = technologyNumberMerge |
| | | }) |
| | | //处理编号列 |
| | | //定义存放编号数组 |
| | | const s01Values = []; |
| | | for (let i = 0; i < produceList.value.length; i++) { |
| | | const s01Values = []; |
| | | // 遍历 detailList 数组,提取 S01 值到 s01Values 数组 |
| | | if (produceList.value[i].detailList[0].other_columns != null |
| | | || produceList.value[i].detailList[0].other_columns != undefined) { |
| | | produceList.value[i].detailList.forEach(element => { |
| | | const otherColumnsObject = JSON.parse(element.other_columns); |
| | | const s01Value = otherColumnsObject.S01; |
| | | s01Values.push(s01Value || ''); // 如果 S01 值为空,添加空字符串或者其他默认值 |
| | | }); |
| | | |
| | | // 将 s01Values 中的值赋给每个订单详情对象的 s01Value 属性 |
| | | produceList.value[i].detailList.forEach((detail, index) => { |
| | | detail.s01Value = index < s01Values.length ? s01Values[index] : ''; // 赋值给 s01Value 属性 |
| | | }); |
| | | } |
| | | |
| | | } |
| | | //处理同配置打印 |
| | | handleGetQRCode() |
| | | handleSummary() |
| | | AreaQuantitySummary() |
| | | } |
| | | |
| | | const AreaQuantitySummary = () => { |
| | | |
| | | for (let i = 0; i < produceList.value.length; i++) { |
| | |
| | | <div style="float: left;"><input style="border: none;font-size: 28px;width: 70px;margin: 5px "/></div> |
| | | <div id="bj" style="float: right;font-size: 28px">{{ id + 1 }}</div> |
| | | <div>{{ company.companyName }}</div> |
| | | <div>生产流程卡</div> |
| | | <div>生产流程卡<span v-if="printProject!=null">({{ printProject }})</span></div> |
| | | <div style="font-weight: bolder;display: flex;justify-content:space-between"> |
| | | <div> |
| | | 打印人:{{user.user.userName}} |
| | |
| | | detailPage.value = 3; |
| | | }; |
| | | |
| | | //获取SetTrimming的值 |
| | | const dataForGlassInventory = ref(); |
| | | const handleProjectDetailData = (data) => { |
| | | dataForGlassInventory.value = data; |
| | | }; |
| | | |
| | | </script> |
| | | |
| | | <template > |
| | | <div style="width: 100%;height: 100%"> |
| | | <div id="main-body"> |
| | | <project-detail @changeDialog="changeDialog"/> |
| | | <project-detail @changeDialog="changeDialog" @forward-data-to-grandparent="handleProjectDetailData"/> |
| | | </div> |
| | | <div id="main-footer"> |
| | | <glass-inventory/> |
| | | <glass-inventory :receivedData="dataForGlassInventory"/> |
| | | </div> |
| | | |
| | | |
| | |
| | | <script setup> |
| | | import {onMounted, reactive, ref} from "vue"; |
| | | import {nextTick, onMounted, reactive, ref, watch} from "vue"; |
| | | import {useI18n} from "vue-i18n"; |
| | | import request from "@/utils/request"; |
| | | import {ElMessage} from "element-plus"; |
| | |
| | | item.upTrim = 0; |
| | | }); |
| | | xGrid.value.loadData(formattedData); |
| | | gridOptions.data = formattedData; |
| | | } else { |
| | | } |
| | | } else { |
| | |
| | | selectMaterialStore(); |
| | | }); |
| | | |
| | | watch(() => props.receivedData, (newData) => { |
| | | if (newData) { |
| | | Trimming(newData); |
| | | } |
| | | }, { immediate: true }); |
| | | |
| | | const props = defineProps({ |
| | | receivedData : { |
| | | type: Object, |
| | | required: false, |
| | | properties: { |
| | | quicksetLeft: { type: Number }, |
| | | quicksetBottom: { type: Number }, |
| | | quicksetRight: { type: Number }, |
| | | quicksetTop: { type: Number } |
| | | }} |
| | | }); |
| | | |
| | | //接受SetTrimming的值 (修边) |
| | | const Trimming = (receivedData) => { |
| | | nextTick(() => { |
| | | const data = gridOptions.data; |
| | | console.log('接收到的receivedData:', receivedData); |
| | | console.log('表格原始数据:', data); |
| | | if (data) { |
| | | try { |
| | | const updatedData = []; |
| | | for (let i = 0; i < data.length; i++) { |
| | | const item = data[i]; |
| | | const updatedItem = { |
| | | ...item, |
| | | // 此处修改为从 receivedData 中获取对应的值来更新表格数据项 |
| | | leftTrim: Number(receivedData.quicksetLeft), |
| | | downTrim: Number(receivedData.quicksetBottom), |
| | | rigthTrim: Number(receivedData.quicksetRight), |
| | | upTrim: Number(receivedData.quicksetTop), |
| | | }; |
| | | updatedData.push(updatedItem); |
| | | } |
| | | gridOptions.data = updatedData; |
| | | xGrid.value.loadData(updatedData); |
| | | } catch (error) { |
| | | console.error('更新表格数据时出错:', error); |
| | | // 这里可以根据实际需求添加一些回滚操作或者提示用户的逻辑,比如显示一个错误提示框等 |
| | | ElMessage.error('更新表格数据时出现错误,请检查输入或联系管理员'); |
| | | } |
| | | } else { |
| | | console.warn('表格数据为空,无法更新磨量值'); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div style="width: 100%;height: 100%"> |
| | | <vxe-grid |
| | | @filter-change="filterChanged" |
| | | height="100%" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | | v-bind="gridOptions" |
| | | v-on="gridEvents" |
| | | > |
| | | |
| | | |
| | |
| | | }, |
| | | |
| | | }) |
| | | let emit = defineEmits([ |
| | | 'changeDialog' |
| | | ]) |
| | | |
| | | const handleCommand = async (command) => { |
| | | await emit('changeDialog', command) |
| | | } |
| | |
| | | }); |
| | | }; |
| | | |
| | | //中转站接受SetTrimming的值 |
| | | const emit = defineEmits([ |
| | | 'changeDialog', |
| | | 'forward-data-to-grandparent' |
| | | ]); |
| | | |
| | | const handleTrimmingData = (data) => { |
| | | emit('forward-data-to-grandparent', data); |
| | | }; |
| | | |
| | | </script> |
| | | |
| | |
| | | title="设置修边" |
| | | destroy-on-close |
| | | style="width: 35%;height:80%;margin-top: 3vh;"> |
| | | <set-trimming /> |
| | | <set-trimming :closeDialog="closeDialog" @send-data-event="handleTrimmingData"/> |
| | | </el-dialog> |
| | | |
| | | <el-button id="button" type="primary">保存</el-button> |
| | |
| | | <script setup> |
| | | import {ref} from "vue"; |
| | | import {defineEmits} from 'vue'; |
| | | |
| | | |
| | | function setupComponent() { |
| | | // 各个输入框绑定的值,初始化为0 |
| | |
| | | |
| | | const check = ref(true) |
| | | |
| | | |
| | | const emit = defineEmits(['send-data-event',]); |
| | | const props = defineProps({ |
| | | closeDialog: Function |
| | | }); |
| | | |
| | | const setTrimming = () => { |
| | | const dataToSend = { |
| | | quicksetTop: quicksetTop.value, |
| | | quicksetRight: quicksetRight.value, |
| | | quicksetBottom: quicksetBottom.value, |
| | | quicksetLeft: quicksetLeft.value |
| | | }; |
| | | emit('send-data-event', dataToSend); |
| | | props.closeDialog(3); |
| | | }; |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | |
| | | <el-input-number v-model="quicksetLeft" class="left" placeholder="0" |
| | | controls-position="right" :step="0.1" :min="0"></el-input-number> |
| | | </div> |
| | | <el-button type="primary" style="float: right; margin: 184px 0 0 13px;">应用</el-button> |
| | | <el-button type="primary" style="float: right; margin: 184px 0 0 13px;" @click="setTrimming">应用</el-button> |
| | | </div> |
| | | |
| | | <div> |
| | |
| | | import {Printer} from "@element-plus/icons-vue/global"; |
| | | import companyInfo from "@/stores/sd/companyInfo" |
| | | import {remove} from "xe-utils"; |
| | | import PrintProcess from "@/components/pp/PrintProcess.vue"; |
| | | //语言获取 |
| | | const {t} = useI18n() |
| | | |
| | | let router = useRouter() |
| | | const dialogTableVisible = ref(false) |
| | | const dialogTableVisibleLabelXJTwo = ref(false) |
| | | let rowClickIndex = ref(null) |
| | | |
| | |
| | | orderId: '', |
| | | project: '' |
| | | }) |
| | | |
| | | //打印 |
| | | let printRow = ref({ |
| | | list: null, |
| | | printMergeVal: null, |
| | | like: null, |
| | | project:null |
| | | }) |
| | | const getTableRow = (row, type) => { |
| | | switch (type) { |
| | | case 'edit' :{ |
| | |
| | | case 'edit2' :{ |
| | | router.push({path: '/main/processCard/PrintLabel', query: { projectNo: row.project_no,type:3 }}) |
| | | break |
| | | } |
| | | case 'edit3' :{ |
| | | printRow.value.project=row.project_no |
| | | console.log(printRow.value.project) |
| | | dialogTableVisible.value = true |
| | | } |
| | | } |
| | | } |
| | |
| | | //表头参数 |
| | | columns: [ |
| | | {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50}, |
| | | {title: t('basicData.operate'), width: 140, slots: { default: 'button_slot' },fixed:"left"}, |
| | | {title: t('basicData.operate'), width: 240, slots: { default: 'button_slot' },fixed:"left"}, |
| | | {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50}, |
| | | { |
| | | field: 'project_no', |
| | |
| | | } |
| | | }) |
| | | } |
| | | const printContent = ref({ |
| | | id: 'child', |
| | | |
| | | }) |
| | | </script> |
| | | |
| | | <template> |
| | |
| | | <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">{{$t('machine.cutting')}}</el-button> |
| | | <el-button @click="getTableRow(row,'edit1')" link type="primary" size="small">{{$t('machine.tempering')}}</el-button> |
| | | <el-button @click="getTableRow(row,'edit2')" link type="primary" size="small">{{$t('components.finishedProduct')}}</el-button> |
| | | <el-button @click="getTableRow(row,'edit3')" link type="primary" size="small">{{$t('流程卡')}}</el-button> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | |
| | | :projectNo="labelRow.projectNo" |
| | | style="width: 100%;height: 100%"/> |
| | | </el-dialog> |
| | | |
| | | <el-dialog |
| | | id="sizePrintCalrd" |
| | | v-model="dialogTableVisible" |
| | | :title="$t('processCard.print')" |
| | | destroy-on-close |
| | | style="width: 75%;height:75% "> |
| | | <template #header="{ close, titleId, titleClass }"> |
| | | <el-button v-print="printContent" :icon="Printer" circle /> |
| | | </template> |
| | | <print-process |
| | | id="child" |
| | | :printLike="printRow.like" |
| | | :printList="printRow.list" |
| | | :printMerge="printRow.printMergeVal" |
| | | :printProject="printRow.project" |
| | | style="width: 100%;height: 100%"/> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | width: 100%; |
| | | } |
| | | |
| | | :deep(#sizePrintCalrd .el-dialog__body) { |
| | | height: 85%; |
| | | width: 100%; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | </style> |
| | |
| | | return Result.seccess(flowCardService.getSelectPrintingSv(object,printMerge,printLike)); |
| | | } |
| | | |
| | | @ApiOperation("工程打印流程卡数据查询接口") |
| | | @PostMapping("/getSelectPrintProject/{printProject}") |
| | | public Result getSelectPrintProject( |
| | | @PathVariable String printProject) { |
| | | return Result.seccess(flowCardService.getSelectPrintProject(printProject)); |
| | | } |
| | | |
| | | @ApiOperation("打印标签数据查询接口") |
| | | @PostMapping("/getSelectPrintLabel/{projectNo}/{type}") |
| | | public Result getSelectPrintLabel(@PathVariable String projectNo,@PathVariable String type) { |
| | |
| | | Boolean deleteProcessMp(String processId, String technologyNumber); |
| | | |
| | | Boolean updateOrderProcessMp(String orderId, String number, String technologyNumber, String orderprocess); |
| | | |
| | | List<FlowCard> getFlowCardListPrintProject(String printProject); |
| | | } |
| | |
| | | return map; |
| | | } |
| | | |
| | | public Map<String, Object> getSelectPrintProject(String printProject) { |
| | | |
| | | Map<String, Object> map = new HashMap<>(); |
| | | List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();//最终结果 |
| | | List<FlowCard> flowCardList = flowCardMapper.getFlowCardListPrintProject(printProject); |
| | | if (!flowCardList.isEmpty()) { |
| | | for (FlowCard flowCard : flowCardList) { |
| | | Map<String, Object> itemmap = new HashMap<>(); |
| | | |
| | | |
| | | //是否包含切割 |
| | | //boolean containsCutting = flowCard.getProcess().contains("切割"); |
| | | String processSub=flowCard.getProcess().substring(0, 2); |
| | | if(processSub.equals("夹胶") || processSub.equals("中空")){ |
| | | itemmap.put("detail", flowCardMapper.getPrimaryListLimt(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()),flowCard.getGlassChild(),flowCard.getProcess(),flowCard.getOrderId())); |
| | | |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailList(flowCard.getProcessId(), flowCard.getTechnologyNumber(),flowCard.getProcess()); |
| | | itemmap.put("detailList", detailList); |
| | | } |
| | | else { |
| | | itemmap.put("detail", flowCardMapper.getPrimaryList(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()),flowCard.getGlassChild(),flowCard.getProcess(),flowCard.getOrderId())); |
| | | |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListLike(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()),flowCard.getProcess()); |
| | | itemmap.put("detailList", detailList); |
| | | } |
| | | |
| | | |
| | | |
| | | //工艺流程 |
| | | //List<Map<String, Object>> processList = flowCardMapper.getProcessList(flowCard.getProcessId(), flowCard.getTechnologyNumber()); |
| | | String input = flowCard.getProcess(); |
| | | String delimiter = "->"; |
| | | |
| | | // 分割字符串 |
| | | String[] parts = input.split(delimiter); |
| | | |
| | | // 创建 List<Map<String, Object>> |
| | | List<Map<String, Object>> processList = new ArrayList<>(); |
| | | |
| | | // 遍历分割后的部分并将其存入 List<Map<String, Object>> |
| | | for (int i = 0; i < parts.length; i++) { |
| | | Map<String, Object> maps = new HashMap<>(); |
| | | maps.put("id", i); // 添加一个索引字段 |
| | | maps.put("process", parts[i]); // 添加实际的值 |
| | | |
| | | processList.add(maps); |
| | | } |
| | | |
| | | itemmap.put("processList", processList); |
| | | // itemmap.put("numberList", numberList); |
| | | itemmap.put("count", flowCardMapper.countFlowCard(flowCard.getOrderId())); |
| | | itemmap.put("remarkList", flowCardMapper.remakList(flowCard.getProcessId())); |
| | | list.add(itemmap); |
| | | |
| | | } |
| | | } |
| | | |
| | | map.put("data", list); |
| | | return map; |
| | | } |
| | | |
| | | public Boolean updateComposingSv(Map<String, Object> object) { |
| | | List<FlowCard> flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("composing")), FlowCard.class); |
| | | if (!flowCardList.isEmpty()) { |
| | |
| | | update sd.order_glass_detail set process=#{orderprocess} |
| | | where order_id=#{orderId} and order_number=#{number} and technology_number=#{technologyNumber} |
| | | </update> |
| | | |
| | | <select id="getFlowCardListPrintProject"> |
| | | select fc.id, |
| | | fc.order_id, |
| | | fc.process_id, |
| | | o.customer_name, |
| | | o.project, |
| | | fc.order_number, |
| | | ogd.technology_number, |
| | | ogd.glass_address, |
| | | sum(fc.quantity) as quantity, |
| | | round(sum(ogd.child_width * ogd.child_height * fc.quantity / 1000000), 2) as total_area, |
| | | od.product_name, |
| | | ogd.glass_child, |
| | | fc.founder, |
| | | date(fc.splitFrame_time) as splitFrame_time, |
| | | /* if(fc.print_status=0,'未打印','已打印') as print_status*/ |
| | | fc.print_status, |
| | | ogd.process |
| | | from pp.flow_card as fc |
| | | left join sd.order_glass_detail as ogd |
| | | on ogd.order_id = fc.order_id and ogd.order_number = fc.order_number and |
| | | ogd.technology_number = fc.technology_number |
| | | left join sd.order_detail as od on od.order_id = fc.order_id and od.order_number = fc.order_number |
| | | left join sd.`order` as o on o.order_id = fc.order_id |
| | | where fc.project_no = #{printProject} |
| | | GROUP BY fc.process_id, ogd.technology_number |
| | | order by fc.process_id, ogd.technology_number |
| | | </select> |
| | | </mapper> |
| | |
| | | </update> |
| | | |
| | | <select id="selectDifferentSize"> |
| | | |
| | | select a.order_number,count(a.order_number),a.order_id from(select order_id,order_number |
| | | from sd.order_glass_detail ogd |
| | | where ogd.order_id = #{orderId} |
| | | group by ogd.order_number,ogd.child_height,child_width) |
| | | as a |
| | | inner join order_detail od |
| | | on od.order_id = a.order_id |
| | | and od.order_number = a.order_number |
| | | and (od.bend_radius is null or od.bend_radius = '') |
| | | group by a.order_number |
| | | having count(a.order_number) > 1 |
| | | </select> |