瀏覽代碼

九方2.0版本

root 2 年之前
父節點
當前提交
24de6e3880

+ 340 - 312
.idea/workspace.xml

@@ -1,52 +1,28 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="ChangeListManager">
-    <list default="true" id="ff358f50-3bf4-4e8f-b62d-63302d20ccc3" name="Default Changelist" comment="">
-      <change afterPath="$PROJECT_DIR$/.idea/php.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Http/Controllers/Api/BaseController.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Http/Controllers/Api/BomController.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Http/Controllers/Api/EmployeeController.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Http/Controllers/Api/MaterialController.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Http/Controllers/Api/MeasureController.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Http/Controllers/Api/ProcessController.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Http/Controllers/Api/ProductController.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Http/Controllers/Api/SysMenuController.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/BasicMaterial.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/BasicProcedure.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/BasicProcess.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/Bom.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/BomDetail.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/BomDetailMeasure.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/BomMaterial.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/Depart.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/Employee.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/EmployeeDepartPermission.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/EmployeeMenuPermission.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/EmployeeTeamPermission.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/Material.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/MaterialDetail.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/Measure.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/Procedure.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/Process.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/Product.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/ProductDetail.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/Role.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/SysMenu.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Model/Team.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Service/BomService.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Service/EmployeeService.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Service/MaterialService.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Service/MeasureService.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Service/ProcedureService.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Service/ProcessService.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Service/ProductService.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Service/Service.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/Service/SysMenuService.php" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/config/cors.php" afterDir="false" />
+    <list default="true" id="ff358f50-3bf4-4e8f-b62d-63302d20ccc3" name="Default Changelist" comment="九方2.0版本">
+      <change afterPath="$PROJECT_DIR$/app/Http/Controllers/Api/OrderBoxController.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/app/Http/Controllers/Api/OrderController.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/app/Http/Controllers/Api/OrderTagController.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/app/Http/Controllers/Api/OrderTransportController.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/app/Jobs/OrderTag.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/app/Model/BomDetailRelation.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/app/Model/Orders.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/app/Model/OrdersHouse.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/app/Model/OrdersProcedureTag.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/app/Model/OrdersProduct.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/app/Model/OrdersProductBom.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/app/Service/Order/OrderBoxService.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/app/Service/Order/OrderService.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/app/Service/Order/OrderTagService.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/app/Service/OrderService.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/app/helpers.php" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/app/Http/Kernel.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Kernel.php" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/composer.json" beforeDir="false" afterPath="$PROJECT_DIR$/composer.json" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/composer.lock" beforeDir="false" afterPath="$PROJECT_DIR$/composer.lock" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/Http/Controllers/Api/BomController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Api/BomController.php" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/Service/BomService.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Service/BomService.php" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/config/database.php" beforeDir="false" afterPath="$PROJECT_DIR$/config/database.php" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/config/queue.php" beforeDir="false" afterPath="$PROJECT_DIR$/config/queue.php" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/routes/api.php" beforeDir="false" afterPath="$PROJECT_DIR$/routes/api.php" afterDir="false" />
     </list>
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
@@ -78,39 +54,42 @@
         <counts>
           <entry key="project.closed" value="1" />
           <entry key="project.open.time.1" value="2" />
+          <entry key="project.open.time.11" value="1" />
+          <entry key="project.open.time.14" value="2" />
+          <entry key="project.open.time.27" value="1" />
           <entry key="project.open.time.9" value="1" />
-          <entry key="project.opened" value="3" />
+          <entry key="project.opened" value="7" />
         </counts>
       </usages-collector>
       <usages-collector id="statistics.file.extensions.open">
         <counts>
-          <entry key="env" value="6" />
+          <entry key="env" value="8" />
           <entry key="gitignore" value="3" />
           <entry key="json" value="3" />
           <entry key="md" value="1" />
-          <entry key="php" value="85" />
+          <entry key="php" value="125" />
         </counts>
       </usages-collector>
       <usages-collector id="statistics.file.types.open">
         <counts>
           <entry key="JSON" value="3" />
           <entry key="Markdown" value="1" />
-          <entry key="PHP" value="85" />
-          <entry key="PLAIN_TEXT" value="9" />
+          <entry key="PHP" value="125" />
+          <entry key="PLAIN_TEXT" value="11" />
         </counts>
       </usages-collector>
       <usages-collector id="statistics.file.extensions.edit">
         <counts>
-          <entry key="dummy" value="24" />
-          <entry key="env" value="15" />
-          <entry key="php" value="6095" />
+          <entry key="dummy" value="34" />
+          <entry key="env" value="24" />
+          <entry key="php" value="11001" />
           <entry key="txt" value="9" />
         </counts>
       </usages-collector>
       <usages-collector id="statistics.file.types.edit">
         <counts>
-          <entry key="PHP" value="6095" />
-          <entry key="PLAIN_TEXT" value="48" />
+          <entry key="PHP" value="11001" />
+          <entry key="PLAIN_TEXT" value="67" />
         </counts>
       </usages-collector>
       <usages-collector id="statistics.vcs.git.usages">
@@ -124,106 +103,100 @@
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/routes/api.php">
+        <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/OrderTransportController.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="397">
-              <caret line="65" column="67" selection-start-line="65" selection-start-column="67" selection-end-line="65" selection-end-column="67" />
+            <state relative-caret-position="684">
+              <caret line="41" column="38" selection-start-line="41" selection-start-column="38" selection-end-line="41" selection-end-column="38" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/ProductController.php">
+        <entry file="file://$PROJECT_DIR$/app/Service/Order/OrderTransportService.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="29">
-              <caret line="53" column="5" lean-forward="true" selection-start-line="53" selection-start-column="5" selection-end-line="53" selection-end-column="5" />
+            <state relative-caret-position="18">
+              <caret line="18" selection-start-line="18" selection-end-line="18" />
             </state>
           </provider>
         </entry>
       </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/MaterialController.php">
+      <file pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/.env">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="397">
-              <caret line="156" column="46" lean-forward="true" selection-start-line="156" selection-start-column="46" selection-end-line="156" selection-end-column="46" />
-              <folding>
-                <element signature="e#45#77#0#PHP" expanded="true" />
-              </folding>
+            <state relative-caret-position="756">
+              <caret line="42" column="11" lean-forward="true" selection-start-line="42" selection-start-column="11" selection-end-line="42" selection-end-column="11" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/Service/ProductService.php">
+        <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/OrderController.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="2232">
-              <caret line="135" column="32" lean-forward="true" selection-start-line="135" selection-start-column="32" selection-end-line="135" selection-end-column="32" />
+            <state relative-caret-position="1170">
+              <caret line="66" selection-start-line="66" selection-end-line="66" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/BaseController.php">
+        <entry file="file://$PROJECT_DIR$/app/Service/OrderService.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="270">
-              <caret line="20" column="30" selection-start-line="20" selection-start-column="30" selection-end-line="20" selection-end-column="30" />
+            <state relative-caret-position="1764">
+              <caret line="108" column="57" selection-start-line="108" selection-start-column="57" selection-end-line="108" selection-end-column="57" />
+              <folding>
+                <element signature="e#32#50#0#PHP" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/app/Service/MaterialService.php">
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/app/Service/Order/OrderService.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="402">
-              <caret line="161" column="38" selection-start-line="161" selection-start-column="38" selection-end-line="161" selection-end-column="38" />
+            <state relative-caret-position="2394">
+              <caret line="139" selection-start-line="139" selection-end-line="139" />
               <folding>
-                <element signature="e#32#60#0#PHP" expanded="true" />
+                <element signature="e#38#59#0#PHP" expanded="true" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/Service/BomService.php">
+        <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/OrderBoxController.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="3222">
-              <caret line="179" column="20" selection-start-line="179" selection-start-column="20" selection-end-line="179" selection-end-column="20" />
+            <state relative-caret-position="954">
+              <caret line="56" column="45" selection-start-line="56" selection-start-column="45" selection-end-line="56" selection-end-column="45" />
               <folding>
-                <element signature="e#32#50#0#PHP" expanded="true" />
+                <element signature="e#45#83#0#PHP" expanded="true" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/BomController.php">
+        <entry file="file://$PROJECT_DIR$/app/Service/Order/OrderBoxService.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="425">
-              <caret line="73" column="44" lean-forward="true" selection-start-line="73" selection-start-column="44" selection-end-line="73" selection-end-column="44" />
-              <folding>
-                <element signature="e#45#72#0#PHP" expanded="true" />
-              </folding>
+            <state relative-caret-position="792">
+              <caret line="49" selection-start-line="49" selection-end-line="56" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/Model/BomDetailMeasure.php">
+        <entry file="file://$PROJECT_DIR$/app/helpers.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="180">
-              <caret line="10" column="3" lean-forward="true" selection-start-line="10" selection-start-column="3" selection-end-line="10" selection-end-column="3" />
+            <state relative-caret-position="4626">
+              <caret line="257" selection-start-line="257" selection-end-line="261" selection-end-column="1" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/Service/Service.php">
+        <entry file="file://$PROJECT_DIR$/app/Model/OrdersProductBom.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="353">
-              <caret line="186" column="68" lean-forward="true" selection-start-line="186" selection-start-column="68" selection-end-line="186" selection-end-column="68" />
-              <folding>
-                <element signature="e#61#97#0#PHP" expanded="true" />
-              </folding>
+            <state relative-caret-position="234">
+              <caret line="13" column="42" selection-start-line="13" selection-start-column="42" selection-end-line="13" selection-end-column="42" />
             </state>
           </provider>
         </entry>
@@ -242,6 +215,9 @@
       <find>basicMaterialDel</find>
       <find>measure</find>
       <find>materialDetail</find>
+      <find>edd</find>
+      <find>bomAdd</find>
+      <find>orderDetail</find>
     </findStrings>
     <dirStrings>
       <dir>$PROJECT_DIR$/app/Service</dir>
@@ -258,26 +234,6 @@
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
       <list>
