Commit 46b5cd600235743a52a6008b852af19af38f8661

Authored by huhai
2 parents 3ff22a34 40a800c4

Merge remote-tracking branch 'origin/develop' into develop

Showing 68 changed files with 4001 additions and 850 deletions

Too many changes to show.

To preserve performance only 47 of 68 files are displayed.

.idea/encodings.xml
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
2 <project version="4"> 2 <project version="4">
3 <component name="Encoding" native2AsciiForPropertiesFiles="true" defaultCharsetForPropertiesFiles="UTF-8"> 3 <component name="Encoding" native2AsciiForPropertiesFiles="true" defaultCharsetForPropertiesFiles="UTF-8">
4 <file url="file://$PROJECT_DIR$" charset="UTF-8" /> 4 <file url="file://$PROJECT_DIR$" charset="UTF-8" />
  5 + <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
5 <file url="PROJECT" charset="UTF-8" /> 6 <file url="PROJECT" charset="UTF-8" />
6 </component> 7 </component>
7 </project> 8 </project>
8 \ No newline at end of file 9 \ No newline at end of file
.idea/workspace.xml
@@ -5,11 +5,61 @@ @@ -5,11 +5,61 @@
5 </component> 5 </component>
6 <component name="ChangeListManager"> 6 <component name="ChangeListManager">
7 <list default="true" id="baeae966-16bb-4f97-a411-22fe5a65cefd" name="Default Changelist" comment=""> 7 <list default="true" id="baeae966-16bb-4f97-a411-22fe5a65cefd" name="Default Changelist" comment="">
  8 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/download/ApkController.java" afterDir="false" />
  9 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/download/ApkInfo.java" afterDir="false" />
  10 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/download/Constant.java" afterDir="false" />
  11 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/general/CompanyInfo.java" afterDir="false" />
  12 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/general/MobileUserController.java" afterDir="false" />
  13 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/invenory/InventoryDetails.java" afterDir="false" />
  14 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/invenory/MobileInventory.java" afterDir="false" />
  15 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/invenory/MobileInventoryController.java" afterDir="false" />
  16 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/invenory/ShipmentDetail.java" afterDir="false" />
  17 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/invenory/TaskIds.java" afterDir="false" />
  18 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/receipt/MaterialInfo.java" afterDir="false" />
  19 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java" afterDir="false" />
  20 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/receipt/MobileOneByOneReceiptController.java" afterDir="false" />
  21 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/receipt/MobilePutawayController.java" afterDir="false" />
  22 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/receipt/ReceiptBill.java" afterDir="false" />
  23 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/receipt/ReceiptResult.java" afterDir="false" />
  24 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/shipment/Materialforecast.java" afterDir="false" />
  25 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/shipment/MobileShipmentController.java" afterDir="false" />
  26 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/shipment/MobileTaskForASRSController.java" afterDir="false" />
  27 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/shipment/Shipment.java" afterDir="false" />
  28 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/shipment/ShipmentBill.java" afterDir="false" />
  29 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/shipment/ShipmentTaskModel.java" afterDir="false" />
  30 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/common/mapper/ApkMapper.java" afterDir="false" />
  31 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/domain/ReceiptContainerView.java" afterDir="false" />
  32 + <change afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/task/taskHeader/domain/MobileTask.java" afterDir="false" />
  33 + <change afterPath="$PROJECT_DIR$/src/main/resources/mybatis/download/DownloadMapper.xml" afterDir="false" />
  34 + <change beforePath="$PROJECT_DIR$/.idea/compiler.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/compiler.xml" afterDir="false" />
8 <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> 35 <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
9 - <change beforePath="$PROJECT_DIR$/src/main/resources/templates/config/material/print.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/config/material/print.html" afterDir="false" /> 36 + <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/framework/config/ShiroConfig.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/framework/config/ShiroConfig.java" afterDir="false" />
  37 + <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/location/mapper/LocationMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/location/mapper/LocationMapper.java" afterDir="false" />
  38 + <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/location/service/LocationService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/location/service/LocationService.java" afterDir="false" />
  39 + <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java" afterDir="false" />
  40 + <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/mapper/MaterialMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/mapper/MaterialMapper.java" afterDir="false" />
  41 + <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/service/MaterialService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/service/MaterialService.java" afterDir="false" />
  42 + <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/service/MaterialServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/service/MaterialServiceImpl.java" afterDir="false" />
  43 + <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderService.java" afterDir="false" />
  44 + <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderServiceImpl.java" afterDir="false" />
  45 + <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderService.java" afterDir="false" />
  46 + <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java" afterDir="false" />
  47 + <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailService.java" afterDir="false" />
  48 + <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java" afterDir="false" />
  49 + <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptHeader/mapper/ReceiptHeaderMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptHeader/mapper/ReceiptHeaderMapper.java" afterDir="false" />
  50 + <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptHeader/service/ReceiptHeaderService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptHeader/service/ReceiptHeaderService.java" afterDir="false" />
  51 + <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java" afterDir="false" />
  52 + <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java" afterDir="false" />
  53 + <change beforePath="$PROJECT_DIR$/src/main/resources/application-dev.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application-dev.yml" afterDir="false" />
  54 + <change beforePath="$PROJECT_DIR$/src/main/resources/mybatis/config/LocationMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mybatis/config/LocationMapper.xml" afterDir="false" />
  55 + <change beforePath="$PROJECT_DIR$/src/main/resources/mybatis/config/MaterialMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mybatis/config/MaterialMapper.xml" afterDir="false" />
  56 + <change beforePath="$PROJECT_DIR$/src/main/resources/mybatis/config/WcsscanbarcodeMapper.xml" beforeDir="false" />
  57 + <change beforePath="$PROJECT_DIR$/src/main/resources/mybatis/receipt/ReceiptHeaderMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mybatis/receipt/ReceiptHeaderMapper.xml" afterDir="false" />
  58 + <change beforePath="$PROJECT_DIR$/src/main/resources/mybatis/xinyi/TokenMapper.xml" beforeDir="false" />
10 </list> 59 </list>
11 <ignored path="$PROJECT_DIR$/target/" /> 60 <ignored path="$PROJECT_DIR$/target/" />
12 <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> 61 <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
  62 + <option name="TRACKING_ENABLED" value="true" />
13 <option name="SHOW_DIALOG" value="false" /> 63 <option name="SHOW_DIALOG" value="false" />
14 <option name="HIGHLIGHT_CONFLICTS" value="true" /> 64 <option name="HIGHLIGHT_CONFLICTS" value="true" />
15 <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> 65 <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
@@ -50,33 +100,11 @@ @@ -50,33 +100,11 @@
50 </component> 100 </component>
51 <component name="FileEditorManager"> 101 <component name="FileEditorManager">
52 <leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> 102 <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
53 - <file pinned="false" current-in-tab="true">  
54 - <entry file="file://$PROJECT_DIR$/src/main/resources/templates/config/material/print.html"> 103 + <file leaf-file-name="MobileBatchReceiptController.java" pinned="false" current-in-tab="true">
  104 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java">
55 <provider selected="true" editor-type-id="text-editor"> 105 <provider selected="true" editor-type-id="text-editor">
56 - <state relative-caret-position="133">  
57 - <caret line="64" column="29" lean-forward="true" selection-start-line="64" selection-start-column="29" selection-end-line="64" selection-end-column="29" />  
58 - <folding>  
59 - <element signature="n#style#0;n#input#0;n#td#1;n#tr#4;n#tbody#0;n#table#0;n#div#0;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" />  
60 - <element signature="n#style#0;n#input#0;n#td#1;n#tr#4;n#tbody#0;n#table#0;n#div#0;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" />  
61 - </folding>  
62 - </state>  
63 - </provider>  
64 - </entry>  
65 - </file>  
66 - <file pinned="false" current-in-tab="false">  
67 - <entry file="file://$PROJECT_DIR$/src/main/resources/templates/config/material/material.html">  
68 - <provider selected="true" editor-type-id="text-editor">  
69 - <state relative-caret-position="-3041">  
70 - <caret line="67" column="12" selection-start-line="67" selection-start-column="12" selection-end-line="67" selection-end-column="12" />  
71 - </state>  
72 - </provider>  
73 - </entry>  
74 - </file>  
75 - <file pinned="false" current-in-tab="false">  
76 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java">  
77 - <provider selected="true" editor-type-id="text-editor">  
78 - <state relative-caret-position="113">  
79 - <caret line="193" column="28" lean-forward="true" selection-start-line="193" selection-start-column="28" selection-end-line="193" selection-end-column="28" /> 106 + <state relative-caret-position="-1234">
  107 + <caret line="404" column="51" selection-start-line="404" selection-start-column="40" selection-end-line="404" selection-end-column="51" />
80 </state> 108 </state>
81 </provider> 109 </provider>
82 </entry> 110 </entry>
@@ -96,6 +124,18 @@ @@ -96,6 +124,18 @@
96 <component name="FindBugs-IDEA-Workspace"> 124 <component name="FindBugs-IDEA-Workspace">
97 <toolWindowEditorPreview>false</toolWindowEditorPreview> 125 <toolWindowEditorPreview>false</toolWindowEditorPreview>
98 </component> 126 </component>
  127 + <component name="FindInProjectRecents">
  128 + <findStrings>
  129 + <find>materialService</find>
  130 + <find>mobileCheckLocationCode</find>
  131 + <find>inventoryDetailService</find>
  132 + <find>getCompany</find>
  133 + <find>getCompanyInfo</find>
  134 + <find>&lt;/insert&gt;</find>
  135 + <find>&lt;/insert&gt;</find>
  136 + <find>insertApkInfo</find>
  137 + </findStrings>
  138 + </component>
99 <component name="Git.Settings"> 139 <component name="Git.Settings">
100 <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> 140 <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
101 <option name="RECENT_BRANCH_BY_REPOSITORY"> 141 <option name="RECENT_BRANCH_BY_REPOSITORY">
@@ -107,30 +147,73 @@ @@ -107,30 +147,73 @@
107 <component name="IdeDocumentHistory"> 147 <component name="IdeDocumentHistory">
108 <option name="CHANGED_PATHS"> 148 <option name="CHANGED_PATHS">
109 <list> 149 <list>
110 - <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/ReceiptApi.java" />  
111 - <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/ReceiptApiService.java" />  
112 - <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailServiceImpl.java" />  
113 - <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/ShipmentApiService.java" />  
114 - <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/system/user/service/UserServiceImpl.java" />  
115 - <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/system/user/service/IUserService.java" />  
116 - <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/BasicDataApi.java" />  
117 - <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/domain/InventoryDomain.java" />  
118 - <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/BasicDataApiService.java" />  
119 - <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/container/controller/ContainerController.java" />  
120 - <option value="$PROJECT_DIR$/src/main/resources/templates/config/container/container.html" />  
121 - <option value="$USER_HOME$/Desktop/boot/boot/打印二维码 - 多个组2.html" />  
122 - <option value="$PROJECT_DIR$/src/main/resources/static/css/style.css" />  
123 - <option value="$PROJECT_DIR$/src/main/resources/templates/config/container/print.html" />  
124 - <option value="$PROJECT_DIR$/src/main/resources/templates/config/location/location.html" />  
125 - <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java" />  
126 - <option value="$PROJECT_DIR$/src/main/resources/templates/config/location/print.html" />  
127 - <option value="$PROJECT_DIR$/src/main/resources/templates/config/material/material.html" />  
128 - <option value="$PROJECT_DIR$/src/main/resources/templates/config/material/report.html" />  
129 <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java" /> 150 <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java" />
130 <option value="$PROJECT_DIR$/src/main/resources/templates/config/material/print.html" /> 151 <option value="$PROJECT_DIR$/src/main/resources/templates/config/material/print.html" />
  152 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/controller/CycleCountHeaderController.java" />
  153 + <option value="$PROJECT_DIR$/src/main/resources/templates/inventory/cycleCountHeader/add.html" />
  154 + <option value="$PROJECT_DIR$/src/main/resources/templates/shipment/shipmentHeader/report.html" />
  155 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/CycleCountService.java" />
  156 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/domain/CycCountDomain.java" />
  157 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/inventory/cycleCountDetail/controller/CycleCountDetailController.java" />
  158 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/CycleCountApi.java" />
  159 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/domain/AdjustDomain.java" />
  160 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/AdjustApi.java" />
  161 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java" />
  162 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/AdjustService.java" />
  163 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/ReceiptApiService.java" />
  164 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/ReceiptApi.java" />
  165 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/general/MobileUserController.java" />
  166 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderService.java" />
  167 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderServiceImpl.java" />
  168 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/invenory/MobileInventoryController.java" />
  169 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/task/taskHeader/domain/MobileTask.java" />
  170 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/location/mapper/LocationMapper.java" />
  171 + <option value="$PROJECT_DIR$/src/main/resources/mybatis/config/LocationMapper.xml" />
  172 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailService.java" />
  173 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java" />
  174 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java" />
  175 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/mapper/MaterialMapper.java" />
  176 + <option value="$PROJECT_DIR$/src/main/resources/mybatis/config/MaterialMapper.xml" />
  177 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderService.java" />
  178 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptHeader/service/ReceiptHeaderService.java" />
  179 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptHeader/mapper/ReceiptHeaderMapper.java" />
  180 + <option value="$PROJECT_DIR$/src/main/resources/mybatis/receipt/ReceiptHeaderMapper.xml" />
  181 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/location/service/LocationService.java" />
  182 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java" />
  183 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/shipment/MobileShipmentController.java" />
  184 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/receipt/MobilePutawayController.java" />
  185 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java" />
  186 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java" />
  187 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/service/MaterialService.java" />
  188 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/service/MaterialServiceImpl.java" />
  189 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/wcsScanBarcode/WcsScanBarcodeController.java" />
  190 + <option value="$PROJECT_DIR$/src/main/resources/application-dev.yml" />
  191 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/download/ApkInfo.java" />
  192 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/download/ret/ServiceException.java" />
  193 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/download/Constant.java" />
  194 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/download/ApkMapper.java" />
  195 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/download/mapper/ApkMapper.java" />
  196 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/framework/config/ShiroConfig.java" />
  197 + <option value="$PROJECT_DIR$/src/main/resources/mybatis/download/DownloadMapper.xml" />
  198 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/common/mapper/ApkMapper.java" />
  199 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/download/ApkController.java" />
  200 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java" />
131 </list> 201 </list>
132 </option> 202 </option>
133 </component> 203 </component>
  204 + <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
  205 + <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
  206 + <component name="JsGulpfileManager">
  207 + <detection-done>true</detection-done>
  208 + <sorting>DEFINITION_ORDER</sorting>
  209 + </component>
  210 + <component name="MavenImportPreferences">
  211 + <option name="importingSettings">
  212 + <MavenImportingSettings>
  213 + <option name="importAutomatically" value="true" />
  214 + </MavenImportingSettings>
  215 + </option>
  216 + </component>
134 <component name="MavenProjectNavigator"> 217 <component name="MavenProjectNavigator">
135 <treeState> 218 <treeState>
136 <expand> 219 <expand>
@@ -142,10 +225,14 @@ @@ -142,10 +225,14 @@
142 <select /> 225 <select />
143 </treeState> 226 </treeState>
144 </component> 227 </component>
  228 + <component name="NodePackageJsonFileManager">
  229 + <packageJsonPaths />
  230 + </component>
145 <component name="ProjectFrameBounds" extendedState="6"> 231 <component name="ProjectFrameBounds" extendedState="6">
146 - <option name="x" value="470" />  
147 - <option name="width" value="980" />  
148 - <option name="height" value="1030" /> 232 + <option name="x" value="-10" />
  233 + <option name="y" value="-10" />
  234 + <option name="width" value="1400" />
  235 + <option name="height" value="780" />
149 </component> 236 </component>
150 <component name="ProjectId" id="1QOzUtfkdeRmYuw3MIDHXXMLsFH" /> 237 <component name="ProjectId" id="1QOzUtfkdeRmYuw3MIDHXXMLsFH" />
151 <component name="ProjectLevelVcsManager"> 238 <component name="ProjectLevelVcsManager">
@@ -156,8 +243,7 @@ @@ -156,8 +243,7 @@
156 <foldersAlwaysOnTop value="true" /> 243 <foldersAlwaysOnTop value="true" />
157 </navigator> 244 </navigator>
158 <panes> 245 <panes>
159 - <pane id="Scope" />  
160 - <pane id="PackagesPane" /> 246 + <pane id="AndroidView" />
161 <pane id="ProjectPane"> 247 <pane id="ProjectPane">
162 <subPane> 248 <subPane>
163 <expand> 249 <expand>
@@ -208,53 +294,7 @@ @@ -208,53 +294,7 @@
208 <item name="java" type="462c0819:PsiDirectoryNode" /> 294 <item name="java" type="462c0819:PsiDirectoryNode" />
209 <item name="com" type="462c0819:PsiDirectoryNode" /> 295 <item name="com" type="462c0819:PsiDirectoryNode" />
210 <item name="huaheng" type="462c0819:PsiDirectoryNode" /> 296 <item name="huaheng" type="462c0819:PsiDirectoryNode" />
211 - <item name="api" type="462c0819:PsiDirectoryNode" />  
212 - </path>  
213 - <path>  
214 - <item name="wms2" type="b2602c69:ProjectViewProjectNode" />  
215 - <item name="wms2" type="462c0819:PsiDirectoryNode" />  
216 - <item name="src" type="462c0819:PsiDirectoryNode" />  
217 - <item name="main" type="462c0819:PsiDirectoryNode" />  
218 - <item name="java" type="462c0819:PsiDirectoryNode" />  
219 - <item name="com" type="462c0819:PsiDirectoryNode" />  
220 - <item name="huaheng" type="462c0819:PsiDirectoryNode" />  
221 - <item name="pc" type="462c0819:PsiDirectoryNode" />  
222 - </path>  
223 - <path>  
224 - <item name="wms2" type="b2602c69:ProjectViewProjectNode" />  
225 - <item name="wms2" type="462c0819:PsiDirectoryNode" />  
226 - <item name="src" type="462c0819:PsiDirectoryNode" />  
227 - <item name="main" type="462c0819:PsiDirectoryNode" />  
228 - <item name="java" type="462c0819:PsiDirectoryNode" />  
229 - <item name="com" type="462c0819:PsiDirectoryNode" />  
230 - <item name="huaheng" type="462c0819:PsiDirectoryNode" />  
231 - <item name="pc" type="462c0819:PsiDirectoryNode" />  
232 - <item name="config" type="462c0819:PsiDirectoryNode" />  
233 - </path>  
234 - <path>  
235 - <item name="wms2" type="b2602c69:ProjectViewProjectNode" />  
236 - <item name="wms2" type="462c0819:PsiDirectoryNode" />  
237 - <item name="src" type="462c0819:PsiDirectoryNode" />  
238 - <item name="main" type="462c0819:PsiDirectoryNode" />  
239 - <item name="java" type="462c0819:PsiDirectoryNode" />  
240 - <item name="com" type="462c0819:PsiDirectoryNode" />  
241 - <item name="huaheng" type="462c0819:PsiDirectoryNode" />  
242 - <item name="pc" type="462c0819:PsiDirectoryNode" />  
243 - <item name="config" type="462c0819:PsiDirectoryNode" />  
244 - <item name="location" type="462c0819:PsiDirectoryNode" />  
245 - </path>  
246 - <path>  
247 - <item name="wms2" type="b2602c69:ProjectViewProjectNode" />  
248 - <item name="wms2" type="462c0819:PsiDirectoryNode" />  
249 - <item name="src" type="462c0819:PsiDirectoryNode" />  
250 - <item name="main" type="462c0819:PsiDirectoryNode" />  
251 - <item name="java" type="462c0819:PsiDirectoryNode" />  
252 - <item name="com" type="462c0819:PsiDirectoryNode" />  
253 - <item name="huaheng" type="462c0819:PsiDirectoryNode" />  
254 - <item name="pc" type="462c0819:PsiDirectoryNode" />  
255 - <item name="config" type="462c0819:PsiDirectoryNode" />  
256 - <item name="location" type="462c0819:PsiDirectoryNode" />  
257 - <item name="controller" type="462c0819:PsiDirectoryNode" /> 297 + <item name="mobile" type="462c0819:PsiDirectoryNode" />
258 </path> 298 </path>
259 <path> 299 <path>
260 <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> 300 <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
@@ -264,92 +304,8 @@ @@ -264,92 +304,8 @@
264 <item name="java" type="462c0819:PsiDirectoryNode" /> 304 <item name="java" type="462c0819:PsiDirectoryNode" />
265 <item name="com" type="462c0819:PsiDirectoryNode" /> 305 <item name="com" type="462c0819:PsiDirectoryNode" />
266 <item name="huaheng" type="462c0819:PsiDirectoryNode" /> 306 <item name="huaheng" type="462c0819:PsiDirectoryNode" />
267 - <item name="pc" type="462c0819:PsiDirectoryNode" />  
268 - <item name="config" type="462c0819:PsiDirectoryNode" />  
269 - <item name="material" type="462c0819:PsiDirectoryNode" />  
270 - </path>  
271 - <path>  
272 - <item name="wms2" type="b2602c69:ProjectViewProjectNode" />  
273 - <item name="wms2" type="462c0819:PsiDirectoryNode" />  
274 - <item name="src" type="462c0819:PsiDirectoryNode" />  
275 - <item name="main" type="462c0819:PsiDirectoryNode" />  
276 - <item name="java" type="462c0819:PsiDirectoryNode" />  
277 - <item name="com" type="462c0819:PsiDirectoryNode" />  
278 - <item name="huaheng" type="462c0819:PsiDirectoryNode" />  
279 - <item name="pc" type="462c0819:PsiDirectoryNode" />  
280 - <item name="config" type="462c0819:PsiDirectoryNode" />  
281 - <item name="material" type="462c0819:PsiDirectoryNode" />  
282 - <item name="controller" type="462c0819:PsiDirectoryNode" />  
283 - </path>  
284 - <path>  
285 - <item name="wms2" type="b2602c69:ProjectViewProjectNode" />  
286 - <item name="wms2" type="462c0819:PsiDirectoryNode" />  
287 - <item name="src" type="462c0819:PsiDirectoryNode" />  
288 - <item name="main" type="462c0819:PsiDirectoryNode" />  
289 - <item name="java" type="462c0819:PsiDirectoryNode" />  
290 - <item name="com" type="462c0819:PsiDirectoryNode" />  
291 - <item name="huaheng" type="462c0819:PsiDirectoryNode" />  
292 - <item name="pc" type="462c0819:PsiDirectoryNode" />  
293 - <item name="inventory" type="462c0819:PsiDirectoryNode" />  
294 - </path>  
295 - <path>  
296 - <item name="wms2" type="b2602c69:ProjectViewProjectNode" />  
297 - <item name="wms2" type="462c0819:PsiDirectoryNode" />  
298 - <item name="src" type="462c0819:PsiDirectoryNode" />  
299 - <item name="main" type="462c0819:PsiDirectoryNode" />  
300 - <item name="java" type="462c0819:PsiDirectoryNode" />  
301 - <item name="com" type="462c0819:PsiDirectoryNode" />  
302 - <item name="huaheng" type="462c0819:PsiDirectoryNode" />  
303 - <item name="pc" type="462c0819:PsiDirectoryNode" />  
304 - <item name="inventory" type="462c0819:PsiDirectoryNode" />  
305 - <item name="inventoryTransaction" type="462c0819:PsiDirectoryNode" />  
306 - </path>  
307 - <path>  
308 - <item name="wms2" type="b2602c69:ProjectViewProjectNode" />  
309 - <item name="wms2" type="462c0819:PsiDirectoryNode" />  
310 - <item name="src" type="462c0819:PsiDirectoryNode" />  
311 - <item name="main" type="462c0819:PsiDirectoryNode" />  
312 - <item name="java" type="462c0819:PsiDirectoryNode" />  
313 - <item name="com" type="462c0819:PsiDirectoryNode" />  
314 - <item name="huaheng" type="462c0819:PsiDirectoryNode" />  
315 - <item name="pc" type="462c0819:PsiDirectoryNode" />  
316 - <item name="inventory" type="462c0819:PsiDirectoryNode" />  
317 - <item name="inventoryTransaction" type="462c0819:PsiDirectoryNode" />  
318 - <item name="controller" type="462c0819:PsiDirectoryNode" />  
319 - </path>  
320 - <path>  
321 - <item name="wms2" type="b2602c69:ProjectViewProjectNode" />  
322 - <item name="wms2" type="462c0819:PsiDirectoryNode" />  
323 - <item name="src" type="462c0819:PsiDirectoryNode" />  
324 - <item name="main" type="462c0819:PsiDirectoryNode" />  
325 - <item name="resources" type="462c0819:PsiDirectoryNode" />  
326 - </path>  
327 - <path>  
328 - <item name="wms2" type="b2602c69:ProjectViewProjectNode" />  
329 - <item name="wms2" type="462c0819:PsiDirectoryNode" />  
330 - <item name="src" type="462c0819:PsiDirectoryNode" />  
331 - <item name="main" type="462c0819:PsiDirectoryNode" />  
332 - <item name="resources" type="462c0819:PsiDirectoryNode" />  
333 - <item name="templates" type="462c0819:PsiDirectoryNode" />  
334 - </path>  
335 - <path>  
336 - <item name="wms2" type="b2602c69:ProjectViewProjectNode" />  
337 - <item name="wms2" type="462c0819:PsiDirectoryNode" />  
338 - <item name="src" type="462c0819:PsiDirectoryNode" />  
339 - <item name="main" type="462c0819:PsiDirectoryNode" />  
340 - <item name="resources" type="462c0819:PsiDirectoryNode" />  
341 - <item name="templates" type="462c0819:PsiDirectoryNode" />  
342 - <item name="config" type="462c0819:PsiDirectoryNode" />  
343 - </path>  
344 - <path>  
345 - <item name="wms2" type="b2602c69:ProjectViewProjectNode" />  
346 - <item name="wms2" type="462c0819:PsiDirectoryNode" />  
347 - <item name="src" type="462c0819:PsiDirectoryNode" />  
348 - <item name="main" type="462c0819:PsiDirectoryNode" />  
349 - <item name="resources" type="462c0819:PsiDirectoryNode" />  
350 - <item name="templates" type="462c0819:PsiDirectoryNode" />  
351 - <item name="config" type="462c0819:PsiDirectoryNode" />  
352 - <item name="material" type="462c0819:PsiDirectoryNode" /> 307 + <item name="mobile" type="462c0819:PsiDirectoryNode" />
  308 + <item name="receipt" type="462c0819:PsiDirectoryNode" />
353 </path> 309 </path>
354 <path> 310 <path>
355 <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> 311 <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
@@ -357,8 +313,6 @@ @@ -357,8 +313,6 @@
357 <item name="src" type="462c0819:PsiDirectoryNode" /> 313 <item name="src" type="462c0819:PsiDirectoryNode" />
358 <item name="main" type="462c0819:PsiDirectoryNode" /> 314 <item name="main" type="462c0819:PsiDirectoryNode" />
359 <item name="resources" type="462c0819:PsiDirectoryNode" /> 315 <item name="resources" type="462c0819:PsiDirectoryNode" />
360 - <item name="templates" type="462c0819:PsiDirectoryNode" />  
361 - <item name="inventory" type="462c0819:PsiDirectoryNode" />  
362 </path> 316 </path>
363 <path> 317 <path>
364 <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> 318 <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
@@ -366,14 +320,14 @@ @@ -366,14 +320,14 @@
366 <item name="src" type="462c0819:PsiDirectoryNode" /> 320 <item name="src" type="462c0819:PsiDirectoryNode" />
367 <item name="main" type="462c0819:PsiDirectoryNode" /> 321 <item name="main" type="462c0819:PsiDirectoryNode" />
368 <item name="resources" type="462c0819:PsiDirectoryNode" /> 322 <item name="resources" type="462c0819:PsiDirectoryNode" />
369 - <item name="templates" type="462c0819:PsiDirectoryNode" />  
370 - <item name="inventory" type="462c0819:PsiDirectoryNode" />  
371 - <item name="inventoryTransaction" type="462c0819:PsiDirectoryNode" /> 323 + <item name="mybatis" type="462c0819:PsiDirectoryNode" />
372 </path> 324 </path>
373 </expand> 325 </expand>
374 <select /> 326 <select />
375 </subPane> 327 </subPane>
376 </pane> 328 </pane>
  329 + <pane id="PackagesPane" />
  330 + <pane id="Scope" />
377 </panes> 331 </panes>
378 </component> 332 </component>
379 <component name="PropertiesComponent"> 333 <component name="PropertiesComponent">
@@ -383,11 +337,12 @@ @@ -383,11 +337,12 @@
383 <property name="RequestMappingsPanelOrder1" value="1" /> 337 <property name="RequestMappingsPanelOrder1" value="1" />
384 <property name="RequestMappingsPanelWidth0" value="75" /> 338 <property name="RequestMappingsPanelWidth0" value="75" />
385 <property name="RequestMappingsPanelWidth1" value="75" /> 339 <property name="RequestMappingsPanelWidth1" value="75" />
  340 + <property name="SearchEverywhereHistoryKey" value="Shiro&#9;PSI&#9;JAVA://com.huaheng.framework.config.ShiroConfig&#10;LocationSer&#9;PSI&#9;JAVA://com.huaheng.pc.config.location.service.LocationService" />
386 <property name="WebServerToolWindowFactoryState" value="false" /> 341 <property name="WebServerToolWindowFactoryState" value="false" />
387 <property name="aspect.path.notification.shown" value="true" /> 342 <property name="aspect.path.notification.shown" value="true" />
388 - <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1578455422696" /> 343 + <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1579247661958" />
389 <property name="full.screen.before.presentation.mode" value="false" /> 344 <property name="full.screen.before.presentation.mode" value="false" />
390 - <property name="last_opened_file_path" value="$PROJECT_DIR$/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable" /> 345 + <property name="last_opened_file_path" value="$PROJECT_DIR$" />
391 <property name="node.js.detected.package.eslint" value="true" /> 346 <property name="node.js.detected.package.eslint" value="true" />
392 <property name="node.js.detected.package.tslint" value="true" /> 347 <property name="node.js.detected.package.tslint" value="true" />
393 <property name="node.js.path.for.package.eslint" value="project" /> 348 <property name="node.js.path.for.package.eslint" value="project" />
@@ -402,17 +357,22 @@ @@ -402,17 +357,22 @@
402 <property name="settings.editor.selected.configurable" value="preferences.pluginManager" /> 357 <property name="settings.editor.selected.configurable" value="preferences.pluginManager" />
403 </component> 358 </component>
404 <component name="RecentsManager"> 359 <component name="RecentsManager">
405 - <key name="MoveFile.RECENT_KEYS">  
406 - <recent name="E:\code\wms2\src\main\resources\templates\config\configWarning" /> 360 + <key name="CopyFile.RECENT_KEYS">
  361 + <recent name="E:\web\wms2\src\main\resources\mybatis\download" />
  362 + <recent name="E:\web\wms2\src\main\java\com\huaheng\mobile\download" />
  363 + <recent name="E:\web\wms2\src\main\java\com\huaheng" />
  364 + <recent name="D:\wms2\src\main\resources\templates\shipment\shipmentHeader" />
  365 + <recent name="D:\wms2\src\main\resources\templates\config\material" />
407 </key> 366 </key>
408 <key name="CopyClassDialog.RECENTS_KEY"> 367 <key name="CopyClassDialog.RECENTS_KEY">
409 - <recent name="com.huaheng.api.general.domain" /> 368 + <recent name="com.huaheng.pc.common.mapper" />
  369 + <recent name="com.huaheng.mobile.download" />
  370 + <recent name="com.huaheng.pc.receipt.receiptContainerHeader.domain" />
  371 + <recent name="com.huaheng.pc.task.taskHeader.domain" />
  372 + <recent name="com.huaheng.api.general.service" />
410 </key> 373 </key>
411 - <key name="CopyFile.RECENT_KEYS">  
412 - <recent name="D:\wms2\src\main\resources\templates\config\material" />  
413 - <recent name="D:\wms2\src\main\resources\templates\config\location" />  
414 - <recent name="D:\wms2\src\main\resources\templates\config\container" />  
415 - <recent name="E:\code\wms2\src\main\resources\static\ajax\libs\bootstrap-table\extensions\editable" /> 374 + <key name="MoveFile.RECENT_KEYS">
  375 + <recent name="E:\code\wms2\src\main\resources\templates\config\configWarning" />
