From 9cf4ac9c3f8301f5697f6d12ac4bf32855f0b044 Mon Sep 17 00:00:00 2001
From: yangyang
Date: 星期一, 17 三月 2025 07:54:10 +0800
Subject: [PATCH] #新增 添加质检单管理

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java     |   25 ++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/QlyInspectAndItem.java |   23 ++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java  |   78 +++++++
 rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java              |    5 
 rsf-server/src/main/resources/application.yml                                                    |    1 
 rsf-admin/package-lock.json                                                                      |  460 ++++++++++++++++++++++++++++++++---------
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java          |   34 +++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java                 |    6 
 rsf-admin/.env                                                                                   |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyInspectService.java           |    9 
 10 files changed, 538 insertions(+), 105 deletions(-)

diff --git a/rsf-admin/.env b/rsf-admin/.env
index a8ce658..ebc08a7 100644
--- a/rsf-admin/.env
+++ b/rsf-admin/.env
@@ -1,3 +1,3 @@
-VITE_BASE_IP=192.168.4.24
+VITE_BASE_IP=localhost
 # VITE_BASE_IP=47.76.147.249
 VITE_BASE_PORT=8080
diff --git a/rsf-admin/package-lock.json b/rsf-admin/package-lock.json
index d6e39ea..f731a50 100644
--- a/rsf-admin/package-lock.json
+++ b/rsf-admin/package-lock.json
@@ -10,18 +10,25 @@
         "@hello-pangea/dnd": "^16.3.0",
         "@mui/icons-material": "^5.16.7",
         "@mui/material": "^5.16.7",
+        "@mui/system": "^6.4.7",
+        "@mui/x-data-grid": "^7.27.3",
         "@mui/x-tree-view": "^7.16.0",
         "@tweenjs/tween.js": "^21.0.0",
         "axios": "^1.7.4",
         "date-fns": "^3.6.0",
+        "framer-motion": "^12.4.10",
         "lodash": "^4.17.21",
         "motion": "^12.4.1",
         "papaparse": "^5.4.1",
         "pixi.js": "^7.4.0",
+        "prop-types": "^15.8.1",
+        "ra-i18n-polyglot": "^5.6.2",
+        "ra-language-english": "^5.6.2",
         "react": "^18.3.0",
         "react-admin": "^5.1.0",
         "react-dom": "^18.3.0",
         "react-hook-form": "^7.53.0",
+        "react-router": "^6.22.0",
         "react-router-dom": "^6.26.1",
         "react-syntax-highlighter": "^15.5.0",
         "three": "^0.155.0",
@@ -304,9 +311,10 @@
       }
     },
     "node_modules/@babel/runtime": {
-      "version": "7.25.6",
-      "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.25.6.tgz",
-      "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
+      "version": "7.26.10",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz",
+      "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==",
+      "license": "MIT",
       "dependencies": {
         "regenerator-runtime": "^0.14.0"
       },
@@ -392,13 +400,14 @@
       }
     },
     "node_modules/@emotion/cache": {
-      "version": "11.13.1",
-      "resolved": "https://registry.npmmirror.com/@emotion/cache/-/cache-11.13.1.tgz",
-      "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==",
+      "version": "11.14.0",
+      "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz",
+      "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==",
+      "license": "MIT",
       "dependencies": {
         "@emotion/memoize": "^0.9.0",
         "@emotion/sheet": "^1.4.0",
-        "@emotion/utils": "^1.4.0",
+        "@emotion/utils": "^1.4.2",
         "@emotion/weak-memoize": "^0.4.0",
         "stylis": "4.2.0"
       }
@@ -445,14 +454,15 @@
       }
     },
     "node_modules/@emotion/serialize": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmmirror.com/@emotion/serialize/-/serialize-1.3.1.tgz",
-      "integrity": "sha512-dEPNKzBPU+vFPGa+z3axPRn8XVDetYORmDC0wAiej+TNcOZE70ZMJa0X7JdeoM6q/nWTMZeLpN/fTnD9o8MQBA==",
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz",
+      "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==",
+      "license": "MIT",
       "dependencies": {
         "@emotion/hash": "^0.9.2",
         "@emotion/memoize": "^0.9.0",
         "@emotion/unitless": "^0.10.0",
-        "@emotion/utils": "^1.4.0",
+        "@emotion/utils": "^1.4.2",
         "csstype": "^3.0.2"
       }
     },
@@ -497,9 +507,10 @@
       }
     },
     "node_modules/@emotion/utils": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmmirror.com/@emotion/utils/-/utils-1.4.0.tgz",
-      "integrity": "sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ=="
+      "version": "1.4.2",
+      "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz",
+      "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==",
+      "license": "MIT"
     },
     "node_modules/@emotion/weak-memoize": {
       "version": "0.4.0",
@@ -1124,18 +1135,14 @@
         }
       }
     },