-        <option value="$PROJECT_DIR$/.env" />
-        <option value="$PROJECT_DIR$/public/index.php" />
-        <option value="$PROJECT_DIR$/app/Http/Controllers/TextController.php" />
-        <option value="$PROJECT_DIR$/app/Http/Controllers/Api/TextController.php" />
-        <option value="$PROJECT_DIR$/.gitignore" />
-        <option value="$PROJECT_DIR$/Model/Http/Controllers/Controller.php" />
-        <option value="$PROJECT_DIR$/Service/Http/Controllers/Controller.php" />
-        <option value="$PROJECT_DIR$/app/Http/Controllers/Controller.php" />
-        <option value="$PROJECT_DIR$/app/Model/SysMenu.php" />
-        <option value="$PROJECT_DIR$/app/Http/Controllers/Api/AuthController.php" />
-        <option value="$PROJECT_DIR$/app/Model/Employee.php" />
-        <option value="$PROJECT_DIR$/app/Model/Depart.php" />
-        <option value="$PROJECT_DIR$/app/Model/role.php" />
-        <option value="$PROJECT_DIR$/app/Model/Role.php" />
-        <option value="$PROJECT_DIR$/app/Model/Team.php" />
-        <option value="$PROJECT_DIR$/app/Model/EmployeeMenuPermission.php" />
-        <option value="$PROJECT_DIR$/app/Model/EmployeeDepartPermission.php" />
-        <option value="$PROJECT_DIR$/app/Model/EmployeeTeamPermission.php" />
-        <option value="$PROJECT_DIR$/app/Model/Measure.php" />
-        <option value="$PROJECT_DIR$/app/Model/BasicMaterial.php" />
         <option value="$PROJECT_DIR$/app/Model/Material.php" />
         <option value="$PROJECT_DIR$/app/Http/Controllers/Api/SysMenuController.php" />
         <option value="$PROJECT_DIR$/app/Http/Controllers/Api/EmployeeController.php" />
@@ -296,18 +252,39 @@
         <option value="$PROJECT_DIR$/app/Model/Bom.php" />
         <option value="$PROJECT_DIR$/app/Model/BomDetail.php" />
         <option value="$PROJECT_DIR$/app/Model/BomMaterial.php" />
-        <option value="$PROJECT_DIR$/app/Service/EmployeeService.php" />
         <option value="$PROJECT_DIR$/app/Service/MeasureService.php" />
         <option value="$PROJECT_DIR$/app/Http/Controllers/Api/ProductController.php" />
         <option value="$PROJECT_DIR$/app/Model/BomDetailMeasure.php" />
-        <option value="$PROJECT_DIR$/app/Service/BomService.php" />
         <option value="$PROJECT_DIR$/app/Model/Product.php" />
         <option value="$PROJECT_DIR$/app/Model/ProductDetail.php" />
         <option value="$PROJECT_DIR$/app/Service/ProductService.php" />
-        <option value="$PROJECT_DIR$/app/Http/Controllers/Api/BomController.php" />
-        <option value="$PROJECT_DIR$/routes/api.php" />
         <option value="$PROJECT_DIR$/app/Http/Controllers/Api/BaseController.php" />
         <option value="$PROJECT_DIR$/app/Service/MaterialService.php" />
+        <option value="$PROJECT_DIR$/app/Model/Order.php" />
+        <option value="$PROJECT_DIR$/app/Model/OrdersHouse.php" />
+        <option value="$PROJECT_DIR$/app/Model/OrdersProduct.php" />
+        <option value="$PROJECT_DIR$/app/Model/OrdersProductPart.php" />
+        <option value="$PROJECT_DIR$/app/Service/EmployeeService.php" />
+        <option value="$PROJECT_DIR$/app/Http/Controllers/Api/BomController.php" />
+        <option value="$PROJECT_DIR$/config/queue.php" />
+        <option value="$PROJECT_DIR$/.env" />
+        <option value="$PROJECT_DIR$/app/Jobs/OrderTag.php" />
+        <option value="$PROJECT_DIR$/app/Model/OrdersProcedureTag.php" />
+        <option value="$PROJECT_DIR$/config/database.php" />
+        <option value="$PROJECT_DIR$/app/Http/Controllers/Api/OrderController.php" />
+        <option value="$PROJECT_DIR$/app/Model/OrdersProductBom.php" />
+        <option value="$PROJECT_DIR$/app/Model/BomDetailRelation.php" />
+        <option value="$PROJECT_DIR$/app/Service/BomService.php" />
+        <option value="$PROJECT_DIR$/app/Service/OrderService.php" />
+        <option value="$PROJECT_DIR$/app/Http/Controllers/Api/OrderTagController.php" />
+        <option value="$PROJECT_DIR$/app/Service/Order/OrderTagService.php" />
+        <option value="$PROJECT_DIR$/app/helpers.php" />
+        <option value="$PROJECT_DIR$/app/Service/Order/OrderService.php" />
+        <option value="$PROJECT_DIR$/app/Http/Controllers/Api/OrderTransportController.php" />
+        <option value="$PROJECT_DIR$/routes/api.php" />
+        <option value="$PROJECT_DIR$/app/Http/Controllers/Api/OrderBoxController.php" />
+        <option value="$PROJECT_DIR$/app/Service/Order/OrderBoxService.php" />
+        <option value="$PROJECT_DIR$/app/Service/Order/OrderTransportService.php" />
       </list>
     </option>
   </component>
@@ -417,10 +394,10 @@
       <path value="$PROJECT_DIR$/vendor/fruitcake/laravel-cors" />
     </include_path>
   </component>
-  <component name="ProjectFrameBounds" extendedState="6">
-    <option name="y" value="27" />
+  <component name="ProjectFrameBounds">
+    <option name="y" value="23" />
     <option name="width" value="1680" />
-    <option name="height" value="928" />
+    <option name="height" value="921" />
   </component>
   <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
   <component name="ProjectView">
@@ -445,13 +422,35 @@
               <item name="jf_admin2.0" type="b2602c69:ProjectViewProjectNode" />
               <item name="jf_admin2.0" type="462c0819:PsiDirectoryNode" />
               <item name="app" type="462c0819:PsiDirectoryNode" />
-              <item name="Model" type="462c0819:PsiDirectoryNode" />
+              <item name="Http" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="jf_admin2.0" type="b2602c69:ProjectViewProjectNode" />
+              <item name="jf_admin2.0" type="462c0819:PsiDirectoryNode" />
+              <item name="app" type="462c0819:PsiDirectoryNode" />
+              <item name="Http" type="462c0819:PsiDirectoryNode" />
+              <item name="Controllers" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="jf_admin2.0" type="b2602c69:ProjectViewProjectNode" />
+              <item name="jf_admin2.0" type="462c0819:PsiDirectoryNode" />
+              <item name="app" type="462c0819:PsiDirectoryNode" />
+              <item name="Http" type="462c0819:PsiDirectoryNode" />
+              <item name="Controllers" type="462c0819:PsiDirectoryNode" />
+              <item name="Api" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="jf_admin2.0" type="b2602c69:ProjectViewProjectNode" />
+              <item name="jf_admin2.0" type="462c0819:PsiDirectoryNode" />
+              <item name="app" type="462c0819:PsiDirectoryNode" />
+              <item name="Service" type="462c0819:PsiDirectoryNode" />
             </path>
             <path>
               <item name="jf_admin2.0" type="b2602c69:ProjectViewProjectNode" />
               <item name="jf_admin2.0" type="462c0819:PsiDirectoryNode" />
               <item name="app" type="462c0819:PsiDirectoryNode" />
               <item name="Service" type="462c0819:PsiDirectoryNode" />
+              <item name="Order" type="462c0819:PsiDirectoryNode" />
             </path>
             <path>
               <item name="jf_admin2.0" type="b2602c69:ProjectViewProjectNode" />
@@ -481,8 +480,8 @@
       <recent name="$PROJECT_DIR$/app/Http/Controllers/Api" />
       <recent name="$PROJECT_DIR$/app/Model" />
       <recent name="$PROJECT_DIR$/app/Service" />
-      <recent name="$PROJECT_DIR$/config" />
-      <recent name="$PROJECT_DIR$/app/Http/Controllers" />
+      <recent name="$PROJECT_DIR$/app/Service/Order" />
+      <recent name="$PROJECT_DIR$/app" />
     </key>
   </component>
   <component name="RunDashboard">
@@ -509,7 +508,11 @@
       <updated>1675653840336</updated>
       <workItem from="1675653842373" duration="1729000" />
       <workItem from="1675655986085" duration="9483000" />
-      <workItem from="1675701017210" duration="72529000" />
+      <workItem from="1675701017210" duration="73080000" />
+      <workItem from="1677345432748" duration="37125000" />
+      <workItem from="1677815343698" duration="596000" />
+      <workItem from="1677997651261" duration="20956000" />
+      <workItem from="1678430467055" duration="787000" />
     </task>
     <task id="LOCAL-00001" summary="九方2.0版本">
       <created>1675657293693</created>
@@ -539,19 +542,32 @@
       <option name="project" value="LOCAL" />
       <updated>1675658364685</updated>
     </task>
-    <option name="localTasksCounter" value="5" />
+    <task id="LOCAL-00005" summary="九方2.0版本">
+      <created>1677226971970</created>
+      <option name="number" value="00005" />
+      <option name="presentableId" value="LOCAL-00005" />
+      <option name="project" value="LOCAL" />
+      <updated>1677226971970</updated>
+    </task>
+    <task id="LOCAL-00006" summary="九方2.0版本">
+      <created>1678343578677</created>
+      <option name="number" value="00006" />
+      <option name="presentableId" value="LOCAL-00006" />
+      <option name="project" value="LOCAL" />
+      <updated>1678343578679</updated>
+    </task>
+    <option name="localTasksCounter" value="7" />
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="83741000" />
+    <option name="totallyTimeSpent" value="143756000" />
   </component>
   <component name="ToolWindowManager">
-    <frame x="0" y="23" width="1680" height="924" extended-state="6" />
+    <frame x="0" y="23" width="1680" height="921" extended-state="6" />
     <layout>
