From de18cca83738bdf6b279046e34b910ccd5b73a84 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期四, 07 三月 2024 08:17:50 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override

---
 north-glass-erp/src/main/java/com/example/erp/entity/pp/DamageDetails.java                        |    2 
 north-glass-erp/target/classes/mapper/pp/ReworkMapper.xml                                         |   60 
 north-glass-erp/northglass-erp/src/hook/mouseMove.ts                                              |   45 
 north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java               |   18 
 north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml                                      |    3 
 north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderProcessDetailMapper.java             |    2 
 north-glass-erp/src/main/java/com/example/erp/service/pp/ReplenishService.java                    |  145 +++
 north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java                 |    8 
 north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryMapper.java                       |    8 
 north-glass-erp/src/main/java/com/example/erp/entity/pp/ReportingWork.java                        |   16 
 north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkDetailMapper.java            |    3 
 north-glass-erp/northglass-erp/src/stores/userInfo.js                                             |    5 
 north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue                         |  388 ++++----
 north-glass-erp/src/main/resources/mapper/pp/PatchLogMapper.xml                                   |  137 ++
 north-glass-erp/src/main/java/com/example/erp/mapper/pp/PatchLogMapper.java                       |   33 
 north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedGoodsInventoryMapper.java         |    8 
 north-glass-erp/.idea/dataSources.local.xml                                                       |    1 
 north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java                |  103 ++
 north-glass-erp/src/main/resources/mapper/pp/ReworkMapper.xml                                     |   60 
 north-glass-erp/src/main/java/com/example/erp/entity/pp/Rework.java                               |    2 
 north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue                                 |   11 
 north-glass-erp/northglass-erp/src/layout/MainErpView.vue                                         |    3 
 north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java       |   74 
 north-glass-erp/src/main/java/com/example/erp/entity/pp/PatchLog.java                             |   47 +
 north-glass-erp/src/main/java/com/example/erp/service/pp/ReworkService.java                       |   23 
 north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java                     |   22 
 north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkMapper.java                  |   11 
 north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue                            |  350 +++---
 north-glass-erp/src/main/java/com/example/erp/service/sd/OrderProcessDetailService.java           |   24 
 north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml                                    |   76 +
 north-glass-erp/src/main/resources/mapper/sd/DeliveryDetail.xml                                   |    8 
 north-glass-erp/target/classes/mapper/mm/FinishedGoodsInventory.xml                               |   11 
 north-glass-erp/target/classes/mapper/sd/Delivery.xml                                             |    8 
 north-glass-erp/src/main/java/com/example/erp/entity/pp/ReportingWorkDetail.java                  |   20 
 north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue                           |    4 
 north-glass-erp/src/main/java/com/example/erp/controller/sd/CustomerController.java               |    6 
 north-glass-erp/src/main/java/com/example/erp/controller/pp/ReworkController.java                 |    8 
 north-glass-erp/src/main/java/com/example/erp/mapper/pp/DamageDetailsMapper.java                  |    9 
 north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue                                  |    3 
 north-glass-erp/src/main/resources/mapper/sd/Customer.xml                                         |    4 
 north-glass-erp/target/classes/mapper/pp/ReportingWork.xml                                        |   76 +
 north-glass-erp/target/classes/mapper/sd/DeliveryDetail.xml                                       |    8 
 north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue                           |    2 
 north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderProcessDetail.java                   |    7 
 north-glass-erp/src/main/resources/mapper/sd/Delivery.xml                                         |    8 
 north-glass-erp/target/classes/mapper/pp/PatchLogMapper.xml                                       |  137 ++
 north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportingWorkController.java          |    5 
 north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue                   |  582 +++++++++---
 north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReworkMapper.java                         |    6 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue               |    8 
 north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue                           |    6 
 north-glass-erp/src/main/java/com/example/erp/controller/mm/FinishedGoodsInventoryController.java |   36 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TransferRecord.vue                   |    8 
 north-glass-erp/target/classes/mapper/sd/Customer.xml                                             |    4 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue                 |    6 
 north-glass-erp/target/classes/mapper/sd/OrderMapper.xml                                          |    3 
 north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorks.vue                     |    5 
 north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue                           |    6 
 north-glass-erp/src/main/java/com/example/erp/service/sd/CustomerService.java                     |    6 
 north-glass-erp/src/main/java/com/example/erp/controller/pp/ReplenishController.java              |   65 +
 north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml                           |   11 
 north-glass-erp/src/main/java/com/example/erp/mapper/sd/CustomerMapper.java                       |    4 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue               |    8 
 63 files changed, 1,948 insertions(+), 828 deletions(-)

diff --git a/north-glass-erp/.idea/dataSources.local.xml b/north-glass-erp/.idea/dataSources.local.xml
index 2b874a0..3fa20a7 100644
--- a/north-glass-erp/.idea/dataSources.local.xml
+++ b/north-glass-erp/.idea/dataSources.local.xml
@@ -23,6 +23,7 @@
       <database-info product="MySQL" version="8.0.19" jdbc-version="4.2" driver-name="MySQL Connector/J" driver-version="mysql-connector-java-8.0.25 (Revision: 08be9e9b4cba6aa115f9b27b215887af40b159e0)" dbms="MYSQL" exact-version="8.0.19" exact-driver-version="8.0">
         <extra-name-characters>#@</extra-name-characters>
         <identifier-quote-string>`</identifier-quote-string>
+        <jdbc-catalog-is-schema>true</jdbc-catalog-is-schema>
       </database-info>
       <case-sensitivity plain-identifiers="lower" quoted-identifiers="lower" />
       <secret-storage>master_key</secret-storage>
diff --git a/north-glass-erp/northglass-erp/src/hook/mouseMove.ts b/north-glass-erp/northglass-erp/src/hook/mouseMove.ts
index d4e0696..c681de7 100644
--- a/north-glass-erp/northglass-erp/src/hook/mouseMove.ts
+++ b/north-glass-erp/northglass-erp/src/hook/mouseMove.ts
@@ -399,17 +399,17 @@
 
 
             // //杩欓噷闇�瑕佹槸visibleData
-            // let tableData = getTablexGrid().getTableData().visibleData//鑾峰彇澶勭悊鏉′欢涔嬪悗鐨勫叏閲忚〃浣撴暟鎹�
-            // let rowStart = selectionStart.rowIndex//鑾峰彇閫変腑璧峰琛岀储寮�
-            // let rowEnd = selectionEnd.rowIndex//鑾峰彇閫変腑缁撴潫琛岀储寮�
-            // let selectRows = tableData.filter((col, index: number) => {//col鍙傛暟涓嶈兘鏀瑰惁鍒欎細鑾峰彇涓嶅埌鏁版嵁
-            //     //杩欓噷淇敼浠庡彸涓嬪線宸︿笂鎷栧姩鐨勬暟鎹樉绀�
-            //     if (rowStart <= rowEnd) {
-            //         return rowStart <= index && rowEnd >= index
-            //     } else {
-            //         return rowStart >= index && rowEnd <= index
-            //     }
-            // })
+            let tableData = getTablexGrid().getTableData().visibleData//鑾峰彇澶勭悊鏉′欢涔嬪悗鐨勫叏閲忚〃浣撴暟鎹�
+            let rowStart = selectionStart.rowIndex//鑾峰彇閫変腑璧峰琛岀储寮�
+            let rowEnd = selectionEnd.rowIndex//鑾峰彇閫変腑缁撴潫琛岀储寮�
+            let selectRows = tableData.filter((col, index: number) => {//col鍙傛暟涓嶈兘鏀瑰惁鍒欎細鑾峰彇涓嶅埌鏁版嵁
+                //杩欓噷淇敼浠庡彸涓嬪線宸︿笂鎷栧姩鐨勬暟鎹樉绀�
+                if (rowStart <= rowEnd) {
+                    return rowStart <= index && rowEnd >= index
+                } else {
+                    return rowStart >= index && rowEnd <= index
+                }
+            })
             // console.log("榧犳爣閫変腑琛�:", JSON.stringify(selectRows))
 
             //杩欓噷闇�瑕佹槸visibleColumn
@@ -423,13 +423,26 @@
                 } else {
                     return colStart >= index && colEnd <= index
                 }
-
             })
-            return  {
-                start:selectionStart.rowIndex,//寮�濮嬭
-                end : selectionEnd.rowIndex,//缁撴潫琛�
-                cell:selectCols[0].field//閫変腑鍒�
+
+
+            let result=null
+            if(selectRows.length===0){
+                return false
             }
+            result =  {
+                start:selectionStart.rowIndex,//寮�濮嬭
+                end: selectionEnd.rowIndex,//缁撴潫琛�
+                cell:selectCols[0].field,//閫変腑鍒楋紝
+                row:selectRows
+            }
+
+            selectionStart.rowIndex=-1
+            selectionStart.cellIndex=-1
+            selectionEnd.rowIndex=-1
+            selectionEnd.cellIndex=-1
+
+            return  result
             //console.log("榧犳爣閫変腑鍒�:", JSON.stringify(selectCols))
 
 
diff --git a/north-glass-erp/northglass-erp/src/layout/MainErpView.vue b/north-glass-erp/northglass-erp/src/layout/MainErpView.vue
index 20334e7..7c492b9 100644
--- a/north-glass-erp/northglass-erp/src/layout/MainErpView.vue
+++ b/north-glass-erp/northglass-erp/src/layout/MainErpView.vue
@@ -30,6 +30,9 @@
     ElMessage.warning(res.msg)
     router.push("/login")
   }
+}).catch((e)=>{
+  ElMessage.warning("鏈嶅姟鍣ㄨ繛鎺ュ紓甯革紝璇风◢鍚庡啀璇�")
+  router.push("/login")
 })
 
 //鑾峰彇鑿滃崟鍒楄〃
diff --git a/north-glass-erp/northglass-erp/src/stores/userInfo.js b/north-glass-erp/northglass-erp/src/stores/userInfo.js
index eeaefac..28d5972 100644
--- a/north-glass-erp/northglass-erp/src/stores/userInfo.js
+++ b/north-glass-erp/northglass-erp/src/stores/userInfo.js
@@ -4,7 +4,10 @@
 
 export  default defineStore("userInfo",{
     state: () =>{
-        let user=ref(null)
+        let user=ref({
+            userName:null,
+            userId:null
+        })
         return {
             user
         }
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 d59d340..a3d3ff8 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
@@ -81,7 +81,7 @@
 
 
 //绗竴娆¤皟鐢�
-request.post(`/FinishedGoodsInventory/getseletwarehousing/1/${total.pageSize}`,filterData.value).then((res) => {
+request.post(`/FinishedGoodsInventory/getSelectWarehousing/1/${total.pageSize}`,filterData.value).then((res) => {
 
   if(res.code==200){
     total.dataTotal = res.data.total.total*1
@@ -119,7 +119,7 @@
   }else{
     filterData.value[column.property] = value
   }
-  request.post(`/FinishedGoodsInventory/getseletwarehousing/1/${total.pageSize}`,filterData.value).then((res) => {
+  request.post(`/FinishedGoodsInventory/getSelectWarehousing/1/${total.pageSize}`,filterData.value).then((res) => {
 
     if(res.code==200){
       total.dataTotal = res.data.total.total*1
@@ -136,7 +136,7 @@
 }
 const selectOrderList = ()=>{
 
-  request.post(`/FinishedGoodsInventory/getseletwarehousing/${pageNum.value}/${total.pageSize}`,filterData.value).then((res) => {
+  request.post(`/FinishedGoodsInventory/getSelectWarehousing/${pageNum.value}/${total.pageSize}`,filterData.value).then((res) => {
 
     if(res.code==200){
       produceList = deepClone(res.data.data)
@@ -263,7 +263,7 @@
               flowcard:selectRecords
             })
 
-              request.post("/FinishedGoodsInventory/addseletwarehousing",flowData.value).then((res) => {
+              request.post("/FinishedGoodsInventory/addSelectWarehousing",flowData.value).then((res) => {
                 if(res.code==200){
                   ElMessage.success("鍏ュ簱鎴愬姛")
                   location.reload();
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 f3f9675..84b78bd 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
@@ -86,7 +86,7 @@
 
 
 //绗竴娆¤皟鐢�
-request.post(`/FinishedGoodsInventory/getseletdeliveryDetail/1/${total.pageSize}`,filterData.value).then((res) => {
+request.post(`/FinishedGoodsInventory/getSelectDeliveryDetail/1/${total.pageSize}`,filterData.value).then((res) => {
 
   if(res.code==200){
     total.dataTotal = res.data.total.total*1
@@ -122,7 +122,7 @@
   }else{
     filterData.value[column.property] = value
   }
-  request.post(`/FinishedGoodsInventory/getseletdeliveryDetail/1/${total.pageSize}`,filterData.value).then((res) => {
+  request.post(`/FinishedGoodsInventory/getSelectDeliveryDetail/1/${total.pageSize}`,filterData.value).then((res) => {
 
     if(res.code==200){
       total.dataTotal = res.data.total.total*1
@@ -141,7 +141,7 @@
 
 const selectOrderList = ()=>{
 
-  request.post(`/FinishedGoodsInventory/getseletdeliveryDetail/${pageNum.value}/${total.pageSize}`,filterData.value).then((res) => {
+  request.post(`/FinishedGoodsInventory/getSelectDeliveryDetail/${pageNum.value}/${total.pageSize}`,filterData.value).then((res) => {
 
     if(res.code==200){
       produceList = deepClone(res.data.data)
@@ -265,7 +265,7 @@
               orderDetail:selectRecords
             })
 
-            request.post("/FinishedGoodsInventory/adddeliveryDetail",orderDetailData.value).then((res) => {
+            request.post("/FinishedGoodsInventory/addDeliveryDetail",orderDetailData.value).then((res) => {
               if(res.code==200){
                 ElMessage.success("鍑哄簱鎴愬姛")
                 location.reload();
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue
index bfcb3ec..b10adda 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue
@@ -71,7 +71,7 @@
 
 
 //绗竴娆¤皟鐢�
-request.post(`/FinishedGoodsInventory/getselet/1/${total.pageSize}`,filterData.value).then((res) => {
+request.post(`/FinishedGoodsInventory/getSelect/1/${total.pageSize}`,filterData.value).then((res) => {
 
   if(res.code==200){
     total.dataTotal = res.data.total.total*1
@@ -109,7 +109,7 @@
   }else{
     filterData.value[column.property] = value
   }
-  request.post(`/FinishedGoodsInventory/getselet/1/${total.pageSize}`,filterData.value).then((res) => {
+  request.post(`/FinishedGoodsInventory/getSelect/1/${total.pageSize}`,filterData.value).then((res) => {
 
     if(res.code==200){
       total.dataTotal = res.data.total.total*1
@@ -126,7 +126,7 @@
 
 const selectOrderList = ()=>{
 
-  request.post(`/FinishedGoodsInventory/getselet/${pageNum.value}/${total.pageSize}`,filterData.value).then((res) => {
+  request.post(`/FinishedGoodsInventory/getSelect/${pageNum.value}/${total.pageSize}`,filterData.value).then((res) => {
 
     if(res.code==200){
       produceList = deepClone(res.data.data)
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TransferRecord.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TransferRecord.vue
index e5cb795..689886f 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TransferRecord.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TransferRecord.vue
@@ -65,7 +65,7 @@
 })
 
 //绗竴娆¤皟鐢�
-request.post(`/FinishedGoodsInventory/getselectAllocateFinishedOperateLog/1/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
+request.post(`/FinishedGoodsInventory/getSelectAllocateFinishedOperateLog/1/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
 
   if(res.code==200){
     total.dataTotal = res.data.total.total*1
@@ -104,7 +104,7 @@
   }else{
     filterData.value[column.property] = value
   }
-  request.post(`/FinishedGoodsInventory/getselectAllocateFinishedOperateLog/1/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
+  request.post(`/FinishedGoodsInventory/getSelectAllocateFinishedOperateLog/1/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
 
     if(res.code==200){
       total.dataTotal = res.data.total.total*1
@@ -125,7 +125,7 @@
 
 
 const selectOrderList = ()=>{
-  request.post(`/FinishedGoodsInventory/getselectAllocateFinishedOperateLog/${pageNum.value}/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
+  request.post(`/FinishedGoodsInventory/getSelectAllocateFinishedOperateLog/${pageNum.value}/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
 
     if(res.code==200){
       total.dataTotal = res.data.total.total*1
@@ -244,7 +244,7 @@
               orderDetail:selectRecords
 
             })
-            request.post("/FinishedGoodsInventory/updateFinishedGoodsInventoryCounterexamination",flowData.value).then((res) => {
+            request.post("/FinishedGoodsInventory/updateFinishedGoodsInventoryCounterExamination",flowData.value).then((res) => {
               if(res.code==200){
                 ElMessage.success("鍙嶅鎴愬姛")
                 location.reload();
diff --git a/north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue b/north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue
index 42b0bc3..5ca14b0 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue
@@ -1,25 +1,44 @@
 <script setup>
 
-import {reactive} from "vue";
-import {useRouter} from  'vue-router'
-let router=useRouter()
-const getTableRow = (row,type) =>{
-  switch (type) {
-    case 'edit' :{
-      //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
-      router.push({path: '/main/reportingWorks/ReportingWorkDetail', query: { id: row.id }})
-      break
-    }
-    case 'delete':{
-      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅')
-      break
-    }
-    case  'setType':{
-      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍙嶅鐘舵��')
-      break
-    }
+import {onMounted, reactive, ref} from "vue";
+import {useRouter} from 'vue-router'
+import request from "@/utils/request";
+import {ElMessage} from "element-plus";
+import deepClone from "@/utils/deepClone";
+import {changeFilterEvent,filterChanged} from "@/hook"
+import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove";
+
+let router = useRouter()
+
+//瀹氫箟椤甸潰鎬婚〉鏁�
+let pageTotal=ref('')
+//瀹氫箟鏁版嵁杩斿洖缁撴灉
+let produceList = ref([])
+//瀹氫箟褰撳墠椤垫暟
+let pageNum=$ref(1)
+const  xGrid = ref();
+let cellArea = ref()
+
+
+let filterData = ref({
+
+})
+
+
+//绗竴娆¤皟鐢�
+request.post(`/Replenish/getSelectReplenish/${pageNum}/100`,filterData.value).then((res) => {
+
+  if(res.code==200){
+
+    produceList = deepClone(res.data)
+    xGrid.value.loadData(produceList)
+    gridOptions.loading=false
+  }else{
+    ElMessage.warning(res.msg)
+    router.push("/login")
   }
-}
+})
+
 
 //琛ㄥ熬姹傚拰
 const sumNum = (list, field) => {
@@ -50,7 +69,7 @@
     useKey: true
   },
   filterConfig: {   //绛涢�夐厤缃」
-    remote: true
+    //remote: true
   },
   customConfig: {
     storage: true
@@ -61,39 +80,34 @@
     showStatus: true
   },//琛ㄥご鍙傛暟
   columns:[
-    {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
-    { type: 'checkbox',fixed:"left", title: '閫夋嫨', width: 80 },
-    { type: 'seq',fixed:"left", title: '鑷簭', width: 50 },
-    {field: '鎶ュ伐鏃堕棿', width: 120,title: '鎶ュ伐鏃堕棿', sortable: true},
-    {field: '閿�鍞崟鍙�', width: 120, title: '閿�鍞崟鍙�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true, },
-    {field: '娴佺▼鍗″彿',width: 120, title: '娴佺▼鍗″彿', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: '椤圭洰鍚嶇О', width: 130,title: '椤圭洰鍚嶇О', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: '浜у搧鍚嶇О',width: 120, title: '浜у搧鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '鎶ュ伐缂栧彿', width: 100,title: '鎶ュ伐缂栧彿', sortable: true,showOverflow:"ellipsis"},
-    {field: '搴忓彿', width: 70,title: '搴忓彿', sortable: true},
-    {field: '鍗曠墖鍚嶇О',width: 100, title: '鍗曠墖鍚嶇О', sortable: true},
-    {field: '妤煎眰缂栧彿',width: 120, title: '妤煎眰缂栧彿', sortable: true,showOverflow:"ellipsis"},
-    {field: '鏍囪', width: 80,title: '鏍囪', sortable: true},
-    {field: '鐗囨爣璁�',width: 90, title: '鐗囨爣璁�', sortable: true},
-    {field: '娴佺▼鍗℃暟閲�',width: 120, title: '娴佺▼鍗℃暟閲�', sortable: true},
-    {field: '瀹�',width: 80, title: '瀹�', sortable: true},
-    {field: '楂�',width: 80, title: '楂�', sortable: true},
-    {field: '闈㈢Н',width: 80, title: '闈㈢Н', sortable: true},
-    {field: '褰㈢姸',width: 80, title: '褰㈢姸', sortable: true},
-    {field: '娆$牬鏁伴噺',width: 120, title: '娆$牬鏁伴噺', sortable: true},
-    {field: '娆$牬绫诲瀷',width: 120, title: '娆$牬绫诲瀷', sortable: true},
-    {field: '娆$牬鍘熷洜',width: 120, title: '娆$牬鍘熷洜', sortable: true},
-    {field: '璐d换璁惧',width: 120, title: '璐d换璁惧', sortable: true},
-    {field: '鎶ュ伐宸ュ簭',width: 120, title: '鎶ュ伐宸ュ簭', sortable: true},
-    {field: '璐d换宸ュ簭',width: 120, title: '璐d换宸ュ簭', sortable: true},
-    {field: '璐d换鐝粍',width: 120, title: '璐d换鐝粍', sortable: true},
-    {field: '璐d换浜哄憳',width: 120, title: '璐d换浜哄憳', sortable: true},
-    {field: '璐ㄦ鍛�',width: 100, title: '璐ㄦ鍛�', sortable: true}
+    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
+    {field: 'select',type:'checkbox',title: '閫夋嫨', width: 80,fixed:"left"},
+    {type: 'seq', fixed: "left", title: '鑷簭', width: 50},
+    {field: 'reportingWorkTime', width: 120, title: '鎶ュ伐鏃堕棿', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'orderId', width: 120, title: '閿�鍞崟鍙�', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'processId', width: 120, title: '娴佺▼鍗″彿', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'project', width: 120, title: '椤圭洰鍚嶇О', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
+    {field: 'batch', width: 80, title: '鎵规',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis",filterMethod:filterChanged},
+    {field: 'orderSort', width: 80, title: '搴忓彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+    {field: 'productName', width: 120, title: '浜у搧鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+    {field: 'reportingWorkId', width: 120, title: '鎶ュ伐缂栧彿', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'technologyNumber', width: 80, title: '鏍囪',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis",filterMethod:filterChanged},
+    {field: 'glassAddress', width: 90, title: '鐗囨爣璁�', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+    {field: 'patchNum', width: 120, title: '娆$牬鏁伴噺', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+    {field: 'width', width: 80, title: '瀹�', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+    {field: 'height', width: 80, title: '楂�', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+    {field: 'shape', width: 80, title: '褰㈢姸', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+    {field: 'patchProcesses', width: 100, title: '鎶ュ伐宸ュ簭', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+    {field: 'patchType', width: 100, title: '娆$牬绫诲瀷', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+    {field: 'patchReason', width: 120, title: '娆$牬鍘熷洜', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'responsibleEquipment', width: 120, title: '璐d换璁惧', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+    {field: 'responsibleTeam', width: 120, title: '璐d换鐝粍', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+    {field: 'qualityInsPector', width: 100, title: '璐ㄦ鍛�', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}
   ],//琛ㄥご鎸夐挳
 
   toolbarConfig: {
     buttons: [
-      {code: 'print_lck', name: '淇濆瓨',status:'primary' ,icon:'vxe-icon-save'},
+      {'code': 'add', 'name': '淇濆瓨',status: 'primary',icon: 'vxe-icon-save'}
     ],
     import: false,
     export: true,
@@ -101,143 +115,6 @@
     zoom: true,
     custom: true
   },
-  data:  [
-    {
-      鎶ュ伐鏃堕棿:'2021-01-01',
-      閿�鍞崟鍙�:'NG23010101',
-      娴佺▼鍗″彿:'NG23010101A01',
-      椤圭洰鍚嶇О:'xxxx',
-      浜у搧鍚嶇О:"xxxxxxxxx",
-      鎶ュ伐缂栧彿:"BG2301010001",
-      妤煎眰缂栧彿:"D4-010-01",
-      闈㈢Н:'23.11',
-      鎶ュ伐宸ュ簭:'閽㈠寲',
-      璐ㄦ鍛�:"寮犱笁",
-      搴忓彿:'1',
-      鍗曠墖鍚嶇О: '6mm鐧界幓骞抽挗(澶�)',
-      鏍囪: '1',
-      鐗囨爣璁�: '(澶�)',
-      娴佺▼鍗℃暟閲�: '11',
-      瀹�: '575',
-      楂�:"2241",
-      褰㈢姸: '鏅舰',
-      娆$牬鏁伴噺: '12',
-      娆$牬绫诲瀷: '鏈哄櫒',
-      娆$牬鍘熷洜:'姘旀场瓒呮爣',
-      璐d换宸ュ簭:'涓┖',
-      璐d换鐝粍:'涓┖涓�鐝�',
-      璐d换浜哄憳:'',
-      璐d换璁惧:'涓┖3#绾�',
-    },
-    {
-      鎶ュ伐鏃堕棿:'2021-01-01',
-      閿�鍞崟鍙�:'NG23010101',
-      娴佺▼鍗″彿:'NG23010101A01',
-      椤圭洰鍚嶇О:'xxxx',
-      浜у搧鍚嶇О:"xxxxxxxxx",
-      鎶ュ伐缂栧彿:"BG2301010001",
-      妤煎眰缂栧彿:"D4-010-01",
-      闈㈢Н:'23.11',
-      鎶ュ伐宸ュ簭:'閽㈠寲',
-      璐ㄦ鍛�:"寮犱笁",
-      搴忓彿:'1',
-      鍗曠墖鍚嶇О: '6mm鐧界幓骞抽挗(澶�)',
-      鏍囪: '1',
-      鐗囨爣璁�: '(澶�)',
-      娴佺▼鍗℃暟閲�: '11',
-      瀹�: '575',
-      楂�:"2241",
-      褰㈢姸: '鏅舰',
-      娆$牬鏁伴噺: '12',
-      娆$牬绫诲瀷: '鏈哄櫒',
-      娆$牬鍘熷洜:'姘旀场瓒呮爣',
-      璐d换宸ュ簭:'涓┖',
-      璐d换鐝粍:'涓┖涓�鐝�',
-      璐d换浜哄憳:'',
-      璐d换璁惧:'涓┖3#绾�',
-    },
-    {
-      鎶ュ伐鏃堕棿:'2021-01-01',
-      閿�鍞崟鍙�:'NG23010101',
-      娴佺▼鍗″彿:'NG23010101A01',
-      椤圭洰鍚嶇О:'xxxx',
-      浜у搧鍚嶇О:"xxxxxxxxx",
-      鎶ュ伐缂栧彿:"BG2301010001",
-      妤煎眰缂栧彿:"D4-010-01",
-      闈㈢Н:'23.11',
-      鎶ュ伐宸ュ簭:'閽㈠寲',
-      璐ㄦ鍛�:"寮犱笁",
-      搴忓彿:'1',
-      鍗曠墖鍚嶇О: '6mm鐧界幓骞抽挗(澶�)',
-      鏍囪: '1',
-      鐗囨爣璁�: '(澶�)',
-      娴佺▼鍗℃暟閲�: '11',
-      瀹�: '575',
-      楂�:"2241",
-      褰㈢姸: '鏅舰',
-      娆$牬鏁伴噺: '12',
-      娆$牬绫诲瀷: '鏈哄櫒',
-      娆$牬鍘熷洜:'姘旀场瓒呮爣',
-      璐d换宸ュ簭:'涓┖',
-      璐d换鐝粍:'涓┖涓�鐝�',
-      璐d换浜哄憳:'',
-      璐d换璁惧:'涓┖3#绾�',
-    },
-    {
-      鎶ュ伐鏃堕棿:'2021-01-01',
-      閿�鍞崟鍙�:'NG23010101',
-      娴佺▼鍗″彿:'NG23010101A01',
-      椤圭洰鍚嶇О:'xxxx',
-      浜у搧鍚嶇О:"xxxxxxxxx",
-      鎶ュ伐缂栧彿:"BG2301010001",
-      妤煎眰缂栧彿:"D4-010-01",
-      闈㈢Н:'23.11',
-      鎶ュ伐宸ュ簭:'閽㈠寲',
-      璐ㄦ鍛�:"寮犱笁",
-      搴忓彿:'1',
-      鍗曠墖鍚嶇О: '6mm鐧界幓骞抽挗(澶�)',
-      鏍囪: '1',
-      鐗囨爣璁�: '(澶�)',
-      娴佺▼鍗℃暟閲�: '11',
-      瀹�: '575',
-      楂�:"2241",
-      褰㈢姸: '鏅舰',
-      娆$牬鏁伴噺: '12',
-      娆$牬绫诲瀷: '鏈哄櫒',
-      娆$牬鍘熷洜:'姘旀场瓒呮爣',
-      璐d换宸ュ簭:'涓┖',
-      璐d换鐝粍:'涓┖涓�鐝�',
-      璐d换浜哄憳:'',
-      璐d换璁惧:'涓┖3#绾�',
-    },
-    {
-      鎶ュ伐鏃堕棿:'2021-01-01',
-      閿�鍞崟鍙�:'NG23010101',
-      娴佺▼鍗″彿:'NG23010101A01',
-      椤圭洰鍚嶇О:'xxxx',
-      浜у搧鍚嶇О:"xxxxxxxxx",
-      鎶ュ伐缂栧彿:"BG2301010001",
-      妤煎眰缂栧彿:"D4-010-01",
-      闈㈢Н:'23.11',
-      鎶ュ伐宸ュ簭:'閽㈠寲',
-      璐ㄦ鍛�:"寮犱笁",
-      搴忓彿:'1',
-      鍗曠墖鍚嶇О: '6mm鐧界幓骞抽挗(澶�)',
-      鏍囪: '1',
-      鐗囨爣璁�: '(澶�)',
-      娴佺▼鍗℃暟閲�: '11',
-      瀹�: '575',
-      楂�:"2241",
-      褰㈢姸: '鏅舰',
-      娆$牬鏁伴噺: '12',
-      娆$牬绫诲瀷: '鏈哄櫒',
-      娆$牬鍘熷洜:'姘旀场瓒呮爣',
-      璐d换宸ュ簭:'涓┖',
-      璐d换鐝粍:'涓┖涓�鐝�',
-      璐d换浜哄憳:'',
-      璐d换璁惧:'涓┖3#绾�',
-    },
-  ],//table body瀹為檯鏁版嵁
   //鑴氶儴姹傚拰
   footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
     let footList=['娴佺▼鍗℃暟閲�','闈㈢Н','娆$牬鏁伴噺']
@@ -256,6 +133,105 @@
 
 })
 
+const gridEvents = {
+  async toolbarButtonClick({code}) {
+    const $grid = xGrid.value
+    if ($grid) {
+      switch (code) {
+        case 'add': {
+          const selectRecords = $grid.getCheckboxRecords()
+
+          if (selectRecords.length > 0) {
+            const errMap = await $grid.validate(selectRecords)
+            if (errMap) {
+              return
+            }
+          } else {
+            ElMessage.warning("鏈�変腑鏁版嵁")
+            return
+          }
+
+
+          let flowData = ref({
+            patchLog: selectRecords
+
+          })
+          request.post("/Replenish/saveReplenish", flowData.value).then((res) => {
+            if(res.code==200){
+              ElMessage.success("琛ョ墖鍗曟彁浜ゆ垚鍔�")
+              location.reload();
+            }else{
+              ElMessage.warning(res.msg)
+              router.push("/login")
+            }
+          })
+          break
+        }
+
+
+
+      }
+    }
+  },
+  menuClick ({ menu, row, column }) {
+    const $grid = xGrid.value
+    if ($grid) {
+      switch (menu.code) {
+
+        case 'copyChecked' :{
+          let result = toolbarButtonClickEvent()
+          if(result){
+            const dataList = xGrid.value.getTableData().visibleData
+            let firstVal=null;
+            if(result.cell.indexOf('.')>-1){
+              firstVal = eval("dataList["+result.start +"]."+result.cell)
+            }else {
+              firstVal=dataList[result.start][result.cell];
+            }
+            dataList.forEach((item,index) =>{
+              if(index>=result.start && index<=result.end){
+                if(result.cell.indexOf('.')>-1){
+                  const  columnArr = result.cell.split('.')
+                  item[columnArr[0]][columnArr[1]]  = firstVal
+                }else{
+                  item[result.cell]  = firstVal
+                }
+
+              }
+            })
+          }
+          break
+        }
+
+      }
+    }
+  }
+}
+
+const selectOrderList = ()=>{
+  request.post(`/rework/SelectRework/${pageNum.value}/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
+    if(res.code==200){
+      selectDate.value = res.data.selectDate
+
+      produceList = deepClone(res.data.data)
+      xGrid.value.loadData(produceList)
+      gridOptions.loading=false
+    }else{
+      ElMessage.warning(res.msg)
+      router.push("/login")
+    }
+  })
+}
+
+
+//椤佃剼璺宠浆
+const handlePageChange = ({ currentPage, pageSize }) => {
+  total.pageTotal = pageSize
+  pageNum.value=currentPage
+
+  selectOrderList()
+}
+
 
 
 </script>