416 </key> 376 </key>
417 </component> 377 </component>
418 <component name="RunAnythingCache"> 378 <component name="RunAnythingCache">
@@ -438,7 +398,7 @@ @@ -438,7 +398,7 @@
438 </option> 398 </option>
439 <option name="contentProportion" value="0.012987013" /> 399 <option name="contentProportion" value="0.012987013" />
440 </component> 400 </component>
441 - <component name="RunManager" selected="Spring Boot.HuaHengApplication (1)"> 401 + <component name="RunManager" selected="Spring Boot.HuaHengApplication">
442 <configuration name="EncryptPassword" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true"> 402 <configuration name="EncryptPassword" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
443 <option name="MAIN_CLASS_NAME" value="com.huaheng.test.EncryptPassword" /> 403 <option name="MAIN_CLASS_NAME" value="com.huaheng.test.EncryptPassword" />
444 <module name="huaheng" /> 404 <module name="huaheng" />
@@ -448,9 +408,6 @@ @@ -448,9 +408,6 @@
448 <option name="ENABLED" value="true" /> 408 <option name="ENABLED" value="true" />
449 </pattern> 409 </pattern>
450 </extension> 410 </extension>
451 - <method v="2">  
452 - <option name="Make" enabled="true" />  
453 - </method>  
454 </configuration> 411 </configuration>
455 <configuration name="MqTest.send" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true"> 412 <configuration name="MqTest.send" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
456 <module name="huaheng" /> 413 <module name="huaheng" />
@@ -460,13 +417,20 @@ @@ -460,13 +417,20 @@
460 <option name="ENABLED" value="true" /> 417 <option name="ENABLED" value="true" />
461 </pattern> 418 </pattern>
462 </extension> 419 </extension>
  420 + <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
  421 + <option name="ALTERNATIVE_JRE_PATH" />
463 <option name="PACKAGE_NAME" value="com.huaheng.test" /> 422 <option name="PACKAGE_NAME" value="com.huaheng.test" />
464 <option name="MAIN_CLASS_NAME" value="com.huaheng.test.MqTest" /> 423 <option name="MAIN_CLASS_NAME" value="com.huaheng.test.MqTest" />
465 <option name="METHOD_NAME" value="send" /> 424 <option name="METHOD_NAME" value="send" />
466 <option name="TEST_OBJECT" value="method" /> 425 <option name="TEST_OBJECT" value="method" />
467 - <method v="2">  
468 - <option name="Make" enabled="true" />  
469 - </method> 426 + <option name="VM_PARAMETERS" />
  427 + <option name="PARAMETERS" />
  428 + <option name="WORKING_DIRECTORY" />
  429 + <option name="PASS_PARENT_ENVS" value="true" />
  430 + <option name="TEST_SEARCH_SCOPE">
  431 + <value defaultName="singleModule" />
  432 + </option>
  433 + <patterns />
470 </configuration> 434 </configuration>
471 <configuration name="ServiceTest.sendSimpleMail" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true"> 435 <configuration name="ServiceTest.sendSimpleMail" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
472 <module name="huaheng" /> 436 <module name="huaheng" />
@@ -476,13 +440,20 @@ @@ -476,13 +440,20 @@
476 <option name="ENABLED" value="true" /> 440 <option name="ENABLED" value="true" />
477 </pattern> 441 </pattern>
478 </extension> 442 </extension>
  443 + <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
  444 + <option name="ALTERNATIVE_JRE_PATH" />
479 <option name="PACKAGE_NAME" value="com.huaheng.test" /> 445 <option name="PACKAGE_NAME" value="com.huaheng.test" />
480 <option name="MAIN_CLASS_NAME" value="com.huaheng.test.ServiceTest" /> 446 <option name="MAIN_CLASS_NAME" value="com.huaheng.test.ServiceTest" />
481 <option name="METHOD_NAME" value="sendSimpleMail" /> 447 <option name="METHOD_NAME" value="sendSimpleMail" />
482 <option name="TEST_OBJECT" value="method" /> 448 <option name="TEST_OBJECT" value="method" />
483 - <method v="2">  
484 - <option name="Make" enabled="true" />  
485 - </method> 449 + <option name="VM_PARAMETERS" />
  450 + <option name="PARAMETERS" />
  451 + <option name="WORKING_DIRECTORY" />
  452 + <option name="PASS_PARENT_ENVS" value="true" />
  453 + <option name="TEST_SEARCH_SCOPE">
  454 + <value defaultName="singleModule" />
  455 + </option>
  456 + <patterns />
486 </configuration> 457 </configuration>
487 <configuration name="HuaHengApplication (1)" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true"> 458 <configuration name="HuaHengApplication (1)" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true">
488 <module name="wms2" /> 459 <module name="wms2" />
@@ -493,9 +464,6 @@ @@ -493,9 +464,6 @@
493 </pattern> 464 </pattern>
494 </extension> 465 </extension>
495 <option name="SPRING_BOOT_MAIN_CLASS" value="com.huaheng.HuaHengApplication" /> 466 <option name="SPRING_BOOT_MAIN_CLASS" value="com.huaheng.HuaHengApplication" />
496 - <method v="2">  
497 - <option name="Make" enabled="true" />  
498 - </method>  
499 </configuration> 467 </configuration>
500 <configuration name="HuaHengApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true"> 468 <configuration name="HuaHengApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true">
501 <module name="huaheng" /> 469 <module name="huaheng" />
@@ -509,9 +477,6 @@ @@ -509,9 +477,6 @@
509 <option name="ALTERNATIVE_JRE_PATH" /> 477 <option name="ALTERNATIVE_JRE_PATH" />
510 <option name="UPDATE_ACTION_UPDATE_POLICY" value="UpdateResources" /> 478 <option name="UPDATE_ACTION_UPDATE_POLICY" value="UpdateResources" />
511 <option name="FRAME_DEACTIVATION_UPDATE_POLICY" value="UpdateClassesAndResources" /> 479 <option name="FRAME_DEACTIVATION_UPDATE_POLICY" value="UpdateClassesAndResources" />
512 - <method v="2">  
513 - <option name="Make" enabled="true" />  
514 - </method>  
515 </configuration> 480 </configuration>
516 <list> 481 <list>
517 <item itemvalue="Application.EncryptPassword" /> 482 <item itemvalue="Application.EncryptPassword" />
@@ -522,8 +487,8 @@ @@ -522,8 +487,8 @@
522 </list> 487 </list>
523 <recent_temporary> 488 <recent_temporary>
524 <list> 489 <list>
525 - <item itemvalue="Spring Boot.HuaHengApplication (1)" />  
526 <item itemvalue="Spring Boot.HuaHengApplication" /> 490 <item itemvalue="Spring Boot.HuaHengApplication" />
  491 + <item itemvalue="Spring Boot.HuaHengApplication (1)" />
527 <item itemvalue="JUnit.ServiceTest.sendSimpleMail" /> 492 <item itemvalue="JUnit.ServiceTest.sendSimpleMail" />
528 <item itemvalue="JUnit.MqTest.send" /> 493 <item itemvalue="JUnit.MqTest.send" />
529 <item itemvalue="Application.EncryptPassword" /> 494 <item itemvalue="Application.EncryptPassword" />
@@ -742,14 +707,17 @@ @@ -742,14 +707,17 @@
742 <workItem from="1578293993555" duration="9808000" /> 707 <workItem from="1578293993555" duration="9808000" />
743 <workItem from="1578358115196" duration="1507000" /> 708 <workItem from="1578358115196" duration="1507000" />
744 <workItem from="1578379653786" duration="11257000" /> 709 <workItem from="1578379653786" duration="11257000" />
745 - <workItem from="1578444006015" duration="7109000" />  
746 - </task>  
747 - <task id="LOCAL-00026" summary="添加自动生成容器编码">  
748 - <created>1569484931952</created>  
749 - <option name="number" value="00026" />  
750 - <option name="presentableId" value="LOCAL-00026" />  
751 - <option name="project" value="LOCAL" />  
752 - <updated>1569484931952</updated> 710 + <workItem from="1578444006015" duration="19976000" />
  711 + <workItem from="1578529843067" duration="14401000" />
  712 + <workItem from="1578563682646" duration="32000" />
  713 + <workItem from="1578620227025" duration="6145000" />
  714 + <workItem from="1578880033342" duration="15319000" />
  715 + <workItem from="1578962187281" duration="17339000" />
  716 + <workItem from="1579048372056" duration="1299000" />
  717 + <workItem from="1579135252936" duration="19097000" />
  718 + <workItem from="1579221601177" duration="15358000" />
  719 + <workItem from="1582509082347" duration="14821000" />
  720 + <workItem from="1582590353002" duration="16210000" />
753 </task> 721 </task>
754 <task id="LOCAL-00027" summary="修改入库首选项页面,规则查询使用数据字典值,表格值显示修改"> 722 <task id="LOCAL-00027" summary="修改入库首选项页面,规则查询使用数据字典值,表格值显示修改">
755 <created>1569553028716</created> 723 <created>1569553028716</created>
@@ -1087,50 +1055,58 @@ @@ -1087,50 +1055,58 @@
1087 <option name="project" value="LOCAL" /> 1055 <option name="project" value="LOCAL" />
1088 <updated>1578455348001</updated> 1056 <updated>1578455348001</updated>
1089 </task> 1057 </task>
1090 - <option name="localTasksCounter" value="75" /> 1058 + <task id="LOCAL-00075" summary="物料打印">
  1059 + <created>1578455439194</created>
  1060 + <option name="number" value="00075" />
  1061 + <option name="presentableId" value="LOCAL-00075" />
  1062 + <option name="project" value="LOCAL" />
  1063 + <updated>1578455439194</updated>
  1064 + </task>
  1065 + <option name="localTasksCounter" value="76" />
1091 <servers /> 1066 <servers />
1092 </component> 1067 </component>
1093 <component name="TimeTrackingManager"> 1068 <component name="TimeTrackingManager">
1094 - <option name="totallyTimeSpent" value="158484000" /> 1069 + <option name="totallyTimeSpent" value="291372000" />
1095 </component> 1070 </component>
1096 <component name="ToolWindowManager"> 1071 <component name="ToolWindowManager">
1097 <frame x="-7" y="-7" width="1550" height="838" extended-state="6" /> 1072 <frame x="-7" y="-7" width="1550" height="838" extended-state="6" />
1098 - <editor active="true" />  
1099 <layout> 1073 <layout>
1100 - <window_info content_ui="combo" id="Project" order="0" sideWeight="0.4978903" visible="true" weight="0.23391421" />  
1101 - <window_info id="Structure" order="1" side_tool="true" weight="0.25" />  
1102 - <window_info id="Designer" order="2" />  
1103 - <window_info id="Image Layers" order="3" /> 1074 + <window_info anchor="right" id="Palette" order="4" />
  1075 + <window_info anchor="bottom" id="Event Log" order="10" sideWeight="0.08847185" side_tool="true" weight="0.43909347" />
  1076 + <window_info anchor="right" id="Maven Projects" order="5" weight="0.3297587" />
  1077 + <window_info anchor="bottom" id="Database Changes" order="12" />
1104 <window_info id="Capture Tool" order="4" /> 1078 <window_info id="Capture Tool" order="4" />
  1079 + <window_info id="Designer" order="2" />
  1080 + <window_info anchor="bottom" id="Statistic" order="11" />
  1081 + <window_info anchor="right" id="Database" order="6" />
  1082 + <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
  1083 + <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
1105 <window_info id="UI Designer" order="5" /> 1084 <window_info id="UI Designer" order="5" />
1106 - <window_info id="Favorites" order="6" sideWeight="0.5021097" side_tool="true" weight="0.308311" />  
1107 - <window_info id="Web" order="7" side_tool="true" />  
1108 - <window_info anchor="bottom" id="Message" order="0" />  
1109 - <window_info anchor="bottom" id="Find" order="1" />  
1110 - <window_info anchor="bottom" id="Run" order="2" />  
1111 <window_info anchor="bottom" id="Debug" order="3" weight="0.4" /> 1085 <window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
1112 - <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />  
1113 - <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />  
1114 <window_info anchor="bottom" id="TODO" order="6" /> 1086 <window_info anchor="bottom" id="TODO" order="6" />
  1087 + <window_info anchor="bottom" id="Messages" order="15" sideWeight="0.49932975" weight="0.3281027" />
  1088 + <window_info anchor="right" id="Palette&#9;" order="7" />
  1089 + <window_info id="Image Layers" order="3" />
  1090 + <window_info anchor="bottom" id="Java Enterprise" order="11" />
  1091 + <window_info anchor="right" id="Capture Analysis" order="5" />
  1092 + <window_info active="true" anchor="bottom" id="Run Dashboard" order="14" sideWeight="0.91152817" visible="true" weight="0.33808845" />
  1093 + <window_info anchor="bottom" id="Version Control" order="13" sideWeight="0.91152817" weight="0.32719547" />
  1094 + <window_info anchor="bottom" id="Run" order="2" />
1115 <window_info anchor="bottom" id="Spring" order="7" /> 1095 <window_info anchor="bottom" id="Spring" order="7" />
1116 <window_info anchor="bottom" id="Terminal" order="8" /> 1096 <window_info anchor="bottom" id="Terminal" order="8" />
1117 - <window_info anchor="bottom" id="Docker" order="9" show_stripe_button="false" />  
1118 - <window_info anchor="bottom" id="Event Log" order="10" sideWeight="0.09048257" side_tool="true" weight="0.44192636" />  
1119 - <window_info anchor="bottom" id="Java Enterprise" order="11" />  
1120 - <window_info anchor="bottom" id="Database Changes" order="12" />  
1121 - <window_info anchor="bottom" id="Version Control" order="13" sideWeight="0.91152817" weight="0.3281471" />  
1122 - <window_info active="true" anchor="bottom" id="Run Dashboard" order="14" sideWeight="0.9095174" visible="true" weight="0.43342775" />  
1123 - <window_info anchor="bottom" id="Messages" order="15" sideWeight="0.49932975" weight="0.3286119" /> 1097 + <window_info content_ui="combo" id="Project" order="0" sideWeight="0.4978903" visible="true" weight="0.3069705" />
  1098 + <window_info anchor="right" id="Bean Validation" order="9" weight="0.3297587" />
  1099 + <window_info id="Web" order="7" side_tool="true" />
  1100 + <window_info anchor="bottom" id="Find" order="1" weight="0.32952926" />
  1101 + <window_info anchor="right" id="Theme Preview" order="8" />
  1102 + <window_info id="Favorites" order="6" sideWeight="0.5021097" side_tool="true" weight="0.308311" />
  1103 + <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
1124 <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" /> 1104 <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
1125 - <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />  
1126 - <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" /> 1105 + <window_info anchor="bottom" id="Docker" order="9" show_stripe_button="false" />
  1106 + <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
  1107 + <window_info anchor="bottom" id="Message" order="0" />
1127 <window_info anchor="right" id="Maven" order="3" weight="0.3297587" /> 1108 <window_info anchor="right" id="Maven" order="3" weight="0.3297587" />
1128 - <window_info anchor="right" id="Palette" order="4" />  
1129 - <window_info anchor="right" id="Capture Analysis" order="5" />  
1130 - <window_info anchor="right" id="Database" order="6" />  
1131 - <window_info anchor="right" id="Palette&#9;" order="7" />  
1132 - <window_info anchor="right" id="Theme Preview" order="8" />  
1133 - <window_info anchor="right" id="Bean Validation" order="9" weight="0.3297587" /> 1109 + <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
1134 </layout> 1110 </layout>
1135 </component> 1111 </component>
1136 <component name="TypeScriptGeneratedFilesManager"> 1112 <component name="TypeScriptGeneratedFilesManager">
@@ -1154,20 +1130,9 @@ @@ -1154,20 +1130,9 @@
1154 </entry> 1130 </entry>
1155 </map> 1131 </map>
1156 </option> 1132 </option>
1157 - <option name="RECENT_FILTERS">  
1158 - <map>  
1159 - <entry key="Branch">  
1160 - <value>  
1161 - <list />  
1162 - </value>  
1163 - </entry>  
1164 - <entry key="User">  
1165 - <value>  
1166 - <list />  
1167 - </value>  
1168 - </entry>  
1169 - </map>  
1170 - </option> 1133 + </component>
  1134 + <component name="VcsContentAnnotationSettings">
  1135 + <option name="myLimit" value="2678400000" />
1171 </component> 1136 </component>
1172 <component name="VcsManagerConfiguration"> 1137 <component name="VcsManagerConfiguration">
1173 <MESSAGE value="修改接口实体类" /> 1138 <MESSAGE value="修改接口实体类" />
@@ -1199,92 +1164,10 @@ @@ -1199,92 +1164,10 @@
1199 </component> 1164 </component>
1200 <component name="XDebuggerManager"> 1165 <component name="XDebuggerManager">
1201 <breakpoint-manager> 1166 <breakpoint-manager>
1202 - <breakpoints>  
1203 - <line-breakpoint enabled="true" type="java-line">  
1204 - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/bom/controller/BomHeaderController.java</url>  
1205 - <line>164</line>  
1206 - <properties />  
1207 - <option name="timeStamp" value="24" />  
1208 - </line-breakpoint>  
1209 - <line-breakpoint enabled="true" type="java-line">  
1210 - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkingRegister/controller/CheckingRegisterController.java</url>  
1211 - <line>179</line>  
1212 - <properties />  
1213 - <option name="timeStamp" value="28" />  
1214 - </line-breakpoint>  
1215 - <line-breakpoint enabled="true" type="java-line">  
1216 - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/configValue/controller/ConfigValueController.java</url>  
1217 - <line>141</line>  
1218 - <properties />  
1219 - <option name="timeStamp" value="66" />  
1220 - </line-breakpoint>  
1221 - <line-breakpoint enabled="true" type="java-line">  
1222 - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java</url>  
1223 - <line>190</line>  
1224 - <properties />  
1225 - <option name="timeStamp" value="87" />  
1226 - </line-breakpoint>  
1227 - <line-breakpoint enabled="true" type="java-line">  
1228 - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java</url>  
1229 - <line>194</line>  
1230 - <properties>  
1231 - <option name="lambda-ordinal" value="-1" />  
1232 - </properties>  
1233 - <option name="timeStamp" value="112" />  
1234 - </line-breakpoint>  
1235 - <line-breakpoint enabled="true" type="java-line">  
1236 - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java</url>  
1237 - <line>107</line>  
1238 - <properties />  
1239 - <option name="timeStamp" value="121" />  
1240 - </line-breakpoint>  
1241 - <line-breakpoint enabled="true" type="java-line">  
1242 - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/configWarning/service/ConfigWarningService.java</url>  
1243 - <line>110</line>  
1244 - <properties />  
1245 - <option name="timeStamp" value="124" />  
1246 - </line-breakpoint>  
1247 - <line-breakpoint enabled="true" type="java-line">  
1248 - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/configWarning/service/ConfigWarningService.java</url>  
1249 - <line>140</line>  
1250 - <properties />  
1251 - <option name="timeStamp" value="125" />  
1252 - </line-breakpoint>  
1253 - <line-breakpoint enabled="true" type="java-line">  
1254 - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/configWarning/service/ConfigWarningService.java</url>  
1255 - <line>118</line>  
1256 - <properties />  
1257 - <option name="timeStamp" value="126" />  
1258 - </line-breakpoint>  
1259 - <line-breakpoint enabled="true" type="java-line">  
1260 - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/configWarning/service/ConfigWarningService.java</url>  
1261 - <line>109</line>  
1262 - <properties />  
1263 - <option name="timeStamp" value="127" />  
1264 - </line-breakpoint>  
1265 - <line-breakpoint enabled="true" type="java-line">  
1266 - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java</url>  
1267 - <line>709</line>  
1268 - <properties />  
1269 - <option name="timeStamp" value="135" />  
1270 - </line-breakpoint>  
1271 - <line-breakpoint enabled="true" type="java-line">  
1272 - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/ReceiptHeaderController.java</url>  
1273 - <line>198</line>  
1274 - <properties />  
1275 - <option name="timeStamp" value="139" />  
1276 - </line-breakpoint>  
1277 - <line-breakpoint enabled="true" type="javascript">  
1278 - <url>file://$PROJECT_DIR$/src/main/resources/templates/check/checkingRegister/checkingRegister.html</url>  
1279 - <line>308</line>  
1280 - <option name="timeStamp" value="29" />  
1281 - </line-breakpoint>  
1282 - <line-breakpoint enabled="true" type="javascript">  
1283 - <url>file://$PROJECT_DIR$/src/main/resources/templates/config/waveFlowHeader/waveFlowHeader.html</url>  
1284 - <line>71</line>  
1285 - <option name="timeStamp" value="43" />  
1286 - </line-breakpoint>  
1287 - </breakpoints> 1167 + <breakpoints-dialog>
  1168 + <breakpoints-dialog />
  1169 + </breakpoints-dialog>
  1170 + <option name="time" value="8" />
1288 </breakpoint-manager> 1171 </breakpoint-manager>
1289 <watches-manager> 1172 <watches-manager>
1290 <configuration name="SpringBootApplicationConfigurationType"> 1173 <configuration name="SpringBootApplicationConfigurationType">
@@ -1298,399 +1181,351 @@ @@ -1298,399 +1181,351 @@
1298 </SUITE> 1181 </SUITE>
1299 </component> 1182 </component>
1300 <component name="editorHistoryManager"> 1183 <component name="editorHistoryManager">
1301 - <entry file="file://$PROJECT_DIR$/src/main/resources/static/js/qrcode/qrcode.min.js"> 1184 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java">
1302 <provider selected="true" editor-type-id="text-editor"> 1185 <provider selected="true" editor-type-id="text-editor">
1303 - <state>  
1304 - <caret column="4" selection-start-column="4" selection-end-column="4" /> 1186 + <state relative-caret-position="268">
  1187 + <caret line="63" column="34" selection-start-line="63" selection-start-column="15" selection-end-line="63" selection-end-column="34" />
1305 </state> 1188 </state>
1306 </provider> 1189 </provider>
1307 </entry> 1190 </entry>
1308 - <entry file="file://$PROJECT_DIR$/src/main/resources/templates/receipt/receiptHeader/receiptHeader.html"> 1191 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java">
1309 <provider selected="true" editor-type-id="text-editor"> 1192 <provider selected="true" editor-type-id="text-editor">
1310 - <state relative-caret-position="152">  
1311 - <caret line="675" column="43" lean-forward="true" selection-start-line="675" selection-start-column="43" selection-end-line="675" selection-end-column="43" /> 1193 + <state relative-caret-position="28823">
  1194 + <caret line="1593" column="40" selection-start-line="1593" selection-start-column="40" selection-end-line="1593" selection-end-column="40" />
1312 </state> 1195 </state>
1313 </provider> 1196 </provider>
1314 </entry> 1197 </entry>
1315 - <entry file="file://$PROJECT_DIR$/src/main/resources/templates/receipt/receiptHeader/add.html"> 1198 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/mobile/receipt/MaterialInfo.java">
1316 <provider selected="true" editor-type-id="text-editor"> 1199 <provider selected="true" editor-type-id="text-editor">
1317 - <state relative-caret-position="-962" /> 1200 + <state relative-caret-position="57">
  1201 + <caret line="3" column="2" lean-forward="true" selection-start-line="3" selection-start-column="2" selection-end-line="3" selection-end-column="2" />
  1202 + </state>
1318 </provider> 1203 </provider>
1319 </entry> 1204 </entry>
1320 - <entry file="file://$USER_HOME$/Desktop/长沙华恒企网2.0_new/答题HTML/答题HTML/answer.html"> 1205 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/mobile/receipt/MobilePutawayController.java">
1321 <provider selected="true" editor-type-id="text-editor"> 1206 <provider selected="true" editor-type-id="text-editor">
1322 - <state relative-caret-position="-171" /> 1207 + <state relative-caret-position="513">
  1208 + <caret line="46" column="7" selection-start-line="46" selection-start-column="7" selection-end-line="46" selection-end-column="7" />
  1209 + </state>
1323 </provider> 1210 </provider>
1324 </entry> 1211 </entry>
1325 - <entry file="jar://$MAVEN_REPOSITORY$/com/alibaba/druid/1.1.18/druid-1.1.18.jar!/support/http/resources/css/bootstrap.min.css"> 1212 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/mobile/shipment/MobileShipmentController.java">
1326 <provider selected="true" editor-type-id="text-editor"> 1213 <provider selected="true" editor-type-id="text-editor">
1327 - <state relative-caret-position="152">  
1328 - <caret line="8" column="25402" selection-start-line="8" selection-start-column="25402" selection-end-line="8" selection-end-column="25402" /> 1214 + <state relative-caret-position="950">
  1215 + <caret line="76" column="69" selection-start-line="76" selection-start-column="69" selection-end-line="76" selection-end-column="69" />
1329 </state> 1216 </state>
1330 </provider> 1217 </provider>
1331 </entry> 1218 </entry>
1332 - <entry file="file://$PROJECT_DIR$/src/main/resources/static/css/main/style.min862f.css"> 1219 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/mobile/shipment/MobileTaskForASRSController.java">
1333 <provider selected="true" editor-type-id="text-editor"> 1220 <provider selected="true" editor-type-id="text-editor">
1334 - <state>  
1335 - <caret column="49663" selection-start-column="49663" selection-end-column="49663" /> 1221 + <state relative-caret-position="399">
  1222 + <caret line="35" column="16" selection-start-line="35" selection-start-column="16" selection-end-line="35" selection-end-column="16" />
1336 </state> 1223 </state>
1337 </provider> 1224 </provider>
1338 </entry> 1225 </entry>
1339 - <entry file="file://$PROJECT_DIR$/src/main/resources/static/css/bootstrap.min.css"> 1226 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/service/MaterialService.java">
1340 <provider selected="true" editor-type-id="text-editor"> 1227 <provider selected="true" editor-type-id="text-editor">
1341 - <state relative-caret-position="127">  
1342 - <caret line="2721" column="1" selection-start-line="2721" selection-start-column="1" selection-end-line="2721" selection-end-column="1" /> 1228 + <state relative-caret-position="589">
  1229 + <caret line="36" selection-start-line="36" selection-end-line="36" />
1343 </state> 1230 </state>
1344 </provider> 1231 </provider>
1345 </entry> 1232 </entry>
1346 - <entry file="file://$PROJECT_DIR$/src/main/resources/static/css/style.css"> 1233 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/mobile/wcsScanBarcode/WcsScanBarcodeController.java" />
  1234 + <entry file="file://$PROJECT_DIR$/src/main/resources/application-prd.yml">
1347 <provider selected="true" editor-type-id="text-editor"> 1235 <provider selected="true" editor-type-id="text-editor">
1348 - <state relative-caret-position="241">  
1349 - <caret line="3360" column="17" lean-forward="true" selection-start-line="3360" selection-start-column="17" selection-end-line="3360" selection-end-column="17" /> 1236 + <state relative-caret-position="209">
  1237 + <caret line="11" column="10" selection-start-line="11" selection-start-column="10" selection-end-line="11" selection-end-column="10" />
1350 </state> 1238 </state>
1351 </provider> 1239 </provider>
1352 </entry> 1240 </entry>
1353 - <entry file="file://$PROJECT_DIR$/src/main/resources/templates/receipt/receiptHeader/report.html"> 1241 + <entry file="file://$PROJECT_DIR$/src/main/resources/application-dev.yml">
1354 <provider selected="true" editor-type-id="text-editor"> 1242 <provider selected="true" editor-type-id="text-editor">
1355 - <state relative-caret-position="1330">  
1356 - <caret line="70" column="4" lean-forward="true" selection-start-line="70" selection-start-column="4" selection-end-line="70" selection-end-column="22" />  
1357 - <folding>  
1358 - <element signature="n#style#0;n#span#1;n#td#0;n#tr#0;n#thead#0;n#table#0;n#div#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1359 - </folding> 1243 + <state relative-caret-position="1292">
  1244 + <caret line="68" column="19" selection-start-line="68" selection-start-column="19" selection-end-line="68" selection-end-column="19" />
1360 </state> 1245 </state>
1361 </provider> 1246 </provider>
1362 </entry> 1247 </entry>
1363 - <entry file="file://$PROJECT_DIR$/src/main/resources/templates/config/container/print.html"> 1248 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/service/MaterialServiceImpl.java">
1364 <provider selected="true" editor-type-id="text-editor"> 1249 <provider selected="true" editor-type-id="text-editor">
1365 - <state relative-caret-position="551">  
1366 - <caret line="29" column="24" lean-forward="true" selection-start-line="29" selection-start-column="24" selection-end-line="29" selection-end-column="24" />  
1367 - <folding>  
1368 - <element signature="n#style#0;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1369 - <element signature="n#style#0;n#div#0;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1370 - <element signature="n#style#0;n#table#0;n#div#0;n#div#0;n#div#0;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1371 - <element signature="n#style#0;n#table#0;n#div#1;n#div#0;n#div#0;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1372 - </folding> 1250 + <state relative-caret-position="271">
  1251 + <caret line="160" column="5" selection-start-line="160" selection-start-column="5" selection-end-line="160" selection-end-column="5" />
1373 </state> 1252 </state>
1374 </provider> 1253 </provider>
1375 </entry> 1254 </entry>
1376 - <entry file="file://$USER_HOME$/Desktop/boot/boot/打印二维码 - 多个组2.html"> 1255 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/shipment/shippingCombination/domain/ShippingSearch.java">
1377 <provider selected="true" editor-type-id="text-editor"> 1256 <provider selected="true" editor-type-id="text-editor">
1378 - <state relative-caret-position="19">  
1379 - <caret line="47" column="36" selection-start-line="47" selection-start-column="36" selection-end-line="47" selection-end-column="36" /> 1257 + <state relative-caret-position="145">
  1258 + <caret line="46" column="18" selection-start-line="46" selection-start-column="18" selection-end-line="46" selection-end-column="18" />
1380 <folding> 1259 <folding>
1381 - <element signature="n#style#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1382 - <element signature="n#style#0;n#div#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1383 - <element signature="n#style#0;n#caption#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1384 - <element signature="n#style#0;n#td#1;n#tr#0;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1385 - <element signature="n#style#0;n#tr#1;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1386 - <element signature="n#style#0;n#td#1;n#tr#1;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1387 - <element signature="n#style#0;n#td#2;n#tr#1;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1388 - <element signature="n#style#0;n#img#0;n#td#2;n#tr#1;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1389 - <element signature="n#style#0;n#td#1;n#tr#2;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1390 - <element signature="n#style#0;n#td#1;n#tr#3;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1391 - <element signature="n#style#0;n#input#0;n#td#1;n#tr#3;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1392 - <element signature="n#style#0;n#caption#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1393 - <element signature="n#style#0;n#td#1;n#tr#0;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1394 - <element signature="n#style#0;n#tr#1;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1395 - <element signature="n#style#0;n#td#1;n#tr#1;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1396 - <element signature="n#style#0;n#td#2;n#tr#1;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1397 - <element signature="n#style#0;n#img#0;n#td#2;n#tr#1;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1398 - <element signature="n#style#0;n#td#1;n#tr#2;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1399 - <element signature="e#3995#4001#0" expanded="true" />  
1400 - <element signature="e#4001#4007#0" expanded="true" />  
1401 - <element signature="e#4007#4013#0" expanded="true" />  
1402 - <element signature="e#4013#4019#0" expanded="true" />  
1403 - <element signature="n#style#0;n#td#1;n#tr#3;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1404 - <element signature="n#style#0;n#input#0;n#td#1;n#tr#3;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> 1260 + <element signature="e#990#991#0" expanded="true" />
  1261 + <element signature="e#1024#1025#0" expanded="true" />
1405 </folding> 1262 </folding>
1406 </state> 1263 </state>
1407 </provider> 1264 </provider>
1408 </entry> 1265 </entry>
1409 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishServiceImpl.java"> 1266 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/mobile/general/MobileUserController.java">
1410 <provider selected="true" editor-type-id="text-editor"> 1267 <provider selected="true" editor-type-id="text-editor">
1411 - <state relative-caret-position="149">  
1412 - <caret line="27" column="22" selection-start-line="27" selection-start-column="22" selection-end-line="27" selection-end-column="22" /> 1268 + <state relative-caret-position="304">
  1269 + <caret line="111" column="5" selection-start-line="111" selection-start-column="5" selection-end-line="111" selection-end-column="5" />
1413 </state> 1270 </state>
1414 </provider> 1271 </provider>
1415 </entry> 1272 </entry>
1416 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishService.java">  
1417 - <provider selected="true" editor-type-id="text-editor">  
1418 - <state relative-caret-position="133">  
1419 - <caret line="8" column="15" selection-start-line="8" selection-start-column="15" selection-end-line="8" selection-end-column="15" />  
1420 - </state>  
1421 - </provider> 1273 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/mobile/download/ret/RetCode.java">
  1274 + <provider selected="true" editor-type-id="text-editor" />
1422 </entry> 1275 </entry>
1423 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/wcs/controller/EmptyOutHandle.java">  
1424 - <provider selected="true" editor-type-id="text-editor">  
1425 - <state relative-caret-position="149">  
1426 - <caret line="24" column="13" selection-start-line="24" selection-start-column="13" selection-end-line="24" selection-end-column="13" />  
1427 - </state>  
1428 - </provider> 1276 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/mobile/download/ret/RetResponse.java">
  1277 + <provider selected="true" editor-type-id="text-editor" />