-      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.23199023" />
+      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.24236874" />
       <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
       <window_info id="Favorites" order="2" side_tool="true" />
-      <window_info anchor="bottom" id="File Transfer" weight="0.3297619" />
       <window_info anchor="bottom" id="Message" order="0" />
       <window_info anchor="bottom" id="Find" order="1" />
       <window_info anchor="bottom" id="Run" order="2" />
@@ -565,12 +581,37 @@
       <window_info anchor="bottom" id="Terminal" order="10" weight="0.32938388" />
       <window_info anchor="bottom" id="Event Log" order="11" side_tool="true" />
       <window_info anchor="bottom" id="Messages" order="12" weight="0.32938388" />
+      <window_info anchor="bottom" id="File Transfer" order="13" weight="0.32857144" />
       <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
       <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
       <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
       <window_info anchor="right" id="Remote Host" order="3" weight="0.11294261" />
       <window_info anchor="right" id="Database" order="4" weight="0.32967034" />
     </layout>
+    <layout-to-restore>
+      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.23931624" />
+      <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
+      <window_info id="Favorites" order="2" side_tool="true" />
+      <window_info anchor="bottom" id="Message" order="0" />
+      <window_info anchor="bottom" id="Find" order="1" />
+      <window_info anchor="bottom" id="Run" order="2" />
+      <window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
+      <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
+      <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
+      <window_info anchor="bottom" id="TODO" order="6" />
+      <window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
+      <window_info anchor="bottom" id="Database Changes" order="8" show_stripe_button="false" />
+      <window_info anchor="bottom" id="Version Control" order="9" weight="0.32938388" />
+      <window_info anchor="bottom" id="Terminal" order="10" weight="0.32938388" />
+      <window_info anchor="bottom" id="Event Log" order="11" side_tool="true" />
+      <window_info anchor="bottom" id="Messages" order="12" weight="0.32938388" />
+      <window_info anchor="bottom" id="File Transfer" order="13" weight="0.32857144" />
+      <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
+      <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
+      <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
+      <window_info anchor="right" id="Remote Host" order="3" weight="0.11294261" />
+      <window_info anchor="right" id="Database" order="4" weight="0.32967034" />
+    </layout-to-restore>
   </component>
   <component name="TypeScriptGeneratedFilesManager">
     <option name="version" value="1" />
@@ -584,376 +625,363 @@
     <option name="LAST_COMMIT_MESSAGE" value="九方2.0版本" />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/README.md">
-      <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
-        <state split_layout="SPLIT">
-          <first_editor />
-          <second_editor />
+    <entry file="file://$PROJECT_DIR$/app/Model/MaterialDetail.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="234">
+          <caret line="13" column="39" selection-start-line="13" selection-start-column="39" selection-end-line="13" selection-end-column="39" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/SysMenu.php">
+    <entry file="file://$PROJECT_DIR$/app/Model/BasicProcedure.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="72">
-          <caret line="4" column="39" selection-start-line="4" selection-start-column="39" selection-end-line="4" selection-end-column="39" />
+        <state relative-caret-position="288">
+          <caret line="17" column="32" lean-forward="true" selection-start-line="17" selection-start-column="32" selection-end-line="17" selection-end-column="32" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/public/index.php">
+    <entry file="file://$PROJECT_DIR$/app/Model/BasicProcess.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="126">
-          <caret line="7" column="3" selection-start-line="7" selection-start-column="3" selection-end-line="7" selection-end-column="3" />
+        <state relative-caret-position="234">
+          <caret line="14" column="45" lean-forward="true" selection-start-line="14" selection-start-column="45" selection-end-line="14" selection-end-column="45" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Controller.php">
-      <provider selected="true" editor-type-id="text-editor" />
-    </entry>
-    <entry file="file://$PROJECT_DIR$/.gitignore">
+    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/SysMenuController.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="234">
-          <caret line="13" selection-start-line="13" selection-end-line="13" />
+        <state relative-caret-position="430">
+          <caret line="56" column="42" selection-start-line="56" selection-start-column="42" selection-end-line="56" selection-end-column="42" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/../jiufang_admin/.env">
-      <provider selected="true" editor-type-id="text-editor" />
-    </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/Employee.php">
+    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/ProcessController.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="126">
-          <caret line="7" column="7" lean-forward="true" selection-start-line="7" selection-start-column="7" selection-end-line="7" selection-end-column="7" />
+        <state relative-caret-position="-1753">
+          <caret line="46" column="48" lean-forward="true" selection-start-line="46" selection-start-column="48" selection-end-line="46" selection-end-column="48" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/Depart.php">
+    <entry file="file://$PROJECT_DIR$/app/Service/ProcessService.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="126">
-          <caret line="7" column="5" selection-start-line="7" selection-start-column="5" selection-end-line="7" selection-end-column="5" />
+        <state relative-caret-position="609">
+          <caret line="134" column="25" selection-start-line="134" selection-start-column="25" selection-end-line="134" selection-end-column="25" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/Role.php">
+    <entry file="file://$PROJECT_DIR$/app/Service/ProcedureService.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="234">
-          <caret line="13" column="28" selection-start-line="13" selection-start-column="28" selection-end-line="13" selection-end-column="28" />
+        <state relative-caret-position="287">
+          <caret line="23" lean-forward="true" selection-start-line="23" selection-end-line="23" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/Team.php">
+    <entry file="file://$PROJECT_DIR$/app/Model/Procedure.php">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/Model/Process.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="198">
-          <caret line="11" column="24" lean-forward="true" selection-start-line="11" selection-start-column="24" selection-end-line="11" selection-end-column="24" />
+        <state relative-caret-position="126">
+          <caret line="8" column="7" selection-start-line="8" selection-start-column="7" selection-end-line="8" selection-end-column="7" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/BasicMaterial.php">
+    <entry file="file://$PROJECT_DIR$/app/Service/SysMenuService.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="234">
-          <caret line="13" column="38" selection-start-line="13" selection-start-column="24" selection-end-line="13" selection-end-column="38" />
+        <state relative-caret-position="-61">
+          <caret line="55" lean-forward="true" selection-start-line="55" selection-end-line="55" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/EmployeeTeamPermission.php">
+    <entry file="file://$PROJECT_DIR$/app/Model/BomDetail.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="342">
-          <caret line="19" lean-forward="true" selection-start-line="19" selection-end-line="19" />
+        <state relative-caret-position="270">
+          <caret line="15" column="34" lean-forward="true" selection-start-line="14" selection-start-column="3" selection-end-line="15" selection-end-column="34" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/EmployeeDepartPermission.php">
+    <entry file="file://$PROJECT_DIR$/app/Model/Bom.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="198">
-          <caret line="11" column="30" selection-start-line="11" selection-start-column="30" selection-end-line="11" selection-end-column="30" />
+        <state relative-caret-position="252">
+          <caret line="14" column="32" selection-start-line="14" selection-start-column="24" selection-end-line="14" selection-end-column="32" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/Measure.php">
+    <entry file="file://$PROJECT_DIR$/app/Model/BomMaterial.php">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="270">
-          <caret line="15" column="34" lean-forward="true" selection-start-line="15" selection-start-column="34" selection-end-line="15" selection-end-column="34" />
+          <caret line="15" column="34" selection-start-line="15" selection-start-column="34" selection-end-line="15" selection-end-column="34" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/Material.php">
+    <entry file="file://$PROJECT_DIR$/app/Service/MeasureService.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="342">
-          <caret line="19" lean-forward="true" selection-start-line="19" selection-end-line="19" />
+        <state relative-caret-position="430">
+          <caret line="69" column="11" lean-forward="true" selection-start-line="69" selection-start-column="11" selection-end-line="69" selection-end-column="11" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/EmployeeMenuPermission.php">
+    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/MeasureController.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="270">
-          <caret line="15" column="28" lean-forward="true" selection-start-line="15" selection-start-column="28" selection-end-line="15" selection-end-column="28" />
+        <state relative-caret-position="401">
+          <caret line="74" column="46" selection-start-line="74" selection-start-column="46" selection-end-line="74" selection-end-column="46" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/EmployeeController.php">
+    <entry file="file://$PROJECT_DIR$/app/Model/Product.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="499">
-          <caret line="333" column="47" selection-start-line="333" selection-start-column="47" selection-end-line="333" selection-end-column="47" />
-          <folding>
-            <element signature="e#45#77#0#PHP" expanded="true" />
-          </folding>
+        <state relative-caret-position="342">
+          <caret line="19" lean-forward="true" selection-start-line="19" selection-end-line="19" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Http/Middleware/CheckForMaintenanceMode.php">
+    <entry file="file://$PROJECT_DIR$/app/Model/ProductDetail.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="108">
-          <caret line="6" column="6" selection-start-line="6" selection-start-column="6" selection-end-line="6" selection-end-column="6" />
+        <state relative-caret-position="288">
+          <caret line="16" column="32" lean-forward="true" selection-start-line="16" selection-start-column="32" selection-end-line="16" selection-end-column="32" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Http/Middleware/TrustProxies.php">
+    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/ProductController.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="108">
-          <caret line="7" column="6" selection-start-line="7" selection-start-column="6" selection-end-line="7" selection-end-column="6" />
+        <state relative-caret-position="900">
+          <caret line="53" column="5" selection-start-line="53" selection-start-column="5" selection-end-line="53" selection-end-column="5" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/composer.json">
-      <provider selected="true" editor-type-id="text-editor" />
-    </entry>
-    <entry file="file://$PROJECT_DIR$/config/cors.php">
+    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/MaterialController.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-395" />
+        <state relative-caret-position="2754">
+          <caret line="156" column="46" selection-start-line="156" selection-start-column="46" selection-end-line="156" selection-end-column="46" />
+        </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/.env">
+    <entry file="file://$PROJECT_DIR$/app/Service/ProductService.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="504">
-          <caret line="28" column="15" lean-forward="true" selection-start-line="28" selection-start-column="15" selection-end-line="28" selection-end-column="15" />
+        <state relative-caret-position="2214">
+          <caret line="135" column="32" selection-start-line="135" selection-start-column="32" selection-end-line="135" selection-end-column="32" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Http/Kernel.php">
+    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/BaseController.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="713">
-          <caret line="43" column="4" selection-start-line="43" selection-start-column="4" selection-end-line="43" selection-end-column="4" />
+        <state relative-caret-position="270">
+          <caret line="20" column="30" selection-start-line="20" selection-start-column="30" selection-end-line="20" selection-end-column="30" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/MaterialDetail.php">
+    <entry file="file://$PROJECT_DIR$/app/Service/Service.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="234">
-          <caret line="13" column="39" selection-start-line="13" selection-start-column="39" selection-end-line="13" selection-end-column="39" />
+        <state relative-caret-position="3276">
+          <caret line="186" column="68" selection-start-line="186" selection-start-column="68" selection-end-line="186" selection-end-column="68" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/BasicProcedure.php">
+    <entry file="file://$PROJECT_DIR$/app/Service/MaterialService.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="288">
-          <caret line="17" column="32" lean-forward="true" selection-start-line="17" selection-start-column="32" selection-end-line="17" selection-end-column="32" />
+        <state relative-caret-position="325">
+          <caret line="34" column="44" lean-forward="true" selection-start-line="34" selection-start-column="44" selection-end-line="34" selection-end-column="44" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/BasicProcess.php">
+    <entry file="file://$PROJECT_DIR$/app/User.php">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/Model/OrdersHouse.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="234">
-          <caret line="14" column="45" lean-forward="true" selection-start-line="14" selection-start-column="45" selection-end-line="14" selection-end-column="45" />
+        <state relative-caret-position="306">
+          <caret line="17" lean-forward="true" selection-start-line="17" selection-end-line="17" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/SysMenuController.php">
+    <entry file="file://$PROJECT_DIR$/app/Model/OrdersProduct.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="430">
-          <caret line="56" column="42" selection-start-line="56" selection-start-column="42" selection-end-line="56" selection-end-column="42" />
-          <folding>
-            <element signature="e#45#76#0#PHP" expanded="true" />
-          </folding>
+        <state relative-caret-position="288">
+          <caret line="16" column="32" lean-forward="true" selection-start-line="16" selection-start-column="32" selection-end-line="16" selection-end-column="32" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/ProcessController.php">
+    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/EmployeeController.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-1753">
-          <caret line="46" column="48" lean-forward="true" selection-start-line="46" selection-start-column="48" selection-end-line="46" selection-end-column="48" />
+        <state relative-caret-position="489">
+          <caret line="333" column="49" selection-start-line="333" selection-start-column="49" selection-end-line="333" selection-end-column="49" />
           <folding>
