From a85adf40d5e30d3b9e2a848cf8fd073998ff5c8b Mon Sep 17 00:00:00 2001
From: guoyuji <guoyujie@ng.com>
Date: 星期三, 29 五月 2024 15:26:07 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override

---
 north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml                      |    6 
 north-glass-erp/northglass-erp/src/views/pp/report/ProcessCardProgress.vue                 |    7 
 north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue                    |   77 --
 north-glass-erp/northglass-erp/src/views/pp/report/ProcessToBeCompleted.vue                |   67 ++
 north-glass-erp/northglass-erp/src/views/pp/report/CrossProcessBreaking.vue                |    2 
 north-glass-erp/src/main/java/com/example/erp/dto/pp/SplittingDetailsOutsideDTO.java       |   30 +
 north-glass-erp/northglass-erp/src/hook/footSum.js                                         |    7 
 north-glass-erp/src/main/java/com/example/erp/dto/pp/DamageReportDTO.java                  |   44 +
 north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportMapper.java                  |   17 
 north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue |    5 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TakeOutRecord.vue             |    8 
 north-glass-erp/northglass-erp/src/views/pp/report/OrderPlanDecomposition.vue              |   20 
 north-glass-erp/src/main/java/com/example/erp/dto/pp/ProcessToBeCompletedDTO.java          |   50 +
 north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java          |    3 
 north-glass-erp/src/main/resources/mapper/pp/Report.xml                                    |  308 ++++++++++
 north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue                      |   69 ++
 north-glass-erp/src/main/java/com/example/erp/dto/pp/WorkInProgressDTO.java                |   40 +
 north-glass-erp/northglass-erp/src/views/pp/report/DamageReport.vue                        |  159 +++--
 north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue            |   11 
 north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportController.java          |  114 ++-
 north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue                 |   94 ++-
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue        |    8 
 north-glass-erp/src/main/java/com/example/erp/dto/pp/OrderPlanDecompositionDTO.java        |   38 +
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue        |    6 
 north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java                |  214 ++++---
 north-glass-erp/northglass-erp/src/hook/index.js                                           |   19 
 north-glass-erp/src/main/java/com/example/erp/dto/pp/TaskCompletionStatusDTO.java          |   24 
 north-glass-erp/src/main/java/com/example/erp/dto/pp/CrossProcessBreakingDTO.java          |   32 +
 north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java         |    4 
 north-glass-erp/src/main/java/com/example/erp/dto/pp/ProductionScheduleDTO.java            |   32 +
 north-glass-erp/src/main/java/com/example/erp/dto/pp/RawMaterialRequisitionDTO.java        |   28 +
 north-glass-erp/src/main/java/com/example/erp/dto/pp/YieldDTO.java                         |   26 
 north-glass-erp/src/main/java/com/example/erp/dto/pp/QualityReportDTO.java                 |   32 +
 north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java              |   17 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/StorageRecord.vue             |    8 
 north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomerOrder.vue               |    2 
 north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkMapper.java           |    2 
 north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml                             |    7 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue        |    7 
 north-glass-erp/src/main/java/com/example/erp/dto/pp/ProcessCardProgressDTO.java           |   24 
 40 files changed, 1,317 insertions(+), 351 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/hook/footSum.js b/north-glass-erp/northglass-erp/src/hook/footSum.js
index 7738bbc..e4b64f0 100644
--- a/north-glass-erp/northglass-erp/src/hook/footSum.js
+++ b/north-glass-erp/northglass-erp/src/hook/footSum.js
@@ -1,7 +1,12 @@
 export default function footSum(list, field) {
     let count = 0
     list.forEach(item => {
-        count += Number(item[field])
+        if(field.indexOf('.')>-1){
+            let  array = field.split('.')
+            count += Number(item[array[0]][array[1]])
+        }else {
+            count += Number(item[field])
+        }
     })
     return count.toFixed(2)
 }
diff --git a/north-glass-erp/northglass-erp/src/hook/index.js b/north-glass-erp/northglass-erp/src/hook/index.js
index 54f51ce..2b21b47 100644
--- a/north-glass-erp/northglass-erp/src/hook/index.js
+++ b/north-glass-erp/northglass-erp/src/hook/index.js
@@ -9,7 +9,24 @@
 // 绛涢�夊嚱鏁�
 const filterChanged = ({ option, row, column }) => {
     if (option.data) {
-        return row[column.field].toString().indexOf(option.data) > -1
+
+        if(column.field.indexOf('.')>-1){
+            let  array = column.field.split('.')
+            console.log(row[array[0]][array[1]])
+            if (row[array[0]][array[1]]==null){
+                return ''.indexOf(option.data) > -1
+            }else {
+                return row[array[0]][array[1]].toString().indexOf(option.data) > -1
+            }
+
+        }else {
+            if (row[column.field]==null){
+                return ''.indexOf(option.data) > -1
+            }else {
+                return row[column.field].toString().indexOf(option.data) > -1
+            }
+
+        }
     }
     return true
 }
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue
index 435c473..5ec9374 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue
@@ -77,7 +77,7 @@
 
 
 let arr = [
-  {type:'expand',fixed:"left",width: '60'},
+
   { type: 'checkbox',fixed:"left", title: '閫夋嫨', width: '80' },
   { type: 'seq',fixed:"left", title: '鑷簭', width: '80' },
   {field: 'inventoryOrganization', width:'150', title: '搴撳瓨缁勭粐', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged },
@@ -222,6 +222,7 @@
 
       for (let i=0;i<BasicData.value.length;i++){
         let aa={field: "json."+BasicData.value[i].OperateType, width: '150',title: BasicData.value[i].OperateTypeName, sortable: true,showOverflow:'ellipsis' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}
+        console.log(aa)
         gridOptions.columns.push(aa)
 
       }
@@ -503,7 +504,7 @@
           filters:[{ data: '' }],
           slots: { filter: 'num1_filter' },
           filterMethod:filterChanged}
-
+        console.log(column)
         gridOption.columns.push(column)
 
       }
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue
index e650613..d7a166c 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue
@@ -8,6 +8,7 @@
 import useUserInfoStore from "@/stores/userInfo";
 import {ElMessage} from "element-plus";
 import { useI18n } from 'vue-i18n'
+import footSum from "@/hook/footSum";
 
 //璇█鑾峰彇
 const { t } = useI18n()
@@ -236,12 +237,15 @@
   }
   ,//table body瀹為檯鏁版嵁
   footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
+    let footList = ['orderDetail.quantity','inventoryQuantity','order.area','receivedQuantity']
     return[
       columns.map((column, columnIndex) => {
         if (columnIndex === 0) {
           return t('basicData.total')
         }
-
+        if (footList.includes(column.field)) {
+          return footSum(data, column.field)
+        }
         return ''
       })
     ]
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue
index 9c53249..59a0e11 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue
@@ -11,6 +11,7 @@
 import {ElMessage} from "element-plus";
 import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove";
 import { useI18n } from 'vue-i18n'
+import footSum from "@/hook/footSum";
 
 //璇█鑾峰彇
 const { t } = useI18n()
@@ -325,14 +326,15 @@
   },
 
   footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
+    let footList = ['finishedGoodsInventory.quantityAvailable','finishedGoodsInventory.area']
     return[
       columns.map((column, columnIndex) => {
         if (columnIndex === 0) {
           return t('basicData.total')
         }
-        // if (props.tableProp.footList.includes(column.field)) {
-        //   return sumNum(data, column.field)
-        // }
+        if (footList.includes(column.field)) {
+          return footSum(data, column.field)
+        }
         return ''
       })
     ]
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue
index 5273138..0c0f25f 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue
@@ -7,6 +7,7 @@
 import useUserInfoStore from "@/stores/userInfo";
 import {ElMessage} from "element-plus";
 import { useI18n } from 'vue-i18n'
+import footSum from "@/hook/footSum";
 
 //璇█鑾峰彇
 const { t } = useI18n()
@@ -240,14 +241,16 @@
   },
 
 
-  //table body瀹為檯鏁版嵁
   footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
+    let footList = ['orderDetail.quantity','deliveryDetail.quantity','warehouseNum','delivery.area']
     return[
       columns.map((column, columnIndex) => {
         if (columnIndex === 0) {
           return t('basicData.total')
         }
-
+        if (footList.includes(column.field)) {
+          return footSum(data, column.field)
+        }
         return ''
       })
     ]
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/StorageRecord.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/StorageRecord.vue
index d0c7a7b..759b5ad 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/StorageRecord.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/StorageRecord.vue
@@ -9,6 +9,7 @@
 import {ElMessage} from "element-plus";
 import {Search} from "@element-plus/icons-vue";
 import { useI18n } from 'vue-i18n'
+import footSum from "@/hook/footSum";
 
 //璇█鑾峰彇
 const { t } = useI18n()
@@ -238,14 +239,15 @@
   },
 
   footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
+    let footList = ['quantity']
     return[
       columns.map((column, columnIndex) => {
         if (columnIndex === 0) {
           return t('basicData.total')
         }
-        // if (props.tableProp.footList.includes(column.field)) {
-        //   return sumNum(data, column.field)
-        // }
+        if (footList.includes(column.field)) {
+          return footSum(data, column.field)
+        }
         return ''
       })
     ]
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TakeOutRecord.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TakeOutRecord.vue
index e2aa0d1..9a59e29 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TakeOutRecord.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TakeOutRecord.vue
@@ -9,6 +9,7 @@
 import {ElMessage} from "element-plus";
 import {Search} from "@element-plus/icons-vue";
 import { useI18n } from 'vue-i18n'
+import footSum from "@/hook/footSum";
 
 //璇█鑾峰彇
 const { t } = useI18n()
@@ -236,14 +237,15 @@
   },
 
   footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
+    let footList = ['quantity']
     return[
       columns.map((column, columnIndex) => {
         if (columnIndex === 0) {
           return t('basicData.total')
         }
-        // if (props.tableProp.footList.includes(column.field)) {
-        //   return sumNum(data, column.field)
-        // }
+        if (footList.includes(column.field)) {
+          return footSum(data, column.field)
+        }
         return ''
       })
     ]
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue
index 7434174..bba91c1 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue
@@ -12,9 +12,9 @@
 import BasicTable from '@/components/sd/product/BasicTable.vue'
 import {VXETable} from "vxe-table";
 import useUserInfoStore from "@/stores/userInfo";
-import { useI18n } from 'vue-i18n'
+import {useI18n} from 'vue-i18n'
 //璇█鑾峰彇
-const { t } = useI18n()
+const {t} = useI18n()
 let productGlassTypeStore = useProductGlassTypeStore()
 let router = useRouter()
 const userStore = useUserInfoStore()
@@ -36,7 +36,7 @@
           location.reload();
         } else {
           ElMessage.warning(res.msg)
-         // router.push("/login")
+          // router.push("/login")
         }
       })
       break
@@ -144,7 +144,7 @@
   keepSource: true,//淇濇寔婧愭暟鎹�
   align: 'center',//鏂囧瓧灞呬腑
   stripe: true,//鏂戦┈绾�
-  rowConfig: {isCurrent: true, isHover: true, height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+  rowConfig: {isCurrent: true, isHover: true, height: 30, useKey: false},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
   id: 'CustomerList',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
@@ -157,7 +157,7 @@
     useKey: true
   },
   filterConfig: {   //绛涢�夐厤缃」
-                    //remote: true
+    //remote: true
   },
   customConfig: {
     storage: true
@@ -245,7 +245,7 @@
   keepSource: true,//淇濇寔婧愭暟鎹�
   align: 'center',//鏂囧瓧灞呬腑
   stripe: true,//鏂戦┈绾�
-  rowConfig: {isCurrent: true, isHover: true, height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+  rowConfig: {isCurrent: true, isHover: true, height: 30, useKey: false},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
   id: 'CustomerList',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
@@ -258,7 +258,7 @@
     useKey: true
   },
   filterConfig: {   //绛涢�夐厤缃」
-                    //remote: true
+    //remote: true
   },
   customConfig: {
     storage: true
@@ -275,7 +275,7 @@
       title: t('processCard.processId'),
       filters: [{data: ''}],
       slots: {filter: 'num1_filter'},
-      width: 130,
+      width: 100,
       filterMethod: filterChanged
     },
     {
@@ -293,7 +293,13 @@
       slots: {filter: 'num1_filter'},
       filterMethod: filterChanged
     },
-    {field: 'shape', title: t('order.shape'), filters: [{data: ''}], slots: {filter: 'num1_filter'}, filterMethod: filterChanged},
+    {
+      field: 'shape',
+      title: t('order.shape'),
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      filterMethod: filterChanged
+    },
     {field: 'width', title: t('order.width'), showOverflow: "ellipsis"},
     {field: 'height', title: t('order.height')},
     {field: 'quantity', title: t('order.quantity')},
@@ -357,30 +363,31 @@
   if (/^[1-9]\d*$/.test(checkedNum.value)) {
     checkedList.forEach((item) => {
       //瀹氫箟key鍊间繚鎸�
-
       //鍒ゆ柇鍙敤鏁伴噺鏄惁澶т簬绛変簬杈撳叆鐨勬暟閲�,涓嶆弧瓒冲垯鎶涘嚭寮傚父
       if (item.baiscQuantity * 1 < checkedNum.value * 1) throw new Error(t('processCard.schedulingQuantity'));
-      item.quantity =  checkedNum.value
+      item.quantity = checkedNum.value
       item.processId = processId
       item.landingSequence = index
-      item.baiscQuantity=item.baiscQuantity - checkedNum.value
-    })
-    //鍒犻櫎key
-    checkedList.forEach((item) => {
+      item.baiscQuantity = item.baiscQuantity - checkedNum.value
+      item.computeGrossArea = item.computeGrossArea - item.width * item.height * checkedNum.value / 1000000
+
+      //鍒犻櫎key
       let key = item._X_ROW_KEY
       delete item._X_ROW_KEY
-      if (item.baiscQuantity===0){
+      if (item.baiscQuantity === 0) {
         $grid.remove(checkedList)
       }
-      $gridLeft.insertAt(checkedList)
+      $gridLeft.insertAt(item)
+      //閲嶆柊璧嬪�糼ey
       item._X_ROW_KEY = key
     })
 
-//娓呴櫎涓よ竟澶嶉�夋
+
+
+    //娓呴櫎涓よ竟澶嶉�夋
     $gridLeft.clearCheckboxRow()
     $grid.clearCheckboxRow()
-  }
-  else if (checkedNum.value === '') {//鍒ゆ柇鏁伴噺杈撳叆妗嗘棤杈撳叆鏁板瓧
+  } else if (checkedNum.value === '') {//鍒ゆ柇鏁伴噺杈撳叆妗嗘棤杈撳叆鏁板瓧
 
     checkedList.forEach((item) => {
       item.processId = processId
@@ -397,11 +404,7 @@
     $gridLeft.clearCheckboxRow()
     $grid.clearCheckboxRow()
   }
-
-
-
 }
-
 
 
 //鍚戝彸杈硅〃鏍兼坊鍔犳暟鎹�
@@ -437,18 +440,29 @@
         let filterIndex = rightData.findIndex(item1 => item1.orderNumber === item.orderNumber)
         //濡傛灉鍙宠竟琛ㄦ牸鏁版嵁涓瓨鍦ㄥ綋鍓嶆暟鎹垯鏁伴噺鐩稿姞
         if (filterIndex >= 0) {
+          //鏁伴噺
           rightData[filterIndex].baiscQuantity = rightData[filterIndex].baiscQuantity * 1 + checkedNum.value * 1
+          //闈㈢Н
+          rightData[filterIndex].computeGrossArea=rightData[filterIndex].width*rightData[filterIndex].height*rightData[filterIndex].baiscQuantity/1000000
           //濡傛灉宸﹁竟鏁伴噺涓�0鏃跺垹闄ゆ鏉℃暟鎹�
-          if (item.quantity === 0) {
-            $gridLeft.remove(item)
+          //鍒犻櫎key
+          let key = item._X_ROW_KEY
+          delete item._X_ROW_KEY
+          if (item.baiscQuantity === 0) {
+            $grid.remove(checkedList)
           }
+          item._X_ROW_KEY = key
         } else {
           //鍙宠竟琛ㄦ牸娌℃湁姝ゆ潯鏁版嵁鍒欏線鍙宠竟琛ㄦ牸鎻掑叆鏁版嵁
           item.baiscQuantity = checkedNum.value
+          item.computeGrossArea=item.width*item.height*checkedNum.value/1000000
           if (item.quantity === 0) {
             $gridLeft.remove(item)
           }
           $grid.insert(item)
+        }
+        if (item.quantity === 0) {
+          $gridLeft.remove(item)
         }
       })
     } else if (checkedNum.value === '') {//鍒ゆ柇鏁伴噺杈撳叆妗嗘棤杈撳叆鏁板瓧
@@ -459,6 +473,9 @@
         //鏃犺緭鍏ュ苟涓斿鏋滃彸杈硅〃鏍兼暟鎹腑瀛樺湪褰撳墠鏁版嵁鍒欐暟閲忕浉鍔�
         if (filterIndex > -1) {
           rightData[filterIndex].baiscQuantity = rightData[filterIndex].baiscQuantity * 1 + item.quantity * 1
+          //闈㈢Н
+          rightData[filterIndex].computeGrossArea=rightData[filterIndex].width*rightData[filterIndex].height*rightData[filterIndex].baiscQuantity/1000000
+
         } else {
           delete item._X_ROW_KEY
           $grid.insert(item)
@@ -507,6 +524,7 @@
         //鍒ゆ柇鍙敤鏁伴噺鏄惁澶т簬绛変簬杈撳叆鐨勬暟閲�,涓嶆弧瓒冲垯鎶涘嚭寮傚父
         if (item.baiscQuantity * 1 < checkedNum.value * 1) throw new Error("璇疯緭鍏ュ皬浜庣瓑浜庡緟鍒嗘暟閲忕殑鏁板瓧");
         item.baiscQuantity = item.baiscQuantity - checkedNum.value
+        item.computeGrossArea=item.computeGrossArea-item.width*item.height*checkedNum.value/1000000
         //瀹氫箟key鍊间繚鎸�
         let key = item._X_ROW_KEY
         //宸﹁竟琛ㄦ牸鏁版嵁
@@ -519,6 +537,7 @@
           //濡傛灉鍙宠竟琛ㄦ牸鏁版嵁涓瓨鍦ㄥ綋鍓嶆暟鎹垯鏁伴噺鐩稿姞
           if (filterIndex >= 0) {
             leftData[filterIndex].quantity = leftData[filterIndex].quantity * 1 + checkedNum.value * 1
+            leftData[filterIndex].computeGrossArea=leftData[filterIndex].computeGrossArea-leftData[filterIndex].width*leftData[filterIndex].height*leftData[filterIndex].baiscQuantity/1000000
 
             if (item.baiscQuantity === 0) {
               $grid.remove(checkedList)
@@ -528,6 +547,7 @@
             item.quantity = checkedNum.value
             item.processId = checkedListLeft[0].processId
             item.landingSequence = checkedListLeft[0].landingSequence
+            item.computeGrossArea=item.computeGrossArea-checkedListLeft[0].width*checkedListLeft[0].height*checkedNum.value/1000000
             delete item._X_ROW_KEY
             $gridLeft.insert(item)
             item._X_ROW_KEY = key
@@ -538,6 +558,7 @@
           item.quantity = checkedNum.value
           item.processId = checkedListLeft[0].processId
           item.landingSequence = checkedListLeft[0].landingSequence
+          // /item.computeGrossArea=item.computeGrossArea
           if (item.baiscQuantity === 0) {
             $grid.remove(checkedList)
 
@@ -545,6 +566,8 @@
           for (let i = 0; i < leftData.length; i++) {
             if (leftData[i].orderNumber === item.orderNumber && leftData[i].processId === item.processId) {
               leftData[i].quantity = leftData[i].quantity * 1 + checkedNum.value * 1
+              leftData[i].computeGrossArea=leftData[i].computeGrossArea-leftData[i].width*leftData[i].height*leftData[i].baiscQuantity/1000000
+
               break
             } else if (leftData[i].orderNumber === item.orderNumber && leftData[i].processId !== item.processId) {
 
@@ -552,8 +575,7 @@
               $gridLeft.insert(item)
               item._X_ROW_KEY = key
               break
-            }
-            else if (leftData[i].orderNumber !== item.orderNumber && leftData[i].processId !== item.processId) {
+            } else if (leftData[i].orderNumber !== item.orderNumber && leftData[i].processId !== item.processId) {
 
               delete item._X_ROW_KEY
               $gridLeft.insert(item)
@@ -569,6 +591,8 @@
         item.processId = checkedListLeft[0].processId
         item.landingSequence = checkedListLeft[0].landingSequence
         item.quantity = checkedListLeft[0].baiscQuantity
+        item.computeGrossArea=item.computeGrossArea-checkedListLeft[0].width*checkedListLeft[0].height*checkedListLeft[0].baiscQuantity/1000000
+
         delete item._X_ROW_KEY
       })
       $gridLeft.insertAt(checkedList)
@@ -597,7 +621,7 @@
           const $tableRight = xGrid.value
           if ($table) {
             const selectRecords = $table.getCheckboxRecords()
-          //  const selectRight = $tableRight.getCheckboxRecords()
+            //  const selectRight = $tableRight.getCheckboxRecords()
             let leftData = $tableRight.getTableData().fullData
             if (selectRecords.length === 0) {
               ElMessage.warning("璇峰厛閫夋嫨淇濆瓨鐨勬暟鎹�")
@@ -667,10 +691,11 @@
           <vxe-grid
               ref="xGridLeft"
               class="mytable-scrollbar"
-              max-height="100%"
               height="650px"
+              max-height="100%"
               v-bind="gridLeftOptions"
               v-on="gridEvents"
+              checkbox-config="{ reserve: true, strict: true }"
           >
             <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
             <!--      涓嬫媺鏄剧ず鎵�鏈変俊鎭彃妲�-->
@@ -702,14 +727,16 @@
 
         <div width="12%">
           <el-main style="">
-            <span>{{$t('processCard.selectedQuantity')}}:<el-input v-model="checkedNum" clearable type="number"></el-input></span><br>
+            <span>{{ $t('processCard.selectedQuantity') }}:<el-input v-model="checkedNum" clearable
+                                                                     type="number"></el-input></span><br>
             <el-button type="primary" @click="addRight"> 鈫�</el-button>
             <br>
             <br>
             <el-button type="primary" @click="addLeft"> 鈫�</el-button>
             <br>
             <br>
-            <el-button type="primary" @click="createProcessCard">{{$t('processCard.establishProcessCards')}}</el-button>
+            <el-button type="primary" @click="createProcessCard">{{ $t('processCard.establishProcessCards') }}
+            </el-button>
           </el-main>
         </div>
 
@@ -722,9 +749,10 @@
 
                 ref="xGrid"
                 class="mytable-scrollbar"
-                max-height="100%"
                 height="650px"
+                max-height="100%"
                 v-bind="gridOptions"
+                checkbox-config="{ reserve: true, strict: true }"
             >
               <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
               <!--      涓嬫媺鏄剧ず鎵�鏈変俊鎭彃妲�-->
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/CrossProcessBreaking.vue b/north-glass-erp/northglass-erp/src/views/pp/report/CrossProcessBreaking.vue
index 1a3919e..34d6790 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/report/CrossProcessBreaking.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/CrossProcessBreaking.vue
@@ -16,7 +16,7 @@
     {field: 'area',width: 100, title: '娆$牬闈㈢Н', sortable: true},
     {field: 'order.project', width: 120,title: '椤圭洰鍚嶇О', sortable: true},
     {field: 'order.orderId',width: 120, title: '閿�鍞崟鍙�', sortable: true},
-    {field: 'orderGlassDetail.glassChild',width: 120, title: '鍗曞搧鍚嶇О', sortable: true},
+    {field: 'orderGlassDetail.glassChild',width: 120, title: '鍗曠墖鍚嶇О', sortable: true},
   ],//琛ㄦ牸琛ㄥご瀛楁
   data:[],//琛ㄦ牸鏁版嵁
   url :'/report/crossProcessBreaking',
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/DamageReport.vue b/north-glass-erp/northglass-erp/src/views/pp/report/DamageReport.vue
index 51c9642..d38698e 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/report/DamageReport.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/DamageReport.vue
@@ -6,7 +6,7 @@
 import deepClone from "@/utils/deepClone";
 import {ElDatePicker, ElMessage} from "element-plus";
 import {useI18n} from 'vue-i18n'
-import {changeFilterEvent, filterChanged} from "@/hook"
+import exportExcel from "@/hook/exportExcel";
 //璇█鑾峰彇
 const {t} = useI18n()
 let router = useRouter()
@@ -78,12 +78,12 @@
   processType: [],
 })
 //绗竴娆″姞杞芥暟鎹�
-request.post(`/report/damageReport/${startTime}/${endTime}`, filterData.value).then((res) => {
+request.post(`/report/damageReport/1/${total.pageSize}/${startTime}/${endTime}`, filterData.value).then((res) => {
 
   if (res.code == 200) {
-    // total.dataTotal = res.data.total.total*1
-    // total.pageTotal= res.data.total.pageTotal
-    // pageTotal.value = res.data.total
+    total.dataTotal = res.data.total.total*1
+    total.pageTotal= res.data.total.pageTotal
+    pageTotal.value = res.data.total
     produceList = produceList.value.concat(deepClone(res.data.data))
     xGrid.value.reloadData(produceList)
     gridOptions.loading = false
@@ -97,7 +97,7 @@
   let startTime = form.date1[0]
   let endTime = form.date1[1]
 
-  request.post(`/report/selectReportingWork/${pageNum.value}/${total.pageSize}/${startTime}/${endTime}/${inputVal}`, filterData.value).then((res) => {
+  request.post(`/report/damageReport/${pageNum.value}/${total.pageSize}/${startTime}/${endTime}`, filterData.value).then((res) => {
     if (res.code == 200) {
 
 
@@ -114,14 +114,14 @@
 
   let startTime = form.date1[0]
   let endTime = form.date1[1]
-  request.post(`/report/damageReport/${startTime}/${endTime}`, filterData.value).then((res) => {
+  request.post(`/report/damageReport/${pageNum.value}/${total.pageSize}/${startTime}/${endTime}`, filterData.value).then((res) => {
 
     if (res.code == 200) {
-      // total.dataTotal = res.data.total.total*1
-      // total.pageTotal= res.data.total.pageTotal
-      // pageTotal.value = res.data.total
-      produceList = deepClone(res.data.data)
-      xGrid.value.reloadData(produceList)
+      total.dataTotal = res.data.total.total * 1
+      total.pageTotal = res.data.total.pageTotal
+      pageTotal.value = res.data.total
+      xGrid.value.loadData(res.data.data)
+      gridOptions.loading = false
     } else {
       ElMessage.warning(res.msg)
     }
@@ -135,31 +135,45 @@
   selectPageList()
 }
 
-
 /*浣跨敤绛涢�夛紝鍚庣鑾峰彇鏁版嵁*/
-// const changeFilterEvent = (event, option, $panel,) => {
-//   // 鎵嬪姩瑙﹀彂绛涢��
-//   $panel.changeOption(event, !!option.data, option)
-// }
+const changeFilterEvent = (event, option, $panel,) => {
+  // 鎵嬪姩瑙﹀彂绛涢��
+  $panel.changeOption(event, !!option.data, option)
+}
 
-// function filterChanged(column){
-//   //gridOptions.loading=true
-//   //绛涢�夋潯浠跺彂鐢熷彉鍖栨潯浠跺彂鐢熷彉鍖�
-//   let value = column.datas[0]!=undefined?column.datas[0]:''
-//   value = value.trim()
-//   //鍒ゆ柇鏄惁瀛樺湪澶栭敭
-//   if (column.property.indexOf('.')>-1){
-//     const  columnArr = column.property.split('.')
-//     filterData.value[columnArr[0]] = {
-//       [columnArr[1]]:value
-//     }
-//   }else{
-//     filterData.value[column.property] = value
-//   }
-//
-//   gridOptions.loading = true
-//
-// }
+function filterChanged(column){
+  //gridOptions.loading=true
+  //绛涢�夋潯浠跺彂鐢熷彉鍖栨潯浠跺彂鐢熷彉鍖�
+  let value = column.datas[0]!=undefined?column.datas[0]:''
+  value = value.trim()
+  //鍒ゆ柇鏄惁瀛樺湪澶栭敭
+  if (column.property.indexOf('.')>-1){
+    const  columnArr = column.property.split('.')
+    filterData.value[columnArr[0]] = {
+      [columnArr[1]]:value
+    }
+  }else{
+    filterData.value[column.property] = value
+  }
+  gridOptions.loading = true
+
+  let startTime = form.date1[0]
+  let endTime = form.date1[1]
+  request.post(`/report/damageReport/1/${total.pageSize}/${startTime}/${endTime}`, filterData.value).then((res) => {
+
+    if (res.code == 200) {
+      total.dataTotal = res.data.total.total*1
+      total.pageTotal=parseInt(res.data.total)
+      pageNum.value=1
+      produceList = deepClone(res.data.data)
+      xGrid.value.reloadData(produceList)
+      gridOptions.loading=false
+    } else {
+      ElMessage.warning(res.msg)
+    }
+  })
+
+}
 
 /*鍚庣杩斿洖缁撴灉澶氬眰宓屽灞曠ず*/
 const hasDecimal = (value) => {
@@ -187,7 +201,7 @@
     useKey: true
   },
   filterConfig: {   //绛涢�夐厤缃」
-    // remote: true
+    remote: true
   },
   customConfig: {
     storage: true
@@ -201,59 +215,52 @@
     {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
     {type: 'seq', fixed: "left", title: '鑷簭', width: 50},
     {
-      field: 'order_id', width: 120, title: '閿�鍞崟鍙�', filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      filterMethod: filterChanged
+      field: 'orderId', width: 120, title: '閿�鍞崟鍙�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }
     },
     {
       field: 'project',
       width: 120,
       title: '椤圭洰鍚嶇О',
       showOverflow: "ellipsis",
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      filterMethod: filterChanged
+      filters:[{ data: '' }],slots: { filter: 'num1_filter' }
     },
     {
-      field: 'process_id', width: 130, title: '娴佺▼鍗″彿', filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      filterMethod: filterChanged
+      field: 'processId', width: 130, title: '娴佺▼鍗″彿', filters:[{ data: '' }],slots: { filter: 'num1_filter' }
     },
     {
-      field: 'order_number', width: 120, title: '璁㈠崟搴忓彿', filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      filterMethod: filterChanged
+      field: 'orderNumber', width: 120, title: '璁㈠崟搴忓彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }
     },
     {
-      field: 'technology_number', width: 100, title: '灏忕墖椤哄簭', filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      filterMethod: filterChanged
+      field: 'technologyNumber', width: 100, title: '灏忕墖椤哄簭', filters:[{ data: '' }],slots: { filter: 'num1_filter' }
     },
     {
-      field: 'reporting_work_time',
+      field: 'reportingWorkTime',
       width: 100,
       title: '鎶ュ伐鏃堕棿',
       type: 'date',
       attrs: {placeholder: '', type: 'date'},
     },
-    {field: 'responsible_process', width: 120, title: '璐d换宸ュ簭', showOverflow: "ellipsis"},
-    {field: 'responsible_team', width: 100, title: '璐d换鐝粍'},
-    {field: 'responsible_equipment', width: 120, title: '璐d换璁惧'},
-    {field: 'breakage_type', width: 120, title: '娆$牬绫诲瀷'},
-    {field: 'breakage_reason', width: 120, title: '娆$牬鍘熷洜'},
-    {field: 'breakage_quantity', width: 120, title: '娆$牬鏁伴噺'},
+    {field: 'responsibleProcess', width: 120, title: '璐d换宸ュ簭',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis"},
+    {field: 'responsibleTeam', width: 100, title: '璐d换鐝粍',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'responsibleEquipment', width: 120, title: '璐d换璁惧',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'breakageType', width: 120, title: '娆$牬绫诲瀷',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'breakageReason', width: 120, title: '娆$牬鍘熷洜',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'breakageQuantity', width: 120, title: '娆$牬鏁伴噺'},
     {field: 'area', width: 120, title: '娆$牬闈㈢Н'},
     {field: 'personnel', width: 120, title: '璐d换浜哄憳'},
-    {field: 'glass_child', width: 120, title: '鍗曠墖鍚嶇О'},
+    {field: 'glassChild', width: 120, title: '鍗曠墖鍚嶇О'},
   ],//琛ㄥご鎸夐挳
 
   toolbarConfig: {
     // buttons: [{
     //
     // }],
-    import: false,
-    export: true,
-    print: true,
+    // import: false,
+    // export: true,
+    // print: true,
+    slots: {
+      tools: 'toolbar_buttons'
+    },
     zoom: true,
     custom: true
   },
@@ -302,6 +309,7 @@
         class="mytable-scrollbar"
         max-height="100%"
         v-bind="gridOptions"
+        @filter-change="filterChanged"
 
     >
       <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
@@ -315,21 +323,34 @@
         </ul>
       </template>
 
-      <!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�-->
-      <template #button_slot="{ row }">
-        <el-button link size="small" type="primary" @click="getTableRow(row,'edit')">缂栬緫</el-button>
-        <el-button link size="small" type="primary" @click="getTableRow(row,'setType')">鍙嶅</el-button>
-        <el-button link size="small" type="primary" @click="getTableRow(row,'delete')">鍒犻櫎</el-button>
+      <template #toolbar_buttons>
+        <vxe-button style="margin-right: 0.5rem"
+                    @click="exportExcel('/report/exportDamageReport',
+                                          '娆$牬鏄庣粏鎶ヨ〃',
+                                          form.date1)">
+          瀵煎嚭</vxe-button>
       </template>
 
       <template #num1_filter="{ column, $panel }">
         <div>
           <div v-for="(option, index) in column.filters" :key="index">
-            <input v-model="option.data" type="type" @input="changeFilterEvent($event, option, $panel)"/>
+            <input v-model="option.data" type="text" @input="changeFilterEvent($event, option, $panel)"/>
           </div>
         </div>
       </template>
-
+      <template #pager>
+        <!--浣跨敤 pager 鎻掓Ы-->
+        <!--        'PrevJump','NextJump', -->
+        <vxe-pager
+            v-model:current-page="pageNum"
+            v-model:page-size="total.pageSize"
+            v-model:pager-count="total.pageTotal"
+            :layouts="[  'PrevPage', 'Jump','PageCount', 'NextPage',  'Total']"
+            :total="total.dataTotal"
+            @page-change="handlePageChange"
+        >
+        </vxe-pager>
+      </template>
 
     </vxe-grid>
   </div>
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/OrderPlanDecomposition.vue b/north-glass-erp/northglass-erp/src/views/pp/report/OrderPlanDecomposition.vue
index 73e00f2..88e3daa 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/report/OrderPlanDecomposition.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/OrderPlanDecomposition.vue
@@ -7,6 +7,7 @@
 import {ElDatePicker, ElMessage} from "element-plus";
 import {useI18n} from 'vue-i18n'
 import {changeFilterEvent, filterChanged} from "@/hook"
+import exportExcel from "@/hook/exportExcel";
 //璇█鑾峰彇
 const {t} = useI18n()
 let router = useRouter()
@@ -229,7 +230,7 @@
       filterMethod: filterChanged
     },
     {
-      field: 'quantity', width: 120, title: '璁㈡暟閲�', filters: [{data: ''}],
+      field: 'quantity', width: 120, title: '璁㈠崟鏁伴噺', filters: [{data: ''}],
       slots: {filter: 'num1_filter'},
       filterMethod: filterChanged
     },
@@ -257,9 +258,12 @@
     // buttons: [{
     //
     // }],
-    import: false,
-    export: true,
-    print: true,
+    slots: {
+      tools: 'toolbar_buttons'
+    },
+    // import: false,
+    // export: true,
+    // print: true,
     zoom: true,
     custom: true
   },
@@ -320,7 +324,13 @@
           </li>
         </ul>
       </template>
-
+      <template #toolbar_buttons>
+        <vxe-button style="margin-right: 0.5rem"
+                    @click="exportExcel('/report/exportOrderPlanDecomposition',
+                                          '璁㈠崟璁″垝鍒嗚В鎶ヨ〃',
+                                          form.date1)">
+          瀵煎嚭</vxe-button>
+      </template>
 
       <template #num1_filter="{ column, $panel }">
         <div>
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/ProcessCardProgress.vue b/north-glass-erp/northglass-erp/src/views/pp/report/ProcessCardProgress.vue
index 68b8c89..677f3b2 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/report/ProcessCardProgress.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/ProcessCardProgress.vue
@@ -61,7 +61,7 @@
   {field: 'glass_child',width: 130, title: '鍗曠墖鍚嶇О' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
   {field: 'order_type', width: 120,title: '璁㈠崟绫诲瀷',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
   {field: 'process_id',width: 110, title: '娴佺▼鍗″彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
-  {field: 'technology_number', width: 90,title: '鏍囪',showOverflow:"ellipsis"},
+  {field: 'technology_number', width: 90,title: '灏忕墖椤哄簭',showOverflow:"ellipsis"},
   {field: 'quantity', width: 90,title: '鏁伴噺'},
   {field: 'broken_num',width: 90, title: '娆$牬鏁伴噺'},
   {field: 'inventoryArea',width: 120, title: '鍏ュ簱闈㈢Н'},
@@ -150,7 +150,7 @@
     // }],
     // import: false,
     // export: true,
-     print: true,
+     // print: true,
     zoom: true,
     custom: true
   },
@@ -184,6 +184,8 @@
 const mergeCells = ref([
 
 ])
+
+
 
 </script>
 
@@ -229,6 +231,7 @@
       </template>
 
 
+
       <template #num1_filter="{ column, $panel }">
         <div>
           <div v-for="(option, index) in column.filters" :key="index">
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/ProcessToBeCompleted.vue b/north-glass-erp/northglass-erp/src/views/pp/report/ProcessToBeCompleted.vue
index 6e45163..c4b3a8d 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/report/ProcessToBeCompleted.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/ProcessToBeCompleted.vue
@@ -273,9 +273,12 @@
     // buttons: [{
     //
     // }],
-    import: false,
-    export: true,
-    print: true,
+    slots: {
+      tools: 'toolbar_buttons'
+    },
+    // import: false,
+    // export: true,
+    // print: true,
     zoom: true,
     custom: true
   },
@@ -297,7 +300,57 @@
   }
 
 })
+ function exportExcel(url, fileName,date) {
+  let processes = value.value
+  let inputVal = form.orderId
+  if (inputVal == '') {
+    inputVal = null
+  }
+  let inputProject = form.project
+  if (inputProject == '') {
+    inputProject = null
+  }
+  if(date===null){
+    ElMessage.warning("璇峰厛閫夋嫨鏃ユ湡")
+    return
+  }
 
+  if(processes===null){
+    ElMessage.warning("璇峰厛閫夋嫨宸ュ簭")
+    return
+  }
+
+  const date1 = new Date(date[0]);
+  const date2 = new Date(date[1]);
+  const timeDiff = Math.abs(date2.getTime() - date1.getTime());
+  const daysDiff = timeDiff / (1000 * 3600 * 24);
+  if(Math.floor(daysDiff)>180){
+    ElMessage.warning("瀵煎嚭鐨勭瓫閫夋椂闂翠笉鑳借秴杩�180澶�")
+    return
+  }
+   let dataMp = ref({
+     date: date,
+     processes: processes,
+     orderId: inputVal,
+     project: inputProject
+   })
+  request.post(url,dataMp.value,{responseType :'blob'}).then(res => {
+    const blob = new Blob([res])
+    if ('download' in document.createElement('a')) { // 闈濱E涓嬭浇
+      const elink = document.createElement('a')
+      elink.download = `${fileName}.xlsx`
+      elink.style.display = 'none'
+      elink.href = URL.createObjectURL(blob)
+      document.body.appendChild(elink)
+      elink.click()
+      URL.revokeObjectURL(elink.href) // 閲婃斁URL 瀵硅薄
+      document.body.removeChild(elink)
+    } else { // IE10+涓嬭浇
+      navigator.msSaveBlob(blob, fileName)
+    }
+
+  })
+}
 
 </script>
 
@@ -359,6 +412,14 @@
         <el-button link size="small" type="primary" @click="getTableRow(row,'delete')">鍒犻櫎</el-button>
       </template>
 
+      <template #toolbar_buttons>
+        <vxe-button style="margin-right: 0.5rem"
+                    @click="exportExcel('/report/exportProcessToBeCompleted',
+                                          '宸ュ簭寰呭畬鎴愭姤琛�',
+                                          form.date1)">
+          瀵煎嚭</vxe-button>
+      </template>
+
       <template #num1_filter="{ column, $panel }">
         <div>
           <div v-for="(option, index) in column.filters" :key="index">
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue b/north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue
index 5e0fda1..a5140e8 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue
@@ -269,9 +269,12 @@
     // buttons: [{
     //
     // }],
-    import: false,
-    export: true,
-    print: true,
+    slots: {
+      tools: 'toolbar_buttons'
+    },
+    // import: false,
+    // export: true,
+    // print: true,
     zoom: true,
     custom: true
   },
@@ -294,7 +297,57 @@
 
 })
 
+function exportExcel(url, fileName,date) {
+  let processes = value.value
+  let inputVal = form.orderId
+  if (inputVal == '') {
+    inputVal = null
+  }
+  let inputProject = form.project
+  if (inputProject == '') {
+    inputProject = null
+  }
+  if(date===null){
+    ElMessage.warning("璇峰厛閫夋嫨鏃ユ湡")
+    return
+  }
 
+  if(processes===null){
+    ElMessage.warning("璇峰厛閫夋嫨宸ュ簭")
+    return
+  }
+
+  const date1 = new Date(date[0]);
+  const date2 = new Date(date[1]);
+  const timeDiff = Math.abs(date2.getTime() - date1.getTime());
+  const daysDiff = timeDiff / (1000 * 3600 * 24);
+  if(Math.floor(daysDiff)>180){
+    ElMessage.warning("瀵煎嚭鐨勭瓫閫夋椂闂翠笉鑳借秴杩�180澶�")
+    return
+  }
+  let dataMp = ref({
+    date: date,
+    processes: processes,
+    orderId: inputVal,
+    project: inputProject
+  })
+  request.post(url,dataMp.value,{responseType :'blob'}).then(res => {
+    const blob = new Blob([res])
+    if ('download' in document.createElement('a')) { // 闈濱E涓嬭浇
+      const elink = document.createElement('a')
+      elink.download = `${fileName}.xlsx`
+      elink.style.display = 'none'
+      elink.href = URL.createObjectURL(blob)
+      document.body.appendChild(elink)
+      elink.click()
+      URL.revokeObjectURL(elink.href) // 閲婃斁URL 瀵硅薄
+      document.body.removeChild(elink)
+    } else { // IE10+涓嬭浇
+      navigator.msSaveBlob(blob, fileName)
+    }
+
+  })
+}
 </script>
 
 <template>
@@ -358,11 +411,17 @@
       <template #num1_filter="{ column, $panel }">
         <div>
           <div v-for="(option, index) in column.filters" :key="index">
-            <input v-model="option.data" type="type" @input="changeFilterEvent($event, option, $panel)"/>
+            <input v-model="option.data" type="text" @input="changeFilterEvent($event, option, $panel)"/>
           </div>
         </div>
       </template>
-
+      <template #toolbar_buttons>
+        <vxe-button style="margin-right: 0.5rem"
+                    @click="exportExcel('/report/exportWorkInProgress',
+                                          '鍦ㄥ埗鍝佹姤琛�',
+                                          form.date1)">
+          瀵煎嚭</vxe-button>
+      </template>
 
     </vxe-grid>
   </div>
diff --git a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
index c50d3e0..c3f818b 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
@@ -64,6 +64,7 @@
 
 })
 let detail = ref([])
+let layer=''
 
 //瀹氫箟鎺ユ敹鍔犺浇琛ㄥご涓嬫媺鏁版嵁
 const titleSelectJson = ref({
@@ -92,6 +93,8 @@
       if(res.code === '200'){
         titleUploadData.value = res.data.reportingWork
         titleSelectJson.value = res.data.basic
+        layer= res.data.layer
+        //titleUploadData.value.processId=titleUploadData.value.processId+'/'+layer
         xGrid.value.reloadData(res.data.reportingWorkDetails)
         let button =  {
           code: 'update',
@@ -105,7 +108,7 @@
 
         gridOptions.toolbarConfig.buttons.push(button)
       }
-      getQuantity()
+     // getQuantity()
       inputDisabled.value = true
     })
   }
@@ -747,7 +750,7 @@
   }
   let indexOfChar = processId.indexOf("/")
   let leftString = processId.slice(0, indexOfChar)
-  if (leftString.length !== 14) {
+  if (leftString.length < 14) {
     ElMessage.warning("璇疯緭鍏ユ纭綅鏁扮殑娴佺▼鍗�")
     return
   }
@@ -799,7 +802,7 @@
   }
   let indexOfChar = processId.indexOf("/")
   let leftString = processId.slice(0, indexOfChar)
-  if (leftString.length != 14) {
+  if (leftString.length < 14) {
     ElMessage.warning("璇疯緭鍏ユ纭綅鏁扮殑娴佺▼鍗�")
     return
   }
@@ -821,8 +824,8 @@
   //娴佺▼鍗″彿
   let processIdStr = result[1];
   //灞傚彿
-  let technologyStr = result[2];
 
+  let technologyStr = result[2];
   request.post(`/reportingWork/addSelectLastWork/${processIdStr}/${technologyStr}/${process}`).then((res) => {
     if (res.code == 200) {
       if(res.data.data==null){
diff --git a/north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomerOrder.vue b/north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomerOrder.vue
index a39c9ad..4af1184 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomerOrder.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomerOrder.vue
@@ -220,7 +220,7 @@
     custom: true
   },
   footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
-    let footList = ['quantity','area']
+    let footList = ['quantity','area','order.money']
     return[
       columns.map((column, columnIndex) => {
         if (columnIndex === 0) {
diff --git a/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue b/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
index 37b28b8..e5643b1 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
@@ -12,6 +12,7 @@
 import { useI18n } from 'vue-i18n'
 import OrderOtherMoney from "@/components/sd/order/OrderOtherMoney.vue";
 import footSum from "@/hook/footSum";
+import {changeFilterEvent,filterChanged} from "@/hook"
 
 //璇█鑾峰彇
 const { t } = useI18n()
@@ -194,7 +195,6 @@
 
       if(res.code==200){
         pageTotal.value=res.data.total
-        console.log(res.data.delivery)
         titleUploadData.value=deepClone(res.data.delivery)
 
 
@@ -243,76 +243,6 @@
 //瀹氫箟褰撳墠椤垫暟
 let pageNum=$ref(1)
 
-const changeFilterEvent = (event, option, $panel) => {
-  // 鎵嬪姩瑙﹀彂绛涢��
-  $panel.changeOption(event, !!option.data, option)
-}
-//鍓嶇绛涢��
-const filterChanged = ({ option, row, column }) => {
-  if (option.data) {
-    let param = column.field
-    if(param.indexOf(".")>-1){
-      let  array = param.split('.')
-      return row[array[0]][array[1]].toString().toLowerCase().indexOf(option.data) > -1
-    }else{
-      return row[param].toString().toLowerCase().indexOf(option.data) > -1
-    }
-
-  }
-  return true
-  //@filter-change="filterChanged"
-
-  /*gridOptions.loading=true
-  //绛涢�夋潯浠跺彂鐢熷彉鍖栨潯浠跺彂鐢熷彉鍖�
-  let value = column.datas[0]!=undefined?column.datas[0]:''
-  value = value.trim()
-  //鍒ゆ柇鏄惁瀛樺湪澶栭敭
-  if (column.property.indexOf('.')>-1){
-    const  columnArr = column.property.split('.')
-    filterData.value[columnArr[0]] = {
-      [columnArr[1]]:value
-    }
-  }else{
-    filterData.value[column.property] = value
-  }
-
-  const str = route.query.deliveryID
-  if (typeof str != 'undefined' && str != null && str !== '' && str !== '\n' && str !== '\r'){
-    filterData.value.deliveryDetail.deliveryId=str
-    request.post("/Delivery/getseletShippingOrderDetail/1/100",filterData.value).then((res) => {
-
-      if(res.code==200){
-        pageTotal.value=res.data.total
-        pageNum=1
-        produceList = deepClone(res.data.data)
-        xGrid.value.reloadData(produceList)
-        gridOptions.loading=false
-      }else{
-        ElMessage.warning(res.msg)
-        router.push("/login")
-      }
-    })
-  }
-  const orderId = route.query.orderId
-  if (typeof orderId !== 'undefined' && orderId !== null && orderId !== '' && orderId !== '\n' && orderId !== '\r'){
-    filterData.value.orderId=orderId
-    request.post("/Delivery/getseletShippingOrderDetails/1/100",filterData.value).then((res) => {
-
-      if(res.code==200){
-        pageTotal.value=res.data.total
-
-        pageNum=1
-        produceList = deepClone(res.data.data)
-        xGrid.value.loadData(produceList)
-        gridOptions.loading=false
-      }else{
-        ElMessage.warning(res.msg)
-        router.push("/login")
-      }
-    })
-  }*/
-
-}
 
 
 
@@ -399,8 +329,8 @@
     custom: true
   },
   footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
-    //let footList=['deliveryDetail.quantity','quantity']
-    let footList=[]
+    let footList=['deliveryDetail.quantity','quantity','deliveryDetail.money']
+    //let footList=[]
     return[
       columns.map((column, columnIndex) => {
         if (columnIndex === 0) {
@@ -417,6 +347,7 @@
 })
 
 
+
 const gridEvents = {
   async toolbarButtonClick({code}) {
     const $grid = xGrid.value
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportController.java b/north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportController.java
index d95100b..a9db4eb 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportController.java
@@ -3,6 +3,7 @@
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.example.erp.common.Constants;
 import com.example.erp.common.Result;
+import com.example.erp.dto.pp.*;
 import com.example.erp.entity.pp.DamageDetails;
 import com.example.erp.entity.pp.FlowCard;
 import com.example.erp.entity.pp.Report;
@@ -26,7 +27,7 @@
 import java.util.Map;
 
 @RestController
-@Api(value="鐢熶骇鎶ヨ〃controller",tags={"鐢熶骇鎶ヨ〃鎿嶄綔鎺ュ彛"})
+@Api(value = "鐢熶骇鎶ヨ〃controller", tags = {"鐢熶骇鎶ヨ〃鎿嶄綔鎺ュ彛"})
 @RequestMapping("/report")
 public class ReportController {
     private final ReportService reportService;
@@ -38,9 +39,9 @@
     //娴佺▼鍗¤繘搴�
     @ApiOperation("娴佺▼鍗¤繘搴�")
     @SaCheckPermission("ProcessCardProgress.search")
-    @PostMapping  ("/processCardProgress/{orderId}")
-    public Result processCardProgress(@PathVariable String orderId, @RequestBody List<Integer> columns){
-        return Result.seccess(reportService.processCardProgressSv(orderId,columns));
+    @PostMapping("/processCardProgress/{orderId}")
+    public Result processCardProgress(@PathVariable String orderId, @RequestBody List<Integer> columns) {
+        return Result.seccess(reportService.processCardProgressSv(orderId, columns));
     }
 
     @ApiOperation("璺ㄥ伐搴忔鐮�")
@@ -49,8 +50,8 @@
     public Result getOrderReport(@PathVariable Integer pageNum,
                                  @PathVariable Integer pageSize,
                                  @PathVariable List<String> selectDate,
-                                 @RequestBody DamageDetails damageDetails)  {
-        return  Result.seccess(reportService.crossProcessBreakingSv(pageNum,pageSize,selectDate,damageDetails));
+                                 @RequestBody DamageDetails damageDetails) {
+        return Result.seccess(reportService.crossProcessBreakingSv(pageNum, pageSize, selectDate, damageDetails));
 
     }
 
@@ -58,13 +59,13 @@
     @SaCheckPermission("WorkInProgress.search")
     @PostMapping("/workInProgress/{selectTime1}/{selectTime2}/{orderId}/{inputProject}/{selectProcesses}")
     public Result workInProgress(
-                                 @PathVariable Date selectTime1,
-                                 @PathVariable Date selectTime2,
-                                 @PathVariable String orderId,
-                                 @PathVariable String inputProject,
-                                 @PathVariable String selectProcesses,
-                                 @RequestBody Report report)  {
-        return  Result.seccess(reportService.workInProgressSv(selectTime1,selectTime2,orderId,inputProject,selectProcesses,report));
+            @PathVariable Date selectTime1,
+            @PathVariable Date selectTime2,
+            @PathVariable String orderId,
+            @PathVariable String inputProject,
+            @PathVariable String selectProcesses,
+            @RequestBody Report report) {
+        return Result.seccess(reportService.workInProgressSv(selectTime1, selectTime2, orderId, inputProject, selectProcesses, report));
 
     }
 
@@ -77,28 +78,31 @@
             @PathVariable String orderId,
             @PathVariable String inputProject,
             @PathVariable String selectProcesses,
-            @RequestBody Report report)  {
-        return  Result.seccess(reportService.selectProcessToBeCompletedSv(selectTime1,selectTime2,orderId,inputProject,selectProcesses,report));
+            @RequestBody Report report) {
+        return Result.seccess(reportService.selectProcessToBeCompletedSv(selectTime1, selectTime2, orderId, inputProject, selectProcesses, report));
 
     }
 
     @ApiOperation("娆$牬鏄庣粏鎶ヨ〃")
     @SaCheckPermission("DamageReport.search")
-    @PostMapping("/damageReport/{selectTime1}/{selectTime2}")
+    @PostMapping("/damageReport/{pageNum}/{pageSize}/{selectTime1}/{selectTime2}")
     public Result damageReport(
+            @PathVariable Integer pageNum,
+            @PathVariable Integer pageSize,
             @PathVariable Date selectTime1,
             @PathVariable Date selectTime2,
-            @RequestBody Report report)  {
-        return  Result.seccess(reportService.selectDamageReportSv(selectTime1,selectTime2,report));
+            @RequestBody DamageReportDTO damageReportDTO) {
+        return Result.seccess(reportService.selectDamageReportSv(pageNum, pageSize, selectTime1, selectTime2, damageReportDTO));
 
     }
+
     @ApiOperation("鍒嗘灦鏄庣粏鎶ヨ〃")
     @SaCheckPermission("SplittingDetailsOutside.search")
     @PostMapping("/splittingDetailsOutside/{orderId}")
     public Result splittingDetailsOutside(
             @PathVariable String orderId,
-            @RequestBody Report report)  {
-        return  Result.seccess(reportService.splittingDetailsOutsideSv(orderId,report));
+            @RequestBody Report report) {
+        return Result.seccess(reportService.splittingDetailsOutsideSv(orderId, report));
 
     }
 
@@ -108,8 +112,8 @@
     public Result qualityReport(
             @PathVariable Date selectTime1,
             @PathVariable Date selectTime2,
-            @RequestBody Report report)  {
-        return  Result.seccess(reportService.qualityReportSv(selectTime1,selectTime2,report));
+            @RequestBody Report report) {
+        return Result.seccess(reportService.qualityReportSv(selectTime1, selectTime2, report));
 
     }
 
@@ -120,49 +124,81 @@
             @PathVariable Date selectTime1,
             @PathVariable Date selectTime2,
             @PathVariable String selectProcesses,
-            @RequestBody Report report)  {
-        return  Result.seccess(reportService.yieldSv(selectTime1,selectTime2,selectProcesses,report));
+            @RequestBody Report report) {
+        return Result.seccess(reportService.yieldSv(selectTime1, selectTime2, selectProcesses, report));
 
     }
 
     @ApiOperation("鐢熶骇鍙戣揣杩涘害")
     @SaCheckPermission("ProductionSchedule.search")
-    @PostMapping  ("/productionSchedule/{orderId}")
-    public Result productionSchedule(@PathVariable String orderId, @RequestBody List<Integer> columns){
-        return Result.seccess(reportService.productionScheduleSv(orderId,columns));
+    @PostMapping("/productionSchedule/{orderId}")
+    public Result productionSchedule(@PathVariable String orderId, @RequestBody List<Integer> columns) {
+        return Result.seccess(reportService.productionScheduleSv(orderId, columns));
     }
 
     @ApiOperation("浠诲姟瀹屾垚鎯呭喌姹囨�昏繘搴�")
     @SaCheckPermission("TaskCompletionStatus.search")
-    @PostMapping  ("/taskCompletionStatus/{selectTime1}/{selectTime2}")
+    @PostMapping("/taskCompletionStatus/{selectTime1}/{selectTime2}")
     public Result taskCompletionStatus(@PathVariable Date selectTime1,
                                        @PathVariable Date selectTime2,
-                                       @RequestBody List<Integer> columns){
-        return Result.seccess(reportService.taskCompletionStatusSv(selectTime1,selectTime2,columns));
+                                       @RequestBody List<Integer> columns) {
+        return Result.seccess(reportService.taskCompletionStatusSv(selectTime1, selectTime2, columns));
     }
 
     @ApiOperation("璁㈠崟璁″垝鍒嗚В")
     @SaCheckPermission("OrderPlanDecomposition.search")
-    @PostMapping  ("/orderPlanDecomposition/{selectTime1}/{selectTime2}")
+    @PostMapping("/orderPlanDecomposition/{selectTime1}/{selectTime2}")
     public Result orderPlanDecomposition(@PathVariable Date selectTime1,
-                                       @PathVariable Date selectTime2,
-                                         @RequestBody Report report){
-        return Result.seccess(reportService.orderPlanDecompositionSv(selectTime1,selectTime2,report));
+                                         @PathVariable Date selectTime2,
+                                         @RequestBody Report report) {
+        return Result.seccess(reportService.orderPlanDecompositionSv(selectTime1, selectTime2, report));
     }
 
     @ApiOperation("鍘熺墖棰嗘枡")
     @SaCheckPermission("RawMaterialRequisition.search")
-    @PostMapping  ("/rawMaterialRequisition/{selectTime1}/{selectTime2}")
+    @PostMapping("/rawMaterialRequisition/{selectTime1}/{selectTime2}")
     public Result rawMaterialRequisition(@PathVariable Date selectTime1,
                                          @PathVariable Date selectTime2,
-                                         @RequestBody Report report){
-        return Result.seccess(reportService.rawMaterialRequisitionSv(selectTime1,selectTime2,report));
+                                         @RequestBody Report report) {
+        return Result.seccess(reportService.rawMaterialRequisitionSv(selectTime1, selectTime2, report));
     }
+
     @ApiOperation("璺ㄥ伐搴忔鐮存姤琛ㄥ鍑�")
     @PostMapping("/exportCrossProcessBreaking")
     public void exportCrossProcessBreaking(HttpServletResponse response, @RequestBody List<LocalDate> dates) throws IOException, IllegalAccessException, InstantiationException {
-
         //鍙傛暟锛氱浉搴旂殑鏁版嵁锛屽疄浣撶被淇℃伅锛岀浉搴旂殑鏂规硶锛堟暟鎹幏鍙栵級锛岀敓鎴愮殑excel鍚嶅瓧
-        DownExcel.download(response, DamageDetails.class, reportService.exportCrossProcessBreakingSv(dates),"CrossProcessBreaking");
+        DownExcel.download(response, CrossProcessBreakingDTO.class, reportService.exportCrossProcessBreakingSv(dates), "CrossProcessBreaking");
+    }
+
+    @ApiOperation("娆$牬鏄庣粏鎶ヨ〃瀵煎嚭")
+    @PostMapping("/exportDamageReport")
+    public void exportDamageReport(HttpServletResponse response, @RequestBody List<LocalDate> dates) throws IOException, IllegalAccessException, InstantiationException {
+        //鍙傛暟锛氱浉搴旂殑鏁版嵁锛屽疄浣撶被淇℃伅锛岀浉搴旂殑鏂规硶锛堟暟鎹幏鍙栵級锛岀敓鎴愮殑excel鍚嶅瓧
+        DownExcel.download(response, DamageReportDTO.class, reportService.exportDamageReportSv(dates), "DamageReport");
+    }
+
+    @ApiOperation("璁㈠崟璁″垝鍒嗚В鎶ヨ〃瀵煎嚭")
+    @PostMapping("/exportOrderPlanDecomposition")
+    public void exportOrderPlanDecomposition(HttpServletResponse response, @RequestBody List<LocalDate> dates) throws IOException, IllegalAccessException, InstantiationException {
+        //鍙傛暟锛氱浉搴旂殑鏁版嵁锛屽疄浣撶被淇℃伅锛岀浉搴旂殑鏂规硶锛堟暟鎹幏鍙栵級锛岀敓鎴愮殑excel鍚嶅瓧
+        DownExcel.download(response, OrderPlanDecompositionDTO.class, reportService.exportOrderPlanDecompositionSv(dates), "OrderPlanDecomposition");
+    }
+
+    @ApiOperation("宸ュ簭寰呭畬鎴愭姤琛ㄥ鍑�")
+    @PostMapping("/exportProcessToBeCompleted")
+    public void exportProcessToBeCompleted(HttpServletResponse response,
+                                          @RequestBody Map<String,Object> dates)
+            throws IOException, IllegalAccessException, InstantiationException {
+        //鍙傛暟锛氱浉搴旂殑鏁版嵁锛屽疄浣撶被淇℃伅锛岀浉搴旂殑鏂规硶锛堟暟鎹幏鍙栵級锛岀敓鎴愮殑excel鍚嶅瓧
+        DownExcel.download(response, ProcessToBeCompletedDTO.class, reportService.exportProcessToBeCompletedSv(dates), "ProcessToBeCompleted");
+    }
+
+    @ApiOperation("鍦ㄥ埗鍝佹姤琛ㄥ鍑�")
+    @PostMapping("/exportWorkInProgress")
+    public void exportWorkInProgress(HttpServletResponse response,
+                                           @RequestBody Map<String,Object> dates)
+            throws IOException, IllegalAccessException, InstantiationException {
+        //鍙傛暟锛氱浉搴旂殑鏁版嵁锛屽疄浣撶被淇℃伅锛岀浉搴旂殑鏂规硶锛堟暟鎹幏鍙栵級锛岀敓鎴愮殑excel鍚嶅瓧
+        DownExcel.download(response, WorkInProgressDTO.class, reportService.exportWorkInProgressSv(dates), "WorkInProgress");
     }
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/dto/pp/CrossProcessBreakingDTO.java b/north-glass-erp/src/main/java/com/example/erp/dto/pp/CrossProcessBreakingDTO.java
index 1960a53..9fc64ce 100644
--- a/north-glass-erp/src/main/java/com/example/erp/dto/pp/CrossProcessBreakingDTO.java
+++ b/north-glass-erp/src/main/java/com/example/erp/dto/pp/CrossProcessBreakingDTO.java
@@ -1,4 +1,36 @@
 package com.example.erp.dto.pp;
 
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * @author SNG-016
+ */
+@Data
 public class CrossProcessBreakingDTO {
+    @ExcelProperty("鎶ュ伐鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime reportingWorkTime;
+    @ExcelProperty("璐d换宸ュ簭")
+    private String responsibleProcess;
+    @ExcelProperty("璐d换鐝粍")
+    private String responsibleTeam;
+    @ExcelProperty("娆$牬绫诲瀷")
+    private String breakageType;
+    @ExcelProperty("娆$牬鍘熷洜")
+    private String breakageReason;
+    @ExcelProperty("娆$牬鏁伴噺")
+    private Integer breakageQuantity;
+    @ExcelProperty("娆$牬闈㈢Н")
+    private Double area;
+    @ExcelProperty("椤圭洰鍚嶇О")
+    private String project;
+    @ExcelProperty("閿�鍞崟鍙�")
+    private String orderId;
+    @ExcelProperty("鍗曠墖鍚嶇О")
+    private String glassChild;
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/dto/pp/DamageReportDTO.java b/north-glass-erp/src/main/java/com/example/erp/dto/pp/DamageReportDTO.java
new file mode 100644
index 0000000..6195f1e
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/dto/pp/DamageReportDTO.java
@@ -0,0 +1,44 @@
+package com.example.erp.dto.pp;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+public class DamageReportDTO {
+    @ExcelProperty("閿�鍞崟鍙�")
+    private String orderId;
+    @ExcelProperty("椤圭洰鍚嶇О")
+    private String project;
+    @ExcelProperty("娴佺▼鍗″彿")
+    private String processId;
+    @ExcelProperty("璁㈠崟搴忓彿")
+    private String orderNumber;
+    @ExcelProperty("灏忕墖椤哄簭")
+    private String technologyNumber;
+    @ExcelProperty("鎶ュ伐鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime reportingWorkTime;
+    @ExcelProperty("璐d换宸ュ簭")
+    private String responsibleProcess;
+    @ExcelProperty("璐d换鐝粍")
+    private String responsibleTeam;
+    @ExcelProperty("璐d换璁惧")
+    private String responsibleEquipment;
+    @ExcelProperty("娆$牬绫诲瀷")
+    private String breakageType;
+    @ExcelProperty("娆$牬鍘熷洜")
+    private String breakageReason;
+    @ExcelProperty("娆$牬鏁伴噺")
+    private Integer breakageQuantity;
+    @ExcelProperty("娆$牬闈㈢Н")
+    private Double area;
+    @ExcelProperty("璐d换浜哄憳")
+    private String personnel;
+    @ExcelProperty("鍗曠墖鍚嶇О")
+    private String glassChild;
+
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/dto/pp/OrderPlanDecompositionDTO.java b/north-glass-erp/src/main/java/com/example/erp/dto/pp/OrderPlanDecompositionDTO.java
new file mode 100644
index 0000000..25f313e
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/dto/pp/OrderPlanDecompositionDTO.java
@@ -0,0 +1,38 @@
+package com.example.erp.dto.pp;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+@Data
+public class OrderPlanDecompositionDTO {
+    @ExcelProperty("閿�鍞崟鍙�")
+    private String orderId;
+    @ExcelProperty("瀹㈡埛鍚嶇О")
+    private String customerName;
+    @ExcelProperty("椤圭洰鍚嶇О")
+    private String project;
+    @ExcelProperty("鎵规")
+    private String batch;
+    @ExcelProperty("璁㈠崟鏁伴噺")
+    private Integer quantity;
+    @ExcelProperty("璁㈠崟闈㈢Н")
+    private Double area;
+    @ExcelProperty("鍒嗘灦鏃堕棿")
+    private LocalDate createTime;
+    @ExcelProperty("鍒囧壊寮�濮嬫椂闂�")
+    private LocalDate startTime;
+    @ExcelProperty("瀹屽伐鏁伴噺")
+    private Integer completionsNum;
+    @ExcelProperty("鍏ュ簱鏁伴噺")
+    private Integer receivedQuantity;
+    @ExcelProperty("鏈叆搴撴暟閲�")
+    private Integer receivedNo;
+    @ExcelProperty("鏄惁娓呭崟")
+    private Integer accomplish;
+    @ExcelProperty("鐢熶骇澶╂暟")
+    private Integer daysDifference;
+
+
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/dto/pp/ProcessCardProgressDTO.java b/north-glass-erp/src/main/java/com/example/erp/dto/pp/ProcessCardProgressDTO.java
new file mode 100644
index 0000000..ad784b5
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/dto/pp/ProcessCardProgressDTO.java
@@ -0,0 +1,24 @@
+package com.example.erp.dto.pp;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class ProcessCardProgressDTO {
+    @ExcelProperty("浜у搧鍚嶇О")
+    private String productName;
+    @ExcelProperty("鍗曠墖鍚嶇О")
+    private String glassChild;
+    @ExcelProperty("璁㈠崟绫诲瀷")
+    private String orderType;
+    @ExcelProperty("娴佺▼鍗″彿")
+    private String processId;
+    @ExcelProperty("灏忕墖椤哄簭")
+    private String technologyNumber;
+    @ExcelProperty("鏁伴噺")
+    private Integer quantity;
+    @ExcelProperty("娆$牬鏁伴噺")
+    private Integer brokenNum;
+    @ExcelProperty("鍏ュ簱闈㈢Н")
+    private Double inventoryArea;
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/dto/pp/ProcessToBeCompletedDTO.java b/north-glass-erp/src/main/java/com/example/erp/dto/pp/ProcessToBeCompletedDTO.java
new file mode 100644
index 0000000..4602cfe
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/dto/pp/ProcessToBeCompletedDTO.java
@@ -0,0 +1,50 @@
+package com.example.erp.dto.pp;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+@Data
+public class ProcessToBeCompletedDTO {
+    @ExcelProperty("涓嬪崟鏃堕棿")
+    private LocalDate createTime;
+    @ExcelProperty("浜よ揣鏃ユ湡")
+    private LocalDate deliveryDate;
+    @ExcelProperty("閿�鍞崟鍙�")
+    private String orderId;
+    @ExcelProperty("娴佺▼鍗″彿")
+    private String processId;
+    @ExcelProperty("瀹㈡埛鍚嶇О")
+    private String customerName;
+    @ExcelProperty("椤圭洰鍚嶇О")
+    private String project;
+    @ExcelProperty("鎵规")
+    private String batch;
+    @ExcelProperty("搴忓彿")
+    private String orderNumber;
+    @ExcelProperty("灏忕墖椤哄簭")
+    private String technologyNumber;
+    @ExcelProperty("鍗曠墖鍚嶇О")
+    private String glassChild;
+    @ExcelProperty("瀹�")
+    private String childWidth;
+    @ExcelProperty("楂�")
+    private String childHeight;
+    @ExcelProperty("璁㈠崟鏁伴噺")
+    private Integer quantity;
+    @ExcelProperty("鍗曠墖闈㈢Н")
+    private Double childArea;
+    @ExcelProperty("瀹為檯闈㈢Н")
+    private Double actualArea;
+    @ExcelProperty("宸插畬鎴愭暟閲�")
+    private Integer completeNum;
+    @ExcelProperty("宸插畬鎴愰潰绉�")
+    private Double completeArea;
+    @ExcelProperty("鏈畬鎴愭暟閲�")
+    private Integer incompleteNum;
+    @ExcelProperty("鏈畬鎴愰潰绉�")
+    private Double incompleteArea;
+    @ExcelProperty("鎴愬搧鍚嶇О")
+    private String productName;
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/dto/pp/ProductionScheduleDTO.java b/north-glass-erp/src/main/java/com/example/erp/dto/pp/ProductionScheduleDTO.java
new file mode 100644
index 0000000..b3d2299
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/dto/pp/ProductionScheduleDTO.java
@@ -0,0 +1,32 @@
+package com.example.erp.dto.pp;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class ProductionScheduleDTO {
+    @ExcelProperty("璁㈠崟搴忓彿")
+    private String orderNumber;
+    @ExcelProperty("褰㈢姸")
+    private String shape;
+    @ExcelProperty("浜у搧鍚嶇О")
+    private String productName;
+    @ExcelProperty("瀹�")
+    private String childWidth;
+    @ExcelProperty("楂�")
+    private String childHeight;
+    @ExcelProperty("鏁伴噺")
+    private Integer quantity;
+    @ExcelProperty("灏忕墖椤哄簭")
+    private String technologyNumber;
+    @ExcelProperty("鍗曠墖鍚嶇О")
+    private String glassChild;
+    @ExcelProperty("鍏ュ簱鏁伴噺")
+    private Integer inventoryNum;
+    @ExcelProperty("鍏ュ簱闈㈢Н")
+    private Double inventoryArea;
+    @ExcelProperty("鍙戣揣鏁伴噺")
+    private Integer shippedQuantity;
+    @ExcelProperty("鍙戣揣闈㈢Н")
+    private Double area;
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/dto/pp/QualityReportDTO.java b/north-glass-erp/src/main/java/com/example/erp/dto/pp/QualityReportDTO.java
new file mode 100644
index 0000000..6511b9e
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/dto/pp/QualityReportDTO.java
@@ -0,0 +1,32 @@
+package com.example.erp.dto.pp;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class QualityReportDTO {
+    @ExcelProperty("閿�鍞崟鍙�")
+    private String orderId;
+    @ExcelProperty("瀹㈡埛鍚嶇О")
+    private String customerName;
+    @ExcelProperty("椤圭洰鍚嶇О")
+    private String project;
+    @ExcelProperty("璁㈠崟搴忓彿")
+    private String orderNumber;
+    @ExcelProperty("灏忕墖椤哄簭")
+    private String technologyNumber;
+    @ExcelProperty("浜у搧鍚嶇О")
+    private String productName;
+    @ExcelProperty("璁㈠崟鏁伴噺")
+    private Integer quantity;
+    @ExcelProperty("鎶曞叆鏁伴噺")
+    private Integer quantityMax;
+    @ExcelProperty("娆$牬鏁伴噺")
+    private Integer breakageQuantity;
+    @ExcelProperty("琛ョ墖鏁伴噺")
+    private Integer patchNum;
+    @ExcelProperty("鍏ュ簱鏁伴噺")
+    private Integer receivedQuantity;
+    @ExcelProperty("鎴愬搧鐜�")
+    private String finished;
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/dto/pp/RawMaterialRequisitionDTO.java b/north-glass-erp/src/main/java/com/example/erp/dto/pp/RawMaterialRequisitionDTO.java
new file mode 100644
index 0000000..18a71ea
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/dto/pp/RawMaterialRequisitionDTO.java
@@ -0,0 +1,28 @@
+package com.example.erp.dto.pp;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+@Data
+public class RawMaterialRequisitionDTO {
+    @ExcelProperty("宸ョ▼缂栧彿")
+    private String projectNo;
+    @ExcelProperty("鐗╂枡鍚嶇О")
+    private String materialName;
+    @ExcelProperty("鍘熺墖浜у湴")
+    private String producer;
+    @ExcelProperty("瀹�")
+    private String width;
+    @ExcelProperty("楂�")
+    private String height;
+    @ExcelProperty("宸查鏁伴噺")
+    private Integer quantity;
+    @ExcelProperty("宸查闈㈢Н")
+    private Double area;
+    @ExcelProperty("鍘熺墖鐢熶骇鏃ユ湡")
+    private LocalDate dateOfManufacture;
+    @ExcelProperty("棰嗗嚭鏃ユ湡")
+    private LocalDate date;
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/dto/pp/SplittingDetailsOutsideDTO.java b/north-glass-erp/src/main/java/com/example/erp/dto/pp/SplittingDetailsOutsideDTO.java
new file mode 100644
index 0000000..540e68d
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/dto/pp/SplittingDetailsOutsideDTO.java
@@ -0,0 +1,30 @@
+package com.example.erp.dto.pp;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class SplittingDetailsOutsideDTO {
+    @ExcelProperty("娴佺▼鍗″彿")
+    private String processId;
+    @ExcelProperty("璁㈠崟搴忓彿")
+    private String orderNumber;
+    @ExcelProperty("灏忕墖椤哄簭")
+    private String technologyNumber;
+    @ExcelProperty("椤圭洰鍚嶇О")
+    private String project;
+    @ExcelProperty("鎵规")
+    private String batch;
+    @ExcelProperty("瀹�")
+    private String childWidth;
+    @ExcelProperty("楂�")
+    private String childHeight;
+    @ExcelProperty("璁㈠崟鏁�")
+    private Integer quantity;
+    @ExcelProperty("闈㈢Н")
+    private Double area;
+    @ExcelProperty("褰㈢姸")
+    private String shape;
+    @ExcelProperty("澶囨敞")
+    private String remarks;
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/dto/pp/TaskCompletionStatusDTO.java b/north-glass-erp/src/main/java/com/example/erp/dto/pp/TaskCompletionStatusDTO.java
new file mode 100644
index 0000000..acfb121
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/dto/pp/TaskCompletionStatusDTO.java
@@ -0,0 +1,24 @@
+package com.example.erp.dto.pp;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class TaskCompletionStatusDTO {
+    @ExcelProperty("瀹㈡埛鍚嶇О")
+    private String customerName;
+    @ExcelProperty("椤圭洰鍚嶇О")
+    private String project;
+    @ExcelProperty("鎵规")
+    private String batch;
+    @ExcelProperty("閿�鍞崟鍙�")
+    private String orderId;
+    @ExcelProperty("璁㈠崟鏁伴噺")
+    private String quantity;
+    @ExcelProperty("璁㈠崟闈㈢Н")
+    private String area;
+    @ExcelProperty("鍙戣揣鏁伴噺")
+    private String shippedQuantity;
+    @ExcelProperty("鍙戣揣闈㈢Н")
+    private String shippedArea;
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/dto/pp/WorkInProgressDTO.java b/north-glass-erp/src/main/java/com/example/erp/dto/pp/WorkInProgressDTO.java
new file mode 100644
index 0000000..e8b1411
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/dto/pp/WorkInProgressDTO.java
@@ -0,0 +1,40 @@
+package com.example.erp.dto.pp;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class WorkInProgressDTO {
+    @ExcelProperty("宸ュ簭")
+    private String thisProcess;
+    @ExcelProperty("娴佺▼鍗″彿")
+    private String processId;
+    @ExcelProperty("瀹㈡埛鍚嶇О")
+    private String customerName;
+    @ExcelProperty("椤圭洰鍚嶇О")
+    private String project;
+    @ExcelProperty("鎵规")
+    private String batch;
+    @ExcelProperty("搴忓彿")
+    private String orderNumber;
+    @ExcelProperty("灏忕墖椤哄簭")
+    private String technologyNumber;
+    @ExcelProperty("褰㈢姸")
+    private String shape;
+    @ExcelProperty("宸ヨ壓娴佺▼")
+    private String process;
+    @ExcelProperty("璁㈠崟鏁�")
+    private Integer quantity;
+    @ExcelProperty("瀹�")
+    private String childWidth;
+    @ExcelProperty("楂�")
+    private String childHeight;
+    @ExcelProperty("搴撳瓨鏁�")
+    private Integer stockNum;
+    @ExcelProperty("搴撳瓨闈㈢Н")
+    private Double stockArea;
+    @ExcelProperty("鎴愬搧鍚嶇О")
+    private String productName;
+    @ExcelProperty("寮挗鍗婂緞")
+    private String bendRadius;
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/dto/pp/YieldDTO.java b/north-glass-erp/src/main/java/com/example/erp/dto/pp/YieldDTO.java
new file mode 100644
index 0000000..957a78e
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/dto/pp/YieldDTO.java
@@ -0,0 +1,26 @@
+package com.example.erp.dto.pp;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class YieldDTO {
+    @ExcelProperty("宸ュ簭")
+    private String process;
+    @ExcelProperty("閿�鍞崟鍙�")
+    private String orderId;
+    @ExcelProperty("瀹㈡埛鍚嶇О")
+    private String customerName;
+    @ExcelProperty("椤圭洰鍚嶇О")
+    private String project;
+    @ExcelProperty("浜у搧鍚嶇О")
+    private String productName;
+    @ExcelProperty("瀹屽伐闈㈢Н")
+    private String finishedArea;
+    @ExcelProperty("娆$牬闈㈢Н")
+    private String brokenArea;
+    @ExcelProperty("鎬婚潰绉�")
+    private String area;
+    @ExcelProperty("鎴愬搧鐜�")
+    private String finished;
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportMapper.java
index cce4b65..97b7d75 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportMapper.java
@@ -1,9 +1,9 @@
 package com.example.erp.mapper.pp;
 
 
+import com.example.erp.dto.pp.*;
 import com.example.erp.entity.pp.DamageDetails;
 import com.example.erp.entity.pp.Report;
-import com.example.erp.entity.sd.Order;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -29,7 +29,7 @@
     List<Map<String, String>> processToBeCompletedMp(Date selectTime1, Date selectTime2, String orderId,
                                                      String inputProject, String selectProcesses, Report report);
 
-    List<Map<String, String>> selectDamageReportMp(Date selectTime1, Date selectTime2, Report report);
+    List<DamageReportDTO> selectDamageReportMp(Integer offset, Integer pageSize, Date selectTime1, Date selectTime2, DamageReportDTO damageReportDTO);
 
     List<Map<String, String>> splittingDetailsOutsideMp(String orderId, Report report);
 
@@ -45,7 +45,18 @@
 
     List<Map<String, String>> rawMaterialRequisitionMp(Date selectTime1, Date selectTime2, Report report);
 
-    List<DamageDetails> exportCrossProcessBreakingMp(List<LocalDate> dates);
+    List<CrossProcessBreakingDTO> exportCrossProcessBreakingMp(List<LocalDate> dates);
+
+    Map<String, Integer> getDamageReportPageTotal(Integer offset, Integer pageSize, Date selectTime1, Date selectTime2, DamageReportDTO damageReportDTO);
+
+    List<DamageReportDTO> exportDamageReportMp(List<LocalDate> dates);
+
+    List<OrderPlanDecompositionDTO> exportOrderPlanDecompositionMp(List<LocalDate> dates);
+
+    List<ProcessToBeCompletedDTO> exportProcessToBeCompletedMp(List<LocalDate> date, String process, String inputVal, String project);
+
+    List<WorkInProgressDTO> exportWorkInProgressMp(List<LocalDate> date, String process, String inputVal, String project);
+
 
 //    Map<String, Integer> getWorkInProgressTotal(
 //                                                @Param("selectTime1") Date selectTime1, @Param("selectTime2") Date selectTime2,
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkMapper.java
index 783f769..ead1e03 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkMapper.java
@@ -75,4 +75,6 @@
     Boolean updateQualityStatusMp(String reportingWorkId,String username);
 
     List<Map<String,String>> detailsQualityMp(String reportingWorkId, ReportingWork reportingWork);
+
+    String selectLayerByReportingWorkId(String reportingWorkId);
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java
index 6f3977a..c94f2a1 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java
@@ -52,7 +52,8 @@
 
     Integer getSelectShippingOrderDetailsPageTotal(Integer offset, Integer pageSize,OrderDetail orderDetail);
 
-    Boolean insertDeliveryDetail(@Param("orderDetail") OrderDetail orderDetail, @Param("number") String number,@Param("deliveryNumber") Integer deliveryNumber);
+    Boolean insertDeliveryDetail(@Param("orderDetail") OrderDetail orderDetail, @Param("number") String number
+            ,@Param("deliveryNumber") Integer deliveryNumber,@Param("deliveryDetailMoney") Double deliveryDetailMoney);
 
     Integer getdeliveryDetailmaximum(@Param("deliveryId") String deliveryId);
 
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java
index 55e7edd..454bc48 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java
@@ -3,6 +3,7 @@
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 
+import com.example.erp.dto.pp.DamageReportDTO;
 import com.example.erp.entity.pp.DamageDetails;
 import com.example.erp.entity.pp.Report;
 import com.example.erp.mapper.pp.ProductionSchedulingMapper;
@@ -23,7 +24,7 @@
     private final ProductionSchedulingMapper productionSchedulingMapper;
 
 
-    public ReportService(ReportMapper reportMapper, OrderProcessDetailMapper orderProcessDetailMapper,ProductionSchedulingMapper productionSchedulingMapper) {
+    public ReportService(ReportMapper reportMapper, OrderProcessDetailMapper orderProcessDetailMapper, ProductionSchedulingMapper productionSchedulingMapper) {
         this.reportMapper = reportMapper;
         this.orderProcessDetailMapper = orderProcessDetailMapper;
         this.productionSchedulingMapper = productionSchedulingMapper;
@@ -36,24 +37,24 @@
         map.put("data", reportMapper.processCardProgressMp(orderId));
 
         //鑾峰彇琛ㄥご宸ュ簭绛涢�夋暟鎹�
-        List<Map<String,String>> processFilterList = orderProcessDetailMapper.filterOrderProcess(orderId);
-        List<Map<String,String>> processList = processFilterList;
+        List<Map<String, String>> processFilterList = orderProcessDetailMapper.filterOrderProcess(orderId);
+        List<Map<String, String>> processList = processFilterList;
 
         List<String> filterList = new ArrayList<>();
         //寰幆閬嶅巻鏁扮粍锛屽垽鏂搴忓彿褰撳墠鐨勫伐搴�
         for (int i = 1; i < processFilterList.size(); i++) {
             filterList.add(processFilterList.get(i).get("process"));
-            List<Map<String,String>> lastProcessList =
+            List<Map<String, String>> lastProcessList =
                     orderProcessDetailMapper.filterLastProcess(
                             orderId,
                             String.valueOf(processFilterList.get(i).get("order_number")),
                             String.valueOf(processFilterList.get(i).get("technology_number")),
                             String.valueOf(processFilterList.get(i).get("id"))
-                            );
-            if(!lastProcessList.isEmpty()){
+                    );
+            if (!lastProcessList.isEmpty()) {
                 int finalI = i;
                 lastProcessList.forEach(lastProcess -> {
-                    if(filterList.contains(lastProcess.get("process"))){
+                    if (filterList.contains(lastProcess.get("process"))) {
                         processList.add(lastProcess);
                     }
                 });
@@ -76,55 +77,53 @@
                 seenValues.add(value);
             }
         }
-        map.put("title", uniqueList );
+        map.put("title", uniqueList);
 
 
-
-
-        List<Map<String,Integer>> getRowCount =  orderProcessDetailMapper.getGlassLRow(orderId);
-        List<Map<String,Integer>> rowCount = new ArrayList<>();
-        columns.forEach(col ->{
-            getRowCount.forEach(row ->{
-                Map<String,Integer>  getRow = new HashMap<>();
+        List<Map<String, Integer>> getRowCount = orderProcessDetailMapper.getGlassLRow(orderId);
+        List<Map<String, Integer>> rowCount = new ArrayList<>();
+        columns.forEach(col -> {
+            getRowCount.forEach(row -> {
+                Map<String, Integer> getRow = new HashMap<>();
                 // { row: 0, col: 1, rowspan: 3, colspan: 0},
-                getRow.put("row",row.get("RowNum"));
-                getRow.put("col",col);
-                getRow.put("rowspan",row.get("rowCount"));
-                getRow.put("colspan",0);
+                getRow.put("row", row.get("RowNum"));
+                getRow.put("col", col);
+                getRow.put("rowspan", row.get("rowCount"));
+                getRow.put("colspan", 0);
                 rowCount.add(getRow);
             });
         });
 
 
-        map.put("mergeCells",rowCount);
+        map.put("mergeCells", rowCount);
 
         return map;
     }
 
-    public Map<String,Object> crossProcessBreakingSv(Integer pageNum, Integer pageSize, List<String> selectDate, DamageDetails damageDetails) {
-        Integer offset = (pageNum-1)*pageSize;
+    public Map<String, Object> crossProcessBreakingSv(Integer pageNum, Integer pageSize, List<String> selectDate, DamageDetails damageDetails) {
+        Integer offset = (pageNum - 1) * pageSize;
         String endDate = LocalDate.now().toString();
         String startDate = LocalDate.now().minusDays(15).toString();
-        if(selectDate !=null && selectDate.size()==2){
-            if(!selectDate.get(0).isEmpty()){
+        if (selectDate != null && selectDate.size() == 2) {
+            if (!selectDate.get(0).isEmpty()) {
                 startDate = selectDate.get(0);
             }
-            if(!selectDate.get(1).isEmpty()){
+            if (!selectDate.get(1).isEmpty()) {
                 endDate = selectDate.get(1);
             }
         }
-        Map<String,Object> map = new HashMap<>();
-        map.put("data",reportMapper.getProcessBreaking(offset, pageSize, startDate, endDate, damageDetails));
-        map.put("total",reportMapper.getProcessBreakingTotal(offset, pageSize, startDate, endDate, damageDetails));
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", reportMapper.getProcessBreaking(offset, pageSize, startDate, endDate, damageDetails));
+        map.put("total", reportMapper.getProcessBreakingTotal(offset, pageSize, startDate, endDate, damageDetails));
         List<String> list = new ArrayList<>();
         list.add(startDate);
         list.add(endDate);
-        map.put("selectDate",list);
+        map.put("selectDate", list);
 //        map.put("total",orderMapper.getPageTotal(offset, pageSize, startDate, endDate, orderDetail));
         return map;
     }
 
-    public Map<String,Object> workInProgressSv(Date selectTime1, Date selectTime2, String orderId, String inputProject, String selectProcesses, Report report) {
+    public Map<String, Object> workInProgressSv(Date selectTime1, Date selectTime2, String orderId, String inputProject, String selectProcesses, Report report) {
 
         if ("null".equals(orderId)) {
             orderId = "";
@@ -132,46 +131,48 @@
         if ("null".equals(inputProject)) {
             inputProject = "";
         }
-        Map<String,Object> map = new HashMap<>();
-        map.put("data",reportMapper.workInProgressMp( selectTime1, selectTime2,orderId,inputProject,selectProcesses,report));
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", reportMapper.workInProgressMp(selectTime1, selectTime2, orderId, inputProject, selectProcesses, report));
         map.put("process", productionSchedulingMapper.selectProcess());
         return map;
     }
 
-    public Map<String,Object> selectProcessToBeCompletedSv(Date selectTime1, Date selectTime2, String orderId, String inputProject, String selectProcesses, Report report) {
+    public Map<String, Object> selectProcessToBeCompletedSv(Date selectTime1, Date selectTime2, String orderId, String inputProject, String selectProcesses, Report report) {
         if ("null".equals(orderId)) {
             orderId = "";
         }
         if ("null".equals(inputProject)) {
             inputProject = "";
         }
-        Map<String,Object> map = new HashMap<>();
-        map.put("data",reportMapper.processToBeCompletedMp( selectTime1, selectTime2,orderId,inputProject,selectProcesses,report));
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", reportMapper.processToBeCompletedMp(selectTime1, selectTime2, orderId, inputProject, selectProcesses, report));
         map.put("process", productionSchedulingMapper.selectProcess());
         return map;
     }
 
-    public Map<String,Object> selectDamageReportSv(Date selectTime1, Date selectTime2, Report report) {
-        Map<String,Object> map = new HashMap<>();
-        map.put("data",reportMapper.selectDamageReportMp( selectTime1, selectTime2,report));
+    public Map<String, Object> selectDamageReportSv(Integer pageNum, Integer pageSize, Date selectTime1, Date selectTime2, DamageReportDTO damageReportDTO) {
+        Integer offset = (pageNum - 1) * pageSize;
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", reportMapper.selectDamageReportMp(offset, pageSize, selectTime1, selectTime2, damageReportDTO));
+        map.put("total", reportMapper.getDamageReportPageTotal(offset, pageSize, selectTime1, selectTime2, damageReportDTO));
         return map;
     }
 
-    public Map<String,Object> splittingDetailsOutsideSv(String orderId, Report report) {
-        Map<String,Object> map = new HashMap<>();
-        map.put("data",reportMapper.splittingDetailsOutsideMp( orderId,report));
+    public Map<String, Object> splittingDetailsOutsideSv(String orderId, Report report) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", reportMapper.splittingDetailsOutsideMp(orderId, report));
         return map;
     }
 
-    public Map<String,Object> qualityReportSv(Date selectTime1, Date selectTime2, Report report) {
-        Map<String,Object> map = new HashMap<>();
-        map.put("data",reportMapper.qualityReportMp( selectTime1,selectTime2,report));
+    public Map<String, Object> qualityReportSv(Date selectTime1, Date selectTime2, Report report) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", reportMapper.qualityReportMp(selectTime1, selectTime2, report));
         return map;
     }
 
-    public Map<String,Object> yieldSv(Date selectTime1, Date selectTime2, String selectProcesses, Report report) {
-        Map<String,Object> map = new HashMap<>();
-        map.put("data",reportMapper.yieldMp( selectTime1,selectTime2,selectProcesses,report));
+    public Map<String, Object> yieldSv(Date selectTime1, Date selectTime2, String selectProcesses, Report report) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", reportMapper.yieldMp(selectTime1, selectTime2, selectProcesses, report));
         map.put("process", productionSchedulingMapper.selectProcess());
         return map;
     }
@@ -182,24 +183,24 @@
         map.put("data", reportMapper.productionScheduleMp(orderId));
 
         //鑾峰彇琛ㄥご宸ュ簭绛涢�夋暟鎹�
-        List<Map<String,String>> processFilterList = orderProcessDetailMapper.filterOrderProcess(orderId);
-        List<Map<String,String>> processList = processFilterList;
+        List<Map<String, String>> processFilterList = orderProcessDetailMapper.filterOrderProcess(orderId);
+        List<Map<String, String>> processList = processFilterList;
 
         List<String> filterList = new ArrayList<>();
         //寰幆閬嶅巻鏁扮粍锛屽垽鏂搴忓彿褰撳墠鐨勫伐搴�
         for (int i = 1; i < processFilterList.size(); i++) {
             filterList.add(processFilterList.get(i).get("process"));
-            List<Map<String,String>> lastProcessList =
+            List<Map<String, String>> lastProcessList =
                     orderProcessDetailMapper.filterLastProcess(
                             orderId,
                             String.valueOf(processFilterList.get(i).get("order_number")),
                             String.valueOf(processFilterList.get(i).get("technology_number")),
                             String.valueOf(processFilterList.get(i).get("id"))
                     );
-            if(!lastProcessList.isEmpty()){
+            if (!lastProcessList.isEmpty()) {
                 int finalI = i;
                 lastProcessList.forEach(lastProcess -> {
-                    if(filterList.contains(lastProcess.get("process"))){
+                    if (filterList.contains(lastProcess.get("process"))) {
                         processList.add(lastProcess);
                     }
                 });
@@ -222,27 +223,25 @@
                 seenValues.add(value);
             }
         }
-        map.put("title", uniqueList );
+        map.put("title", uniqueList);
 
 
-
-
-        List<Map<String,Integer>> getRowCount =  orderProcessDetailMapper.getGlassLRow(orderId);
-        List<Map<String,Integer>> rowCount = new ArrayList<>();
-        columns.forEach(col ->{
-            getRowCount.forEach(row ->{
-                Map<String,Integer>  getRow = new HashMap<>();
+        List<Map<String, Integer>> getRowCount = orderProcessDetailMapper.getGlassLRow(orderId);
+        List<Map<String, Integer>> rowCount = new ArrayList<>();
+        columns.forEach(col -> {
+            getRowCount.forEach(row -> {
+                Map<String, Integer> getRow = new HashMap<>();
                 // { row: 0, col: 1, rowspan: 3, colspan: 0},
-                getRow.put("row",row.get("RowNum"));
-                getRow.put("col",col);
-                getRow.put("rowspan",row.get("rowCount"));
-                getRow.put("colspan",0);
+                getRow.put("row", row.get("RowNum"));
+                getRow.put("col", col);
+                getRow.put("rowspan", row.get("rowCount"));
+                getRow.put("colspan", 0);
                 rowCount.add(getRow);
             });
         });
 
 
-        map.put("mergeCells",rowCount);
+        map.put("mergeCells", rowCount);
 
         return map;
     }
@@ -250,27 +249,27 @@
     public Map<String, Object> taskCompletionStatusSv(Date selectTime1, Date selectTime2, List<Integer> columns) {
         Map<String, Object> map = new HashMap<>();
         //鑾峰彇琛ㄦ牸鍐呭鏁版嵁
-        map.put("data", reportMapper.taskCompletionStatusMp(selectTime1,selectTime2));
+        map.put("data", reportMapper.taskCompletionStatusMp(selectTime1, selectTime2));
 
         //鑾峰彇琛ㄥご宸ュ簭绛涢�夋暟鎹�
-        List<Map<String,String>> processFilterList = orderProcessDetailMapper.filterOrderProcessCollect(selectTime1,selectTime2);
-        List<Map<String,String>> processList = processFilterList;
+        List<Map<String, String>> processFilterList = orderProcessDetailMapper.filterOrderProcessCollect(selectTime1, selectTime2);
+        List<Map<String, String>> processList = processFilterList;
 
         List<String> filterList = new ArrayList<>();
         //寰幆閬嶅巻鏁扮粍锛屽垽鏂搴忓彿褰撳墠鐨勫伐搴�
         for (int i = 1; i < processFilterList.size(); i++) {
             filterList.add(processFilterList.get(i).get("process"));
-            List<Map<String,String>> lastProcessList =
+            List<Map<String, String>> lastProcessList =
                     orderProcessDetailMapper.filterLastProcess(
                             String.valueOf(processFilterList.get(i).get("order_id")),
                             String.valueOf(processFilterList.get(i).get("order_number")),
                             String.valueOf(processFilterList.get(i).get("technology_number")),
                             String.valueOf(processFilterList.get(i).get("id"))
                     );
-            if(!lastProcessList.isEmpty()){
+            if (!lastProcessList.isEmpty()) {
                 int finalI = i;
                 lastProcessList.forEach(lastProcess -> {
-                    if(filterList.contains(lastProcess.get("process"))){
+                    if (filterList.contains(lastProcess.get("process"))) {
                         processList.add(lastProcess);
                     }
                 });
@@ -293,44 +292,79 @@
                 seenValues.add(value);
             }
         }
-        map.put("title", uniqueList );
+        map.put("title", uniqueList);
 
 
-
-
-        List<Map<String,Integer>> getRowCount =  orderProcessDetailMapper.getGlassLRowCollect(selectTime1,selectTime2);
-        List<Map<String,Integer>> rowCount = new ArrayList<>();
-        columns.forEach(col ->{
-            getRowCount.forEach(row ->{
-                Map<String,Integer>  getRow = new HashMap<>();
+        List<Map<String, Integer>> getRowCount = orderProcessDetailMapper.getGlassLRowCollect(selectTime1, selectTime2);
+        List<Map<String, Integer>> rowCount = new ArrayList<>();
+        columns.forEach(col -> {
+            getRowCount.forEach(row -> {
+                Map<String, Integer> getRow = new HashMap<>();
                 // { row: 0, col: 1, rowspan: 3, colspan: 0},
-                getRow.put("row",row.get("RowNum"));
-                getRow.put("col",col);
-                getRow.put("rowspan",row.get("rowCount"));
-                getRow.put("colspan",0);
+                getRow.put("row", row.get("RowNum"));
+                getRow.put("col", col);
+                getRow.put("rowspan", row.get("rowCount"));
+                getRow.put("colspan", 0);
                 rowCount.add(getRow);
             });
         });
 
 
-        map.put("mergeCells",rowCount);
+        map.put("mergeCells", rowCount);
 
         return map;
     }
 
-    public Map<String,Object> orderPlanDecompositionSv(Date selectTime1, Date selectTime2,Report report) {
-        Map<String,Object> map = new HashMap<>();
-        map.put("data",reportMapper.orderPlanDecompositionMp( selectTime1,selectTime2,report));
+    public Map<String, Object> orderPlanDecompositionSv(Date selectTime1, Date selectTime2, Report report) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", reportMapper.orderPlanDecompositionMp(selectTime1, selectTime2, report));
         return map;
     }
 
-    public Map<String,Object> rawMaterialRequisitionSv(Date selectTime1, Date selectTime2, Report report) {
-        Map<String,Object> map = new HashMap<>();
-        map.put("data",reportMapper.rawMaterialRequisitionMp( selectTime1,selectTime2,report));
+    public Map<String, Object> rawMaterialRequisitionSv(Date selectTime1, Date selectTime2, Report report) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", reportMapper.rawMaterialRequisitionMp(selectTime1, selectTime2, report));
         return map;
     }
 
     public List exportCrossProcessBreakingSv(List<LocalDate> dates) {
         return reportMapper.exportCrossProcessBreakingMp(dates);
     }
+
+    public List exportDamageReportSv(List<LocalDate> dates) {
+
+        return reportMapper.exportDamageReportMp(dates);
+    }
+
+    public List exportOrderPlanDecompositionSv(List<LocalDate> dates) {
+        return reportMapper.exportOrderPlanDecompositionMp(dates);
+    }
+
+    public List exportProcessToBeCompletedSv(Map<String, Object> dates) {
+        List<LocalDate> date= (List<LocalDate>) dates.get("date");
+        String process= (String) dates.get("processes");
+        String inputVal= (String) dates.get("inputVal");
+        String project= (String) dates.get("project");
+        if ("null".equals(inputVal)) {
+            inputVal = "";
+        }
+        if ("null".equals(project)) {
+            project = "";
+        }
+        return reportMapper.exportProcessToBeCompletedMp(date,process,inputVal,project);
+    }
+
+    public List exportWorkInProgressSv(Map<String, Object> dates) {
+        List<LocalDate> date= (List<LocalDate>) dates.get("date");
+        String process= (String) dates.get("processes");
+        String inputVal= (String) dates.get("inputVal");
+        String project= (String) dates.get("project");
+        if ("null".equals(inputVal)) {
+            inputVal = "";
+        }
+        if ("null".equals(project)) {
+            project = "";
+        }
+        return reportMapper.exportWorkInProgressMp(date,process,inputVal,project);
+    }
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
index 7a351f4..e81a0ae 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
@@ -191,7 +191,7 @@
                     damageDetail.setOrderNumber(reportingWorkDetail.getOrderNumber());
                     damageDetail.setProcessId(reportingWork.getProcessId());
                     damageDetail.setTechnologyNumber(reportingWorkDetail.getTechnologyNumber());
-                    if (damageDetail.getResponsibleProcess() != reportingWork.getThisProcess()) {
+                    if (!damageDetail.getResponsibleProcess().equals(reportingWork.getThisProcess())) {
                         damageDetail.setQualityInsStatus(1);
                     }
                     damageDetailsMapper.insert(damageDetail);
@@ -319,6 +319,8 @@
         map.put("reportingWork", reportingWork);
         map.put("reportingWorkDetails", reportingWorkDetails);
         map.put("basic", getReportingWorkBase(reportingWork.getProcessId(), reportingWork.getThisProcess()));
+        //鏍规嵁鎶ュ伐缂栧彿鑾峰彇灞�
+        map.put("layer", reportingWorkMapper.selectLayerByReportingWorkId(reportingWorkId));
 
 
         return map;
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java b/north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
index 6e1fa78..1933568 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
@@ -221,12 +221,27 @@
             //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
             if (!orderDetaillist.isEmpty()) {
                 for (OrderDetail orderDetail : orderDetaillist) {
+                    //鏍规嵁璁㈠崟璁$畻鏂瑰紡杩涜閲戦璁$畻
+                    double deliveryDetailMoney = 0.0;
+                    if (orderDetail.getOrder().getCalculateType()==1){
+                        deliveryDetailMoney=Double.valueOf(String.format("%.2f",Double.valueOf(String.format("%.2f", (orderDetail.getWidth()*orderDetail.getHeight()/1000000)))
+                                *orderDetail.getDeliveryDetail().getQuantity()*orderDetail.getPrice()));
+                    }else if (orderDetail.getOrder().getCalculateType()==2){
+                        deliveryDetailMoney=Double.valueOf(String.format("%.2f",Double.valueOf(
+                                String.format("%.2f", (orderDetail.getWidth()*orderDetail.getHeight()/1000000)*orderDetail.getDeliveryDetail().getQuantity())
+                                )*orderDetail.getPrice()));
+                    }else if (orderDetail.getOrder().getCalculateType()==3){
+                        deliveryDetailMoney=Double.valueOf(String.format("%.2f",orderDetail.getPrice() * orderDetail.getDeliveryDetail().getQuantity()));
 
+                    }
+
+                    //瀵瑰惊鐜槑缁嗙殑鏁版嵁杩涜绱姞
                     quantity += orderDetail.getDeliveryDetail().getQuantity();
                     area += orderDetail.getFinishedGoodsInventory().getActualSignalArea() * orderDetail.getDeliveryDetail().getQuantity();
                     money += orderDetail.getPrice() * orderDetail.getDeliveryDetail().getQuantity();
                     Integer deliveryDetailmaximum = deliveryDetailMapper.getdeliveryDetailmaximum(oddNumber);
 
+                    //棰濆閲戦淇敼
                     Map<String,Double> otherColumns = JSON.parseObject(orderDetail.getOtherColumns(), new TypeReference<Map<String, Double>>(){});
                     if(otherColumns!=null){
                         otherColumns.forEach((key, value) ->{
@@ -242,7 +257,7 @@
                     }
 
                     //鏂板鍙戣揣鏄庣粏鏁版嵁
-                    deliveryDetailMapper.insertDeliveryDetail(orderDetail, oddNumber, deliveryDetailmaximum + 1);
+                    deliveryDetailMapper.insertDeliveryDetail(orderDetail, oddNumber, deliveryDetailmaximum + 1,deliveryDetailMoney);
                     //淇敼璁㈠崟鏄庣粏
                     deliveryDetailMapper.updateOrderDetailDeliveryNum(orderDetail);
                     //淇敼搴撳瓨琛ㄥ嚭搴撴暟閲�
diff --git a/north-glass-erp/src/main/resources/mapper/pp/Report.xml b/north-glass-erp/src/main/resources/mapper/pp/Report.xml
index 6b52ee7..4a7553f 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/Report.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -85,6 +85,24 @@
         <result column="bend_radius" property="bendRadius"/>
     </resultMap>
 
+    <resultMap id="damageReportMap" type="com.example.erp.dto.pp.DamageReportDTO">
+        <result column="order_id" property="orderId"/>
+        <result column="reporting_work_time" property="reportingWorkTime"/>
+        <result column="area" property="area"/>
+        <result column="breakage_quantity" property="breakageQuantity"/>
+        <result column="project" property="project"/>
+        <result column="process_id" property="processId"/>
+        <result column="order_number" property="orderNumber"/>
+        <result column="technology_number" property="technologyNumber"/>
+        <result column="responsible_process" property="responsibleProcess"/>
+        <result column="responsible_team" property="responsibleTeam"/>
+        <result column="responsible_equipment" property="responsibleEquipment"/>
+        <result column="breakage_type" property="breakageType"/>
+        <result column="breakage_reason" property="breakageReason"/>
+        <result column="personnel" property="personnel"/>
+        <result column="glass_child" property="glassChild"/>
+    </resultMap>
+
 
 <!--    娴佺▼鍗¤繘搴�-->
     <select id="processCardProgressMp">
@@ -365,7 +383,7 @@
         order by fc.process_id, fc.order_number, fc.technology_number
     </select>
 
-    <select id="selectDamageReportMp">
+    <select id="selectDamageReportMp" resultMap="damageReportMap">
         SELECT
             o.order_id,
             o.project,
@@ -393,8 +411,88 @@
             rw.reporting_work_time between #{selectTime1} and #{selectTime2}
           AND dd.available = 0
           AND LENGTH( rw.process_id )= 14
+        <if test="damageReportDTO.orderId != null and damageReportDTO.orderId != ''">
+            and o.order_id regexp #{damageReportDTO.orderId}
+        </if>
+        <if test="damageReportDTO.project != null and damageReportDTO.project != ''">
+            and o.project regexp #{damageReportDTO.project}
+        </if>
+        <if test="damageReportDTO.processId != null and damageReportDTO.processId != ''">
+            and rw.process_id regexp #{damageReportDTO.processId}
+        </if>
+        <if test="damageReportDTO.orderNumber != null and damageReportDTO.orderNumber != ''">
+            and dd.order_number regexp #{damageReportDTO.orderNumber}
+        </if>
+        <if test="damageReportDTO.technologyNumber != null and damageReportDTO.technologyNumber != ''">
+            and dd.technology_number regexp #{damageReportDTO.technologyNumber}
+        </if>
+        <if test="damageReportDTO.responsibleProcess != null and damageReportDTO.responsibleProcess != ''">
+            and dd.responsible_process regexp #{damageReportDTO.responsibleProcess}
+        </if>
+        <if test="damageReportDTO.responsibleTeam != null and damageReportDTO.responsibleTeam != ''">
+            and dd.responsible_team regexp #{damageReportDTO.responsibleTeam}
+        </if>
+        <if test="damageReportDTO.responsibleEquipment != null and damageReportDTO.responsibleEquipment != ''">
+            and dd.responsible_equipment regexp #{damageReportDTO.responsibleEquipment}
+        </if>
+        <if test="damageReportDTO.breakageType != null and damageReportDTO.breakageType != ''">
+            and dd.breakage_type regexp #{damageReportDTO.breakageType}
+        </if>
+        <if test="damageReportDTO.breakageReason != null and damageReportDTO.breakageReason != ''">
+            and dd.breakage_reason regexp #{damageReportDTO.breakageReason}
+        </if>
         GROUP BY
             dd.id
+        limit #{offset},#{pageSize};
+    </select>
+
+    <select id="getDamageReportPageTotal">
+        SELECT
+        CEILING(count(dd.id)/#{pageSize}) as 'pageTotal',
+        count(distinct dd.id) as 'total'
+        FROM
+        sd.ORDER AS o
+        LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = o.order_id
+        LEFT JOIN reporting_work AS rw ON rw.order_id = o.order_id
+        LEFT JOIN damage_details AS dd ON dd.reporting_work_id = rw.reporting_work_id
+        AND dd.order_number = ogd.order_number
+        AND dd.technology_number = ogd.technology_number
+        WHERE
+        rw.reporting_work_time between #{selectTime1} and #{selectTime2}
+        AND dd.available = 0
+        AND LENGTH( rw.process_id )= 14
+        <if test="damageReportDTO.orderId != null and damageReportDTO.orderId != ''">
+            and o.order_id regexp #{damageReportDTO.orderId}
+        </if>
+        <if test="damageReportDTO.project != null and damageReportDTO.project != ''">
+            and o.project regexp #{damageReportDTO.project}
+        </if>
+        <if test="damageReportDTO.processId != null and damageReportDTO.processId != ''">
+            and rw.process_id regexp #{damageReportDTO.processId}
+        </if>
+        <if test="damageReportDTO.orderNumber != null and damageReportDTO.orderNumber != ''">
+            and dd.order_number regexp #{damageReportDTO.orderNumber}
+        </if>
+        <if test="damageReportDTO.technologyNumber != null and damageReportDTO.technologyNumber != ''">
+            and dd.technology_number regexp #{damageReportDTO.technologyNumber}
+        </if>
+        <if test="damageReportDTO.responsibleProcess != null and damageReportDTO.responsibleProcess != ''">
+            and dd.responsible_process regexp #{damageReportDTO.responsibleProcess}
+        </if>
+        <if test="damageReportDTO.responsibleTeam != null and damageReportDTO.responsibleTeam != ''">
+            and dd.responsible_team regexp #{damageReportDTO.responsibleTeam}
+        </if>
+        <if test="damageReportDTO.responsibleEquipment != null and damageReportDTO.responsibleEquipment != ''">
+            and dd.responsible_equipment regexp #{damageReportDTO.responsibleEquipment}
+        </if>
+        <if test="damageReportDTO.breakageType != null and damageReportDTO.breakageType != ''">
+            and dd.breakage_type regexp #{damageReportDTO.breakageType}
+        </if>
+        <if test="damageReportDTO.breakageReason != null and damageReportDTO.breakageReason != ''">
+            and dd.breakage_reason regexp #{damageReportDTO.breakageReason}
+        </if>
+
+        limit #{offset},#{pageSize};
     </select>
 
     <select id="splittingDetailsOutsideMp">
@@ -701,4 +799,212 @@
         GROUP BY dd.id
         order by dd.id desc
     </select>
+
+    <select id="exportDamageReportMp">
+        SELECT o.order_id,
+               o.project,
+               rw.process_id,
+               dd.order_number,
+               dd.technology_number,
+               date(rw.reporting_work_time)                                                  as reporting_work_time,
+               dd.responsible_process,
+               dd.responsible_team,
+               dd.responsible_equipment,
+               dd.breakage_type,
+               dd.breakage_reason,
+               dd.breakage_quantity,
+               round(ogd.child_width * ogd.child_height * dd.breakage_quantity / 1000000, 2) as area,
+               IFNULL(dd.responsible_personnel, '')                                          as personnel,
+               ogd.glass_child
+        FROM sd.ORDER AS o
+                 LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = o.order_id
+                 LEFT JOIN reporting_work AS rw ON rw.order_id = o.order_id
+                 LEFT JOIN damage_details AS dd ON dd.reporting_work_id = rw.reporting_work_id
+            AND dd.order_number = ogd.order_number
+            AND dd.technology_number = ogd.technology_number
+        WHERE date(rw.reporting_work_time) >= #{dates[0]}
+          and date(rw.reporting_work_time) &lt;= #{dates[1]}
+          AND dd.available = 0
+          AND LENGTH(rw.process_id) = 14
+        GROUP BY dd.id
+    </select>
+
+    <select id="exportOrderPlanDecompositionMp">
+        SELECT
+            o.order_id,
+            o.customer_name,
+            o.project,
+            o.batch,
+            o.quantity,
+            o.area,
+            date(fc.create_time) as create_time,
+            date(orw.startTime) as startTime,
+            oopd.completionsNum,
+            sum( DISTINCT fc.received_quantity ) AS received_quantity,
+            sum( DISTINCT fc.quantity - fc.received_quantity ) AS receivedNo,
+            IF(fc.quantity=fc.received_quantity,'宸叉竻鍗�','') as accomplish,
+            DATEDIFF(
+                    MAX( rw.reporting_work_time ),
+                    min( rw.reporting_work_time ))+1 AS daysDifference
+        FROM
+            sd.`order` AS o
+                LEFT JOIN flow_card AS fc ON fc.order_id = o.order_id
+                LEFT JOIN (
+                SELECT
+                    a.order_id,
+                    MIN( b.reporting_work_time ) AS startTime
+                FROM
+                    sd.`order` AS a
+                        LEFT JOIN reporting_work AS b ON a.order_id = b.order_id
+                WHERE
+                    b.this_process = '鍒囧壊'
+                  AND date(a.create_time) >= #{dates[0]}
+                  and date(a.create_time) &lt;= #{dates[1]}
+
+                GROUP BY
+                    a.order_id
+            ) AS orw ON orw.order_id = o.order_id
+                LEFT JOIN (
+                SELECT
+                    a.order_id,
+                    SUM( b.reporting_work_num ) AS completionsNum
+                FROM
+                    sd.`order` AS a
+                        LEFT JOIN sd.order_process_detail AS b ON a.order_id = b.order_id
+                WHERE
+                    b.process = '鍖呰'
+                  AND  date(a.create_time) >= #{dates[0]}
+                  and date(a.create_time) &lt;= #{dates[1]}
+                GROUP BY
+                    a.order_id
+            ) AS oopd ON oopd.order_id = o.order_id
+                LEFT JOIN reporting_work AS rw ON rw.order_id = fc.order_id
+                AND rw.process_id = fc.process_id
+        WHERE
+            date(o.create_time) >= #{dates[0]}
+                and date(o.create_time) &lt;= #{dates[1]}
+          AND fc.create_time IS NOT NULL
+        GROUP BY
+            o.order_id
+    </select>
+
+    <select id="exportProcessToBeCompletedMp">
+        select DATE(o.create_time)                                                  as create_time,
+               DATE(o.delivery_date)                                                as delivery_date,
+               o.order_id,
+               fc.process_id,
+               o.customer_name,
+               o.project,
+               o.batch,
+               od.order_number,
+               ogd.technology_number,
+               ogd.glass_child,
+               ogd.child_width,
+               ogd.child_height,
+               od.quantity,
+               ROUND(ogd.child_width * ogd.child_height / 1000000, 2)               as childArea,
+               ROUND(ogd.child_width * ogd.child_height * od.quantity / 1000000, 2) as actualArea,
+               odpd.reporting_work_num                                              as completeNum,
+               ROUND(ogd.child_width * ogd.child_height * odpd.reporting_work_num / 1000000,
+                     2)                                                             as completeArea,
+               od.quantity - odpd.reporting_work_num                                as incompleteNum,
+               ROUND(ogd.child_width * ogd.child_height * (od.quantity - odpd.reporting_work_num) / 1000000,
+                     2)                                                             as incompleteArea,
+               od.product_name
+
+        from sd.order_detail AS od
+                 LEFT JOIN sd.order_glass_detail AS ogd
+                           ON od.order_id = ogd.order_id
+                               AND od.order_number = ogd.order_number
+                 LEFT JOIN flow_card AS fc
+                           ON fc.order_id = ogd.order_id
+                               and fc.production_id = ogd.production_id
+                               AND fc.order_number = ogd.order_number
+                               AND fc.technology_number = ogd.technology_number
+                 left join sd.order_process_detail as odpd
+                           ON odpd.order_id = fc.order_id
+                               AND odpd.order_number = fc.order_number
+                               AND odpd.technology_number = fc.technology_number
+                               and odpd.process_id = fc.process_id
+                 left join sd.`order` as o
+                           on o.order_id = od.order_id
+        where LENGTH(fc.process_id) = 14
+          and odpd.process = #{process}
+          and date(o.create_time) >= #{date[0]}
+          and date(o.create_time) &lt;= #{date[1]}
+          and position(ifnull(#{inputVal},'') in od.order_id)
+          and position(ifnull(#{project},'') in o.project)
+          and od.quantity > odpd.reporting_work_num
+
+        group by fc.process_id, fc.order_number, fc.technology_number
+        order by fc.process_id, fc.order_number, fc.technology_number
+    </select>
+
+    <select id="exportWorkInProgressMp">
+        select #{process} as thisProcess,
+               fc.process_id,
+               o.customer_name,
+               o.project,
+               o.order_id,
+               o.batch,
+               od.shape,
+               ogd.order_number,
+               ogd.technology_number,
+               ogd.process,
+               od.quantity,
+               ogd.child_width,
+               ogd.child_height,
+               odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
+               odpd.broken_num as stockNum,
+               ROUND(ogd.child_width * ogd.child_height *
+                     (odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
+                      odpd.broken_num) / 1000000, 2) as stockArea,
+               od.product_name,
+               od.bend_radius
+
+        from sd.order_detail AS od
+                 LEFT JOIN sd.order_glass_detail AS ogd
+                           ON od.order_id = ogd.order_id
+                               AND od.order_number = ogd.order_number
+                 LEFT JOIN flow_card AS fc
+                           ON fc.order_id = ogd.order_id
+                               and fc.production_id = ogd.production_id
+                               AND fc.order_number = ogd.order_number
+                               AND fc.technology_number = ogd.technology_number
+                 left join sd.order_process_detail as odpd
+                           ON odpd.order_id = fc.order_id
+                               AND odpd.order_number = fc.order_number
+                               AND odpd.technology_number = fc.technology_number
+                               and odpd.process_id = fc.process_id
+                 left join sd.order_process_detail as odpds
+                           ON odpds.id = odpd.id - 1
+                 left join
+             (SELECT sum(rw.rework_num) as 'patchNumSum',
+                     rw.process_id,
+                     rw.order_sort,
+                     rw.technology_number,
+                     rwk.this_process
+              from rework as rw
+                       LEFT JOIN
+                   reporting_work as rwk
+                   on rw.reporting_work_id = rwk.reporting_work_id
+              where rwk.this_process = #{process}
+                and rw.review_status = 1
+              GROUP BY rw.process_id, rw.order_sort, rw.technology_number) as c
+             on c.process_id = fc.process_id
+                 and c.order_sort = fc.order_number
+                 and c.technology_number = fc.technology_number
+                 left join sd.`order` as o
+                           on o.order_id = od.order_id
+        where LENGTH(fc.process_id) = 14
+          and odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
+              odpd.broken_num != 0
+          and odpd.process = #{process} and  date(o.create_time) >= #{date[0]}
+          and date(o.create_time) &lt;= #{date[1]}
+          and position(ifnull(#{inputVal},'') in od.order_id)
+          and position(ifnull(#{project},'') in o.project)
+
+        group by fc.process_id, fc.order_number, fc.technology_number
+        order by fc.process_id, fc.order_number, fc.technology_number
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml b/north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml
index e59aff1..98403f5 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml
@@ -418,7 +418,7 @@
         right join  flow_card as c
         on c.process_id = b.process_id
 
-        left join reporting_work_detail as a
+        right join reporting_work_detail as a
         on  a.reporting_work_id = b.reporting_work_id
         and c.order_number=a.order_number
         and c.technology_number = a.technology_number
@@ -741,4 +741,9 @@
         GROUP BY rwd.order_number, ogd.glass_child, rwd.technology_number, dd.id
         ORDER BY rwd.order_number
     </select>
+
+    <select id="selectLayerByReportingWorkId">
+        select  REPLACE(GROUP_CONCAT(DISTINCT rwd.technology_number),',','') from reporting_work_detail as rwd
+        where rwd.reporting_work_id=#{reportingWorkId}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml b/north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml
index cb84eab..cedcebe 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml
+++ b/north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml
@@ -34,6 +34,7 @@
 
         <result column="batch" property="order.batch"/>
         <result column="t_quantity" property="order.quantity"/>
+        <result column="calculate_type" property="order.calculateType"/>
 
 
         <result column="customer_id" property="delivery.customerId"/>
@@ -151,7 +152,7 @@
         values (
                    #{number} ,#{deliveryNumber},#{orderDetail.orderNumber},#{orderDetail.computeGrossArea},
                 #{orderDetail.orderId},#{orderDetail.deliveryDetail.quantity},
-                #{orderDetail.price}*#{orderDetail.deliveryDetail.quantity},'',1,#{orderDetail.otherColumns},now()
+                #{deliveryDetailMoney},'',1,#{orderDetail.otherColumns},now()
                )
     </insert>
 
@@ -351,6 +352,7 @@
         select od.order_id,
                od.order_number,
                o.batch,
+               o.calculate_type,
                fgi.quantity_available,
                od.quantity- od.delivery_num as t_quantity,
                od.quantity as o_quantity,
@@ -895,7 +897,7 @@
                dd.money,
                dd.area,
                ifnull(od.processing_note,"") as processingNote,
-               ifnull(od.building_number,"") as buildingNumber,
+               ifnull(od.remarks,"") as buildingNumber,
                od.price
         from delivery_detail dd
                  left join order_detail od on dd.order_id = od.order_id and dd.order_number = od.order_number

--
Gitblit v1.8.0