1429 </entry> 1278 </entry>
1430 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/wcs/controller/OverrideHandle.java"> 1279 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/mobile/download/ret/ServiceException.java">
1431 <provider selected="true" editor-type-id="text-editor"> 1280 <provider selected="true" editor-type-id="text-editor">
1432 - <state relative-caret-position="149">  
1433 - <caret line="23" column="13" selection-start-line="23" selection-start-column="13" selection-end-line="23" selection-end-column="13" />  
1434 - </state>  
1435 - </provider>  
1436 - </entry>  
1437 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/wcs/controller/WarecellAllocation.java">  
1438 - <provider selected="true" editor-type-id="text-editor">  
1439 - <state relative-caret-position="-70">  
1440 - <caret line="41" column="67" selection-start-line="41" selection-start-column="60" selection-end-line="41" selection-end-column="67" /> 1281 + <state relative-caret-position="285">
  1282 + <caret line="19" column="1" lean-forward="true" selection-start-line="19" selection-start-column="1" selection-end-line="19" selection-end-column="1" />
1441 </state> 1283 </state>
1442 </provider> 1284 </provider>
1443 </entry> 1285 </entry>
1444 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelServiceImpl.java"> 1286 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/mobile/download/ret/RetResult.java">
1445 <provider selected="true" editor-type-id="text-editor"> 1287 <provider selected="true" editor-type-id="text-editor">
1446 - <state relative-caret-position="209">  
1447 - <caret line="19" column="11" selection-start-line="19" selection-start-column="7" selection-end-line="19" selection-end-column="11" /> 1288 + <state relative-caret-position="95">
  1289 + <caret line="7" column="13" selection-start-line="7" selection-start-column="13" selection-end-line="7" selection-end-column="13" />
1448 </state> 1290 </state>
1449 </provider> 1291 </provider>
1450 </entry> 1292 </entry>
1451 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelService.java"> 1293 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/mobile/download/Constant.java">
1452 <provider selected="true" editor-type-id="text-editor"> 1294 <provider selected="true" editor-type-id="text-editor">
1453 <state relative-caret-position="133"> 1295 <state relative-caret-position="133">
1454 - <caret line="7" column="15" selection-start-line="7" selection-start-column="15" selection-end-line="7" selection-end-column="15" /> 1296 + <caret line="7" selection-start-line="7" selection-end-line="7" />
1455 </state> 1297 </state>
1456 </provider> 1298 </provider>
1457 </entry> 1299 </entry>
1458 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/wcs/controller/TaskInfoController.java"> 1300 + <entry file="file://$PROJECT_DIR$/src/main/resources/application.yml">
1459 <provider selected="true" editor-type-id="text-editor"> 1301 <provider selected="true" editor-type-id="text-editor">
1460 - <state relative-caret-position="296">  
1461 - <caret line="24" column="34" lean-forward="true" selection-start-line="24" selection-start-column="34" selection-end-line="24" selection-end-column="34" /> 1302 + <state relative-caret-position="95">
  1303 + <caret line="5" column="3" selection-start-line="5" selection-start-column="3" selection-end-line="5" selection-end-column="3" />
1462 </state> 1304 </state>
1463 </provider> 1305 </provider>
1464 </entry> 1306 </entry>
1465 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/wcs/controller/TaskFinish.java"> 1307 + <entry file="file://$PROJECT_DIR$/src/main/resources/application-druid.properties">
1466 <provider selected="true" editor-type-id="text-editor"> 1308 <provider selected="true" editor-type-id="text-editor">
1467 - <state relative-caret-position="310">  
1468 - <caret line="35" column="59" lean-forward="true" selection-start-line="35" selection-start-column="59" selection-end-line="35" selection-end-column="59" /> 1309 + <state relative-caret-position="437">
  1310 + <caret line="23" column="15" selection-start-line="23" selection-start-column="15" selection-end-line="23" selection-end-column="15" />
1469 </state> 1311 </state>
1470 </provider> 1312 </provider>
1471 </entry> 1313 </entry>
1472 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/BasicDataApi.java"> 1314 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptDetail/domain/ReceiptDetail.java">
1473 <provider selected="true" editor-type-id="text-editor"> 1315 <provider selected="true" editor-type-id="text-editor">
1474 - <state relative-caret-position="291">  
1475 - <caret line="170" column="1" selection-start-line="170" selection-start-column="1" selection-end-line="170" selection-end-column="1" /> 1316 + <state relative-caret-position="-437">
  1317 + <caret line="15" column="13" selection-start-line="15" selection-start-column="13" selection-end-line="15" selection-end-column="13" />
1476 </state> 1318 </state>
1477 </provider> 1319 </provider>
1478 </entry> 1320 </entry>
1479 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/wcs/domain/WcsTask.java"> 1321 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java">
1480 <provider selected="true" editor-type-id="text-editor"> 1322 <provider selected="true" editor-type-id="text-editor">
1481 - <state relative-caret-position="149">  
1482 - <caret line="14" column="13" selection-start-line="14" selection-start-column="13" selection-end-line="14" selection-end-column="13" /> 1323 + <state relative-caret-position="494">
  1324 + <caret line="67" column="31" selection-start-line="67" selection-start-column="12" selection-end-line="67" selection-end-column="31" />
1483 </state> 1325 </state>
1484 </provider> 1326 </provider>
1485 </entry> 1327 </entry>
1486 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/ReceiptApiService.java"> 1328 + <entry file="file://$PROJECT_DIR$/src/main/resources/mybatis/task/TaskDetailMapper.xml">
1487 <provider selected="true" editor-type-id="text-editor"> 1329 <provider selected="true" editor-type-id="text-editor">
1488 - <state relative-caret-position="247">  
1489 - <caret line="44" column="13" selection-start-line="44" selection-start-column="13" selection-end-line="44" selection-end-column="13" /> 1330 + <state relative-caret-position="171">
  1331 + <caret line="9" column="32" lean-forward="true" selection-start-line="9" selection-start-column="32" selection-end-line="9" selection-end-column="32" />
1490 </state> 1332 </state>
1491 </provider> 1333 </provider>
1492 </entry> 1334 </entry>
1493 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/ReceiptController.java"> 1335 + <entry file="file://$PROJECT_DIR$/src/main/resources/mybatis/task/TaskHeaderMapper.xml">
1494 <provider selected="true" editor-type-id="text-editor"> 1336 <provider selected="true" editor-type-id="text-editor">
1495 - <state relative-caret-position="494">  
1496 - <caret line="35" column="51" selection-start-line="35" selection-start-column="51" selection-end-line="35" selection-end-column="51" /> 1337 + <state relative-caret-position="-95">
  1338 + <caret line="13" column="25" lean-forward="true" selection-start-line="13" selection-start-column="25" selection-end-line="13" selection-end-column="25" />
1497 </state> 1339 </state>
1498 </provider> 1340 </provider>
1499 </entry> 1341 </entry>
1500 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/ReceiptService.java"> 1342 + <entry file="file://$PROJECT_DIR$/src/main/resources/mybatis/task/TaskPreferenceMapper.xml">
1501 <provider selected="true" editor-type-id="text-editor"> 1343 <provider selected="true" editor-type-id="text-editor">
1502 - <state relative-caret-position="665">  
1503 - <caret line="64" column="42" selection-start-line="64" selection-start-column="33" selection-end-line="64" selection-end-column="42" />  
1504 - </state> 1344 + <state relative-caret-position="-342" />
1505 </provider> 1345 </provider>
1506 </entry> 1346 </entry>
1507 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/HuaHengServletInitializer.java"> 1347 + <entry file="file://$PROJECT_DIR$/src/main/resources/mybatis/system/DeptMapper.xml">
1508 <provider selected="true" editor-type-id="text-editor"> 1348 <provider selected="true" editor-type-id="text-editor">
1509 - <state relative-caret-position="150">  
1510 - <caret line="10" column="13" selection-start-line="10" selection-start-column="13" selection-end-line="10" selection-end-column="13" /> 1349 + <state relative-caret-position="266">
  1350 + <caret line="14" column="26" selection-start-line="14" selection-start-column="26" selection-end-line="14" selection-end-column="26" />
1511 </state> 1351 </state>
1512 </provider> 1352 </provider>
1513 </entry> 1353 </entry>
1514 - <entry file="file://$PROJECT_DIR$/src/main/resources/application-dev.yml"> 1354 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptDetail/mapper/ReceiptDetailMapper.java">
1515 <provider selected="true" editor-type-id="text-editor"> 1355 <provider selected="true" editor-type-id="text-editor">
1516 - <state relative-caret-position="189">  
1517 - <caret line="66" column="12" lean-forward="true" selection-start-line="66" selection-start-column="12" selection-end-line="66" selection-end-column="12" /> 1356 + <state relative-caret-position="76">
  1357 + <caret line="4" column="56" lean-forward="true" selection-start-line="4" selection-start-column="56" selection-end-line="4" selection-end-column="56" />
1518 </state> 1358 </state>
1519 </provider> 1359 </provider>
1520 </entry> 1360 </entry>
1521 - <entry file="file://$PROJECT_DIR$/src/main/resources/application.yml"> 1361 + <entry file="file://$PROJECT_DIR$/src/main/resources/mybatis/receipt/ReceiptDetailMapper.xml">
1522 <provider selected="true" editor-type-id="text-editor"> 1362 <provider selected="true" editor-type-id="text-editor">
1523 - <state relative-caret-position="-824" /> 1363 + <state relative-caret-position="-576">
  1364 + <caret line="70" column="5" lean-forward="true" selection-start-line="70" selection-start-column="5" selection-end-line="70" selection-end-column="5" />
  1365 + </state>
1524 </provider> 1366 </provider>
1525 </entry> 1367 </entry>
1526 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/HuaHengApplication.java"> 1368 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/mobile/invenory/MobileInventoryController.java">
1527 <provider selected="true" editor-type-id="text-editor"> 1369 <provider selected="true" editor-type-id="text-editor">
1528 - <state relative-caret-position="-26">  
1529 - <caret line="15" column="13" selection-start-line="15" selection-start-column="13" selection-end-line="15" selection-end-column="13" /> 1370 + <state relative-caret-position="157">
  1371 + <caret line="46" column="13" lean-forward="true" selection-start-line="46" selection-start-column="3" selection-end-line="46" selection-end-column="13" />
1530 </state> 1372 </state>
1531 </provider> 1373 </provider>
1532 </entry> 1374 </entry>
1533 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/inventory/adjustHeader/controller/adjustHeaderController.java"> 1375 + <entry file="file://$PROJECT_DIR$/src/main/resources/logback.xml">
1534 <provider selected="true" editor-type-id="text-editor"> 1376 <provider selected="true" editor-type-id="text-editor">
1535 - <state relative-caret-position="202">  
1536 - <caret line="156" lean-forward="true" selection-start-line="156" selection-end-line="156" /> 1377 + <state relative-caret-position="266">
  1378 + <caret line="14" column="17" lean-forward="true" selection-start-line="14" selection-start-column="17" selection-end-line="14" selection-end-column="17" />
1537 </state> 1379 </state>
1538 </provider> 1380 </provider>
1539 </entry> 1381 </entry>
1540 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/controller/CycleCountHeaderController.java"> 1382 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/mobile/download/mapper/ApkMapper.java">
1541 <provider selected="true" editor-type-id="text-editor"> 1383 <provider selected="true" editor-type-id="text-editor">
1542 - <state relative-caret-position="317">  
1543 - <caret line="71" selection-start-line="71" selection-end-line="71" /> 1384 + <state relative-caret-position="266">
  1385 + <caret line="22" selection-start-line="22" selection-end-line="23" />
1544 </state> 1386 </state>
1545 </provider> 1387 </provider>
1546 </entry> 1388 </entry>
1547 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkHeader/controller/CheckHeaderController.java"> 1389 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/framework/config/ShiroConfig.java">
1548 <provider selected="true" editor-type-id="text-editor"> 1390 <provider selected="true" editor-type-id="text-editor">
1549 - <state relative-caret-position="190">  
1550 - <caret line="38" column="13" selection-start-line="38" selection-start-column="13" selection-end-line="38" selection-end-column="13" /> 1391 + <state relative-caret-position="791">
  1392 + <caret line="267" column="71" lean-forward="true" selection-start-line="267" selection-start-column="71" selection-end-line="267" selection-end-column="71" />
1551 </state> 1393 </state>
1552 </provider> 1394 </provider>
1553 </entry> 1395 </entry>
1554 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/ReceiptApi.java"> 1396 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/mobile/invenory/MobileInventory.java">
1555 <provider selected="true" editor-type-id="text-editor"> 1397 <provider selected="true" editor-type-id="text-editor">
1556 - <state relative-caret-position="304">  
1557 - <caret line="25" column="7" selection-start-line="25" selection-start-column="7" selection-end-line="25" selection-end-column="7" /> 1398 + <state relative-caret-position="259">
  1399 + <caret line="18" column="15" lean-forward="true" selection-start-line="18" selection-start-column="15" selection-end-line="18" selection-end-column="15" />
1558 </state> 1400 </state>
1559 </provider> 1401 </provider>
1560 </entry> 1402 </entry>
1561 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/domain/ReceiptDomain.java"> 1403 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkDetail/mapper/CheckDetailMapper.java">
1562 <provider selected="true" editor-type-id="text-editor"> 1404 <provider selected="true" editor-type-id="text-editor">
1563 <state relative-caret-position="95"> 1405 <state relative-caret-position="95">
1564 - <caret line="10" column="13" selection-start-line="10" selection-start-column="13" selection-end-line="10" selection-end-column="13" /> 1406 + <caret line="6" column="1" lean-forward="true" selection-start-line="6" selection-start-column="1" selection-end-line="6" selection-end-column="1" />
1565 </state> 1407 </state>
1566 </provider> 1408 </provider>
1567 </entry> 1409 </entry>
1568 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/container/controller/ContainerController.java"> 1410 + <entry file="file://$PROJECT_DIR$/src/main/resources/mybatis/check/CheckHeaderMapper.xml">
1569 <provider selected="true" editor-type-id="text-editor"> 1411 <provider selected="true" editor-type-id="text-editor">
1570 - <state relative-caret-position="2812">  
1571 - <caret line="181" selection-start-line="181" selection-end-line="195" selection-end-column="5" /> 1412 + <state relative-caret-position="-57">
  1413 + <caret line="21" column="71" lean-forward="true" selection-start-line="21" selection-start-column="71" selection-end-line="21" selection-end-column="71" />
1572 </state> 1414 </state>
1573 </provider> 1415 </provider>
1574 </entry> 1416 </entry>
1575 - <entry file="file://$PROJECT_DIR$/src/main/resources/templates/config/container/container.html"> 1417 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkingRegister/mapper/CheckingRegisterMapper.java">
1576 <provider selected="true" editor-type-id="text-editor"> 1418 <provider selected="true" editor-type-id="text-editor">
1577 - <state relative-caret-position="61">  
1578 - <caret line="202" selection-start-line="202" selection-end-line="214" selection-end-column="9" /> 1419 + <state relative-caret-position="76">
  1420 + <caret line="5" column="17" selection-start-line="5" selection-start-column="17" selection-end-line="5" selection-end-column="17" />
1579 </state> 1421 </state>
1580 </provider> 1422 </provider>
1581 </entry> 1423 </entry>
1582 - <entry file="file://$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/jsLanguageServicesImpl/external/lib.es5.d.ts"> 1424 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptContainerDetail/mapper/ReceiptContainerDetailMapper.java">
1583 <provider selected="true" editor-type-id="text-editor"> 1425 <provider selected="true" editor-type-id="text-editor">
1584 - <state relative-caret-position="166">  
1585 - <caret line="1215" column="4" selection-start-line="1215" selection-start-column="4" selection-end-line="1215" selection-end-column="4" /> 1426 + <state relative-caret-position="76">
  1427 + <caret line="5" column="17" selection-start-line="5" selection-start-column="17" selection-end-line="5" selection-end-column="17" />
1586 </state> 1428 </state>
1587 </provider> 1429 </provider>
1588 </entry> 1430 </entry>
1589 - <entry file="file://$PROJECT_DIR$/src/main/resources/static/js/echarts/echarts.js"> 1431 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/mapper/ReceiptContainerHeaderMapper.java">
1590 <provider selected="true" editor-type-id="text-editor"> 1432 <provider selected="true" editor-type-id="text-editor">
1591 - <state relative-caret-position="190">  
1592 - <caret line="11245" column="4" selection-start-line="11245" selection-start-column="4" selection-end-line="11245" selection-end-column="4" /> 1433 + <state relative-caret-position="76">
  1434 + <caret line="5" column="17" selection-start-line="5" selection-start-column="17" selection-end-line="5" selection-end-column="17" />
1593 </state> 1435 </state>
1594 </provider> 1436 </provider>
1595 </entry> 1437 </entry>
1596 - <entry file="file://$USER_HOME$/Desktop/HttpPrinter3.0.0.5_20200103_014305_%E5%90%ABhtml%E7%A4%BA%E4%BE%8B/调用示例/Http协议示例/html/http_test_fastreport.html"> 1438 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptHeader/mapper/ReceiptHeaderMapper.java">
1597 <provider selected="true" editor-type-id="text-editor"> 1439 <provider selected="true" editor-type-id="text-editor">
1598 - <state relative-caret-position="-3819">  
1599 - <caret line="207" column="42" selection-start-line="207" selection-start-column="27" selection-end-line="207" selection-end-column="42" /> 1440 + <state relative-caret-position="114">
  1441 + <caret line="9" column="32" lean-forward="true" selection-start-line="9" selection-start-column="32" selection-end-line="9" selection-end-column="32" />
1600 </state> 1442 </state>
1601 </provider> 1443 </provider>
1602 </entry> 1444 </entry>
1603 - <entry file="file://$PROJECT_DIR$/src/main/resources/static/js/jquery.jqprint-0.3.js"> 1445 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptHeaderHistory/mapper/ReceiptHeaderHistoryMapper.java">
1604 <provider selected="true" editor-type-id="text-editor"> 1446 <provider selected="true" editor-type-id="text-editor">
1605 - <state relative-caret-position="126">  
1606 - <caret line="60" column="104" selection-start-line="60" selection-start-column="104" selection-end-line="60" selection-end-column="104" /> 1447 + <state relative-caret-position="95">
  1448 + <caret line="6" column="1" lean-forward="true" selection-start-line="6" selection-start-column="1" selection-end-line="6" selection-end-column="1" />
1607 </state> 1449 </state>
1608 </provider> 1450 </provider>
1609 </entry> 1451 </entry>
1610 - <entry file="file://$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/jsLanguageServicesImpl/external/browser.d.ts"> 1452 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkHeader/mapper/CheckHeaderMapper.java">
1611 <provider selected="true" editor-type-id="text-editor"> 1453 <provider selected="true" editor-type-id="text-editor">
1612 - <state relative-caret-position="240">  
1613 - <caret line="46" column="7" selection-start-line="46" selection-start-column="7" selection-end-line="46" selection-end-column="7" /> 1454 + <state relative-caret-position="209">
  1455 + <caret line="12" column="1" lean-forward="true" selection-start-line="12" selection-start-column="1" selection-end-line="12" selection-end-column="1" />
1614 </state> 1456 </state>
1615 </provider> 1457 </provider>
1616 </entry> 1458 </entry>
1617 - <entry file="file://$PROJECT_DIR$/src/main/resources/templates/inventory/inventoryTransaction/report.html"> 1459 + <entry file="file://$PROJECT_DIR$/src/main/resources/mybatis/system/ConfigMapper.xml">
1618 <provider selected="true" editor-type-id="text-editor"> 1460 <provider selected="true" editor-type-id="text-editor">
1619 - <state relative-caret-position="665">  
1620 - <caret line="47" column="29" lean-forward="true" selection-start-line="47" selection-start-column="29" selection-end-line="47" selection-end-column="29" />  
1621 - <folding>  
1622 - <element signature="n#style#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1623 - <element signature="n#style#0;n#span#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />  
1624 - <element signature="n#style#0;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" />  
1625 - <element signature="n#style#0;n#td#1;n#tr#2;n#tbody#0;n#table#0;n#div#0;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" />  
1626 - </folding> 1461 + <state relative-caret-position="251">
  1462 + <caret line="71" column="73" lean-forward="true" selection-start-line="71" selection-start-column="73" selection-end-line="71" selection-end-column="73" />
1627 </state> 1463 </state>
1628 </provider> 1464 </provider>
1629 </entry> 1465 </entry>
1630 - <entry file="file://$PROJECT_DIR$/src/main/resources/templates/config/location/print.html"> 1466 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/mobile/download/ApkInfo.java">
1631 <provider selected="true" editor-type-id="text-editor"> 1467 <provider selected="true" editor-type-id="text-editor">
1632 - <state relative-caret-position="146">  
1633 - <caret line="113" lean-forward="true" selection-start-line="113" selection-end-line="113" /> 1468 + <state relative-caret-position="171">
  1469 + <caret line="9" column="23" lean-forward="true" selection-start-line="9" selection-start-column="23" selection-end-line="9" selection-end-column="23" />
1634 </state> 1470 </state>
1635 </provider> 1471 </provider>
1636 </entry> 1472 </entry>
1637 - <entry file="file://$PROJECT_DIR$/src/main/resources/templates/config/location/location.html"> 1473 + <entry file="file://$PROJECT_DIR$/src/main/resources/mybatis/config/WarehouseMapper.xml">
1638 <provider selected="true" editor-type-id="text-editor"> 1474 <provider selected="true" editor-type-id="text-editor">
1639 - <state relative-caret-position="285">  
1640 - <caret line="75" column="45" selection-start-line="75" selection-start-column="45" selection-end-line="75" selection-end-column="45" /> 1475 + <state relative-caret-position="1380">
  1476 + <caret line="144" column="34" lean-forward="true" selection-start-line="144" selection-start-column="34" selection-end-line="144" selection-end-column="34" />
1641 </state> 1477 </state>
1642 </provider> 1478 </provider>
1643 </entry> 1479 </entry>
1644 - <entry file="file://$PROJECT_DIR$/src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html"> 1480 + <entry file="file://$PROJECT_DIR$/src/main/resources/mybatis/config/ZoneMapper.xml">
1645 <provider selected="true" editor-type-id="text-editor"> 1481 <provider selected="true" editor-type-id="text-editor">
1646 - <state relative-caret-position="179">  
1647 - <caret line="310" selection-start-line="310" selection-end-line="322" selection-end-column="10" /> 1482 + <state relative-caret-position="189">
  1483 + <caret line="32" lean-forward="true" selection-start-line="32" selection-end-line="32" />
1648 </state> 1484 </state>
1649 </provider> 1485 </provider>
1650 </entry> 1486 </entry>
1651 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/controller/InventoryTransactionController.java"> 1487 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/zone/mapper/ZoneMapper.java">
1652 <provider selected="true" editor-type-id="text-editor"> 1488 <provider selected="true" editor-type-id="text-editor">
1653 - <state relative-caret-position="241">  
1654 - <caret line="105" column="28" lean-forward="true" selection-start-line="105" selection-start-column="28" selection-end-line="105" selection-end-column="28" /> 1489 + <state relative-caret-position="133">
  1490 + <caret line="9" column="44" lean-forward="true" selection-start-line="9" selection-start-column="17" selection-end-line="9" selection-end-column="44" />
1655 </state> 1491 </state>
1656 </provider> 1492 </provider>
1657 </entry> 1493 </entry>
1658 - <entry file="file://$USER_HOME$/Desktop/demo.html"> 1494 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/common/mapper/ApkMapper.java">
1659 <provider selected="true" editor-type-id="text-editor"> 1495 <provider selected="true" editor-type-id="text-editor">
1660 - <state relative-caret-position="19">  
1661 - <caret line="1" column="6" lean-forward="true" selection-start-line="1" selection-start-column="6" selection-end-line="1" selection-end-column="6" /> 1496 + <state relative-caret-position="167">
  1497 + <caret line="16" column="8" selection-start-line="16" selection-start-column="8" selection-end-line="16" selection-end-column="8" />
1662 </state> 1498 </state>
1663 </provider> 1499 </provider>
1664 </entry> 1500 </entry>
1665 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java"> 1501 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/system/config/mapper/ConfigMapper.java">
1666 <provider selected="true" editor-type-id="text-editor"> 1502 <provider selected="true" editor-type-id="text-editor">
1667 - <state relative-caret-position="208">  
1668 - <caret line="317" column="50" lean-forward="true" selection-start-line="317" selection-start-column="50" selection-end-line="317" selection-end-column="50" /> 1503 + <state relative-caret-position="164">
  1504 + <caret line="40" column="17" lean-forward="true" selection-start-line="40" selection-start-column="17" selection-end-line="40" selection-end-column="17" />
1669 </state> 1505 </state>
1670 </provider> 1506 </provider>
1671 </entry> 1507 </entry>
1672 - <entry file="file://$PROJECT_DIR$/src/main/resources/templates/config/material/material.html"> 1508 + <entry file="file://$PROJECT_DIR$/src/main/resources/mybatis/download/DownloadMapper.xml">
1673 <provider selected="true" editor-type-id="text-editor"> 1509 <provider selected="true" editor-type-id="text-editor">
1674 - <state relative-caret-position="-3041">  
1675 - <caret line="67" column="12" selection-start-line="67" selection-start-column="12" selection-end-line="67" selection-end-column="12" /> 1510 + <state relative-caret-position="114">
  1511 + <caret line="6" column="4" selection-start-line="6" selection-start-column="4" selection-end-line="6" selection-end-column="4" />
1676 </state> 1512 </state>
1677 </provider> 1513 </provider>
1678 </entry> 1514 </entry>
1679 - <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java"> 1515 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/mobile/download/ApkController.java">
1680 <provider selected="true" editor-type-id="text-editor"> 1516 <provider selected="true" editor-type-id="text-editor">
1681 - <state relative-caret-position="113">  
1682 - <caret line="193" column="28" lean-forward="true" selection-start-line="193" selection-start-column="28" selection-end-line="193" selection-end-column="28" /> 1517 + <state relative-caret-position="1381">
  1518 + <caret line="86" column="13" lean-forward="true" selection-start-line="86" selection-start-column="13" selection-end-line="86" selection-end-column="13" />
  1519 + <folding>
  1520 + <element signature="imports" expanded="true" />
  1521 + </folding>
1683 </state> 1522 </state>
1684 </provider> 1523 </provider>
1685 </entry> 1524 </entry>
1686 - <entry file="file://$PROJECT_DIR$/src/main/resources/templates/config/material/print.html"> 1525 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java">
1687 <provider selected="true" editor-type-id="text-editor"> 1526 <provider selected="true" editor-type-id="text-editor">
1688 - <state relative-caret-position="133">  
1689 - <caret line="64" column="29" lean-forward="true" selection-start-line="64" selection-start-column="29" selection-end-line="64" selection-end-column="29" />  
1690 - <folding>  
1691 - <element signature="n#style#0;n#input#0;n#td#1;n#tr#4;n#tbody#0;n#table#0;n#div#0;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" />  
1692 - <element signature="n#style#0;n#input#0;n#td#1;n#tr#4;n#tbody#0;n#table#0;n#div#0;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" />  
1693 - </folding> 1527 + <state relative-caret-position="-1234">
  1528 + <caret line="404" column="51" selection-start-line="404" selection-start-column="40" selection-end-line="404" selection-end-column="51" />
1694 </state> 1529 </state>
1695 </provider> 1530 </provider>
1696 </entry> 1531 </entry>
src/main/java/com/huaheng/api/general/controller/AdjustApi.java 0 → 100644
  1 +package com.huaheng.api.general.controller;
  2 +
  3 +
  4 +import com.huaheng.api.general.domain.AdjustDomain;
  5 +import com.huaheng.api.general.domain.CycCountDomain;
  6 +import com.huaheng.api.general.service.AdjustService;
  7 +import com.huaheng.api.general.service.CycleCountService;
  8 +import com.huaheng.framework.aspectj.lang.annotation.Log;
  9 +import com.huaheng.framework.aspectj.lang.constant.BusinessType;
  10 +import com.huaheng.framework.web.domain.AjaxResult;
  11 +import io.swagger.annotations.Api;
  12 +import io.swagger.annotations.ApiOperation;
  13 +import org.springframework.web.bind.annotation.*;
  14 +
  15 +import javax.annotation.Resource;
  16 +
  17 +@RestController
  18 +@RequestMapping("/api/adjustApi")
  19 +@Api(tags = {"adjust"}, description = "调整单接口")
  20 +public class AdjustApi {
  21 +
  22 + @Resource
  23 + private AdjustService adjustService;
  24 +
  25 +
  26 + /**
  27 + * 同步调整单
  28 + */
  29 + @Log(title = "调整单添加", action = BusinessType.INSERT)
  30 + @PostMapping("/adjust")
  31 + @ApiOperation("调整单添加公共接口")
  32 + @ResponseBody
  33 + public AjaxResult adjust(@RequestBody AdjustDomain adjustDomain)
  34 + {
  35 + AjaxResult ajaxResult = adjustService.insertAdjust(adjustDomain);
  36 + return ajaxResult;
  37 + }
  38 +
  39 +}
src/main/java/com/huaheng/api/general/controller/CycleCountApi.java 0 → 100644
  1 +package com.huaheng.api.general.controller;
  2 +
  3 +
  4 +import com.huaheng.api.general.domain.CycCountDomain;
  5 +import com.huaheng.api.general.domain.ReceiptDomain;
  6 +import com.huaheng.api.general.service.CycleCountService;
  7 +import com.huaheng.api.general.service.ReceiptApiService;
  8 +import com.huaheng.framework.aspectj.lang.annotation.Log;
  9 +import com.huaheng.framework.aspectj.lang.constant.BusinessType;
  10 +import com.huaheng.framework.web.domain.AjaxResult;
  11 +import com.huaheng.pc.inventory.cycleCountHeader.domain.CycleCountHeader;
  12 +import com.huaheng.pc.inventory.cycleCountHeader.service.CycleCountHeaderService;
  13 +import io.swagger.annotations.Api;
  14 +import io.swagger.annotations.ApiOperation;
  15 +import org.springframework.web.bind.annotation.*;
  16 +
  17 +import javax.annotation.Resource;
  18 +
  19 +@RestController
  20 +@RequestMapping("/api/cycleCountApi")
  21 +@Api(tags = {"cycleCount"}, description = "盘点单接口")
  22 +public class CycleCountApi {
  23 +
  24 + @Resource
  25 + private CycleCountService cycleCountService;
  26 +
  27 +
  28 + /**
  29 + * 同步盘点单
  30 + */
  31 + @Log(title = "盘点单添加", action = BusinessType.INSERT)
  32 + @PostMapping("/adjust")
  33 + @ApiOperation("盘点单添加公共接口")
  34 + @ResponseBody
  35 + public AjaxResult cycleCount(@RequestBody CycCountDomain cycCountDomain)
  36 + {
  37 + AjaxResult ajaxResult = cycleCountService.insertCycleCount(cycCountDomain);
  38 + return ajaxResult;
  39 + }
  40 +
  41 +}
src/main/java/com/huaheng/api/general/controller/ReceiptApi.java
@@ -3,11 +3,14 @@ package com.huaheng.api.general.controller; @@ -3,11 +3,14 @@ package com.huaheng.api.general.controller;
3 3
4 import com.huaheng.api.general.domain.ReceiptDomain; 4 import com.huaheng.api.general.domain.ReceiptDomain;
5 import com.huaheng.api.general.service.ReceiptApiService; 5 import com.huaheng.api.general.service.ReceiptApiService;
  6 +import com.huaheng.common.utils.StringUtils;
6 import com.huaheng.framework.aspectj.lang.annotation.Log; 7 import com.huaheng.framework.aspectj.lang.annotation.Log;
7 import com.huaheng.framework.aspectj.lang.constant.BusinessType; 8 import com.huaheng.framework.aspectj.lang.constant.BusinessType;
8 import com.huaheng.framework.web.domain.AjaxResult; 9 import com.huaheng.framework.web.domain.AjaxResult;
9 import io.swagger.annotations.Api; 10 import io.swagger.annotations.Api;
10 import io.swagger.annotations.ApiOperation; 11 import io.swagger.annotations.ApiOperation;
  12 +import io.swagger.annotations.ApiParam;
  13 +import org.apache.shiro.authz.annotation.RequiresPermissions;
11 import org.springframework.web.bind.annotation.*; 14 import org.springframework.web.bind.annotation.*;
12 15
13 import javax.annotation.Resource; 16 import javax.annotation.Resource;
@@ -34,4 +37,18 @@ public class ReceiptApi { @@ -34,4 +37,18 @@ public class ReceiptApi {
34 return ajaxResult; 37 return ajaxResult;
35 } 38 }
36 39
  40 +
  41 + /**
  42 + * 取消入库单
  43 + */
  44 + @Log(title = "入库-入库单 ",operating = "入库单删除", action = BusinessType.UPDATE)
  45 + @PostMapping("/remove")
  46 + @ResponseBody
  47 + public AjaxResult remove(@RequestBody Integer[] ids){
  48 + if (StringUtils.isNull(ids)){
  49 + return AjaxResult.error("id为空");
  50 + }
  51 + return receiptApiService.add(ids);
  52 + }
  53 +