-            <element signature="e#45#76#0#PHP" expanded="true" />
+            <element signature="e#45#77#0#PHP" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Service/ProcessService.php">
+    <entry file="file://$PROJECT_DIR$/app/Service/EmployeeService.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="609">
-          <caret line="134" column="25" selection-start-line="134" selection-start-column="25" selection-end-line="134" selection-end-column="25" />
-          <folding>
-            <element signature="e#32#54#0#PHP" expanded="true" />
-          </folding>
+        <state relative-caret-position="958">
+          <caret line="306" column="39" selection-start-line="306" selection-start-column="32" selection-end-line="306" selection-end-column="39" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Service/ProcedureService.php">
+    <entry file="file://$PROJECT_DIR$/app/Model/Orders.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="287">
-          <caret line="23" lean-forward="true" selection-start-line="23" selection-end-line="23" />
+        <state relative-caret-position="342">
+          <caret line="19" lean-forward="true" selection-start-line="19" selection-end-line="19" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/Procedure.php">
+    <entry file="file://$PROJECT_DIR$/config/mail.php">
       <provider selected="true" editor-type-id="text-editor" />
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/Process.php">
+    <entry file="file://$PROJECT_DIR$/config/queue.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="126">
-          <caret line="8" column="7" selection-start-line="8" selection-start-column="7" selection-end-line="8" selection-end-column="7" />
+        <state relative-caret-position="270">
+          <caret line="15" column="47" selection-start-line="15" selection-start-column="47" selection-end-line="15" selection-end-column="47" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Service/SysMenuService.php">
+    <entry file="file://$PROJECT_DIR$/app/Model/OrdersProcedureTag.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-61">
-          <caret line="55" lean-forward="true" selection-start-line="55" selection-end-line="55" />
+        <state relative-caret-position="234">
+          <caret line="13" column="44" selection-start-line="13" selection-start-column="44" selection-end-line="13" selection-end-column="44" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/BomDetail.php">
+    <entry file="file://$PROJECT_DIR$/app/Model/BomDetailMeasure.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="270">
-          <caret line="15" column="34" lean-forward="true" selection-start-line="14" selection-start-column="3" selection-end-line="15" selection-end-column="34" />
+        <state relative-caret-position="180">
+          <caret line="10" column="3" selection-start-line="10" selection-start-column="3" selection-end-line="10" selection-end-column="3" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/Bom.php">
+    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/BomController.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="252">
-          <caret line="14" column="32" selection-start-line="14" selection-start-column="24" selection-end-line="14" selection-end-column="32" />
+        <state relative-caret-position="440">
+          <caret line="39" column="42" lean-forward="true" selection-start-line="39" selection-start-column="42" selection-end-line="39" selection-end-column="42" />
+          <folding>
+            <element signature="e#45#72#0#PHP" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Service/Service.php">
+    <entry file="file://$PROJECT_DIR$/app/Jobs/OrderTag.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="353">
-          <caret line="186" column="68" lean-forward="true" selection-start-line="186" selection-start-column="68" selection-end-line="186" selection-end-column="68" />
-          <folding>
-            <element signature="e#61#97#0#PHP" expanded="true" />
-          </folding>
+        <state relative-caret-position="442">
+          <caret line="36" column="33" selection-start-line="36" selection-start-column="33" selection-end-line="36" selection-end-column="33" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/BomMaterial.php">
+    <entry file="file://$PROJECT_DIR$/config/database.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="270">
-          <caret line="15" column="34" selection-start-line="15" selection-start-column="34" selection-end-line="15" selection-end-column="34" />
+        <state relative-caret-position="183">
+          <caret line="46" column="32" lean-forward="true" selection-start-line="46" selection-start-column="32" selection-end-line="46" selection-end-column="32" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Service/EmployeeService.php">
+    <entry file="file://$PROJECT_DIR$/app/Model/BomDetailRelation.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="394">
-          <caret line="305" lean-forward="true" selection-start-line="305" selection-end-line="305" />
-          <folding>
-            <element signature="e#32#53#0#PHP" expanded="true" />
-          </folding>
+        <state relative-caret-position="162">
+          <caret line="9" column="22" selection-start-line="9" selection-start-column="22" selection-end-line="9" selection-end-column="22" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Service/MeasureService.php">
+    <entry file="file://$PROJECT_DIR$/app/Service/BomService.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="430">
-          <caret line="69" column="11" lean-forward="true" selection-start-line="69" selection-start-column="11" selection-end-line="69" selection-end-column="11" />
+        <state relative-caret-position="679">
+          <caret line="109" column="38" selection-start-line="109" selection-start-column="38" selection-end-line="109" selection-end-column="38" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/MeasureController.php">
+    <entry file="file://$PROJECT_DIR$/app/Service/Order/OrderTagService.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="401">
-          <caret line="74" column="46" selection-start-line="74" selection-start-column="46" selection-end-line="74" selection-end-column="46" />
-          <folding>
-            <element signature="e#45#76#0#PHP" expanded="true" />
-          </folding>
+        <state relative-caret-position="469">
+          <caret line="36" column="33" selection-start-line="36" selection-start-column="33" selection-end-line="36" selection-end-column="33" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/BomDetailMeasure.php">
+    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/OrderTagController.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="180">
-          <caret line="10" column="3" lean-forward="true" selection-start-line="10" selection-start-column="3" selection-end-line="10" selection-end-column="3" />
+        <state relative-caret-position="306">
+          <caret line="17" column="29" selection-start-line="17" selection-start-column="20" selection-end-line="17" selection-end-column="29" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/Product.php">
+    <entry file="file://$PROJECT_DIR$/routes/api.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="342">
-          <caret line="19" lean-forward="true" selection-start-line="19" selection-end-line="19" />
+        <state relative-caret-position="1692">
+          <caret line="94" column="28" selection-start-line="94" selection-start-column="12" selection-end-line="94" selection-end-column="28" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Model/ProductDetail.php">
+    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/OrderTransportController.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="288">
-          <caret line="16" column="32" lean-forward="true" selection-start-line="16" selection-start-column="32" selection-end-line="16" selection-end-column="32" />
+        <state relative-caret-position="684">
+          <caret line="41" column="38" selection-start-line="41" selection-start-column="38" selection-end-line="41" selection-end-column="38" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/BomController.php">
+    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/OrderController.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1170">
+          <caret line="66" selection-start-line="66" selection-end-line="66" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/Service/OrderService.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="425">
-          <caret line="73" column="44" lean-forward="true" selection-start-line="73" selection-start-column="44" selection-end-line="73" selection-end-column="44" />
+        <state relative-caret-position="1764">
+          <caret line="108" column="57" selection-start-line="108" selection-start-column="57" selection-end-line="108" selection-end-column="57" />
           <folding>
-            <element signature="e#45#72#0#PHP" expanded="true" />
+            <element signature="e#32#50#0#PHP" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Service/BomService.php">
+    <entry file="file://$PROJECT_DIR$/app/Service/Order/OrderService.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="3222">
-          <caret line="179" column="20" selection-start-line="179" selection-start-column="20" selection-end-line="179" selection-end-column="20" />
+        <state relative-caret-position="2394">
+          <caret line="139" selection-start-line="139" selection-end-line="139" />
           <folding>