@@ -265,10 +241,10 @@
 
     <vxe-grid
         max-height="100%"
-        @filter-change="filterChanged"
         class="mytable-scrollbar"
         ref="xGrid"
         v-bind="gridOptions"
+        v-on="gridEvents"
 
     >
       <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
diff --git a/north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue b/north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue
index f8a96f2..d57c97f 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue
@@ -1,8 +1,21 @@
 <script setup>
 
-import {reactive} from "vue";
-import {useRouter} from  'vue-router'
-let router=useRouter()
+import {reactive, ref} from "vue";
+import {useRouter} from 'vue-router'
+import request from "@/utils/request";
+import {ElMessage} from "element-plus";
+import deepClone from "@/utils/deepClone";
+import {Search} from "@element-plus/icons-vue";
+import useUserInfoStore from "@/stores/userInfo";
+import {changeFilterEvent,filterChanged} from "@/hook"
+
+
+const userStore = useUserInfoStore()
+const username = userStore.user.userName
+const userid = userStore.user.userId
+let router = useRouter()
+let produceList = ref([])
+const dialogFormVisible = ref(false)
 const getTableRow = (row,type) =>{
   switch (type) {
     case 'edit' :{
@@ -21,6 +34,41 @@
   }
 }
 
+let pageNum=ref(1)
+let total = reactive({
+  pageTotal : 0,
+  dataTotal : 0,
+  pageSize : 10
+})
+
+let selectDate = ref(["",""])
+
+//绛涢�夋潯浠讹紝鏈夊閿渶瑕佸厛瀹氫箟鏄庣粏閲岄潰鐨勬暟鎹�
+let filterData = ref({
+
+
+})
+
+//绗竴娆¤皟鐢�
+request.post(`/Replenish/SelectReplenish/1/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
+
+  if(res.code==200){
+    console.log(res.data.data)
+    total.dataTotal = res.data.total.total*1
+    total.pageTotal= res.data.total.pageTotal
+
+    selectDate.value = res.data.selectDate
+    pageNum.value=1
+
+    produceList = deepClone(res.data.data)
+    xGrid.value.loadData(produceList)
+    gridOptions.loading=false
+  }else{
+    ElMessage.warning(res.msg)
+    router.push("/login")
+  }
+})
+
 //琛ㄥ熬姹傚拰
 const sumNum = (list, field) => {
   let count = 0
@@ -31,7 +79,7 @@
 }
 
 //瀛愮粍浠舵帴鏀跺弬鏁�
-
+const xGrid = ref()
 const gridOptions = reactive({
   border:  "full",//琛ㄦ牸鍔犺竟妗�
   keepSource: true,//淇濇寔婧愭暟鎹�
@@ -50,7 +98,7 @@
     useKey: true
   },
   filterConfig: {   //绛涢�夐厤缃」
-    remote: true
+    //remote: true
   },
   customConfig: {
     storage: true
@@ -61,199 +109,56 @@
     showStatus: true
   },//琛ㄥご鍙傛暟
   columns:[
-    {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
-    {title: '鎿嶄綔', width: 80, slots: { default: 'button_slot' },fixed:"left"},
-    { type: 'seq',fixed:"left", title: '鑷簭', width: 50 },
 
-    {field: 'salesOrderNo', width: 120, title: '閿�鍞崟鍙�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true, },
-    {field: 'processCardNo',width: 120, title: '娴佺▼鍗″彿', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: 'entryName', width: 130,title: '椤圭洰鍚嶇О', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: 'productName',width: 120, title: '浜у搧鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'reportingWorkNo', width: 100,title: '鎶ュ伐缂栧彿', sortable: true,showOverflow:"ellipsis"},
-    {field: 'serialNumber', width: 70,title: '搴忓彿', sortable: true},
-    {field: 'singlePieceName',width: 100, title: '鍗曠墖鍚嶇О', sortable: true},
-    {field: 'floorNumber',width: 120, title: '妤煎眰缂栧彿', sortable: true,showOverflow:"ellipsis"},
-    {field: 'marking', width: 80,title: '鏍囪', sortable: true},
-    {field: 'pieces',width: 90, title: '鐗囨爣璁�', sortable: true},
-    {field: 'processCardNumber',width: 120, title: '娴佺▼鍗℃暟閲�', sortable: true},
-    {field: 'width',width: 80, title: '瀹�', sortable: true},
-    {field: 'height',width: 80, title: '楂�', sortable: true},
-    {field: 'area',width: 80, title: '闈㈢Н', sortable: true},
-    {field: 'shape',width: 80, title: '褰㈢姸', sortable: true},
-    {field: 'numberBroken',width: 120, title: '娆$牬鏁伴噺', sortable: true},
-    {field: 'reasonType',width: 120, title: '娆$牬绫诲瀷', sortable: true},
-    {field: 'reasonDamage',width: 120, title: '娆$牬鍘熷洜', sortable: true},
-    {field: 'responsibilityDevice',width: 120, title: '璐d换璁惧', sortable: true},
-    {field: 'reportingProcess',width: 120, title: '鎶ュ伐宸ュ簭', sortable: true},
-    {field: 'responsibilityProcess',width: 120, title: '璐d换宸ュ簭', sortable: true},
-    {field: 'responsibilityTeams',width: 120, title: '璐d换鐝粍', sortable: true},
-    {field: 'responsibilityPersonnel',width: 120, title: '璐d换浜哄憳', sortable: true},
-    {field: 'qualityInspector',width: 100, title: '璐ㄦ鍛�', sortable: true}
+    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
+    {type:'checkbox',title: '閫夋嫨', width: 80,fixed:"left"},
+    {type: 'seq', fixed: "left", title: '鑷簭', width: 50},
+    {field: 'review_status',title: '瀹℃牳', width: 40, slots: { default: 'state' }},
+    {field: 'patch_id', width: 120, title: '琛ョ墖鍗曞彿', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'order_id', width: 120, title: '閿�鍞崟鍙�', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'process_id', width: 120, title: '娴佺▼鍗″彿', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'project', width: 120, title: '椤圭洰鍚嶇О', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'reporting_work_id', width: 100,title: '鎶ュ伐缂栧彿',filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'batch', width: 80, title: '鎵规', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'order_sort', width: 80, title: '搴忓彿', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'product_name', width: 120, title: '鍗曠墖鍚嶇О', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'building_number',width: 120, title: '妤煎眰缂栧彿', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'technology_number', width: 80, title: '鏍囪', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'glass_address', width: 90, title: '鐗囨爣璁�', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'patch_num', width: 80, title: '鏁伴噺', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'width', width: 80, title: '瀹�', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'height', width: 80, title: '楂�', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'shape', width: 80, title: '褰㈢姸', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'patch_type', width: 100, title: '杩斿伐绫诲瀷', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'patch_reason', width: 120, title: '杩斿伐鍘熷洜', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'responsible_equipment', width: 120, title: '璐d换璁惧', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'responsible_team', width: 120, title: '璐d换鐝粍', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'patch_area', width: 120, title: '闈㈢Н', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'patch_processes', width: 120, title: '鎶ュ伐宸ュ簭', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'quality_inspector', width: 100, title: '璐ㄦ鍛�', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'reviewer', width: 100, title: '瀹℃牳鍛�', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
+    {field: 'create_time', width: 100, title: '琛ョ墖鏃堕棿'},
+    {field: 'update_time', width: 120, title: '琛ョ墖瀹℃牳鏃堕棿'}
   ],//琛ㄥご鎸夐挳
 
   toolbarConfig: {
-    // buttons: [{
-    //
-    // }],
-    import: false,
+    buttons: [{
+      'name': '瀹℃牳',status: 'primary',
+      'code':'add'
+    }],
+    /*import: false,
     export: true,
-    print: true,
+    print: true,*/
     zoom: true,
     custom: true
   },
-  data:  [
-    {
-      reportingWorkTime:'2021-01-01',
-      salesOrderNo:'NG23010101',
-      processCardNo:'NG23010101A01',
-      entryName:'xxxx',
-      productName:"xxxxxxxxx",
-      reportingWorkNo:"BG2301010001",
-      floorNumber:"D4-010-01",
-      area:'23.11',
-      reportingProcess:'閽㈠寲',
-      qualityInspector:"寮犱笁",
-      serialNumber:'1',
-      singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
-      marking: '1',
-      pieces: '(澶�)',
-      processCardNumber: '11',
-      width: '575',
-      height:"2241",
-      shape: '鏅舰',
-      upCompletedQuantity: '12',
-      completedQuantity: '1',
-      numberBroken:'2',
-      availableUse:'',
-      returnProcess:'',
-
-      reasonType: '鏈哄櫒',
-      reasonDamage:'姘旀场瓒呮爣',
-      available:'',
-      reworkProcess:'',
-      responsibilityProcess:'涓┖',
-      responsibilityTeams:'涓┖涓�鐝�',
-      responsibilityPersonnel:'',
-      responsibilityDevice:'涓┖3#绾�',
-      completed:'',
-      onceBroken:'',
-    },
-    {
-      reportingWorkTime:'2021-01-01',
-      salesOrderNo:'NG23010101',
-      processCardNo:'NG23010101A01',
-      entryName:'xxxx',
-      productName:"xxxxxxxxx",
-      reportingWorkNo:"BG2301010001",
-      floorNumber:"D4-010-01",
-      area:'23.11',
-      reportingProcess:'閽㈠寲',
-      qualityInspector:"寮犱笁",
-      serialNumber:'1',
-      singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
-      marking: '1',
-      pieces: '(澶�)',
-      processCardNumber: '11',
-      width: '575',
-      height:"2241",
-      shape: '鏅舰',
-      upCompletedQuantity: '12',
-      completedQuantity: '1',
-      numberBroken:'2',
-      availableUse:'',
-      returnProcess:'',
-
-      reasonType: '鏈哄櫒',
-      reasonDamage:'姘旀场瓒呮爣',
-      available:'',
-      reworkProcess:'',
-      responsibilityProcess:'涓┖',
-      responsibilityTeams:'涓┖涓�鐝�',
-      responsibilityPersonnel:'',
-      responsibilityDevice:'涓┖3#绾�',
-      completed:'',
-      onceBroken:'',
-    },
-    {
-      reportingWorkTime:'2021-01-01',
-      salesOrderNo:'NG23010101',
-      processCardNo:'NG23010101A01',
-      entryName:'xxxx',
-      productName:"xxxxxxxxx",
-      reportingWorkNo:"BG2301010001",
-      floorNumber:"D4-010-01",
-      area:'23.11',
-      reportingProcess:'閽㈠寲',
-      qualityInspector:"寮犱笁",
-      serialNumber:'1',
-      singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
-      marking: '1',
-      pieces: '(澶�)',
-      processCardNumber: '11',
-      width: '575',
-      height:"2241",
-      shape: '鏅舰',
-      upCompletedQuantity: '12',
-      completedQuantity: '1',
-      numberBroken:'2',
-      availableUse:'',
-      returnProcess:'',
-
-      reasonType: '鏈哄櫒',
-      reasonDamage:'姘旀场瓒呮爣',
-      available:'',
-      reworkProcess:'',
-      responsibilityProcess:'涓┖',
-      responsibilityTeams:'涓┖涓�鐝�',
-      responsibilityPersonnel:'',
-      responsibilityDevice:'涓┖3#绾�',
-      completed:'',
-      onceBroken:'',
-    },
-    {
-      reportingWorkTime:'2021-01-01',
-      salesOrderNo:'NG23010101',
-      processCardNo:'NG23010101A01',
-      entryName:'xxxx',
-      productName:"xxxxxxxxx",
-      reportingWorkNo:"BG2301010001",
-      floorNumber:"D4-010-01",
-      area:'23.11',
-      reportingProcess:'閽㈠寲',
-      qualityInspector:"寮犱笁",
-      serialNumber:'1',
-      singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
-      marking: '1',
-      pieces: '(澶�)',
-      processCardNumber: '11',
-      width: '575',
-      height:"2241",
-      shape: '鏅舰',
-      upCompletedQuantity: '12',
-      completedQuantity: '1',
-      numberBroken:'2',
-      availableUse:'',
-      returnProcess:'',
-
-      reasonType: '鏈哄櫒',
-      reasonDamage:'姘旀场瓒呮爣',
-      available:'',
-      reworkProcess:'',
-      responsibilityProcess:'涓┖',
-      responsibilityTeams:'涓┖涓�鐝�',
-      responsibilityPersonnel:'',
-      responsibilityDevice:'涓┖3#绾�',
-      completed:'',
-      onceBroken:'',
-    },
-  ],//table body瀹為檯鏁版嵁
   //鑴氶儴姹傚拰
   footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
     let footList=['processCardNumber','numberBroken']
     return[
       columns.map((column, columnIndex) => {
         if (columnIndex === 0) {
-          return '鍚堣:'
+          return '鍚堣'
         }
         if (footList.includes(column.field)) {
           return sumNum(data, column.field)
@@ -265,31 +170,111 @@
 
 })
 
+const gridEvents = {
+  toolbarButtonClick ({ code }) {
+    const $grid = xGrid.value
+    if ($grid) {
+      switch (code) {
+        case 'add': {
+          const $table = xGrid.value
+          if ($table) {
+            const selectRecords = $table.getCheckboxRecords()
+
+            let flowData = ref({
+
+              userId:userid,
+              userName:username,
+              patchLog:selectRecords
+
+            })
+            request.post("/Replenish/updateReplenish",flowData.value).then((res) => {
+              if(res.code==200){
+                ElMessage.success("瀹℃牳鎴愬姛")
+                location.reload();
+
+              }else{
+                ElMessage.warning(res.msg)
+                router.push("/login")
+              }
+            })
+          }
+          return;
+
+        }
+
+
+      }
+    }
+  },
+
+}
+
+
+const selectOrderList = ()=>{
+  request.post(`/Replenish/SelectReplenish/${pageNum.value}/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
+    if(res.code==200){
+      selectDate.value = res.data.selectDate
+
+      produceList = deepClone(res.data.data)
+      xGrid.value.loadData(produceList)
+      gridOptions.loading=false
+    }else{
+      ElMessage.warning(res.msg)
+      router.push("/login")
+    }
+  })
+}
+
+const changeDate =  ()=>{
+  selectOrderList()
+}
+
+//椤佃剼璺宠浆
+const handlePageChange = ({ currentPage, pageSize }) => {
+  total.pageTotal = pageSize
+  pageNum.value=currentPage
+
+  selectOrderList()
+}
+
+const checkBoxConfig = {
+  checkMethod: ({ row }) => {
+    if (row['review_status']===1){
+      return row.disable
+    }else{
+      return !row.disable
+    }
+
+  },
+  reserve:true
+}
+
 
 
 </script>
 
 <template>
   <div class="main-div-customer">
-    <div id="head" >
-      <el-row :gutter="0">
+    <el-header height="auto" style="padding: 0;margin:0">
       <el-date-picker
-          v-model="value"
+          v-model="selectDate"
           type="daterange"
-          start-placeholder="鎶ュ伐寮�濮嬫椂闂�"
+          start-placeholder="寮�濮嬫椂闂�"
           end-placeholder="缁撴潫鏃堕棿"
+          format="YYYY-MM-DD"
+          value-format="YYYY-MM-DD"
+
       />