-    "node_modules/@mui/material/node_modules/react-is": {
-      "version": "18.3.1",
-      "resolved": "https://registry.npmmirror.com/react-is/-/react-is-18.3.1.tgz",
-      "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
-    },
-    "node_modules/@mui/private-theming": {
-      "version": "5.16.6",
-      "resolved": "https://registry.npmmirror.com/@mui/private-theming/-/private-theming-5.16.6.tgz",
-      "integrity": "sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==",
+    "node_modules/@mui/material/node_modules/@mui/private-theming": {
+      "version": "5.16.14",
+      "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.14.tgz",
+      "integrity": "sha512-12t7NKzvYi819IO5IapW2BcR33wP/KAVrU8d7gLhGHoAmhDxyXlRoKiRij3TOD8+uzk0B6R9wHUNKi4baJcRNg==",
+      "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.23.9",
-        "@mui/utils": "^5.16.6",
+        "@mui/utils": "^5.16.14",
         "prop-types": "^15.8.1"
       },
       "engines": {
@@ -1146,8 +1153,8 @@
         "url": "https://opencollective.com/mui-org"
       },
       "peerDependencies": {
-        "@types/react": "^17.0.0 || ^18.0.0",
-        "react": "^17.0.0 || ^18.0.0"
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
       },
       "peerDependenciesMeta": {
         "@types/react": {
@@ -1155,13 +1162,14 @@
         }
       }
     },
-    "node_modules/@mui/styled-engine": {
-      "version": "5.16.6",
-      "resolved": "https://registry.npmmirror.com/@mui/styled-engine/-/styled-engine-5.16.6.tgz",
-      "integrity": "sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==",
+    "node_modules/@mui/material/node_modules/@mui/styled-engine": {
+      "version": "5.16.14",
+      "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.14.tgz",
+      "integrity": "sha512-UAiMPZABZ7p8mUW4akDV6O7N3+4DatStpXMZwPlt+H/dA0lt67qawN021MNND+4QTpjaiMYxbhKZeQcyWCbuKw==",
+      "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.23.9",
-        "@emotion/cache": "^11.11.0",
+        "@emotion/cache": "^11.13.5",
         "csstype": "^3.1.3",
         "prop-types": "^15.8.1"
       },
@@ -1175,7 +1183,7 @@
       "peerDependencies": {
         "@emotion/react": "^11.4.1",
         "@emotion/styled": "^11.3.0",
-        "react": "^17.0.0 || ^18.0.0"
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
       },
       "peerDependenciesMeta": {
         "@emotion/react": {
@@ -1186,16 +1194,17 @@
         }
       }
     },