37 } 54 }
src/main/java/com/huaheng/api/general/controller/ReceiptController.java deleted
1 -package com.huaheng.api.general.controller;  
2 -  
3 -import com.huaheng.api.general.domain.Receipt;  
4 -import com.huaheng.api.general.service.ReceiptService;  
5 -import com.huaheng.framework.aspectj.lang.annotation.Log;  
6 -import com.huaheng.framework.aspectj.lang.constant.BusinessType;  
7 -import com.huaheng.framework.web.domain.AjaxResult;  
8 -import io.swagger.annotations.Api;  
9 -import io.swagger.annotations.ApiOperation;  
10 -import org.springframework.web.bind.annotation.*;  
11 -  
12 -import javax.annotation.Resource;  
13 -  
14 -/**  
15 - * Created by Enzo Cotter on 2019/11/4.  
16 - * @author mahuandong  
17 - */  
18 -@RestController  
19 -@RequestMapping("/api/receipt")  
20 -@Api(tags = {"basicData"}, description = "入库接口")  
21 -public class ReceiptController {  
22 -  
23 - @Resource  
24 - private ReceiptService receiptService;  
25 -  
26 - /**  
27 - * 入库单下发  
28 - */  
29 - @Log(title = "入库单下发", action = BusinessType.INSERT)  
30 - @PostMapping("/insertReceipt")  
31 - @ApiOperation("入库单下发接口")  
32 - @ResponseBody  
33 - public AjaxResult MaterialApi(@RequestBody Receipt receipt) {  
34 - System.out.println("————————开始接收入库单——————————");  
35 - System.out.println(receipt);  
36 - AjaxResult ajaxResult = receiptService.insertReceipt(receipt);  
37 - return ajaxResult;  
38 - }  
39 -  
40 -}  
src/main/java/com/huaheng/api/general/domain/AdjustDomain.java 0 → 100644
  1 +package com.huaheng.api.general.domain;
  2 +
  3 +import com.huaheng.pc.inventory.adjustDetail.domain.AdjustDetail;
  4 +import com.huaheng.pc.inventory.adjustHeader.domain.AdjustHeader;
  5 +import com.huaheng.pc.inventory.cycleCountHeader.domain.CycleCountHeader;
  6 +import lombok.Data;
  7 +
  8 +import java.util.List;
  9 +
  10 +@Data
  11 +public class AdjustDomain {
  12 + private AdjustHeader adjustHeader;
  13 + private List<AdjustDetail> adjustDetailList;
  14 +}
src/main/java/com/huaheng/api/general/domain/CycCountDomain.java 0 → 100644
  1 +package com.huaheng.api.general.domain;
  2 +
  3 +import com.huaheng.pc.inventory.cycleCountHeader.domain.CycleCountHeader;
  4 +import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
  5 +import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader;
  6 +import lombok.Data;
  7 +
  8 +import java.util.List;
  9 +import java.util.Map;
  10 +
  11 +@Data
  12 +public class CycCountDomain {
  13 + private CycleCountHeader cycleCountHeader;
  14 + private Integer[] inventoryId;
  15 +}
src/main/java/com/huaheng/api/general/domain/Receipt.java deleted
1 -package com.huaheng.api.general.domain;  
2 -  
3 -import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;  
4 -import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;  
5 -import lombok.Data;  
6 -  
7 -import java.util.List;  
8 -  
9 -/**  
10 - * Created by Enzo Cotter on 2019/11/4.  
11 - * @author mahuandong  
12 - */  
13 -@Data  
14 -public class Receipt {  
15 -  
16 - private ReceiptHeader receiptHeader;  
17 -  
18 - private List<ReceiptDetail> receiptDetails;  
19 -}  
src/main/java/com/huaheng/api/general/service/AdjustService.java 0 → 100644
  1 +package com.huaheng.api.general.service;
  2 +
  3 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  5 +import com.huaheng.api.general.domain.AdjustDomain;
  6 +import com.huaheng.api.general.domain.CycCountDomain;
  7 +import com.huaheng.common.constant.QuantityConstant;
  8 +import com.huaheng.common.exception.service.ServiceException;
  9 +import com.huaheng.common.utils.StringUtils;
  10 +import com.huaheng.common.utils.security.ShiroUtils;
  11 +import com.huaheng.framework.web.domain.AjaxResult;
  12 +import com.huaheng.pc.check.checkDetail.domain.CheckDetail;
  13 +import com.huaheng.pc.check.checkDetail.service.CheckDetailService;
  14 +import com.huaheng.pc.config.configValue.domain.ConfigValue;
  15 +import com.huaheng.pc.config.configValue.service.ConfigValueService;
  16 +import com.huaheng.pc.config.cycleCountPreference.service.CycleCountPreferenceService;
  17 +import com.huaheng.pc.config.location.service.LocationService;
  18 +import com.huaheng.pc.config.material.domain.Material;
  19 +import com.huaheng.pc.config.material.service.MaterialService;
  20 +import com.huaheng.pc.inventory.adjustDetail.domain.AdjustDetail;
  21 +import com.huaheng.pc.inventory.adjustDetail.service.AdjustDetailService;
  22 +import com.huaheng.pc.inventory.adjustHeader.domain.AdjustHeader;
  23 +import com.huaheng.pc.inventory.adjustHeader.mapper.AdjustHeaderMapper;
  24 +import com.huaheng.pc.inventory.adjustHeader.service.AdjustHeaderService;
  25 +import com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail;
  26 +import com.huaheng.pc.inventory.cycleCountDetail.service.CycleCountDetailService;
  27 +import com.huaheng.pc.inventory.cycleCountHeader.domain.CycleCountHeader;
  28 +import com.huaheng.pc.inventory.cycleCountHeader.service.CycleCountHeaderService;
  29 +import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
  30 +import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
  31 +import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
  32 +import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
  33 +import org.springframework.stereotype.Component;
  34 +import org.springframework.transaction.annotation.Transactional;
  35 +
  36 +import javax.annotation.Resource;
  37 +import java.text.SimpleDateFormat;
  38 +import java.util.ArrayList;
  39 +import java.util.Date;
  40 +import java.util.List;
  41 +
  42 +/**
  43 + * Created by Enzo Cotter on 2019/11/4.
  44 + * @author mahuandong
  45 + */
  46 +@Component
  47 +@Transactional(rollbackFor = Exception.class)
  48 +public class AdjustService {
  49 +
  50 + @Resource
  51 + private AdjustHeaderMapper adjustHeaderMapper;
  52 + @Resource
  53 + private AdjustDetailService adjustDetailService;
  54 + @Resource
  55 + private AdjustHeaderService adjustHeaderService;
  56 + @Resource
  57 + private InventoryDetailService inventoryDetailService;
  58 + @Resource
  59 + private CycleCountDetailService cycleCountDetailService;
  60 + @Resource
  61 + private CheckDetailService checkDetailService;
  62 + @Resource
  63 + private MaterialService materialService;
  64 + /**
  65 + * 调整单下发
  66 + * @param adjustDomain 调整单
  67 + * @return 是否下发成功
  68 + */
  69 + @Transactional(rollbackFor = Exception.class)
  70 + public AjaxResult insertAdjust(AdjustDomain adjustDomain){
  71 + AdjustHeader adjustHeader =adjustDomain.getAdjustHeader();
  72 +
  73 + List<AdjustDetail> adjustDetailList =adjustDomain.getAdjustDetailList();
  74 +
  75 + if (adjustHeader==null || adjustDetailList==null){
  76 + return AjaxResult.error("主单据和单据明细信息不能为空");
  77 + }
  78 +
  79 + if (StringUtils.isEmpty(adjustDomain.getAdjustHeader().getProblemType())){
  80 + return AjaxResult.error("调整类型不能为空");
  81 + }
  82 + if (StringUtils.isEmpty(adjustDomain.getAdjustHeader().getWarehouseCode())){
  83 + return AjaxResult.error("仓库编码不能为空");
  84 + }
  85 + if (StringUtils.isEmpty(adjustDomain.getAdjustHeader().getCompanyCode())){
  86 + return AjaxResult.error("货主编码不能为空");
  87 + }
  88 + AdjustHeader adjustHeaderCode= this.addSave(adjustDomain.getAdjustHeader());
  89 +
  90 + //查询主单及加入仓库和货主,盘点,质检单编码
  91 + if(adjustHeaderCode == null){
  92 + return AjaxResult.error("没有对应的主单据!");
  93 + }
  94 + List<AdjustDetail> adjustDetails =new ArrayList<>();
  95 + for (AdjustDetail detail:adjustDetailList) {
  96 + detail.setWarehouseCode(adjustHeaderCode.getWarehouseCode());
  97 + detail.setAdjustCode(adjustHeaderCode.getCode());
  98 + detail.setCompanyCode(adjustHeaderCode.getCompanyCode());
  99 + detail.setCycleCountCode(adjustHeaderCode.getCycleCountCode());
  100 + detail.setCheckCode(adjustHeaderCode.getCheckCode());
  101 + this.addDetails(detail);
  102 + adjustDetails.add(detail);
  103 +
  104 + }
  105 + AdjustDomain adjustDomainAjax =new AdjustDomain();
  106 + adjustDomainAjax.setAdjustHeader(adjustHeaderCode);
  107 + adjustDomainAjax.setAdjustDetailList(adjustDetails);
  108 +
  109 + return AjaxResult.success(adjustDomainAjax);
  110 + }
  111 +
  112 + /**
  113 + * 保存新增调整头
  114 + * @param adjustHeader
  115 + * @return
  116 + */
  117 + @Transactional
  118 + public AdjustHeader addSave(AdjustHeader adjustHeader) {
  119 + //校验调整类型
  120 + //盘点调整,质检调整需要和盘点和质检单据确认。
  121 + switch (adjustHeader.getProblemType()){
  122 + case "checkAdjust": //质检调整
  123 + if(StringUtils.isEmpty(adjustHeader.getCheckCode())){
  124 + throw new SecurityException("选择单据类型为质检调整时,质检单编码不能为空!");
  125 + }
  126 + break;
  127 + case "cyclecountAdjust": //盘点调整
  128 + if(StringUtils.isEmpty(adjustHeader.getCycleCountCode())){
  129 + throw new SecurityException("选择单据类型为盘点调整时,盘点单编码不能为空!");
  130 + }
  131 + break;
  132 + case "adjust": //普通调整
  133 + if(StringUtils.isEmpty(adjustHeader.getCycleCountCode())){
  134 + throw new SecurityException("选择单据类型为普通调整时,盘点单编码不能为空!");
  135 + }
  136 + break;
  137 +
  138 + }
  139 +
  140 + adjustHeader.setCreated(new Date());
  141 + adjustHeader.setCreatedBy(ShiroUtils.getLoginName());
  142 + adjustHeader.setCode(this.createCode());
  143 + if (!adjustHeaderService.save(adjustHeader)){
  144 + throw new SecurityException("新增调整单失败!");
  145 + }
  146 + return adjustHeader;
  147 + }
  148 +
  149 +
  150 + @Transactional
  151 + public AjaxResult addDetails(AdjustDetail adjustDetail) {
  152 +
  153 + //查询主单据
  154 + AdjustHeader adjustHeader = new AdjustHeader();
  155 + adjustHeader.setCode(adjustDetail.getAdjustCode());
  156 + adjustHeader.setWarehouseCode(adjustDetail.getWarehouseCode());
  157 + adjustHeader.setCompanyCode(adjustDetail.getCompanyCode());
  158 + LambdaQueryWrapper<AdjustHeader> lambdaQueryWrapper = Wrappers.lambdaQuery(adjustHeader);
  159 + adjustHeader = adjustHeaderService.getOne(lambdaQueryWrapper);
  160 + //检查库存
  161 + if((adjustDetail.getInventoryDetailId()) != null){
  162 + InventoryDetail inventoryDetail = inventoryDetailService.getById(adjustDetail.getInventoryDetailId());
  163 + if(inventoryDetail == null){
  164 + return AjaxResult.error("没有该条库存明细");
  165 + }
  166 + }
  167 + //明细单据的上层单编码需要和主单一直,主单空值则不判断
  168 + if(StringUtils.isNotEmpty(adjustHeader.getCycleCountCode()) || StringUtils.isNotEmpty(adjustHeader.getCheckCode())){
  169 + adjustDetail.setCycleCountCode(adjustHeader.getCycleCountCode());
  170 + adjustDetail.setCheckCode(adjustHeader.getCheckCode());
  171 + }
  172 + //检查盘点单
  173 + if(StringUtils.isNotEmpty(adjustDetail.getCycleCountCode())){
  174 + LambdaQueryWrapper<CycleCountDetail> queryCycleCountCode = Wrappers.lambdaQuery();
  175 + queryCycleCountCode.eq(CycleCountDetail::getCycleCountHeadCode,adjustDetail.getCycleCountCode());
  176 + CycleCountDetail cycleCountDetail = cycleCountDetailService.list(queryCycleCountCode).get(0);
  177 + if(cycleCountDetail == null || !cycleCountDetail.getCycleCountHeadCode().equals(adjustDetail.getCycleCountCode())){
  178 + return AjaxResult.error("盘点单错误,请核对盘点单据!");
  179 + }
  180 + }
  181 + //检查质检单
  182 + if(StringUtils.isNotEmpty(adjustDetail.getCheckCode())){
  183 + CheckDetail checkDetail = checkDetailService.getById(adjustDetail.getCheckDetailId());
  184 + if(checkDetail == null || !checkDetail.getCheckCode().equals(adjustDetail.getCheckCode())){
  185 + return AjaxResult.error("质检单错误,请核对质检单据!");
  186 + }
  187 + }
  188 + //检查物料
  189 + Material material = materialService.findAllByCode(adjustDetail.getMaterialCode());
  190 + if(material == null){
  191 + return AjaxResult.error("物料编码错误!");
  192 + }
  193 +
  194 + adjustDetail.setProblemType(adjustHeader.getProblemType());//调整类型
  195 + adjustDetail.setMaterialUnit(material.getUnit());
  196 + adjustDetail.setMaterialSpec(material.getSpec());
  197 + adjustDetail.setCreated(new Date());
  198 + adjustDetail.setCreatedBy(ShiroUtils.getLoginName());
  199 + adjustDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
  200 + adjustDetail.setLastUpdated(new Date());
  201 + adjustDetailService.saveOrUpdate(adjustDetail);
  202 +
  203 + return AjaxResult.success("新增调整明细成功!");
  204 + }
  205 +
  206 +
  207 +
  208 + //生成差异单号
  209 + public String createCode() {
  210 + String code;
  211 + Date now = new Date();
  212 + SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
  213 + String maxCode = adjustHeaderMapper.getLastCode();;
  214 + //如果指定类型的最后的code存在,并且日期一致。那么 code = 单类型 + 年月日 + (排序号 + 1)
  215 + if (maxCode != null && maxCode.substring(maxCode.length() - 13, maxCode.length() - 5).equals(df.format(now)))
  216 + {
  217 + Integer Count = Integer.valueOf(maxCode.substring(maxCode.length() - 5, maxCode.length()));
  218 + code = "AD" + df.format(now) + String.format("%05d", Count + 1);
  219 + }
  220 + else
  221 + {
  222 + code = "AD" + df.format(now) + "00001";
  223 + }
  224 + return code;
  225 + }
  226 +
  227 +}
src/main/java/com/huaheng/api/general/service/CycleCountService.java 0 → 100644
  1 +package com.huaheng.api.general.service;
  2 +
  3 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  5 +import com.huaheng.api.general.domain.CycCountDomain;
  6 +import com.huaheng.common.constant.QuantityConstant;
  7 +import com.huaheng.common.exception.service.ServiceException;
  8 +import com.huaheng.common.utils.StringUtils;
  9 +import com.huaheng.common.utils.security.ShiroUtils;
  10 +import com.huaheng.framework.web.domain.AjaxResult;
  11 +import com.huaheng.pc.config.configValue.domain.ConfigValue;
  12 +import com.huaheng.pc.config.configValue.service.ConfigValueService;
  13 +import com.huaheng.pc.config.cycleCountPreference.service.CycleCountPreferenceService;
  14 +import com.huaheng.pc.config.location.service.LocationService;
  15 +import com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail;
  16 +import com.huaheng.pc.inventory.cycleCountDetail.service.CycleCountDetailService;
  17 +import com.huaheng.pc.inventory.cycleCountHeader.domain.CycleCountHeader;
  18 +import com.huaheng.pc.inventory.cycleCountHeader.service.CycleCountHeaderService;
  19 +import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
  20 +import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
  21 +import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
  22 +import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
  23 +import org.springframework.stereotype.Component;
  24 +import org.springframework.transaction.annotation.Transactional;
  25 +
  26 +import javax.annotation.Resource;
  27 +import java.util.ArrayList;
  28 +import java.util.Date;
  29 +import java.util.List;
  30 +
  31 +/**
  32 + * Created by Enzo Cotter on 2019/11/4.
  33 + * @author mahuandong
  34 + */
  35 +@Component
  36 +@Transactional(rollbackFor = Exception.class)
  37 +public class CycleCountService {
  38 +
  39 + @Resource
  40 + private CycleCountHeaderService cycleCountHeaderService;
  41 + @Resource
  42 + private CycleCountDetailService cycleCountDetailService;
  43 + @Resource
  44 + private InventoryDetailService inventoryDetailService;
  45 + @Resource
  46 + private LocationService locationService;
  47 + @Resource
  48 + private TaskHeaderService taskHeaderService;
  49 + @Resource
  50 + private TaskDetailService taskDetailService;
  51 + @Resource
  52 + private ConfigValueService configValueService;
  53 + @Resource
  54 + private CycleCountPreferenceService cycleCountPreferenceService;
  55 + /**
  56 + * 盘点单下发
  57 + * @param cycCountDomain 盘点单
  58 + * @return 是否下发成功
  59 + */
  60 + @Transactional(rollbackFor = Exception.class)
  61 + public AjaxResult insertCycleCount(CycCountDomain cycCountDomain){
  62 + CycleCountHeader cycleCountHeader =cycCountDomain.getCycleCountHeader();
  63 +
  64 + if (cycleCountHeader==null || cycCountDomain.getInventoryId()==null){
  65 + return AjaxResult.error("主单据或库存id不能为空");
  66 + }
  67 +
  68 + if (StringUtils.isEmpty(cycCountDomain.getCycleCountHeader().getCountType())){
  69 + return AjaxResult.error("盘点类型不能为空");
  70 + }
  71 + if (StringUtils.isEmpty(cycleCountHeader.getWarehouseCode())){
  72 + return AjaxResult.error("仓库编码不能为空");
  73 + }
  74 + if (StringUtils.isEmpty(cycleCountHeader.getCompanyCode())){
  75 + return AjaxResult.error("货主编码不能为空");
  76 + }
  77 +
  78 + cycleCountHeader.setWarehouseCode(ShiroUtils.getWarehouseCode());
  79 + cycleCountHeader.setCompanyCode(cycleCountHeader.getCompanyCode());
  80 + cycleCountHeader.setCreated(new Date());
  81 + cycleCountHeader.setCreatedBy(ShiroUtils.getLoginName());
  82 + cycleCountHeader.setCode(cycleCountHeaderService.createCode());
  83 + if (!cycleCountHeaderService.save(cycleCountHeader)){
  84 + return AjaxResult.error("新增盘点单失败");
  85 + }
  86 + this.addDetails(cycleCountHeader.getCode(),cycCountDomain.getInventoryId());
  87 +
  88 + return AjaxResult.success("成功");
  89 + }
  90 +
  91 + /**
  92 + * 新增盘点明细
  93 + * */
  94 + @Transactional
  95 + public AjaxResult addDetails(String cycleCountHeadCode, Integer[] inventoryDetailIdIds) {
  96 +
  97 + if(cycleCountHeadCode == null){
  98 + throw new ServiceException("盘点主单编码不能为空!");
  99 + }
  100 + CycleCountHeader cyclecountHeader =new CycleCountHeader();
  101 + cyclecountHeader.setCode(cycleCountHeadCode);
  102 + LambdaQueryWrapper<CycleCountHeader> ch = Wrappers.lambdaQuery(cyclecountHeader);
  103 + cyclecountHeader = cycleCountHeaderService.getOne(ch);
  104 + //可能存在并发删除的情况
  105 + if(cyclecountHeader==null){
  106 + return AjaxResult.error("盘点主单据不存在");
  107 + }
  108 + if(cyclecountHeader.getStatusCyc() > QuantityConstant.CYCLECOUNT_STATUS_BUILD){
  109 + return AjaxResult.error("盘点单非新建状态,无法再添加明细");
  110 + }
  111 + //默认盘点配置,首选项
  112 + ConfigValue configValue = new ConfigValue();
  113 + configValue.setModuleType("cyclecount");
  114 + configValue.setWarehouseCode(ShiroUtils.getWarehouseCode());
  115 + LambdaQueryWrapper<ConfigValue> configValueLambdaQueryWrapper = Wrappers.lambdaQuery(configValue);
  116 + configValue = configValueService.getOne(configValueLambdaQueryWrapper);
  117 + if(configValue == null){
  118 + throw new SecurityException("请先在配置中添加盘点配置");
  119 + }
  120 + String preferenceCode = configValue.getIdentifier();
  121 + //获取已经存在的明细
  122 + CycleCountDetail cycleCountDetail = new CycleCountDetail();
  123 + cycleCountDetail.setWarehouseCode(cyclecountHeader.getWarehouseCode());
  124 + cycleCountDetail.setCompanyCode(cyclecountHeader.getCompanyCode());
  125 + cycleCountDetail.setCycleCountHeadCode(cyclecountHeader.getCode());
  126 + LambdaQueryWrapper<CycleCountDetail> cycleCountDetailLambd = Wrappers.lambdaQuery(cycleCountDetail);
  127 + List<CycleCountDetail> cyclecountDetailList = cycleCountDetailService.list(cycleCountDetailLambd);
  128 + if(cyclecountDetailList == null){
  129 + cyclecountDetailList = new ArrayList<>();
  130 + }
  131 + for(int inventoryDetailId : inventoryDetailIdIds){
  132 + //当前有盘点明细时验证是否已经生成盘点细单,生成则跳出该条循环
  133 + if(cyclecountDetailList.stream().anyMatch(t -> t.getInventoryDetailId()!=null && t.getInventoryDetailId() == inventoryDetailId)){
  134 + continue;
  135 + }
  136 + //查询该条库存明细
  137 + InventoryDetail inventoryDetail = inventoryDetailService.getById(inventoryDetailId);
  138 + //写入盘点明细
  139 + CycleCountDetail ccd = new CycleCountDetail();
  140 + ccd.setPreferenceCode(preferenceCode);
  141 + ccd.setCycleCountHeadCode(cyclecountHeader.getCode());
  142 + ccd.setInventoryDetailId(inventoryDetailId);
  143 + ccd.setWarehouseCode(inventoryDetail.getWarehouseCode());
  144 + ccd.setCompanyCode(inventoryDetail.getCompanyCode());
  145 + ccd.setInventorySts(inventoryDetail.getInventorySts());
  146 + ccd.setCountId(inventoryDetail.getId());
  147 + //ccd.setEnableStatus(1);
  148 + ccd.setLocationCode(inventoryDetail.getLocationCode());
  149 + ccd.setContainerCode(inventoryDetail.getContainerCode());
  150 + ccd.setMaterialCode(inventoryDetail.getMaterialCode());
  151 + ccd.setMaterialName(inventoryDetail.getMaterialName());
  152 + ccd.setMaterialSpec(inventoryDetail.getMaterialSpec());
  153 + ccd.setMaterialUnit(inventoryDetail.getMaterialUnit());
  154 + ccd.setSystemQty(inventoryDetail.getQty());
  155 + ccd.setBatch(inventoryDetail.getBatch());
  156 + ccd.setLot(inventoryDetail.getLot());
  157 + ccd.setProjectNo(inventoryDetail.getProjectNo());
  158 + ccd.setCountedBy(cyclecountHeader.getCreatedBy());
  159 + ccd.setCountedAt(cyclecountHeader.getCreated());
  160 + ccd.setCreated(new Date());
  161 + ccd.setCreatedBy(ShiroUtils.getLoginName());
  162 + ccd.setLastUpdated(new Date());
  163 + ccd.setLastUpdatedBy(ShiroUtils.getLoginName());
  164 + cycleCountDetailService.save(ccd);
  165 + //更新库存盘点锁
  166 + inventoryDetail.setLockCode("cyclecount");
  167 + inventoryDetailService.saveOrUpdate(inventoryDetail);
  168 + }
  169 + return AjaxResult.success("生成盘点明细成功");
  170 + }
  171 +
  172 +}
src/main/java/com/huaheng/api/general/service/ReceiptApiService.java
@@ -4,8 +4,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -4,8 +4,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 import com.baomidou.mybatisplus.core.toolkit.Wrappers; 4 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
5 import com.huaheng.api.general.controller.ReceiptApi; 5 import com.huaheng.api.general.controller.ReceiptApi;
6 import com.huaheng.api.general.domain.ReceiptDomain; 6 import com.huaheng.api.general.domain.ReceiptDomain;
  7 +import com.huaheng.common.constant.QuantityConstant;
7 import com.huaheng.common.exception.service.ServiceException; 8 import com.huaheng.common.exception.service.ServiceException;
  9 +import com.huaheng.common.support.Convert;
8 import com.huaheng.common.utils.StringUtils; 10 import com.huaheng.common.utils.StringUtils;
  11 +import com.huaheng.common.utils.security.ShiroUtils;
9 import com.huaheng.framework.web.domain.AjaxResult; 12 import com.huaheng.framework.web.domain.AjaxResult;
10 import com.huaheng.pc.config.FilterConfigDetail.domain.FilterConfigDetail; 13 import com.huaheng.pc.config.FilterConfigDetail.domain.FilterConfigDetail;
11 import com.huaheng.pc.config.FilterConfigDetail.service.FilterConfigDetailService; 14 import com.huaheng.pc.config.FilterConfigDetail.service.FilterConfigDetailService;
@@ -23,14 +26,21 @@ import com.huaheng.pc.config.warehouse.domain.Warehouse; @@ -23,14 +26,21 @@ import com.huaheng.pc.config.warehouse.domain.Warehouse;
23 import com.huaheng.pc.config.warehouse.service.WarehouseService; 26 import com.huaheng.pc.config.warehouse.service.WarehouseService;
24 import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail; 27 import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;
25 import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService; 28 import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService;
  29 +import com.huaheng.pc.receipt.receiptDetailHistory.domain.ReceiptDetailHistory;
  30 +import com.huaheng.pc.receipt.receiptDetailHistory.service.ReceiptDetailHistoryService;
26 import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader; 31 import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
27 import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService; 32 import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
  33 +import com.huaheng.pc.receipt.receiptHeaderHistory.domain.ReceiptHeaderHistory;
  34 +import com.huaheng.pc.receipt.receiptHeaderHistory.service.ReceiptHeaderHistoryService;
  35 +import org.apache.commons.beanutils.BeanUtils;
28 import org.springframework.stereotype.Component; 36 import org.springframework.stereotype.Component;
29 import org.springframework.transaction.annotation.Transactional; 37 import org.springframework.transaction.annotation.Transactional;
30 38
31 import javax.annotation.Resource; 39 import javax.annotation.Resource;
  40 +import java.lang.reflect.InvocationTargetException;
32 import java.math.BigDecimal; 41 import java.math.BigDecimal;
33 import java.util.ArrayList; 42 import java.util.ArrayList;
  43 +import java.util.Arrays;