-            <element signature="e#32#50#0#PHP" expanded="true" />
+            <element signature="e#38#59#0#PHP" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/ProductController.php">
+    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/OrderBoxController.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="29">
-          <caret line="53" column="5" lean-forward="true" selection-start-line="53" selection-start-column="5" selection-end-line="53" selection-end-column="5" />
+        <state relative-caret-position="954">
+          <caret line="56" column="45" selection-start-line="56" selection-start-column="45" selection-end-line="56" selection-end-column="45" />
+          <folding>
+            <element signature="e#45#83#0#PHP" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/routes/api.php">
+    <entry file="file://$PROJECT_DIR$/app/Service/Order/OrderBoxService.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="397">
-          <caret line="65" column="67" selection-start-line="65" selection-start-column="67" selection-end-line="65" selection-end-column="67" />
+        <state relative-caret-position="792">
+          <caret line="49" selection-start-line="49" selection-end-line="56" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/BaseController.php">
+    <entry file="file://$PROJECT_DIR$/app/helpers.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="270">
-          <caret line="20" column="30" selection-start-line="20" selection-start-column="30" selection-end-line="20" selection-end-column="30" />
+        <state relative-caret-position="4626">
+          <caret line="257" selection-start-line="257" selection-end-line="261" selection-end-column="1" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Service/ProductService.php">
+    <entry file="file://$PROJECT_DIR$/app/Model/OrdersProductBom.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="2232">
-          <caret line="135" column="32" lean-forward="true" selection-start-line="135" selection-start-column="32" selection-end-line="135" selection-end-column="32" />
+        <state relative-caret-position="234">
+          <caret line="13" column="42" selection-start-line="13" selection-start-column="42" selection-end-line="13" selection-end-column="42" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Api/MaterialController.php">
+    <entry file="file://$PROJECT_DIR$/app/Service/Order/OrderTransportService.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="397">
-          <caret line="156" column="46" lean-forward="true" selection-start-line="156" selection-start-column="46" selection-end-line="156" selection-end-column="46" />
-          <folding>
-            <element signature="e#45#77#0#PHP" expanded="true" />
-          </folding>
+        <state relative-caret-position="18">
+          <caret line="18" selection-start-line="18" selection-end-line="18" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Service/MaterialService.php">
+    <entry file="file://$PROJECT_DIR$/.env">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="402">
-          <caret line="161" column="38" selection-start-line="161" selection-start-column="38" selection-end-line="161" selection-end-column="38" />
-          <folding>
-            <element signature="e#32#60#0#PHP" expanded="true" />
-          </folding>
+        <state relative-caret-position="756">
+          <caret line="42" column="11" lean-forward="true" selection-start-line="42" selection-start-column="11" selection-end-line="42" selection-end-column="11" />
         </state>
       </provider>
     </entry>

+ 17 - 0
app/Http/Controllers/Api/BomController.php

@@ -82,6 +82,23 @@ class BomController extends BaseController
     }
 
 
+    public function bomDetail(Request $request)
+    {
+
+
+        $service = new BomService();
+        $user = $request->get('auth');
+        list($status,$data) = $service->bomDetail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+
 
 
 }

+ 70 - 0
app/Http/Controllers/Api/OrderBoxController.php

