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 2 <project version="4">
3 3 <component name="Encoding" native2AsciiForPropertiesFiles="true" defaultCharsetForPropertiesFiles="UTF-8">
4 4 <file url="file://$PROJECT_DIR$" charset="UTF-8" />
  5 + <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
5 6 <file url="PROJECT" charset="UTF-8" />
6 7 </component>
7 8 </project>
8 9 \ No newline at end of file
... ...
.idea/workspace.xml
... ... @@ -5,11 +5,61 @@
5 5 </component>
6 6 <component name="ChangeListManager">
7 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 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 59 </list>
11 60 <ignored path="$PROJECT_DIR$/target/" />
12 61 <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
  62 + <option name="TRACKING_ENABLED" value="true" />
13 63 <option name="SHOW_DIALOG" value="false" />
14 64 <option name="HIGHLIGHT_CONFLICTS" value="true" />
15 65 <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
... ... @@ -50,33 +100,11 @@
50 100 </component>
51 101 <component name="FileEditorManager">
52 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 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 108 </state>
81 109 </provider>
82 110 </entry>
... ... @@ -96,6 +124,18 @@
96 124 <component name="FindBugs-IDEA-Workspace">
97 125 <toolWindowEditorPreview>false</toolWindowEditorPreview>
98 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 139 <component name="Git.Settings">
100 140 <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
101 141 <option name="RECENT_BRANCH_BY_REPOSITORY">
... ... @@ -107,30 +147,73 @@
107 147 <component name="IdeDocumentHistory">
108 148 <option name="CHANGED_PATHS">
109 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 150 <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java" />
130 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 201 </list>
132 202 </option>
133 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 217 <component name="MavenProjectNavigator">
135 218 <treeState>
136 219 <expand>
... ... @@ -142,10 +225,14 @@
142 225 <select />
143 226 </treeState>
144 227 </component>
  228 + <component name="NodePackageJsonFileManager">
  229 + <packageJsonPaths />
  230 + </component>
145 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 236 </component>
150 237 <component name="ProjectId" id="1QOzUtfkdeRmYuw3MIDHXXMLsFH" />
151 238 <component name="ProjectLevelVcsManager">
... ... @@ -156,8 +243,7 @@
156 243 <foldersAlwaysOnTop value="true" />
157 244 </navigator>
158 245 <panes>
159   - <pane id="Scope" />
160   - <pane id="PackagesPane" />
  246 + <pane id="AndroidView" />
161 247 <pane id="ProjectPane">
162 248 <subPane>
163 249 <expand>
... ... @@ -208,53 +294,7 @@
208 294 <item name="java" type="462c0819:PsiDirectoryNode" />
209 295 <item name="com" type="462c0819:PsiDirectoryNode" />
210 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 298 </path>
259 299 <path>
260 300 <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
... ... @@ -264,92 +304,8 @@
264 304 <item name="java" type="462c0819:PsiDirectoryNode" />
265 305 <item name="com" type="462c0819:PsiDirectoryNode" />
266 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 309 </path>
354 310 <path>
355 311 <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
... ... @@ -357,8 +313,6 @@
357 313 <item name="src" type="462c0819:PsiDirectoryNode" />
358 314 <item name="main" type="462c0819:PsiDirectoryNode" />
359 315 <item name="resources" type="462c0819:PsiDirectoryNode" />
360   - <item name="templates" type="462c0819:PsiDirectoryNode" />
361   - <item name="inventory" type="462c0819:PsiDirectoryNode" />
362 316 </path>
363 317 <path>
364 318 <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
... ... @@ -366,14 +320,14 @@
366 320 <item name="src" type="462c0819:PsiDirectoryNode" />
367 321 <item name="main" type="462c0819:PsiDirectoryNode" />
368 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 324 </path>
373 325 </expand>
374 326 <select />
375 327 </subPane>
376 328 </pane>
  329 + <pane id="PackagesPane" />
  330 + <pane id="Scope" />