34 import java.util.List; 44 import java.util.List;
35 45
36 @Component 46 @Component
@@ -54,6 +64,10 @@ public class ReceiptApiService { @@ -54,6 +64,10 @@ public class ReceiptApiService {
54 private FilterConfigDetailService filterConfigDetailService; 64 private FilterConfigDetailService filterConfigDetailService;
55 @Resource 65 @Resource
56 private StatusFlowHeaderService statusFlowHeaderService; 66 private StatusFlowHeaderService statusFlowHeaderService;
  67 + @Resource
  68 + private ReceiptHeaderHistoryService receiptHeaderHistoryService;
  69 + @Resource
  70 + private ReceiptDetailHistoryService receiptDetailHistoryService;
57 /** 71 /**
58 * 入库单下发 72 * 入库单下发
59 * @param receipt 入库单 73 * @param receipt 入库单
@@ -218,4 +232,65 @@ public class ReceiptApiService { @@ -218,4 +232,65 @@ public class ReceiptApiService {
218 232
219 return AjaxResult.success(""); 233 return AjaxResult.success("");
220 } 234 }
  235 +
  236 +
  237 + @Transactional
  238 + public AjaxResult add(Integer[] ids){
  239 + List<Integer> idList = Arrays.asList(ids);
  240 + for (Integer id : idList) {
  241 + ReceiptHeader receiptHeader = receiptHeaderService.getById(id);
  242 + if (receiptHeader == null) {
  243 + return AjaxResult.success("");
  244 + }
  245 + if((receiptHeader.getFirstStatus()>= QuantityConstant.RECEIPT_HEADER_POSTING && receiptHeader.getLastStatus()>=QuantityConstant.RECEIPT_HEADER_POSTING)||
  246 + (receiptHeader.getFirstStatus()<QuantityConstant.RECEIPT_HEADER_POOL &receiptHeader.getLastStatus()<QuantityConstant.RECEIPT_HEADER_POOL)){
  247 + ReceiptHeaderHistory receiptHeaderHistory = new ReceiptHeaderHistory();
  248 + List<ReceiptDetailHistory> receiptDetailHistoryList = new ArrayList<>();
  249 + //查询入库单明细
  250 + LambdaQueryWrapper<ReceiptDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
  251 + lambdaQueryWrapper.eq(ReceiptDetail::getReceiptId, id);
  252 + List<ReceiptDetail> list = receiptDetailService.list(lambdaQueryWrapper);
  253 + try {
  254 + //复制到入库历史实体
  255 + BeanUtils.copyProperties(receiptHeaderHistory, receiptHeader);
  256 + for (ReceiptDetail receiptDetail: list) {
  257 + ReceiptDetailHistory receiptDetailHistory = new ReceiptDetailHistory();
  258 + BeanUtils.copyProperties(receiptDetailHistory, receiptDetail);
  259 + receiptDetailHistoryList.add(receiptDetailHistory);
  260 + }
  261 + } catch (IllegalAccessException e) {
  262 + e.printStackTrace();
  263 + } catch (InvocationTargetException e) {
  264 + e.printStackTrace();
  265 + }
  266 +
  267 + receiptHeaderHistory.setLastUpdatedBy(ShiroUtils.getLoginName());
  268 + if (!receiptHeaderService.removeById(receiptHeader.getId())){
  269 + throw new ServiceException("删除头表失败");
  270 + }
  271 + if(!receiptHeaderHistoryService.save(receiptHeaderHistory)){
  272 + throw new ServiceException("新增历史入库单失败");
  273 + }
  274 + // 当存在明细时删除
  275 + if (list.size()!= 0){
  276 + //删除入库明细
  277 + List<Integer> receiptDetailIds = new ArrayList<>();
  278 + for (int i=0; i<receiptDetailHistoryList.size();i++){
  279 + receiptDetailHistoryList.get(i).setLastUpdatedBy(ShiroUtils.getLoginName());
  280 + receiptDetailHistoryList.get(i).setReceiptId(receiptHeaderHistory.getId());
  281 + receiptDetailIds.add(receiptDetailHistoryList.get(i).getId());
  282 + }
  283 + if (!receiptDetailService.removeByIds(receiptDetailIds)) {
  284 + throw new ServiceException("删除明细表失败");
  285 + }
  286 + if (!receiptDetailHistoryService.saveBatch(receiptDetailHistoryList)){
  287 + throw new ServiceException("新增明细失败");
  288 + } }
  289 +
  290 + }else {
  291 + return AjaxResult.success("入库单没有完成,无法删除");
  292 + }
  293 + }
  294 + return AjaxResult.success("删除成功");
  295 + }
221 } 296 }
src/main/java/com/huaheng/api/general/service/ReceiptService.java deleted
1 -package com.huaheng.api.general.service;  
2 -  
3 -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;  
4 -import com.baomidou.mybatisplus.core.toolkit.Wrappers;  
5 -import com.huaheng.api.general.domain.Receipt;  
6 -import com.huaheng.common.exception.service.ServiceException;  
7 -import com.huaheng.common.utils.StringUtils;  
8 -import com.huaheng.framework.web.domain.AjaxResult;  
9 -import com.huaheng.pc.config.FilterConfigDetail.domain.FilterConfigDetail;  
10 -import com.huaheng.pc.config.FilterConfigDetail.service.FilterConfigDetailService;  
11 -import com.huaheng.pc.config.company.domain.Company;  
12 -import com.huaheng.pc.config.company.service.CompanyService;  
13 -import com.huaheng.pc.config.material.domain.Material;  
14 -import com.huaheng.pc.config.material.service.MaterialService;  
15 -import com.huaheng.pc.config.receiptType.domain.ReceiptType;  
16 -import com.huaheng.pc.config.receiptType.service.ReceiptTypeService;  
17 -import com.huaheng.pc.config.statusFlow.domain.StatusFlowHeader;  
18 -import com.huaheng.pc.config.statusFlow.service.StatusFlowHeaderService;  
19 -import com.huaheng.pc.config.supplier.domain.Supplier;  
20 -import com.huaheng.pc.config.supplier.service.SupplierService;  
21 -import com.huaheng.pc.config.warehouse.domain.Warehouse;  
22 -import com.huaheng.pc.config.warehouse.service.WarehouseService;  
23 -import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;  
24 -import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService;  
25 -import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;  
26 -import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;  
27 -import org.springframework.stereotype.Component;  
28 -import org.springframework.transaction.annotation.Transactional;  
29 -  
30 -import javax.annotation.Resource;  
31 -import java.math.BigDecimal;  
32 -import java.util.List;  
33 -  
34 -/**  
35 - * Created by Enzo Cotter on 2019/11/4.  
36 - * @author mahuandong  
37 - */  
38 -@Component  
39 -@Transactional(rollbackFor = Exception.class)  
40 -public class ReceiptService {  
41 -  
42 - @Resource  
43 - private ReceiptHeaderService receiptHeaderService;  
44 - @Resource  
45 - private ReceiptDetailService receiptDetailService;  
46 - @Resource  
47 - private ReceiptTypeService receiptTypeService;  
48 - @Resource  
49 - private WarehouseService warehouseService;  
50 - @Resource  
51 - private CompanyService companyService;  
52 - @Resource  
53 - private MaterialService materialService;  
54 - @Resource  
55 - private SupplierService supplierService;  
56 - @Resource  
57 - private FilterConfigDetailService filterConfigDetailService;  
58 - @Resource  
59 - private StatusFlowHeaderService statusFlowHeaderService;  
60 - /**  
61 - * 入库单下发  
62 - * @param receipt 入库单  
63 - * @return 是否下发成功  
64 - */  
65 - @Transactional(rollbackFor = Exception.class)  
66 - public AjaxResult insertReceipt(Receipt receipt){  
67 -  
68 - /* 0.step 获取入库头表,获取入库明细*/  
69 - ReceiptHeader receiptHeader = receipt.getReceiptHeader();  
70 - List<ReceiptDetail> receiptDetails = receipt.getReceiptDetails();  
71 - /* 1.step 校验入库单是否为空*/  
72 - if (receiptHeader == null || receiptDetails.isEmpty()){  
73 - throw new ServiceException("入库主单或入库子单为空");  
74 - }  
75 - /* 2.step 检查入库头表合法性*/  
76 - AjaxResult checkReceiptHeaderResult = checkReceiptHeader(receiptHeader);  
77 - if (checkReceiptHeaderResult.hasErr() ){  
78 - return AjaxResult.error(checkReceiptHeaderResult.getMsg());  
79 - }  
80 -  
81 - /* 3.step 检查入库明细合法性*/  
82 - AjaxResult checkReceiptDetailResult = checkReceiptDetail(receiptDetails);  
83 - if (checkReceiptDetailResult.hasErr() ){  
84 - return AjaxResult.error(checkReceiptDetailResult.getMsg());  
85 - }  
86 -  
87 - /* 4.step 计算入库明细总行数、总数量*/  
88 - BigDecimal totalQty = new BigDecimal(0);  
89 - for (ReceiptDetail receiptDetail: receiptDetails) {  
90 - totalQty.add(receiptDetail.getTotalQty());  
91 - }  
92 - receiptHeader.setTotalLines(receiptDetails.size());  
93 - receiptHeader.setTotalQty(totalQty);  
94 -  
95 - /* 5.step 保存的入库头表*/  
96 - if (!receiptHeaderService.save(receiptHeader)){  
97 - throw new ServiceException("保存入库头表失败");  
98 - }  
99 -  
100 - /* 6.step 保存入库明细*/  
101 - LambdaQueryWrapper<ReceiptHeader> lambda = Wrappers.lambdaQuery();  
102 - lambda.eq(ReceiptHeader::getWarehouseCode, receiptHeader.getWarehouseCode())  
103 - .eq(ReceiptHeader::getCode, receiptHeader.getCode());  
104 - receiptHeader = receiptHeaderService.getOne(lambda);  
105 - for (ReceiptDetail receiptDetail : receiptDetails) {  
106 - receiptDetail.setReceiptId(receiptHeader.getId());  
107 - receiptDetail.setReceiptCode(receiptHeader.getCode());  
108 - receiptDetail.setWarehouseCode(receiptHeader.getWarehouseCode());  
109 - receiptDetail.setCompanyCode(receiptHeader.getWarehouseCode());  
110 - Material material = materialService.findAllByCode(receiptDetail.getMaterialCode());  
111 - receiptDetail.setMaterialName(material.getName());  
112 - receiptDetail.setMaterialSpec(material.getSpec());  
113 - receiptDetail.setMaterialUnit(material.getUnit());  
114 - if (!receiptDetailService.save(receiptDetail)){  
115 - throw new ServiceException("保存入库明细失败");  
116 - }  
117 - }  
118 -  
119 - return AjaxResult.success("成功");  
120 - }  
121 -  
122 - /**  
123 - * 检查入库头表合法性  
124 - * @param receiptHeader 入库头表  
125 - * @return 检查结果  
126 - */  
127 - private AjaxResult checkReceiptHeader(ReceiptHeader receiptHeader){  
128 - /* 0.step 必填项是否为空*/  
129 - if (StringUtils.isEmpty(receiptHeader.getCode()) || StringUtils.isEmpty(receiptHeader.getCompanyCode()) ||  
130 - StringUtils.isEmpty(receiptHeader.getWarehouseCode()) || StringUtils.isEmpty(receiptHeader.getReceiptType())){  
131 - return AjaxResult.error("入库主单字段有误");  
132 - }  
133 -  
134 - /* 1.step 查询该单据编码是否已存在*/  
135 - LambdaQueryWrapper<ReceiptHeader> receiptHeaderLambda = Wrappers.lambdaQuery(receiptHeader);  
136 - if (receiptHeaderService.getOne(receiptHeaderLambda) != null){  
137 - return AjaxResult.error("该单据已存在:"+receiptHeader.getCode());  
138 - }  
139 -  
140 - /* 2.step 判断入库类型是否匹配*/  
141 - LambdaQueryWrapper<ReceiptType> receiptTypeLambda = Wrappers.lambdaQuery();  
142 - receiptTypeLambda.eq(ReceiptType::getCode, receiptHeader.getReceiptType());  
143 - if (receiptTypeService.getOne(receiptTypeLambda) == null){  
144 - return AjaxResult.error("没有对应的入库单类型");  
145 - }  
146 -  
147 - /* 3.step 判断仓库是否存在*/  
148 - LambdaQueryWrapper<Warehouse> warehouseLambda = Wrappers.lambdaQuery();  
149 - warehouseLambda.eq(Warehouse::getCode, receiptHeader.getWarehouseCode());  
150 - if (warehouseService.getOne(warehouseLambda) == null){  
151 - return AjaxResult.error("该仓库不存在");  
152 - }  
153 -  
154 - /* 4.step 判断货主是否存在*/  
155 - LambdaQueryWrapper<Company> companyLambda = Wrappers.lambdaQuery();  
156 - companyLambda.eq(Company::getCode, receiptHeader.getCompanyCode());  
157 - if (companyService.getOne(companyLambda) == null){  
158 - return AjaxResult.error("该货主不存在");  
159 - }  
160 -  
161 - return AjaxResult.success("");  
162 - }  
163 -  
164 - /**  
165 - * 检查入库明细合法性  
166 - * @param receiptDetails 入库明细  
167 - * @return 检查结果  
168 - */  
169 - private AjaxResult checkReceiptDetail(List<ReceiptDetail> receiptDetails){  
170 -  
171 - for (ReceiptDetail receiptDetail: receiptDetails) {  
172 - /* 0.step 判断必填字段是否为空且总数量不能为0*/  
173 - if (receiptDetail.getMaterialCode() == null ||  
174 - new BigDecimal(0).compareTo(receiptDetail.getTotalQty() != null ?  
175 - receiptDetail.getTotalQty() : new BigDecimal(0)) == 0 ){  
176 - return AjaxResult.error("入库明细字段有误");  
177 - }  
178 -  
179 - /* 1.step 判断供应商是否存在*/  
180 - if (receiptDetail.getSupplierCode() != null){  
181 - LambdaQueryWrapper<Supplier> supplierLambda = Wrappers.lambdaQuery();  
182 - supplierLambda.eq(Supplier::getCode, receiptDetail.getSupplierCode());  
183 - if (supplierService.getOne(supplierLambda) == null) {  
184 - return AjaxResult.error("供应商不存在");  
185 - }  
186 - }  
187 -  
188 - /* 2.step 判断定位规则是否存在*/  
189 - if (receiptDetail.getLocatingRule() != null){  
190 - LambdaQueryWrapper<FilterConfigDetail> filterConfigDetailLambda = Wrappers.lambdaQuery();  
191 - filterConfigDetailLambda.eq(FilterConfigDetail::getCode, receiptDetail.getLocatingRule())  
192 - .eq(FilterConfigDetail::getModuleType, "receipt")  
193 - .eq(FilterConfigDetail::getRecordType, "locationRule");  
194 - FilterConfigDetail filterConfigDetail = filterConfigDetailService.getOne(filterConfigDetailLambda);  
195 - if (filterConfigDetail == null){  
196 - return AjaxResult.error(receiptDetail.getLocatingRule()+"定位规则不存在");  
197 - }  
198 - }  
199 -  
200 - /* 3.step 判断流程编码是否存在*/  
201 - if (receiptDetail.getStatusFlowCode() != null){  
202 - LambdaQueryWrapper<StatusFlowHeader> statusFlowHeaderLambda = Wrappers.lambdaQuery();  
203 - statusFlowHeaderLambda.eq(StatusFlowHeader::getCode, receiptDetail.getStatusFlowCode())  
204 - .eq(StatusFlowHeader::getModuleType, "receipt")  
205 - .eq(StatusFlowHeader::getRecordType, "receivingFlow");  
206 - StatusFlowHeader statusFlowHeader = statusFlowHeaderService.getOne(statusFlowHeaderLambda);  
207 - if (statusFlowHeader == null){  
208 - return AjaxResult.error(receiptDetail.getLocatingRule()+"该流程不存在");  
209 - }  
210 - }  
211 - }  
212 -  
213 - return AjaxResult.success("");  
214 - }  
215 -  
216 -}  
src/main/java/com/huaheng/framework/config/ShiroConfig.java
@@ -263,6 +263,7 @@ public class ShiroConfig @@ -263,6 +263,7 @@ public class ShiroConfig
263 filterChainDefinitionMap.put("/admin/logout", "adminlogout"); 263 filterChainDefinitionMap.put("/admin/logout", "adminlogout");
264 // 不需要拦截的访问 264 // 不需要拦截的访问
265 // filterChainDefinitionMap.put("/admin/home", "anon,captchaValidate"); 265 // filterChainDefinitionMap.put("/admin/home", "anon,captchaValidate");
  266 + filterChainDefinitionMap.put("/mobile/download/*", "anon,captchaValidate");
266 filterChainDefinitionMap.put("/admin/login", "anon,captchaValidate"); 267 filterChainDefinitionMap.put("/admin/login", "anon,captchaValidate");
267 filterChainDefinitionMap.put("/login", "anon,captchaValidate"); 268 filterChainDefinitionMap.put("/login", "anon,captchaValidate");
268 filterChainDefinitionMap.put("/api/login", "anon,captchaValidate"); 269 filterChainDefinitionMap.put("/api/login", "anon,captchaValidate");
src/main/java/com/huaheng/mobile/download/ApkController.java 0 → 100644
  1 +package com.huaheng.mobile.download;
  2 +
  3 +import com.alibaba.fastjson.JSONException;
  4 +import com.huaheng.framework.web.domain.AjaxResult;
  5 +import com.huaheng.pc.common.mapper.ApkMapper;
  6 +import io.swagger.annotations.ApiOperation;
  7 +import org.springframework.web.bind.annotation.PostMapping;
  8 +import org.springframework.web.bind.annotation.RequestBody;
  9 +import org.springframework.web.bind.annotation.RequestMapping;
  10 +import org.springframework.web.bind.annotation.RestController;
  11 +
  12 +import javax.annotation.Resource;
  13 +import java.util.List;
  14 +import java.util.Map;
  15 +
  16 +@RestController
  17 +@RequestMapping("/mobile/download")
  18 +public class ApkController {
  19 +
  20 + @Resource
  21 + ApkMapper apkMapper;
  22 +
  23 + @PostMapping("/getUpdateApkInfo")
  24 + @ApiOperation("获取apk更新信息")
  25 + public AjaxResult getUpdateApkInfo(@RequestBody Map<String, String> param) {
  26 + System.out.println("getUpdateApkInfo pkgName:" + param.get("pkgName"));
  27 + if (param.get("pkgName") == null)
  28 + throw new JSONException("pkgName不能为空");
  29 + if (param.get("versionCode") == null)
  30 + throw new JSONException("versionCode不能为空");
  31 + List<ApkInfo> apkinfos = apkMapper.getApkInfoByPkgName(param.get("pkgName"));
  32 + ApkInfo apkInfo = apkinfos.get(0);
  33 + int maxVersion = Integer.MAX_VALUE;
  34 + String project = param.containsKey("project") ? param.get("project") : null;
  35 + if(project != null) {
  36 + if(project.equals(Constant.PROJECT_XIANGJI)) {
  37 + maxVersion = Constant.PROJECT_XIANGJI_MAX_LEVEL;
  38 + }
  39 + }
  40 + for (ApkInfo apkInfo2 : apkinfos) //循环找到版本最大值
  41 + {
  42 + if (apkInfo.getVersionCode() < apkInfo2.getVersionCode()) {
  43 + if(apkInfo2.getVersionCode() > maxVersion) {
  44 + continue;
  45 + }
  46 + apkInfo = apkInfo2;
  47 + }
  48 + }
  49 +
  50 + int versionCode = Integer.parseInt(param.get("versionCode"));
  51 + System.out.println("getUpdateApkInfo versionCode:" + versionCode);
  52 + System.out.println("apkInfo.getVersionCode():" + apkInfo.getVersionCode());
  53 + if(versionCode >= apkInfo.getVersionCode()) {
  54 + return AjaxResult.error("当前已经是最新版本");
  55 + }
  56 +
  57 + return AjaxResult.success(apkInfo);
  58 + }
  59 +
  60 + @PostMapping("/insertApkInfo")
  61 + @ApiOperation("插入apk更新信息")
  62 + public ApkInfo insertApkInfo(@RequestBody Map<String, String> param) {
  63 + System.out.println("insertApkInfo pkgName:" + param.get("pkgName"));
  64 + if (param.get("pkgName") == null)
  65 + throw new JSONException("pkgName不能为空");
  66 + if (param.get("versionCode") == null)
  67 + throw new JSONException("versionCode不能为空");
  68 + if (param.get("versionName") == null)
  69 + throw new JSONException("versionName");
  70 + if (param.get("url") == null)
  71 + throw new JSONException("url");
  72 + if (param.get("md5") == null)
  73 + throw new JSONException("md5");
  74 + ApkInfo apkInfo = buildApkInfo(param);
  75 + try {
  76 + apkMapper.insertApkInfo(apkInfo.getPkgName(), apkInfo.getVersionCode(), apkInfo.getVersionName(), apkInfo.getUrl(), apkInfo.getMd5());
  77 + } catch(Exception e) {
  78 +
  79 + }
  80 + return apkInfo;
  81 + }
  82 +
  83 + @PostMapping("/clearApkInfo")
  84 + @ApiOperation("删除apk信息")
  85 + public AjaxResult clearApkInfo(@RequestBody Map<String, String> param) {
  86 + System.out.println("clearApkInfo");
  87 + try {
  88 + apkMapper.clearApkInfo();
  89 + } catch(Exception e) {
  90 +
  91 + }
  92 + return AjaxResult.success("删除apk信息成功");
  93 + }
  94 +
  95 + private ApkInfo buildApkInfo(Map<String, String> param) {
  96 + ApkInfo apkInfo = new ApkInfo();
  97 + apkInfo.setPkgName(param.get("pkgName"));
  98 + apkInfo.setVersionCode(Integer.parseInt(param.get("versionCode")));
  99 + apkInfo.setVersionName(param.get("versionName"));
  100 + apkInfo.setUrl(param.get("url"));
  101 + apkInfo.setMd5(param.get("md5"));
  102 + return apkInfo;
  103 + }
  104 +}
src/main/java/com/huaheng/mobile/download/ApkInfo.java 0 → 100644
  1 +package com.huaheng.mobile.download;
  2 +
  3 +public class ApkInfo {
  4 +
  5 + private Integer id;
  6 + private String pkgName;
  7 + private Integer versionCode;
  8 + private String versionName;
  9 + private String url;
  10 + private String md5;
  11 +
  12 + public Integer getId() {
  13 + return id;
  14 + }
  15 +
  16 + public void setId(Integer id) {
  17 + this.id = id;
  18 + }
  19 +
  20 + public String getPkgName() {
  21 + return pkgName;
  22 + }
  23 +
  24 + public void setPkgName(String pkgName) {
  25 + this.pkgName = pkgName;
  26 + }
  27 +
  28 + public Integer getVersionCode() {
  29 + return versionCode;
  30 + }
  31 +
  32 + public void setVersionCode(Integer versionCode) {
  33 + this.versionCode = versionCode;
  34 + }
  35 +
  36 + public String getVersionName() {
  37 + return versionName;
  38 + }
  39 +
  40 + public void setVersionName(String versionName) {
  41 + this.versionName = versionName;
  42 + }
  43 +
  44 + public String getUrl() {
  45 + return url;
  46 + }
  47 +
  48 + public void setUrl(String url) {
  49 + this.url = url;
  50 + }
  51 +
  52 + public String getMd5() {
  53 + return md5;
  54 + }
  55 +
  56 + public void setMd5(String md5) {
  57 + this.md5 = md5;
  58 + }
  59 +}
src/main/java/com/huaheng/mobile/download/Constant.java 0 → 100644
  1 +package com.huaheng.mobile.download;
  2 +
  3 +public class Constant {
  4 +
  5 + public static final String PROJECT_XIANGJI = "xiangji";
  6 + public static final int PROJECT_XIANGJI_MAX_LEVEL = 4;
  7 +}
src/main/java/com/huaheng/mobile/general/CompanyInfo.java 0 → 100644
  1 +package com.huaheng.mobile.general;
  2 +
  3 +/**
  4 + *
  5 + * @author Enzo Cotter
  6 + * @date 2019/12/15
  7 + */
  8 +public class CompanyInfo {
  9 +
  10 + private int companyId;
  11 + private String companyCode;
  12 + private String companyName;
  13 +
  14 + public CompanyInfo(int companyId, String companyCode, String companyName) {
  15 + this.companyId = companyId;
  16 + this.companyCode = companyCode;
  17 + this.companyName = companyName;
  18 + }
  19 +
  20 + public int getCompanyId() {
  21 + return companyId;
  22 + }
  23 +
  24 + public void setCompanyId(int companyId) {
  25 + this.companyId = companyId;
  26 + }
  27 +
  28 + public String getCompanyCode() {
  29 + return companyCode;
  30 + }
  31 +
  32 + public void setCompanyCode(String companyCode) {
  33 + this.companyCode = companyCode;
  34 + }
  35 +
  36 + public String getCompanyName() {
  37 + return companyName;
  38 + }
  39 +
  40 + public void setCompanyName(String companyName) {
  41 + this.companyName = companyName;
  42 + }
  43 +
  44 + @Override
  45 + public String toString() {
  46 + return "CompanyInfo{" +
  47 + "companyId=" + companyId +
  48 + ", companyCode='" + companyCode + '\'' +
  49 + ", companyName='" + companyName + '\'' +
  50 + '}';
  51 + }
  52 +}
src/main/java/com/huaheng/mobile/general/MobileUserController.java 0 → 100644
  1 +package com.huaheng.mobile.general;
  2 +
  3 +import com.alibaba.fastjson.JSONException;
  4 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  6 +import com.huaheng.common.utils.StringUtils;
  7 +import com.huaheng.common.utils.security.ShiroUtils;
  8 +import com.huaheng.framework.web.controller.BaseController;
  9 +import com.huaheng.framework.web.domain.AjaxResult;
  10 +import com.huaheng.pc.config.company.domain.Company;
  11 +import com.huaheng.pc.config.company.service.CompanyService;
  12 +import com.huaheng.pc.system.menu.domain.Menu;
  13 +import com.huaheng.pc.system.menu.service.IMenuService;
  14 +import com.huaheng.pc.system.user.domain.User;
  15 +import com.huaheng.pc.system.user.service.IUserService;
  16 +import io.swagger.annotations.Api;
  17 +import io.swagger.annotations.ApiOperation;
  18 +import io.swagger.annotations.ApiParam;
  19 +import org.apache.shiro.SecurityUtils;
  20 +import org.apache.shiro.authc.AuthenticationException;
  21 +import org.apache.shiro.authc.UsernamePasswordToken;
  22 +import org.apache.shiro.subject.Subject;
  23 +import org.springframework.web.bind.annotation.PostMapping;
  24 +import org.springframework.web.bind.annotation.RequestBody;
  25 +import org.springframework.web.bind.annotation.RequestMapping;
  26 +import org.springframework.web.bind.annotation.RestController;
  27 +
  28 +import javax.annotation.Resource;
  29 +import java.util.ArrayList;
  30 +import java.util.List;
  31 +import java.util.Map;
  32 +import java.util.stream.Collectors;
  33 +
  34 +/**
  35 + *
  36 + * @author Enzo Cotter
  37 + * @date 2019/12/15
  38 + */
  39 +@RestController
  40 +@RequestMapping("/mobile/")
  41 +@Api(tags = {"MobileUserController"}, description = "移动端用户信息")
  42 +public class MobileUserController extends BaseController {
  43 +
  44 + @Resource
  45 + private IMenuService menuService;
  46 + @Resource
  47 + private IUserService userService;
  48 + @Resource
  49 + private CompanyService companyService;
  50 +
  51 + @PostMapping("/login")
  52 + @ApiOperation("用户登陆")
  53 + public AjaxResult login(@RequestBody @ApiParam(value="code和password的Map集合") Map<String, String> param) {
  54 + if (param.get("code") == null) {
  55 + throw new JSONException("code(用户名)不能为空");
  56 + }
  57 + if (param.get("password") == null) {
  58 + throw new JSONException("password(密码)不能为空");
  59 + }
  60 + UsernamePasswordToken token = new UsernamePasswordToken(param.get("code"), param.get("password"), false);
  61 + Subject subject = SecurityUtils.getSubject();
  62 + SecurityUtils.getSubject().getSession().setTimeout(-1000L);
  63 + try {
  64 + subject.login(token);
  65 + List<Map<String, Object>> list = userService.getWarehouseByUserCode(param.get("code"));
  66 + return AjaxResult.success(list);
  67 + } catch (AuthenticationException e) {
  68 + String msg = "用户或密码错误";
  69 + if (StringUtils.isNotEmpty(e.getMessage())) {
  70 + msg = e.getMessage();
  71 + }
  72 + return error(msg);
  73 + }
  74 + }
  75 +
  76 + @PostMapping("/getModules")
  77 + @ApiOperation("获取当前用户模块列表")
  78 + public AjaxResult getModules(@RequestBody @ApiParam(value="WarehouseId和warehouseCode的Map集合") Map<String, String> param) {
  79 + if (param.get("warehouseCode") == null) {
  80 + throw new JSONException("warehouseCode(仓库编码)不能为空");
  81 + }
  82 + User user = ShiroUtils.getUser();
  83 + user.setWarehouseCode(param.get("warehouseCode"));
  84 + ShiroUtils.setUser(user);
  85 + List<Company> companys = companyService.selectCompanyByCurrentUserId();
  86 + user.setCompanyIdList(companys.stream().map(X -> X.getId()).collect(Collectors.toList()));
  87 + user.setCompanyCodeList(companys.stream().map(X -> X.getCode()).collect(Collectors.toList()));
  88 + ShiroUtils.setUser(user);
  89 + List<Menu> menus = menuService.selectMobileMenusByUserId(ShiroUtils.getUserId());
  90 + return AjaxResult.success(menus);
  91 + }
  92 +
  93 + @PostMapping("/heartbeat")
  94 + @ApiOperation("心跳接口,用于延长cookie有效期")
  95 + public AjaxResult heartbeat()
  96 + {
  97 + return AjaxResult.success("success");
  98 + }
  99 +
  100 + @PostMapping("/getCompanyInfo")
  101 + @ApiOperation("获取公司信息")
  102 + public AjaxResult getCompanyInfo() {
  103 + LambdaQueryWrapper<Company> queryWrapper = Wrappers.lambdaQuery();
  104 + queryWrapper.eq(Company::getDeleted, false);
  105 +
  106 + List<Company> companies = companyService.list(queryWrapper);
  107 + List<CompanyInfo> companyInfos = new ArrayList<>();
  108 + for(Company company : companies) {
  109 + companyInfos.add(new CompanyInfo(company.getId(), company.getCode(), company.getName()));
  110 + }
  111 + return AjaxResult.success(companyInfos);
  112 + }
  113 +}
src/main/java/com/huaheng/mobile/invenory/InventoryDetails.java 0 → 100644
  1 +package com.huaheng.mobile.invenory;
  2 +
  3 +import java.math.BigDecimal;
  4 +
  5 +/**
  6 + *
  7 + * @author Enzo Cotter
  8 + * @date 2019/12/15
  9 + */
  10 +public class InventoryDetails {
  11 +
  12 + private String date;
  13 + private BigDecimal qty;
  14 +
  15 + public String getDate() {
  16 + return date;
  17 + }
  18 +
  19 + public void setDate(String date) {
  20 + this.date = date;
  21 + }
  22 +
  23 + public BigDecimal getQty() {
  24 + return qty;
  25 + }
  26 +
  27 + public void setQty(BigDecimal qty) {
  28 + this.qty = qty;
  29 + }
  30 +
  31 + @Override
  32 + public String toString() {
  33 + return "InventoryDetails{" +
  34 + "date='" + date + '\'' +
  35 + ", qty=" + qty +
  36 + '}';
  37 + }
  38 +}
src/main/java/com/huaheng/mobile/invenory/MobileInventory.java 0 → 100644
  1 +package com.huaheng.mobile.invenory;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import java.math.BigDecimal;
  6 +
  7 +/**
  8 + *
  9 + * @author Enzo Cotter
  10 + * @date 2019/12/15
  11 + */
  12 +@Data
  13 +public class MobileInventory {
  14 +
  15 + /** 库位id */
  16 + private int id;
  17 + /** 库位编号 */
  18 + private String locationCode;
  19 + /** 容器编号 */
  20 + private String containerCode;
  21 + /** 物料编码 */
  22 + private String materialCode;
  23 + /**物料名称 */
  24 + private String materialName;
  25 + /**物料规格 */
  26 + private String specification;
  27 + /** 数量 */
  28 + private BigDecimal qty;
  29 + /** 任务数量 */
  30 + private BigDecimal taskQty = new BigDecimal(0);
  31 + /** 结果类型 */
  32 + private int resultType;
  33 +}
src/main/java/com/huaheng/mobile/invenory/MobileInventoryController.java 0 → 100644
  1 +package com.huaheng.mobile.invenory;
  2 +
  3 +import com.alibaba.fastjson.JSONException;
  4 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  6 +import com.huaheng.common.support.Convert;
  7 +import com.huaheng.common.utils.DataUtils;
  8 +import com.huaheng.common.utils.StringUtils;
  9 +import com.huaheng.common.utils.security.ShiroUtils;
  10 +import com.huaheng.framework.aspectj.lang.annotation.Log;
  11 +import com.huaheng.framework.aspectj.lang.constant.BusinessType;
  12 +import com.huaheng.framework.web.domain.AjaxResult;
  13 +import com.huaheng.pc.config.container.domain.Container;
  14 +import com.huaheng.pc.config.container.service.ContainerService;
  15 +import com.huaheng.pc.config.location.domain.Location;
  16 +import com.huaheng.pc.config.location.service.LocationService;
  17 +import com.huaheng.pc.inventory.cycleCountDetail.service.CycleCountDetailService;
  18 +import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService;
  19 +import com.huaheng.pc.report.excelReport.mapper.ExcelReportMapper;
  20 +import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
  21 +import io.swagger.annotations.Api;
  22 +import io.swagger.annotations.ApiOperation;
  23 +import io.swagger.annotations.ApiParam;
  24 +import org.springframework.web.bind.annotation.*;
  25 +
  26 +import javax.annotation.Resource;
  27 +import java.math.BigDecimal;
  28 +import java.util.*;
  29 +
  30 +/**
  31 + *
  32 + * @author Enzo Cotter
  33 + * @date 2019/12/15
  34 + */
  35 +@CrossOrigin
  36 +@RestController
  37 +@RequestMapping("/mobile/inventory")
  38 +@Api(tags = {"MobileInventoryController"}, description = "手机立体库库存相关")
  39 +public class MobileInventoryController {
  40 +
  41 + @Resource
  42 + private InventoryHeaderService inventoryService;
  43 + @Resource
  44 + private TaskHeaderService taskService;
  45 + @Resource
  46 + private LocationService locationService;
  47 + @Resource
  48 + ExcelReportMapper mapper;
  49 + @Resource
  50 + private CycleCountDetailService cycleCountDetailService;
  51 + @Resource
  52 + private ContainerService containerService;
  53 +
  54 + @PostMapping("/getInventoryInfo")
  55 + @ApiOperation("移动端获得库存详情")
  56 + @Log(title = "移动端获得库存详情", action = BusinessType.OTHER)
  57 + public AjaxResult getInventoryInfo(@RequestBody @ApiParam(value="物料编码或者库位号") Map<String, String> param) {
  58 + if (param.get("code") == null || param.get("code").trim().length() < 1) {
  59 + throw new JSONException("查询码(code)不能为空");
  60 + }
  61 + if (param.get("companyCode") == null || param.get("companyCode").trim().length() < 1) {
  62 + throw new JSONException("(companyCode)不能为空");
  63 + }
  64 + return inventoryService.getInventory(param.get("code"), param.get("companyCode"));
  65 + }
  66 +
  67 + @PostMapping("/createCheckOutTask")
  68 + @ApiOperation("移动端创建出库查看任务")
  69 + @ResponseBody
  70 + public AjaxResult createCheckOutTask(@RequestBody @ApiParam(value="库存ids") Map<String, String> param){
  71 + String ids = param.get("ids");
  72 + Integer companyId = DataUtils.getInteger(param.get("companyId")) ;
  73 + String companyCode = param.get("companyCode");
  74 + if(StringUtils.isEmpty(ids)){
  75 + return AjaxResult.error("ids不能为空");
  76 + }
  77 + return taskService.createCheckOutTask(ids.split(","));
  78 + }
  79 +
  80 + @PostMapping("/transfer")
  81 + @ApiOperation("移动端创建移库任务")
  82 + @ResponseBody
  83 + public AjaxResult transfer(@RequestBody @ApiParam(value="库位情况") Map<String, String> param){
  84 + String sourceLocation = param.get("sourceLocation");
  85 + String destinationLocation = param.get("destinationLocation");
  86 + return taskService.createTransferTask(sourceLocation, destinationLocation);
  87 + }
  88 +
  89 + @PostMapping( "/execute")
  90 + @ApiOperation("执行立库任务")
  91 + @ResponseBody
  92 + public AjaxResult execute(@RequestBody @ApiParam(value="任务id") Map<String, String> param) {
  93 + String taskId = param.get("taskId");
  94 + if (StringUtils.isEmpty(taskId)) {
  95 + return AjaxResult.error("taskId不能为空");
  96 + }
  97 +
  98 + AjaxResult ajaxResult = taskService.sendTaskToWcs(Convert.toIntArray(taskId));
  99 + if(ajaxResult.hasErr()) {
  100 + AjaxResult.success("执行失败");
  101 + }
  102 + return AjaxResult.success("下发执行成功");
  103 + }
  104 +
  105 + @PostMapping( "/executeList")
  106 + @ApiOperation("执行立库任务")
  107 + @Log(title = "执行立库任务", action = BusinessType.OTHER)
  108 + public AjaxResult executeList(@RequestBody List<TaskIds> taskDetails) {
  109 + Integer[] taskIds = new Integer[taskDetails.size()];
  110 + for(int i=0; i<taskDetails.size() ; i++) {
  111 + TaskIds taskDetail = taskDetails.get(i);
  112 + taskIds[i] = taskDetail.getTaskId();
  113 + }
  114 + AjaxResult ajaxResult = taskService.sendTaskToWcs(taskIds);
  115 + return ajaxResult;
  116 + }
  117 +
  118 + @PostMapping( "/completeTaskByWMS")
  119 + @ApiOperation("完成立库任务")
  120 + @ResponseBody
  121 + public AjaxResult completeTaskByWMS(@RequestBody @ApiParam(value="任务id") Map<String, String> param) throws Exception {
  122 + String taskId = param.get("taskId");
  123 + if (StringUtils.isEmpty(taskId)) {
  124 + return AjaxResult.error("taskId不能为空");
  125 + }
  126 + AjaxResult ajaxResult = taskService.completeTaskByWMS(Convert.toIntArray(taskId));
  127 + return ajaxResult;
  128 + }
  129 +
  130 + @PostMapping( "/completeTaskListByWMS")
  131 + @ApiOperation("完成立库任务")
  132 + @ResponseBody
  133 + public AjaxResult completeTaskListByWMS(@RequestBody List<TaskIds> taskDetails) throws Exception {
  134 + Integer[] taskIds = new Integer[taskDetails.size()];
  135 + for(int i=0; i<taskDetails.size() ; i++) {
  136 + TaskIds taskDetail = taskDetails.get(i);
  137 + taskIds[i] = taskDetail.getTaskId();
  138 + }
  139 + AjaxResult ajaxResult = taskService.completeTaskByWMS(taskIds);
  140 + return ajaxResult;
  141 + }
  142 +
  143 + @PostMapping( "/isLocation")
  144 + @ApiOperation("判断是不是库位")
  145 + @ResponseBody
  146 + public AjaxResult isLocation(@RequestBody @ApiParam(value="任务id") Map<String, String> param) {
  147 + String code = param.get("code");
  148 + if (StringUtils.isEmpty(code)) {
  149 + return AjaxResult.error("location不能为空");
  150 + }
  151 + LambdaQueryWrapper<Location> queryWrapper = Wrappers.lambdaQuery();
  152 + queryWrapper.eq(Location::getCode, code);
  153 + Location location = locationService.getOne(queryWrapper);
  154 + if(location == null) {
  155 + return AjaxResult.error("没有这个库位");
  156 + }
  157 + return AjaxResult.success("库位存在");
  158 + }
  159 +
  160 + @PostMapping("/getLocationCode")
  161 + @ApiOperation("移动端获得库位联想词")
  162 + @Log(title = "移动端获得库位联想词", action = BusinessType.OTHER)
  163 + public AjaxResult getLocationCode(@RequestBody @ApiParam(value="库位号") Map<String, String> param) {
  164 + if (param.get("code") == null || param.get("code").trim().length() < 1) {
  165 + throw new JSONException("查询码(code)不能为空");
  166 + }
  167 + String type = param.get("type");
  168 + if (type == null || type.trim().length() < 1) {
  169 + throw new JSONException("type不能为空");
  170 + }
  171 +
  172 + return inventoryService.getLocationForecast(param.get("code"), Integer.parseInt(type));
  173 + }
  174 +
  175 + @PostMapping("/createEmptyIn")
  176 + @ApiOperation("移动端空托入库")
  177 + @Log(title = "移动端空托入库", action = BusinessType.OTHER)
  178 + public AjaxResult createEmptyIn(@RequestBody Map<String, String> param) {
  179 + if (param.get("containerCode") == null || param.get("containerCode").trim().length() < 1) {
  180 + throw new JSONException("容器号不能为空");
  181 + }
  182 +// if (param.get("destinationLocation") == null || param.get("destinationLocation").trim().length() < 1) {
  183 +// throw new JSONException("目的库位不能为空");
  184 +// }
  185 + String containerCode = param.get("containerCode");
  186 + String destinationLocation = param.get("destinationLocation");
  187 + String companyCode = param.get("companyCode");
  188 + return inventoryService.createEmptyIn(containerCode, destinationLocation);
  189 + }
  190 +
  191 + @PostMapping("/createEmptyOut")
  192 + @ApiOperation("移动端空托出库")
  193 + @Log(title = "移动端空托出库", action = BusinessType.OTHER)
  194 + public AjaxResult createEmptyOut(@RequestBody Map<String, String> param) {
  195 + if (param.get("containerCode") == null || param.get("containerCode").trim().length() < 1){
  196 + throw new JSONException("容器号不能为空");
  197 + }
  198 + if (param.get("sourceLocation") == null || param.get("sourceLocation").trim().length() < 1) {
  199 + throw new JSONException("源库位不能为空");
  200 + }
  201 + String containerCode = param.get("containerCode");
  202 + String sourceLocation = param.get("sourceLocation");
  203 + return inventoryService.createEmptyOut(containerCode, sourceLocation);
  204 + }
  205 +
  206 + @PostMapping("/get7daysShipment")
  207 + @ApiOperation("移动端获取7天收货和出货量")
  208 + @Log(title = "移动端获取7天收货和出货量", action = BusinessType.OTHER)
  209 + public AjaxResult get7daysShipment(@RequestBody Map<String, String> param) {
  210 + String sql = "select a.click_date as date,ifnull(b.taskQty,0) as qty\n" +
  211 + "from (\n" +
  212 + " SELECT curdate() as click_date\n" +
  213 + " union all\n" +
  214 + " SELECT date_sub(curdate(), interval 1 day) as click_date\n" +
  215 + " union all\n" +
  216 + " SELECT date_sub(curdate(), interval 2 day) as click_date\n" +
  217 + " union all\n" +
  218 + " SELECT date_sub(curdate(), interval 3 day) as click_date\n" +
  219 + " union all\n" +
  220 + " SELECT date_sub(curdate(), interval 4 day) as click_date\n" +
  221 + " union all\n" +
  222 + " SELECT date_sub(curdate(), interval 5 day) as click_date\n" +
  223 + " union all\n" +
  224 + " SELECT date_sub(curdate(), interval 6 day) as click_date\n" +
  225 + ") a left join (\n" +
  226 + "SELECT DATE(h.created) AS created , SUM(d.qty) AS taskQty from shipment_container_detail d join shipment_container_header h on d.shippingContainerId = h.id and h.warehouseCode='"+ShiroUtils.getWarehouseCode()+"' WHERE h.created >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND h.status=30 GROUP BY DATE(h.created)\n" +
  227 + ") b on a.click_date = b.created ORDER BY a.click_date;";
  228 + List<LinkedHashMap<String, Object>> list = mapper.selectCommon(sql);
  229 +
  230 + sql = "select a.click_date as date,ifnull(b.taskQty,0) as qty\n" +
  231 + "from (\n" +
  232 + " SELECT curdate() as click_date\n" +
  233 + " union all\n" +
  234 + " SELECT date_sub(curdate(), interval 1 day) as click_date\n" +
  235 + " union all\n" +
  236 + " SELECT date_sub(curdate(), interval 2 day) as click_date\n" +
  237 + " union all\n" +
  238 + " SELECT date_sub(curdate(), interval 3 day) as click_date\n" +
  239 + " union all\n" +
  240 + " SELECT date_sub(curdate(), interval 4 day) as click_date\n" +
  241 + " union all\n" +
  242 + " SELECT date_sub(curdate(), interval 5 day) as click_date\n" +
  243 + " union all\n" +
  244 + " SELECT date_sub(curdate(), interval 6 day) as click_date\n" +
  245 + ") a left join (\n" +
  246 + "SELECT DATE(h.created) AS created , SUM(d.qty) AS taskQty from receipt_container_detail d join receipt_container_header h on d.receiptContainerId = h.id and h.warehouseCode='"+ShiroUtils.getWarehouseCode()+"' WHERE h.created >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND d.status=30 GROUP BY DATE(h.created)\n" +
  247 + ") b on a.click_date = b.created ORDER BY a.click_date;";
  248 + List<LinkedHashMap<String, Object>> list2 = mapper.selectCommon(sql);
  249 +
  250 +
  251 + List<LinkedHashMap<String, Object>> result = new ArrayList<>();
  252 + result.addAll(list);
  253 + result.addAll(list2);
  254 +
  255 + List<InventoryDetails> inventoryDetailList = new ArrayList<>();
  256 + for(LinkedHashMap<String, Object> map : result) {
  257 + Iterator iter = map.entrySet().iterator();
  258 + String date = null;
  259 + BigDecimal qty = new BigDecimal(0);
  260 + while (iter.hasNext()) {
  261 + Map.Entry entry = (Map.Entry) iter.next();
  262 + Object key = entry.getKey();
  263 + Object val = entry.getValue();
  264 + if(date == null) {
  265 + date = val.toString();
  266 + } else {
  267 + qty = (BigDecimal) val;
  268 + }
  269 + }
  270 + inventoryDetailList.add(newInventoryDetail(date, qty));
  271 + }
  272 + return AjaxResult.success(inventoryDetailList);
  273 + }
  274 +
  275 + private InventoryDetails newInventoryDetail(String date, BigDecimal qty) {
  276 + InventoryDetails inventoryDetail = new InventoryDetails();
  277 + inventoryDetail.setDate(date);
  278 + inventoryDetail.setQty(qty);
  279 + return inventoryDetail;
  280 + }
  281 +
  282 + @PostMapping("/getTodayShipmentDetail")
  283 + @ApiOperation("移动端获得今天发货详情")
  284 + @Log(title = "移动端获得今天发货详情", action = BusinessType.OTHER)
  285 + public AjaxResult getTodayShipmentDetail(@RequestBody Map<String, String> param) {
  286 + String sql = "select d.materialName, SUM(d.qty) as qty " +
  287 + "from shipment_container_header h join shipment_container_detail d " +
  288 + "on d.shippingContainerId = h.id WHERE h.created >= CURDATE() AND h.`status`>19 GROUP BY d.materialName";
  289 + List<LinkedHashMap<String, Object>> list = mapper.selectCommon(sql);
  290 +
  291 + sql = "select m.name, b.taskQty as qty \n" +
  292 + "from material m \n" +
  293 + "join (\n" +
  294 + "select d.materialCode as material, SUM(d.qty) " +
  295 + "as taskQty from receipt_container_header h join receipt_container_detail d " +
  296 + "on d.receiptContainerId = h.id WHERE h.created >= CURDATE() AND h.`status`>19 GROUP BY d.materialCode\n" +
  297 + ") b on m.`code` = b.material ORDER BY m.name";
  298 + List<LinkedHashMap<String, Object>> list2 = mapper.selectCommon(sql);
  299 + List<com.huaheng.mobile.invenory.ShipmentDetail> shipmentDetails = getShipmentDetails(list);
  300 + shipmentDetails.add(newShipmentDetail("delete", new BigDecimal(0)));
  301 + shipmentDetails.addAll(getShipmentDetails(list2));
  302 +
  303 + return AjaxResult.success(shipmentDetails);
  304 + }
  305 +
  306 + private List<com.huaheng.mobile.invenory.ShipmentDetail> getShipmentDetails(List<LinkedHashMap<String, Object>> list) {
  307 + List<com.huaheng.mobile.invenory.ShipmentDetail> shipmentDetails = new ArrayList<>();
  308 + for (LinkedHashMap<String, Object> map : list) {
  309 + Iterator iter = map.entrySet().iterator();
  310 + String materialName = null;
  311 + BigDecimal qty = new BigDecimal(0);
  312 + while (iter.hasNext()) {
  313 + Map.Entry entry = (Map.Entry) iter.next();
  314 + Object key = entry.getKey();
  315 + Object val = entry.getValue();
  316 + if (materialName == null) {
  317 + materialName = val.toString();
  318 + } else {
  319 + qty = (BigDecimal) val;
  320 + }
  321 + }
  322 + shipmentDetails.add(newShipmentDetail(materialName, qty));
  323 + }
  324 + return shipmentDetails;
  325 + }
  326 +
  327 + private com.huaheng.mobile.invenory.ShipmentDetail newShipmentDetail(String materialName, BigDecimal qty){
  328 + com.huaheng.mobile.invenory.ShipmentDetail shipmentDetail = new com.huaheng.mobile.invenory.ShipmentDetail();
  329 + shipmentDetail.setMaterialName(materialName);
  330 + shipmentDetail.setQty(qty);
  331 + return shipmentDetail;
  332 + }
  333 +
  334 + /**
  335 + * 移动端根据容器编码获取盘点任务
  336 + * @param param
  337 + * @return
  338 + */
  339 + @ResponseBody
  340 + @PostMapping("/findTransferByContainerCode")
  341 + public AjaxResult findTransferByContainerCode(@RequestBody Map<String, String> param) {
  342 + String containCode = param.get("containCode");
  343 + if (StringUtils.isEmpty(containCode)){
  344 + return AjaxResult.error("容器编码为空");
  345 + } else {
  346 + return AjaxResult.success(taskService.mobileFindTransferTask(containCode));
  347 + }
  348 + }
  349 +
  350 + /**
  351 + * 移动端实盘登记
  352 + * @param param
  353 + * @return
  354 + */
  355 + @ResponseBody
  356 + @PostMapping("/confirmGapQty")
  357 + public AjaxResult confirmGapQty(@RequestBody Map<String, String> param) {
  358 + int detailId = Integer.parseInt(param.get("detailId"));
  359 + BigDecimal qty = new BigDecimal(param.get("qty"));
  360 + return cycleCountDetailService.confirmGapQty(detailId, qty);
  361 + }
  362 +
  363 + @PostMapping("/getEmptyContainerInLocation")
  364 + @ApiOperation("选取空托出库的库位")
  365 + @Log(title = "选取空托出库的库位", action = BusinessType.OTHER)
  366 + public AjaxResult getEmptyContainerInLocation(@RequestBody Map<String, String> param) {
  367 + String warehouCOde = ShiroUtils.getWarehouseCode();
  368 + List<Location> list = containerService.getEmptyContainerInLocation(null,null,ShiroUtils.getWarehouseCode());
  369 + return AjaxResult.success(list);
  370 + }
  371 +
  372 + @PostMapping("/pickLocation")
  373 + @ApiOperation("选取补充入库的库位")
  374 + @Log(title = "选取补充入库的库位", action = BusinessType.OTHER)
  375 + public AjaxResult pickLocation(@RequestBody Map<String, String> param) {
  376 + List<Location> locations = locationService.pickLocation();
  377 + Container condition = new Container();
  378 + condition.setWarehouseCode(ShiroUtils.getWarehouseCode());
  379 + LambdaQueryWrapper lambda3 = Wrappers.lambdaQuery(condition);
  380 + List<Container> containers = containerService.list(lambda3);
  381 + for(Location location : locations) {
  382 + for(Container container : containers) {
  383 + if(container.getCode().equals(location.getContainerCode())) {
  384 + if(container.getStatus().equals("some")) {
  385 + location.setStatus("some");
  386 + }
  387 + }
  388 + }
  389 + }
  390 + return AjaxResult.success(locations);
  391 + }
  392 +}
src/main/java/com/huaheng/mobile/invenory/ShipmentDetail.java 0 → 100644
  1 +package com.huaheng.mobile.invenory;
  2 +
  3 +import java.math.BigDecimal;
  4 +
  5 +/**
  6 + * Created by Enzo Cotter on 2019/12/15.
  7 + */
  8 +public class ShipmentDetail {
  9 + private String materialName;
  10 + private BigDecimal qty;
  11 +
  12 + public String getMaterialName() {
  13 + return materialName;
  14 + }
  15 +
  16 + public void setMaterialName(String materialName) {
  17 + this.materialName = materialName;
  18 + }
  19 +
  20 + public BigDecimal getQty() {
  21 + return qty;
  22 + }
  23 +
  24 + public void setQty(BigDecimal qty) {
  25 + this.qty = qty;
  26 + }
  27 +
  28 + @Override
  29 + public String toString() {
  30 + return "ShipmentDetail{" +
  31 + "materialName='" + materialName + '\'' +
  32 + ", qty=" + qty +
  33 + '}';
  34 + }
  35 +}
src/main/java/com/huaheng/mobile/invenory/TaskIds.java 0 → 100644
  1 +package com.huaheng.mobile.invenory;
  2 +
  3 +/**
  4 + *
  5 + * @author Enzo Cotter
  6 + * @date 2019/12/15
  7 + */
  8 +public class TaskIds {
  9 +
  10 + private int taskId;
  11 +
  12 + public int getTaskId() {
  13 + return taskId;
  14 + }
  15 +
  16 + public void setTaskId(int taskId) {
  17 + this.taskId = taskId;
  18 + }
  19 +
  20 + @Override
  21 + public String toString() {
  22 + return "TaskDetail{" +
  23 + "taskId=" + taskId +
  24 + '}';
  25 + }
  26 +}
src/main/java/com/huaheng/mobile/receipt/MaterialInfo.java 0 → 100644
  1 +package com.huaheng.mobile.receipt;
  2 +
  3 +/**
  4 + *
  5 + * @author Enzo Cotter
  6 + * @date 2019/12/15
  7 + */
  8 +public class MaterialInfo {
  9 +
  10 + private String materialCode;
  11 +
  12 + private String materialName;
  13 +
  14 + private String qty;
  15 +
  16 + private String type;
  17 +
  18 + private String batch;
  19 +
  20 + private String project;
  21 +
  22 + private String weight;
  23 +
  24 + public String getMaterialCode() {
  25 + return materialCode;
  26 + }
  27 +
  28 + public void setMaterialCode(String materialCode) {
  29 + this.materialCode = materialCode;
  30 + }
  31 +
  32 + public String getMaterialName() {
  33 + return materialName;
  34 + }
  35 +
  36 + public void setMaterialName(String materialName) {
  37 + this.materialName = materialName;
  38 + }
  39 +
  40 +
  41 + public String getType() {
  42 + return type;
  43 + }
  44 +
  45 + public void setType(String type) {
  46 + this.type = type;
  47 + }
  48 +
  49 + public String getQty() {
  50 + return qty;
  51 + }
  52 +
  53 + public void setQty(String qty) {
  54 + this.qty = qty;
  55 + }
  56 +
  57 + public String getBatch() {
  58 + return batch;
  59 + }
  60 +
  61 + public void setBatch(String batch) {
  62 + this.batch = batch;
  63 + }
  64 +
  65 + public String getProject() {
  66 + return project;
  67 + }
  68 +
  69 + public void setProject(String project) {
  70 + this.project = project;
  71 + }
  72 +
  73 + public String getWeight() {
  74 + return weight;
  75 + }
  76 +
  77 + public void setWeight(String weight) {
  78 + this.weight = weight;
  79 + }
  80 +
  81 + @Override
  82 + public String toString() {
  83 + return "MaterialInfo{" +
  84 + "materialCode='" + materialCode + '\'' +
  85 + ", materialName='" + materialName + '\'' +
  86 + ", qty='" + qty + '\'' +
  87 + ", type='" + type + '\'' +
  88 + ", batch='" + batch + '\'' +
  89 + ", project='" + project + '\'' +
  90 + ", weight='" + weight + '\'' +
  91 + '}';
  92 + }
  93 +}
src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java 0 → 100644
  1 +package com.huaheng.mobile.receipt;
  2 +
  3 +import com.alibaba.fastjson.JSONException;
  4 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  6 +import com.huaheng.api.general.domain.ReceiptDomain;
  7 +import com.huaheng.common.constant.QuantityConstant;
  8 +import com.huaheng.common.exception.service.ServiceException;
  9 +import com.huaheng.common.utils.StringUtils;
  10 +import com.huaheng.common.utils.security.ShiroUtils;
  11 +import com.huaheng.framework.aspectj.lang.annotation.Log;
  12 +import com.huaheng.framework.aspectj.lang.constant.BusinessType;
  13 +import com.huaheng.framework.web.domain.AjaxResult;
  14 +import com.huaheng.pc.config.company.service.CompanyService;
  15 +import com.huaheng.pc.config.container.domain.Container;
  16 +import com.huaheng.pc.config.container.service.ContainerService;
  17 +import com.huaheng.pc.config.location.domain.Location;
  18 +import com.huaheng.pc.config.location.service.LocationService;
  19 +import com.huaheng.pc.config.material.domain.Material;
  20 +import com.huaheng.pc.config.material.service.MaterialService;
  21 +import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail;
  22 +import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService;
  23 +import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader;
  24 +import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerView;
  25 +import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
  26 +import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;
  27 +import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService;
  28 +import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
  29 +import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
  30 +import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
  31 +import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
  32 +import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
  33 +import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
  34 +import groovy.json.JsonException;
  35 +import io.swagger.annotations.Api;
  36 +import io.swagger.annotations.ApiOperation;
  37 +import io.swagger.annotations.ApiParam;
  38 +import org.springframework.transaction.annotation.Transactional;
  39 +import org.springframework.web.bind.annotation.*;
  40 +
  41 +import javax.annotation.Resource;
  42 +import java.math.BigDecimal;
  43 +import java.util.Date;
  44 +import java.util.List;
  45 +import java.util.Map;
  46 +
  47 +/**
  48 + *
  49 + * @author Enzo Cotter
  50 + * @date 2019/12/15
  51 + */
  52 +@CrossOrigin
  53 +@RestController
  54 +@RequestMapping("/mobile/receipt/batch")
  55 +@Api(tags = {"MobileBatchReceiptController"}, description = "移动端收货")
  56 +public class MobileBatchReceiptController {
  57 +
  58 + @Resource
  59 + private ReceiptContainerHeaderService receiptContainerHeaderService;
  60 + @Resource
  61 + private ReceiptHeaderService receiptHeaderService;
  62 + @Resource
  63 + private ReceiptDetailService receiptDetailService;
  64 + @Resource
  65 + private ReceiptContainerDetailService receiptContainerDetailService;
  66 + @Resource
  67 + private ContainerService containerService;
  68 + @Resource
  69 + private MaterialService materialService;
  70 + @Resource
  71 + private LocationService locationService;
  72 + @Resource
  73 + private TaskHeaderService taskHeaderService;
  74 + @Resource
  75 + private TaskDetailService taskDetailService;
  76 + @Resource
  77 + private CompanyService companyService;
  78 +
  79 + @PostMapping("/scanBill")
  80 + @ApiOperation("移动端扫描入库单")
  81 + @Log(title = "移动端扫描入库单", action = BusinessType.OTHER)
  82 + public AjaxResult scanBill(@RequestBody @ApiParam(value = "收货单号") Map<String, String> param) throws Exception {
  83 + if (param.get("code") == null || param.get("code").trim().length() < 1) {
  84 + throw new JSONException("收货单号(code)不能为空");
  85 + } else if (StringUtils.isEmpty(param.get("type"))) {
  86 + throw new JsonException("入库单类型不能为空");
  87 + } else if (StringUtils.isEmpty(param.get("companyCode"))) {
  88 + throw new JsonException("库存组织不能为空");
  89 + }
  90 + return receiptDetailService.scanReceiptCode(param.get("code"), param.get("type"), param.get("companyCode"));
  91 + }
  92 +
  93 + @PostMapping("/scanContainer")
  94 + @ApiOperation("移动端入库扫描容器")
  95 + @Log(title = "移动端入库扫描容器", action = BusinessType.OTHER)
  96 + public AjaxResult scanContainer(@RequestBody @ApiParam(value = "容器号") Map<String, String> param) throws Exception {
  97 + if (param.get("code") == null || param.get("code").trim().length() < 1) {
  98 + throw new JSONException("容器号(code)不能为空");
  99 + }
  100 +
  101 + ReceiptContainerView receiptContainerView = new ReceiptContainerView();
  102 + receiptContainerView.setReceiptContainerCode(param.get("code"));
  103 + receiptContainerView.setTaskType((short) 100);
  104 + AjaxResult result = receiptContainerHeaderService.checkContainer(receiptContainerView);
  105 + LambdaQueryWrapper<Container> containerLambdaQueryWrapper = Wrappers.lambdaQuery();
  106 + containerLambdaQueryWrapper.eq(Container::getCode, param.get("code"));
  107 + Container container = containerService.getOne(containerLambdaQueryWrapper);
  108 + if (container == null) {
  109 + return AjaxResult.error("托盘编码错误");
  110 + }
  111 + if (!container.getStatus().equals("empty")) {
  112 + return AjaxResult.error("托盘状态不为空");
  113 + }
  114 + if (!container.getLocationCode().equals("")) {
  115 + return AjaxResult.error("");
  116 + }
  117 + return result;
  118 + }
  119 +
  120 + @PostMapping("/save")
  121 + @ApiOperation("移动端收货保存")
  122 + @Log(title = "移动端收货保存", action = BusinessType.OTHER)
  123 + public AjaxResult save(@RequestBody @ApiParam(value = "收货单") List<ReceiptContainerView> record) throws Exception {
  124 + AjaxResult result = receiptContainerHeaderService.batchSave(record);
  125 + return result;
  126 + }
  127 +
  128 + @PostMapping("/getMaterial")
  129 + @ApiOperation("移动端获取物料信息")
  130 + @Log(title = "移动端获取物料信息", action = BusinessType.OTHER)
  131 + public AjaxResult getMaterial(@RequestBody @ApiParam(value = "物料号") Map<String, String> param) throws Exception {
  132 + if (param.get("code") == null || param.get("code").trim().length() < 1) {
  133 + throw new JSONException("容器号(code)不能为空");
  134 + }
  135 + Material material = materialService.findAllByCode(param.get("code"));
  136 + if (material == null) {
  137 + return AjaxResult.error("没有该物料");
  138 + }
  139 + MaterialInfo materialInfo = new MaterialInfo();
  140 + materialInfo.setMaterialCode(material.getCode());
  141 + materialInfo.setMaterialName(material.getName());
  142 + materialInfo.setType(material.getSpec());
  143 +
  144 + return AjaxResult.success(materialInfo);
  145 + }
  146 +
  147 + @PostMapping("/getLatestMaterial")
  148 + @ApiOperation("移动端获取物料信息")
  149 + @Log(title = "移动端获取物料信息", action = BusinessType.OTHER)
  150 + public AjaxResult getLatestMaterial(@RequestBody @ApiParam(value = "物料号") Map<String, String> param) throws Exception {
  151 + List<Material> materials = materialService.findLatest();
  152 + if (materials == null) {
  153 + return AjaxResult.error("没有找到物料");
  154 + }
  155 +
  156 + return AjaxResult.success(materials);
  157 + }
  158 +
  159 + @PostMapping("/getLatestReceipt")
  160 + @ApiOperation("移动端获取入库单")
  161 + @Log(title = "移动端获取入库单", action = BusinessType.OTHER)
  162 + public AjaxResult getLatestReceipt(@RequestBody @ApiParam(value = "物料号") Map<String, String> param) throws Exception {
  163 + String companyCode = param.get("companyCode");
  164 + List<ReceiptHeader> receiptHeaders = receiptHeaderService.getLatestReceipt(companyCode);
  165 + if (receiptHeaders == null) {
  166 + return AjaxResult.error("没有找到入库单");
  167 + }
  168 + return AjaxResult.success(receiptHeaders);
  169 + }
  170 +
  171 +
  172 +
  173 + @PostMapping("/checkLocation")
  174 + @ApiOperation("移动端验证库位")
  175 + @Log(title = "移动端验证库位", action = BusinessType.OTHER)
  176 + public AjaxResult checkLocation(@RequestBody @ApiParam(value = "物料号") Map<String, String> param) throws Exception {
  177 + if (param.get("code") == null || param.get("code").trim().length() < 1) {
  178 + throw new JSONException("容器号(code)不能为空");
  179 + }
  180 +
  181 + boolean result = locationService.checkLocation(param.get("code"));
  182 + if (!result) {
  183 + return AjaxResult.error("没有该库位");
  184 + }
  185 + return AjaxResult.success(result);
  186 + }
  187 +
  188 + @PostMapping("/getFreeLocation")
  189 + @ApiOperation("移动端获得空闲库位")
  190 + @Log(title = "移动端获得空闲库位", action = BusinessType.OTHER)
  191 + public AjaxResult getFreeLocation(@RequestBody @ApiParam(value = "物料号") Map<String, String> param) throws Exception {
  192 + if (param.get("materialCode") == null || param.get("materialCode").trim().length() < 1) {
  193 + throw new JSONException("materialCode不能为空");
  194 + }
  195 +
  196 + if (param.get("batch") == null || param.get("batch").trim().length() < 1) {
  197 + throw new JSONException("batch不能为空");
  198 + }
  199 + String materialCode = param.get("materialCode");
  200 + String batch = param.get("batch");
  201 + boolean result = locationService.getFreeLocation(materialCode, batch);
  202 + if (!result) {
  203 + return AjaxResult.error("没有空闲的分区库位");
  204 + }
  205 + return AjaxResult.success(result);
  206 + }
  207 +
  208 + @PostMapping("/getContainerCode")
  209 + @ApiOperation("移动端验证库位")
  210 + @Log(title = "移动端验证库位", action = BusinessType.OTHER)
  211 + public AjaxResult getContainerCode(@RequestBody @ApiParam(value = "物料号") Map<String, String> param) throws Exception {
  212 + if (param.get("code") == null || param.get("code").trim().length() < 1) {
  213 + throw new JSONException("容器号(code)不能为空");
  214 + }
  215 + LambdaQueryWrapper<Location> queryWrapper = Wrappers.lambdaQuery();
  216 + queryWrapper.eq(Location::getCode, param.get("code"))
  217 + .eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode())
  218 + .eq(Location::getDeleted, false);
  219 + Location location = locationService.getOne(queryWrapper);
  220 + if (location == null) {
  221 + return AjaxResult.error("没有该库位");
  222 + }
  223 + return AjaxResult.success("成功", location.getContainerCode());
  224 + }
  225 +
  226 + @PostMapping("/quickReceipt")
  227 + @ApiOperation("移动端收货保存")
  228 + @Log(title = "移动端收货保存", action = BusinessType.OTHER)
  229 + @Transactional(rollbackFor = Exception.class)
  230 + public AjaxResult quickReceipt(@RequestBody @ApiParam(value="收货单") List<ReceiptBill> receiptBills) throws Exception {
  231 + if (receiptBills == null || receiptBills.size() <=0) {
  232 + throw new JSONException("没有收货信息");
  233 + }
  234 + String containerCode = receiptBills.get(0).receiptContainerCode;
  235 + String locationCode = receiptBills.get(0).locationCode;
  236 + String companyCode = receiptBills.get(0).getCompanyCode();
  237 + String receiptDetailId = receiptBills.get(0).getReceiptDetailId();
  238 +
  239 + LambdaQueryWrapper<Container> containerQueryWrapper = Wrappers.lambdaQuery();
  240 + containerQueryWrapper.eq(Container::getCode, containerCode);
  241 + Container container = containerService.getOne(containerQueryWrapper);
  242 + if(container == null) {
  243 + throw new JSONException("不存在这个托盘");
  244 + }
  245 + if(locationCode.equals(container.getLocationCode())) {
  246 + /* 查询未完成的入库任务*/
  247 + LambdaQueryWrapper<TaskHeader> taskQueryWrapper = Wrappers.lambdaQuery();
  248 + taskQueryWrapper.eq(TaskHeader::getWarehouseCode, ShiroUtils.getWarehouseCode())
  249 + .in(TaskHeader::getTaskType, QuantityConstant.TASK_TYPE_WHOLERECEIPT,
  250 + QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT)
  251 + .lt(TaskHeader::getStatus, 100)
  252 + .eq(TaskHeader::getContainerCode, containerCode);
  253 + TaskHeader taskHeader = taskHeaderService.getOne(taskQueryWrapper);
  254 + if(taskHeader == null) {
  255 + throw new JSONException("没有找到托盘对应的任务");
  256 + }
  257 +
  258 + LambdaQueryWrapper<ReceiptDetail> receiptDetailQueryWrapper = Wrappers.lambdaQuery();
  259 + receiptDetailQueryWrapper.eq(ReceiptDetail::getId, receiptDetailId);
  260 + ReceiptDetail receiptDetail = receiptDetailService.getOne(receiptDetailQueryWrapper);
  261 + if(receiptDetail == null) {
  262 + throw new JSONException("没有找到入库单详情");
  263 + }
  264 +
  265 + LambdaQueryWrapper<ReceiptHeader> receiptHeaderQueryWrapper = Wrappers.lambdaQuery();
  266 + receiptHeaderQueryWrapper.eq(ReceiptHeader::getId, receiptDetail.getReceiptId());
  267 + ReceiptHeader receiptHeader = receiptHeaderService.getOne(receiptHeaderQueryWrapper);
  268 + if(receiptHeader == null) {
  269 + throw new JSONException("没有找到入库单");
  270 + }
  271 +
  272 + LambdaQueryWrapper<ReceiptContainerHeader> lambda = Wrappers.lambdaQuery();
  273 + lambda.eq(ReceiptContainerHeader::getContainerCode, containerCode)
  274 + .lt(ReceiptContainerHeader::getStatus, QuantityConstant.RECEIPT_CONTAINER_FINISHED);
  275 + List<ReceiptContainerHeader> list = receiptContainerHeaderService.list(lambda);
  276 + if (list.size() >= 1){
  277 + throw new ServiceException("容器已经生成任务,不能放物料了!");
  278 + }
  279 + ReceiptContainerHeader receiptContainerHeader = new ReceiptContainerHeader();
  280 + //如果不存在记录则新建记录
  281 + receiptContainerHeader.setWarehouseCode(ShiroUtils.getWarehouseCode());
  282 + receiptContainerHeader.setCompanyCode(companyCode);
  283 + receiptContainerHeader.setContainerCode(containerCode);
  284 + Container container2 = containerService.findAllByCode(containerCode);
  285 + receiptContainerHeader.setContainerType(container2.getContainerType());
  286 + receiptContainerHeader.setTaskType(String.valueOf(QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT));
  287 + receiptContainerHeader.setFromLocation(container2.getLocationCode());
  288 + receiptContainerHeader.setToLocation(locationCode);
  289 + receiptContainerHeader.setCreatedBy(ShiroUtils.getLoginName());
  290 + receiptContainerHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
  291 + receiptContainerHeader.setStatus((short)10);
  292 +
  293 + if (!receiptContainerHeaderService.save(receiptContainerHeader)){
  294 + throw new ServiceException("入库组盘头表保存失败");
  295 + }
  296 +
  297 + receiptHeader.setFirstStatus(QuantityConstant.RECEIPT_HEADER_RECEIVING);
  298 + receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_RECEIVING);
  299 + receiptHeaderService.update(receiptHeader, receiptHeaderQueryWrapper);
  300 +
  301 + taskHeader.setAllocationHeadId(receiptContainerHeader.getId());
  302 + taskHeaderService.update(taskHeader, taskQueryWrapper);
  303 +
  304 + for(ReceiptBill receiptBill : receiptBills) {
  305 + TaskDetail taskDetail = new TaskDetail();
  306 + taskDetail.setTaskId(taskHeader.getId());
  307 + taskDetail.setContainerCode(containerCode);
  308 + taskDetail.setTaskType(taskHeader.getTaskType());
  309 + taskDetail.setInternalTaskType(taskHeader.getInternalTaskType());
  310 + taskDetail.setWarehouseCode(ShiroUtils.getWarehouseCode());
  311 + taskDetail.setCompanyCode(companyCode);
  312 + taskDetail.setBillCode(receiptHeader.getCode());
  313 + taskDetail.setBillDetailId(Integer.parseInt(receiptBill.getReceiptDetailId()));
  314 + taskDetail.setMaterialCode(receiptBill.getMaterialCode());
  315 + taskDetail.setMaterialName(receiptBill.getMaterialName());
  316 + taskDetail.setQty(receiptBill.getQty());
  317 + taskDetail.setFromLocation(taskHeader.getFromLocation());
  318 + taskDetail.setToLocation(taskHeader.getToLocation());
  319 + taskDetail.setStatus(taskHeader.getStatus());
  320 + taskDetail.setBatch(receiptBill.getBatch());
  321 + taskDetail.setCompanyCode(taskHeader.getCompanyCode());
  322 + taskDetailService.save(taskDetail);
  323 +
  324 +
  325 + LambdaQueryWrapper<ReceiptDetail> receiptDetail2QueryWrapper = Wrappers.lambdaQuery();
  326 + receiptDetail2QueryWrapper.eq(ReceiptDetail::getId, receiptBill.getReceiptDetailId());
  327 + ReceiptDetail receiptDetail2 = receiptDetailService.getOne(receiptDetail2QueryWrapper);
  328 + if(receiptDetail2 == null) {
  329 + throw new JSONException("没有找到入库单详情");
  330 + }
  331 +
  332 + BigDecimal openQty = receiptDetail2.getOpenQty();
  333 + BigDecimal totalQty = receiptDetail2.getTotalQty();
  334 + BigDecimal qty = openQty.add(receiptBill.getQty());
  335 + if(totalQty.subtract(qty).compareTo(BigDecimal.ZERO) < 0) {
  336 + throw new Exception("配盘数量大于表单数量");
  337 + }
  338 +
  339 + receiptDetail2.setOpenQty(qty);
  340 + receiptDetailService.update(receiptDetail2, receiptDetail2QueryWrapper);
  341 +
  342 + ReceiptContainerDetail receiptContainerDetail = new ReceiptContainerDetail();
  343 + receiptContainerDetail.setReceiptContainerId(receiptContainerHeader.getId());
  344 + receiptContainerDetail.setWarehouseCode(ShiroUtils.getWarehouseCode());
  345 + receiptContainerDetail.setReceiptId(receiptHeader.getId());
  346 + receiptContainerDetail.setReceiptDetailId(receiptDetail2.getId());
  347 + receiptContainerDetail.setReceiptCode(receiptHeader.getCode());
  348 + receiptContainerDetail.setReceiptType(receiptHeader.getReceiptType());
  349 + receiptContainerDetail.setLocationCode(locationCode);
  350 + receiptContainerDetail.setContainerCode(containerCode);
  351 + receiptContainerDetail.setContainerType(container.getContainerType());
  352 + receiptContainerDetail.setCompanyCode(companyCode);
  353 +
  354 + LambdaQueryWrapper<Material> materialQueryWrapper = Wrappers.lambdaQuery();
  355 + materialQueryWrapper.eq(Material::getCode, receiptBill.getMaterialCode())
  356 + .eq(Material::getDeleted, 0);
  357 + Material material = materialService.getOne(materialQueryWrapper);
  358 +
  359 + receiptContainerDetail.setMaterialCode(material.getCode());
  360 + receiptContainerDetail.setMaterialName(material.getName());
  361 + receiptContainerDetail.setMaterialSpec(material.getSpec());
  362 + receiptContainerDetail.setMaterialUnit(material.getUnit());
  363 + receiptContainerDetail.setQty(receiptBill.getQty());
  364 + receiptContainerDetail.setStatus(10);
  365 + receiptContainerDetail.setCreatedBy(ShiroUtils.getLoginName());
  366 + receiptContainerDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
  367 + receiptContainerDetailService.save(receiptContainerDetail);
  368 + }
  369 +
  370 + } else {
  371 + /* ReceiptContainerView record = new ReceiptContainerView();
  372 + record.setReceiptContainerCode(receiptBills.get(0).getReceiptContainerCode());
  373 + record.setLocationCode(receiptBills.get(0).getLocationCode());
  374 + record.setTaskType((short)100);
  375 + record.setCompanyCode(receiptBills.get(0).getCompanyCode());
  376 + receiptContainerHeaderService.checkContainer(record);
  377 + receiptContainerHeaderService.mobileCheckLocationCode(record);
  378 + int receiptHeaderId = receiptHeaderService.createTodayHeader(companyCode);
  379 + ReceiptHeader receiptHeader = receiptHeaderService.getById(receiptHeaderId);
  380 + List<Integer> receiptDetailIds = receiptDetailService.insertTodayReceiptDetail(receiptHeaderId, receiptBills, true, companyCode);
  381 + if(receiptDetailIds != null && receiptDetailIds.size() > 0) {
  382 + int containerHeaderId = receiptContainerHeaderService.insertTodayReceiptContainerHeader(receiptBills.get(0), receiptHeader.getCode());
  383 + if(containerHeaderId > 0) {
  384 + List<Integer> receiptContainerDetailIds = receiptContainerDetailService.insertTodayReceiptcContainerDetail(containerHeaderId, receiptHeaderId, receiptDetailIds, receiptBills);
  385 + if(receiptContainerDetailIds != null && receiptContainerDetailIds.size() > 0) {
  386 +
  387 + } else {
  388 + return AjaxResult.error("入库组盘失败");
  389 + }
  390 + } else {
  391 + return AjaxResult.error("插入入库容器表单头失败");
  392 + }
  393 + } else {
  394 + return AjaxResult.error("插入入库明细表单失败");
  395 + } */
  396 + }
  397 + return AjaxResult.success("收货成功");
  398 + }
  399 +
  400 + @PostMapping("/findReceipt")
  401 + @ApiOperation("移动端查询入库单")
  402 + @Log(title = "移动端查询入库单", action = BusinessType.OTHER)
  403 + public AjaxResult findReceipt(@RequestBody @ApiParam(value = "物料号") Map<String, String> param){
  404 + String receiptCode = param.get("receiptCode");
  405 + String companyCode = param.get("companyCode");
  406 + if (StringUtils.isNull(receiptCode)){
  407 + return AjaxResult.error("上游系统关联单号为空");
  408 + } else if (StringUtils.isNull(companyCode)){
  409 + return AjaxResult.error("公司编码为空");
  410 + }
  411 +// else if (StringUtils.isNull(referType)) {
  412 +// return AjaxResult.error("上游系统关联单类型为空");
  413 +// }
  414 +
  415 + /* 查询入库单,如果数据库中不存在,则调用ERP接口拉取单据,成功后再次查询返回结果*/
  416 + LambdaQueryWrapper<ReceiptHeader> receiptLambdaQueryWrapper = Wrappers.lambdaQuery();
  417 + receiptLambdaQueryWrapper.eq(ReceiptHeader::getCode, receiptCode)
  418 + .eq(ReceiptHeader::getCompanyCode, companyCode);
  419 + ReceiptHeader receiptHeader = receiptHeaderService.getOne(receiptLambdaQueryWrapper);
  420 + if(receiptHeader == null) {
  421 + return AjaxResult.error("没有找到入库单");
  422 + }
  423 + ReceiptDomain receipt = new ReceiptDomain();
  424 + receipt.setReceiptHeader(receiptHeader);
  425 +
  426 + LambdaQueryWrapper<ReceiptDetail> receiptDetailQueryWrapper = Wrappers.lambdaQuery();
  427 + receiptDetailQueryWrapper.eq(ReceiptDetail::getReceiptId, receiptHeader.getId());
  428 + List<ReceiptDetail> receiptDetailList = receiptDetailService.list(receiptDetailQueryWrapper);
  429 + receipt.setReceiptDetails(receiptDetailList);
  430 + return AjaxResult.success(receipt);
  431 + }
  432 +
  433 + @PostMapping("/callBox")
  434 + @ApiOperation("移动端呼叫料盒")
  435 + @Log(title = "移动端呼叫料盒", action = BusinessType.OTHER)
  436 + @Transactional(rollbackFor = Exception.class)
  437 + public AjaxResult callBox(@RequestBody @ApiParam(value = "物料号") Map<String, String> param) {
  438 + String containerCode = param.get("containerCode");
  439 + String destinationLocation = param.get("destinationLocation");
  440 + int type = Integer.parseInt(param.get("type"));
  441 + String companyCode = param.get("companyCode");
  442 + Container container = new Container();
  443 + container.setCode(containerCode);
  444 + container.setWarehouseCode(ShiroUtils.getWarehouseCode());
  445 + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(container);
  446 + container = containerService.getOne(lambdaQueryWrapper);
  447 + if(container==null) {
  448 + return AjaxResult.error("容器不存在");
  449 + }
  450 + if (!StringUtils.isNotEmpty(container.getLocationCode())) {
  451 + return AjaxResult.error("容器不在库位[" + container.getLocationCode() + "]上");
  452 + }
  453 + if(!container.getLocationCode().equals(destinationLocation)) {
  454 + return AjaxResult.error("容器不在目的库位上");
  455 + }
  456 + Location temp = new Location();
  457 + temp.setCode(destinationLocation);
  458 + temp.setWarehouseCode(ShiroUtils.getWarehouseCode());
  459 + LambdaQueryWrapper lambda = Wrappers.lambdaQuery(temp);
  460 + Location loc = locationService.getOne(lambda);
  461 + if(StringUtils.isNotEmpty(destinationLocation)) {
  462 + //校验目标地址
  463 + if (loc == null) {
  464 + return AjaxResult.error("目标库位不存在");
  465 + }
  466 + if (!loc.getStatus().equals("empty")) {
  467 + return AjaxResult.error("目标库位非空闲");
  468 + }
  469 + }
  470 + //判断托盘是否已经存在任务
  471 + LambdaQueryWrapper<TaskHeader> headerQueryWrapper = Wrappers.lambdaQuery();
  472 + headerQueryWrapper.ne(TaskHeader::getStatus, 100)
  473 + .eq(TaskHeader::getContainerCode, containerCode);
  474 + Integer taskCount = taskHeaderService.count(headerQueryWrapper);
  475 + if (taskCount != null && taskCount.intValue() > 0) {
  476 + return AjaxResult.error("容器已存在任务");
  477 + }
  478 +
  479 + //创建主任务
  480 + TaskHeader taskHeader = new TaskHeader();
  481 + taskHeader.setWarehouseCode(loc.getWarehouseCode());
  482 + taskHeader.setCompanyCode(companyCode);//货主
  483 + if(type == 200) {
  484 + taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_SHELF);
  485 + taskHeader.setTaskType(QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT);
  486 + } else {
  487 + taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_PICKING);
  488 + taskHeader.setTaskType(QuantityConstant.TASK_TYPE_SORTINGSHIPMENT);
  489 + }
  490 + taskHeader.setContainerCode(container.getCode());
  491 + taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD);
  492 + taskHeader.setFromLocation(loc.getCode());
  493 + taskHeader.setToLocation(loc.getCode());
  494 + taskHeader.setCreated(new Date());
  495 + taskHeader.setCreatedBy(ShiroUtils.getLoginName());
  496 + taskHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
  497 + taskHeader.setLastUpdated(new Date());
  498 + if(taskHeaderService.save(taskHeader)){
  499 + //锁定库位状态
  500 + locationService.updateStatus(loc.getContainerCode(),"lock");
  501 + }else{
  502 + throw new ServiceException("补充入库主表生成失败!");
  503 + }
  504 +
  505 + return AjaxResult.success(taskHeader.getId());
  506 + }
  507 +}