@@ -0,0 +1,70 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Service\Order\OrderBoxService;
+use App\Service\Order\OrderTagService;
+use App\Service\OrderService;
+use Illuminate\Http\Request;
+
+
+class OrderBoxController extends BaseController
+{
+
+
+
+
+
+    public function boxDetail(Request $request)
+    {
+
+
+        $service = new OrderBoxService();
+        $user = $request->get('auth');
+        list($status,$data) = $service->box_detail($request->all()['order_no']);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function boxIn(Request $request)
+    {
+
+
+        $service = new OrderBoxService();
+        $user = $request->get('auth');
+        list($status,$data) = $service->box_in($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function boxOut(Request $request)
+    {
+
+
+        $service = new OrderBoxService();
+        $user = $request->get('auth');
+        list($status,$data) = $service->box_out($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+
+
+
+}

+ 104 - 0
app/Http/Controllers/Api/OrderController.php

@@ -0,0 +1,104 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Service\OrderService;
+use Illuminate\Http\Request;
+
+
+class OrderController extends BaseController
+{
+
+
+
+
+
+    public function add(Request $request)
+    {
+
+
+        $service = new OrderService();
+        $user = $request->get('auth');
+        list($status,$data) = $service->add($request->all(),$request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+
+    public function edit(Request $request)
+    {
+
+
+        $service = new OrderService();
+        $user = $request->get('auth');
+        list($status,$data) = $service->edit($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+
+    public function del(Request $request)
+    {
+
+
+        $service = new OrderService();
+        $user = $request->get('auth');
+        list($status,$data) = $service->del($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+
+    public function OrderList(Request $request)
+    {
+
+
+        $service = new OrderService();
+        $user = $request->get('auth');
+        list($status,$data) = $service->OrderList($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+
+    public function orderDetail(Request $request)
+    {
+
+
+        $service = new OrderService();
+        $user = $request->get('auth');
+        list($status,$data) = $service->orderDetail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+
+
+
+}

+ 37 - 0
app/Http/Controllers/Api/OrderTagController.php

@@ -0,0 +1,37 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Service\Order\OrderTagService;
+use App\Service\OrderService;
+use Illuminate\Http\Request;
+
+
+class OrderTagController extends BaseController
+{
+
+
+
+
+
+    public function tagDetail(Request $request)
+    {
+
+
+        $service = new OrderTagService();
+        $user = $request->get('auth');
+        list($status,$data) = $service->getOrderTag($request->all()['order_no']);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+
+
+
+}

+ 76 - 0
app/Http/Controllers/Api/OrderTransportController.php

@@ -0,0 +1,76 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Service\Order\OrderTagService;
+use App\Service\Order\OrderTransportService;
+use App\Service\OrderService;
+use Illuminate\Http\Request;
+
+
+class OrderTransportController extends BaseController
+{
+
+
+
+
+
+    public function transportDetail(Request $request)
+    {
+
+
+        $service = new OrderTransportService();
+        $user = $request->get('auth');
+        list($status,$data) = $service->transportDetail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+
+
+    public function boxTransport(Request $request)
+    {
+
+
+        $service = new OrderTransportService();
+        $user = $request->get('auth');
+        list($status,$data) = $service->boxTransport($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+
+
+    public function transportConfirm(Request $request)
+    {
+
+
+        $service = new OrderTransportService();
+        $user = $request->get('auth');
+        list($status,$data) = $service->transportConfirm($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+
+
+
+
+
+}

+ 49 - 0
app/Jobs/OrderTag.php

@@ -0,0 +1,49 @@
+<?php
+
+namespace App\Jobs;
+
+use App\Service\Order\OrderTagService;
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Queue\SerializesModels;
+use Illuminate\Support\Facades\DB;
+
+class OrderTag implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+
+    protected $order_no;
+    /**
+     * Create a new job instance.
+     *
+     * @return void
+     */
+    public function __construct($order_no)
+    {
+        //
+        $this->order_no = $order_no;
+    }
+
+    /**
+     * Execute the job.
+     *
+     * @return void
+     */
+    public function handle()
+    {
+        //生成芯片数据更新订单产品部件信息
+        $service = new OrderTagService();
+        DB::beginTransaction();
+        try{
+            $service = $service->setTag($this->order_no);
+            DB::commit();
+        }catch (\Exception $e){
+            DB::rollBack();
+
+            $this->dispatch($this->order_no);
+        }
+
+    }
+}

+ 19 - 0
app/Model/BomDetailRelation.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * bom
+ * Class Unit
+ * @package App\Models
+ */
+class BomDetailRelation extends Model
+{
+    protected $table = "bom_detail_relation"; //指定表
+    const CREATED_AT = null;
+    const UPDATED_AT = null;
+    protected $dateFormat = 'U';
+
+}

+ 19 - 0
app/Model/Orders.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ *
+ * Class Unit
+ * @package App\Models
+ */
+class Orders extends Model
+{
+    protected $table = "orders"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+
+}

+ 19 - 0
app/Model/OrdersHouse.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ *
+ * Class Unit
+ * @package App\Models
+ */
+class OrdersHouse extends Model
+{
+    protected $table = "orders_house"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+
+}

+ 19 - 0
app/Model/OrdersProcedureTag.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ *
+ * Class Unit
+ * @package App\Models
+ */
+class OrdersProcedureTag extends Model
+{
+    protected $table = "orders_procedure_tag"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+
+}

+ 19 - 0
app/Model/OrdersProduct.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ *
+ * Class Unit
+ * @package App\Models
+ */
+class OrdersProduct extends Model
+{
+    protected $table = "orders_product"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+
+}

+ 19 - 0
app/Model/OrdersProductBom.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ *
+ * Class Unit
+ * @package App\Models
+ */
+class OrdersProductBom extends Model
+{
+    protected $table = "orders_product_bom"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+
+}

+ 100 - 31
app/Service/BomService.php

@@ -6,6 +6,7 @@ namespace App\Service;
 use App\Model\Bom;
 use App\Model\BomDetail;
 use App\Model\BomDetailMeasure;
+use App\Model\BomDetailRelation;
 use App\Model\BomMaterial;
 use App\Model\SysMenu;
 use Illuminate\Support\Facades\DB;
@@ -66,19 +67,20 @@ class BomService extends Service
             }
 
             if(isset($data['material'])){
-                foreach ($data['detail'] as $v){
+                foreach ($data['material'] as $v){
                     $material_insert[] = [
-                        'bom_id' => $v['bom_id'],
-                        'formula' => $v['formula'],
-                        'num' => $v['bom_id'],
-                        'material_id' => $v['material_id'],
-                        'crt_time' => $v['bom_id'],
-                        'upd_time' => $v['bom_id'],
+                        'bom_id' => $id,
+                        'formula' => $v['formula']??'',
+                        'num' => $v['num'],
+                        'material_id' => $v['id'],
+                        'crt_time' => time(),
+                        'upd_time' => time(),
                     ];
                 }
-                BomMaterial::insert($detail_insert);
+                BomMaterial::insert($material_insert);
             }
             DB::commit();
+
         }catch (\Exception $e){
             DB::rollBack();
             return [false,$e->getMessage()];
@@ -89,6 +91,50 @@ class BomService extends Service
 
     }
 
+    //设置一个获取所有bom_id的方法
+    public function getAllBom($bom_id){
+        $all_bom = BomDetail::where('del_time',0)->select('bom_id','sub_bom_id')->get()->toArray();
+        $bom_key_list = [] ;
+        foreach ($all_bom as $v){
+            if(!isset($bom_key_list[$v['bom_id']])) $bom_key_list[$v['bom_id']] = [];
+            $bom_key_list[$v['bom_id']][] = $v['sub_bom_id'];
+        }
+
+        $bom_ids = [$bom_id];
+        $list = $this->setBom($bom_ids,$bom_key_list);
+
+        foreach ($list as &$v){
+            $v['top_bom_id'] = $bom_id;
+        }
+        BomDetailRelation::where('top_bom_id',$bom_id)->delete();
+        BomDetailRelation::insert($list);
+
+    }
+
+    public function setBom($bom_ids,$data){
+        $insert = [];
+        foreach ($bom_ids as $bom_id){
+            if(isset($data[$bom_id])){
+                $ids = $data[$bom_id];
+
+                foreach ($ids as $id){
+                    $insert[] = [
+                        'bom_id' => $id,
+                        'parent_id' => $bom_id,
+                    ];
+                }
+
+                $sub_insert = $this->setBom($ids,$data);
+                $insert = array_merge($insert,$sub_insert);
+            }
+
+        }
+
+        return $insert;
+
+
+    }
+
     public function add($data,$user){
 
 
@@ -112,33 +158,24 @@ class BomService extends Service
             $bom_id = $model->id;
             $material_insert = [];
             $detail_insert = [];
-            if(isset($data['detail'])){
-                foreach ($data['detail'] as $v){
-                    $detail_insert[] = [
+            if(isset($data['material'])){
+                foreach ($data['material'] as $v){
+                    $material_insert[] = [
                         'bom_id' => $bom_id,
-                        'sub_bom_id' => $v['sub_bom_id'],
-                        'formula' => $v['bom_id'],
-                        'num' => $v['bom_id'],
-                        'crt_time' => $v['bom_id'],
-                        'upd_time' => $v['bom_id'],
+                        'num' => $v['num'],
+                        'id' => $v['id'],
+                        'crt_time' => time(),
+                        'upd_time' => time(),
                     ];
                 }
-                BomDetail::insert($detail_insert);
+                BomMaterial::insert($material_insert);
             }
 
-            if(isset($data['material'])){
+            if(isset($data['detail'])){
                 foreach ($data['detail'] as $v){
                     $bom_detail = new BomDetail();
                     $bom_detail->bom_id = $bom_id;
-                    $bom_detail->sub_bom_id = $v['sub_bom_id'];
-                    $bom_detail->formula = $v['formula']??'';
-                    $bom_detail->num = $v['num'];
-                    $bom_detail->save();
-                    $bom_detail_id = $bom_detail->id;
-
-                    $bom_detail = new BomDetail();
-                    $bom_detail->bom_id = $bom_id;
-                    $bom_detail->sub_bom_id = $bom_detail_id;
+                    $bom_detail->sub_bom_id = $v['id'];
                     $bom_detail->formula = $v['formula']??'';
                     $bom_detail->num = $v['num'];
                     $bom_detail->save();
@@ -150,11 +187,11 @@ class BomService extends Service
                             'bom_detail_id' => $bom_detail_id,
                             'measure_id' => $vv['measure_id'],
                             'value' => $vv['value'],
+                            'measure_title' => $vv['measure_title'],
                         ];
                     }
                     BomDetailMeasure::insert($bom_detail_insert);
                 }
-                BomMaterial::insert($detail_insert);
             }
             DB::commit();
         }catch (\Exception $e){
@@ -177,20 +214,52 @@ class BomService extends Service
         return [true,'删除成功'];
     }
 
-    public function bomList($data){
+    public function bomDetail($data){
         $id = $data['id'];
         $return = Bom::where('id',$id)->first()->toArray();
 
         $return['bom_detail'] = Bom::from('bom_detail as bd')
             ->leftJoin('bom as b','b.id','bd.bom_id')
             ->where('bd.del_time',0)
+            ->where('bd.bom_id',$id)
             ->select('title','bd.*')->get()->toArray();
 
-
+        $measure_list =  BomDetailMeasure::where('bom_id',$id)->select('measure_id','value','measure_title','bom_detail_id')->get()->toArray();
+        $measure_key_list = [];
+        foreach ($measure_list as $v){
+            $measure_key_list[$v['bom_detail_id']][] = $v;
+        }
         $return['material'] = Bom::from('bom_material as bm')
-            ->leftJoin('material as m','m.id','bm.bom_id')
+            ->leftJoin('material as m','m.id','bm.material_id')
             ->where('bm.del_time',0)
             ->select('m.title','bm.*')->get()->toArray();
+        foreach ( $return['bom_detail'] as &$v){
+            $v['measure'] = isset($measure_key_list[$v['id']]) ? $measure_key_list[$v['id']] : [];
+        }
+
+        $return['top_measure'] = BomDetailMeasure::from('bom_detail_measure as bdm')
+            ->leftJoin('measure as m','m.id','bdm.measure_id')->where('bdm.bom_id',$id)
+         ->where('bom_id',$id)->select('bdm.measure_id','bdm.value','bdm.measure_title','m.e_title','m.title')->groupBy('measure_title')->get()->toArray();
+
+        return [200,$return];
+    }
+
+    public function bomList($data){
+//        $id = $data['id'];
+        $return = Bom::where('del_time',0)->select('*');
+        $return = $this->limit(
+            $return,'',$data
+        );
+//        $return['bom_detail'] = Bom::from('bom_detail as bd')
+//            ->leftJoin('bom as b','b.id','bd.bom_id')
+//            ->where('bd.del_time',0)
+//            ->select('title','bd.*')->get()->toArray();
+//
+//
+//        $return['material'] = Bom::from('bom_material as bm')
+//            ->leftJoin('material as m','m.id','bm.bom_id')
+//            ->where('bm.del_time',0)
+//            ->select('m.title','bm.*')->get()->toArray();
 
 
         return [200,$return];

+ 58 - 0
app/Service/Order/OrderBoxService.php

@@ -0,0 +1,58 @@
+<?php
+
+namespace App\Service\Order;
+
+
+use App\Model\Orders;
+use App\Model\OrdersHouse;
+use App\Model\OrdersProduct;
+use App\Model\OrdersProductPart;
+use App\Service\Service;
+use Illuminate\Support\Facades\DB;
+
+/**
+ * order表相关保存订单基本信息
+ * @package App\Models
+ */
+class OrderBoxService extends Service
+{
+
+
+    public function box_detail($order_no){
+
+        $data = [
+            [
+                'bom_title' => '部件名称',
+                'product_title' => '产品名称',
+                'order_in_no' => '',
+                'state' => 0,
+            ]
+        ];
+
+        $return = [
+            'total' => 1,
+            'data' => $data
+        ];
+        return [true,$return];
+    }
+
+    public function box_in($data){
+        $order_in_no = $this->setOrderNo();
+
+        return [true,$order_in_no];
+    }
+
+    public function box_out($data){
+        $order_in_no = $this->setOrderNo();
+
+        return [true,$order_in_no];
+    }
+
+    function setOrderNo(){
+        $order_no = date('Ymd').time();
+
+        return $order_no;
+    }
+
+
+}

+ 143 - 0
app/Service/Order/OrderService.php

@@ -0,0 +1,143 @@
+<?php
+
+namespace App\Service\Order;
+
+
+use App\Model\Orders;
+use App\Model\OrdersHouse;
+use App\Model\OrdersProduct;
+use App\Model\OrdersProductBom;
+use App\Model\OrdersProductPart;
+use App\Service\Service;
+use Illuminate\Support\Facades\DB;
+
+/**
+ * order表相关保存订单基本信息
+ * @package App\Models
+ */
+class OrderService extends Service
+{
+
+    public function orderSave($data)
+    {
+        list ($status,$msg) = $this->orderRule($data);
+        if(!$status) return [$status,$msg];
+        $order = new Orders();
+        $order_no = setOrderNo();
+        if(isset($data['order_no']))
+        {
+            $order_no = $data['order_no'];
+            $order = $order->where('order_no',$order_no)->first();
+        }
+
+        $order->order_no = $order_no;
+        $order->out_order_no = $data['out_order_no'] ?? $order_no;
+        $order->project_title = $data['project_title'];
+        $order->address = $data['address'];
+        $order->mobile = $data['mobile'];
+        $order->crt_id = 1;
+        $order->save();
+
+        return [true,$order_no];
+    }
+    public function orderHouseSave($data)
+    {
+        $orderHouse = new OrdersHouse();
+        $title = $data['title'] ?? '';
+        $house = $data['house'] ?? '';
+        $unit = $data['unit'] ?? '';
+        $layer = $data['layer'] ?? '';
+        $number = $data['number'] ?? '';
+        $order_no = $data['order_no'];
+        $first = $orderHouse->where([
+            'title' => $title,
+            'house' => $house,
+            'unit' => $unit,
+            'layer' => $layer,
+            'number' => $number,
+            'order_no' => $order_no,
+        ])->first();
+
+        if(!empty($first)) return [true,$first->id];
+        $orderHouse->order_no = $order_no;
+        $orderHouse->title = $title;
+        $orderHouse->house = $house;
+        $orderHouse->unit = $unit;
+        $orderHouse->layer = $layer;
+        $orderHouse->number = $number;
+        $orderHouse->save();
+
+        return [true,$orderHouse->id];
+    }
+
+    public function orderProductSave($data)
+    {
+        $orderProduct = new OrdersProduct();
+        $order_no = $data['order_no'];
+        $house_id = $data['house_id'];
+        $first = $orderProduct->where([
+            'figure_number' => $data['figure_number'],
+            'house_id' => $house_id,
+            'order_no' => $order_no,
+        ])->first();
+
+        if(!empty($first)) $orderProduct = $first;
+        $orderProduct->order_no = $order_no;
+        $orderProduct->house_id = $house_id;
+        $orderProduct->product_title = $data['product_title']??'';
+        $orderProduct->price = $data['price']??0;
+        $orderProduct->unit = $data['unit']??'';
+        $orderProduct->figure_number = $data['figure_number'];
+        $orderProduct->save();
+
+        return [true,$orderProduct->id];
+    }
+
+    public function orderProductBomSave($data)
+    {
+        $order_no = $data['order_no'];
+        $house_id = $data['house_id'];
+        $o_p_id = $data['o_p_id'];
+        OrdersProductBom::where([
+            'order_no' => $order_no,
+            'house_id' => $house_id,
+            'o_p_id' => $o_p_id,
+        ])->delete();
+
+
+        $insert = [];
+        foreach ($data['bom'] as $v){
+            $insert[] = [
+                'order_no' => $order_no,
+                'o_p_id' => $o_p_id,
+                'house_id' => $house_id,
+                'bom_title' => $v['bom_title']??'',
+                'product_title' => $v['product_title']??'',
+                'route_id' => $v['route_id']??0,
+                'crt_time' => time(),
+                'upd_time' => time(),
+                'procedure_properties' => $v['procedure_properties'] ?? '',
+                'measure' => $v['measure']??'',
+                'price' => $v['price'],
+                'bom_id' => $v['bom_id']
+            ];
+        }
+        OrdersProductBom::insert($insert);
+        return [true,''];
+    }
+
+    public function orderRule($data)
+    {
+        if ($this->isEmpty($data, 'project_title')) return [false, '名称不存在!'];
+        if ($this->isEmpty($data, 'address')) return [false, '单位不存在!'];
+        if ($this->isEmpty($data, 'mobile')) return [false, '芯片设置不存在!'];
+//        if($this->isEmpty($data,'icon')) return [201,'d不存在!'];
+//        if($this->isEmpty($data,'uri')) return [false,'路由不存在!'];
+
+
+        return [true, ''];
+    }
+
+
+
+}

+ 48 - 0
app/Service/Order/OrderTagService.php

@@ -0,0 +1,48 @@
+<?php
+
+namespace App\Service\Order;
+
+
+use App\Model\Orders;
+use App\Model\OrdersHouse;
+use App\Model\OrdersProduct;
+use App\Model\OrdersProductPart;
+use App\Service\Service;
+use Illuminate\Support\Facades\DB;
+
+/**
+ * order表相关保存订单基本信息
+ * @package App\Models
+ */
+class OrderTagService extends Service
+{
+
+    public function setTag($order_no){
+        //写死的工序
+        $procedure_ids = [
+            10,13,14,17,21
+        ];
+    }
+
+
+    public function getOrderTag($order_no){
+
+        $data = [
+            [
+                'order_no' => '1',
+                'tag' => '12',
+                'bom_title' => 'bom名称',
+                'product_title' => '产品名称',
+                'figure_number' => '图号',
+                'sub_state' => '0',
+            ]
+        ];
+
+        $return =  [
+            'total'=>1,
+            'data'=>$data,
+        ];
+
+        return [200,$return];
+    }
+}

+ 216 - 0
app/Service/OrderService.php

@@ -0,0 +1,216 @@
+<?php
+
+namespace App\Service;
+
+
+use App\Model\Bom;
+use App\Model\BomDetail;
+use App\Model\BomDetailMeasure;
+use App\Model\BomMaterial;
+use App\Model\Orders;
+use App\Model\OrdersHouse;
+use App\Model\OrdersProduct;
+use App\Model\OrdersProductBom;
+use App\Model\SysMenu;
+use Illuminate\Support\Facades\DB;
+use App\Service\Order\OrderService as OrderHook;
+
+/**
+ * bom相关
+ * @package App\Models
+ */
+class OrderService extends Service
+{
+
+    public function edit($data){
+        list($status,$msg) = $this->orderRule($data);
+        if(!$status) return [$status,$msg];
+        if($this->isEmpty($data,'id')) return [false,'ID必须!'];
+        $id = $data['id'];
+        $first = Bom::where('title',$data['title'])->where('id','<>',$id)->where('del_time',0)->first();
+        if(!empty($first))return [false,'名称已存在!'];
+        try{
+            DB::beginTransaction();
+            $model = Bom::where('id',$id)->first();
+            $model->title = $data['title'];
+            $model->formula = $data['formula'] ?? '';
+            $model->unit = $data['unit'];
+            $model->label = $data['label'] ?? 0;
+            $model->label_type = $data['label_type'] ?? 0;
+            $model->save();
+            $material_insert = [];
+            $detail_insert = [];
+            $bom_id = $model->id;
+            BomDetail::where('bom_id',$bom_id)->update([
+                'del_time' => time()
+            ]);
+            BomMaterial::where('bom_id',$bom_id)->update([
+                'del_time' => time()
+            ]);
+            if(isset($data['detail'])){
+                foreach ($data['detail'] as $v){
+                    $bom_detail = new BomDetail();
+                    $bom_detail->bom_id = $bom_id;
+                    $bom_detail->sub_bom_id = $v['sub_bom_id'];
+                    $bom_detail->formula = $v['formula']??'';
+                    $bom_detail->num = $v['num'];
+                    $bom_detail->save();
+                    $bom_detail_id = $bom_detail->id;
+                    $bom_detail_insert = [];
+                    foreach ($v['measure'] as $vv){
+                        $bom_detail_insert[] = [
+                            'bom_id' => $bom_id,
+                            'bom_detail_id' => $bom_detail_id,
+                            'measure_id' => $vv['measure_id'],
+                            'value' => $vv['value'],
+                        ];
+                    }
+                    BomDetailMeasure::insert($bom_detail_insert);
+                }
+                BomDetail::insert($detail_insert);
+            }
+
+            if(isset($data['material'])){
+                foreach ($data['material'] as $v){
+                    $material_insert[] = [
+                        'bom_id' => $id,
+                        'formula' => $v['formula']??'',
+                        'num' => $v['num'],
+                        'material_id' => $v['id'],
+                        'crt_time' => time(),
+                        'upd_time' => time(),
+                    ];
+                }
+                BomMaterial::insert($material_insert);
+            }
+            DB::commit();
+        }catch (\Exception $e){
+            DB::rollBack();
+            return [false,$e->getMessage()];
+        }
+
+
+        return [true,'保存成功!'];
+
+    }
+
+    public function add($data,$user){
+
+//        if($this->isEmpty($data,'title')) return [201,'名称不存在!'];
+        list($status,$msg) = $this->orderRule($data);
+//        if($this->isEmpty($data,'id')) return [false,'ID不存在!'];
+        if(!$status) return [$status,$msg];
+//        $first = Orders::where('out_order_no',$data['out_order_no'])->where('del_time',0)->first();
+//        if(!empty($first))return [false,'单号已存在!'];
+        $orderService = new OrderHook();
+        try{
+            DB::beginTransaction();
+            $bom_list =
+            list($status,$order_no) = $orderService->orderSave($data);
+            foreach ($data['house'] as $v){
+                $v['order_no'] = $order_no;
+                list($status,$house_id) = $orderService->orderHouseSave($v);
+//                var_dump($v);
+                foreach ($v['product'] as $product){
+                    $product['order_no'] = $order_no;
+                    $product['house_id'] = $house_id;
+                    list($status,$order_product_id) = $orderService->orderProductSave($product);
+                    $product['house_id'] = $house_id;
+                    $product['order_no'] = $order_no;
+                    $product['o_p_id'] = $order_product_id;
+
+                    $orderService->orderProductBomSave($product);
+                }
+            }
+
+            DB::commit();
+        }catch (\Exception $e){
+            DB::rollBack();
+            return [false,$e->getLine().':'.$e->getMessage()];
+        }
+
+
+        return [true,'保存成功!'];
+
+    }
+
+    public function del($data){
+        if($this->isEmpty($data,'order_no')) return [false,'order_no必须!'];
+        $id = $data['order_no'];
+        Orders::where('order_no',$id)->update([
+            'del_time'=>time()
+        ]);
+
+        return [true,'删除成功'];
+    }
+
+    public function orderDetail($data){
+        $order_no = $data['order_no'];
+        $order = Orders::where('order_no',$order_no)->first()->toArray();
+
+        $house_list = OrdersHouse::where('order_no',$order_no)->select('*')->get()->toArray();
+
+        $order_product_list = OrdersProduct::where('order_no',$order_no)->select('*','product_title as title')->get()->toArray();
+
+        $order_product_bom_list = OrdersProductBom::where('order_no',$order_no)->select('*','bom_title as title')->get()->toArray();
+
+        $order_product_key_list = [];
+        foreach ($order_product_list as $v){
+            $order_product_key_list[$v['house_id']][] = $v;
+        }
+
+        $order_product_bom_key_list = [];
+        foreach ($order_product_bom_list as $v){
+            $order_product_bom_key_list[$v['o_p_id']][] = $v;
+        }
+
+        foreach ($house_list as $v){
+            if(isset($order_product_key_list[$v['id']])){
+                foreach ($order_product_key_list[$v['id']] as &$vv){
+                    if(isset($order_product_bom_key_list[$vv['id']])){
+                        $vv['bom'] = $order_product_bom_key_list[$vv['id']];
+                    }
+                }
+                $v['product'] = $order_product_key_list[$v['id']];
+            }
+            $order['house'][] = $v;
+        }
+//        var_dump($order);die;
+        return [200,$order];
+    }
+
+    public function orderList($data){
+//        $id = $data['id'];
+        $return = Orders::where('del_time',0)->select('*');
+        $return = $this->limit(
+            $return,'',$data
+        );
+//        $return['bom_detail'] = Bom::from('bom_detail as bd')
+//            ->leftJoin('bom as b','b.id','bd.bom_id')
+//            ->where('bd.del_time',0)
+//            ->select('title','bd.*')->get()->toArray();
+//
+//
+//        $return['material'] = Bom::from('bom_material as bm')
+//            ->leftJoin('material as m','m.id','bm.bom_id')
+//            ->where('bm.del_time',0)
+//            ->select('m.title','bm.*')->get()->toArray();
+
+
+        return [200,$return];
+    }
+
+    public function orderRule($data){
+        if($this->isEmpty($data,'out_order_no')) return [false,'订单号不存在!'];
+        if($this->isEmpty($data,'project_title')) return [false,'项目名称不存在!'];
+        if($this->isEmpty($data,'address')) return [false,'地址不存在!'];
+        if($this->isEmpty($data,'mobile')) return [false,'手机号不存在!'];
+//        if($this->isEmpty($data,'icon')) return [201,'d不存在!'];
+//        if($this->isEmpty($data,'uri')) return [false,'路由不存在!'];
+
+
+        return [true,''];
+    }
+
+
+}

+ 262 - 0
app/helpers.php

@@ -0,0 +1,262 @@
+<?php
+
+use Illuminate\Support\Str;
+
+function test_helper() {
+    return 'OK';
+}
+
+
+function cache_key($key):string
+{
+    return config('app.name'). ":".$key;
+}
+
+function app_is_local():bool
+{
+    if ( config('app.env') == 'local' ) {
+        return true;
+    }
+    return false;
+}
+
+function app_is_production():bool
+{
+    if ( config('app.env') == 'production' ) {
+        return true;
+    }
+    return false;
+}
+
+
+
+
+function storage_path_public($file){
+    return storage_path  ('app/public/'. $file );
+}
+
+
+
+function redis_prefix(){
+    return Str::slug(config('app.name'), '_').'_database_';
+}
+
+function redis_batch_delete_by_prefix($prefix){
+    $redis= \Illuminate\Support\Facades\Redis::connection();
+    $arr = $redis->keys( $prefix. '*');
+    $new=[];
+    foreach ($arr as $v) {
+        $new[]= Str::replaceFirst( redis_prefix(),'',$v );
+    }
+    $redis->del($new);
+
+}
+
+function sc($data){
+    echo "<pre>";
+    print_r($data);
+    echo "</pre>";
+}
+
+
+/**
+ * 获取微秒等级的时间戳
+ *
+ * @return float
+ */
+function getMillisecond()
+{
+    list($t1, $t2) = explode(' ', microtime());
+    return (float)sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000);
+}
+
+if (! function_exists('getIp')) {
+    function getIp() {
+        if(getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
+            $ip = getenv("HTTP_CLIENT_IP");
+        elseif(getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
+            $ip = getenv("HTTP_X_FORWARDED_FOR");
+        elseif(getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
+            $ip = getenv("REMOTE_ADDR");
+        elseif(isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
+            $ip = $_SERVER['REMOTE_ADDR'];
+        else
+            $ip = "unknown";
+        return ($ip);
+    }
+}
+
+/**
+ * @param $url
+ * @param string $method
+ * @param array $postData
+ * @param int $timeOut
+ * @param array $header
+ * @return mixed|null|string
+ */
+function getHttpContent($url, $method = 'POST', $postData, $timeOut = 30, $header = [])
+{
+    $data = '';
+    if (!empty($url)) {
+        try {
+            $ch = curl_init();
+            if (substr($url, 0, 5) == 'https') {
+                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+            }
+            curl_setopt($ch, CURLOPT_HEADER, false);
+            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+            curl_setopt($ch, CURLOPT_TIMEOUT, $timeOut); //30秒超时
+            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
+            if ($header) {
+                curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
+            }
+            if (strtoupper($method) == 'POST') {
+                $curlPost = is_array($postData) ? http_build_query($postData) : $postData;
+                curl_setopt($ch, CURLOPT_POST, 1);
+                curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
+            } elseif (strtoupper($method) == 'GET') {
+                if (!empty($postData)) {
+                    $url = $url . (strpos($url, '?') ? '&' : '?') . http_build_query($postData);
+                }
+            }
+
+            curl_setopt($ch, CURLOPT_URL, $url);
+            $data = curl_exec($ch);
+            curl_close($ch);
+
+        } catch (Exception $e) {
+            $data = null;
+        }
+    }
+
+    return $data;
+}
+
+/**
+ * POST请求到URL并接收应答数据。
+ */
+function send_post($url, $post_data)
+{
+    $options = array(
+        'http' => array(
+            'method' => 'POST',
+            'header' => 'Content-type:application/json',
+            'content' => $post_data,
+            'timeout' => 60 // 超时时间(单位:s)
+        )
+    );
+
+
+    $context = stream_context_create($options);
+
+    $result = file_get_contents($url, false, $context);
+
+    return $result;
+}
+
+//写日志
+function write_log($filename,$data){
+    if(!is_string($data)){
+        $data = json_encode($data);
+    }
+    $data = '['.date("Y-m-d H:i:s",time()).'] : '. $data;
+    file_put_contents($filename,$data.PHP_EOL, FILE_APPEND);
+}
+
+//生成签名
+function makeSign($params,$appkey,$sign_type=1){
+    ksort($params);
+    unset($params['sign']);
+    $str = '';
+    foreach($params as $key=>$val){
+        if(is_array($val)){
+            continue;
+        }
+        if($sign_type == 1 || !$sign_type){
+            if(strlen($val) > 0){
+                $str.= trim($val);
+            }
+        }else{
+            if(strlen($val) > 0){
+                $str.= trim($key).'='.trim($val);
+            }
+        }
+
+    }
+
+    $hash_hmac = hash_hmac('sha256', $str, $appkey, true);
+    return urlencode(base64_encode($hash_hmac));
+}
+
+//生成订单号
+function buildOrderId($bid)
+{
+    list($t1, $t2) = explode(' ', microtime());
+    $orderId = sprintf('%.0f%03d', (floatval($t1) + floatval($t2)) * 1000, mt_rand(0, 999));
+    return $orderId.rand(10,99) . substr(sprintf("%04d", $bid), -4);
+}
+
+//生成12位订单号
+function build12OrderId($bid)
+{
+    return  substr(time().rand(10,99).substr(sprintf("%04d", $bid), -3),-12);
+}
+
+
+//生成token
+function buildToken($bid){
+    $str = md5(uniqid(md5(microtime(true)),true));
+    $token = sha1($str.$bid);
+    return $token;
+}
+
+//加密
+function encryptToken($str){
+    $passwd = config('Pay')['encryptStr'];
+    $result = openssl_encrypt($str, 'DES-ECB', $passwd, 0);
+    return $result;
+}
+
+//解密
+function decryptToken($str){
+    $passwd = config('Pay')['encryptStr'];
+    $result = openssl_decrypt($str, 'DES-ECB', $passwd, 0);
+    return $result;
+}
+
+function transPn($link,$pn){
+    $arr = explode('&',$link);
+    if(!empty($arr)){
+        foreach($arr as $key=>$val){
+            if(preg_match("/^pn=*/",$val)){
+                $arr[$key] = 'pn='.$pn;
+            }
+        }
+        $link = implode('&',$arr);
+    }
+    return $link;
+}
+
+function confusionPhone($phone){
+    $confusionStr = rand(10,99);
+    $tmpStr = substr($phone,0,strlen($phone) - 2);
+    $confusionPhone = $tmpStr.$confusionStr;
+    return $confusionPhone;
+}
+
+function confusionEmail($email){
+    $arr1 = range( 'a', 'z' );
+    $arr2 = range(1,9);
+    $arr = array_merge($arr1,$arr2);
+    $str = $arr[rand(0,count($arr) - 1)].$arr[rand(0,count($arr) - 1)];
+    $tmpStr = substr($email,(strlen($email) - 2) * -1);
+    $confusionEmail = $str.$tmpStr;
+    return $confusionEmail;
+}
+
+function setOrderNo(){
+    $order_no = date('Ymd').time();
+
+    return $order_no;
+}

+ 1 - 1
config/database.php

@@ -56,7 +56,7 @@ return [
             'collation' => 'utf8mb4_unicode_ci',
             'prefix' => '',
             'prefix_indexes' => true,
-            'strict' => true,
+            'strict' => false,
             'engine' => null,
             'options' => extension_loaded('pdo_mysql') ? array_filter([
                 PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),

+ 1 - 1
config/queue.php

@@ -13,7 +13,7 @@ return [
     |
     */
 
-    'default' => env('QUEUE_CONNECTION', 'sync'),
+    'default' => env('QUEUE_CONNECTION', 'redis'),
 
     /*
     |--------------------------------------------------------------------------

+ 19 - 4
routes/api.php

@@ -74,7 +74,22 @@ Route::any('productEdit', 'Api\MaterialController@edit');
 Route::any('productAdd', 'Api\MaterialController@edd');
 Route::any('productDel', 'Api\MaterialController@del');
 
-Route::any('bomList', 'Api\bomController@bomList');
-Route::any('bomEdit', 'Api\bomController@edit');
-Route::any('bomAdd', 'Api\bomController@edd');
-Route::any('bomDel', 'Api\bomController@del');
+Route::any('bomList', 'Api\BomController@bomList');
+Route::any('bomDetail', 'Api\BomController@bomDetail');
+Route::any('bomEdit', 'Api\BomController@edit');
+Route::any('bomAdd', 'Api\BomController@add');
+Route::any('bomDel', 'Api\BomController@del');
+
+Route::any('orderList', 'Api\OrderController@orderList');
+Route::any('orderAdd', 'Api\OrderController@add');
+Route::any('orderEdit', 'Api\OrderController@add');
+Route::any('orderDel', 'Api\OrderController@del');
+Route::any('orderDetail', 'Api\OrderController@orderDetail');
+
+Route::any('tagDetail', 'Api\OrderTagController@tagDetail');
+Route::any('boxDetail', 'Api\OrderBoxController@boxDetail');
+Route::any('transportDetail', 'Api\OrderTransportController@transportDetail');
+Route::any('boxIn', 'Api\OrderBoxController@boxIn');
+Route::any('boxOut', 'Api\OrderBoxController@boxOut');
+Route::any('boxTransport', 'Api\OrderTransportController@boxTransport');
+Route::any('transportConfirm', 'Api\OrderTransportController@transportConfirm');