377 331 </panes>
378 332 </component>
379 333 <component name="PropertiesComponent">
... ... @@ -383,11 +337,12 @@
383 337 <property name="RequestMappingsPanelOrder1" value="1" />
384 338 <property name="RequestMappingsPanelWidth0" value="75" />
385 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 341 <property name="WebServerToolWindowFactoryState" value="false" />
387 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 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 346 <property name="node.js.detected.package.eslint" value="true" />
392 347 <property name="node.js.detected.package.tslint" value="true" />
393 348 <property name="node.js.path.for.package.eslint" value="project" />
... ... @@ -402,17 +357,22 @@
402 357 <property name="settings.editor.selected.configurable" value="preferences.pluginManager" />
403 358 </component>
404 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 366 </key>
408 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 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 376 </key>
417 377 </component>
418 378 <component name="RunAnythingCache">
... ... @@ -438,7 +398,7 @@
438 398 </option>
439 399 <option name="contentProportion" value="0.012987013" />
440 400 </component>
441   - <component name="RunManager" selected="Spring Boot.HuaHengApplication (1)">
  401 + <component name="RunManager" selected="Spring Boot.HuaHengApplication">
442 402 <configuration name="EncryptPassword" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
443 403 <option name="MAIN_CLASS_NAME" value="com.huaheng.test.EncryptPassword" />
444 404 <module name="huaheng" />
... ... @@ -448,9 +408,6 @@
448 408 <option name="ENABLED" value="true" />
449 409 </pattern>
450 410 </extension>
451   - <method v="2">
452   - <option name="Make" enabled="true" />
453   - </method>
454 411 </configuration>
455 412 <configuration name="MqTest.send" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
456 413 <module name="huaheng" />
... ... @@ -460,13 +417,20 @@
460 417 <option name="ENABLED" value="true" />
461 418 </pattern>
462 419 </extension>
  420 + <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
  421 + <option name="ALTERNATIVE_JRE_PATH" />
463 422 <option name="PACKAGE_NAME" value="com.huaheng.test" />
464 423 <option name="MAIN_CLASS_NAME" value="com.huaheng.test.MqTest" />
465 424 <option name="METHOD_NAME" value="send" />
466 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 434 </configuration>
471 435 <configuration name="ServiceTest.sendSimpleMail" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
472 436 <module name="huaheng" />
... ... @@ -476,13 +440,20 @@
476 440 <option name="ENABLED" value="true" />
477 441 </pattern>
478 442 </extension>
  443 + <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
  444 + <option name="ALTERNATIVE_JRE_PATH" />
479 445 <option name="PACKAGE_NAME" value="com.huaheng.test" />
480 446 <option name="MAIN_CLASS_NAME" value="com.huaheng.test.ServiceTest" />
481 447 <option name="METHOD_NAME" value="sendSimpleMail" />
482 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 457 </configuration>
487 458 <configuration name="HuaHengApplication (1)" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true">
488 459 <module name="wms2" />
... ... @@ -493,9 +464,6 @@
493 464 </pattern>
494 465 </extension>
495 466 <option name="SPRING_BOOT_MAIN_CLASS" value="com.huaheng.HuaHengApplication" />
496   - <method v="2">
497   - <option name="Make" enabled="true" />
498   - </method>
499 467 </configuration>
500 468 <configuration name="HuaHengApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true">
501 469 <module name="huaheng" />
... ... @@ -509,9 +477,6 @@
509 477 <option name="ALTERNATIVE_JRE_PATH" />
510 478 <option name="UPDATE_ACTION_UPDATE_POLICY" value="UpdateResources" />
511 479 <option name="FRAME_DEACTIVATION_UPDATE_POLICY" value="UpdateClassesAndResources" />
512   - <method v="2">
513   - <option name="Make" enabled="true" />
514   - </method>
515 480 </configuration>
516 481 <list>
517 482 <item itemvalue="Application.EncryptPassword" />
... ... @@ -522,8 +487,8 @@
522 487 </list>
523 488 <recent_temporary>
524 489 <list>
525   - <item itemvalue="Spring Boot.HuaHengApplication (1)" />
526 490 <item itemvalue="Spring Boot.HuaHengApplication" />
  491 + <item itemvalue="Spring Boot.HuaHengApplication (1)" />
527 492 <item itemvalue="JUnit.ServiceTest.sendSimpleMail" />
528 493 <item itemvalue="JUnit.MqTest.send" />
529 494 <item itemvalue="Application.EncryptPassword" />
... ... @@ -742,14 +707,17 @@
742 707 <workItem from="1578293993555" duration="9808000" />
743 708 <workItem from="1578358115196" duration="1507000" />
744 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 721 </task>
754 722 <task id="LOCAL-00027" summary="修改入库首选项页面,规则查询使用数据字典值,表格值显示修改">
755 723 <created>1569553028716</created>
... ... @@ -1087,50 +1055,58 @@
1087 1055 <option name="project" value="LOCAL" />
1088 1056 <updated>1578455348001</updated>
1089 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 1066 <servers />
1092 1067 </component>
1093 1068 <component name="TimeTrackingManager">
1094   - <option name="totallyTimeSpent" value="158484000" />
  1069 + <option name="totallyTimeSpent" value="291372000" />