src/main/java/com/huaheng/mobile/receipt/MobileOneByOneReceiptController.java 0 → 100644
  1 +package com.huaheng.mobile.receipt;
  2 +
  3 +import com.huaheng.framework.aspectj.lang.annotation.Log;
  4 +import com.huaheng.framework.aspectj.lang.constant.BusinessType;
  5 +import com.huaheng.framework.web.domain.AjaxResult;
  6 +import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerView;
  7 +import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
  8 +import io.swagger.annotations.Api;
  9 +import io.swagger.annotations.ApiOperation;
  10 +import io.swagger.annotations.ApiParam;
  11 +import org.springframework.web.bind.annotation.*;
  12 +
  13 +import javax.annotation.Resource;
  14 +import java.math.BigDecimal;
  15 +
  16 +/**
  17 + *
  18 + * @author Enzo Cotter
  19 + * @date 2019/12/16
  20 + */
  21 +@CrossOrigin
  22 +@RestController
  23 +@RequestMapping("/mobile/receipt/oneByOne")
  24 +@Api(tags = {"MobileOneByOneReceiptController"}, description = "移动端逐件收货")
  25 +public class MobileOneByOneReceiptController {
  26 +
  27 + @Resource
  28 + private ReceiptContainerHeaderService receiptContainerHeaderService;
  29 +
  30 + @PostMapping("/save")
  31 + @ApiOperation("移动端逐件收货保存")
  32 + @Log(title = "移动端逐件收货保存", action = BusinessType.OTHER)
  33 + public AjaxResult save(@RequestBody @ApiParam(value="容器号") ReceiptContainerView record) throws Exception {
  34 + record.setQty(new BigDecimal("1"));
  35 + AjaxResult retResult = receiptContainerHeaderService.saveCountain(record.getReceiptCode(), record.getReceiptContainerCode(),
  36 + record.getReceiptDetailId(), record.getLocationCode(), record.getQty().intValue(), null);
  37 + return retResult;
  38 + }
  39 +}