-    "node_modules/@mui/system": {
-      "version": "5.16.7",
-      "resolved": "https://registry.npmmirror.com/@mui/system/-/system-5.16.7.tgz",
-      "integrity": "sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA==",
+    "node_modules/@mui/material/node_modules/@mui/system": {
+      "version": "5.16.14",
+      "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.14.tgz",
+      "integrity": "sha512-KBxMwCb8mSIABnKvoGbvM33XHyT+sN0BzEBG+rsSc0lLQGzs7127KWkCA6/H8h6LZ00XpBEME5MAj8mZLiQ1tw==",
+      "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.23.9",
-        "@mui/private-theming": "^5.16.6",
-        "@mui/styled-engine": "^5.16.6",
+        "@mui/private-theming": "^5.16.14",
+        "@mui/styled-engine": "^5.16.14",
         "@mui/types": "^7.2.15",
-        "@mui/utils": "^5.16.6",
+        "@mui/utils": "^5.16.14",
         "clsx": "^2.1.0",
         "csstype": "^3.1.3",
         "prop-types": "^15.8.1"
@@ -1210,8 +1219,8 @@
       "peerDependencies": {
         "@emotion/react": "^11.5.0",
         "@emotion/styled": "^11.3.0",
-        "@types/react": "^17.0.0 || ^18.0.0",
-        "react": "^17.0.0 || ^18.0.0"
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
       },
       "peerDependenciesMeta": {
         "@emotion/react": {
@@ -1225,12 +1234,191 @@
         }
       }
     },
-    "node_modules/@mui/types": {
-      "version": "7.2.15",
-      "resolved": "https://registry.npmmirror.com/@mui/types/-/types-7.2.15.tgz",
-      "integrity": "sha512-nbo7yPhtKJkdf9kcVOF8JZHPZTmqXjJ/tI0bdWgHg5tp9AnIN4Y7f7wm9T+0SyGYJk76+GYZ8Q5XaTYAsUHN0Q==",
+    "node_modules/@mui/material/node_modules/react-is": {
+      "version": "18.3.1",
+      "resolved": "https://registry.npmmirror.com/react-is/-/react-is-18.3.1.tgz",
+      "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
+    },
+    "node_modules/@mui/private-theming": {
+      "version": "6.4.6",
+      "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.4.6.tgz",
+      "integrity": "sha512-T5FxdPzCELuOrhpA2g4Pi6241HAxRwZudzAuL9vBvniuB5YU82HCmrARw32AuCiyTfWzbrYGGpZ4zyeqqp9RvQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.26.0",
+        "@mui/utils": "^6.4.6",
+        "prop-types": "^15.8.1"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      },
       "peerDependencies": {
-        "@types/react": "^17.0.0 || ^18.0.0"
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/private-theming/node_modules/@mui/utils": {
+      "version": "6.4.6",
+      "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.4.6.tgz",
+      "integrity": "sha512-43nZeE1pJF2anGafNydUcYFPtHwAqiBiauRtaMvurdrZI3YrUjHkAu43RBsxef7OFtJMXGiHFvq43kb7lig0sA==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.26.0",
+        "@mui/types": "^7.2.21",
+        "@types/prop-types": "^15.7.14",
+        "clsx": "^2.1.1",
+        "prop-types": "^15.8.1",
+        "react-is": "^19.0.0"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      },
+      "peerDependencies": {
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/private-theming/node_modules/react-is": {
+      "version": "19.0.0",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.0.0.tgz",
+      "integrity": "sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==",
+      "license": "MIT"
+    },
+    "node_modules/@mui/styled-engine": {
+      "version": "6.4.6",
+      "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.4.6.tgz",
+      "integrity": "sha512-vSWYc9ZLX46be5gP+FCzWVn5rvDr4cXC5JBZwSIkYk9xbC7GeV+0kCvB8Q6XLFQJy+a62bbqtmdwS4Ghi9NBlQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.26.0",
+        "@emotion/cache": "^11.13.5",
+        "@emotion/serialize": "^1.3.3",
+        "@emotion/sheet": "^1.4.0",
+        "csstype": "^3.1.3",
+        "prop-types": "^15.8.1"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      },
+      "peerDependencies": {
+        "@emotion/react": "^11.4.1",
+        "@emotion/styled": "^11.3.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@emotion/react": {
+          "optional": true
+        },
+        "@emotion/styled": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/system": {
+      "version": "6.4.7",
+      "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.4.7.tgz",
+      "integrity": "sha512-7wwc4++Ak6tGIooEVA9AY7FhH2p9fvBMORT4vNLMAysH3Yus/9B9RYMbrn3ANgsOyvT3Z7nE+SP8/+3FimQmcg==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.26.0",
+        "@mui/private-theming": "^6.4.6",
+        "@mui/styled-engine": "^6.4.6",
+        "@mui/types": "^7.2.21",
+        "@mui/utils": "^6.4.6",
+        "clsx": "^2.1.1",
+        "csstype": "^3.1.3",
+        "prop-types": "^15.8.1"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      },
+      "peerDependencies": {
+        "@emotion/react": "^11.5.0",
+        "@emotion/styled": "^11.3.0",
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@emotion/react": {
+          "optional": true
+        },
+        "@emotion/styled": {
+          "optional": true
+        },
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/system/node_modules/@mui/utils": {
+      "version": "6.4.6",
+      "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.4.6.tgz",
+      "integrity": "sha512-43nZeE1pJF2anGafNydUcYFPtHwAqiBiauRtaMvurdrZI3YrUjHkAu43RBsxef7OFtJMXGiHFvq43kb7lig0sA==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.26.0",
+        "@mui/types": "^7.2.21",
+        "@types/prop-types": "^15.7.14",
+        "clsx": "^2.1.1",
+        "prop-types": "^15.8.1",
+        "react-is": "^19.0.0"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      },
+      "peerDependencies": {
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/system/node_modules/react-is": {
+      "version": "19.0.0",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.0.0.tgz",
+      "integrity": "sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==",
+      "license": "MIT"
+    },
+    "node_modules/@mui/types": {
+      "version": "7.2.21",
+      "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.21.tgz",
+      "integrity": "sha512-6HstngiUxNqLU+/DPqlUJDIPbzUBxIVHb1MmXP0eTWDIROiCR2viugXpEif0PPe2mLqqakPzzRClWAnK+8UJww==",
+      "license": "MIT",
+      "peerDependencies": {
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0"
       },
       "peerDependenciesMeta": {
         "@types/react": {
@@ -1239,16 +1427,17 @@
       }
     },
     "node_modules/@mui/utils": {
-      "version": "5.16.6",
-      "resolved": "https://registry.npmmirror.com/@mui/utils/-/utils-5.16.6.tgz",
-      "integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==",
+      "version": "5.16.14",
+      "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.14.tgz",
+      "integrity": "sha512-wn1QZkRzSmeXD1IguBVvJJHV3s6rxJrfb6YuC9Kk6Noh9f8Fb54nUs5JRkKm+BOerRhj5fLg05Dhx/H3Ofb8Mg==",
+      "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.23.9",
         "@mui/types": "^7.2.15",
         "@types/prop-types": "^15.7.12",
         "clsx": "^2.1.1",
         "prop-types": "^15.8.1",
-        "react-is": "^18.3.1"
+        "react-is": "^19.0.0"
       },
       "engines": {
         "node": ">=12.0.0"
@@ -1258,8 +1447,8 @@
         "url": "https://opencollective.com/mui-org"
       },
       "peerDependencies": {
-        "@types/react": "^17.0.0 || ^18.0.0",
-        "react": "^17.0.0 || ^18.0.0"
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
       },
       "peerDependenciesMeta": {
         "@types/react": {
@@ -1268,9 +1457,68 @@
       }
     },
     "node_modules/@mui/utils/node_modules/react-is": {
-      "version": "18.3.1",
-      "resolved": "https://registry.npmmirror.com/react-is/-/react-is-18.3.1.tgz",
-      "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
+      "version": "19.0.0",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.0.0.tgz",
+      "integrity": "sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==",
+      "license": "MIT"
+    },
+    "node_modules/@mui/x-data-grid": {
+      "version": "7.27.3",
+      "resolved": "https://registry.npmjs.org/@mui/x-data-grid/-/x-data-grid-7.27.3.tgz",
+      "integrity": "sha512-7zbDbFrhV6ODjyn3ImOZG34nbMbCvmHgqYTYP273TNAj8hMy4BiLyiKFFZTzVddIj3KQ6qLzBpByhqifGgEDOg==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.25.7",
+        "@mui/utils": "^5.16.6 || ^6.0.0",
+        "@mui/x-internals": "7.26.0",
+        "clsx": "^2.1.1",
+        "prop-types": "^15.8.1",
+        "reselect": "^5.1.1",
+        "use-sync-external-store": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      },
+      "peerDependencies": {
+        "@emotion/react": "^11.9.0",
+        "@emotion/styled": "^11.8.1",
+        "@mui/material": "^5.15.14 || ^6.0.0",
+        "@mui/system": "^5.15.14 || ^6.0.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@emotion/react": {
+          "optional": true
+        },
+        "@emotion/styled": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/x-data-grid/node_modules/@mui/x-internals": {
+      "version": "7.26.0",
+      "resolved": "https://registry.npmjs.org/@mui/x-internals/-/x-internals-7.26.0.tgz",
+      "integrity": "sha512-VxTCYQcZ02d3190pdvys2TDg9pgbvewAVakEopiOgReKAUhLdRlgGJHcOA/eAuGLyK1YIo26A6Ow6ZKlSRLwMg==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.25.7",
+        "@mui/utils": "^5.16.6 || ^6.0.0"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      },
+      "peerDependencies": {
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      }
     },
     "node_modules/@mui/x-internals": {
       "version": "7.16.0",
@@ -1721,9 +1969,10 @@
       }
     },
     "node_modules/@remix-run/router": {
-      "version": "1.19.1",
-      "resolved": "https://registry.npmmirror.com/@remix-run/router/-/router-1.19.1.tgz",
-      "integrity": "sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==",
+      "version": "1.23.0",
+      "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz",
+      "integrity": "sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==",
+      "license": "MIT",
       "engines": {
         "node": ">=14.0.0"
       }
@@ -2060,9 +2309,10 @@
       "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="
     },
     "node_modules/@types/prop-types": {
-      "version": "15.7.12",
-      "resolved": "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.12.tgz",
-      "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q=="
+      "version": "15.7.14",
+      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz",
+      "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==",
+      "license": "MIT"
     },
     "node_modules/@types/react": {
       "version": "18.3.4",
@@ -3789,13 +4039,13 @@
       }
     },
     "node_modules/framer-motion": {
-      "version": "12.4.1",
-      "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.4.1.tgz",
-      "integrity": "sha512-5Ijbea3topSZjadQ0hgc/TcWj2ldMZmNREM7RvAhvsThYOA1HHOA8TT1yKvMu1YXP3jWaFwoZ6Vo9Nw+DUZrzA==",
+      "version": "12.5.0",
+      "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.5.0.tgz",
+      "integrity": "sha512-buPlioFbH9/W7rDzYh1C09AuZHAk2D1xTA1BlounJ2Rb9aRg84OXexP0GLd+R83v0khURdMX7b5MKnGTaSg5iA==",
       "license": "MIT",
       "dependencies": {
-        "motion-dom": "^12.0.0",
-        "motion-utils": "^12.0.0",
+        "motion-dom": "^12.5.0",
+        "motion-utils": "^12.5.0",
         "tslib": "^2.4.0"
       },
       "peerDependencies": {
@@ -4888,18 +5138,18 @@
       }
     },
     "node_modules/motion-dom": {
-      "version": "12.0.0",
-      "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.0.0.tgz",
-      "integrity": "sha512-CvYd15OeIR6kHgMdonCc1ihsaUG4MYh/wrkz8gZ3hBX/uamyZCXN9S9qJoYF03GqfTt7thTV/dxnHYX4+55vDg==",
+      "version": "12.5.0",
+      "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.5.0.tgz",
+      "integrity": "sha512-uH2PETDh7m+Hjd1UQQ56yHqwn83SAwNjimNPE/kC+Kds0t4Yh7+29rfo5wezVFpPOv57U4IuWved5d1x0kNhbQ==",
       "license": "MIT",
       "dependencies": {
-        "motion-utils": "^12.0.0"
+        "motion-utils": "^12.5.0"
       }
     },
     "node_modules/motion-utils": {
-      "version": "12.0.0",
-      "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.0.0.tgz",
-      "integrity": "sha512-MNFiBKbbqnmvOjkPyOKgHUp3Q6oiokLkI1bEwm5QA28cxMZrv0CbbBGDNmhF6DIXsi1pCQBSs0dX8xjeER1tmA==",
+      "version": "12.5.0",
+      "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.5.0.tgz",
+      "integrity": "sha512-+hFFzvimn0sBMP9iPxBa9OtRX35ZQ3py0UHnb8U29VD+d8lQ8zH3dTygJWqK7av2v6yhg7scj9iZuvTS0f4+SA==",
       "license": "MIT"
     },
     "node_modules/motion/node_modules/tslib": {
@@ -5416,28 +5666,28 @@
       ]
     },
     "node_modules/ra-core": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmmirror.com/ra-core/-/ra-core-5.1.2.tgz",