-      &nbsp;
-      <el-button type="primary">鏌ヨ</el-button>
-      </el-row>
-    </div>
+      <el-button @click="changeDate" style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">鏌ヨ</el-button>
+    </el-header>
 
     <vxe-grid
         max-height="100%"
-        @filter-change="filterChanged"
         class="mytable-scrollbar"
         ref="xGrid"
         v-bind="gridOptions"
+        v-on="gridEvents"
+        :checkbox-config="checkBoxConfig"
 
     >
       <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
@@ -316,6 +301,23 @@
         </div>
       </template>
 
+      <template #state="{ row,column}">
+        <el-checkbox @click.native.prevent  :checked="row[column.field]===1"/>
+      </template>
+
+      <template #pager>
+        <!--浣跨敤 pager 鎻掓Ы-->
+        <vxe-pager
+            @page-change="handlePageChange"
+            :layouts="[  'PrevPage', 'Jump','PageCount', 'NextPage',  'Total']"
+            v-model:current-page="pageNum"
+            v-model:page-size="total.pageSize"
+            v-model:pager-count="total.pageTotal"
+            :total="total.dataTotal"
+        >
+        </vxe-pager>
+      </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 af4a56d..ee7099a 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
@@ -1,27 +1,32 @@
 <script setup>
-import {reactive, ref} from "vue";
+import {computed, nextTick, onMounted, reactive, ref, toRefs} from "vue";
 import {useRouter} from 'vue-router'
 import request from "@/utils/request";
 import {ElMessage} from "element-plus";
 import {changeFilterEvent, filterChanged} from "@/hook"
 import {indexOf} from "xe-utils";
+import {addListener, toolbarButtonClickEvent} from "@/hook/mouseMove";
+import userInfo from "@/stores/userInfo"
 let brokenVisible = ref(false)
 const xGrid = ref()
+const brokenGrid =ref()
 let router = useRouter()
-
+const user=userInfo()
 
 //瀹氫箟琛ㄥご鏁版嵁
 const titleUploadData = ref({
+  //娴佺▼鍗″彿
+  processId: 'NG24030501A01/2',
   //閿�鍞崟鍙�
   orderId: '',
   //鐢熶骇鍗曞彿
   productionId: '',
   //璁惧绫诲瀷
-  deviceType: '',
-  //鐝粍绫诲瀷
-  teamsType: '',
+  deviceName: '',
+  //鐝粍鍚嶇О
+  teamsGroupsName: '',
   //鐢熶骇鏃ユ湡
-  reportingWorkDate: '',
+  reportingWorkTime: '',
   //鎶ュ伐宸ュ簭
   thisProcess: '',
   //涓婂伐搴�
@@ -53,6 +58,7 @@
 
 
 })
+let detail = ref([])
 
 //瀹氫箟鎺ユ敹鍔犺浇琛ㄥご涓嬫媺鏁版嵁
 const titleSelectJson = ref({
@@ -61,6 +67,12 @@
   processType: [],
   thisProcessType: [],
   mateProcessType: [],
+  historyDevice:[],
+  historyTeams:[],
+  historyProcess:[],
+  breakageType:[],
+  breakageReason:[]
+
 })
 
 //琛ㄥ熬姹傚拰
@@ -72,9 +84,7 @@
   return count.toFixed(2)
 }
 
-const form = reactive({
-  processId: 'NG24022302A01/1'
-})
+
 
 const optionVal = ref('')
 const options = [
@@ -106,7 +116,6 @@
 ]
 
 
-//瀛愮粍浠舵帴鏀跺弬鏁�
 const gridOptions = reactive({
   border: "full",//琛ㄦ牸鍔犺竟妗�
   keepSource: true,//淇濇寔婧愭暟鎹�
@@ -206,52 +215,31 @@
 
     },
     {
-      field: 'breakageNumber',  title: '娆$牬鏁伴噺',
-
+      field: 'breakageQuantity',  title: '娆$牬鏁伴噺',
     },
-    // {field: 'available', width: 80, title: '鍙埄鐢�', editRender: {name: 'input', attrs: {placeholder: ''}}},
-    // {field: 'returnProcess', width: 100, title: '閫�鍥炲伐搴�', editRender: {name: 'input', attrs: {placeholder: ''}}},
-    // {
-    //   field: 'reasonType', width: 100, title: '娆$牬绫诲瀷',
-    //   editRender: {name: 'input', attrs: {placeholder: '', type: 'selected'}}
-    // },
-    // {
-    //   field: 'reasonDamage', width: 100, title: '娆$牬鍘熷洜',
-    //   editRender: {name: 'input', attrs: {placeholder: ''}}
-    // },
-    // {
-    //   field: 'responsibleProcess', width: 100, title: '璐d换宸ュ簭',
-    //   editRender: {},
-    //   slots: {default: 'reportingWordSort_default', edit: 'reportingWordSort'}
-    //   //editRender: {name: 'input', attrs: {placeholder: '',type: 'selected'}},
-    //
-    // },
-    // {
-    //   field: 'responsibleEquipment',
-    //   width: 100,
-    //   title: '璐d换璁惧',
-    //   editRender: {},
-    //   slots: {default: 'reportingDeviceSort_default', edit: 'reportingDeviceSort'}
-    //   // editRender: {name: 'input', attrs: {placeholder: ''}}
-    // },
-    //
-    // {
-    //   field: 'responsibleTeam', width: 100, title: '璐d换鐝粍',
-    //   editRender: {name: 'input', attrs: {placeholder: ''}}
-    // },
-    // {
-    //   field: 'responsibilityPersonnel',
-    //   width: 100,
-    //   title: '璐d换浜哄憳',
-    //   editRender: {name: 'input', attrs: {placeholder: ''}}
-    //
-    // },
     {field: 'completed', width: 90, title: '宸插畬宸�',},
     {field: 'onceBroken', width: 90, title: '宸叉鐮�',},
 
   ],
 //琛ㄥ崟楠岃瘉
-  editRules: {},
+  editRules: {
+    completedQuantity: [
+      {
+        validator ({ row }) {
+          const regex = /^[0-9]\d*$/
+          const brokenNum =
+              (row.breakageQuantity === undefined || row.breakageQuantity===null) ? 0 : row.breakageQuantity
+
+          if (row.completedQuantity && !regex.test(row.completedQuantity)) {
+            return new Error('璇疯緭鍏ユ暣鏁帮紝骞朵笖澶т簬-1')
+          }else if(row.completedQuantity+brokenNum>row.quantity){
+            return new Error((`${row.completedQuantity}+$(brokenNum)>${row.quantity}`))
+          }
+
+        }
+      }
+    ]
+  },
   toolbarConfig: {//琛ㄥご鎸夐挳
     buttons: [
       // {code: 'empty', name: '娓呯┖鎶ュ伐鏁伴噺'},
@@ -259,7 +247,7 @@
       // {code: 'sameDamage', name: '娆$牬鐩稿悓'},
       // {code: 'sameOneCompletion', name: '瀹屽伐涓�鍒楃浉鍚�'},
       // {code: 'sameOneDamage', name: '娆$牬涓�鍒楃浉鍚�'},
-      {code: 'print_lck', name: '淇濆瓨', status: 'primary', icon: 'vxe-icon-save'},
+      {code: 'saveReportingWork', name: '淇濆瓨', status: 'primary', icon: 'vxe-icon-save'},
       {code: 'print_lck', name: '淇濆瓨骞跺鏍�', status: 'primary', icon: 'vxe-icon-save'},
     ],
     // import: false,
@@ -268,39 +256,69 @@
     zoom: true,
     custom: true
   },
-  data: [],//table body瀹為檯鏁版嵁
   //鑴氶儴姹傚拰
-  // footerMethod({columns, data}) {//椤佃剼鍑芥暟
-  //   let footList = ['', '', '', '', '']
-  //   return [
-  //     columns.map((column, columnIndex) => {
-  //       if (columnIndex === 0) {
-  //         return '鍚堣:'
-  //       }
-  //       if (footList.includes(column.field)) {
-  //         return sumNum(data, column.field)
-  //       }
-  //       return ''
-  //     })
-  //   ]
-  // }
+  footerMethod({columns, data}) {//椤佃剼鍑芥暟
+    let footList = ['', '', '', '', '']
+    return [
+      columns.map((column, columnIndex) => {
+        if (columnIndex === 0) {
+          return '鍚堣:'
+        }
+        return ''
+      })
+    ]
+  }
 
 })
 
 let brokenRow = ref()
 const gridEvents = {
+  async toolbarButtonClick({code}) {
+    const $grid = xGrid.value
+    if ($grid) {
+      switch (code) {
+        case 'saveReportingWork':  {
+          if($grid.getTableData().fullData.length===0){
+            ElMessage.warning(`璇烽�夋嫨娴佺▼鍗℃暟鎹甡)
+            return false
+          }
+          const device = titleUploadData.value.deviceName
+          if(device === null || device === undefined || device === ''){
+            ElMessage.error('璇烽�夋嫨鎶ュ伐璁惧锛�')
+            return
+          }
+          const teamsGroupsName = titleUploadData.value.teamsGroupsName
+          if(teamsGroupsName === null || teamsGroupsName === undefined || teamsGroupsName === ''){
+            ElMessage.error('璇烽�夋嫨鎶ュ伐璁惧锛�')
+            return
+          }
+          const errMap = await $grid.validate(true)
+          if (errMap) {
+            ElMessage.error(`鏍¢獙涓嶉�氳繃锛乣)
+            return
+          }
+          saveReportingWork()
+          break
+        }
+      }
+    }
+  },
   cellDblclick (params) {//琛ㄦ牸鍐呭鍙屽嚮鎵撳紑浜у搧鐣岄潰
     const { row } = params
-    brokenRow = row
-    console.log(row)
-    //brokenGrid.value.reload()
-    //brokenVisible.value = true
+    brokenRow.value = row
+    if(brokenRow.value.damageDetails=== undefined){
+      brokenRow.value.damageDetails=[]
+    }
+    //brokenGrid.value.reloadData(brokenRow.damageDetail)
+    //鏀瑰彉brokenVisible鐨勫�艰Е鍙憃penedBrokenTable锛堬級鏂规硶
+    brokenVisible.value = true
+    //console.log(brokenGrid.value)
+
   }
-
-
 }
 