src/main/java/com/huaheng/mobile/receipt/MobilePutawayController.java 0 → 100644
  1 +package com.huaheng.mobile.receipt;
  2 +
  3 +import com.alibaba.fastjson.JSONException;
  4 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  6 +import com.huaheng.common.utils.security.ShiroUtils;
  7 +import com.huaheng.framework.aspectj.lang.annotation.Log;
  8 +import com.huaheng.framework.aspectj.lang.constant.BusinessType;
  9 +import com.huaheng.framework.web.domain.AjaxResult;
  10 +import com.huaheng.pc.config.location.domain.Location;
  11 +import com.huaheng.pc.config.location.service.LocationService;
  12 +import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
  13 +import io.swagger.annotations.Api;
  14 +import io.swagger.annotations.ApiOperation;
  15 +import io.swagger.annotations.ApiParam;
  16 +import org.springframework.web.bind.annotation.PostMapping;
  17 +import org.springframework.web.bind.annotation.RequestBody;
  18 +import org.springframework.web.bind.annotation.RequestMapping;
  19 +import org.springframework.web.bind.annotation.RestController;
  20 +
  21 +import javax.annotation.Resource;
  22 +import java.util.Map;
  23 +
  24 +/**
  25 + *
  26 + * @author Enzo Cotter
  27 + * @date 2019/12/16
  28 + */
  29 +@RestController
  30 +@RequestMapping("/mobile/putaway/execute")
  31 +@Api(tags = {"MobilePutawayController"}, description = "手机收货上架")
  32 +public class MobilePutawayController {
  33 +
  34 + @Resource
  35 + private TaskHeaderService taskService;
  36 + @Resource
  37 + private LocationService locationService;
  38 +
  39 +// @PostMapping("/createReceiptTask")
  40 +// @ApiOperation("手机扫描容器收货上架")
  41 +// @Log(title = "手机扫描容器收货上架", action = BusinessType.OTHER)
  42 +// public AjaxResult createReceiptTask(@RequestBody @ApiParam(value="容器号") Map<String, String> param) throws Exception {
  43 +// if (param.get("containerCode") == null || param.get("containerCode").trim().length() < 1) {
  44 +// throw new JSONException("容器号(containerCode)不能为空");
  45 +// }
  46 +// return AjaxResult retResult = taskService.mobileCreateReceiptTask(param.get("containerCode"), "L10-27-01");
  47 +// }
  48 +
  49 + @PostMapping("/getLocationFromContainer")
  50 + @ApiOperation("手机扫描容器获得库位号")
  51 + @Log(title = "手机扫描容器获得库位号", action = BusinessType.OTHER)
  52 + public AjaxResult getLocationFromContainer(@RequestBody @ApiParam(value="容器号") Map<String, String> param) throws Exception {
  53 + if (param.get("containerCode") == null || param.get("containerCode").trim().length() < 1) {
  54 + throw new JSONException("容器号(containerCode)不能为空");
  55 + }
  56 + LambdaQueryWrapper<Location> queryWrapper = Wrappers.lambdaQuery();
  57 + queryWrapper.eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode())
  58 + .eq(Location::getDeleted, false)
  59 + .eq(Location::getContainerCode, param.get("containerCode"));
  60 + Location location = locationService.getOne(queryWrapper);
  61 + if(location == null) {
  62 + AjaxResult.error("没有该库位");
  63 + }
  64 + return AjaxResult.success("获取成功",location.getCode());
  65 + }
  66 +
  67 + @PostMapping("/createQuickTask")
  68 + @ApiOperation("手机扫描容器收货上架")
  69 + @Log(title = "手机扫描容器收货上架", action = BusinessType.OTHER)
  70 + public AjaxResult createQuickTask(@RequestBody @ApiParam(value="容器号") Map<String, String> param) throws Exception {
  71 + if (param.get("containerCode") == null || param.get("containerCode").trim().length() < 1) {
  72 + throw new JSONException("容器号(containerCode)不能为空");
  73 + }
  74 +
  75 + AjaxResult retResult = taskService.createQuickTask(param.get("containerCode"));
  76 + return retResult;
  77 + }
  78 +
  79 + @PostMapping("/scanLocationCode")
  80 + @ApiOperation("手机扫描库位收货上架")
  81 + @Log(title = "手机扫描库位收货上架", action = BusinessType.OTHER)
  82 + public AjaxResult scanLocationCode(@RequestBody @ApiParam(value="库位编码") Map<String, String> param) throws Exception {
  83 + if (param.get("locationCode") == null || param.get("locationCode").trim().length() < 1) {
  84 + throw new JSONException("库位号(locationCode)不能为空");
  85 + }
  86 + AjaxResult retResult = taskService.completeTask(param.get("locationCode"));
  87 + return retResult;
  88 + }
  89 +
  90 + @PostMapping("/createReplenishTask")
  91 + @ApiOperation("手机扫描容器创建补充入库任务")
  92 + @Log(title = "手机扫描容器创建补充入库任务", action = BusinessType.OTHER)
  93 + public AjaxResult createReplenishTask(@RequestBody @ApiParam(value="容器号") Map<String, String> param) throws Exception {
  94 + if (param.get("containerCode") == null || param.get("containerCode").trim().length() < 1) {
  95 + throw new JSONException("容器号(containerCode)不能为空");
  96 + }
  97 + AjaxResult retResult = taskService.createReplenishTask(param.get("containerCode"), (short)1);
  98 + return retResult;
  99 + }
  100 +}
src/main/java/com/huaheng/mobile/receipt/ReceiptBill.java 0 → 100644
  1 +package com.huaheng.mobile.receipt;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import java.math.BigDecimal;
  6 +
  7 +/**
  8 + *
  9 + * @author Enzo Cotter
  10 + * @date 2019/12/15
  11 + */
  12 +@Data
  13 +public class ReceiptBill {
  14 + /** 容器编码 */
  15 + String receiptContainerCode;
  16 + /** 物料code */
  17 + String materialCode;
  18 + /** 收货数量 */
  19 + BigDecimal qty;
  20 + /** 库位编码 */
  21 + String locationCode;
  22 + /** 批次号 */
  23 + String batch;
  24 + /** 项目号 */
  25 + String project;
  26 +
  27 + String receiptDetailId;
  28 +
  29 + /** 货主Code */
  30 + String companyCode;
  31 + /** 重量 */
  32 + String weight;
  33 + String materialName;
  34 +}
src/main/java/com/huaheng/mobile/receipt/ReceiptResult.java 0 → 100644
  1 +package com.huaheng.mobile.receipt;
  2 +
  3 +import lombok.Data;
  4 +
  5 +/**
  6 + *
  7 + * @author Enzo Cotter
  8 + * @date 2019/12/15
  9 + */
  10 +@Data
  11 +public class ReceiptResult {
  12 +
  13 + private int receiptId;
  14 +
  15 + private String receiptCode;
  16 +}
src/main/java/com/huaheng/mobile/shipment/Materialforecast.java 0 → 100644
  1 +package com.huaheng.mobile.shipment;
  2 +
  3 +/**
  4 + *
  5 + * @author Enzo Cotter
  6 + * @date 2019/12/16
  7 + */
  8 +public class Materialforecast {
  9 +
  10 + private String materialCode;
  11 + private String materialName;
  12 + private String specification;
  13 + private int type;
  14 +
  15 + public String getMaterialCode() {
  16 + return materialCode;
  17 + }
  18 +
  19 + public void setMaterialCode(String materialCode) {
  20 + this.materialCode = materialCode;
  21 + }
  22 +
  23 + public String getMaterialName() {
  24 + return materialName;
  25 + }
  26 +
  27 + public void setMaterialName(String materialName) {
  28 + this.materialName = materialName;
  29 + }
  30 +
  31 + public int getType() {
  32 + return type;
  33 + }
  34 +
  35 + public void setType(int type) {
  36 + this.type = type;
  37 + }
  38 +
  39 + public String getSpecification() {
  40 + return specification;
  41 + }
  42 +
  43 + public void setSpecification(String specification) {
  44 + this.specification = specification;
  45 + }
  46 +
  47 + @Override
  48 + public String toString() {
  49 + return "Materialforecast{" +
  50 + "materialCode='" + materialCode + '\'' +
  51 + ", materialName='" + materialName + '\'' +
  52 + ", specification='" + specification + '\'' +
  53 + ", type=" + type +
  54 + '}';
  55 + }
  56 +}
src/main/java/com/huaheng/mobile/shipment/MobileShipmentController.java 0 → 100644
  1 +package com.huaheng.mobile.shipment;
  2 +
  3 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  5 +import com.huaheng.common.utils.StringUtils;
  6 +import com.huaheng.common.utils.security.ShiroUtils;
  7 +import com.huaheng.framework.aspectj.lang.annotation.Log;
  8 +import com.huaheng.framework.aspectj.lang.constant.BusinessType;
  9 +import com.huaheng.framework.web.controller.BaseController;
  10 +import com.huaheng.framework.web.domain.AjaxResult;
  11 +import com.huaheng.mobile.invenory.TaskIds;
  12 +import com.huaheng.pc.config.company.domain.Company;
  13 +import com.huaheng.pc.config.company.service.CompanyService;
  14 +import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderService;
  15 +import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
  16 +import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService;
  17 +import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
  18 +import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
  19 +import com.huaheng.pc.task.taskHeader.domain.ShipmentTaskCreateModel;
  20 +import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
  21 +import io.swagger.annotations.ApiParam;
  22 +import org.springframework.beans.factory.annotation.Autowired;
  23 +import org.springframework.transaction.annotation.Transactional;
  24 +import org.springframework.web.bind.annotation.*;
  25 +
  26 +import javax.annotation.Resource;
  27 +import java.util.ArrayList;
  28 +import java.util.List;
  29 +import java.util.Map;
  30 +
  31 +/**
  32 + * @author mahua
  33 + * @ClassName MobileShipmentController
  34 + * @projectName wms_xinyi
  35 + * @description: TODO
  36 + * @date 2020/2/1115:29
  37 + */
  38 +@RestController
  39 +@RequestMapping("/mobile/shipment")
  40 +public class MobileShipmentController extends BaseController {
  41 + @Resource
  42 + private ShipmentHeaderService shipmentHeaderService;
  43 + @Resource
  44 + private ShipmentDetailService shipmentDetailService;
  45 + @Resource
  46 + private ShipmentContainerHeaderService shipmentContainerHeaderService;
  47 + @Resource
  48 + private CompanyService companyService;
  49 + @Autowired
  50 + private TaskHeaderService taskHeaderService;
  51 +
  52 + /**
  53 + * 查询出库单主列表
  54 + */
  55 + @Log(title = "出库-出库单", operating="查看出库主单", action = BusinessType.GRANT)
  56 + @PostMapping("/list")
  57 + public AjaxResult list(@RequestBody @ApiParam(value = "出库单号-referCode、货主编码-companyCode、出库单类型-shipmentType") Map<String, String> param) {
  58 + if (StringUtils.isEmpty(param.get("companyCode"))) {
  59 + return AjaxResult.error("上游系统单号为空");
  60 + } else if (StringUtils.isEmpty(param.get("shipmentType"))) {
  61 + return AjaxResult.error("类型为空");
  62 + } else if (StringUtils.isEmpty(param.get("referCode"))) {
  63 + return AjaxResult.error("上游系统单号为空");
  64 + }
  65 + LambdaQueryWrapper<ShipmentHeader> lambdaQueryWrapper = Wrappers.lambdaQuery();
  66 + lambdaQueryWrapper.eq(ShipmentHeader::getWarehouseCode, ShiroUtils.getWarehouseCode())
  67 + .eq(ShipmentHeader::getDeleted,false)
  68 + .in(ShipmentHeader::getCompanyCode, param.get("companyCode"))
  69 + .eq(ShipmentHeader::getShipmentType,param.get("shipmentType"))
  70 + .eq(ShipmentHeader::getReferCode, param.get("referCode"))
  71 + .orderByDesc(ShipmentHeader::getId);
  72 + ShipmentHeader shipmentHeader = shipmentHeaderService.getOne(lambdaQueryWrapper);
  73 +
  74 + if (shipmentHeader == null) {
  75 +// LambdaQueryWrapper<Company> lambdaQueryWrapper1 = Wrappers.lambdaQuery();
  76 +// lambdaQueryWrapper1.eq(Company::getCode, param.get("companyCode"));
  77 +// Company company = companyService.getOne(lambdaQueryWrapper1);
  78 +// shipmentHeaderService.findErpShipment(String.valueOf(company.getId()), param.get("shipmentType"), param.get("referCode"));
  79 +// shipmentHeader = shipmentHeaderService.getOne(lambdaQueryWrapper);
  80 + return AjaxResult.error("没有找到出库单");
  81 + }
  82 + LambdaQueryWrapper<ShipmentDetail> detailLambdaQueryWrapper = Wrappers.lambdaQuery();
  83 + detailLambdaQueryWrapper.eq(ShipmentDetail::getShipmentId, shipmentHeader.getId());
  84 + Shipment shipment = new Shipment();
  85 + shipment.setShipmentHeader(shipmentHeader);
  86 + List<ShipmentDetail> shipmentDetailList = shipmentDetailService.list(detailLambdaQueryWrapper);
  87 + shipment.setShipmentDetailList(shipmentDetailList);
  88 + return AjaxResult.success(shipment);
  89 + }
  90 +
  91 + /**
  92 + * 自动组盘
  93 + */
  94 + @PostMapping("/autoCombination")
  95 + @ResponseBody
  96 + public AjaxResult autoCombination(@RequestBody Map<String, String> param){
  97 + String shipmentCode = param.get("shipmentCode");
  98 + AjaxResult ajaxResult = shipmentContainerHeaderService.autoCombination(shipmentCode);
  99 + return ajaxResult;
  100 + }
  101 +
  102 + /**
  103 + * 根据出库单号生成出库任务
  104 + */
  105 + @PostMapping("/createShipmentTask")
  106 + @ResponseBody
  107 + @Transactional(rollbackFor = Exception.class)
  108 + public AjaxResult createShipmentTask(@RequestBody List<TaskIds> taskDetails){
  109 + ShipmentTaskCreateModel shipmentTask = new ShipmentTaskCreateModel();
  110 + List<Integer> taskIds = new ArrayList<>();
  111 + for (TaskIds task : taskDetails) {
  112 + shipmentTask.setShipmentContainerHeaderIds(task.getTaskId());
  113 + AjaxResult ajaxResult = taskHeaderService.createTaskFromShipmentContainers(shipmentTask);
  114 + if(ajaxResult.hasErr()){
  115 + return ajaxResult;
  116 + }
  117 + Integer taskId = (Integer)ajaxResult.getData();
  118 + taskIds.add(taskId);
  119 + }
  120 + return AjaxResult.success(taskIds);
  121 + }
  122 +
  123 +
  124 +}
src/main/java/com/huaheng/mobile/shipment/MobileTaskForASRSController.java 0 → 100644
  1 +package com.huaheng.mobile.shipment;
  2 +
  3 +import com.alibaba.fastjson.JSONException;
  4 +import com.huaheng.framework.aspectj.lang.annotation.Log;
  5 +import com.huaheng.framework.aspectj.lang.constant.BusinessType;
  6 +import com.huaheng.framework.web.domain.AjaxResult;
  7 +import com.huaheng.pc.config.material.service.MaterialService;
  8 +import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
  9 +import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
  10 +import io.swagger.annotations.Api;
  11 +import io.swagger.annotations.ApiOperation;
  12 +import io.swagger.annotations.ApiParam;
  13 +import org.springframework.web.bind.annotation.*;
  14 +
  15 +import javax.annotation.Resource;
  16 +import java.util.List;
  17 +import java.util.Map;
  18 +
  19 +/**
  20 + *
  21 + * @author Enzo Cotter
  22 + * @date 2019/12/16
  23 + */
  24 +@CrossOrigin
  25 +@RestController
  26 +@RequestMapping("/mobile/task/taskForASRS")
  27 +@Api(tags = {"MobileTaskForASRSController"}, description = "手机立体库任务拣货相关")
  28 +public class MobileTaskForASRSController {
  29 +
  30 +
  31 + @Resource
  32 + private TaskHeaderService taskHeaderService;
  33 + @Resource
  34 + private TaskDetailService taskDetailService;
  35 + @Resource
  36 + private MaterialService materialService;
  37 +
  38 + @PostMapping("/getMaterialForecast")
  39 + @ApiOperation("获得物料联想词")
  40 + @Log(title = "获得物料联想词", action = BusinessType.OTHER)
  41 + public AjaxResult getMaterialForecast(@RequestBody @ApiParam(value="物料号") Map<String, String> param) {
  42 + if (param.get("code") == null || param.get("code").trim().length() < 1) {
  43 + throw new JSONException("容器号(code)不能为空");
  44 + }
  45 + List<Materialforecast> forecasts = materialService.getMaterialForecast(param.get("code"));
  46 + return AjaxResult.success("");
  47 + }
  48 +}
0 \ No newline at end of file 49 \ No newline at end of file
src/main/java/com/huaheng/mobile/shipment/Shipment.java 0 → 100644
  1 +package com.huaheng.mobile.shipment;
  2 +
  3 +import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
  4 +import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
  5 +import lombok.Data;
  6 +
  7 +import java.io.Serializable;
  8 +import java.util.List;
  9 +
  10 +/**
  11 + * @author mahua
  12 + * @ClassName Shipment
  13 + * @projectName wms_xinyi
  14 + * @description: TODO
  15 + * @date 2020/2/1115:46
  16 + */
  17 +@Data
  18 +public class Shipment implements Serializable {
  19 +
  20 + private ShipmentHeader shipmentHeader;
  21 +
  22 + private List<ShipmentDetail> shipmentDetailList;
  23 +
  24 +}