-      "integrity": "sha512-WWv1wAsxTjUvC1Od+QA+CjlMI2qhhVAXrTmyrV/EgKvxY8uXIjjWVm0FEczNiiYXvFRGMTDPuqL1d6xKC/0OHA==",
+      "version": "5.6.3",
+      "resolved": "https://registry.npmjs.org/ra-core/-/ra-core-5.6.3.tgz",
+      "integrity": "sha512-Z22rKk+CXnTFvCIeKzCf6ic9I48WQotx4EzX16PS47IgrD/Wq/PH+J8YLlTzakoGyEqyxnp+KI/SveLx0QBmww==",
+      "license": "MIT",
       "dependencies": {
-        "@tanstack/react-query": "^5.8.4",
+        "@tanstack/react-query": "^5.21.7",
         "clsx": "^2.1.1",
         "date-fns": "^3.6.0",
         "eventemitter3": "^5.0.1",
-        "hotscript": "^1.0.12",
         "inflection": "^3.0.0",
         "jsonexport": "^3.2.0",
-        "lodash": "~4.17.5",
+        "lodash": "^4.17.21",
         "query-string": "^7.1.3",
         "react-error-boundary": "^4.0.13",
-        "react-is": "^18.2.0"
+        "react-is": "^18.2.0 || ^19.0.0"
       },
       "peerDependencies": {
         "react": "^18.0.0 || ^19.0.0",
         "react-dom": "^18.0.0 || ^19.0.0",
-        "react-hook-form": "^7.52.0",
-        "react-router": "^6.22.0",
-        "react-router-dom": "^6.22.0"
+        "react-hook-form": "^7.53.0",
+        "react-router": "^6.28.1 || ^7.1.1",
+        "react-router-dom": "^6.28.1 || ^7.1.1"
       }
     },
     "node_modules/ra-core/node_modules/react-is": {
@@ -5446,20 +5696,22 @@
       "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
     },
     "node_modules/ra-i18n-polyglot": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmmirror.com/ra-i18n-polyglot/-/ra-i18n-polyglot-5.1.2.tgz",
