north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue
@@ -494,7 +494,7 @@ :key="index" :src="img.imageBase64" fit="contain" style="max-width: 400px;max-lines: 600px" style="max-width: 100%;" /> </div> </div> north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet1.vue
@@ -177,7 +177,7 @@ <th style="text-align: left;border:none;" colspan="4">客æ·åç§°ï¼<span>{{itme1.delivery.customerName}}</span></th> <th style="text-align: left;border:none;" v-if="itme1.data[0].DeliveryDetail.order.batch!==''" colspan="3"> 项ç®åç§°ï¼<span>{{itme1.delivery.project}}({{itme1.data[0].DeliveryDetail.order.batch}})</span></th> <th style="text-align: left;border:none;" colspan="3">项ç®åç§°ï¼<span>{{itme1.delivery.project}}</span></th> <th style="text-align: left;border:none;" v-else colspan="3">项ç®åç§°ï¼<span>{{itme1.delivery.project}}</span></th> <th style="text-align: left;border:none;" colspan="2">è系人ï¼<span>{{itme1.delivery.contacts}}</span></th> </tr> <tr> north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet2.vue
@@ -123,7 +123,7 @@ <th style="text-align: left;border:none;" colspan="4">客æ·åç§°ï¼<span>{{itme1.delivery.customerName}}</span></th> <th style="text-align: left;border:none;" v-if="itme1.data[0].DeliveryDetail.order.batch!==''" colspan="3"> 项ç®åç§°ï¼<span>{{itme1.delivery.project}}({{itme1.data[0].DeliveryDetail.order.batch}})</span></th> <th style="text-align: left;border:none;" colspan="3">项ç®åç§°ï¼<span>{{itme1.delivery.project}}</span></th> <th style="text-align: left;border:none;" v-else colspan="3">项ç®åç§°ï¼<span>{{itme1.delivery.project}}</span></th> <th style="text-align: left;border:none;" colspan="2">è系人ï¼<span>{{itme1.delivery.contacts}}</span></th> </tr> <tr> north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet4.vue
New file @@ -0,0 +1,413 @@ <script setup> import request from "@/utils/request" import {computed, onMounted, ref} from "vue" import PrintFoot from "@/components/sd/order/PrintFoot.vue" import companyInfo from "@/stores/sd/companyInfo" import deepClone from "@/utils/deepClone"; import {ElMessage} from "element-plus"; import {add,multiply,multiplyAuto,divideAuto} from '@/utils/decimal'; /*ä¸è¡ä¸¤ååè´§åæå°*/ const company = companyInfo() let produceList = ref([]) let otherMoney = [] let otherMoney1 = [] let delivery = ref([]) let money = ref("") let otherMoneys = 0 let sumMoney = 0 let takeCare =ref("注æ:请妥åä¿ç®¡å¥½æå¸çç»çæ¶ï¼å¦æä¸¢å¤±ææåï¼æ1500å åªèµå¿ã谢谢é å!") let remark =ref(company.deliveryRemark) let props = defineProps({ deliveryId:null }) const form = ref({ }) let produceList2 = ref([]) const getData = () => { if(props.deliveryId===null || props.deliveryId===undefined || props.deliveryId===''){ return } form.value.deliveryId=props.deliveryId form.value.type=company.productName request.post(`/delivery/getSelectDeliveryPrinting`,form.value).then((res) => { if(res.code==200){ produceList.value = deepClone(res.data) for(let i=0;i<produceList.value.length;i++){ let produceList1= ({ data:null, otherMoney:null, otherMoney1:null, delivery:null, money:null, otherMoneys:0, sumMoney:0 }) produceList1.data=produceList.value[i].data produceList1.delivery=produceList.value[i].delivery produceList1.money=produceList.value[i].money produceList1.otherMoney=produceList.value[i].otherMoney for(let j=0;j<produceList1.data.length;j++){ produceList1.sumMoney+=produceList1.data[j].DeliveryDetail.money } otherMoney1=[] for(let i=0;i<produceList1.otherMoney.length;i++){ if(produceList1.otherMoney[i].DeliveryDetailOtherMoney.monery!=null){ produceList1.otherMoneys+=produceList1.otherMoney[i].DeliveryDetailOtherMoney.monery if(otherMoney1.length===0){ otherMoney1.push(produceList1.otherMoney[i]) } else{ for(let s=0;s<otherMoney1.length;s++){ if(produceList1.otherMoney[i].DeliveryDetailOtherMoney.alias===otherMoney1[s].DeliveryDetailOtherMoney.alias){ otherMoney1[s].DeliveryDetailOtherMoney.count=add(produceList1.otherMoney[i].DeliveryDetailOtherMoney.count,otherMoney1[s].DeliveryDetailOtherMoney.count) otherMoney1[s].DeliveryDetailOtherMoney.monery =add(produceList1.otherMoney[i].DeliveryDetailOtherMoney.monery,otherMoney1[s].DeliveryDetailOtherMoney.monery) break } if(s+1===otherMoney1.length){ otherMoney1.push(produceList1.otherMoney[i]) break } } } } } produceList1.otherMoney1=otherMoney1 produceList2.value.push(produceList1) } for(let j=0;j<produceList2.value.length;j++){ if(produceList2.value[j].delivery.money.toFixed(0)!==(produceList2.value[j].otherMoneys +produceList2.value[j].sumMoney+produceList2.value[j].delivery.freight).toFixed(0)){ console.log(produceList2.value[j]) console.log(produceList2.value[j].delivery.money) console.log((produceList2.value[j].otherMoneys +produceList2.value[j].sumMoney).toFixed(0)) console.log(produceList2.value[j].delivery.deliveryId) } } }else{ ElMessage.warning(res.msg) router.push("/login") } }) } onMounted(() => { getData() }) const stringToJson = (productList) => { productList.forEach(item => { item.otherColumns = JSON.parse(item.otherColumns) }) } const getQuantity = (productList) => { let quantity = 0 productList.forEach(item => { quantity += item.quantity }) return parseFloat(quantity.toFixed(3)) } const getArea = (productList) => { let area = 0 productList.forEach(item => { area += item.grossArea }) return parseFloat(area.toFixed(3)) } const getPerimeter = (productList) => { let perimeter = 0 productList.forEach(item => { perimeter += item.perimeter }) return parseFloat(perimeter.toFixed(3)) } const printSheet = () => { } const groupedData = computed(() => { // åç»å½æ°ï¼å°æ°ç»ææ¯2æ¡æå const groupArray = (arr, size) => { const result = []; for (let i = 0; i < arr.length; i += size) { result.push(arr.slice(i, i + size)); } return result; }; // 对æ¯ä¸ªitemçDeliveryDetailListè¿è¡åç» return produceList2.value.map(produce => { const groupedDetails = produce.data.map(item => ({ ...item, // 对å½åitemçæç»è¿è¡åç»ï¼æ¯2æ¡ä¸ç»ï¼ groupedDeliveryDetails: groupArray(item.DeliveryDetailList, 2) })); return { ...produce, data: groupedDetails }; }); }); defineExpose({ printSheet }); </script> <template> <div id="sheet"> <table class="pages" v-for="(itme1, index) in groupedData" :key="index" > <thead> <tr class="title-s"> <th colspan="11"> <h1> {{company.companyName}} </h1> </th> </tr> <tr class="title-s"> <th colspan="2" style="width: 20%"></th> <th colspan="7" style="width: 60%;"> <h4 v-if="!company.showDeliveryCreator" >éåå¸ä¹å¨æºè½ç§ææéå ¬å¸</h4> <h3>éå®åè´§å</h3> </th> <th colspan="2" style="width: 20%;text-align: left;">åè´§åå·ï¼<span>{{itme1.delivery.deliveryId}}</span></th> </tr> <tr> <th style="text-align: left;border:none;" colspan="3">客æ·åç§°ï¼<span>{{itme1.delivery.customerName}}</span></th> <th style="text-align: left;border:none;" colspan="6">项ç®åç§°ï¼<span>{{itme1.delivery.project}}</span></th> <th style="text-align: left;border:none;" colspan="2">è系人ï¼<span>{{itme1.delivery.contacts}}</span></th> </tr> <tr> <th style="text-align: left;border:none;" colspan="9">éè´§å°åï¼<span>{{itme1.delivery.deliveryAddress}}</span></th> <th style="text-align: left;border:none;" colspan="2">èç³»çµè¯ï¼<span>{{itme1.delivery.contactNumber}}</span></th> </tr> </thead> <tr style="border-style: none"> <td colspan="11" style="border-style: none"> <table style="border-style: none;width: 100%;height: 100%;"> <template v-for="(item, index) in itme1.data" :key="index" > <thead> <tr v-if="index===0"> <th style="width: 14%;" colspan="3">宽Xé«</th> <th style="width: 8%;">æ°é</th> <th style="width: 9%;">é¢ç§¯</th> <th style="width: 1%;"></th> <th style="width: 14%;" colspan="3">宽Xé«</th> <th style="width: 8%;">æ°é</th> <th style="width: 9%;">é¢ç§¯</th> </tr> </thead> <tr> <td style="font-size: 15px;text-align: left" colspan="5">产ååç§°:<span>{{item.DeliveryDetail.orderDetail.productName}}</span></td> <td style="font-size: 15px;text-align: left" colspan="3">æ¹æ¬¡:<span>{{item.DeliveryDetail.order.batch}}</span></td> <td style="font-size: 15px;text-align: left" colspan="3">订åç¼å·:<span>{{item.DeliveryDetail.orderDetail.orderId}}</span></td> </tr> <tr class="day-in" v-for="(group, groupIndex) in item.groupedDeliveryDetails" :key="groupIndex"> <!-- 第ä¸åæ°æ®ï¼ç»å ç¬¬ä¸æ¡ï¼ --> <td style="font-size: 15px;font-weight: bold;" colspan="3"> {{ group[0].parsedOtherColumns?.S02 ? `(${group[0].parsedOtherColumns.S02})` : '' }} {{ group[0].width }}x{{ group[0].height }} </td> <td>{{ group[0].quantity }}</td> <td>{{ group[0].area }}</td> <td></td> <!-- åéå --> <!-- 第äºåæ°æ®ï¼ç»å ç¬¬äºæ¡ï¼è¥åå¨ï¼ --> <td style="font-size: 15px;font-weight: bold;" colspan="3" v-if="group[1]"> {{ group[1].parsedOtherColumns?.S02 ? `(${group[1].parsedOtherColumns.S02})` : '' }} {{ group[1].width }}x{{ group[1].height }} </td> <td v-if="group[1]">{{ group[1].quantity }}</td> <td v-if="group[1]">{{ group[1].area }}</td> <!-- è¥ç»å åªæä¸æ¡æ°æ®ï¼ç¬¬äºåç空 --> <td v-else colspan="5"></td> </tr> <tr class="day-in" > <td style="font-size: 15px;" colspan="9">å°è®¡:</td> <td>{{item.DeliveryDetail.quantity}}</td> <td>{{item.DeliveryDetail.area}}</td> </tr> </template> <tr class="day-in"> <td style="font-size: 15px;" colspan="9">å计:</td> <td>{{itme1.delivery.quantity}}</td> <td>{{itme1.delivery.area}}</td> </tr> <!-- <el-row :gutter="24"> <el-col :span="4"><div style="font-size: 12px" class="bottom">å¶ååï¼{{data.order.creator}}<span style="font-size: 10px"></span></div></el-col> <el-col :span="6"><div style="font-size: 12px" class="bottom">å¶åæ¥æï¼{{data.order.createTime}}<span style="font-size: 10px"></span></div></el-col> <el-col :span="4"><div style="font-size: 12px" class="bottom">å®¡æ ¸åï¼{{data.order.verifier}}</div></el-col> <el-col :span="6"><div style="font-size: 12px" class="bottom">å®¡æ ¸æ¥æï¼{{data.order.updateTime}}</div></el-col> <el-col :span="4"><div style="font-size: 12px" class="bottom">æå°äººï¼{{username}}</div></el-col> </el-row>--> <tr class="day-in" style="border: 0;" v-if="company.showDeliveryCreator"> <td colspan="11" style="border: 0"> <div style="display:flex;text-align: left" class="bottom"> <div style="width: 15%">å¶ååï¼{{ itme1.delivery.creator }}</div> <div style="width: 25%">å¶åæ¥æï¼{{ itme1.delivery.createTime }}</div> <div style="width: 10%">åè´§åï¼</div> <div style="width: 10%">叿ºï¼</div> <div style="width: 15%">客æ·ç¾åï¼</div> <div style="width: 15%">ç¾æ¶æ¥æï¼</div> </div> </td> </tr> <tr class="day-in" style="border: 0;" v-if="company.showDeliveryCreator"> <td colspan="11" style="border: 0;"> <div style="display:flex;" class="bottom"> æ¶å åª {{takeCare}} </div> </td> </tr> <tr class="day-in" style="border: 0;"> <td colspan="11" style="border: 0;"> <div style="display:flex;text-align: left;border: 0;margin-top: 10px " class="bottom" > <el-input type="textarea" :autosize="{ minRows: 7, maxRows: 20 }" v-model="remark"/> </div> </td> </tr> <tr class="day-in" style="border: 0" v-if="!company.showDeliveryCreator"> <td colspan="11" style="border: 0"> <div style="width: 100%;height: 50px"></div> </td> </tr> <tr class="day-in" style="border: 0" v-if="!company.showDeliveryCreator"> <td colspan="11" style="border: 0"> <div style="display:flex;text-align: left" class="bottom"> <div style="width: 15%">å¶ååï¼{{ itme1.delivery.creator }}</div> <div style="width: 15%">å¶åæ¥æï¼{{ itme1.delivery.createTime1 }}</div> <div style="width: 15%">åè´§åï¼</div> <div style="width: 15%">叿ºï¼</div> <div style="width: 15%">客æ·ç¾åï¼</div> <div style="width: 15%">ç¾æ¶æ¥æï¼</div> </div> </td> </tr> </table> </td> </tr> </table> </div> </template> <style scoped> @media print { @page { margin: 12mm 10mm 20mm 10mm !important; } .pages { page-break-after: always; } @page { @top-right { margin-top: 50px; content: "第 " counter(page) " 页"; /* 使ç¨counteræ·»å 页ç */ } } } h1,h3{ left:0; right:0; top:0; bottom:0; margin:auto; } h1{ font-size: 1.5rem; } h3{ font-size: 1.2rem; font-weight: bolder; } table{ border-collapse: collapse; width: 100%; text-align: center; } tr,td,th{ border: 1px solid black; } th,.no-change-row { white-space: nowrap; } .title-1{ width: 76px; } .title-s,.title-s th{ border:0 } .hr-border{ height: 2px; width: 100%; background-color: black; color: black; } table { border-collapse: collapse; width: 100%; } td > table { margin: 0; padding: 0; } </style> north-glass-erp/northglass-erp/src/stores/sd/companySet/ÎÂÖݾÞÐÇ.js
@@ -37,7 +37,7 @@ icon:"",//åæ åæ°ï¼æ²¡æä¸ºç©º printShowTitle:false,//æµç¨å¡èªå®ä¹æå°æ¯å¦æ¾ç¤ºæ ç¾ longSide:null,//订åå建æé¿è¾¹æç¤ºé¢è² nullä¸æç¤ºé¢è² showDeliveryCreator:false,//åè´§ååå»ºäººå æ¾ç¤ºæè åæ¾ç¤º falseåæ¾ç¤º showDeliveryCreator:true,//åè´§ååå»ºäººå æ¾ç¤ºæè åæ¾ç¤º falseåæ¾ç¤º deliveryRemark: ['温馨æç¤ºï¼æå¸è´è´£åªéä¸å¸ãè´§å°å·¥å°æå·¥ååï¼è¯·äºäºå¤©å å®è£ 宿¯ï¼å¦æªè½åæ¶å®è£ 宿¯ï¼è¯·æ¾ç½®äºé´åå¹²ç¥å¤ï¼å¹¶å好鲿鲿·çæªæ½ï¼é²æ¢ç»çåéï¼ææåçéèç»ç请å¿ç¨å¸¦é ¸æ§æç¢±æ§çæ¶²ä½æ¸ æ´èé¢ã', '声æï¼è´§å°å·¥å°æå·¥ååï¼å¦è¥è´µå¸ä¸åæ¶çå®è£ ææªå鲿鲿·æªæ½å¯¼è´çç»çåéï¼æå¸æ¦ä¸è´è´£ã', 'æ¶è´§æ¶ééªæ¶äº§åæ°éãè§æ ¼åææ ç ´æï¼å¦åç°é®é¢éäºæ¶è´§ä¸æ¥å ï¼ä»¥ä¹¦é¢éç¥å¹¶éä¸ç°åºè¯æææï¼å¦ç ´æç §ççï¼ï¼ç¸å ³è¯æèµæä¸è¶³ï¼æå¨ä¸è¿°æ¥æå æªæåºè´¨éå¼è®®çï¼é¾æè§ä¸ºäº§ååæ ¼ï¼æå¸å°ä¸äºæ¿æ ä»»ä½è´£ä»»ãæ¬è¯·çæï¼'],//æå°åè´§åç夿³¨ north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
@@ -1324,7 +1324,7 @@ //å¤ææ©æç titleUploadData.value.classes=t('reportingWorks.early') titleUploadData.value.reportingWorkTime = formatCurrentTime() titleUploadData.value.reportingWorkTime = res.data.reportingWorkTiem //ç»å®ä¸æ¹è¡¨æ ¼ north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
@@ -19,6 +19,7 @@ import { saveAs } from "file-saver" import companyInfo from "@/stores/sd/companyInfo"; import PrintSheet3 from "@/components/sd/delivery/PrintSheet3.vue"; import PrintSheet4 from "@/components/sd/delivery/PrintSheet4.vue"; //è¯è¨è·å const { t } = useI18n() @@ -455,6 +456,39 @@ break } case 'sheet8': { const selectRecords = $grid.getCheckboxRecords() if (selectRecords.length === 0) { if(rowClickIndex.value.deliveryState>0){ ElMessage.warning(t('order.printingNumber')+rowClickIndex.value.printingNumber) let delivery=([]) delivery.push(rowClickIndex.value) flowData.value.delivery=delivery dialogTableVisible.value = true sheetIndex.value=8 }else{ ElMessage.warning(t('order.orderNotApproved')) } }else{ let a=0 selectRecords.forEach((item) => { if(item.deliveryState==0){ ElMessage.warning(t('order.orderNotApproved')) a=1 } }) if(a==0){ flowData.value.delivery=selectRecords dialogTableVisible.value = true sheetIndex.value=8 } } break } } } }, @@ -502,6 +536,7 @@ { code: 'sheet5', name: t('delivery.print2'), prefixIcon: 'vxe-icon-file-txt', visible: false}, { code: 'sheet6', name: t('delivery.print2')+ t('delivery.noMoney'), prefixIcon: 'vxe-icon-file-txt', visible: false}, { code: 'sheet7', name: t('æå°ä¸è¡ä¿©å'), prefixIcon: 'vxe-icon-file-txt', visible: true}, { code: 'sheet8', name: t('æå°ä¸è¡ä¿©å')+ t('delivery.noMoney'), prefixIcon: 'vxe-icon-file-txt', visible: true}, ] ] } @@ -715,6 +750,7 @@ <print-sheet-luoyang-details id="child" v-if="sheetIndex===5" :deliveryId="flowData.delivery" :type="3" :optionVal='optionVal'/> <print-sheet-luoyang-details id="child" v-if="sheetIndex===6" :deliveryId="flowData.delivery" :type="4" :optionVal='optionVal'/> <print-sheet3 id="child" v-if="sheetIndex===7" :deliveryId="flowData.delivery" /> <print-sheet4 id="child" v-if="sheetIndex===8" :deliveryId="flowData.delivery" /> </el-dialog> </div> north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue
@@ -107,7 +107,12 @@ item.separation = JSON.parse(item.separation) }) productTotal.value = res.data.title productGlassTypeStore.GlassType =[res.data.title.typeId.substring(0,2),res.data.title.typeId] if(res.data.title.typeId.length===2){ productGlassTypeStore.GlassType =[res.data.title.typeId.substring(0,2)] }else{ productGlassTypeStore.GlassType =[res.data.title.typeId.substring(0,2),res.data.title.typeId] } //BasicData.value = res.data }else{ ElMessage.warning(res.msg) @@ -127,7 +132,12 @@ ElMessage.warning(t('product.msg.glassType')) return } productTotal.value.typeId = productGlassTypeStore.GlassType[1] if(productGlassTypeStore.GlassType[1]!==undefined){ productTotal.value.typeId = productGlassTypeStore.GlassType[1] }else{ productTotal.value.typeId = productGlassTypeStore.GlassType[0] } let productName = "" productDetailList.value.forEach(item =>{ north-glass-erp/pom.xml
@@ -206,6 +206,7 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <includeSystemScope>true</includeSystemScope> <excludes> <exclude> <groupId>org.projectlombok</groupId> north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportMapper.java
@@ -134,7 +134,6 @@ List<Map<String, String>> selectProcessCompletedMp(Date selectTime1, Date selectTime2, String orderId, String inputProject, String selectProcesses, String laminating, Report report); Map<String,Float> ProcessCompletedFootSum(Date selectTime1, Date selectTime2, String orderId, String inputProject, String selectProcesses, Report report); // Map<String, Integer> getWorkInProgressTotal( north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
@@ -161,6 +161,8 @@ //å·¥èºæµç¨ map.put("technologicalProcess", technologicalProcess); //è·åæå¡å¨æ¶é´ map.put("reportingWorkTiem", LocalDateTime.now()); //设å¤ä¸ææ¡ map.put("device", reportingWorkMapper.SelectWorkBasicDeviceMp(process)); //çç»ä¸ææ¡ north-glass-erp/src/main/java/com/example/erp/service/sd/ProductService.java
@@ -41,8 +41,15 @@ public Map<String,Object> defaultDateProduct(Integer pageNum, Integer pageSize, List<String> glassType,Map<String,Object> config) { Integer offset = (pageNum-1)*pageSize; String glassTypeId = null; if(glassType.size()>1){ glassTypeId = glassType.get(1); if(glassType.size()==2){ if(!Objects.equals(glassType.get(0), "")&&!Objects.equals(glassType.get(1), "")){ glassTypeId = glassType.get(1); } }else if(glassType.size()==1){ if(!Objects.equals(glassType.get(0), "")&& !Objects.equals(glassType.get(0), "undefined")){ glassTypeId = glassType.get(0); } } JSONObject orderJson = new JSONObject(config); Product product = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("filter")), Product.class); north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -970,7 +970,7 @@ SUM(t.breakageQuantity) as breakageQuantity, SUM(t.breakageArea) as breakageArea, t.responsibleTeam, CONCAT(ROUND(ROUND(SUM(t.area)/(SUM(t.area) + SUM(t.breakageArea)),2)*100), '%') as finished, CONCAT(ROUND(TRUNCATE(SUM(t.area)/(SUM(t.area) + SUM(t.breakageArea)),2)*100), '%') as finished, t.product_name FROM ( @@ -3607,5 +3607,63 @@ GROUP BY hz.project,hz.batch,glass_child </select> <select id="yieldProcessMp"> SELECT t.this_process as process, SUM(t.completed_quantity) as completedQuantity, SUM(t.area) as completedArea, SUM(t.breakageQuantity) as breakageQuantity, SUM(t.breakageArea) as breakageArea, CONCAT(ROUND(TRUNCATE(SUM(t.area)/(SUM(t.area) + SUM(t.breakageArea)),2)*100), '%') as finished FROM ( SELECT rw.reporting_work_time, rw.this_process, o.project, o.batch, rw.process_id, rwd.completed_quantity AS completed_quantity, ROUND(MAX(ogd.child_width) * MAX(ogd.child_height) * rwd.completed_quantity / 1000000, 2) AS area, IFNULL(dd.breakage_quantity,0) as breakageQuantity, IFNULL(ROUND(MAX(ogd.child_width) * MAX(ogd.child_height) * dd.breakage_quantity / 1000000, 2),0) AS breakageArea, IFNULL(dd.responsible_team,'') as responsibleTeam, od.product_name FROM reporting_work AS rw LEFT JOIN reporting_work_detail AS rwd ON rwd.reporting_work_id = rw.reporting_work_id LEFT JOIN damage_details as dd on dd.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 WHERE o.create_order > 0 AND rw.reviewed_state >= 0 AND rwd.completed_quantity + IFNULL(dd.breakage_quantity,0)> 0 AND rw.reporting_work_time >= #{selectTime1} AND rw.reporting_work_time <= #{selectTime2} GROUP BY rw.reporting_work_id, rw.process_id, rw.this_process, rw.teams_groups_name, rwd.order_number, rwd.technology_number ) t GROUP BY t.this_process </select> </mapper> north-glass-erp/src/main/resources/mapper/sd/ProductMapper.xml
@@ -44,7 +44,7 @@ left join basic_glass_type bgt on bgt.type_id = a.type_id <where> <if test="glassTypeId != null and glassTypeId != ''"> and a.type_id like concat('%',#{glassTypeId},'%') and a.type_id = #{glassTypeId} </if> <if test="product.id != null and product.id != ''"> and a.id like concat('%',#{product.id},'%')