-const brokenGrid =ref()
+
+
 const brokenGridOptions = reactive({
   border: "full",//琛ㄦ牸鍔犺竟妗�
   keepSource: true,//淇濇寔婧愭暟鎹�
@@ -308,11 +326,11 @@
   stripe: true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true, height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
   id: 'CustomerList',
-  showFooter: true,//鏄剧ず鑴�
+  //showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
   exportConfig: {},
-  scrollY: {enabled: true},//寮�鍚櫄鎷熸粴鍔�
+  //scrollY: {enabled: true},//寮�鍚櫄鎷熸粴鍔�
   showOverflow: true,
   columnConfig: {
     resizable: true,
@@ -330,35 +348,39 @@
     showStatus: true
   },//琛ㄥご鍙傛暟
   columns: [
-    //  {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
-    {
-      field: 'order_number',
-      title: '搴忓彿',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      filterMethod: filterChanged
-    },
+    {type: 'seq',fixed:"left", title: '鑷簭', width: 80 },
+    // {
+    //   field: 'order_number',
+    //   title: '搴忓彿'
+    // },
 
     {
-      field: 'breakageNumber',  title: '娆$牬鏁伴噺',
-
-    },
-    {field: 'available',  title: '鍙埄鐢�', editRender: {name: 'input', attrs: {placeholder: ''}}},
-    {field: 'returnProcess', title: '閫�鍥炲伐搴�', editRender: {name: 'input', attrs: {placeholder: ''}}},
-    {
-      field: 'reasonType', title: '娆$牬绫诲瀷',
-      editRender: {name: 'input', attrs: {placeholder: '', type: 'selected'}}
-    },
-    {
-      field: 'reasonDamage', title: '娆$牬鍘熷洜',
+      field: 'breakageQuantity',
+      title: '娆$牬鏁伴噺',
       editRender: {name: 'input', attrs: {placeholder: ''}}
+    },
+    {field: 'available',
+      title: '鍙埄鐢�',
+      slots: {default: 'available'}
+    },
+    {field: 'returnProcess', title: '閫�鍥炲伐搴�',
+      editRender: {},
+      slots: {default: 'returnProcess_default', edit: 'returnProcess'}
+    },
+    {
+      field: 'breakageType', title: '娆$牬绫诲瀷',
+      editRender: {},
+      slots: {default: 'breakageType_default', edit: 'breakageType'}
+    },
+    {
+      field: 'breakageReason', title: '娆$牬鍘熷洜',
+      editRender: {},
+      slots: {default: 'breakageReason_default', edit: 'breakageReason'}
     },
     {
       field: 'responsibleProcess', title: '璐d换宸ュ簭',
       editRender: {},
-      slots: {default: 'reportingWordSort_default', edit: 'reportingWordSort'}
-      //editRender: {name: 'input', attrs: {placeholder: '',type: 'selected'}},
-
+      slots: {default: 'responsibleProcess_default', edit: 'responsibleProcess'}
     },
     {
       field: 'responsibleEquipment',
@@ -370,10 +392,11 @@
 
     {
       field: 'responsibleTeam',  title: '璐d换鐝粍',
-      editRender: {name: 'input', attrs: {placeholder: ''}}
+      editRender: {},
+      slots: {default: 'responsibleTeam_default', edit: 'responsibleTeam'}
     },
     {
-      field: 'responsibilityPersonnel',
+      field: 'responsiblePersonnel',
       title: '璐d换浜哄憳',
       editRender: {name: 'input', attrs: {placeholder: ''}}
 
@@ -381,10 +404,47 @@
 
   ],
 //琛ㄥ崟楠岃瘉
-  editRules: {},
+  editRules: {
+    breakageQuantity: [
+      {
+        validator ({ cellValue }) {
+          const regex = /^[1-9]\d*$/
+          if (!regex.test(cellValue)) {
+            return new Error('杈撳叆澶т簬0鐨勬暣鏁�')
+          }
+        }
+      }
+    ],
+    returnProcess:[
+      {
+        validator ({ row }) {
+          const regex = /^\s*$/i
+          if(row.available===true && (regex.test(row.returnProcess)==='' || row.returnProcess===null)){
+            return new Error('鍙埄鐢ㄥ凡閫夋嫨锛岃閫夋嫨杩斿洖宸ュ簭')
+          }
+        }
+      }
+    ],
+    breakageType: [
+      { required: true, message: '璇烽�夋嫨娆$牬绫诲瀷' }
+    ],
+    breakageReason: [
+      { required: true, message: '璇烽�夋嫨娆$牬鍘熷洜' }
+    ],
+    responsibleProcess: [
+      { required: true, message: '璇烽�夋嫨璐d换宸ュ簭' }
+    ],
+    responsibleEquipment: [
+      { required: true, message: '璇烽�夋嫨璐d换璁惧' }
+    ],
+    responsibleTeam: [
+      { required: true, message: '璐d换鐝粍' }
+    ],
+  },
   toolbarConfig: {//琛ㄥご鎸夐挳
     buttons: [
-      {code: 'print_lck', name: '娣诲姞', status: 'primary', icon: 'vxe-icon-save'},
+      {code: 'addRow', name: '娣诲姞', status: 'primary', icon: 'vxe-icon-square-plus'},
+      {code: 'removeRow', name: '鍒犻櫎', status: 'primary', icon: 'vxe-icon-delete'},
     ],
     // import: false,
     // export: true,
@@ -393,45 +453,154 @@
     custom: true
   },
 })
+const brokenGridEvents = {
+  toolbarButtonClick({code}) {
+    const $grid = brokenGrid.value
+    if ($grid) {
+      switch (code) {
+        case 'addRow':  {
+          $grid.insertAt({})
+          break
+        }
+        case 'removeRow':  {
+          let result = toolbarButtonClickEvent()
+          if(result){
+            $grid.remove(result.row)
+          }
+          break
+        }
+      }
+    }
+  }
+}
+const openedBrokenTable = () => {
+  addListener(brokenGrid.value,brokenGridOptions)
+  let damage =ref(brokenRow.value.damageDetails)
+  brokenGrid.value.reloadData(damage.value)
+  //console.log(brokenRow.value)
+}
+
+
+const checkClose = async (done) => {
+  const errMap = await brokenGrid.value.validate(true)
+  if (errMap) {
+    ElMessage.error(`鏍¢獙涓嶉�氳繃锛乣)
+    return false
+  }
+  let breakageQuantityCount = 0
+  brokenRow.value.breakageQuantity=0
+  brokenGrid.value.getTableData().fullData.forEach((row) =>{
+    breakageQuantityCount+=row.breakageQuantity*1
+  })
+
+  let reportingWorkNum = isNaN(brokenRow.value.completedQuantity*1)?0:brokenRow.value.completedQuantity*1
+  if(breakageQuantityCount+reportingWorkNum>brokenRow.value.quantity*1){
+    ElMessage.warning(`鎹熻�楁暟:'${breakageQuantityCount}'
+                               瀹屽伐鏁�:'${reportingWorkNum}'涔嬪拰${breakageQuantityCount+reportingWorkNum}
+                               涓嶈兘澶т簬${brokenRow.value.quantity*1}`)
+    return false
+  }
+
+  breakageQuantityCount = breakageQuantityCount === 0 ? null : breakageQuantityCount
+  brokenRow.value.breakageQuantity = breakageQuantityCount
+  brokenRow.value.damageDetails=brokenGrid.value.getTableData().fullData
+  done()
+}
+
 
 
 //绗竴娆″姞杞芥暟鎹�
 
 request.post(`/reportingWork/selectProcess`).then((res) => {
-
   if (res.code == 200) {
     titleSelectJson.value.processType = res.data.process;
-    //console.log(titleSelectJson.value.processType)
   } else {
     ElMessage.warning(res.msg)
   }
 })
 
+const saveReportingWork = () => {
+
+  titleUploadData.value.creator = user.user.userName
+  titleUploadData.value.creatorId = user.user.userId
+  const requestDetailData = xGrid.value.getTableData().fullData.filter((row) => {
+    const a = (row.completedQuantity !== undefined && row.completedQuantity !== null && row.completedQuantity !== '')
+    const b = (row.breakageQuantity !== undefined && row.breakageQuantity !== null && row.breakageQuantity !== '')
+    return (a || b)
+  })
+  if(requestDetailData.length === 0){
+    ElMessage.warning('璇峰~鍐欒嚦灏戜竴鏉℃崯鑰楁暟鍜屽畬宸ユ暟')
+    return false
+  }
+
+  const requestData = {
+    title:titleUploadData.value,
+    detail:xGrid.value.getTableData().fullData
+  }
+  console.log(xGrid.value.getTableData().fullData)
+  request.post(`/reportingWork/saveReportingWork`,requestData).then(res =>{
+    if (res.code == 200){
+      ElMessage.success("鎶ュ伐鎴愬姛")
+      router.push({path:'/main/reportingWorks/AddReportingWork',query:{random:Math.random()}})
+    }
+  }).catch(err =>{
+    ElMessage.error(err.message)
+  })
+}
+
+
+//鏌ヨ璐d换璁惧
+const computedDevice = computed((responsibleProcess) => {
+  return function (responsibleProcess){
+    return titleSelectJson.value.historyDevice.filter((item) => {
+      return item.basic_category === responsibleProcess
+    })
+  }
+})
+// 鏌ヨ璐d换鐝粍
+const computedResponsibleTeam = computed((responsibleProcess) => {
+  return function (responsibleProcess){
+    return titleSelectJson.value.historyTeams.filter((item) => {
+      return item.process === responsibleProcess
+    })
+  }
+})
+
+//鍒ゆ柇鏄惁鐐瑰嚮鍙埄鐢� 鏄剧ず杩斿洖宸ュ簭
+const computedReturnProcess =  computed((available) => {
+  return function (available){
+    if(available){
+      return titleSelectJson.value.historyProcess
+    }
+  }
+})
+
+
 //涓嬫媺娆鹃�夋嫨宸ュ簭鏃舵煡璇�
 const getWork = () => {
 
-  let processId = form.processId
+  let processId = titleUploadData.value.processId
   if (processId.indexOf("/") < 0) {
 
-    ElMessage.success("璇疯緭鍏ユ纭牸寮忔祦绋嬪崱")
+    ElMessage.warning("璇疯緭鍏ユ纭牸寮忔祦绋嬪崱")
     return
   }
   let indexOfChar = processId.indexOf("/")
   let leftString = processId.slice(0, indexOfChar)
   if (leftString.length != 13) {
-    ElMessage.success("璇疯緭鍏ユ纭綅鏁扮殑娴佺▼鍗�")
+    ElMessage.warning("璇疯緭鍏ユ纭綅鏁扮殑娴佺▼鍗�")
     return
   }
 //宸ュ簭
   let process = titleUploadData.value.thisProcess
   if (process == "" || process == null) {
 
-    ElMessage.success("璇烽�夋嫨宸ュ簭")
+    ElMessage.warning("璇烽�夋嫨宸ュ簭")
     return
   }
 
   if (titleSelectJson.value.thisProcessType.indexOf(process) == -1 && process != "鍒囧壊" && titleSelectJson.value.thisProcessType != "") {
-    ElMessage.success("姝ゅ伐搴忎笉灞炰簬璇ユ祦绋嬪崱")
+    ElMessage.warning("姝ゅ伐搴忎笉灞炰簬璇ユ祦绋嬪崱")
     return
   }
   //娴佺▼鍗″彿
@@ -443,20 +612,31 @@
     if (res.code == 200) {
       //琛ㄥご璧嬪��
       titleUploadData.value = res.data.data
+      titleUploadData.value.processId = processId
       //璁惧涓嬫媺妗�
       titleSelectJson.value.deviceType = res.data.device
       //鐝粍涓嬫媺妗�
       titleSelectJson.value.teamsType = res.data.teams
       //褰撳墠娴佺▼鍗″伐搴�
       titleSelectJson.value.thisProcessType = res.data.thisProcess
-      //鎶ュ伐鏃堕棿榛樿褰撳ぉ
-      const today = new Date
-      today.setTime(today.getTime())
-      titleUploadData.value.reportingWorkDate = today.getFullYear() +
-          '-' + ("0" + (today.getMonth() + 1)).slice(-2)
-          + '-' + ("0" + today.getDate()).slice(-2)
+      //鍘嗗彶鐝粍
+      titleSelectJson.value.historyTeams= res.data.historyTeams
+      //鍘嗗彶璁惧
+      titleSelectJson.value.historyDevice = res.data.historyDevice
+      //鍘嗗彶宸ュ簭
+      titleSelectJson.value.historyProcess =  res.data.historyProcess
+      //娆$牬绫诲瀷
+      titleSelectJson.value.breakageType =  res.data.breakageType
+      //娆$牬鍘熷洜
+      titleSelectJson.value.breakageReason =  res.data.breakageReason
+      //console.log(res.data)
+      titleUploadData.value.classes='鏃╃彮'
+
+
+      titleUploadData.value.reportingWorkTime = formatCurrentTime()
       //缁戝畾涓嬫柟琛ㄦ牸
-      xGrid.value.reloadData(res.data.Detail)
+      detail.value = res.data.Detail
+      xGrid.value.reloadData(detail.value)
     } else {
       ElMessage.warning(res.msg)
     }
@@ -467,34 +647,45 @@
 const verifyNum = () => {
   const $grid = xGrid.value
   const table = $grid.getTableData().fullData
-  //console.log(table)
   let sum = 0;
   let sumBreak = 0;
   table.forEach((item) => {
     if (item.completedQuantity == null || item.completedQuantity == "") {
       item.completedQuantity = 0;
     }
-    if (item.breakageNumber == null || item.breakageNumber == "") {
-      item.breakageNumber = 0;
+    if (item.breakageQuantity == null || item.breakageQuantity == "") {
+      item.breakageQuantity = 0;
     }
 
     if (item.quantity < item.completedQuantity) {
       ElMessage.success("搴忓彿" + item.order_number + "鐨勬暟閲忎笉鑳藉ぇ浜庝笂宸ュ簭鏁伴噺")
 
 
-    } else if (item.breakageNumber * 1 + item.completedQuantity * 1 > item.quantity * 1) {
+    } else if (item.breakageQuantity * 1 + item.completedQuantity * 1 > item.quantity * 1) {
       ElMessage.success("璇疯緭鍏ュ簭鍙�" + item.order_number + "姝g‘鐨勫畬宸ユ垨娆$牬鏁伴噺")
     }
 
     sum = item.completedQuantity * 1 + sum * 1
 
-    sumBreak = item.breakageNumber * 1 + sumBreak * 1
+    sumBreak = item.breakageQuantity * 1 + sumBreak * 1
 
   })
   titleUploadData.value.thisCompletedQuantity = sum
   titleUploadData.value.thisWornQuantity = sumBreak
 }
 
+//鑾峰彇褰撳墠鏃堕棿
+function formatCurrentTime() {
+  let dateObj = new Date(); // 鍒涘缓涓�涓〃绀哄綋鍓嶆椂闂寸殑Date瀵硅薄
+  let year = dateObj.getFullYear(); // 骞翠唤
+  let month = (dateObj.getMonth() + 1).toString().padStart(2, '0'); // 鏈堜唤锛堟敞鎰忛渶瑕佸姞涓�1锛�
+  let day = dateObj.getDate().toString().padStart(2, '0'); // 澶╂暟
+  let hours = dateObj.getHours().toString().padStart(2, '0'); // 灏忔椂
+  let minutes = dateObj.getMinutes().toString().padStart(2, '0'); // 鍒嗛挓
+  let seconds = dateObj.getSeconds().toString().padStart(2, '0'); // 绉掓暟
+  if(parseInt(hours)>=17)titleUploadData.value.classes='鏅氱彮'
+  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; // 杩斿洖鏍煎紡鍖栧悗鐨勬椂闂村瓧绗︿覆
+}
 
 const ptypeChangeEvent = (row) => {
   // for (let i = 0; i < row.length; i++){
@@ -507,7 +698,7 @@
 <template>
   <div style="height: 100%;width: 100%">
     <div id="head" style="height: 5%;width: 100%;margin-bottom: 5px">
-      <el-input v-model="form.processId" placeholder="娴佺▼鍗″彿" style="width: 200px" @keyup.enter.native="getWork"/>
+      <el-input v-model="titleUploadData.processId" placeholder="娴佺▼鍗″彿" style="width: 200px" @keyup.enter.native="getWork"/>
       &nbsp;
       <el-select v-model="titleUploadData.thisProcess" clearable placeholder="璇烽�夋嫨宸ュ簭" style="width: 120px"
                  @change="getWork">
@@ -548,8 +739,7 @@
           <el-text>瀹㈡埛鍚嶇О锛�</el-text>
         </el-col>
         <el-col :span="3">
-          <el-text class="customClass">{{ titleUploadData.order.customerName }}</el-text>
-
+          <el-text class="customClass"></el-text>
         </el-col>
         <el-col :span="2">
           <el-text>椤圭洰鍚嶇О锛�</el-text>
@@ -564,7 +754,7 @@
           <el-text>鎶ュ伐璁惧锛�</el-text>
         </el-col>
         <el-col :span="3">
-          <el-select v-model="titleUploadData.deviceType" clearable placeholder="璇烽�夋嫨璁惧">
+          <el-select v-model="titleUploadData.deviceName" clearable placeholder="璇烽�夋嫨璁惧">
             <el-option
                 v-for="item in titleSelectJson['deviceType']"
                 :key="item.id"
@@ -606,7 +796,7 @@
           <el-text>鎶ュ伐鐝粍锛�</el-text>
         </el-col>
         <el-col :span="3">
-          <el-select v-model="titleUploadData.teamsType" clearable placeholder="璇烽�夋嫨鐝粍">
+          <el-select v-model="titleUploadData.teamsGroupsName" clearable placeholder="璇烽�夋嫨鐝粍">
             <el-option
                 v-for="item in titleSelectJson['teamsType']"
                 :key="item.id"
@@ -619,7 +809,7 @@
           <el-text>鐝锛�</el-text>
         </el-col>
         <el-col :span="3">
-          <el-select v-model="classesVal" class="processesSt" placeholder="">
+          <el-select v-model="titleUploadData.classes" class="processesSt" placeholder="">
             <el-option
                 v-for="item in classesOption"
                 :key="item.value"
@@ -640,17 +830,19 @@
         </el-col>
         <el-col :span="3">
           <el-date-picker
-              v-model="titleUploadData.reportingWorkDate"
+              v-model="titleUploadData.reportingWorkTime"
+              format="YYYY-MM-DD HH:mm:ss"
+              value-format="YYYY-MM-DD HH:mm:ss"
               placeholder=""
               style="width: 100%"
-              type="date"
+              type="datetime"
           />
         </el-col>
         <el-col :span="2">
           <el-text>澶囨敞锛�</el-text>
         </el-col>
         <el-col :span="3">
-
+          <el-input v-model="titleUploadData.notes" placeholder="" />
         </el-col>
 
       </el-row>
@@ -664,27 +856,9 @@
           v-bind="gridOptions"
           v-on="gridEvents"
           @filter-change="filterChanged"
-          @edit-closed="verifyNum"
 
       >
-        <!--        璐d换宸ュ簭-->
-        <template #reportingWordSort="{ row }">
-          <vxe-select v-model="row.responsibleProcess" transfer @change="ptypeChangeEvent(row)">
-            <vxe-option v-for="item in titleSelectJson.thisProcessType" :key="item" :label="item" :value="item"/>
-          </vxe-select>
-        </template>
-        <template #reportingWordSort_default="{ row }">
-          <span>{{ row.responsibleProcess }}</span>
-        </template>
-        <!--     璐d换璁惧    -->
-        <template #reportingDeviceSort="{ row }">
-          <vxe-select v-model="row.responsibleEquipment" transfer>
-            <vxe-option v-for="item in titleSelectJson.mateProcessType" :key="item" :label="item" :value="item"/>
-          </vxe-select>
-        </template>
-        <template #reportingDeviceSort_default="{ row }">
-          <span>{{ row.responsibleEquipment }}</span>
-        </template>
+
 
         <template #num1_filter="{ column, $panel }">
           <div>
@@ -696,8 +870,109 @@
 
 
       </vxe-grid>
-      <el-dialog v-model="brokenVisible" title="鐮存崯鍒楄〃"  style="width: 80%;height:75% ">
-        <vxe-grid ref="brokenGrid" v-bind="brokenGridOptions">
+      <el-dialog
+          @opened="openedBrokenTable"
+          :before-close="checkClose"
+          v-model="brokenVisible"
+          :close-on-click-modal="false"
+          :close-on-press-escape="false"
+          title="鐮存崯鍒楄〃"
+          style="width: 80%;height:75% ">
+        <vxe-grid
+
+            height="400px"
+            ref="brokenGrid"
+            class="mytable-scrollbar"
+            v-bind="brokenGridOptions"
+            v-on="brokenGridEvents">
+          <!--        杩斿洖宸ュ簭-->
+          <template #returnProcess="{ row }">
+            <vxe-select v-model="row.returnProcess"
+                        filterable
+                        clearable
+                        placeholder="" >
+              <vxe-option v-for="item in computedReturnProcess(row.available)"
+                          :key="item.basic_category"
+                          :label="item.basic_category"
+                          :value="item.basic_category"/>
+            </vxe-select>
+          </template>
+          <template #returnProcess_default="{ row }">
+            <span>{{ row.returnProcess }}</span>
+          </template>
+
+          <!--        璐d换宸ュ簭-->
+          <template #responsibleProcess="{ row }">
+            <vxe-select v-model="row.responsibleProcess"
+                        filterable
+                        clearable
+                        placeholder="" >
+              <vxe-option v-for="item in titleSelectJson.historyProcess"
+                          :key="item.basic_category"
+                          :label="item.basic_category"
+                          :value="item.basic_category"/>
+            </vxe-select>
+          </template>
+          <template #responsibleProcess_default="{ row }">
+            <span>{{ row.responsibleProcess }}</span>
+          </template>
+          <!--     鍒虹牬绫诲瀷breakageType   -->
+          <template #breakageType="{ row }">
+            <vxe-select v-model="row.breakageType "
+                        filterable
+                        clearable
+                        placeholder="">
+              <vxe-option v-for="item in titleSelectJson.breakageType" :key="item.id" :label="item.basic_name" :value="item.basic_name"/>
+            </vxe-select>
+          </template>
+          <template #breakageType_default="{ row }">
+            <span>{{ row.breakageType }}</span>
+          </template>
+
+          <!--娆$牬鍘熷洜-->
+          <template #breakageReason="{ row }">
+            <vxe-select v-model="row.breakageReason "
+                        filterable
+                        clearable
+                        placeholder="">
+              <vxe-option v-for="item in titleSelectJson.breakageReason" :key="item.id" :label="item.basic_name" :value="item.basic_name"/>
+            </vxe-select>
+          </template>
+          <template #breakageReason_default="{ row }">
+            <span>{{ row.breakageReason }}</span>
+          </template>
+
+
+
+          <!--     璐d换璁惧    -->
+          <template #reportingDeviceSort="{ row }">
+            <vxe-select v-model="row.responsibleEquipment"
+                        filterable
+                        clearable
+                        placeholder="">
+              <vxe-option v-for="item in computedDevice(row.responsibleProcess)" :key="item.id" :label="item.basic_name" :value="item.basic_name"/>
+            </vxe-select>
+          </template>
+          <template #reportingDeviceSort_default="{ row }">
+            <span>{{ row.responsibleEquipment }}</span>
+          </template>
+
+          <!--     璐d换璁惧    -->
+          <template #responsibleTeam="{ row }">
+            <vxe-select v-model="row.responsibleTeam"
+                        filterable
+                        clearable
+                        placeholder="">
+              <vxe-option v-for="item in computedResponsibleTeam(row.responsibleProcess)" :key="item.id" :label="item.basic_name" :value="item.basic_name"/>
+            </vxe-select>
+          </template>
+          <template #responsibleTeam_default="{ row }">
+            <span>{{ row.responsibleTeam }}</span>
+          </template>
+          <!--   鍙埄鐢�       -->
+          <template #available="{ row }">
+            <el-checkbox v-model="row.available" />
+          </template>
 
         </vxe-grid>
       </el-dialog>
@@ -768,5 +1043,12 @@
   text-align: center;
   border: #181818 1px solid;
 }
+.vxe-grid {
+  /* 绂佺敤娴忚鍣ㄩ粯璁ら�変腑 */
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
 
 </style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorks.vue b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorks.vue
index 78ed72d..0c12745 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorks.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorks.vue
@@ -4,11 +4,12 @@
 import request from "@/utils/request";
 import deepClone from "@/utils/deepClone";
 import {ElMessage} from "element-plus";
-import {useRouter} from "vue-router";
+import {useRouter,useRoute} from "vue-router";
 import  GlassType from '@/components/basic/product/GlassType.vue'
 
 
 const router = useRouter()
+const route = useRoute()
 let indexFlag=$ref(1)
 function changeRouter(index){
   indexFlag=index
@@ -27,7 +28,7 @@
     </div>
 
     <div id="main-body">
-      <router-view  />
+      <router-view :key="route.fullPath"  />
     </div>
   </div>
 </template>
diff --git a/north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue b/north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue
index 991620b..aaec092 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue
@@ -101,13 +101,12 @@
     {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
     {field: 'select',type:'checkbox',title: '閫夋嫨', width: 80,fixed:"left"},
     {type: 'seq', fixed: "left", title: '鑷簭', width: 50},
-
     {field: 'reworkTeam', width: 120, title: '杩斿伐鐝粍', slots: {default: 'responsibleTeam_default', edit: 'responsibleTeam'}, editRender: {}},
     {field: 'orderId', width: 120, title: '閿�鍞崟鍙�', sortable: true, showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
     {field: 'processId', width: 120, title: '娴佺▼鍗″彿', sortable: true, filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
     {field: 'project', width: 120, title: '椤圭洰鍚嶇О', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
     {field: 'batch', width: 80, title: '鎵规', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis",filterMethod:filterChanged},
-    {field: 'orderNumber', width: 80, title: '搴忓彿', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+    {field: 'orderSort', width: 80, title: '搴忓彿', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
     {field: 'productName', width: 120, title: '鍗曠墖鍚嶇О', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
     {field: 'technologyNumber', width: 80, title: '鏍囪', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis",filterMethod:filterChanged},
     {field: 'glassAddress', width: 90, title: '鐗囨爣璁�', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
diff --git a/north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue b/north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue
index ff99e06..50afd3c 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue
@@ -31,7 +31,7 @@
   if (typeof str != 'undefined' && str != null && str !== '' && str !== '\n' && str !== '\r'){
     ruleForm.value.id = Number(str)
 
-    request.post(`/customer/getseletCustomer/1/100`,ruleForm.value).then((res) => {
+    request.post(`/customer/getSelectCustomer/1/100`,ruleForm.value).then((res) => {
       if(res.code==200){
         ruleForm.value=deepClone(res.data.data[0])
 
diff --git a/north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue b/north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue
index 8f7c0a1..ba137f6 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue
@@ -76,7 +76,7 @@
 })
 
 //绗竴娆¤皟鐢�
-request.post(`/customer/getseletCustomer/1/${total.pageSize}`,filterData.value).then((res) => {
+request.post(`/customer/getSelectCustomer/1/${total.pageSize}`,filterData.value).then((res) => {
 
   if(res.code==200){
     total.dataTotal = res.data.total.total*1
@@ -112,7 +112,7 @@
   }else{
     filterData.value[column.property] = value
   }
-  request.post(`/customer/getseletCustomer/1/${total.pageSize}`,filterData.value).then((res) => {
+  request.post(`/customer/getSelectCustomer/1/${total.pageSize}`,filterData.value).then((res) => {
 
     if(res.code==200){
       total.dataTotal = res.data.total.total*1
@@ -130,7 +130,7 @@
 //鍒嗛〉鏌ヨ
 const selectOrderList = ()=>{
 
-  request.post(`/customer/getseletCustomer/${pageNum.value}/${total.pageSize}`,filterData.value).then((res) => {
+  request.post(`/customer/getSelectCustomer/${pageNum.value}/${total.pageSize}`,filterData.value).then((res) => {
 
     if(res.code==200){
       produceList = deepClone(res.data.data)
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 2424973..ee7e013 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
@@ -126,7 +126,7 @@
     filterData.value.orderId=orderId
     number.value=orderId
     //绗竴娆¤皟鐢�
-    request.post("/Delivery/getseletShippingOrderDetails/1/100",filterData.value).then((res) => {
+    request.post("/Delivery/getSelectShippingOrderDetails/1/100",filterData.value).then((res) => {
 
       if(res.code==200){
         pageTotal.value=res.data.total
@@ -172,7 +172,7 @@
   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) => {
+    request.post("/Delivery/getSelectShippingOrderDetail/1/100",filterData.value).then((res) => {
 
       if(res.code==200){
         pageTotal.value=res.data.total
diff --git a/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue b/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
index 406a9be..24f0b26 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
@@ -57,7 +57,7 @@
 })
 
 //绗竴娆¤皟鐢�
-request.post(`/Delivery/getseletShippingOrder/1/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
+request.post(`/Delivery/getSelectShippingOrder/1/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
 
   if(res.code==200){
     console.log(res.data.data)
@@ -98,7 +98,7 @@
   }else{
     filterData.value[column.property] = value
   }
-  request.post(`/Delivery/getseletShippingOrder/1/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
+  request.post(`/Delivery/getSelectShippingOrder/1/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
 
     if(res.code==200){
       total.dataTotal = res.data.total.total*1
@@ -116,7 +116,7 @@
 
 
 const selectOrderList = ()=>{
-  request.post(`/Delivery/getseletShippingOrder/${pageNum.value}/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
+  request.post(`/Delivery/getSelectShippingOrder/${pageNum.value}/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
 
     if(res.code==200){
       produceList = deepClone(res.data.data)
diff --git a/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue b/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
index e0335aa..cdbf84d 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -141,7 +141,7 @@
     price: [
       {
         validator ({ cellValue }) {
-          const regex = /^(0|[1-9][0-9]{0,4}([.][0-9]{1,2})?)$/
+          const regex = /^(0(\.\d{1,2})?|([1-9]\d{0,4})(\.\d{1,2})?|99999(\.9{1,2})?)$/
           if ( !regex.test(cellValue) ) {
             return new Error('杈撳叆0.00~99999.99鐨勬暟瀛�')
           }
@@ -151,7 +151,7 @@
     computeArea: [
       {
         validator ({ cellValue }) {
-          const regex = /^(0|[1-9][0-9]{0,4}([.][0-9]{1,2})?)$/
+          const regex = /^(0(\.\d{1,2})?|([1-9]\d{0,4})(\.\d{1,2})?|99999(\.9{1,2})?)$/
           if (!regex.test(cellValue)) {
             return new Error('杈撳叆0.00~99999.99鐨勬暟瀛�')
           }
@@ -171,7 +171,7 @@
     width:[
       {
         validator ({ cellValue }) {
-          const regex = /^(0|[1-9][0-9]{0,4}([.][0-9]{1,2})?)$/
+          const regex = /^(0(\.\d{1,2})?|([1-9]\d{0,4})(\.\d{1,2})?|99999(\.9{1,2})?)$/
           if (!regex.test(cellValue)) {
             return new Error('杈撳叆0.00~99999.99鐨勬暟瀛�')
           }
@@ -391,6 +391,11 @@
 }
 //鑾峰彇瀛愰〉闈骇鍝佹柟娉�
 const getProductRow = (row) => {
+  if(row.state!=1){
+    ElMessage.warning('璇ヤ骇鍝佽繕鏈鏍�')
+    return
+  }
+
   rowIndex.productName = row.productName
   rowIndex.productId = row.id
   productVisible.value = false
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/mm/FinishedGoodsInventoryController.java b/north-glass-erp/src/main/java/com/example/erp/controller/mm/FinishedGoodsInventoryController.java
index 2b3682b..0daeba8 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/mm/FinishedGoodsInventoryController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/mm/FinishedGoodsInventoryController.java
@@ -28,23 +28,23 @@
 
     /*鎴愬搧搴撳瓨鏌ヨ*/
     @ApiOperation("鎴愬搧搴撳瓨鏌ヨ鎺ュ彛")
-    @PostMapping("/getselet/{pageNum}/{pageSize}")
+    @PostMapping("/getSelect/{pageNum}/{pageSize}")
     public Result defaultDateFinishedGoodsInventory(@PathVariable Integer pageNum, @PathVariable Integer pageSize, @RequestBody FinishedGoodsInventory finishedGoodsInventory){
         return Result.seccess(finishedGoodsInventoryService.defaultDateFinishedGoodsInventory(pageNum,pageSize,finishedGoodsInventory));
     }
 
     /*鏌ヨ鍙叆搴撶殑鎴愬搧鏁版嵁*/
     @ApiOperation("鍙叆搴撶殑鎴愬搧鏌ヨ鎺ュ彛")
-    @PostMapping("/getseletwarehousing/{pageNum}/{pageSize}")
-    public Result getseletwarehousing(@PathVariable Integer pageNum, @PathVariable Integer pageSize, @RequestBody FlowCard flowCard){
-        return Result.seccess(finishedGoodsInventoryService.getseletwarehousing(pageNum,pageSize,flowCard));
+    @PostMapping("/getSelectWarehousing/{pageNum}/{pageSize}")
+    public Result getSelectWarehousing(@PathVariable Integer pageNum, @PathVariable Integer pageSize, @RequestBody FlowCard flowCard){
+        return Result.seccess(finishedGoodsInventoryService.getSelectWarehousing(pageNum,pageSize,flowCard));
     }
 
     /*鎴愬搧鍏ュ簱*/
     @ApiOperation("鎴愬搧鍏ュ簱鎺ュ彛")
-    @PostMapping("/addseletwarehousing")
-    public Result addseletwarehousing( @RequestBody Map<String,Object>  object){
-        if(finishedGoodsInventoryService.addseletwarehousing(object)){
+    @PostMapping("/addSelectWarehousing")
+    public Result addSelectWarehousing( @RequestBody Map<String,Object>  object){
+        if(finishedGoodsInventoryService.addSelectWarehousing(object)){
             return Result.seccess();
         }else {
            throw new ServiceException(Constants.Code_500,"鍏ュ簱澶辫触");
@@ -54,16 +54,16 @@
 
     /*鏌ヨ鍙彂璐х殑鎴愬搧鏁版嵁*/
     @ApiOperation("鍙彂璐х殑鎴愬搧鏌ヨ鎺ュ彛")
-    @PostMapping("/getseletdeliveryDetail/{pageNum}/{pageSize}")
-    public Result getseletdeliveryDetail(@PathVariable Integer pageNum, @PathVariable Integer pageSize, @RequestBody OrderDetail orderDetail){
-        return Result.seccess(finishedGoodsInventoryService.getseletdeliveryDetail(pageNum,pageSize,orderDetail));
+    @PostMapping("/getSelectDeliveryDetail/{pageNum}/{pageSize}")
+    public Result getSelectDeliveryDetail(@PathVariable Integer pageNum, @PathVariable Integer pageSize, @RequestBody OrderDetail orderDetail){
+        return Result.seccess(finishedGoodsInventoryService.getSelectDeliveryDetail(pageNum,pageSize,orderDetail));
     }
 
     /*鎴愬搧鍙戣揣*/
     @ApiOperation("鎴愬搧鍙戣揣鎺ュ彛")
-    @PostMapping("/adddeliveryDetail")
-    public Result adddeliveryDetail( @RequestBody Map<String,Object>  object){
-        if(finishedGoodsInventoryService.adddeliveryDetail(object)){
+    @PostMapping("/addDeliveryDetail")
+    public Result addDeliveryDetail( @RequestBody Map<String,Object>  object){
+        if(finishedGoodsInventoryService.addDeliveryDetail(object)){
             return Result.seccess();
         }else {
             throw new ServiceException(Constants.Code_500,"鍑哄簱澶辫触");
@@ -94,9 +94,9 @@
 
     /*璋冩嫧璁板綍鏌ヨ*/
     @ApiOperation("璋冩嫧璁板綍鏌ヨ鎺ュ彛")
-    @PostMapping("/getselectAllocateFinishedOperateLog/{pageNum}/{pageSize}/{selectDate}")
-    public Result getselectAllocateFinishedOperateLog(@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate, @RequestBody FinishedOperateLog finishedOperateLog){
-        return Result.seccess(finishedGoodsInventoryService.getselectAllocateFinishedOperateLog(pageNum,pageSize,selectDate,finishedOperateLog));
+    @PostMapping("/getSelectAllocateFinishedOperateLog/{pageNum}/{pageSize}/{selectDate}")
+    public Result getSelectAllocateFinishedOperateLog(@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate, @RequestBody FinishedOperateLog finishedOperateLog){
+        return Result.seccess(finishedGoodsInventoryService.getSelectAllocateFinishedOperateLog(pageNum,pageSize,selectDate,finishedOperateLog));
     }
 
     /*璁㈠崟棰嗗嚭*/
@@ -151,8 +151,8 @@
     }
     /*璁㈠崟鍙嶅*/
     @ApiOperation("璁㈠崟鍙嶅鎺ュ彛")
-    @PostMapping("/updateFinishedGoodsInventoryCounterexamination")
-    public Result updateFinishedGoodsInventoryCounterexamination( @RequestBody Map<String,Object>  object){
+    @PostMapping("/updateFinishedGoodsInventoryCounterExamination")
+    public Result updateFinishedGoodsInventoryCounterExamination( @RequestBody Map<String,Object>  object){
 
         if(finishedGoodsInventoryService.updateFinishedGoodsInventoryToExamine(object,"鍙嶅")){
             return Result.seccess();
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/pp/ReplenishController.java b/north-glass-erp/src/main/java/com/example/erp/controller/pp/ReplenishController.java
new file mode 100644
index 0000000..cf35d80
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/pp/ReplenishController.java
@@ -0,0 +1,65 @@
+package com.example.erp.controller.pp;
+
+import com.example.erp.common.Constants;
+import com.example.erp.common.Result;
+import com.example.erp.entity.pp.PatchLog;
+import com.example.erp.entity.pp.Rework;
+import com.example.erp.exception.ServiceException;
+import com.example.erp.service.pp.ReplenishService;
+import com.example.erp.service.pp.ReworkService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/Replenish")
+public class ReplenishController {
+
+    @Autowired
+    ReplenishService replenishService;
+
+
+
+    /*鍙戣揣璁㈠崟鏌ヨ*/
+    @ApiOperation("琛ョ墖鏂板鏌ヨ鎺ュ彛")
+    @PostMapping("/getSelectReplenish/{pageNum}/{pageSize}")
+    public Result getSelectReplenish(@PathVariable Integer pageNum, @PathVariable Integer pageSize){
+        return Result.seccess(replenishService.getSelectReplenish(pageNum,pageSize));
+    }
+
+    @ApiOperation("琛ョ墖鏌ヨ鎺ュ彛")
+    @PostMapping("/SelectReplenish/{pageNum}/{pageSize}/{selectDate}")
+    public Result SelectReplenish(@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate,@RequestBody PatchLog patchLog){
+        return Result.seccess(replenishService.SelectReplenish(pageNum,pageSize,selectDate,patchLog));
+    }
+
+
+    @ApiOperation("琛ョ墖鏂板鎺ュ彛")
+    @PostMapping("/saveReplenish")
+    public Result updateFinishedGoodsInventoryAllocate( @RequestBody Map<String,Object> object){
+        if(replenishService.saveReplenish(object)){
+
+            return Result.seccess();
+
+        }else {
+            throw new ServiceException(Constants.Code_500,"杩斿伐澶辫触");
+
+        }
+    }
+
+    @ApiOperation("璁㈠崟璋冩嫧鎺ュ彛")
+    @PostMapping("/updateReplenish")
+    public Result updateReplenish( @RequestBody Map<String,Object> object){
+        if(replenishService.updateReplenish(object)){
+
+            return Result.seccess();
+
+        }else {
+            throw new ServiceException(Constants.Code_500,"瀹℃牳澶辫触");
+
+        }
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportingWorkController.java b/north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportingWorkController.java
index 7fe292f..d2efb21 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportingWorkController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportingWorkController.java
@@ -29,5 +29,10 @@
         return  Result.seccess(reportingWorkService.SelectProcessSv());
     }
 
+    @PostMapping  ("/saveReportingWork")
+    public Result SaveReportingWork(@RequestBody Map<String,Object> reportingWork)  {
+        return  Result.seccess(reportingWorkService.SaveReportingWorkSv(reportingWork));
+    }
+
 
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/pp/ReworkController.java b/north-glass-erp/src/main/java/com/example/erp/controller/pp/ReworkController.java
index dd9ff1e..948865d 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/pp/ReworkController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/pp/ReworkController.java
@@ -24,20 +24,20 @@
 
 
     /*鍙戣揣璁㈠崟鏌ヨ*/
-    @ApiOperation("鍙戣揣璁㈠崟鏌ヨ鎺ュ彛")
+    @ApiOperation("鍙繑宸ユ暟鎹煡璇㈡帴鍙�")
     @PostMapping("/getSelectRework/{pageNum}/{pageSize}")
     public Result getSelectRework(@PathVariable Integer pageNum, @PathVariable Integer pageSize){
         return Result.seccess(reworkService.getSelectRework(pageNum,pageSize));
     }
 
-    @ApiOperation("鍙戣揣璁㈠崟鏌ヨ鎺ュ彛")
+    @ApiOperation("杩斿伐鏁版嵁鏌ヨ鎺ュ彛")
     @PostMapping("/SelectRework/{pageNum}/{pageSize}/{selectDate}")
     public Result SelectRework(@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate,@RequestBody Rework rework){
         return Result.seccess(reworkService.SelectRework(pageNum,pageSize,selectDate,rework));
     }
 
 
-    @ApiOperation("璁㈠崟璋冩嫧鎺ュ彛")
+    @ApiOperation("杩斿伐鎺ュ彛")
     @PostMapping("/saveRework")
     public Result updateFinishedGoodsInventoryAllocate( @RequestBody Map<String,Object> object){
         if(reworkService.saveRework(object)){
@@ -50,7 +50,7 @@
         }
     }
 
-    @ApiOperation("璁㈠崟璋冩嫧鎺ュ彛")
+    @ApiOperation("瀹℃牳鎺ュ彛")
     @PostMapping("/updateRework")
     public Result updateRework( @RequestBody Map<String,Object> object){
         if(reworkService.updateRework(object)){
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/sd/CustomerController.java b/north-glass-erp/src/main/java/com/example/erp/controller/sd/CustomerController.java
index 1f41cbf..dd6c85d 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/sd/CustomerController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/sd/CustomerController.java
@@ -28,9 +28,9 @@
 
     /*鍙戣揣璁㈠崟鏌ヨ*/
     @ApiOperation("瀹㈡埛鏌ヨ鎺ュ彛")
-    @PostMapping("/getseletCustomer/{pageNum}/{pageSize}")
-    public Result getseletShippingOrder(@PathVariable Integer pageNum, @PathVariable Integer pageSize, @RequestBody Customer customer){
-        return Result.seccess(customerService.getseletCustomer(pageNum,pageSize,customer));
+    @PostMapping("/getSelectCustomer/{pageNum}/{pageSize}")
+    public Result getSelectShippingOrder(@PathVariable Integer pageNum, @PathVariable Integer pageSize, @RequestBody Customer customer){
+        return Result.seccess(customerService.getSelectCustomer(pageNum,pageSize,customer));
     }
 
     @ApiOperation("瀹㈡埛鏂板淇敼鎺ュ彛")
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java b/north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java
index 206cbec..73720a7 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java
@@ -28,16 +28,16 @@
 
     /*鍙戣揣璁㈠崟鏌ヨ*/
     @ApiOperation("鍙戣揣璁㈠崟鏌ヨ鎺ュ彛")
-    @PostMapping("/getseletShippingOrder/{pageNum}/{pageSize}/{selectDate}")
-    public Result getseletShippingOrder(@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate, @RequestBody Delivery delivery){
-        return Result.seccess(deliveryService.getseletShippingOrder(pageNum,pageSize,selectDate,delivery));
+    @PostMapping("/getSelectShippingOrder/{pageNum}/{pageSize}/{selectDate}")
+    public Result getSelectShippingOrder(@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate, @RequestBody Delivery delivery){
+        return Result.seccess(deliveryService.getSelectShippingOrder(pageNum,pageSize,selectDate,delivery));
     }
 
     /*鍙戣揣璁㈠崟鏄庣粏鏌ヨ*/
     @ApiOperation("鍙戣揣缂栬緫璁㈠崟鏄庣粏鏌ヨ鎺ュ彛")
-    @PostMapping("/getseletShippingOrderDetail/{pageNum}/{pageSize}")
-    public Result getseletShippingOrderDetail(@PathVariable Integer pageNum, @PathVariable Integer pageSize,  @RequestBody OrderDetail orderDetail){
-        return Result.seccess(deliveryService.getseletShippingOrderDetail(pageNum,pageSize,orderDetail));
+    @PostMapping("/getSelectShippingOrderDetail/{pageNum}/{pageSize}")
+    public Result getSelectShippingOrderDetail(@PathVariable Integer pageNum, @PathVariable Integer pageSize,  @RequestBody OrderDetail orderDetail){
+        return Result.seccess(deliveryService.getSelectShippingOrderDetail(pageNum,pageSize,orderDetail));
     }
 
     /*搴撳瓨鍙彂璐ц鍗曟煡璇�*/
@@ -49,9 +49,9 @@
 
     /*鍙戣揣璁㈠崟鏄庣粏鏌ヨ*/
     @ApiOperation("鍙戣揣鏂板璁㈠崟鏄庣粏鏌ヨ鎺ュ彛")
-    @PostMapping("/getseletShippingOrderDetails/{pageNum}/{pageSize}")
-    public Result getseletShippingOrderDetails(@PathVariable Integer pageNum, @PathVariable Integer pageSize, @RequestBody OrderDetail orderDetail){
-        return Result.seccess(deliveryService.getseletShippingOrderDetails(pageNum,pageSize,orderDetail));
+    @PostMapping("/getSelectShippingOrderDetails/{pageNum}/{pageSize}")
+    public Result getSelectShippingOrderDetails(@PathVariable Integer pageNum, @PathVariable Integer pageSize, @RequestBody OrderDetail orderDetail){
+        return Result.seccess(deliveryService.getSelectShippingOrderDetails(pageNum,pageSize,orderDetail));
     }
     @ApiOperation("鍙戣揣鏂板鎺ュ彛")
     @PostMapping("/insertDelivery")
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/pp/DamageDetails.java b/north-glass-erp/src/main/java/com/example/erp/entity/pp/DamageDetails.java
index 9c03fa7..9470122 100644
--- a/north-glass-erp/src/main/java/com/example/erp/entity/pp/DamageDetails.java
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/pp/DamageDetails.java
@@ -43,4 +43,6 @@
     private Integer patchStatus;
     //璐ㄦ鐘舵��
     private Integer qualityInsStatus;
+    //鏁伴噺
+    private Integer quantity;
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/pp/PatchLog.java b/north-glass-erp/src/main/java/com/example/erp/entity/pp/PatchLog.java
new file mode 100644
index 0000000..e8120a1
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/pp/PatchLog.java
@@ -0,0 +1,47 @@
+package com.example.erp.entity.pp;
+
+import lombok.Data;
+
+import java.time.LocalDate;
+
+@Data
+public class PatchLog {
+    //鑷id
+    private Long id;
+    //琛ョ墖缂栧彿
+    private String patchId;
+    //娴佺▼鍗″彿
+    private String processId;
+    //琛ョ墖绫诲瀷
+    private String patchType;
+    //琛ョ墖鍘熷洜
+    private String patchReason;
+    //琛ョ墖宸ュ簭
+    private String patchProcesses;
+    //琛ョ墖鏁伴噺
+    private Integer patchNum;
+    //琛ョ墖闈㈢Н
+    private Double patchArea;
+    //琛ョ墖鐝粍
+    private String patchTeam;
+    //瀹℃牳浜�
+    private String reviewer;
+    //瀹℃牳鐘舵��
+    private Integer reviewStatus;
+    //鍒涘缓鏃堕棿
+    private LocalDate createTime;
+    //淇敼鏃堕棿
+    private LocalDate updateTime;
+
+    private String orderId;
+    private String responsiblePersonnel;
+    private String orderSort;
+    private Integer technologyNumber;
+    private String responsibleTeam;
+    private String qualityInspector;
+    private String responsibleEquipment;
+    private String reportingWorkId;
+
+    //澶栭敭娴佺▼鍗¤〃
+    private FlowCard flowCard;
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/pp/ReportingWork.java b/north-glass-erp/src/main/java/com/example/erp/entity/pp/ReportingWork.java
index 404f103..f113d68 100644
--- a/north-glass-erp/src/main/java/com/example/erp/entity/pp/ReportingWork.java
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/pp/ReportingWork.java
@@ -1,11 +1,14 @@
 package com.example.erp.entity.pp;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.example.erp.entity.sd.Order;
 import lombok.Data;
 
 import java.time.LocalDate;
+import java.time.LocalDateTime;
+
 @Data
 public class ReportingWork {
     @TableId(type = IdType.AUTO)
@@ -56,7 +59,7 @@
     //鍖呰鏂瑰紡
     private String packagingMethod;
     //鎶ュ伐鏃堕棿
-    private LocalDate reportingWorkTime;
+    private LocalDateTime reportingWorkTime;
     //瀹℃牳鏃堕棿
     private LocalDate examineTime;
     //璐ㄦ鏃堕棿
@@ -66,11 +69,18 @@
     //淇敼鏃堕棿
     private LocalDate updateTime;
 
+    //鍒涘缓鑰�
+    private String creatorId ;
+    private String creator ;
 
+
+    @TableField(select = false,exist= false)
     private Order order;
     //澶栭敭娴佺▼鍗¤〃
+    @TableField(select = false,exist= false)
     private FlowCard flowCard;
-    private ReportingWork reportingWork;
-
+//    @TableField(select = false,exist= false)
+//    private ReportingWork reportingWork;
+    @TableField(select = false,exist= false)
     private  ReportingWorkDetail reportingWorkDetail;
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/pp/ReportingWorkDetail.java b/north-glass-erp/src/main/java/com/example/erp/entity/pp/ReportingWorkDetail.java
index 1ed3fc0..6cac444 100644
--- a/north-glass-erp/src/main/java/com/example/erp/entity/pp/ReportingWorkDetail.java
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/pp/ReportingWorkDetail.java
@@ -1,14 +1,19 @@
 package com.example.erp.entity.pp;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.example.erp.entity.sd.Order;
 import com.example.erp.entity.sd.OrderDetail;
 import com.example.erp.entity.sd.OrderGlassDetail;
 import lombok.Data;
 
 import java.time.LocalDate;
+import java.util.List;
 
 @Data
 public class ReportingWorkDetail {
+    @TableId(type = IdType.AUTO)
     //鑷ID
     private Integer id;
     //鎶ュ伐缂栧彿
@@ -18,9 +23,9 @@
     //宸ヨ壓纭搴忓彿
     private String technologyNumber;
     //瀹屽伐鏁伴噺
-    private Integer completedQuantity;
+    private int completedQuantity;
     //娆$牬鏁伴噺
-    private Integer breakageQuantity;
+    private int breakageQuantity;
     //娆$牬鍘熷洜
     private String breakageReason;
     //绫诲瀷
@@ -62,13 +67,22 @@
     //杩斿伐鏇存柊鏃堕棿
     private LocalDate reworkUpdateTime;
     //杩斿伐闈㈢Н
-    private double reworkArea;
+   // private double reworkArea;
+
+    //娆$牬鍒楄〃
+    @TableField(select = false,exist= false)
+    private List<DamageDetails>
+    damageDetails;
 
 
     //澶栭敭鎶ュ伐涓昏〃
+    @TableField(select = false,exist= false)
     private ReportingWork reportingWork;
+    @TableField(select = false,exist= false)
     private Order order;
+    @TableField(select = false,exist= false)
     private OrderDetail orderDetail;
+    @TableField(select = false,exist= false)
     private OrderGlassDetail orderGlassDetail;
 
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/pp/Rework.java b/north-glass-erp/src/main/java/com/example/erp/entity/pp/Rework.java
index 698e18c..30cd336 100644
--- a/north-glass-erp/src/main/java/com/example/erp/entity/pp/Rework.java
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/pp/Rework.java
@@ -6,7 +6,7 @@
 @Data
 public class Rework {
     //鑷id
-    private Integer id;
+    private Long id;
     //杩斿伐缂栧彿
     private String reworkId;
     //娴佺▼鍗″彿
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderProcessDetail.java b/north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderProcessDetail.java
index 1953eb8..1ac96a6 100644
--- a/north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderProcessDetail.java
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderProcessDetail.java
@@ -2,9 +2,11 @@
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
 @Data
+@TableName("sd.order_process_detail")
 public class OrderProcessDetail {
     @TableId(type = IdType.AUTO)
 
@@ -13,8 +15,9 @@
     private String orderNumber;
     private Integer technologyNumber;
     private String process;
-    private Integer reportingworkNum;
-    private Integer brokenNum;
+    private int reportingWorkNumCount;
+    private int reportingWorkNum;
+    private int brokenNum;
 
 //    private Order order;
 //    private OrderDetail orderDetail;
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedGoodsInventoryMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedGoodsInventoryMapper.java
index e5be1ce..c0bac76 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedGoodsInventoryMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedGoodsInventoryMapper.java
@@ -24,11 +24,11 @@
 
     Map<String,Integer> getPageTotal(Integer offset, Integer pageSize, FinishedGoodsInventory finishedGoodsInventory);
 
-    List<FlowCard> getseletwarehousing(@Param("offset") Integer offset,
+    List<FlowCard> getSelectWarehousing(@Param("offset") Integer offset,
                                        @Param("pageSize") Integer pageSize,
                                        @Param("flowCard") FlowCard flowCard);
 
-    Map<String,Integer> getseletwarehousingPageTotal(Integer offset, Integer pageSize,FlowCard flowCard);
+    Map<String,Integer> getSelectWarehousingPageTotal(Integer offset, Integer pageSize,FlowCard flowCard);
 
     Integer findOrderNumberdcount(@Param("orderId") String orderId,
                                   @Param("orderNumber") Integer orderNumber);
@@ -73,11 +73,11 @@
                                          @Param("remark") String remark);
 
 
-    List<OrderDetail> getseletdeliveryDetail(@Param("offset") Integer offset,
+    List<OrderDetail> getSelectDeliveryDetail(@Param("offset") Integer offset,
                                                       @Param("pageSize") Integer pageSize,
                                                       @Param("orderDetail") OrderDetail orderDetail);
 
-    Map<String,Integer> getseletdeliveryDetailPageTotal(Integer offset, Integer pageSize,OrderDetail orderDetail);
+    Map<String,Integer> getSelectDeliveryDetailPageTotal(Integer offset, Integer pageSize,OrderDetail orderDetail);
 
     List<OrderDetail> getSelectAllocate(@Param("offset") Integer offset,
                                         @Param("pageSize") Integer pageSize,
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/DamageDetailsMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/DamageDetailsMapper.java
new file mode 100644
index 0000000..ce5ee0e
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/DamageDetailsMapper.java
@@ -0,0 +1,9 @@
+package com.example.erp.mapper.pp;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.erp.entity.pp.DamageDetails;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DamageDetailsMapper extends BaseMapper<DamageDetails> {
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/PatchLogMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/PatchLogMapper.java
new file mode 100644
index 0000000..dac814c
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/PatchLogMapper.java
@@ -0,0 +1,33 @@
+package com.example.erp.mapper.pp;
+
+import com.example.erp.entity.pp.PatchLog;
+import com.example.erp.entity.pp.Rework;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface PatchLogMapper {
+
+    List<Map<String,Object>> SelectReplenish(@Param("offset") Integer offset,@Param("pageSize") Integer pageSiz,String startDate,String endDate,PatchLog patchLog);
+
+    Map<String,Integer> SelectReplenishPageTotal(@Param("offset") Integer offset,@Param("pageSize") Integer pageSiz,String startDate,String endDate,PatchLog patchLog);
+
+
+
+
+    Integer getMaximum();
+
+    Boolean insertReplenish(@Param("patchLog") PatchLog patchLog , @Param("oddNumber") String oddNumber);
+
+    Boolean updateDamageDetails(@Param("patchLog") PatchLog patchLog);
+
+    Boolean updateReplenish(@Param("patchLog") PatchLog patchLog ,  @Param("userName") String userName);
+
+    List<Map<String,Object>> getSelectReplenish(@Param("offset") Integer offset, @Param("pageSize") Integer pageSiz);
+
+
+}
+
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkDetailMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkDetailMapper.java
index 15e8fca..63ac97f 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkDetailMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkDetailMapper.java
@@ -1,6 +1,7 @@
 package com.example.erp.mapper.pp;
 
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.example.erp.entity.pp.ReportingWorkDetail;
 import com.example.erp.entity.pp.Rework;
 import org.apache.ibatis.annotations.Mapper;
@@ -9,7 +10,7 @@
 import java.util.List;
 
 @Mapper
-public interface ReportingWorkDetailMapper {
+public interface ReportingWorkDetailMapper extends BaseMapper<ReportingWorkDetail> {
     /*List<ReportingWorkDetail> getDetail();*/
 
     /*鏌ヨ杩斿伐鏂板鏁版嵁*/
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 a383476..a893ed4 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
@@ -1,4 +1,5 @@
 package com.example.erp.mapper.pp;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.example.erp.entity.pp.BasicDataProduce;
 import com.example.erp.entity.pp.ReportingWork;
 import com.example.erp.entity.pp.ReportingWorkDetail;
@@ -10,7 +11,7 @@
 import java.util.Map;
 
 @Mapper
-public interface ReportingWorkMapper {
+public interface ReportingWorkMapper extends BaseMapper<ReportingWork> {
 
 
     ReportingWork AddSelectLastWorkMp(String processIdStr, String technologyStr,String previousProcess,String nextProcess,String process);
@@ -23,7 +24,7 @@
 
     String SelectWorkTechnologyMp(String processIdStr);
 
-    List<Map<String,String>> SelectTechnologicalNumMp(String processIdStr, String technologyStr);
+    List<Map<String,String>> SelectTechnologicalNumMp(String processIdStr, String technologyStr,String process);
 
     List<Map<String,String>> SelectReworlDetailMp(String processIdStr, String technologyStr, String previousProcess);
 
@@ -33,7 +34,11 @@
 
     List<Map<String,String>> historyDeviceMp(String historyProcess, String process);
 
-    List<Map<String,String>> historyTeamsMp(String historyProcess, String process);
+    List<Map<String,String>> historyTeamsMp(String processIdStr, String process);
 
     List<Map<String,String>> SelectHistoryProcessMp(String historyProcess, String process);
+
+    List<Map<String,BasicDataProduce>>  selectBasicNameByType(String type);
+
+    Integer selectMaxReportingWorkId();
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReworkMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReworkMapper.java
index 175a79e..9365d91 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReworkMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReworkMapper.java
@@ -24,8 +24,12 @@
 
     Boolean insertRework(@Param("rework") Rework rework ,  @Param("oddNumber") String oddNumber);
 
-    Boolean updateReportingWorkDetail(@Param("rework") Rework rework);
+    Boolean updateDamageDetails(@Param("rework") Rework rework);
 
     Boolean updateRework(@Param("rework") Rework rework ,  @Param("userName") String userName);
+
+    List<Map<String,Object>> getSelectReplenish(@Param("offset") Integer offset, @Param("pageSize") Integer pageSiz);
+
+    Integer getMaxFlowCard(@Param("processId") String processId);
 }
 
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/CustomerMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/CustomerMapper.java
index d6705cb..d286f2c 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/CustomerMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/CustomerMapper.java
@@ -13,12 +13,12 @@
 public interface CustomerMapper extends CrudRepository<Customer,Long> {
 
     List<Customer> getCustomerList();
-    List<Customer> getseletCustomer(@Param("offset") Integer offset,
+    List<Customer> getSelectCustomer(@Param("offset") Integer offset,
                                          @Param("pageSize") Integer pageSize,
                                          @Param("customer") Customer customer);
 
 
-    Map<String,Integer> getseletCustomerPageTotal(Integer offset, Integer pageSize, Customer customer);
+    Map<String,Integer> getSelectCustomerPageTotal(Integer offset, Integer pageSize, Customer customer);
 
     Boolean insertCustomer(@Param("customer") Customer customer);
 
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 6c2128f..23d6e09 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
@@ -13,15 +13,15 @@
 @Mapper
 public interface DeliveryDetailMapper extends CrudRepository<DeliveryDetail,Long> {
 
-    List<DeliveryDetail> getseletShippingOrderDetail(@Param("offset") Integer offset,
+    List<DeliveryDetail> getSelectShippingOrderDetail(@Param("offset") Integer offset,
                                                       @Param("pageSize") Integer pageSize,
                                                       @Param("orderDetail") OrderDetail orderDetail);
 
 
 
-    Integer getseletShippingOrderDetailPageTotal(Integer offset, Integer pageSize,OrderDetail orderDetail);
+    Integer getSelectShippingOrderDetailPageTotal(Integer offset, Integer pageSize,OrderDetail orderDetail);
 
-    List<DeliveryDetail> getseletShippingOrderDetails(@Param("offset") Integer offset,
+    List<DeliveryDetail> getSelectShippingOrderDetails(@Param("offset") Integer offset,
                                                      @Param("pageSize") Integer pageSize,
                                                      @Param("orderDetail") OrderDetail orderDetail);
 
@@ -29,7 +29,7 @@
 
 
 
-    Integer getseletShippingOrderDetailsPageTotal(Integer offset, Integer pageSize,OrderDetail orderDetail);
+    Integer getSelectShippingOrderDetailsPageTotal(Integer offset, Integer pageSize,OrderDetail orderDetail);
 
     Boolean insertDeliveryDetail(@Param("orderDetail") OrderDetail orderDetail, @Param("number") String number,@Param("deliveryNumber") Integer deliveryNumber);
 
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryMapper.java
index 02263f8..2dbb88b 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryMapper.java
@@ -15,18 +15,18 @@
 @Mapper
 public interface DeliveryMapper extends CrudRepository<Delivery,Long> {
 
-    List<Delivery> getseletShippingOrder(@Param("offset") Integer offset,
+    List<Delivery> getSelectShippingOrder(@Param("offset") Integer offset,
                                                       @Param("pageSize") Integer pageSize,String startDate, String endDate,
                                                       @Param("delivery") Delivery delivery);
 
-   Delivery getseletShippingOrderDetaildelivery(@Param("offset") Integer offset,
+   Delivery getSelectShippingOrderDetailDelivery(@Param("offset") Integer offset,
                                                              @Param("pageSize") Integer pageSize,
                                                              @Param("orderDetail") OrderDetail orderDetail);
 
-    Order getseletShippingOrderDetaildeliverys(@Param("offset") Integer offset,
+    Order getSelectShippingOrderDetailDeliverys(@Param("offset") Integer offset,
                                                  @Param("pageSize") Integer pageSize,
                                                  @Param("orderDetail") OrderDetail orderDetail);
-    Map<String,Integer> getseletShippingOrderPageTotal(Integer offset, Integer pageSize, String startDate, String endDate, Delivery delivery);
+    Map<String,Integer> getSelectShippingOrderPageTotal(Integer offset, Integer pageSize, String startDate, String endDate, Delivery delivery);
 
     List<Order> getSelectOrderInventory(@Param("offset") Integer offset,
                                         @Param("pageSize") Integer pageSize,String startDate, String endDate,
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderProcessDetailMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderProcessDetailMapper.java
index 3df000e..63e5757 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderProcessDetailMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderProcessDetailMapper.java
@@ -1,5 +1,6 @@
 package com.example.erp.mapper.sd;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.example.erp.entity.sd.OrderProcessDetail;
 import org.apache.ibatis.annotations.Mapper;
@@ -8,6 +9,7 @@
 import java.util.List;
 
 @Mapper
+@DS("sd")
 public interface OrderProcessDetailMapper extends BaseMapper<OrderProcessDetail> {
     boolean insertOrderProcessDetail(@Param("processDetailList") List<OrderProcessDetail> processDetailList);
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java b/north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java
index 902725d..6635252 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java
@@ -44,36 +44,37 @@
         return map;
     }
 
-    public Map<String, Object> getseletwarehousing(Integer pageNum, Integer pageSize, FlowCard flowCard) {
+    public Map<String, Object> getSelectWarehousing(Integer pageNum, Integer pageSize, FlowCard flowCard) {
         Integer offset = (pageNum - 1) * pageSize;
         Map<String, Object> map = new HashMap<>();
-        map.put("data", finishedGoodsInventoryMapper.getseletwarehousing(offset, pageSize, flowCard));
-        map.put("total", finishedGoodsInventoryMapper.getseletwarehousingPageTotal(offset, pageSize, flowCard));
+        map.put("data", finishedGoodsInventoryMapper.getSelectWarehousing(offset, pageSize, flowCard));
+        map.put("total", finishedGoodsInventoryMapper.getSelectWarehousingPageTotal(offset, pageSize, flowCard));
 
         return map;
     }
 
-    public Boolean addseletwarehousing(Map<String,Object> object) {
-        Boolean isinsert=false;
+    public Boolean addSelectWarehousing(Map<String,Object> object) {
+        boolean saveState = true;
+        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+        try {
+            //瀹氫箟鍓嶇浼犺緭鐨勬暟鎹�
+            String storageRegion = "";
+            String remark = "";
+            if (object.get("remark") != null) {
+                remark = object.get("remark").toString();
+            }
+            if (object.get("storageRegion") != null) {
+                storageRegion = object.get("storageRegion").toString();
+            }
 
-        //瀹氫箟鍓嶇浼犺緭鐨勬暟鎹�
-        String storageRegion = "";
-        String remark = "";
-        if (object.get("remark") != null) {
-            remark = object.get("remark").toString();
-        }
-        if (object.get("storageRegion") != null) {
-            storageRegion = object.get("storageRegion").toString();
-        }
-
-        String userName = "";
-        String userId = "";
-        if (object.get("userName") != null) {
-            userName = object.get("userName").toString();
-        }
-        if (object.get("userId") != null) {
-            userId = object.get("userId").toString();
-        }
+            String userName = "";
+            String userId = "";
+            if (object.get("userName") != null) {
+                userName = object.get("userName").toString();
+            }
+            if (object.get("userId") != null) {
+                userId = object.get("userId").toString();
+            }
 
             //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
             List<FlowCard> flowCardlist = JSONArray.parseArray(JSONObject.toJSONString(object.get("flowcard")), FlowCard.class);
@@ -100,7 +101,6 @@
                             //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
                             finishedGoodsInventoryMapper.updateOrderWarehousingState(flowCard.getOrder().getOrderId(),2);
                         }
-                        isinsert=true;
                     } else {
                         if (finishedGoodsInventoryMapper.insertFinishedGoodsInventory(flowCard, storageRegion, remark)) {
                             //淇敼娴佺▼鍗¤〃鍏ュ簱鏁伴噺
@@ -109,32 +109,40 @@
                             finishedGoodsInventoryMapper.updateIntOrderNumberConut(flowCard.getOrder().getOrderId(),flowCard.getOrderNumber(),flowCard.getInventoryQuantity());
                             //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
                             finishedGoodsInventoryMapper.updateOrderWarehousingState(flowCard.getOrder().getOrderId(),1);
-                            isinsert=true;
-                        } else {
-                            isinsert= false;
+
                         }
                     }
                 }
-                return isinsert;
             }else{
                 return false;
             }
 
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+            //灏嗗紓甯镐紶鍏ユ暟鎹簱
+            SysError sysError = new SysError();
+            sysError.setError(e.toString());
+            sysError.setFunc("saveOrder");
+            sysErrorService.insert(sysError);
+            saveState = false;
 
+        }
+
+        return saveState;
 
     }
 
 
-    public Map<String, Object> getseletdeliveryDetail(Integer pageNum, Integer pageSize, OrderDetail orderDetail) {
+    public Map<String, Object> getSelectDeliveryDetail(Integer pageNum, Integer pageSize, OrderDetail orderDetail) {
         Integer offset = (pageNum - 1) * pageSize;
         Map<String, Object> map = new HashMap<>();
-        map.put("data", finishedGoodsInventoryMapper.getseletdeliveryDetail(offset, pageSize, orderDetail));
-        map.put("total", finishedGoodsInventoryMapper.getseletdeliveryDetailPageTotal(offset, pageSize, orderDetail));
+        map.put("data", finishedGoodsInventoryMapper.getSelectDeliveryDetail(offset, pageSize, orderDetail));
+        map.put("total", finishedGoodsInventoryMapper.getSelectDeliveryDetailPageTotal(offset, pageSize, orderDetail));
         return map;
     }
 
 
-    public Boolean adddeliveryDetail(Map<String,Object> object) {
+    public Boolean addDeliveryDetail(Map<String,Object> object) {
         boolean saveState = true;
         //璁剧疆鍥炴粴鐐�
         Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
@@ -282,7 +290,7 @@
 
     }
 
-    public Map<String, Object> getselectAllocateFinishedOperateLog(Integer pageNum, Integer pageSize,List<String> selectDate, FinishedOperateLog finishedOperateLog) {
+    public Map<String, Object> getSelectAllocateFinishedOperateLog(Integer pageNum, Integer pageSize,List<String> selectDate, FinishedOperateLog finishedOperateLog) {
         Integer offset = (pageNum - 1) * pageSize;
 
         String endDate = LocalDate.now().toString();
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReplenishService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReplenishService.java
new file mode 100644
index 0000000..956c65e
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReplenishService.java
@@ -0,0 +1,145 @@
+package com.example.erp.service.pp;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.example.erp.entity.pp.FlowCard;
+import com.example.erp.entity.pp.PatchLog;
+import com.example.erp.entity.pp.Rework;
+import com.example.erp.entity.userInfo.SysError;
+import com.example.erp.mapper.pp.PatchLogMapper;
+import com.example.erp.service.userInfo.SysErrorService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.util.*;
+
+
+@Service
+@DS("pp")
+public class ReplenishService {
+    @Autowired
+    PatchLogMapper patchMapper;
+
+    @Autowired
+    SysErrorService sysErrorService;
+
+
+    public List<Map<String, Object>> getSelectReplenish(Integer pageNum, Integer pageSize) {
+        Integer offset = (pageNum - 1) * pageSize;
+        return patchMapper.getSelectReplenish(offset,pageSize);
+
+    }
+
+    public Map<String, Object> SelectReplenish(Integer pageNum, Integer pageSize,List<String> selectDate,PatchLog patchLog) {
+        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()){
+                startDate = selectDate.get(0);
+            }
+            if(!selectDate.get(1).isEmpty()){
+                endDate = selectDate.get(1);
+            }
+        }
+        Map<String,Object> map = new HashMap<>();
+        map.put("data",patchMapper.SelectReplenish(offset,pageSize,startDate,endDate,patchLog));
+        map.put("total",patchMapper.SelectReplenishPageTotal(offset,pageSize,startDate,endDate,patchLog));
+
+        List<String> list = new ArrayList<>();
+        list.add(startDate);
+        list.add(endDate);
+        map.put("selectDate",list);
+        return map;
+    }
+
+    public Boolean saveReplenish(Map<String,Object> object) {
+        boolean saveState = true;
+        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+        try {
+            String userName = "";
+            String userId = "";
+            if (object.get("userName") != null) {
+                userName = object.get("userName").toString();
+            }
+            if (object.get("userId") != null) {
+                userId = object.get("userId").toString();
+            }
+            String oddNumber=orderNumberSetting("琛ョ墖");
+            //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
+            List<PatchLog> patchLoglist = JSONArray.parseArray(JSONObject.toJSONString(object.get("patchLog")), PatchLog.class);
+            if (!patchLoglist.isEmpty()){
+                for (PatchLog patchLog : patchLoglist) {
+                    //娣诲姞杩斿伐璁板綍锛屼慨鏀规鐮存槑缁嗘暟閲�
+                    patchMapper.insertReplenish(patchLog,oddNumber);
+                    patchMapper.updateDamageDetails(patchLog);
+                }
+            }
+
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+            //灏嗗紓甯镐紶鍏ユ暟鎹簱
+            SysError sysError = new SysError();
+            sysError.setError(e.toString());
+            sysError.setFunc("saveOrder");
+            sysErrorService.insert(sysError);
+            saveState = false;
+
+        }
+
+        return saveState;
+
+    }
+
+    public Boolean updateReplenish(Map<String,Object> object) {
+        boolean saveState = true;
+
+        String userName = "";
+        String userId = "";
+        if (object.get("userName") != null) {
+            userName = object.get("userName").toString();
+        }
+        if (object.get("userId") != null) {
+            userId = object.get("userId").toString();
+        }
+        //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
+        List<PatchLog> patchLoglist = JSONArray.parseArray(JSONObject.toJSONString(object.get("patchLog")), PatchLog.class);
+        if (!patchLoglist.isEmpty()){
+            for (PatchLog patchLog : patchLoglist) {
+                //瀹℃牳
+                patchMapper.updateReplenish(patchLog,userName);
+            }
+        }
+
+
+        return saveState;
+
+    }
+
+    public String orderNumberSetting(String type) {
+        //鏍规嵁绫诲瀷鑷姩鐢熸垚涓嶅悓鐨勬搷浣滃崟鍙�
+        String alias="";
+        if(Objects.equals(type, "琛ョ墖")){
+            alias="BP";
+        }
+        //鏌ヨ褰撳ぉ鐨勬渶澶ф暟閲�
+        Integer maximum=patchMapper.getMaximum();
+        //璁剧疆涓や綅涓嶅琛�0
+        String formattedNumber = String.format("%02d", maximum+1);
+        //鏍煎紡鍖栧綋鍓嶆棩鏈�
+        Date currentDate = new Date();
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
+        String formattedDate = dateFormat.format(currentDate);
+        String oddNumbers =  alias+formattedDate+formattedNumber;
+        return oddNumbers;
+    }
+
+
+
+
+}
+
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 ce97908..65d8dc1 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
@@ -1,23 +1,60 @@
 package com.example.erp.service.pp;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
+import com.example.erp.entity.pp.DamageDetails;
 import com.example.erp.entity.pp.ReportingWork;
+import com.example.erp.entity.pp.ReportingWorkDetail;
+import com.example.erp.entity.sd.Order;
+import com.example.erp.entity.sd.OrderDetail;
 import com.example.erp.entity.sd.OrderProcessDetail;
 import com.example.erp.mapper.pp.BasicDateProduceMapper;
+import com.example.erp.mapper.pp.DamageDetailsMapper;
+import com.example.erp.mapper.pp.ReportingWorkDetailMapper;
 import com.example.erp.mapper.pp.ReportingWorkMapper;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.example.erp.mapper.sd.OrderProcessDetailMapper;
+import com.example.erp.service.sd.OrderProcessDetailService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 @Service
 @DS("pp")
 public class ReportingWorkService {
-    @Autowired
+    final
     ReportingWorkMapper reportingWorkMapper;
-
+    final
     BasicDateProduceMapper basicDateProduceMapper;
+    final
+    DamageDetailsMapper damageDetailsMapper;
+    final
+    OrderProcessDetailMapper orderProcessDetailMapper;
+    final
+    ReportingWorkDetailMapper
+    reportingWorkDetailMapper;
+
+    final
+    OrderProcessDetailService orderProcessDetailService;
+
+
+
+    public ReportingWorkService(ReportingWorkMapper reportingWorkMapper, BasicDateProduceMapper basicDateProduceMapper, DamageDetailsMapper damageDetailsMapper, ReportingWorkDetailMapper reportingWorkDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, OrderProcessDetailService orderProcessDetailService) {
+        this.reportingWorkMapper = reportingWorkMapper;
+        this.basicDateProduceMapper = basicDateProduceMapper;
+        this.damageDetailsMapper = damageDetailsMapper;
+        this.reportingWorkDetailMapper = reportingWorkDetailMapper;
+        this.orderProcessDetailMapper = orderProcessDetailMapper;
+        this.orderProcessDetailService = orderProcessDetailService;
+    }
 
     public Map<String, Object> AddSelectLastWorkSv(String processIdStr, String technologyStr, String process) {
         Map<String, Object> map = new HashMap<>();
@@ -52,6 +89,7 @@
                 }
                 //System.out.println("褰撳墠宸ュ簭锛�" + process + " 涓婁竴閬撳伐搴忥細" + previousProcess + " 涓嬩竴閬撳伐搴忥細" + nextProcess);
                 //鏌ヨ褰撳墠宸ュ簭鐨勮〃澶存暟鎹�
+               // System.out.println(reportingWorkMapper.AddSelectLastWorkMp(processIdStr, technologyStr,previousProcess,nextProcess,process));
                 map.put("data", reportingWorkMapper.AddSelectLastWorkMp(processIdStr, technologyStr,previousProcess,nextProcess,process));
                 map.put("thisProcess", processList);
                 break;
@@ -63,6 +101,8 @@
         //鐝粍涓嬫媺妗�
         map.put("teams", reportingWorkMapper.SelectWorkBasicTeamsMp(process));
 
+        map.put("breakageType",reportingWorkMapper.selectBasicNameByType("breakagetype"));
+        map.put("breakageReason",reportingWorkMapper.selectBasicNameByType("breakagereason"));
 
         //鏌ヨ鏈伐搴忔姤宸ラ渶瑕佸摢鍑犲眰锛屼笂宸ュ簭鏄粈涔�
         String  obtainTechnology = reportingWorkMapper.SelectWorkTechnologyMp(processIdStr);
@@ -70,7 +110,7 @@
         //鍒ゆ柇鏈伐搴忔槸涓嶆槸绗竴閬撳伐搴�
         if (interceptProcess.equals(process)) {
             //鏄涓�閬撳伐搴忥紝鏌ヨ娴佺▼鍗℃暟鎹�
-            map.put("Detail", reportingWorkMapper.SelectTechnologicalNumMp(processIdStr,technologyStr));
+            map.put("Detail", reportingWorkMapper.SelectTechnologicalNumMp(processIdStr,technologyStr,process));
         }
         else {
             //涓嶆槸绗竴閬撳伐搴忥紝鏌ヨ鎶ュ伐鏁版嵁
@@ -83,11 +123,10 @@
 
         //鑾峰彇璇ユ祦绋嬪崱鍙峰巻鍙叉姤宸ュ伐搴�
         String historyProcess =reportingWorkMapper.historyProcessMp(processIdStr);
-
         //鍘嗗彶鎶ュ伐宸ュ簭璁惧
         map.put("historyDevice",reportingWorkMapper.historyDeviceMp(historyProcess,process));
         //鍘嗗彶鎶ュ伐宸ュ簭鐝粍
-        map.put("historyTeams",reportingWorkMapper.historyTeamsMp(historyProcess,process));
+        map.put("historyTeams",reportingWorkMapper.historyTeamsMp(processIdStr,process));
         //鍘嗗彶宸ュ簭
         map.put("historyProcess",reportingWorkMapper.SelectHistoryProcessMp(historyProcess,process));
 
@@ -101,4 +140,58 @@
         map.put("process", reportingWorkMapper.SelectProcessMp());
         return map;
     }
+
+    //鎶ュ伐鏂板
+    @Transactional
+    public boolean SaveReportingWorkSv(Map<String, Object> reportingWorkMap) {
+        //鎺ユ敹瑙f瀽涓婚檮琛ㄤ俊鎭�
+        JSONObject reportingWorkJson = new JSONObject(reportingWorkMap);
+        ReportingWork reportingWork = JSONObject.parseObject(JSONObject.toJSONString(reportingWorkJson.get("title")), ReportingWork.class);
+        List<ReportingWorkDetail> reportingWorkDetails = JSONArray.parseArray(JSONObject.toJSONString(reportingWorkJson.get("detail")), ReportingWorkDetail.class);
+        //鑾峰彇褰撳墠鏈�澶ф姤宸ュ崟鍙风敓鎴愭姤宸ュ崟鍙�
+        String formattedNumber = String.format("%04d", reportingWorkMapper.selectMaxReportingWorkId()+1);
+        //鏍煎紡鍖栧綋鍓嶆棩鏈�
+        Date currentDate = new Date();
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
+        String formattedDate = dateFormat.format(currentDate);
+        String reportingWorkId =  "BG"+formattedDate+formattedNumber;
+        reportingWork.setReportingWorkId(reportingWorkId);
+        reportingWork.setProcessId(reportingWork.getProcessId().substring(0,13));
+        //涓昏〃鎻掑叆
+        reportingWorkMapper.insert(reportingWork);
+
+        //鍓〃寰幆鎻掑叆锛屽苟涓旀彃鍏ユ鐮翠俊鎭〃銆傚啀鏍规嵁娆$牬淇℃伅淇敼璁㈠崟鐜荤拑娴佺▼琛ㄧ殑瀹屽伐鏁伴噺涓庡埡鐮存暟閲�
+        reportingWorkDetails.forEach(reportingWorkDetail -> {
+            reportingWorkDetail.setReportingWorkId(reportingWorkId);
+            List<DamageDetails> damageDetails = reportingWorkDetail.getDamageDetails();
+            if(damageDetails!=null && !damageDetails.isEmpty()){
+                damageDetails.forEach(damageDetail ->{
+                    damageDetail.setReportingWorkId(reportingWorkId);
+                    damageDetail.setOrderNumber(reportingWorkDetail.getOrderNumber());
+                    damageDetail.setProcessId(reportingWork.getProcessId());
+                    damageDetail.setTechnologyNumber(reportingWorkDetail.getTechnologyNumber());
+                    damageDetailsMapper.insert(damageDetail);
+                });
+            }
+            //System.out.println(reportingWorkDetail);
+            OrderProcessDetail orderProcessDetail = new OrderProcessDetail();
+            orderProcessDetail.setBrokenNum(reportingWorkDetail.getBreakageQuantity());
+            orderProcessDetail.setReportingWorkNum(reportingWorkDetail.getCompletedQuantity());
+            orderProcessDetail.setReportingWorkNumCount(reportingWorkDetail.getCompletedQuantity());
+
+            //鏍规嵁璁㈠崟id锛岃鍗曞簭鍙凤紝浠ュ強灏忕墖搴忓彿 鏇存柊灏忕墖娴佺▼鐨勫畬宸ユ暟閲忎互鍙婂埡鐮存暟閲�
+            LambdaUpdateWrapper<OrderProcessDetail> updateWrapper = new LambdaUpdateWrapper<>();
+            updateWrapper.eq(OrderProcessDetail::getOrderNumber, reportingWorkDetail.getOrderNumber())
+                    .eq(OrderProcessDetail::getOrderId, reportingWork.getOrderId())
+                    .eq(OrderProcessDetail::getProcess, reportingWork.getThisProcess())
+                    .eq(OrderProcessDetail::getTechnologyNumber, reportingWorkDetail.getTechnologyNumber())
+                    .setSql("reporting_work_num_count =reporting_work_num_count +"+orderProcessDetail.getReportingWorkNumCount())
+                    .setSql("reporting_work_num =reporting_work_num +"+orderProcessDetail.getReportingWorkNum())
+                    .setSql("broken_num =broken_num +"+orderProcessDetail.getBrokenNum());
+
+            orderProcessDetailMapper.update(null,updateWrapper);
+            reportingWorkDetailMapper.insert(reportingWorkDetail);
+        });
+        return  false;
+    }
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReworkService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReworkService.java
index 8f22591..a4132da 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReworkService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReworkService.java
@@ -4,6 +4,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.example.erp.entity.pp.BasicDataProduce;
+import com.example.erp.entity.pp.PatchLog;
 import com.example.erp.entity.pp.Rework;
 import com.example.erp.entity.sd.Delivery;
 import com.example.erp.entity.sd.OrderDetail;
@@ -79,8 +80,8 @@
 
     public Boolean saveRework(Map<String,Object> object) {
         boolean saveState = true;
-
-
+        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+        try {
             String userName = "";
             String userId = "";
             if (object.get("userName") != null) {
@@ -89,18 +90,28 @@
             if (object.get("userId") != null) {
                 userId = object.get("userId").toString();
             }
+            //鑾峰彇鍗曞彿
+            String oddNumber= orderNumberSetting("杩斿伐");
             //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
             List<Rework> reworklist = JSONArray.parseArray(JSONObject.toJSONString(object.get("rework")), Rework.class);
             if (!reworklist.isEmpty()){
                 for (Rework rework : reworklist) {
-                    //鑾峰彇鍗曞彿
-                    String oddNumber= orderNumberSetting("杩斿伐");
-                    //娣诲姞鍑哄叆搴撹褰�
+                    //娣诲姞杩斿伐璁板綍锛屼慨鏀规鐮存槑缁嗘暟閲�
                     reworkMapper.insertRework(rework,oddNumber);
-                    reworkMapper.updateReportingWorkDetail(rework);
+                    reworkMapper.updateDamageDetails(rework);
                 }
             }
 
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+            //灏嗗紓甯镐紶鍏ユ暟鎹簱
+            SysError sysError = new SysError();
+            sysError.setError(e.toString());
+            sysError.setFunc("saveOrder");
+            sysErrorService.insert(sysError);
+            saveState = false;
+
+        }
 
         return saveState;
 
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/sd/CustomerService.java b/north-glass-erp/src/main/java/com/example/erp/service/sd/CustomerService.java
index 9c04b4b..c141ddb 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/sd/CustomerService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/sd/CustomerService.java
@@ -27,12 +27,12 @@
     SysErrorService sysErrorService;
 
 
-    public Map<String, Object> getseletCustomer(Integer pageNum, Integer pageSize, Customer customer) {
+    public Map<String, Object> getSelectCustomer(Integer pageNum, Integer pageSize, Customer customer) {
         Integer offset = (pageNum - 1) * pageSize;
 
         Map<String, Object> map = new HashMap<>();
-        map.put("data", customerMapper.getseletCustomer(offset, pageSize, customer));
-        map.put("total", customerMapper.getseletCustomerPageTotal(offset, pageSize, customer));
+        map.put("data", customerMapper.getSelectCustomer(offset, pageSize, customer));
+        map.put("total", customerMapper.getSelectCustomerPageTotal(offset, pageSize, customer));
         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 d20eb46..01956c4 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
@@ -41,7 +41,7 @@
     SysErrorService sysErrorService;
 
 
-    public Map<String, Object> getseletShippingOrder(Integer pageNum, Integer pageSize,List<String> selectDate, Delivery delivery) {
+    public Map<String, Object> getSelectShippingOrder(Integer pageNum, Integer pageSize,List<String> selectDate, Delivery delivery) {
         Integer offset = (pageNum - 1) * pageSize;
         String endDate = LocalDate.now().toString();
         String startDate = LocalDate.now().minusDays(15).toString();
@@ -54,8 +54,8 @@
             }
         }
         Map<String, Object> map = new HashMap<>();
-        map.put("data", deliveryMapper.getseletShippingOrder(offset, pageSize,startDate,endDate, delivery));
-        map.put("total", deliveryMapper.getseletShippingOrderPageTotal(offset, pageSize,startDate,endDate, delivery));
+        map.put("data", deliveryMapper.getSelectShippingOrder(offset, pageSize,startDate,endDate, delivery));
+        map.put("total", deliveryMapper.getSelectShippingOrderPageTotal(offset, pageSize,startDate,endDate, delivery));
         List<String> list = new ArrayList<>();
         list.add(startDate);
         list.add(endDate);
@@ -63,13 +63,13 @@
         return map;
     }
 
-    public Map<String, Object> getseletShippingOrderDetail(Integer pageNum, Integer pageSize, OrderDetail orderDetail) {
+    public Map<String, Object> getSelectShippingOrderDetail(Integer pageNum, Integer pageSize, OrderDetail orderDetail) {
         Integer offset = (pageNum - 1) * pageSize;
 
         Map<String, Object> map = new HashMap<>();
-        map.put("data", deliveryDetailMapper.getseletShippingOrderDetail(offset, pageSize, orderDetail));
-        map.put("delivery", deliveryMapper.getseletShippingOrderDetaildelivery(offset, pageSize, orderDetail));
-        map.put("total", deliveryDetailMapper.getseletShippingOrderDetailPageTotal(offset, pageSize, orderDetail));
+        map.put("data", deliveryDetailMapper.getSelectShippingOrderDetail(offset, pageSize, orderDetail));
+        map.put("delivery", deliveryMapper.getSelectShippingOrderDetailDelivery(offset, pageSize, orderDetail));
+        map.put("total", deliveryDetailMapper.getSelectShippingOrderDetailPageTotal(offset, pageSize, orderDetail));
 
         return map;
     }
@@ -96,12 +96,12 @@
         return map;
     }
 
-    public Map<String, Object> getseletShippingOrderDetails(Integer pageNum, Integer pageSize, OrderDetail orderDetail) {
+    public Map<String, Object> getSelectShippingOrderDetails(Integer pageNum, Integer pageSize, OrderDetail orderDetail) {
         Integer offset = (pageNum - 1) * pageSize;
         Map<String, Object> map = new HashMap<>();
-        map.put("data", deliveryDetailMapper.getseletShippingOrderDetails(offset, pageSize, orderDetail));
-        map.put("title", deliveryMapper.getseletShippingOrderDetaildeliverys(offset, pageSize, orderDetail));
-        map.put("total", deliveryDetailMapper.getseletShippingOrderDetailsPageTotal(offset, pageSize, orderDetail));
+        map.put("data", deliveryDetailMapper.getSelectShippingOrderDetails(offset, pageSize, orderDetail));
+        map.put("title", deliveryMapper.getSelectShippingOrderDetailDeliverys(offset, pageSize, orderDetail));
+        map.put("total", deliveryDetailMapper.getSelectShippingOrderDetailsPageTotal(offset, pageSize, orderDetail));
         return map;
     }
 
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderProcessDetailService.java b/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderProcessDetailService.java
new file mode 100644
index 0000000..070410c
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderProcessDetailService.java
@@ -0,0 +1,24 @@
+package com.example.erp.service.sd;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.example.erp.entity.sd.OrderProcessDetail;
+import com.example.erp.mapper.sd.OrderProcessDetailMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+@Service
+@DS("sd")
+public class OrderProcessDetailService {
+    final
+    OrderProcessDetailMapper orderProcessDetailMapper;
+
+    public OrderProcessDetailService(OrderProcessDetailMapper orderProcessDetailMapper) {
+        this.orderProcessDetailMapper = orderProcessDetailMapper;
+    }
+
+    public void updateReportingWork(OrderProcessDetail orderProcessDetail, LambdaUpdateWrapper<OrderProcessDetail> updateWrapper) {
+        orderProcessDetailMapper.update(orderProcessDetail,updateWrapper);
+    }
+}
diff --git a/north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml b/north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml
index bb50afb..eb88665 100644
--- a/north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml
+++ b/north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml
@@ -276,7 +276,7 @@
     </update>
 
 
-    <select id="getseletdeliveryDetailPageTotal"  >
+    <select id="getSelectDeliveryDetailPageTotal"  >
         select CEILING(count(dd.id)/#{pageSize}) as 'pageTotal',
         count(dd.id) as 'total'
         from sd.delivery_detail dd
@@ -339,7 +339,7 @@
         limit #{offset},#{pageSize};
     </select>
 
-    <select id="getseletdeliveryDetail"  resultMap="selectDelivery">
+    <select id="getSelectDeliveryDetail"  resultMap="selectDelivery">
         select dd.delivery_id,
                dd.order_number,
                dd.order_id,
@@ -467,7 +467,7 @@
 
     <update id="updateflowcard">
         update pp.flow_card
-        set received_quantity=received_quantity+${inventoryQuantity}
+        set received_quantity=received_quantity+${inventoryQuantity},storage_time=now()
         where order_number=#{orderNumber} and process_id=#{processId} and order_id=#{order.orderId}
     </update>
 
@@ -522,7 +522,7 @@
     </select>
 
 
-    <select id="getseletwarehousing" resultMap="selectFlowCard">
+    <select id="getSelectWarehousing" resultMap="selectFlowCard">
         select
         fc.id,
         o.order_id,
@@ -594,7 +594,8 @@
         group by fc.order_id,fc.order_number,fc.process_id order by fc.create_time
         limit #{offset},#{pageSize};
     </select>
-    <select id="getseletwarehousingPageTotal" >
+    <select id="getSelectWarehousingPageTotal" >
+        select
         CEILING(count(zu.order_number)/#{pageSize}) as 'pageTotal',
         count(zu.order_number) as 'total' from (
         select fc.order_number as order_number,fc.process_id from pp.flow_card fc left join sd.order_detail od on
diff --git a/north-glass-erp/src/main/resources/mapper/pp/PatchLogMapper.xml b/north-glass-erp/src/main/resources/mapper/pp/PatchLogMapper.xml
new file mode 100644
index 0000000..e820534
--- /dev/null
+++ b/north-glass-erp/src/main/resources/mapper/pp/PatchLogMapper.xml
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--杩斿伐鏁版嵁-->
+
+<mapper namespace="com.example.erp.mapper.pp.PatchLogMapper">
+
+
+
+    <!--鑾峰彇琛ョ墖鏁版嵁-->
+    <select id="SelectReplenish" >
+        select
+        r.id,
+        r.review_status,
+        r.reporting_work_id,
+        r.patch_id,
+        r.process_id,
+        r.order_id,
+        r.order_sort,
+        o.project,
+        o.batch,
+        od.building_number,
+        od.product_name,
+        ogd.technology_number,
+        ogd.glass_address,
+        r.patch_num,
+        od.width,
+        od.height,
+        od.shape,
+        r.patch_type,
+        r.patch_reason,
+        r.responsible_team,
+        r.responsible_personnel,
+        r.responsible_equipment,
+        r.patch_area,
+        r.quality_inspector,
+        r.patch_processes,
+        r.reviewer,
+        date(r.create_time) as create_time,
+        date(r.update_time) as update_time
+        from pp.patch_log r left join sd.order_detail od on r.order_id=od.order_id and r.order_sort=od.order_number
+        left join sd.`order` o on r.order_id = o.order_id
+        left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd
+        on r.order_id = ogd.order_id and r.order_sort = ogd.order_number
+        <where>
+            date(r.create_time)>=#{startDate} and date(r.create_time) &lt;= #{endDate}
+        </where>
+         order by r.review_status
+        limit #{offset},#{pageSize};
+    </select>
+
+    <select id="SelectReplenishPageTotal" >
+        select CEILING(count(zu.id)/#{pageSize}) as 'pageTotal',
+        count(zu.id) as 'total'
+        from (select r.id as id
+        from pp.patch_log r left join sd.order_detail od on r.order_id=od.order_id and r.order_sort=od.order_number
+        left join sd.`order` o on r.order_id = o.order_id
+        left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd
+        on r.order_id = ogd.order_id and r.order_sort = ogd.order_number
+        <where>
+            date(r.create_time)>=#{startDate} and date(r.create_time) &lt;= #{endDate}
+        </where>
+              ) as zu
+        limit #{offset},#{pageSize};
+    </select>
+
+
+
+
+    <select id="getMaximum" >
+        select count(*) from pp.patch_log where  date(create_time)=CURDATE()
+    </select>
+
+
+    <insert id="insertReplenish"  useGeneratedKeys="true" >
+        insert into pp.patch_log(patch_id,reporting_work_id,process_id,order_id, order_sort, technology_number, responsible_team,
+                              responsible_personnel, patch_type, patch_reason, patch_processes, patch_num,
+                                 patch_area,responsible_equipment,quality_inspector, reviewer, review_status, create_time)
+        values (
+                   #{oddNumber}, #{patchLog.reportingWorkId},#{patchLog.processId},#{patchLog.orderId},#{patchLog.orderSort},#{patchLog.technologyNumber},
+                #{patchLog.responsibleTeam},#{patchLog.responsiblePersonnel},#{patchLog.patchType},#{patchLog.patchReason},
+                #{patchLog.patchProcesses},#{patchLog.patchNum},#{patchLog.patchArea},#{patchLog.responsibleEquipment},#{patchLog.qualityInspector},"",0,now()
+               )
+    </insert>
+
+    <update id="updateReplenish"  >
+        update pp.patch_log set reviewer=#{userName},review_status=1,update_time=now() where id=#{patchLog.id}
+    </update>
+
+    <update id="updateDamageDetails"  >
+        update pp.damage_details set quantity=quantity+#{patchLog.patchNum},patch_status=1 where id=#{patchLog.reviewer}
+    </update>
+
+
+    <select id="getSelectReplenish">
+        select date(rw.reporting_work_time) as reportingWorkTime,
+               o.order_id as orderId,
+               dd.reporting_work_id as reportingWorkId,
+               rw.production_id as productionId,
+               rw.process_id as processId,
+               o.project,
+               o.batch,
+               dd.id as reviewer,
+               od.building_number as buildingNumber,
+               dd.order_number as orderSort,
+               od.product_name as productName,
+               dd.technology_number as technologyNumber,
+               ogd.glass_address as glassAddress,
+               dd.breakage_quantity-dd.quantity as patchNum,
+               od.width,
+               od.height,
+               od.shape,
+               dd.breakage_quantity-dd.quantity as breakageQuantity,
+               dd.return_process as patchProcesses,
+               dd.breakage_reason as patchReason,
+               dd.breakage_type as patchType,
+               dd.responsible_personnel as responsiblePersonnel,
+               dd.responsible_equipment as responsibleEquipment,
+               dd.responsible_team as responsibleTeam,
+               ROUND((dd.breakage_quantity-dd.quantity) * od.width * od.height / 1000000, 2) as patchArea,
+               rw.qualityIns_pector as qualityInsPector
+        from pp.damage_details dd
+                 left join	pp.reporting_work_detail rwd on dd.reporting_work_id = rwd.reporting_work_id and dd.order_number=rwd.order_number  and dd.technology_number=rwd.technology_number
+                 left join pp.reporting_work rw on dd.reporting_work_id = rw.reporting_work_id
+
+                 left join sd.`order` o on rw.order_id = o.order_id
+                 left join sd.order_detail od on rw.order_id = od.order_id and dd.order_number = od.order_number
+                 left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd
+                           on rw.order_id = ogd.order_id and dd.order_number = ogd.order_number
+
+        where  dd.breakage_quantity-dd.quantity>0 and dd.available=0
+
+    </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 5b2914f..cb8f1ed 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml
@@ -80,22 +80,27 @@
             ogd.child_width,
             ogd.child_height,
             od.shape,
-            fc.quantity - IFNULL(fc.number_patches,0)-IFNULL(rwd.completed_quantity,0)-IFNULL(rwd.breakage_quantity,0)-IFNULL((rwd.wait_rework_quantity),0)
-                        as quantity
+            fc.quantity -odpd.reporting_work_num as quantity,
+            odpd.reporting_work_num_count as completed,
+            odpd.broken_num as onceBroken
         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 reporting_work as rw on rw.order_id=fc.order_id and rw.production_id=fc.production_id and rw.process_id=fc.process_id
-                left join reporting_work_detail as rwd on rwd.reporting_work_id=rw.reporting_work_id and rwd.order_number=fc.order_number and rwd.technology_number=fc.technology_number
+        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
         WHERE
             fc.process_id = #{processIdStr}
-          AND position(
-                fc.technology_number IN #{technologyStr})
-
+          AND fc.technology_number = #{technologyStr}
+          AND odpd.process = #{process}
         order by fc.order_number
     </select>
 
@@ -109,7 +114,7 @@
                ogd.child_width,
                ogd.child_height,
                od.shape,
-               reportingwork_num -IFNULL(rwd.completed_quantity,0)-IFNULL(rwd.breakage_quantity,0)-IFNULL((rwd.wait_rework_quantity),0) as quantity
+               reporting_work_num -IFNULL(rwd.completed_quantity,0)-IFNULL(rwd.breakage_quantity,0)-IFNULL((rwd.wait_rework_quantity),0) as quantity
         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
@@ -131,12 +136,12 @@
     </select>
 
     <select id="SelectProcessMp">
-        select * from sd.basic_data where basic_type="product" and basic_category="process"
+        select * from sd.basic_data where basic_type='product' and basic_category='process'
 
     </select>
 
     <select id="historyProcessMp">
-        select ifnull(GROUP_CONCAT(distinct rw.this_process),"") from reporting_work as rw where rw.process_id=#{processIdStr}
+        select ifnull(GROUP_CONCAT(distinct rw.this_process),'') from reporting_work as rw where rw.process_id=#{processIdStr}
     </select>
 
     <select id="historyDeviceMp">
@@ -149,8 +154,8 @@
             sd.basic_data AS bd
                 LEFT JOIN `basic_data_produce` AS bdp ON bd.id = bdp.basic_category
         WHERE
-            bd.basic_category = "process"
-          AND bdp.basic_type = "device"
+            bd.basic_category = 'process'
+          AND bdp.basic_type = 'device'
           AND POSITION(bd.basic_name in CONCAT(#{historyProcess},#{process}))
     </select>
 
@@ -159,14 +164,23 @@
             bdp.id,
             bdp.basic_type,
             bdp.basic_name,
-            bd.basic_name AS basic_category
+            bd.basic_name,bd.id AS basic_category,
+            rw.process
         FROM
             sd.basic_data AS bd
-                LEFT JOIN `basic_data_produce` AS bdp ON bd.id = bdp.basic_category
+        LEFT JOIN `basic_data_produce` AS bdp
+            ON bd.id = bdp.basic_category
+        right join (
+                    select distinct process from
+                        (   select distinct rw.this_process as  process
+                            from reporting_work as rw where rw.process_id=#{processIdStr}
+                            UNION
+                            select #{process}
+                        ) as t
+                    ) as  rw
+        on rw.process=bd.basic_name
         WHERE
-            bd.basic_category = "process"
-          AND bdp.basic_type = "teamsgroups"
-          AND POSITION(bd.basic_name in CONCAT(#{historyProcess},#{process}))
+           bdp.basic_type = 'teamsgroups'
     </select>
 
     <select id="SelectHistoryProcessMp">
@@ -177,9 +191,23 @@
             sd.basic_data AS bd
                 LEFT JOIN `basic_data_produce` AS bdp ON bd.id = bdp.basic_category
         WHERE
-            bd.basic_category = "process"
-          AND bdp.basic_type = "teamsgroups"
+            bd.basic_category = 'process'
+          AND bdp.basic_type = 'teamsgroups'
           AND POSITION(bd.basic_name in CONCAT(#{historyProcess},#{process}))
     </select>
 
+    <select id="selectBasicNameByType">
+        select * from `basic_data_produce` as a where a.basic_type  = #{type}
+    </select>
+
+    <select id="selectMaxReportingWorkId">
+        select
+            ifnull(SUBSTR(max(reporting_work_id) from 9),0)
+        from
+            reporting_work as a
+        where
+            date(a.create_time) = curdate()
+        order by id desc,reporting_work_id	desc limit  1
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/north-glass-erp/src/main/resources/mapper/pp/ReworkMapper.xml b/north-glass-erp/src/main/resources/mapper/pp/ReworkMapper.xml
index 6e28ce9..4cdcf04 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/ReworkMapper.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/ReworkMapper.xml
@@ -11,6 +11,7 @@
     <!--鑾峰彇杩斿伐鏁版嵁-->
     <select id="SelectRework" >
         select
+        r.id,
         r.review_status,
         r.rework_team,
         r.rework_id,
@@ -66,36 +67,39 @@
 
     <select id="getSelectRework">
         select o.order_id as orderId,
-               rwd.reporting_work_id as reportingWorkId,
+               dd.reporting_work_id as reportingWorkId,
                rw.process_id as processId,
                o.project,
                o.batch,
-               rwd.order_number as orderSort,
+               dd.id as reviewer,
+               dd.order_number as orderSort,
                od.product_name as productName,
-               ogd.technology_number as technologyNumber,
+               dd.technology_number as technologyNumber,
                ogd.glass_address as glassAddress,
-               rwd.wait_rework_quantity as reworkNum,
+               dd.breakage_quantity-dd.quantity as reworkNum,
                od.width,
                od.height,
                od.shape,
-               rwd.breakage_quantity as breakageQuantity,
-               rwd.return_process as reworkProcesses,
-               rwd.breakage_reason as reworkReason,
-               rwd.breakage_type as reworkType,
-               rwd.responsible_personnel as responsiblePersonnel,
-               rwd.responsible_equipment as responsibleEquipment,
-               rwd.responsible_team as responsibleTeam,
-               ROUND(rwd.wait_rework_quantity * od.width * od.height / 1000000, 2) as reworkArea,
+               dd.breakage_quantity-dd.quantity as breakageQuantity,
+               dd.return_process as reworkProcesses,
+               dd.breakage_reason as reworkReason,
+               dd.breakage_type as reworkType,
+               dd.responsible_personnel as responsiblePersonnel,
+               dd.responsible_equipment as responsibleEquipment,
+               dd.responsible_team as responsibleTeam,
+               ROUND((dd.breakage_quantity-dd.quantity) * od.width * od.height / 1000000, 2) as reworkArea,
                rw.qualityIns_pector as qualityInsPector
-        from pp.reporting_work_detail rwd
-                 left join pp.reporting_work rw on rwd.reporting_work_id = rw.reporting_work_id
-                 left join sd.`order` o on rw.order_id = o.order_id
-                 left join sd.order_detail od on rw.order_id = od.order_id and rwd.order_number = od.order_number
-                 left join sd.order_glass_detail ogd
-                           on rw.order_id = ogd.order_id and rwd.order_number = ogd.order_number
-                            where  rwd.wait_rework_quantity>0
+        from pp.damage_details dd
+                 left join	pp.reporting_work_detail rwd on dd.reporting_work_id = rwd.reporting_work_id and dd.order_number=rwd.order_number  and dd.technology_number=rwd.technology_number
+                 left join pp.reporting_work rw on dd.reporting_work_id = rw.reporting_work_id
 
-        group by ogd.order_id, ogd.order_number
+                 left join sd.`order` o on rw.order_id = o.order_id
+                 left join sd.order_detail od on rw.order_id = od.order_id and dd.order_number = od.order_number
+                 left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd
+                           on rw.order_id = ogd.order_id and dd.order_number = ogd.order_number
+
+        where  dd.breakage_quantity-dd.quantity>0 and dd.available=1
+
     </select>
 
 
@@ -103,8 +107,12 @@
         select count(*) from pp.rework where  date(create_time)=CURDATE()
     </select>
 
+    <select id="getMaxFlowCard" >
+        select count(*) from pp.flow_card where project_no=#{processId}
+    </select>
+
     <insert id="insertRework"  useGeneratedKeys="true" >
-        insert into pp.rework(rework_id,reporting_work_id, process_id,order_id, order_sort, technology_number, responsible_team,
+        insert into pp.rework(rework_id,reporting_work_id,process_id,order_id, order_sort, technology_number, responsible_team,
                               responsible_personnel, rework_type, rework_reason, rework_processes, rework_num,
                               rework_area, rework_team,responsible_equipment,quality_inspector, reviewer, review_status, create_time)
         values (
@@ -115,13 +123,15 @@
     </insert>
 
     <update id="updateRework"  >
-        update pp.rework set reviewer=#{userName},review_status=1,update_time=now() where rework_id=#{rework.reworkId}
+        update pp.rework set reviewer=#{userName},review_status=1,update_time=now() where rework_id=#{rework.id}
     </update>
 
-    <update id="updateReportingWorkDetail"  >
-        update pp.reporting_work_detail set wait_rework_quantity=wait_rework_quantity-#{rework.reworkNum}
-            where reporting_work_id=#{rework.reportingWorkId} and order_number=#{rework.orderSort} and technology_number=#{rework.technologyNumber}
+    <update id="updateDamageDetails"  >
+        update pp.damage_details set quantity=quantity+#{rework.reworkNum} where id=#{rework.reviewer}
     </update>
 
 
+
+
+
 </mapper>
\ No newline at end of file
diff --git a/north-glass-erp/src/main/resources/mapper/sd/Customer.xml b/north-glass-erp/src/main/resources/mapper/sd/Customer.xml
index 69697a9..9092f50 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/Customer.xml
+++ b/north-glass-erp/src/main/resources/mapper/sd/Customer.xml
@@ -9,7 +9,7 @@
         from
             sd.customer
     </select>
-    <select id="getseletCustomer">
+    <select id="getSelectCustomer">
         select
             *
         from
@@ -41,7 +41,7 @@
         limit #{offset},#{pageSize};
     </select>
 
-    <select id="getseletCustomerPageTotal">
+    <select id="getSelectCustomerPageTotal">
         select
             CEILING(count(id)/#{pageSize}) as 'pageTotal',
             count(id) as 'total'
diff --git a/north-glass-erp/src/main/resources/mapper/sd/Delivery.xml b/north-glass-erp/src/main/resources/mapper/sd/Delivery.xml
index 186d9ea..7dc44a0 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/Delivery.xml
+++ b/north-glass-erp/src/main/resources/mapper/sd/Delivery.xml
@@ -183,7 +183,7 @@
 
     </select>
 
-    <select id="getseletShippingOrderDetaildelivery" >
+    <select id="getSelectShippingOrderDetailDelivery" >
         select
         d.delivery_state,d.stock_state,d.payment_terms,
         d.customer_id,d.customer_name,d.project,d.pay_method,d.pay_date,d.contacts,d.contact_number,
@@ -199,7 +199,7 @@
     </select>
 
 
-    <select id="getseletShippingOrderDetaildeliverys" >
+    <select id="getSelectShippingOrderDetailDeliverys" >
         select customer_id,customer_name,project,salesman,salesman_id,contacts,contact_number,delivery_address from sd.`order`
         <where>
             <if test="orderDetail.orderId != null and orderDetail.orderId != ''">
@@ -210,7 +210,7 @@
         limit 0,1
     </select>
 
-    <select id="getseletShippingOrder">
+    <select id="getSelectShippingOrder">
         select * from sd.delivery d
         <where>
             date(d.create_time)>=#{startDate} and date(d.create_time) &lt;= #{endDate}
@@ -250,7 +250,7 @@
         limit #{offset},#{pageSize};
     </select>
 
-    <select id="getseletShippingOrderPageTotal">
+    <select id="getSelectShippingOrderPageTotal">
         select
             CEILING(count(id)/#{pageSize}) as 'pageTotal',
             count(id) as 'total'
diff --git a/north-glass-erp/src/main/resources/mapper/sd/DeliveryDetail.xml b/north-glass-erp/src/main/resources/mapper/sd/DeliveryDetail.xml
index 992c11e..a3ed5ad 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/DeliveryDetail.xml
+++ b/north-glass-erp/src/main/resources/mapper/sd/DeliveryDetail.xml
@@ -89,7 +89,7 @@
 
 
 
-    <select id="getseletShippingOrderDetail" resultMap="selectDeliveryFinishedGoodsInventoryOrderDetail">
+    <select id="getSelectShippingOrderDetail" resultMap="selectDeliveryFinishedGoodsInventoryOrderDetail">
         select od.order_id,
                o.batch,
                dd.delivery_number,
@@ -195,7 +195,7 @@
         limit #{offset},#{pageSize};
     </select>
 
-    <select id="getseletShippingOrderDetailPageTotal">
+    <select id="getSelectShippingOrderDetailPageTotal">
         select
             CEILING(count(dd.id)/#{pageSize})
         from sd.delivery_detail dd
@@ -277,7 +277,7 @@
         limit #{offset},#{pageSize};
     </select>
 
-    <select id="getseletShippingOrderDetails" resultMap="selectDeliveryFinishedGoodsInventoryOrderDetail">
+    <select id="getSelectShippingOrderDetails" resultMap="selectDeliveryFinishedGoodsInventoryOrderDetail">
         select od.order_id,
                od.order_number,
                o.batch,
@@ -370,7 +370,7 @@
         limit #{offset},#{pageSize};
     </select>
 
-    <select id="getseletShippingOrderDetailsPageTotal">
+    <select id="getSelectShippingOrderDetailsPageTotal">
         select
         CEILING(count(od.id)/#{pageSize})
         from sd.order_detail od
diff --git a/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml b/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
index e730c2a..d3ab571 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
+++ b/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
@@ -5,11 +5,12 @@
 <mapper namespace="com.example.erp.mapper.sd.OrderMapper">
     <select id="selectMaxOrderId">
         select
-            COUNT(a.order_id)
+           ifnull(SUBSTR(max(order_id) from 9),0)
         from
             `order` as a
         where
             date(a.create_time) = curdate()
+        order by id desc,order_id	desc limit  1
     </select>
     
 
diff --git a/north-glass-erp/target/classes/mapper/mm/FinishedGoodsInventory.xml b/north-glass-erp/target/classes/mapper/mm/FinishedGoodsInventory.xml
index bb50afb..eb88665 100644
--- a/north-glass-erp/target/classes/mapper/mm/FinishedGoodsInventory.xml
+++ b/north-glass-erp/target/classes/mapper/mm/FinishedGoodsInventory.xml
@@ -276,7 +276,7 @@
     </update>
 
 
-    <select id="getseletdeliveryDetailPageTotal"  >
+    <select id="getSelectDeliveryDetailPageTotal"  >
         select CEILING(count(dd.id)/#{pageSize}) as 'pageTotal',
         count(dd.id) as 'total'
         from sd.delivery_detail dd
@@ -339,7 +339,7 @@
         limit #{offset},#{pageSize};
     </select>
 
-    <select id="getseletdeliveryDetail"  resultMap="selectDelivery">
+    <select id="getSelectDeliveryDetail"  resultMap="selectDelivery">
         select dd.delivery_id,
                dd.order_number,
                dd.order_id,
@@ -467,7 +467,7 @@
 
     <update id="updateflowcard">
         update pp.flow_card
-        set received_quantity=received_quantity+${inventoryQuantity}
+        set received_quantity=received_quantity+${inventoryQuantity},storage_time=now()
         where order_number=#{orderNumber} and process_id=#{processId} and order_id=#{order.orderId}
     </update>
 
@@ -522,7 +522,7 @@
     </select>
 
 
-    <select id="getseletwarehousing" resultMap="selectFlowCard">
+    <select id="getSelectWarehousing" resultMap="selectFlowCard">
         select
         fc.id,
         o.order_id,
@@ -594,7 +594,8 @@
         group by fc.order_id,fc.order_number,fc.process_id order by fc.create_time
         limit #{offset},#{pageSize};
     </select>
-    <select id="getseletwarehousingPageTotal" >
+    <select id="getSelectWarehousingPageTotal" >
+        select
         CEILING(count(zu.order_number)/#{pageSize}) as 'pageTotal',
         count(zu.order_number) as 'total' from (
         select fc.order_number as order_number,fc.process_id from pp.flow_card fc left join sd.order_detail od on
diff --git a/north-glass-erp/target/classes/mapper/pp/PatchLogMapper.xml b/north-glass-erp/target/classes/mapper/pp/PatchLogMapper.xml
new file mode 100644
index 0000000..e820534
--- /dev/null
+++ b/north-glass-erp/target/classes/mapper/pp/PatchLogMapper.xml
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--杩斿伐鏁版嵁-->
+
+<mapper namespace="com.example.erp.mapper.pp.PatchLogMapper">
+
+
+
+    <!--鑾峰彇琛ョ墖鏁版嵁-->
+    <select id="SelectReplenish" >
+        select
+        r.id,
+        r.review_status,
+        r.reporting_work_id,
+        r.patch_id,
+        r.process_id,
+        r.order_id,
+        r.order_sort,
+        o.project,
+        o.batch,
+        od.building_number,
+        od.product_name,
+        ogd.technology_number,
+        ogd.glass_address,
+        r.patch_num,
+        od.width,
+        od.height,
+        od.shape,
+        r.patch_type,
+        r.patch_reason,
+        r.responsible_team,
+        r.responsible_personnel,
+        r.responsible_equipment,
+        r.patch_area,
+        r.quality_inspector,
+        r.patch_processes,
+        r.reviewer,
+        date(r.create_time) as create_time,
+        date(r.update_time) as update_time
+        from pp.patch_log r left join sd.order_detail od on r.order_id=od.order_id and r.order_sort=od.order_number
+        left join sd.`order` o on r.order_id = o.order_id
+        left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd
+        on r.order_id = ogd.order_id and r.order_sort = ogd.order_number
+        <where>
+            date(r.create_time)>=#{startDate} and date(r.create_time) &lt;= #{endDate}
+        </where>
+         order by r.review_status
+        limit #{offset},#{pageSize};
+    </select>
+
+    <select id="SelectReplenishPageTotal" >
+        select CEILING(count(zu.id)/#{pageSize}) as 'pageTotal',
+        count(zu.id) as 'total'
+        from (select r.id as id
+        from pp.patch_log r left join sd.order_detail od on r.order_id=od.order_id and r.order_sort=od.order_number
+        left join sd.`order` o on r.order_id = o.order_id
+        left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd
+        on r.order_id = ogd.order_id and r.order_sort = ogd.order_number
+        <where>
+            date(r.create_time)>=#{startDate} and date(r.create_time) &lt;= #{endDate}
+        </where>
+              ) as zu
+        limit #{offset},#{pageSize};
+    </select>
+
+
+
+
+    <select id="getMaximum" >
+        select count(*) from pp.patch_log where  date(create_time)=CURDATE()
+    </select>
+
+
+    <insert id="insertReplenish"  useGeneratedKeys="true" >
+        insert into pp.patch_log(patch_id,reporting_work_id,process_id,order_id, order_sort, technology_number, responsible_team,
+                              responsible_personnel, patch_type, patch_reason, patch_processes, patch_num,
+                                 patch_area,responsible_equipment,quality_inspector, reviewer, review_status, create_time)
+        values (
+                   #{oddNumber}, #{patchLog.reportingWorkId},#{patchLog.processId},#{patchLog.orderId},#{patchLog.orderSort},#{patchLog.technologyNumber},
+                #{patchLog.responsibleTeam},#{patchLog.responsiblePersonnel},#{patchLog.patchType},#{patchLog.patchReason},
+                #{patchLog.patchProcesses},#{patchLog.patchNum},#{patchLog.patchArea},#{patchLog.responsibleEquipment},#{patchLog.qualityInspector},"",0,now()
+               )
+    </insert>
+
+    <update id="updateReplenish"  >
+        update pp.patch_log set reviewer=#{userName},review_status=1,update_time=now() where id=#{patchLog.id}
+    </update>
+
+    <update id="updateDamageDetails"  >
+        update pp.damage_details set quantity=quantity+#{patchLog.patchNum},patch_status=1 where id=#{patchLog.reviewer}
+    </update>
+
+
+    <select id="getSelectReplenish">
+        select date(rw.reporting_work_time) as reportingWorkTime,
+               o.order_id as orderId,
+               dd.reporting_work_id as reportingWorkId,
+               rw.production_id as productionId,
+               rw.process_id as processId,
+               o.project,
+               o.batch,
+               dd.id as reviewer,
+               od.building_number as buildingNumber,
+               dd.order_number as orderSort,
+               od.product_name as productName,
+               dd.technology_number as technologyNumber,
+               ogd.glass_address as glassAddress,
+               dd.breakage_quantity-dd.quantity as patchNum,
+               od.width,
+               od.height,
+               od.shape,
+               dd.breakage_quantity-dd.quantity as breakageQuantity,
+               dd.return_process as patchProcesses,
+               dd.breakage_reason as patchReason,
+               dd.breakage_type as patchType,
+               dd.responsible_personnel as responsiblePersonnel,
+               dd.responsible_equipment as responsibleEquipment,
+               dd.responsible_team as responsibleTeam,
+               ROUND((dd.breakage_quantity-dd.quantity) * od.width * od.height / 1000000, 2) as patchArea,
+               rw.qualityIns_pector as qualityInsPector
+        from pp.damage_details dd
+                 left join	pp.reporting_work_detail rwd on dd.reporting_work_id = rwd.reporting_work_id and dd.order_number=rwd.order_number  and dd.technology_number=rwd.technology_number
+                 left join pp.reporting_work rw on dd.reporting_work_id = rw.reporting_work_id
+
+                 left join sd.`order` o on rw.order_id = o.order_id
+                 left join sd.order_detail od on rw.order_id = od.order_id and dd.order_number = od.order_number
+                 left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd
+                           on rw.order_id = ogd.order_id and dd.order_number = ogd.order_number
+
+        where  dd.breakage_quantity-dd.quantity>0 and dd.available=0
+
+    </select>
+
+
+</mapper>
\ No newline at end of file
diff --git a/north-glass-erp/target/classes/mapper/pp/ReportingWork.xml b/north-glass-erp/target/classes/mapper/pp/ReportingWork.xml
index 5b2914f..cb8f1ed 100644
--- a/north-glass-erp/target/classes/mapper/pp/ReportingWork.xml
+++ b/north-glass-erp/target/classes/mapper/pp/ReportingWork.xml
@@ -80,22 +80,27 @@
             ogd.child_width,
             ogd.child_height,
             od.shape,
-            fc.quantity - IFNULL(fc.number_patches,0)-IFNULL(rwd.completed_quantity,0)-IFNULL(rwd.breakage_quantity,0)-IFNULL((rwd.wait_rework_quantity),0)
-                        as quantity
+            fc.quantity -odpd.reporting_work_num as quantity,
+            odpd.reporting_work_num_count as completed,
+            odpd.broken_num as onceBroken
         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 reporting_work as rw on rw.order_id=fc.order_id and rw.production_id=fc.production_id and rw.process_id=fc.process_id
-                left join reporting_work_detail as rwd on rwd.reporting_work_id=rw.reporting_work_id and rwd.order_number=fc.order_number and rwd.technology_number=fc.technology_number
+        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
         WHERE
             fc.process_id = #{processIdStr}
-          AND position(
-                fc.technology_number IN #{technologyStr})
-
+          AND fc.technology_number = #{technologyStr}
+          AND odpd.process = #{process}
         order by fc.order_number
     </select>
 
@@ -109,7 +114,7 @@
                ogd.child_width,
                ogd.child_height,
                od.shape,
-               reportingwork_num -IFNULL(rwd.completed_quantity,0)-IFNULL(rwd.breakage_quantity,0)-IFNULL((rwd.wait_rework_quantity),0) as quantity
+               reporting_work_num -IFNULL(rwd.completed_quantity,0)-IFNULL(rwd.breakage_quantity,0)-IFNULL((rwd.wait_rework_quantity),0) as quantity
         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
@@ -131,12 +136,12 @@
     </select>
 
     <select id="SelectProcessMp">
-        select * from sd.basic_data where basic_type="product" and basic_category="process"
+        select * from sd.basic_data where basic_type='product' and basic_category='process'
 
     </select>
 
     <select id="historyProcessMp">
-        select ifnull(GROUP_CONCAT(distinct rw.this_process),"") from reporting_work as rw where rw.process_id=#{processIdStr}
+        select ifnull(GROUP_CONCAT(distinct rw.this_process),'') from reporting_work as rw where rw.process_id=#{processIdStr}
     </select>
 
     <select id="historyDeviceMp">
@@ -149,8 +154,8 @@
             sd.basic_data AS bd
                 LEFT JOIN `basic_data_produce` AS bdp ON bd.id = bdp.basic_category
         WHERE
-            bd.basic_category = "process"
-          AND bdp.basic_type = "device"
+            bd.basic_category = 'process'
+          AND bdp.basic_type = 'device'
           AND POSITION(bd.basic_name in CONCAT(#{historyProcess},#{process}))
     </select>
 
@@ -159,14 +164,23 @@
             bdp.id,
             bdp.basic_type,
             bdp.basic_name,
-            bd.basic_name AS basic_category
+            bd.basic_name,bd.id AS basic_category,
+            rw.process
         FROM
             sd.basic_data AS bd
-                LEFT JOIN `basic_data_produce` AS bdp ON bd.id = bdp.basic_category
+        LEFT JOIN `basic_data_produce` AS bdp
+            ON bd.id = bdp.basic_category
+        right join (
+                    select distinct process from
+                        (   select distinct rw.this_process as  process
+                            from reporting_work as rw where rw.process_id=#{processIdStr}
+                            UNION
+                            select #{process}
+                        ) as t
+                    ) as  rw
+        on rw.process=bd.basic_name
         WHERE
-            bd.basic_category = "process"
-          AND bdp.basic_type = "teamsgroups"
-          AND POSITION(bd.basic_name in CONCAT(#{historyProcess},#{process}))
+           bdp.basic_type = 'teamsgroups'
     </select>
 
     <select id="SelectHistoryProcessMp">
@@ -177,9 +191,23 @@
             sd.basic_data AS bd
                 LEFT JOIN `basic_data_produce` AS bdp ON bd.id = bdp.basic_category
         WHERE
-            bd.basic_category = "process"
-          AND bdp.basic_type = "teamsgroups"
+            bd.basic_category = 'process'
+          AND bdp.basic_type = 'teamsgroups'
           AND POSITION(bd.basic_name in CONCAT(#{historyProcess},#{process}))
     </select>
 
+    <select id="selectBasicNameByType">
+        select * from `basic_data_produce` as a where a.basic_type  = #{type}
+    </select>
+
+    <select id="selectMaxReportingWorkId">
+        select
+            ifnull(SUBSTR(max(reporting_work_id) from 9),0)
+        from
+            reporting_work as a
+        where
+            date(a.create_time) = curdate()
+        order by id desc,reporting_work_id	desc limit  1
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/north-glass-erp/target/classes/mapper/pp/ReworkMapper.xml b/north-glass-erp/target/classes/mapper/pp/ReworkMapper.xml
index 6e28ce9..4cdcf04 100644
--- a/north-glass-erp/target/classes/mapper/pp/ReworkMapper.xml
+++ b/north-glass-erp/target/classes/mapper/pp/ReworkMapper.xml
@@ -11,6 +11,7 @@
     <!--鑾峰彇杩斿伐鏁版嵁-->
     <select id="SelectRework" >
         select
+        r.id,
         r.review_status,
         r.rework_team,
         r.rework_id,
@@ -66,36 +67,39 @@
 
     <select id="getSelectRework">
         select o.order_id as orderId,
-               rwd.reporting_work_id as reportingWorkId,
+               dd.reporting_work_id as reportingWorkId,
                rw.process_id as processId,
                o.project,
                o.batch,
-               rwd.order_number as orderSort,
+               dd.id as reviewer,
+               dd.order_number as orderSort,
                od.product_name as productName,
-               ogd.technology_number as technologyNumber,
+               dd.technology_number as technologyNumber,
                ogd.glass_address as glassAddress,
-               rwd.wait_rework_quantity as reworkNum,
+               dd.breakage_quantity-dd.quantity as reworkNum,
                od.width,
                od.height,
                od.shape,
-               rwd.breakage_quantity as breakageQuantity,
-               rwd.return_process as reworkProcesses,
-               rwd.breakage_reason as reworkReason,
-               rwd.breakage_type as reworkType,
-               rwd.responsible_personnel as responsiblePersonnel,
-               rwd.responsible_equipment as responsibleEquipment,
-               rwd.responsible_team as responsibleTeam,
-               ROUND(rwd.wait_rework_quantity * od.width * od.height / 1000000, 2) as reworkArea,
+               dd.breakage_quantity-dd.quantity as breakageQuantity,
+               dd.return_process as reworkProcesses,
+               dd.breakage_reason as reworkReason,
+               dd.breakage_type as reworkType,
+               dd.responsible_personnel as responsiblePersonnel,
+               dd.responsible_equipment as responsibleEquipment,
+               dd.responsible_team as responsibleTeam,
+               ROUND((dd.breakage_quantity-dd.quantity) * od.width * od.height / 1000000, 2) as reworkArea,
                rw.qualityIns_pector as qualityInsPector
-        from pp.reporting_work_detail rwd
-                 left join pp.reporting_work rw on rwd.reporting_work_id = rw.reporting_work_id
-                 left join sd.`order` o on rw.order_id = o.order_id
-                 left join sd.order_detail od on rw.order_id = od.order_id and rwd.order_number = od.order_number
-                 left join sd.order_glass_detail ogd
-                           on rw.order_id = ogd.order_id and rwd.order_number = ogd.order_number
-                            where  rwd.wait_rework_quantity>0
+        from pp.damage_details dd
+                 left join	pp.reporting_work_detail rwd on dd.reporting_work_id = rwd.reporting_work_id and dd.order_number=rwd.order_number  and dd.technology_number=rwd.technology_number
+                 left join pp.reporting_work rw on dd.reporting_work_id = rw.reporting_work_id
 
-        group by ogd.order_id, ogd.order_number
+                 left join sd.`order` o on rw.order_id = o.order_id
+                 left join sd.order_detail od on rw.order_id = od.order_id and dd.order_number = od.order_number
+                 left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd
+                           on rw.order_id = ogd.order_id and dd.order_number = ogd.order_number
+
+        where  dd.breakage_quantity-dd.quantity>0 and dd.available=1
+
     </select>
 
 
@@ -103,8 +107,12 @@
         select count(*) from pp.rework where  date(create_time)=CURDATE()
     </select>
 
+    <select id="getMaxFlowCard" >
+        select count(*) from pp.flow_card where project_no=#{processId}
+    </select>
+
     <insert id="insertRework"  useGeneratedKeys="true" >
-        insert into pp.rework(rework_id,reporting_work_id, process_id,order_id, order_sort, technology_number, responsible_team,
+        insert into pp.rework(rework_id,reporting_work_id,process_id,order_id, order_sort, technology_number, responsible_team,
                               responsible_personnel, rework_type, rework_reason, rework_processes, rework_num,
                               rework_area, rework_team,responsible_equipment,quality_inspector, reviewer, review_status, create_time)
         values (
@@ -115,13 +123,15 @@
     </insert>
 
     <update id="updateRework"  >
-        update pp.rework set reviewer=#{userName},review_status=1,update_time=now() where rework_id=#{rework.reworkId}
+        update pp.rework set reviewer=#{userName},review_status=1,update_time=now() where rework_id=#{rework.id}
     </update>
 
-    <update id="updateReportingWorkDetail"  >
-        update pp.reporting_work_detail set wait_rework_quantity=wait_rework_quantity-#{rework.reworkNum}
-            where reporting_work_id=#{rework.reportingWorkId} and order_number=#{rework.orderSort} and technology_number=#{rework.technologyNumber}
+    <update id="updateDamageDetails"  >
+        update pp.damage_details set quantity=quantity+#{rework.reworkNum} where id=#{rework.reviewer}
     </update>
 
 
+
+
+
 </mapper>
\ No newline at end of file
diff --git a/north-glass-erp/target/classes/mapper/sd/Customer.xml b/north-glass-erp/target/classes/mapper/sd/Customer.xml
index 69697a9..9092f50 100644
--- a/north-glass-erp/target/classes/mapper/sd/Customer.xml
+++ b/north-glass-erp/target/classes/mapper/sd/Customer.xml
@@ -9,7 +9,7 @@
         from
             sd.customer
     </select>
-    <select id="getseletCustomer">
+    <select id="getSelectCustomer">
         select
             *
         from
@@ -41,7 +41,7 @@
         limit #{offset},#{pageSize};
     </select>
 
-    <select id="getseletCustomerPageTotal">
+    <select id="getSelectCustomerPageTotal">
         select
             CEILING(count(id)/#{pageSize}) as 'pageTotal',
             count(id) as 'total'
diff --git a/north-glass-erp/target/classes/mapper/sd/Delivery.xml b/north-glass-erp/target/classes/mapper/sd/Delivery.xml
index 186d9ea..7dc44a0 100644
--- a/north-glass-erp/target/classes/mapper/sd/Delivery.xml
+++ b/north-glass-erp/target/classes/mapper/sd/Delivery.xml
@@ -183,7 +183,7 @@
 
     </select>
 
-    <select id="getseletShippingOrderDetaildelivery" >
+    <select id="getSelectShippingOrderDetailDelivery" >
         select
         d.delivery_state,d.stock_state,d.payment_terms,
         d.customer_id,d.customer_name,d.project,d.pay_method,d.pay_date,d.contacts,d.contact_number,
@@ -199,7 +199,7 @@
     </select>
 
 
-    <select id="getseletShippingOrderDetaildeliverys" >
+    <select id="getSelectShippingOrderDetailDeliverys" >
         select customer_id,customer_name,project,salesman,salesman_id,contacts,contact_number,delivery_address from sd.`order`
         <where>
             <if test="orderDetail.orderId != null and orderDetail.orderId != ''">
@@ -210,7 +210,7 @@
         limit 0,1
     </select>
 
-    <select id="getseletShippingOrder">
+    <select id="getSelectShippingOrder">
         select * from sd.delivery d
         <where>
             date(d.create_time)>=#{startDate} and date(d.create_time) &lt;= #{endDate}
@@ -250,7 +250,7 @@
         limit #{offset},#{pageSize};
     </select>
 
-    <select id="getseletShippingOrderPageTotal">
+    <select id="getSelectShippingOrderPageTotal">
         select
             CEILING(count(id)/#{pageSize}) as 'pageTotal',
             count(id) as 'total'
diff --git a/north-glass-erp/target/classes/mapper/sd/DeliveryDetail.xml b/north-glass-erp/target/classes/mapper/sd/DeliveryDetail.xml
index 992c11e..a3ed5ad 100644
--- a/north-glass-erp/target/classes/mapper/sd/DeliveryDetail.xml
+++ b/north-glass-erp/target/classes/mapper/sd/DeliveryDetail.xml
@@ -89,7 +89,7 @@
 
 
 
-    <select id="getseletShippingOrderDetail" resultMap="selectDeliveryFinishedGoodsInventoryOrderDetail">
+    <select id="getSelectShippingOrderDetail" resultMap="selectDeliveryFinishedGoodsInventoryOrderDetail">
         select od.order_id,
                o.batch,
                dd.delivery_number,
@@ -195,7 +195,7 @@
         limit #{offset},#{pageSize};
     </select>
 
-    <select id="getseletShippingOrderDetailPageTotal">
+    <select id="getSelectShippingOrderDetailPageTotal">
         select
             CEILING(count(dd.id)/#{pageSize})
         from sd.delivery_detail dd
@@ -277,7 +277,7 @@
         limit #{offset},#{pageSize};
     </select>
 
-    <select id="getseletShippingOrderDetails" resultMap="selectDeliveryFinishedGoodsInventoryOrderDetail">
+    <select id="getSelectShippingOrderDetails" resultMap="selectDeliveryFinishedGoodsInventoryOrderDetail">
         select od.order_id,
                od.order_number,
                o.batch,
@@ -370,7 +370,7 @@
         limit #{offset},#{pageSize};
     </select>
 
-    <select id="getseletShippingOrderDetailsPageTotal">
+    <select id="getSelectShippingOrderDetailsPageTotal">
         select
         CEILING(count(od.id)/#{pageSize})
         from sd.order_detail od
diff --git a/north-glass-erp/target/classes/mapper/sd/OrderMapper.xml b/north-glass-erp/target/classes/mapper/sd/OrderMapper.xml
index e730c2a..d3ab571 100644
--- a/north-glass-erp/target/classes/mapper/sd/OrderMapper.xml
+++ b/north-glass-erp/target/classes/mapper/sd/OrderMapper.xml
@@ -5,11 +5,12 @@
 <mapper namespace="com.example.erp.mapper.sd.OrderMapper">
     <select id="selectMaxOrderId">
         select
-            COUNT(a.order_id)
+           ifnull(SUBSTR(max(order_id) from 9),0)
         from
             `order` as a
         where
             date(a.create_time) = curdate()
+        order by id desc,order_id	desc limit  1
     </select>
     
 

--
Gitblit v1.8.0