-      "integrity": "sha512-47zgzyPgdlwimsFyqZJtglTZB1auVgOwuqbXd0OfruW+OUhSY4pLvk1rJNMUJrl3QjGbybb2DtjDbPFRO84u+Q==",
+      "version": "5.6.3",
+      "resolved": "https://registry.npmjs.org/ra-i18n-polyglot/-/ra-i18n-polyglot-5.6.3.tgz",
+      "integrity": "sha512-tuzq//7wVA6+A1gsQB+WXhVCNS622YdkHDGNEFjp9sXezFhNdeak1zh7vWGuny6ssrbiWn2ItgjEGgw9dItYRQ==",
+      "license": "MIT",
       "dependencies": {
         "node-polyglot": "^2.2.2",
-        "ra-core": "^5.1.2"
+        "ra-core": "^5.6.3"
       }
     },
     "node_modules/ra-language-english": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmmirror.com/ra-language-english/-/ra-language-english-5.1.2.tgz",
-      "integrity": "sha512-d4+bvLDQxo4WVd9oYM4eg/xQwjWttwWT96uA6d6eO+w2ldtlL0dLMOFRz6Mv5v7b0/vlZFKFSNgchaT8L1anSw==",
+      "version": "5.6.3",
+      "resolved": "https://registry.npmjs.org/ra-language-english/-/ra-language-english-5.6.3.tgz",
+      "integrity": "sha512-pmtcOP94QS61QuXVLF4uusBe08h47Td4rQbcEiJ7o/ZoUG/VHcY52nJBXheURFyKM7LXwV4mbIBeyoT58x7MdQ==",
+      "license": "MIT",
       "dependencies": {
-        "ra-core": "^5.1.2"
+        "ra-core": "^5.6.3"
       }
     },
     "node_modules/raf-schd": {
@@ -5649,11 +5901,12 @@
       }
     },
     "node_modules/react-router": {
-      "version": "6.26.1",
-      "resolved": "https://registry.npmmirror.com/react-router/-/react-router-6.26.1.tgz",
-      "integrity": "sha512-kIwJveZNwp7teQRI5QmwWo39A5bXRyqpH0COKKmPnyD2vBvDwgFXSqDUYtt1h+FEyfnE8eXr7oe0MxRzVwCcvQ==",
+      "version": "6.30.0",
+      "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.0.tgz",
+      "integrity": "sha512-D3X8FyH9nBcTSHGdEKurK7r8OYE1kKFn3d/CF+CoxbSHkxU7o37+Uh7eAHRXr6k2tSExXYO++07PeXJtA/dEhQ==",
+      "license": "MIT",
       "dependencies": {
-        "@remix-run/router": "1.19.1"
+        "@remix-run/router": "1.23.0"
       },
       "engines": {
         "node": ">=14.0.0"
@@ -5663,12 +5916,13 @@
       }
     },
     "node_modules/react-router-dom": {
-      "version": "6.26.1",
-      "resolved": "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-6.26.1.tgz",
-      "integrity": "sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw==",
+      "version": "6.30.0",
+      "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.0.tgz",
+      "integrity": "sha512-x30B78HV5tFk8ex0ITwzC9TTZMua4jGyA9IUlH1JLQYQTFyxr/ZxwOJq7evg1JX1qGVUcvhsmQSKdPncQrjTgA==",
+      "license": "MIT",
       "dependencies": {
-        "@remix-run/router": "1.19.1",
-        "react-router": "6.26.1"
+        "@remix-run/router": "1.23.0",
+        "react-router": "6.30.0"
       },
       "engines": {
         "node": ">=14.0.0"
@@ -5787,6 +6041,12 @@
       "resolved": "https://registry.npmmirror.com/remove-accents/-/remove-accents-0.4.4.tgz",
       "integrity": "sha512-EpFcOa/ISetVHEXqu+VwI96KZBmq+a8LJnGkaeFw45epGlxIZz5dhEEnNZMsQXgORu3qaMoLX4qJCzOik6ytAg=="
     },
+    "node_modules/reselect": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz",
+      "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==",
+      "license": "MIT"
+    },
     "node_modules/resolve": {
       "version": "2.0.0-next.5",
       "resolved": "https://registry.npmmirror.com/resolve/-/resolve-2.0.0-next.5.tgz",
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
index 527cf7b..494d4d6 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -156,6 +156,7 @@
             throw new CoolException("搴撳尯鏍囪瘑涓嶈兘涓虹┖锛侊紒");
         }
 