1095 1070 </component>
1096 1071 <component name="ToolWindowManager">
1097 1072 <frame x="-7" y="-7" width="1550" height="838" extended-state="6" />
1098   - <editor active="true" />
1099 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 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 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 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 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 1095 <window_info anchor="bottom" id="Spring" order="7" />
1116 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 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 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 1110 </layout>
1135 1111 </component>
1136 1112 <component name="TypeScriptGeneratedFilesManager">
... ... @@ -1154,20 +1130,9 @@
1154 1130 </entry>
1155 1131 </map>
1156 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 1136 </component>
1172 1137 <component name="VcsManagerConfiguration">
1173 1138 <MESSAGE value="修改接口实体类" />
... ... @@ -1199,92 +1164,10 @@
1199 1164 </component>
1200 1165 <component name="XDebuggerManager">
1201 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 1171 </breakpoint-manager>
1289 1172 <watches-manager>
1290 1173 <configuration name="SpringBootApplicationConfigurationType">
... ... @@ -1298,399 +1181,351 @@
1298 1181 </SUITE>
1299 1182 </component>
1300 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 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 1188 </state>
1306 1189 </provider>
1307 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 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 1195 </state>
1313 1196 </provider>
1314 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 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 1203 </provider>
1319 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 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 1210 </provider>
1324 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 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 1216 </state>
1330 1217 </provider>
1331 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 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 1223 </state>
1337 1224 </provider>
1338 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 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 1230 </state>
1344 1231 </provider>
1345 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 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 1238 </state>
1351 1239 </provider>
1352 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 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 1245 </state>
1361 1246 </provider>
1362 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 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 1252 </state>
1374 1253 </provider>
1375 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 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 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 1262 </folding>
1406 1263 </state>
1407 1264 </provider>
1408 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 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 1270 </state>
1414 1271 </provider>
1415 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 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 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 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 1283 </state>
1442 1284 </provider>
1443 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 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 1290 </state>
1449 1291 </provider>
1450 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 1294 <provider selected="true" editor-type-id="text-editor">
1453 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 1297 </state>
1456 1298 </provider>
1457 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 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 1304 </state>
1463 1305 </provider>
1464 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 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 1311 </state>
1470 1312 </provider>
1471 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 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 1318 </state>
1477 1319 </provider>
1478 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 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 1325 </state>
1484 1326 </provider>
1485 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 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 1332 </state>
1491 1333 </provider>
1492 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 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 1339 </state>
1498 1340 </provider>
1499 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 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 1345 </provider>
1506 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 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 1351 </state>
1512 1352 </provider>
1513 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 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 1358 </state>
1519 1359 </provider>
1520 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 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 1366 </provider>
1525 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 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 1372 </state>
1531 1373 </provider>
1532 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 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 1379 </state>
1538 1380 </provider>
1539 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 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 1386 </state>
1545 1387 </provider>
1546 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 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 1393 </state>
1552 1394 </provider>
1553 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 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 1400 </state>
1559 1401 </provider>
1560 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 1404 <provider selected="true" editor-type-id="text-editor">
1563 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 1407 </state>
1566 1408 </provider>
1567 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 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 1414 </state>
1573 1415 </provider>
1574 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 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 1421 </state>
1580 1422 </provider>
1581 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 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 1428 </state>
1587 1429 </provider>
1588 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 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 1435 </state>
1594 1436 </provider>
1595 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 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 1442 </state>
1601 1443 </provider>
1602 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 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 1449 </state>
1608 1450 </provider>
1609 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 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 1456 </state>
1615 1457 </provider>
1616 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 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 1463 </state>
1628 1464 </provider>
1629 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 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 1470 </state>
1635 1471 </provider>
1636 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 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 1477 </state>
1642 1478 </provider>
1643 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 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 1484 </state>
1649 1485 </provider>
1650 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 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 1491 </state>
1656 1492 </provider>
1657 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 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 1498 </state>
1663 1499 </provider>
1664 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 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 1505 </state>
1670 1506 </provider>
1671 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 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 1512 </state>
1677 1513 </provider>
1678 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 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 1522 </state>
1684 1523 </provider>
1685 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 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 1529 </state>
1695 1530 </provider>
1696 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 3  
4 4 import com.huaheng.api.general.domain.ReceiptDomain;
5 5 import com.huaheng.api.general.service.ReceiptApiService;
  6 +import com.huaheng.common.utils.StringUtils;
