Merge branch 'master' of http://bore.pub:10439/r/ERP_override
| | |
| | | } |
| | | /*滚动条整体部分*/ |
| | | .mytable-scrollbar ::-webkit-scrollbar { |
| | | width: 15px; |
| | | height: 15px; |
| | | width: 10px; |
| | | height: 10px; |
| | | } |
| | | /*滚动条的轨道*/ |
| | | .mytable-scrollbar ::-webkit-scrollbar-track { |
| | |
| | | /*box-shadow: inset 0 0 6px rgba(0,0,0,.3);*/ |
| | | } |
| | | .mytable-scrollbar:hover ::-webkit-scrollbar-thumb { |
| | | background-color: white; |
| | | background-color: rgb(214,216,221); |
| | | box-shadow: inset 0 0 6px rgba(0,0,0,.3); |
| | | } |
| | | .mytable-scrollbar:active ::-webkit-scrollbar-thumb { |
| | | background-color: white; |
| | | background-color: #909399; |
| | | } |
| | | /*边角,即两个滚动条的交汇处*/ |
| | | .mytable-scrollbar ::-webkit-scrollbar-corner { |
| | |
| | | sortable: true,width: 100 |
| | | }, |
| | | { |
| | | field: 'bend_radius', |
| | | title: t('order.bendRadius'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged, |
| | | sortable: true,width: 120 |
| | | }, |
| | | { |
| | | field: 'area', |
| | | title: t('order.area'), |
| | | filters: [{data: ''}], |
| | |
| | | } |
| | | ) |
| | | |
| | | store.createWebSocket(); |
| | | //store.createWebSocket(); |
| | | |
| | | // 退出登录 |
| | | function quit(){ |
| | |
| | | |
| | | }) |
| | | produceList = produceList.value.concat(deepClone(res.data.data)) |
| | | console.log(produceList) |
| | | xGrid.value.reloadData(produceList) |
| | | gridOptions.loading = false |
| | | } else { |
| | |
| | | {field: 'thickness', title: t('processCard.glassThickness'), width: '80px'}, |
| | | {field: 'weight', title: t('processCard.weight'), slots: {default: 'weight_sum'}, width: '85px'}, |
| | | {field: 'remarks', title: t('processCard.notes'), width: '85px',filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod: filterChanged}, |
| | | {field: 'bend_radius', title: t('order.bendRadius'), width: '110px',filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod: filterChanged} |
| | | {field: 'bend_radius', title: t('order.bendRadius'), width: '120px',filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod: filterChanged,sortable: true,} |
| | | |
| | | ],//表头按钮 |
| | | |
| | |
| | | $gridLeft.clearCheckboxRow() |
| | | $grid.clearCheckboxRow() |
| | | } |
| | | } |
| | | |
| | | |
| | | //按编号创建流程卡 |
| | | const createProcessCardNo = () => { |
| | | const $grid = xGrid.value |
| | | const checkedList = $grid.getCheckboxRecords() |
| | | |
| | | if (checkedList.length === 0) { |
| | | ElMessage.warning(t('processCard.schedulingOk')) |
| | | return |
| | | } |
| | | //productionId |
| | | const $gridLeft = xGridLeft.value |
| | | const leftData = $gridLeft.getTableData().fullData |
| | | let index = 0 |
| | | if (leftData.length !== 0) { |
| | | index = leftData[0].landingSequence + 1 |
| | | //index = index.toString().padStart(2, '0') |
| | | } |
| | | |
| | | let processId= null |
| | | |
| | | if (maxProcseeId!== null || maxProcseeId!== undefined|| maxProcseeId!== ''){ |
| | | if (leftData.length !== 0){ |
| | | const str=leftData[0].processId |
| | | const lastThree = str.slice(-3); |
| | | const result = lastThree*1 + 1; |
| | | processId= productionId + result.toString().padStart(3, '0') |
| | | } |
| | | else { |
| | | // 截取后三位 |
| | | const lastThree = maxProcseeId.slice(-3); |
| | | const result = lastThree*1 + 1; |
| | | processId= productionId + result.toString().padStart(3, '0') |
| | | } |
| | | |
| | | } |
| | | else { |
| | | |
| | | processId = productionId + index.toString().padStart(3, '0') |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | const regex = /^(\d+|)$/; |
| | | if (!regex.test(checkedNum.value)) { |
| | | ElMessage.warning(t('processCard.schedulingNo')) |
| | | return |
| | | } |
| | | |
| | | checkedList.forEach((item) => { |
| | | index++ |
| | | processId = productionId + index.toString().padStart(3, '0') |
| | | item.processId = processId |
| | | item.landingSequence = index |
| | | item.quantity = item.baiscQuantity |
| | | }) |
| | | //删除key |
| | | checkedList.forEach((item) => { |
| | | delete item._X_ROW_KEY |
| | | }) |
| | | $gridLeft.insertAt(checkedList) |
| | | $grid.remove(checkedList) |
| | | //清除两边复选框 |
| | | $gridLeft.clearCheckboxRow() |
| | | $grid.clearCheckboxRow() |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | <br> |
| | | <el-button type="primary" @click="createProcessCard">{{ $t('processCard.establishProcessCards') }} |
| | | </el-button> |
| | | <br><br><br><br><br> |
| | | <el-button type="primary" @click="createProcessCardNo">按序号创建 |
| | | </el-button> |
| | | </el-main> |
| | | </div> |
| | | |
| | |
| | | total.dataTotal = res.data.total.total * 1 |
| | | total.pageTotal = res.data.total.pageTotal |
| | | pageTotal.value = res.data.total |
| | | console.log(res.data.data) |
| | | xGrid.value.loadData(res.data.data) |
| | | gridOptions.loading = false |
| | | if (selectState==1){ |
| | |
| | | processingNote: '', |
| | | } |
| | | }) |
| | | const columns = [ |
| | | // {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {field: 'product_name', width: 150, |
| | | title: t('order.product'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged}, |
| | | {field: 'glass_child',width: 130, title: t('reportingWorks.glassChild') ,filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged}, |
| | | {field: 'order_type', width: 120,title: t('order.orderType'),filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged}, |
| | | {field: 'process_id',width: 150, title: t('processCard.processId'),filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged}, |
| | | // {field: 'order_number', width: 90,title: t('order.OrderNum'),showOverflow:"ellipsis",filters: [{data: ''}], |
| | | // slots: {filter: 'num1_filter'}, |
| | | // filterMethod: filterChanged}, |
| | | // {field: 'glassNumber', width: 110,title: t('reportingWorks.glassNumber'),showOverflow:"ellipsis",filters: [{data: ''}], |
| | | // slots: {filter: 'num1_filter'}, |
| | | // filterMethod: filterChanged}, |
| | | {field: 'technology_number', width: 110,title: t('processCard.technologyNumber'),showOverflow:"ellipsis",filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged}, |
| | | {field: 'quantity', width: 90,title: t('order.quantity')}, |
| | | {field: 'broken_num',width: 90, title: t('reportingWorks.quantityBroken')}, |
| | | // {field: 'shippedQuantity',width: 120, title: t('report.shippedQuantity')}, |
| | | {field: 'inventory',width: 120, title: t('report.inventoryNum')}, |
| | | {field: 'inventoryArea',width: 120, title: t('report.inventoryArea')}, |
| | | ] |
| | | |
| | | //需要合并的列 |
| | | let column = [1,3,8] |
| | | //点击查询 |
| | |
| | | ElMessage.warning(t('report.noDataFoundForThisOrder')) |
| | | return |
| | | } |
| | | gridOptions.columns = JSON.parse(JSON.stringify(columns)) |
| | | //gridOptions.columns = JSON.parse(JSON.stringify(columns)) |
| | | res.data.title.forEach(item =>{ |
| | | let column = {slots: { default: 'quantitySum' }, width: 90,title: item.process} |
| | | gridOptions.columns.push(column) |
| | |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //筛选配置项 |
| | | remote: true |
| | | // remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | |
| | | mode: 'row', |
| | | showStatus: true |
| | | },//表头参数 |
| | | columns:[],//表头按钮 |
| | | columns : [ |
| | | // {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {field: 'product_name', width: 150, |
| | | title: t('order.product'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged}, |
| | | {field: 'glass_child',width: 130, title: t('reportingWorks.glassChild') ,filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged}, |
| | | {field: 'order_type', width: 120,title: t('order.orderType'),filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged}, |
| | | {field: 'process_id',width: 150, title: t('processCard.processId'),filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged}, |
| | | {field: 'order_number', width: 100,title: t('order.OrderNum'),showOverflow:"ellipsis",filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged}, |
| | | {field: 'glassNumber', width: 110,title: t('reportingWorks.glassNumber'),showOverflow:"ellipsis",filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged}, |
| | | {field: 'technology_number', width: 110,title: t('processCard.technologyNumber'),showOverflow:"ellipsis",filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged}, |
| | | {field: 'quantity', width: 90,title: t('order.quantity')}, |
| | | {field: 'broken_num',width: 90, title: t('reportingWorks.quantityBroken')}, |
| | | // {field: 'shippedQuantity',width: 120, title: t('report.shippedQuantity')}, |
| | | {field: 'inventory',width: 120, title: t('report.inventoryNum')}, |
| | | {field: 'inventoryArea',width: 120, title: t('report.inventoryArea')}, |
| | | ], |
| | | |
| | | toolbarConfig: { |
| | | // buttons: [{ |
| | |
| | | return count.toFixed(2) |
| | | } |
| | | |
| | | //定义滚动条高度 |
| | | let scrollTop = ref(null) |
| | | let scrollHeight = ref(null) |
| | | let clientHeight = ref(null) |
| | | const scrollEvnt = (row) => { |
| | | // 内容高度 |
| | | scrollTop.value = row.$event.target.scrollTop |
| | | scrollHeight.value = row.$event.target.scrollHeight |
| | | clientHeight.value = row.$event.target.clientHeight |
| | | } |
| | | //筛选条件,有外键需要先定义明细里面的数据 |
| | | let filterData = ref({ |
| | | order: { |
| | |
| | | processingNote: '', |
| | | } |
| | | }) |
| | | const columns = [ |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {field: 'order_number', width: 150, title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | //{field: 'shape',width: 130, title: t('order.shape') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'glassNumber', width: 110,title: t('reportingWorks.glassNumber'),showOverflow:"ellipsis",filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged}, |
| | | {field: 'product_name', width: 120,title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'child_width',width: 110, title: t('order.width')}, |
| | | {field: 'child_height', width: 90,title: t('order.height'),showOverflow:"ellipsis"}, |
| | | {field: 'quantity', width: 90,title: t('order.quantity')}, |
| | | {field: 'technology_number',width: 90, title: t('processCard.technologyNumber')}, |
| | | {field: 'glass_child',width: 120, title: t('reportingWorks.glassChild')}, |
| | | {field: 'inventoryNum',width: 120, title: t('report.inventoryNum')}, |
| | | {field: 'inventoryArea',width: 120, title: t('report.inventoryArea')}, |
| | | // {field: 'shippedQuantity',width: 120, title: t('report.shippedQuantity')}, |
| | | // {field: 'area',width: 120, title: t('report.area')}, |
| | | ] |
| | | |
| | | //需要合并的列 |
| | | let column = [1,2,3] |
| | | //点击查询 |
| | |
| | | ElMessage.warning(t('report.noDataFoundForThisOrder')) |
| | | return |
| | | } |
| | | gridOptions.columns = JSON.parse(JSON.stringify(columns)) |
| | | //gridOptions.columns = JSON.parse(JSON.stringify(columns)) |
| | | res.data.title.forEach(item =>{ |
| | | let column = {slots: { default: 'quantitySum' }, width: 90,title: item.process} |
| | | gridOptions.columns.push(column) |
| | |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //筛选配置项 |
| | | remote: true |
| | | // remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | |
| | | mode: 'row', |
| | | showStatus: true |
| | | },//表头参数 |
| | | columns:[],//表头按钮 |
| | | columns : [ |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {field: 'order_number', width: 150, title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | //{field: 'shape',width: 130, title: t('order.shape') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'glassNumber', width: 110,title: t('reportingWorks.glassNumber'),showOverflow:"ellipsis",filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged}, |
| | | {field: 'product_name', width: 120,title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'child_width',width: 110, title: t('order.width')}, |
| | | {field: 'child_height', width: 90,title: t('order.height'),showOverflow:"ellipsis"}, |
| | | {field: 'quantity', width: 90,title: t('order.quantity')}, |
| | | {field: 'technology_number',width: 90, title: t('processCard.technologyNumber')}, |
| | | {field: 'glass_child',width: 120, title: t('reportingWorks.glassChild')}, |
| | | {field: 'inventoryNum',width: 120, title: t('report.inventoryNum')}, |
| | | {field: 'inventoryArea',width: 120, title: t('report.inventoryArea')}, |
| | | // {field: 'shippedQuantity',width: 120, title: t('report.shippedQuantity')}, |
| | | // {field: 'area',width: 120, title: t('report.area')}, |
| | | ], |
| | | |
| | | toolbarConfig: { |
| | | // buttons: [{ |
| | | // |
| | | // }], |
| | | // import: false, |
| | | // export: true, |
| | | print: true, |
| | | zoom: true, |
| | | custom: true |
| | |
| | | <template #num1_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/> |
| | | <input v-model="option.data" |
| | | type="text" |
| | | @input="changeFilterEvent($event, option, $panel)"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | |
| | | @TableField(select = false,exist = false) |
| | | private Integer merge; |
| | | |
| | | //补片原因 |
| | | @TableField(select = false,exist = false) |
| | | private String patchReason; |
| | | |
| | | //外键订单表 |
| | | @TableField(select = false,exist= false) |
| | | private Order order; |
| | |
| | | |
| | | List<Map<String, String>> getPrimaryListMergeRefund(String processId, String technologyNumber, Integer orderNumber); |
| | | |
| | | List<Map<String, Object>> getDetailListRefund(String processId, Integer technologyNumber, Integer orderNumber, String reportingWorkId); |
| | | List<Map<String, Object>> getDetailListRefund(String processId, Integer technologyNumber, Integer orderNumber, String reportingWorkId, String patchReason); |
| | | |
| | | List<Map<String, String>> getPrimaryListRefund(String processId, String technologyNumber, Integer orderNumber, String reportingWorkId, String mergeTechnologyNumber); |
| | | List<Map<String, String>> getPrimaryListRefund(String processId, String technologyNumber, Integer orderNumber, String reportingWorkId, String mergeTechnologyNumber, String patchReason); |
| | | |
| | | List<Map<String, Object>> getDetailListLikeRefund(String processId, String technologyNumber, Integer orderNumber, String reportingWorkId); |
| | | |
| | |
| | | //流程卡表头表尾数据 |
| | | //是否传入合并层数 |
| | | if (printMerge.equals("")||printMerge.equals("null") ){ |
| | | itemmap.put("detail", flowCardMapper.getPrimaryListRefund(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()),flowCard.getOrderNumber(),flowCard.getReportingWorkId(),mergeTechnologyNumber)); |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListRefund(flowCard.getProcessId(), flowCard.getTechnologyNumber(),flowCard.getOrderNumber(),flowCard.getReportingWorkId()); |
| | | itemmap.put("detail", flowCardMapper.getPrimaryListRefund(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()),flowCard.getOrderNumber(),flowCard.getReportingWorkId(),mergeTechnologyNumber,flowCard.getPatchReason())); |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListRefund(flowCard.getProcessId(), flowCard.getTechnologyNumber(),flowCard.getOrderNumber(),flowCard.getReportingWorkId(),flowCard.getPatchReason()); |
| | | itemmap.put("detailList", detailList); |
| | | } |
| | | else { |
| | |
| | | if (printLike.equals("")||printLike.equals("null") ){ |
| | | itemmap.put("detail", flowCardMapper.getPrimaryListMergeRefund(flowCard.getProcessId(), printMerge,flowCard.getOrderNumber())); |
| | | |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListRefund(flowCard.getProcessId(), flowCard.getTechnologyNumber(),flowCard.getOrderNumber(), flowCard.getReportingWorkId()); |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListRefund(flowCard.getProcessId(), flowCard.getTechnologyNumber(),flowCard.getOrderNumber(), flowCard.getReportingWorkId(), flowCard.getPatchReason()); |
| | | itemmap.put("detailList", detailList); |
| | | } |
| | | else { |
| | | itemmap.put("detail", flowCardMapper.getPrimaryListRefund(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()),flowCard.getOrderNumber(), flowCard.getReportingWorkId(), mergeTechnologyNumber)); |
| | | itemmap.put("detail", flowCardMapper.getPrimaryListRefund(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()),flowCard.getOrderNumber(), flowCard.getReportingWorkId(), mergeTechnologyNumber, flowCard.getPatchReason())); |
| | | |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListLikeRefund(flowCard.getProcessId(), printMerge,flowCard.getOrderNumber(),flowCard.getReportingWorkId()); |
| | | itemmap.put("detailList", detailList); |
| | |
| | | ROUND(od.quantity-IFNULL(sum(fc.quantity)/count(fc.technology_number),0)) as baiscQuantity, |
| | | od.compute_gross_area as 'computeGrossArea', |
| | | p.total_thickness AS 'totalThickness', |
| | | p.thickness, |
| | | ifnull(p.thickness,'') as thickness, |
| | | od.weight, |
| | | od.remarks, |
| | | od.bend_radius, |
| | | ifnull(od.bend_radius,'') as bend_radius, |
| | | ods.S01, |
| | | ods.S02, |
| | | ods.S03, |
| | |
| | | ifnull(fcs.sort, '') as sort, |
| | | ogd.glass_child, |
| | | #{process} as process, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS glassNumber |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS glassNumber, |
| | | od.bend_radius |
| | | FROM flow_card AS fc |
| | | LEFT JOIN sd.order_glass_detail AS ogd ON fc.order_id = ogd.order_id |
| | | AND fc.order_number = ogd.order_number |
| | |
| | | and fc.order_number = #{orderNumber} |
| | | and position(fc.technology_number in #{technologyNumber}) |
| | | and pl.reporting_work_id = #{reportingWorkId} |
| | | group by fc.process_id, fc.order_number, fc.technology_number |
| | | and pl.patch_reason = #{patchReason} |
| | | group by fc.process_id, fc.order_number, fc.technology_number,pl.id |
| | | order by IF(sort != NULL and sort != '', sort, fc.order_number) |
| | | </select> |
| | | |
| | |
| | | and fc.order_number = #{orderNumber} |
| | | and fc.technology_number = #{technologyNumber} |
| | | and rw.reporting_work_id = #{reportingWorkId} |
| | | and dd.breakage_reason = #{patchReason} |
| | | group by fc.process_id, fc.technology_number |
| | | </select> |
| | | |
| | |
| | | left join mm.finished_goods_inventory as f |
| | | on c.order_id = f.order_id and f.order_number = c.order_number |
| | | left join (SELECT process_id, |
| | | order_number, |
| | | technology_number, |
| | | sum(a.broken_num) as broken_num, |
| | | concat('{', |
| | |
| | | '}' |
| | | ) as reportWorkQuantity, |
| | | concat('{', |
| | | GROUP_CONCAT(concat("\"", process, "\":\"", reporting_work_num, "\"")), |
| | | GROUP_CONCAT(concat("\"", process, "\":\"", reporting_work_num_count, "\"")), |
| | | '}' |
| | | ) as reportWorkQuantityCount |
| | | FROM sd.order_process_detail as a |
| | | where a.order_id = #{orderId} |
| | | GROUP BY process_id, a.technology_number) as e |
| | | GROUP BY process_id, a.order_number,a.technology_number) as e |
| | | on e.process_id = c.process_id |
| | | and e.order_number=c.order_number |
| | | and e.technology_number = c.technology_number |
| | | left join sd.delivery_detail as dd on dd.order_id = a.order_id and dd.order_number = a.order_number |
| | | where a.order_id = #{orderId} |
| | | group by c.order_number,c.technology_number |
| | | ORDER BY a.order_number |
| | | </select> |
| | | |
| | |
| | | MAX( ogd.child_width ) as width, |
| | | MAX( ogd.child_height ) as height, |
| | | od.edging_type, |
| | | opd.reporting_work_num as completed_quantity, |
| | | ROUND(MAX( ogd.child_width )*MAX( ogd.child_height )*opd.reporting_work_num/1000000,2) as area, |
| | | rwd.completed_quantity as completed_quantity, |
| | | ROUND(MAX( ogd.child_width )*MAX( ogd.child_height )*rwd.completed_quantity/1000000,2) as area, |
| | | od.product_name, |
| | | JSON_UNQUOTE( JSON_EXTRACT( od.other_columns, '$.S01' )) AS code |
| | | FROM |
| | | sd.`order` as o left join sd.order_detail as od on od.order_id=o.order_id |
| | | left join sd.order_glass_detail as ogd on ogd.order_id=od.order_id and ogd.order_number=od.order_number |
| | | left join flow_card as fc on fc.order_id=ogd.order_id and fc.order_number=ogd.order_number and fc.technology_number=ogd.technology_number |
| | | left join reporting_work as rw on rw.order_id=od.order_id and rw.process_id=fc.process_id |
| | | left join sd.order_process_detail as opd on opd.order_id = o.order_id AND opd.process_id = rw.process_id |
| | | AND opd.order_number = fc.order_number AND opd.technology_number = fc.technology_number and opd.process=rw.this_process |
| | | reporting_work as rw left join reporting_work_detail as rwd on rwd.reporting_work_id=rw.reporting_work_id |
| | | left join flow_card as fc on fc.order_id=rw.order_id and fc.process_id=rw.process_id and fc.order_number=rwd.order_number and fc.technology_number=rwd.technology_number |
| | | 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=ogd.order_id and od.order_number=ogd.order_number |
| | | left join sd.`order` as o on o.order_id=od.order_id |
| | | left join sd.product_detail as pd on pd.prod_id = od.product_id and pd.glass_sort = fc.technology_number and detail_type = "glass" |
| | | where opd.reporting_work_num > 0 and rw.reviewed_state=1 and rw.reporting_work_time between #{selectTime1} and #{selectTime2} |
| | | where o.create_order>0 and rw.reviewed_state>=0 and rw.reporting_work_time between #{selectTime1} and #{selectTime2} |
| | | and position(#{selectProcesses} in rw.this_process) |
| | | <if test="teamOutputDTO.thisProcess != null and teamOutputDTO.thisProcess != ''"> |
| | | and rw.this_process regexp #{teamOutputDTO.thisProcess} |
| | |
| | | </if> |
| | | |
| | | GROUP BY |
| | | rw.order_id, |
| | | rw.reporting_work_id, |
| | | rw.this_process, |
| | | rw.teams_groups_name, |
| | | rw.process_id, |
| | | fc.order_number |
| | | rwd.order_number |
| | | ORDER BY |
| | | rw.this_process, |
| | | rw.process_id, |