+
         WarehouseAreas areasItem = warehouseAreasService.getOne(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getId, params.getWhAreaId()));
         if (Objects.isNull(areasItem)) {
             throw new CoolException("鏁版嵁閿欒锛氬綋鍓嶅簱鍖轰笉瀛樺湪锛侊紒");
@@ -164,12 +165,43 @@
         List<Fields> fields = fieldsMapper.selectList(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1).eq(Fields::getStatus, 1));
 
         List<ReceiptDetlsDto> receipts = params.getReceipts();
-        List<WarehouseAreasItem> allOrders =   new ArrayList<>();
+        List<WarehouseAreasItem> allOrders = new ArrayList<>();
+
+        double receiptQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getReceiptQty).sum();
+
+        String asnCode = receipts.stream().findFirst().get().getAsnCode();
+
+        AsnOrder asnOrder = asnOrderMapper.selectOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getCode, asnCode));
+        asnOrder.setQty(receiptQty);
+
+        if (asnOrderMapper.updateById(asnOrder) < 1) {
+            throw new CoolException("宸叉敹璐ф暟閲忎慨鏀瑰け璐ワ紒锛�");
+        }
+
         receipts.forEach(dto -> {
             Matnr matnr = matnrMapper.selectById(dto.getMatnrId());
             if (Objects.isNull(matnr)) {
                 throw new CoolException("鏁版嵁閿欒锛氬綋鍓嶇墿鏂欎笉瀛樺湪锛侊紒");
             }
+            if (Objects.isNull(dto.getReceiptQty())) {
+                throw new CoolException("鏀惰揣鏁版嵁涓嶈兘涓虹┖锛侊紒");
+            }
+            if (dto.getReceiptQty() < dto.getPurQty()) {
+                throw new CoolException("鏀惰揣鏁伴噺涓嶈兘澶т簬閲囪喘鏁伴噺锛侊紒");
+            }
+
+            AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>()
+                    .eq(AsnOrderItem::getAsnCode, asnCode)
+                    .eq(AsnOrderItem::getMatnrId, dto.getMatnrId()));
+            if (Objects.isNull(orderItem)) {
+                throw new CoolException("閫氱煡鍗曟槑缁嗕笉瀛樺湪锛侊紒");
+            }
+            orderItem.setQty(dto.getReceiptQty());
+
+            if (asnOrderItemMapper.updateById(orderItem) < 1) {
+                throw new CoolException("閫氱煡鍗曟槑缁嗘暟閲忎慨鏀瑰け璐ワ紒锛�");
+            }
+
             WarehouseAreasItem item = new WarehouseAreasItem();
             item.setBarcode(dto.getBarcode())
                     .setAreaName(areasItem.getName())
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java
index f32b867..6b9d1d0 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java
@@ -4,15 +4,18 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.vincent.rsf.framework.common.Cools;
 import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.common.utils.ExcelUtil;
 import com.vincent.rsf.server.common.annotation.OperationLog;
 import com.vincent.rsf.server.common.domain.BaseParam;
 import com.vincent.rsf.server.common.domain.KeyValVo;
 import com.vincent.rsf.server.common.domain.PageParam;
+import com.vincent.rsf.server.manager.controller.params.QlyInspectAndItem;
 import com.vincent.rsf.server.manager.entity.QlyInspect;
 import com.vincent.rsf.server.manager.service.QlyInspectService;
 import com.vincent.rsf.server.system.controller.BaseController;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -20,7 +23,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.util.*;
 
-@Api(tags = "璐ㄦ")
+@Api(tags = "璐ㄦ淇℃伅")
 @RestController
 public class QlyInspectController extends BaseController {
 
@@ -35,6 +38,26 @@
         return R.ok().add(qlyInspectService.page(pageParam, pageParam.buildWrapper(true)));
     }
 
+    @PostMapping("/qlyInspect/all/save")
+    @PreAuthorize("'manager:qlyInspect:save'")
+    @ApiOperation("鍗曟嵁鍙婃槑缁嗕繚瀛�")
+    public R allSvae(@RequestBody QlyInspectAndItem params) {
+        if (Objects.isNull(params)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return R.ok(qlyInspectService.allSave(params));
+    }
+
+    @PostMapping("/qlyInspect/reports")
+    @ApiOperation("鑾峰彇宸蹭笂鎶ュ崟鎹槑缁�")
+    @PreAuthorize("hasAuthority('manager:qlyInspect:list')")
+    public R listByAsnCode(@RequestBody Map<String, Object> map) {
+        if (Objects.isNull(map)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return R.ok(qlyInspectService.listByAsn(map));
+    }
+
     @PreAuthorize("hasAuthority('manager:qlyInspect:list')")
     @PostMapping("/qlyInspect/list")
     public R list(@RequestBody Map<String, Object> map) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/QlyInspectAndItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/QlyInspectAndItem.java
new file mode 100644
index 0000000..35ad580
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/QlyInspectAndItem.java
@@ -0,0 +1,23 @@
+package com.vincent.rsf.server.manager.controller.params;
+
+import com.vincent.rsf.server.manager.entity.QlyInspect;
+import com.vincent.rsf.server.manager.entity.QlyIsptItem;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "QlyInspectAndItem", description = "璐ㄦ鍗曞強鏄庣粏")
+public class QlyInspectAndItem {
+
+    @ApiModelProperty("涓诲崟鏁版嵁")
+    private QlyInspect qlyInspect;
+
+    @ApiModelProperty("鏄庣粏鏁版嵁")
+    private List<QlyIsptItem> qlyIsptItems;
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java
index f801136..af2a6ec 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java
@@ -164,6 +164,9 @@
     @ApiModelProperty(value= "鍖呰鍚嶇О")
     private String packName;
 
+    @ApiModelProperty("涓婃姤鐘舵�� 0: 鏈笂鎶�, 1: 宸蹭笂鎶�")
+    private Integer ntyStatus;
+
     /**
      * 鐘舵�� 1: 姝e父  0: 鍐荤粨  
      */
@@ -217,7 +220,7 @@
 
     public AsnOrderItem() {}
 
-    public AsnOrderItem(Long asnId,String asnCode,Long poDetlId, String matnrCode, String poCode,String matnrId,String matnk,Double anfme,String stockUnit,Double purQty,String purUnit,Double qty,String splrCode,String splrName,String qrcode,String barcode,String packName,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
+    public AsnOrderItem(Long asnId,String asnCode,Long poDetlId, String matnrCode, String poCode,String matnrId,String matnk,Double anfme,String stockUnit,Double purQty,String purUnit,Double qty,String splrCode,String splrName,String qrcode,String barcode,String packName,Integer status, Integer ntyStatus,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
         this.asnId = asnId;
         this.asnCode = asnCode;
         this.poDetlId = poDetlId;
@@ -230,6 +233,7 @@
         this.purQty = purQty;
         this.purUnit = purUnit;
         this.qty = qty;
+        this.ntyStatus = ntyStatus;
         this.splrCode = splrCode;
         this.splrName = splrName;
         this.qrcode = qrcode;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyInspectService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyInspectService.java
index 66d19a1..0b644c2 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyInspectService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyInspectService.java
@@ -1,8 +1,17 @@
 package com.vincent.rsf.server.manager.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.server.manager.controller.params.QlyInspectAndItem;
+import com.vincent.rsf.server.manager.entity.AsnOrderItem;
 import com.vincent.rsf.server.manager.entity.QlyInspect;
+
+import java.util.List;
+import java.util.Map;
 
 public interface QlyInspectService extends IService<QlyInspect> {
 
+    List<AsnOrderItem> listByAsn(Map<String, Object> map);
+
+    R allSave(QlyInspectAndItem params);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java
index 25066c9..73eeacb 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java
@@ -1,12 +1,90 @@
 package com.vincent.rsf.server.manager.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.manager.controller.params.QlyInspectAndItem;
+import com.vincent.rsf.server.manager.entity.AsnOrder;
+import com.vincent.rsf.server.manager.entity.AsnOrderItem;
+import com.vincent.rsf.server.manager.entity.QlyIsptItem;
 import com.vincent.rsf.server.manager.mapper.QlyInspectMapper;
 import com.vincent.rsf.server.manager.entity.QlyInspect;
+import com.vincent.rsf.server.manager.service.AsnOrderItemService;
+import com.vincent.rsf.server.manager.service.AsnOrderService;
 import com.vincent.rsf.server.manager.service.QlyInspectService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vincent.rsf.server.manager.service.QlyIsptItemService;
+import com.vincent.rsf.server.system.constant.SerialRuleCode;
+import com.vincent.rsf.server.system.utils.SerialRuleUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 @Service("qlyInspectService")
 public class QlyInspectServiceImpl extends ServiceImpl<QlyInspectMapper, QlyInspect> implements QlyInspectService {
 
+    @Autowired
+    private AsnOrderItemService asnOrderItemService;
+
+    @Autowired
+    private AsnOrderService asnOrderService;
+
+    @Autowired
+    private QlyIsptItemService qlyIsptItemService;
+
+    @Override
+    public List<AsnOrderItem> listByAsn(Map<String, Object> map) {
+        if (Objects.isNull(map.get("asnCode"))) {
+            throw new CoolException("鏀惰揣鍗曟嵁鏄庣粏缂栫爜涓嶈兘涓虹┖锛侊紒");
+        }
+        AsnOrder asnOrder = asnOrderService.getOne(new LambdaQueryWrapper<AsnOrder>()
+                .eq(AsnOrder::getCode, map.get("asnCode"))
+                .ne(AsnOrder::getNtyStatus, 0));
+        if (Objects.isNull(asnOrder)) {
+            throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
+        }
+        List<AsnOrderItem> asnOrderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>()
+                .eq(AsnOrderItem::getAsnCode, map.get("asnCode"))
+                .eq(AsnOrderItem::getNtyStatus, 1));
+        if (asnOrderItems.isEmpty()) {
+            return new ArrayList<>();
+        }
+        return asnOrderItems;
+    }
+
+    @Override
+    public R allSave(QlyInspectAndItem params) {
+        if (Objects.isNull(params.getQlyInspect())) {
+            throw new CoolException("璐ㄦ鍗曟嵁涓嶈兘涓虹┖锛侊紒");
+        }
+        QlyInspect inspect = params.getQlyInspect();
+        if (Objects.isNull(inspect.getWkType())) {
+            throw new CoolException("涓氬姟绫诲瀷涓嶈兘涓虹┖锛侊紒");
+        }
+        String code = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_INSPECT_WK_TYPE, inspect);
+        inspect.setCode(code);
+        if (!this.saveOrUpdate(inspect)) {
+            throw new CoolException("璐ㄦ鍗曚繚瀛樺け璐ワ紒锛�");
+        }
+        List<QlyIsptItem> isptItems = params.getQlyIsptItems();
+        if (isptItems.isEmpty()) {
+            return R.ok("淇濆瓨鎴愬姛锛侊紒");
+        }
+        List<QlyIsptItem> items = new ArrayList<>();
+        for (QlyIsptItem isptItem : isptItems) {
+            if (Objects.isNull(isptItem.getMatnrCode())) {
+                continue;
+            }
+            isptItem.setIspectId(inspect.getId());
+            items.add(isptItem);
+        }
+        if (!qlyIsptItemService.saveOrUpdateBatch(items)) {
+            throw new CoolException("璐ㄦ鏄庣粏淇濆瓨澶辫触锛侊紒");
+        }
+        return R.ok("淇濆瓨鎴愬姛锛侊紒");
+    }
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java
index 0a7d73b..c95bd69 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java
@@ -28,4 +28,9 @@
      * ASN鏍囩鐢熸垚瑙勫垯
      */
     public final static String SYS_LABEL_CODE = "sys_label_code";
+
+    /**
+     * 璐ㄦ鍗曚笟鍔$被鍨�
+     */
+    public final static String SYS_INSPECT_WK_TYPE = "sys_inspect_wk_type";
 }
diff --git a/rsf-server/src/main/resources/application.yml b/rsf-server/src/main/resources/application.yml
index e416c3e..94a4edf 100644
--- a/rsf-server/src/main/resources/application.yml
+++ b/rsf-server/src/main/resources/application.yml
@@ -26,7 +26,6 @@
     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
     map-underscore-to-camel-case: true
     cache-enabled: true
-#    object-wrapper-factory: com.baomidou.mybatisplus.extension.MybatisMapWrapperFactory
   global-config:
     :banner: false
     db-config:

--
Gitblit v1.9.1