6 7 import com.huaheng.framework.aspectj.lang.annotation.Log;
7 8 import com.huaheng.framework.aspectj.lang.constant.BusinessType;
8 9 import com.huaheng.framework.web.domain.AjaxResult;
9 10 import io.swagger.annotations.Api;
10 11 import io.swagger.annotations.ApiOperation;
  12 +import io.swagger.annotations.ApiParam;
  13 +import org.apache.shiro.authz.annotation.RequiresPermissions;
11 14 import org.springframework.web.bind.annotation.*;
12 15  
13 16 import javax.annotation.Resource;
... ... @@ -34,4 +37,18 @@ public class ReceiptApi {
34 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 4 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
5 5 import com.huaheng.api.general.controller.ReceiptApi;
6 6 import com.huaheng.api.general.domain.ReceiptDomain;
  7 +import com.huaheng.common.constant.QuantityConstant;
7 8 import com.huaheng.common.exception.service.ServiceException;
  9 +import com.huaheng.common.support.Convert;
8 10 import com.huaheng.common.utils.StringUtils;
  11 +import com.huaheng.common.utils.security.ShiroUtils;
9 12 import com.huaheng.framework.web.domain.AjaxResult;
10 13 import com.huaheng.pc.config.FilterConfigDetail.domain.FilterConfigDetail;
11 14 import com.huaheng.pc.config.FilterConfigDetail.service.FilterConfigDetailService;
... ... @@ -23,14 +26,21 @@ import com.huaheng.pc.config.warehouse.domain.Warehouse;
23 26 import com.huaheng.pc.config.warehouse.service.WarehouseService;
24 27 import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;
25 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 31 import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
27 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 36 import org.springframework.stereotype.Component;
29 37 import org.springframework.transaction.annotation.Transactional;
30 38  
31 39 import javax.annotation.Resource;
  40 +import java.lang.reflect.InvocationTargetException;
32 41 import java.math.BigDecimal;
33 42 import java.util.ArrayList;
  43 +import java.util.Arrays;
34 44 import java.util.List;
35 45  
36 46 @Component
... ... @@ -54,6 +64,10 @@ public class ReceiptApiService {
54 64 private FilterConfigDetailService filterConfigDetailService;
55 65 @Resource
56 66 private StatusFlowHeaderService statusFlowHeaderService;
  67 + @Resource
  68 + private ReceiptHeaderHistoryService receiptHeaderHistoryService;
  69 + @Resource
  70 + private ReceiptDetailHistoryService receiptDetailHistoryService;
57 71 /**
58 72 * 入库单下发
59 73 * @param receipt 入库单
... ... @@ -218,4 +232,65 @@ public class ReceiptApiService {
218 232  
219 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 263 filterChainDefinitionMap.put("/admin/logout", "adminlogout");
264 264 // 不需要拦截的访问
265 265 // filterChainDefinitionMap.put("/admin/home", "anon,captchaValidate");
  266 + filterChainDefinitionMap.put("/mobile/download/*", "anon,captchaValidate");
266 267 filterChainDefinitionMap.put("/admin/login", "anon,captchaValidate");
267 268 filterChainDefinitionMap.put("/login", "anon,captchaValidate");
268 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 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 24 //库位利用率
25 25 List<LinkedHashMap<String, Object>> getLocationProp();
26 26  
  27 + List<Location> pickLocation();
  28 +
27 29 }
28 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 24  
25 25 //库位利用率
26 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 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 3 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 4 import com.huaheng.pc.config.material.domain.Material;
5 5  
  6 +import java.util.List;
  7 +
6 8 public interface MaterialMapper extends BaseMapper<Material> {
7 9  
8 10 /**
... ... @@ -11,4 +13,10 @@ public interface MaterialMapper extends BaseMapper&lt;Material&gt; {
11 13 * @return Material
12 14 */
13 15 Material findAllByCode(String code);
  16 +
  17 + /**
  18 + * 根据编码查询物料
  19 + * @return Material
  20 + */
  21 + List<Material> findLatest();
14 22 }
15 23 \ No newline at end of file
... ...
src/main/java/com/huaheng/pc/config/material/service/MaterialService.java
1 1 package com.huaheng.pc.config.material.service;
2 2  
3 3 import com.huaheng.framework.web.domain.AjaxResult;
  4 +import com.huaheng.mobile.shipment.Materialforecast;
4 5 import com.huaheng.pc.config.material.domain.Material;
5 6 import com.baomidou.mybatisplus.extension.service.IService;
6 7  
... ... @@ -32,4 +33,13 @@ public interface MaterialService extends IService&lt;Material&gt;{
32 33 AjaxResult addSave(Material material);
33 34  
34 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 7 import com.huaheng.common.utils.StringUtils;
8 8 import com.huaheng.common.utils.security.ShiroUtils;
9 9 import com.huaheng.framework.web.domain.AjaxResult;
  10 +import com.huaheng.mobile.shipment.Materialforecast;
10 11 import com.huaheng.pc.config.materialMultiple.domain.MaterialMultiple;
11 12 import com.huaheng.pc.config.materialType.domain.MaterialType;
12 13 import com.huaheng.pc.config.materialType.service.MaterialTypeService;
13 14 import com.huaheng.pc.config.materialUnit.domain.MaterialUnit;
14 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 18 import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;
16 19 import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService;
17 20 import org.springframework.stereotype.Service;
18 21 import javax.annotation.Resource;
19 22 import java.lang.ref.WeakReference;
  23 +import java.util.ArrayList;
20 24 import java.util.List;
21 25 import java.util.Map;
22 26  
... ... @@ -35,6 +39,8 @@ public class MaterialServiceImpl extends ServiceImpl&lt;MaterialMapper, Material&gt; i
35 39 private MaterialTypeService materialTypeService;
36 40 @Resource
37 41 private MaterialMapper materialMapper;
  42 + @Resource
  43 + private InventoryDetailService inventoryDetailService;
38 44  
39 45 @Override
40 46 public AjaxResult removeByIds(String ids) {
... ... @@ -171,4 +177,49 @@ public class MaterialServiceImpl extends ServiceImpl&lt;MaterialMapper, Material&gt; i
171 177  
172 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 5 import com.baomidou.mybatisplus.annotation.TableId;
6 6 import com.baomidou.mybatisplus.annotation.TableName;
7 7 import com.huaheng.framework.web.domain.BaseEntity;
  8 +
8 9 import io.swagger.annotations.ApiModel;
9   -import lombok.Data;
  10 +
10 11  
11 12 /**
12 13 * @author ricard
... ... @@ -15,7 +16,6 @@ import lombok.Data;
15 16 */
16 17  
17 18 @ApiModel(value="com.huaheng.pc.config.points.domain.Points")
18   -@Data
19 19 @TableName(value = "points")
20 20 public class Points extends BaseEntity {
21 21 //id
... ...
src/main/java/com/huaheng/pc/inventory/cycleCountHeader/controller/CycleCountHeaderController.java
... ... @@ -115,7 +115,7 @@ public class CycleCountHeaderController extends BaseController {
115 115 {
116 116  
117 117 cycleCountHeader.setWarehouseCode(ShiroUtils.getWarehouseCode());
118   - //cycleCountHeader.setCompanyCode(cycleCountHeader.getCompanyCode());
  118 + cycleCountHeader.setCompanyCode(cycleCountHeader.getCompanyCode());
119 119 //cycleCountHeader.setRound(cycleCountHeader.getRound());//盘点轮次
120 120 cycleCountHeader.setCreated(new Date());
121 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 28  
29 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 7 import com.huaheng.common.utils.StringUtils;
8 8 import com.huaheng.common.utils.security.ShiroUtils;
9 9 import com.huaheng.framework.web.domain.AjaxResult;
  10 +import com.huaheng.mobile.invenory.MobileInventory;
10 11 import com.huaheng.pc.config.container.domain.Container;
11 12 import com.huaheng.pc.config.container.service.ContainerService;
12 13 import com.huaheng.pc.config.location.domain.Location;
13 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 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 20 import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader;
16 21 import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
17 22 import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
... ... @@ -25,7 +30,9 @@ import com.huaheng.pc.inventory.inventoryHeader.mapper.InventoryHeaderMapper;
25 30 import org.springframework.transaction.annotation.Transactional;
26 31  
27 32 import javax.annotation.Resource;
  33 +import java.util.ArrayList;
28 34 import java.util.Date;
  35 +import java.util.List;
29 36  
30 37 @Service
31 38 public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMapper, InventoryHeader> implements InventoryHeaderService {
... ... @@ -41,8 +48,10 @@ public class InventoryHeaderServiceImpl extends ServiceImpl&lt;InventoryHeaderMappe
41 48 private ContainerService containerService;
42 49 @Resource
43 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 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 }
... ...