src/main/java/com/huaheng/mobile/shipment/ShipmentBill.java 0 → 100644
  1 +package com.huaheng.mobile.shipment;
  2 +
  3 +import java.math.BigDecimal;
  4 +
  5 +/**
  6 + * 出库单据
  7 + * @author Enzo Cotter
  8 + * @date 2019/12/16
  9 + */
  10 +public class ShipmentBill {
  11 +
  12 + /** 物料code */
  13 + private String materialCode;
  14 + /** 出库数量 */
  15 + private BigDecimal qty;
  16 + /** 货主id */
  17 + private String companyId;
  18 + /** 货主code */
  19 + private String companyCode;
  20 + /** 货架*/
  21 + private String location;
  22 + /**接收点-工位*/
  23 + private int point;
  24 +
  25 + public String getMaterialCode() {
  26 + return materialCode;
  27 + }
  28 +
  29 + public void setMaterialCode(String materialCode) {
  30 + this.materialCode = materialCode;
  31 + }
  32 +
  33 + public BigDecimal getQty() {
  34 + return qty;
  35 + }
  36 +
  37 + public void setQty(BigDecimal qty) {
  38 + this.qty = qty;
  39 + }
  40 +
  41 + public String getCompanyId() {
  42 + return companyId;
  43 + }
  44 +
  45 + public void setCompanyId(String companyId) {
  46 + this.companyId = companyId;
  47 + }
  48 +
  49 + public String getCompanyCode() {
  50 + return companyCode;
  51 + }
  52 +
  53 + public void setCompanyCode(String companyCode) {
  54 + this.companyCode = companyCode;
  55 + }
  56 +
  57 + public String getLocation() {
  58 + return location;
  59 + }
  60 +
  61 + public void setLocation(String location) {
  62 + this.location = location;
  63 + }
  64 +
  65 + public int getPoint() {
  66 + return point;
  67 + }
  68 +
  69 + public void setPoint(int point) {
  70 + this.point = point;
  71 + }
  72 +
  73 + @Override
  74 + public String toString() {
  75 + return "ShipmentBill{" +
  76 + "materialCode='" + materialCode + '\'' +
  77 + ", qty=" + qty +
  78 + ", companyId='" + companyId + '\'' +
  79 + ", companyCode='" + companyCode + '\'' +
  80 + ", location='" + location + '\'' +
  81 + ", point=" + point +
  82 + '}';
  83 + }
  84 +}
src/main/java/com/huaheng/mobile/shipment/ShipmentTaskModel.java 0 → 100644
  1 +package com.huaheng.mobile.shipment;
  2 +
  3 +/**
  4 + *
  5 + * @author Enzo Cotter
  6 + * @date 2019/12/16
  7 + */
  8 +public class ShipmentTaskModel {
  9 +
  10 + /**
  11 + * 需要创建任务的出库货箱列表
  12 + */
  13 + private int[] shipmentContainerHeaderIds;
  14 + /**
  15 + * 是否优先创建整出任务,1,表示可以创建整出就优先创建整出,不能的话就创建拣选出;2,表示只创建拣选出;
  16 + */
  17 + private int taskType;
  18 +
  19 + /**
  20 + * 优先级
  21 + */
  22 + private short priority;
  23 +
  24 + public short getPriority() {
  25 + return priority;
  26 + }
  27 +
  28 + public void setPriority(short priority) {
  29 + this.priority = priority;
  30 + }
  31 +
  32 + public int[] getShipmentContainerHeaderIds() {
  33 + return shipmentContainerHeaderIds;
  34 + }
  35 +
  36 + public void setShipmentContainerHeaderIds(int[] shipmentContainerHeaderIds) {
  37 + this.shipmentContainerHeaderIds = shipmentContainerHeaderIds;
  38 + }
  39 +
  40 + public int getTaskType() {
  41 + return taskType;
  42 + }
  43 +
  44 + public void setTaskType(int taskType) {
  45 + this.taskType = taskType;
  46 + }
  47 +}
src/main/java/com/huaheng/pc/common/mapper/ApkMapper.java 0 → 100644
  1 +package com.huaheng.pc.common.mapper;
  2 +
  3 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  4 +import com.huaheng.mobile.download.ApkInfo;
  5 +import org.apache.ibatis.annotations.Param;
  6 +
  7 +import java.util.List;
  8 +
  9 +public interface ApkMapper extends BaseMapper<ApkInfo> {
  10 +
  11 +
  12 + // @Select("select * from apkinfo where pkgName=#{pkgName}")
  13 + List<ApkInfo> getApkInfoByPkgName(String pkgName);
  14 +
  15 + // @Options(useGeneratedKeys = true, keyProperty = "id")
  16 + // @Insert("insert into apkinfo(pkgName, versionCode, versionName, url, md5) values(#{pkgName},#{versionCode},#{versionName},#{url},#{md5})")
  17 + int insertApkInfo(@Param("pkgName") String pkgName, @Param("versionCode") int versionCode, @Param("versionName") String versionName, @Param("url") String url, @Param("md5") String md5);
  18 +
  19 + // @Options(useGeneratedKeys = true, keyProperty = "id")
  20 + // @Insert("delete from apkinfo")
  21 + void clearApkInfo();
  22 +
  23 +}
src/main/java/com/huaheng/pc/config/location/mapper/LocationMapper.java
@@ -24,4 +24,6 @@ public interface LocationMapper extends BaseMapper&lt;Location&gt; { @@ -24,4 +24,6 @@ public interface LocationMapper extends BaseMapper&lt;Location&gt; {
24 //库位利用率 24 //库位利用率
25 List<LinkedHashMap<String, Object>> getLocationProp(); 25 List<LinkedHashMap<String, Object>> getLocationProp();
26 26
  27 + List<Location> pickLocation();
  28 +
27 } 29 }
28 \ No newline at end of file 30 \ No newline at end of file
src/main/java/com/huaheng/pc/config/location/service/LocationService.java
@@ -24,4 +24,19 @@ public interface LocationService extends IService&lt;Location&gt;{ @@ -24,4 +24,19 @@ public interface LocationService extends IService&lt;Location&gt;{
24 24
25 //库位利用率 25 //库位利用率
26 List<LinkedHashMap<String, Object>> getLocationProp(); 26 List<LinkedHashMap<String, Object>> getLocationProp();
  27 +
  28 + /**
  29 + * 查询空闲可用的库位用来补充入库
  30 + * @return location
  31 + */
  32 + List<Location> pickLocation();
  33 +
  34 + /**
  35 + * 验证库位合法性
  36 + * @param code
  37 + * @return
  38 + */
  39 + boolean checkLocation(String code);
  40 +
  41 + boolean getFreeLocation(String materialCode, String batch);
27 } 42 }
src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java
@@ -205,4 +205,51 @@ public class LocationServiceImpl extends ServiceImpl&lt;LocationMapper, Location&gt; i @@ -205,4 +205,51 @@ public class LocationServiceImpl extends ServiceImpl&lt;LocationMapper, Location&gt; i
205 return locationMapper.getLocationProp(); 205 return locationMapper.getLocationProp();
206 } 206 }
207 207
  208 + @Override
  209 + public List<Location> pickLocation() {
  210 + return locationMapper.pickLocation();
  211 + }
  212 +
  213 + /**
  214 + * 验证库位合法性
  215 + *
  216 + * @param code
  217 + * @return
  218 + */
  219 + @Override
  220 + public boolean checkLocation(String code) {
  221 + LambdaQueryWrapper<Location> queryWrapper = Wrappers.lambdaQuery();
  222 + queryWrapper.eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode())
  223 + .eq(Location::getDeleted,false)
  224 + .eq(Location::getCode, code);
  225 + List<Location> locations = list(queryWrapper);
  226 + if (locations.size() >= 1){
  227 + Location location = locations.get(0);
  228 + String containerCode =location.getContainerCode();
  229 + if (containerCode != null && containerCode.length() > 0) {
  230 + throw new ServiceException("货架上已有容器");
  231 + }
  232 + String status = location.getStatus();
  233 + if(!"empty".equals(status)) {
  234 + throw new ServiceException("库位状态不为空");
  235 + }
  236 + return true;
  237 + } else {
  238 + return false;
  239 + }
  240 + }
  241 +
  242 + @Override
  243 + public boolean getFreeLocation(String materialCode, String batch) {
  244 + LambdaQueryWrapper<Location> lambdaQueryWrapper = Wrappers.lambdaQuery();
  245 + lambdaQueryWrapper.eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode())
  246 + .eq(Location::getContainerCode, "")
  247 + .eq(Location::getDeleted, false)
  248 + .eq(Location::getStatus, "empty");
  249 + List<Location> locations = locationService.list(lambdaQueryWrapper);
  250 + if(locations != null && locations.size() > 0) {
  251 + return true;
  252 + }
  253 + return false;
  254 + }
208 } 255 }
src/main/java/com/huaheng/pc/config/material/mapper/MaterialMapper.java
@@ -3,6 +3,8 @@ package com.huaheng.pc.config.material.mapper; @@ -3,6 +3,8 @@ package com.huaheng.pc.config.material.mapper;
3 import com.baomidou.mybatisplus.core.mapper.BaseMapper; 3 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 import com.huaheng.pc.config.material.domain.Material; 4 import com.huaheng.pc.config.material.domain.Material;
5 5
  6 +import java.util.List;
  7 +
6 public interface MaterialMapper extends BaseMapper<Material> { 8 public interface MaterialMapper extends BaseMapper<Material> {
7 9
8 /** 10 /**
@@ -11,4 +13,10 @@ public interface MaterialMapper extends BaseMapper&lt;Material&gt; { @@ -11,4 +13,10 @@ public interface MaterialMapper extends BaseMapper&lt;Material&gt; {
11 * @return Material 13 * @return Material
12 */ 14 */
13 Material findAllByCode(String code); 15 Material findAllByCode(String code);
  16 +
  17 + /**
  18 + * 根据编码查询物料
  19 + * @return Material
  20 + */
  21 + List<Material> findLatest();
14 } 22 }
15 \ No newline at end of file 23 \ No newline at end of file
src/main/java/com/huaheng/pc/config/material/service/MaterialService.java
1 package com.huaheng.pc.config.material.service; 1 package com.huaheng.pc.config.material.service;
2 2
3 import com.huaheng.framework.web.domain.AjaxResult; 3 import com.huaheng.framework.web.domain.AjaxResult;
  4 +import com.huaheng.mobile.shipment.Materialforecast;
4 import com.huaheng.pc.config.material.domain.Material; 5 import com.huaheng.pc.config.material.domain.Material;
5 import com.baomidou.mybatisplus.extension.service.IService; 6 import com.baomidou.mybatisplus.extension.service.IService;
6 7
@@ -32,4 +33,13 @@ public interface MaterialService extends IService&lt;Material&gt;{ @@ -32,4 +33,13 @@ public interface MaterialService extends IService&lt;Material&gt;{
32 AjaxResult addSave(Material material); 33 AjaxResult addSave(Material material);
33 34
34 Material findAllByCode(String code); 35 Material findAllByCode(String code);
  36 +
  37 + List<Material> findLatest();
  38 +
  39 + /**
  40 + * 获得物料联想词
  41 + * @param code
  42 + * @return
  43 + */
  44 + List<Materialforecast> getMaterialForecast(String code);
35 } 45 }
src/main/java/com/huaheng/pc/config/material/service/MaterialServiceImpl.java
@@ -7,16 +7,20 @@ import com.huaheng.common.support.Convert; @@ -7,16 +7,20 @@ import com.huaheng.common.support.Convert;
7 import com.huaheng.common.utils.StringUtils; 7 import com.huaheng.common.utils.StringUtils;
8 import com.huaheng.common.utils.security.ShiroUtils; 8 import com.huaheng.common.utils.security.ShiroUtils;
9 import com.huaheng.framework.web.domain.AjaxResult; 9 import com.huaheng.framework.web.domain.AjaxResult;
  10 +import com.huaheng.mobile.shipment.Materialforecast;
10 import com.huaheng.pc.config.materialMultiple.domain.MaterialMultiple; 11 import com.huaheng.pc.config.materialMultiple.domain.MaterialMultiple;
11 import com.huaheng.pc.config.materialType.domain.MaterialType; 12 import com.huaheng.pc.config.materialType.domain.MaterialType;
12 import com.huaheng.pc.config.materialType.service.MaterialTypeService; 13 import com.huaheng.pc.config.materialType.service.MaterialTypeService;
13 import com.huaheng.pc.config.materialUnit.domain.MaterialUnit; 14 import com.huaheng.pc.config.materialUnit.domain.MaterialUnit;
14 import com.huaheng.pc.config.materialUnit.service.MaterialUnitService; 15 import com.huaheng.pc.config.materialUnit.service.MaterialUnitService;
  16 +import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
  17 +import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
15 import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail; 18 import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;
16 import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService; 19 import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService;
17 import org.springframework.stereotype.Service; 20 import org.springframework.stereotype.Service;
18 import javax.annotation.Resource; 21 import javax.annotation.Resource;
19 import java.lang.ref.WeakReference; 22 import java.lang.ref.WeakReference;
  23 +import java.util.ArrayList;
20 import java.util.List; 24 import java.util.List;
21 import java.util.Map; 25 import java.util.Map;
22 26
@@ -35,6 +39,8 @@ public class MaterialServiceImpl extends ServiceImpl&lt;MaterialMapper, Material&gt; i @@ -35,6 +39,8 @@ public class MaterialServiceImpl extends ServiceImpl&lt;MaterialMapper, Material&gt; i
35 private MaterialTypeService materialTypeService; 39 private MaterialTypeService materialTypeService;
36 @Resource 40 @Resource
37 private MaterialMapper materialMapper; 41 private MaterialMapper materialMapper;
  42 + @Resource
  43 + private InventoryDetailService inventoryDetailService;
38 44
39 @Override 45 @Override
40 public AjaxResult removeByIds(String ids) { 46 public AjaxResult removeByIds(String ids) {
@@ -171,4 +177,49 @@ public class MaterialServiceImpl extends ServiceImpl&lt;MaterialMapper, Material&gt; i @@ -171,4 +177,49 @@ public class MaterialServiceImpl extends ServiceImpl&lt;MaterialMapper, Material&gt; i
171 177
172 return String.format(materialType.getAutoGenSerialNumFormat(), materialType.getTrackSerialNum()); 178 return String.format(materialType.getAutoGenSerialNumFormat(), materialType.getTrackSerialNum());
173 } 179 }
  180 +
  181 + @Override
  182 + public List<Material> findLatest() {
  183 + return materialMapper.findLatest();
  184 + }
  185 +
  186 + /**
  187 + * 获得物料联想词
  188 + *
  189 + * @param code
  190 + * @return
  191 + */
  192 + @Override
  193 + public List<Materialforecast> getMaterialForecast(String code) {
  194 + List<Materialforecast> forecast = new ArrayList<>();
  195 + LambdaQueryWrapper<InventoryDetail> detailLambdaQueryWrapper = Wrappers.lambdaQuery();
  196 + detailLambdaQueryWrapper.eq(InventoryDetail::getMaterialCode, code)
  197 + .eq(InventoryDetail::getWarehouseCode, ShiroUtils.getWarehouseCode())
  198 + .in(InventoryDetail::getCompanyCode,ShiroUtils.getCompanyCodeList());
  199 + List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(detailLambdaQueryWrapper);
  200 + if (!inventoryDetailList.isEmpty()) {
  201 + for (InventoryDetail inventoryDetail : inventoryDetailList) {
  202 + Materialforecast materialforecast = new Materialforecast();
  203 + materialforecast.setMaterialCode(inventoryDetail.getMaterialCode());
  204 + materialforecast.setType(0);
  205 + forecast.add(materialforecast);
  206 + }
  207 + } else {
  208 + detailLambdaQueryWrapper = Wrappers.lambdaQuery();
  209 + detailLambdaQueryWrapper.like(InventoryDetail::getMaterialName, code)
  210 + .eq(InventoryDetail::getWarehouseCode, ShiroUtils.getWarehouseCode())
  211 + .in(InventoryDetail::getCompanyCode,ShiroUtils.getCompanyCodeList());
  212 + List<InventoryDetail> inventoryDetailList1 = inventoryDetailService.list(detailLambdaQueryWrapper);
  213 + if (!inventoryDetailList1.isEmpty()) {
  214 + for (InventoryDetail inventoryDetail : inventoryDetailList) {
  215 + Materialforecast materialforecast = new Materialforecast();
  216 + materialforecast.setMaterialCode(inventoryDetail.getMaterialCode());
  217 + materialforecast.setType(0);
  218 + forecast.add(materialforecast);
  219 + }
  220 + }
  221 + }
  222 + return null;
  223 + }
  224 +
174 } 225 }
src/main/java/com/huaheng/pc/config/points/domain/Points.java
@@ -5,8 +5,9 @@ import com.baomidou.mybatisplus.annotation.TableField; @@ -5,8 +5,9 @@ import com.baomidou.mybatisplus.annotation.TableField;
5 import com.baomidou.mybatisplus.annotation.TableId; 5 import com.baomidou.mybatisplus.annotation.TableId;
6 import com.baomidou.mybatisplus.annotation.TableName; 6 import com.baomidou.mybatisplus.annotation.TableName;
7 import com.huaheng.framework.web.domain.BaseEntity; 7 import com.huaheng.framework.web.domain.BaseEntity;
  8 +
8 import io.swagger.annotations.ApiModel; 9 import io.swagger.annotations.ApiModel;
9 -import lombok.Data; 10 +
10 11
11 /** 12 /**
12 * @author ricard 13 * @author ricard
@@ -15,7 +16,6 @@ import lombok.Data; @@ -15,7 +16,6 @@ import lombok.Data;
15 */ 16 */
16 17
17 @ApiModel(value="com.huaheng.pc.config.points.domain.Points") 18 @ApiModel(value="com.huaheng.pc.config.points.domain.Points")
18 -@Data  
19 @TableName(value = "points") 19 @TableName(value = "points")
20 public class Points extends BaseEntity { 20 public class Points extends BaseEntity {
21 //id 21 //id
src/main/java/com/huaheng/pc/inventory/cycleCountHeader/controller/CycleCountHeaderController.java
@@ -115,7 +115,7 @@ public class CycleCountHeaderController extends BaseController { @@ -115,7 +115,7 @@ public class CycleCountHeaderController extends BaseController {
115 { 115 {
116 116
117 cycleCountHeader.setWarehouseCode(ShiroUtils.getWarehouseCode()); 117 cycleCountHeader.setWarehouseCode(ShiroUtils.getWarehouseCode());
118 - //cycleCountHeader.setCompanyCode(cycleCountHeader.getCompanyCode()); 118 + cycleCountHeader.setCompanyCode(cycleCountHeader.getCompanyCode());
119 //cycleCountHeader.setRound(cycleCountHeader.getRound());//盘点轮次 119 //cycleCountHeader.setRound(cycleCountHeader.getRound());//盘点轮次
120 cycleCountHeader.setCreated(new Date()); 120 cycleCountHeader.setCreated(new Date());
121 cycleCountHeader.setCreatedBy(ShiroUtils.getLoginName()); 121 cycleCountHeader.setCreatedBy(ShiroUtils.getLoginName());
src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderService.java
@@ -28,6 +28,21 @@ public interface InventoryHeaderService extends IService&lt;InventoryHeader&gt; { @@ -28,6 +28,21 @@ public interface InventoryHeaderService extends IService&lt;InventoryHeader&gt; {
28 28
29 AjaxResult createEmptyCheckOut(String containerCode, String location); 29 AjaxResult createEmptyCheckOut(String containerCode, String location);
30 30
  31 + /**
  32 + * 移动端获取库存详情
  33 + * @param code 物料编码
  34 + * @param companyCode 货主编码
  35 + * @return
  36 + */
  37 + AjaxResult getInventory(String code, String companyCode);
  38 +
  39 + /**
  40 + * 移动端获得库位联想词
  41 + * @param code
  42 + * @param type
  43 + * @return
  44 + */
  45 + AjaxResult getLocationForecast(String code, int type);
31 46
32 } 47 }
33 48
src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderServiceImpl.java
@@ -7,11 +7,16 @@ import com.huaheng.common.exception.service.ServiceException; @@ -7,11 +7,16 @@ import com.huaheng.common.exception.service.ServiceException;
7 import com.huaheng.common.utils.StringUtils; 7 import com.huaheng.common.utils.StringUtils;
8 import com.huaheng.common.utils.security.ShiroUtils; 8 import com.huaheng.common.utils.security.ShiroUtils;
9 import com.huaheng.framework.web.domain.AjaxResult; 9 import com.huaheng.framework.web.domain.AjaxResult;
  10 +import com.huaheng.mobile.invenory.MobileInventory;
10 import com.huaheng.pc.config.container.domain.Container; 11 import com.huaheng.pc.config.container.domain.Container;
11 import com.huaheng.pc.config.container.service.ContainerService; 12 import com.huaheng.pc.config.container.service.ContainerService;
12 import com.huaheng.pc.config.location.domain.Location; 13 import com.huaheng.pc.config.location.domain.Location;
13 import com.huaheng.pc.config.location.service.LocationService; 14 import com.huaheng.pc.config.location.service.LocationService;
  15 +import com.huaheng.pc.config.material.domain.Material;
  16 +import com.huaheng.pc.config.material.service.MaterialService;
14 import com.huaheng.pc.config.warehouse.domain.Warehouse; 17 import com.huaheng.pc.config.warehouse.domain.Warehouse;
  18 +import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
  19 +import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
15 import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader; 20 import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader;
16 import com.huaheng.pc.task.taskDetail.domain.TaskDetail; 21 import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
17 import com.huaheng.pc.task.taskDetail.service.TaskDetailService; 22 import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
@@ -25,7 +30,9 @@ import com.huaheng.pc.inventory.inventoryHeader.mapper.InventoryHeaderMapper; @@ -25,7 +30,9 @@ import com.huaheng.pc.inventory.inventoryHeader.mapper.InventoryHeaderMapper;
25 import org.springframework.transaction.annotation.Transactional; 30 import org.springframework.transaction.annotation.Transactional;
26 31
27 import javax.annotation.Resource; 32 import javax.annotation.Resource;
  33 +import java.util.ArrayList;
28 import java.util.Date; 34 import java.util.Date;
  35 +import java.util.List;
29 36
30 @Service 37 @Service
31 public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMapper, InventoryHeader> implements InventoryHeaderService { 38 public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMapper, InventoryHeader> implements InventoryHeaderService {
@@ -41,8 +48,10 @@ public class InventoryHeaderServiceImpl extends ServiceImpl&lt;InventoryHeaderMappe @@ -41,8 +48,10 @@ public class InventoryHeaderServiceImpl extends ServiceImpl&lt;InventoryHeaderMappe
41 private ContainerService containerService; 48 private ContainerService containerService;
42 @Resource 49 @Resource
43 private LocationService locationService; 50 private LocationService locationService;
44 -  
45 - 51 + @Resource
  52 + private MaterialService materialService;
  53 + @Resource
  54 + private InventoryDetailService inventoryDetailService;
46 55
47 /** 56 /**
48 * 移库 57 * 移库
@@ -311,7 +320,210 @@ public class InventoryHeaderServiceImpl extends ServiceImpl&lt;InventoryHeaderMappe @@ -311,7 +320,210 @@ public class InventoryHeaderServiceImpl extends ServiceImpl&lt;InventoryHeaderMappe
311 } 320 }
312 321
313 322
  323 + /**
  324 + * 移动端获取库存详情
  325 + *
  326 + * @param code 物料编码
  327 + * @param companyCode 货主编码
  328 + * @return
  329 + */
  330 + @Override
  331 + public AjaxResult getInventory(String code, String companyCode) {
  332 + if (StringUtils.isEmpty(code)) {
  333 + return AjaxResult.error("编码为空");
  334 + }
  335 + if (StringUtils.isEmpty(companyCode)) {
  336 + return AjaxResult.error("公司编码为空");
  337 + }
  338 + List<InventoryDetail> inventories = null;
  339 + List<MobileInventory> mobileInventories = new ArrayList<>();
  340 + int resultType = 0;
  341 + inventories = selectListEntityByMaterialCode(code);
  342 + if(inventories == null || inventories.size() == 0) {
  343 + inventories = selectListEntityByMaterialName(code);
  344 + }
  345 + if(inventories == null || inventories.size() == 0) {
  346 + inventories = selectListEntityByLocationCode(code);
  347 + resultType = 1;
  348 + }
  349 + if(inventories == null || inventories.size() == 0) {
  350 + Location location = new Location();
  351 + location.setContainerCode(code);
  352 + location.setWarehouseCode(ShiroUtils.getWarehouseCode());
  353 + location.setDeleted(false);
  354 + LambdaQueryWrapper lamdba6 = Wrappers.lambdaQuery(location);
  355 + Location location1 = locationService.getOne(lamdba6);
  356 + if(location1 != null) {
  357 + inventories = selectListEntityByLocationCode(location1.getCode());
  358 + resultType = 1;
  359 + }
  360 + }
  361 + if(inventories != null && inventories.size() > 0) {
  362 + for(InventoryDetail inventory : inventories) {
  363 + MobileInventory mobileInventory = new MobileInventory();
  364 + mobileInventory.setId(inventory.getId());
  365 + mobileInventory.setLocationCode(inventory.getLocationCode());
  366 + mobileInventory.setMaterialCode(inventory.getMaterialCode());
  367 + mobileInventory.setContainerCode(inventory.getContainerCode());
  368 + Material materialCondition = new Material();
  369 + materialCondition.setWarehouseCode(ShiroUtils.getWarehouseCode());
  370 + materialCondition.setDeleted(false);
  371 + materialCondition.setCode(inventory.getMaterialCode());
  372 +// materialCondition.setCompanyCode(companyCode);
  373 + LambdaQueryWrapper lamdba6 = Wrappers.lambdaQuery(materialCondition);
  374 + Material material = materialService.getOne(lamdba6);
  375 + if(material == null) {
  376 + return AjaxResult.error("没有相对应库存");
  377 + }
  378 + mobileInventory.setMaterialName(material.getName());
  379 + mobileInventory.setQty(inventory.getQty());
  380 + mobileInventory.setResultType(resultType);
  381 + mobileInventory.setTaskQty(inventory.getTaskQty());
  382 + mobileInventory.setSpecification(material.getSpec());
  383 + mobileInventories.add(mobileInventory);
  384 + }
  385 + return AjaxResult.success(mobileInventories);
  386 + }
  387 + Location location = new Location();
  388 + location.setCode(code);
  389 + location.setWarehouseCode(ShiroUtils.getWarehouseCode());
  390 + location.setStatus("empty");
  391 + location.setDeleted(false);
  392 + LambdaQueryWrapper lamdba62 = Wrappers.lambdaQuery(location);
  393 + Location location1 = locationService.getOne(lamdba62);
  394 + if(location1 != null) {
  395 + resultType = 2;
  396 + MobileInventory mobileInventory = new MobileInventory();
  397 + mobileInventory.setResultType(resultType);
  398 + mobileInventory.setContainerCode(location1.getContainerCode());
  399 + mobileInventory.setLocationCode(location1.getCode());
  400 + mobileInventory.setContainerCode(location1.getContainerCode());
  401 + mobileInventories.add(mobileInventory);
  402 + return AjaxResult.success(mobileInventories);
  403 + }
  404 + if(inventories == null || inventories.size() == 0) {
  405 + Location condition = new Location();
  406 + condition.setContainerCode(code);
  407 + condition.setWarehouseCode(ShiroUtils.getWarehouseCode());
  408 + condition.setDeleted(false);
  409 + LambdaQueryWrapper lamdba63 = Wrappers.lambdaQuery(condition);
  410 + Location location2 = locationService.getOne(lamdba63);
  411 + if(location2 == null) {
  412 + condition.setCode(code);
  413 + condition.setWarehouseCode(ShiroUtils.getWarehouseCode());
  414 + condition.setDeleted(false);
  415 + }
  416 + if(location2 != null) {
  417 + Container container = new Container();
  418 + container.setCode(location2.getContainerCode());
  419 + container.setStatus("empty");
  420 + LambdaQueryWrapper lamdba6 = Wrappers.lambdaQuery(container);
  421 + container = containerService.getOne(lamdba6);
  422 + if(container != null) {
  423 + resultType = 2;
  424 + MobileInventory mobileInventory = new MobileInventory();
  425 + mobileInventory.setResultType(resultType);
  426 + mobileInventory.setContainerCode(location2.getContainerCode());
  427 + mobileInventory.setLocationCode(location2.getCode());
  428 + mobileInventory.setContainerCode(location2.getContainerCode());
  429 + mobileInventories.add(mobileInventory);
  430 + return AjaxResult.success(mobileInventories);
  431 + }
  432 + }
  433 + }
  434 + return AjaxResult.error("没有相对应库存");
  435 + }
  436 +
  437 + public List<InventoryDetail> selectListEntityByMaterialName(String materialName) {
  438 + Material material = new Material();
  439 + material.setWarehouseCode(ShiroUtils.getWarehouseCode());
  440 + material.setEnable(true);
  441 + material.setDeleted(false);
  442 + if(materialName.contains(" ")) {
  443 + String materialinfos[] = materialName.split(" ");
  444 + materialName = materialinfos[0];
  445 + material.setSpec(materialinfos[1]);
  446 + }
  447 + material.setName(materialName);
  448 + LambdaQueryWrapper lamdba62 = Wrappers.lambdaQuery(material);
  449 + Material result= materialService.getOne(lamdba62);
  450 + if(result == null) {
  451 + return null;
  452 + }
  453 + InventoryDetail condition = new InventoryDetail();
  454 + condition.setMaterialCode(result.getCode());
  455 + condition.setWarehouseCode(ShiroUtils.getWarehouseCode());
  456 + LambdaQueryWrapper lamdba6 = Wrappers.lambdaQuery(condition);
  457 + List<InventoryDetail> inventories = inventoryDetailService.list(lamdba6);
  458 + return inventories;
  459 + }
  460 +
  461 + public List<InventoryDetail> selectListEntityByMaterialCode(String materialCode) {
  462 + InventoryDetail condition = new InventoryDetail();
  463 + condition.setMaterialCode(materialCode);
  464 + condition.setWarehouseCode(ShiroUtils.getWarehouseCode());
  465 + LambdaQueryWrapper lamdba6 = Wrappers.lambdaQuery(condition);
  466 + List<InventoryDetail> inventories = inventoryDetailService.list(lamdba6);
  467 + return inventories;
  468 + }
314 469
  470 + public List<InventoryDetail> selectListEntityByLocationCode(String locationCode) {
  471 + InventoryDetail condition = new InventoryDetail();
  472 + condition.setLocationCode(locationCode);
  473 + condition.setWarehouseCode(ShiroUtils.getWarehouseCode());
  474 + LambdaQueryWrapper lamdba6 = Wrappers.lambdaQuery(condition);
  475 + List<InventoryDetail> inventories = inventoryDetailService.list(lamdba6);
  476 + return inventories;
  477 + }
  478 +
  479 + /**
  480 + * 移动端获得库位联想词
  481 + *
  482 + * @param code
  483 + * @param type
  484 + * @return
  485 + */
  486 + @Override
  487 + public AjaxResult getLocationForecast(String code, int type) {
  488 + List<InventoryDetail> inventoryDetailList = new ArrayList<>();
  489 + if (type == 0){
  490 + LambdaQueryWrapper<InventoryDetail> detailLambdaQueryWrapper = Wrappers.lambdaQuery();
  491 + detailLambdaQueryWrapper.eq(InventoryDetail::getLocationCode, code)
  492 + .eq(InventoryDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
  493 + inventoryDetailList = inventoryDetailService.list(detailLambdaQueryWrapper);
  494 + if (inventoryDetailList.isEmpty()){
  495 + List<String> results = new ArrayList<>();
  496 + for (InventoryDetail inventoryDetail : inventoryDetailList) {
  497 + String locationCode = inventoryDetail.getLocationCode();
  498 + LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery();
  499 + locationLambdaQueryWrapper.eq(Location::getStatus, "empaty")
  500 + .eq(Location::getDeleted, false)
  501 + .eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode())
  502 + .eq(Location::getCode, locationCode);
  503 + Location location = locationService.getOne(locationLambdaQueryWrapper);
  504 + if (location == null){
  505 + results.add(inventoryDetail.getLocationCode());
  506 + }
  507 + }
  508 + return AjaxResult.success(results);
  509 + }
  510 + } else if (type == 1) {
  511 + LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery();
  512 + locationLambdaQueryWrapper.eq(Location::getCode, code)
  513 + .eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode())
  514 + .eq(Location::getDeleted, false)
  515 + .eq(Location::getStatus, "empaty");
  516 + List<Location> locations = locationService.list(locationLambdaQueryWrapper);
  517 + if (locations.isEmpty()){
  518 + List<String> results = new ArrayList<>();
  519 + for (Location location : locations) {
  520 + results.add(location.getCode());
  521 + }
  522 + return AjaxResult.success(results);
  523 + }
  524 + }
  525 + return AjaxResult.success(inventoryDetailList);
  526 + }
315 527
316 528
317 } 529 }