Commit 703ba4316f120eec4390f3150becbe2999e55811

Authored by huhai
2 parents b69ebef8 f3f44e60

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

Showing 238 changed files with 8158 additions and 1556 deletions

Too many changes to show.

To preserve performance only 64 of 238 files are displayed.

.idea/workspace.xml
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <project version="4">
  3 + <component name="AnalysisUIOptions">
  4 + <option name="GROUP_BY_SEVERITY" value="true" />
  5 + </component>
3 6 <component name="ChangeListManager">
4 7 <list default="true" id="baeae966-16bb-4f97-a411-22fe5a65cefd" name="Default Changelist" comment="">
5 8 <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
6   - <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkingRegister/controller/CheckingRegisterController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkingRegister/controller/CheckingRegisterController.java" afterDir="false" />
7   - <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkingRegister/service/CheckingRegisterService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkingRegister/service/CheckingRegisterService.java" afterDir="false" />
8   - <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/statusFlow/controller/StatusFlowHeaderController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/statusFlow/controller/StatusFlowHeaderController.java" afterDir="false" />
9   - <change beforePath="$PROJECT_DIR$/src/main/resources/templates/config/filterConfigHeader/add.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/config/filterConfigHeader/add.html" afterDir="false" />
10   - <change beforePath="$PROJECT_DIR$/src/main/resources/templates/config/receiptType/add.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/config/receiptType/add.html" afterDir="false" />
11   - <change beforePath="$PROJECT_DIR$/src/main/resources/templates/config/statusFlowHeader/add.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/config/statusFlowHeader/add.html" afterDir="false" />
12   - <change beforePath="$PROJECT_DIR$/src/main/resources/templates/config/statusFlowHeader/statusFlowHeader.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/config/statusFlowHeader/statusFlowHeader.html" afterDir="false" />
13   - <change beforePath="$PROJECT_DIR$/src/main/resources/templates/receipt/receiptHeader/receiptHeader.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/receipt/receiptHeader/receiptHeader.html" afterDir="false" />
  9 + <change beforePath="$PROJECT_DIR$/src/main/resources/templates/config/container/print.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/config/container/print.html" afterDir="false" />
14 10 </list>
  11 + <ignored path="$PROJECT_DIR$/target/" />
15 12 <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
16 13 <option name="SHOW_DIALOG" value="false" />
17 14 <option name="HIGHLIGHT_CONFLICTS" value="true" />
... ... @@ -29,26 +26,381 @@
29 26 <option name="HIDDEN_KINDS">
30 27 <set />
31 28 </option>
32   - <expand />
  29 + <expand>
  30 + <path>
  31 + <item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" />
  32 + <item name="@172.16.29.45" type="feb32156:DbDataSourceImpl" />
  33 + </path>
  34 + <path>
  35 + <item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" />
  36 + <item name="@172.16.29.45" type="feb32156:DbDataSourceImpl" />
  37 + <item name="schemas" type="d4e8921:DatabaseStructure$FamilyGroup" />
  38 + </path>
  39 + <path>
  40 + <item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" />
  41 + <item name="@172.16.29.45" type="feb32156:DbDataSourceImpl" />
  42 + <item name="schemas" type="d4e8921:DatabaseStructure$FamilyGroup" />
  43 + <item name="wms_v2: schema" type="76f4a085:MysqlImplModel$Schema" />
  44 + </path>
  45 + </expand>
33 46 <select />
34 47 </component>
  48 + <component name="FavoritesManager">
  49 + <favorites_list name="huaheng" />
  50 + </component>
  51 + <component name="FileEditorManager">
  52 + <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
  53 + <file pinned="false" current-in-tab="false">
  54 + <entry file="file://$PROJECT_DIR$/src/main/resources/templates/config/container/container.html">
  55 + <provider selected="true" editor-type-id="text-editor">
  56 + <state relative-caret-position="1292">
  57 + <caret line="68" column="44" selection-start-line="68" selection-start-column="35" selection-end-line="68" selection-end-column="44" />
  58 + </state>
  59 + </provider>
  60 + </entry>
  61 + </file>
  62 + <file pinned="false" current-in-tab="false">
  63 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/container/controller/ContainerController.java">
  64 + <provider selected="true" editor-type-id="text-editor">
  65 + <state relative-caret-position="228">
  66 + <caret line="41" column="29" selection-start-line="41" selection-start-column="29" selection-end-line="41" selection-end-column="38" />
  67 + </state>
  68 + </provider>
  69 + </entry>
  70 + </file>
  71 + <file pinned="false" current-in-tab="true">
  72 + <entry file="file://$PROJECT_DIR$/src/main/resources/templates/config/container/print.html">
  73 + <provider selected="true" editor-type-id="text-editor">
  74 + <state relative-caret-position="150">
  75 + <caret line="21" column="28" lean-forward="true" selection-start-line="21" selection-start-column="28" selection-end-line="21" selection-end-column="28" />
  76 + <folding>
  77 + <element signature="n#style#0;n#div#0;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" />
  78 + <element signature="n#style#0;n#span#0;n#div#0;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" />
  79 + <element signature="n#style#0;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />
  80 + <element signature="n#style#0;n#div#0;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />
  81 + <element signature="n#style#0;n#table#0;n#div#0;n#div#0;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />
  82 + </folding>
  83 + </state>
  84 + </provider>
  85 + </entry>
  86 + </file>
  87 + <file pinned="false" current-in-tab="false">
  88 + <entry file="file://$USER_HOME$/Desktop/boot/boot/打印二维码 - 多个组2.html">
  89 + <provider selected="true" editor-type-id="text-editor">
  90 + <state relative-caret-position="241">
  91 + <caret line="47" column="36" lean-forward="true" selection-start-line="47" selection-start-column="36" selection-end-line="47" selection-end-column="36" />
  92 + <folding>
  93 + <element signature="n#style#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />
  94 + <element signature="n#style#0;n#div#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />
  95 + <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" />
  96 + <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" />
  97 + <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" />
  98 + <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" />
  99 + <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" />
  100 + <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" />
  101 + <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" />
  102 + <element signature="e#2973#2979#0" expanded="true" />
  103 + <element signature="e#2979#2985#0" expanded="true" />
  104 + <element signature="e#2985#2991#0" expanded="true" />
  105 + <element signature="e#2991#2997#0" expanded="true" />
  106 + <element signature="e#2997#3003#0" expanded="true" />
  107 + <element signature="e#3003#3009#0" expanded="true" />
  108 + <element signature="e#3009#3015#0" expanded="true" />
  109 + <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" />
  110 + <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" />
  111 + <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" />
  112 + <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" />
  113 + <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" />
  114 + <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" />
  115 + <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" />
  116 + <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" />
  117 + <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" />
  118 + <element signature="e#3995#4001#0" expanded="true" />
  119 + <element signature="e#4001#4007#0" expanded="true" />
  120 + <element signature="e#4007#4013#0" expanded="true" />
  121 + <element signature="e#4013#4019#0" expanded="true" />
  122 + <element signature="e#4019#4025#0" expanded="true" />
  123 + <element signature="e#4025#4031#0" expanded="true" />
  124 + <element signature="e#4031#4037#0" expanded="true" />
  125 + <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" />
  126 + <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" />
  127 + </folding>
  128 + </state>
  129 + </provider>
  130 + </entry>
  131 + </file>
  132 + </leaf>
  133 + </component>
35 134 <component name="FileTemplateManagerImpl">
36 135 <option name="RECENT_TEMPLATES">
37 136 <list>
38 137 <option value="Interface" />
39   - <option value="Class" />
40 138 <option value="Enum" />
41 139 <option value="HTML File" />
  140 + <option value="Class" />
42 141 </list>
43 142 </option>
44 143 </component>
  144 + <component name="FindBugs-IDEA-Workspace">
  145 + <toolWindowEditorPreview>false</toolWindowEditorPreview>
  146 + </component>
45 147 <component name="Git.Settings">
46 148 <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
  149 + <option name="RECENT_BRANCH_BY_REPOSITORY">
  150 + <map>
  151 + <entry key="$PROJECT_DIR$" value="rabbitmq" />
  152 + </map>
  153 + </option>
  154 + </component>
  155 + <component name="IdeDocumentHistory">
  156 + <option name="CHANGED_PATHS">
  157 + <list>
  158 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/ReceiptApi.java" />
  159 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/ReceiptApiService.java" />
  160 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailServiceImpl.java" />
  161 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/ShipmentApiService.java" />
  162 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/system/user/service/UserServiceImpl.java" />
  163 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/system/user/service/IUserService.java" />
  164 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/BasicDataApi.java" />
  165 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/domain/InventoryDomain.java" />
  166 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/BasicDataApiService.java" />
  167 + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/container/controller/ContainerController.java" />
  168 + <option value="$PROJECT_DIR$/src/main/resources/templates/config/container/container.html" />
  169 + <option value="$USER_HOME$/Desktop/boot/boot/打印二维码 - 多个组2.html" />
  170 + <option value="$PROJECT_DIR$/src/main/resources/static/css/style.css" />
  171 + <option value="$PROJECT_DIR$/src/main/resources/templates/config/container/print.html" />
  172 + </list>
  173 + </option>
  174 + </component>
  175 + <component name="MavenProjectNavigator">
  176 + <treeState>
  177 + <expand>
  178 + <path>
  179 + <item name="" type="16c1761:MavenProjectsStructure$RootNode" />
  180 + <item name="huaheng" type="9519ce18:MavenProjectsStructure$ProjectNode" />
  181 + </path>
  182 + </expand>
  183 + <select />
  184 + </treeState>
  185 + </component>
  186 + <component name="ProjectFrameBounds" extendedState="6">
  187 + <option name="x" value="470" />
  188 + <option name="width" value="980" />
  189 + <option name="height" value="1030" />
47 190 </component>
48 191 <component name="ProjectId" id="1QOzUtfkdeRmYuw3MIDHXXMLsFH" />
49 192 <component name="ProjectLevelVcsManager">
50 193 <OptionsSetting value="false" id="Update" />
51 194 </component>
  195 + <component name="ProjectView">
  196 + <navigator proportions="" version="1">
  197 + <foldersAlwaysOnTop value="true" />
  198 + </navigator>
  199 + <panes>
  200 + <pane id="PackagesPane" />
  201 + <pane id="ProjectPane">
  202 + <subPane>
  203 + <expand>
  204 + <path>
  205 + <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
  206 + <item name="wms2" type="462c0819:PsiDirectoryNode" />
  207 + </path>
  208 + <path>
  209 + <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
  210 + <item name="wms2" type="462c0819:PsiDirectoryNode" />
  211 + <item name="src" 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 + </path>
  219 + <path>
  220 + <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
  221 + <item name="wms2" type="462c0819:PsiDirectoryNode" />
  222 + <item name="src" type="462c0819:PsiDirectoryNode" />
  223 + <item name="main" type="462c0819:PsiDirectoryNode" />
  224 + <item name="java" type="462c0819:PsiDirectoryNode" />
  225 + </path>
  226 + <path>
  227 + <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
  228 + <item name="wms2" type="462c0819:PsiDirectoryNode" />
  229 + <item name="src" type="462c0819:PsiDirectoryNode" />
  230 + <item name="main" type="462c0819:PsiDirectoryNode" />
  231 + <item name="java" type="462c0819:PsiDirectoryNode" />
  232 + <item name="com" 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 + </path>
  243 + <path>
  244 + <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
  245 + <item name="wms2" type="462c0819:PsiDirectoryNode" />
  246 + <item name="src" type="462c0819:PsiDirectoryNode" />
  247 + <item name="main" type="462c0819:PsiDirectoryNode" />
  248 + <item name="java" type="462c0819:PsiDirectoryNode" />
  249 + <item name="com" type="462c0819:PsiDirectoryNode" />
  250 + <item name="huaheng" type="462c0819:PsiDirectoryNode" />
  251 + <item name="pc" type="462c0819:PsiDirectoryNode" />
  252 + </path>
  253 + <path>
  254 + <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
  255 + <item name="wms2" type="462c0819:PsiDirectoryNode" />
  256 + <item name="src" type="462c0819:PsiDirectoryNode" />
  257 + <item name="main" type="462c0819:PsiDirectoryNode" />
  258 + <item name="java" type="462c0819:PsiDirectoryNode" />
  259 + <item name="com" type="462c0819:PsiDirectoryNode" />
  260 + <item name="huaheng" type="462c0819:PsiDirectoryNode" />
  261 + <item name="pc" type="462c0819:PsiDirectoryNode" />
  262 + <item name="config" type="462c0819:PsiDirectoryNode" />
  263 + </path>
  264 + <path>
  265 + <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
  266 + <item name="wms2" type="462c0819:PsiDirectoryNode" />
  267 + <item name="src" type="462c0819:PsiDirectoryNode" />
  268 + <item name="main" type="462c0819:PsiDirectoryNode" />
  269 + <item name="java" type="462c0819:PsiDirectoryNode" />
  270 + <item name="com" type="462c0819:PsiDirectoryNode" />
  271 + <item name="huaheng" type="462c0819:PsiDirectoryNode" />
  272 + <item name="pc" type="462c0819:PsiDirectoryNode" />
  273 + <item name="config" type="462c0819:PsiDirectoryNode" />
  274 + <item name="container" type="462c0819:PsiDirectoryNode" />
  275 + </path>
  276 + <path>
  277 + <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
  278 + <item name="wms2" type="462c0819:PsiDirectoryNode" />
  279 + <item name="src" type="462c0819:PsiDirectoryNode" />
  280 + <item name="main" type="462c0819:PsiDirectoryNode" />
  281 + <item name="java" type="462c0819:PsiDirectoryNode" />
  282 + <item name="com" type="462c0819:PsiDirectoryNode" />
  283 + <item name="huaheng" type="462c0819:PsiDirectoryNode" />
  284 + <item name="pc" type="462c0819:PsiDirectoryNode" />
  285 + <item name="config" type="462c0819:PsiDirectoryNode" />
  286 + <item name="container" type="462c0819:PsiDirectoryNode" />
  287 + <item name="controller" type="462c0819:PsiDirectoryNode" />
  288 + </path>
  289 + <path>
  290 + <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
  291 + <item name="wms2" type="462c0819:PsiDirectoryNode" />
  292 + <item name="src" type="462c0819:PsiDirectoryNode" />
  293 + <item name="main" type="462c0819:PsiDirectoryNode" />
  294 + <item name="java" type="462c0819:PsiDirectoryNode" />
  295 + <item name="com" type="462c0819:PsiDirectoryNode" />
  296 + <item name="huaheng" type="462c0819:PsiDirectoryNode" />
  297 + <item name="pc" type="462c0819:PsiDirectoryNode" />
  298 + <item name="inventory" type="462c0819:PsiDirectoryNode" />
  299 + </path>
  300 + <path>
  301 + <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
  302 + <item name="wms2" type="462c0819:PsiDirectoryNode" />
  303 + <item name="src" type="462c0819:PsiDirectoryNode" />
  304 + <item name="main" type="462c0819:PsiDirectoryNode" />
  305 + <item name="java" type="462c0819:PsiDirectoryNode" />
  306 + <item name="com" type="462c0819:PsiDirectoryNode" />
  307 + <item name="huaheng" type="462c0819:PsiDirectoryNode" />
  308 + <item name="pc" type="462c0819:PsiDirectoryNode" />
  309 + <item name="inventory" type="462c0819:PsiDirectoryNode" />
  310 + <item name="inventoryTransaction" type="462c0819:PsiDirectoryNode" />
  311 + </path>
  312 + <path>
  313 + <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
  314 + <item name="wms2" type="462c0819:PsiDirectoryNode" />
  315 + <item name="src" type="462c0819:PsiDirectoryNode" />
  316 + <item name="main" type="462c0819:PsiDirectoryNode" />
  317 + <item name="java" type="462c0819:PsiDirectoryNode" />
  318 + <item name="com" type="462c0819:PsiDirectoryNode" />
  319 + <item name="huaheng" type="462c0819:PsiDirectoryNode" />
  320 + <item name="pc" type="462c0819:PsiDirectoryNode" />
  321 + <item name="inventory" type="462c0819:PsiDirectoryNode" />
  322 + <item name="inventoryTransaction" type="462c0819:PsiDirectoryNode" />
  323 + <item name="controller" type="462c0819:PsiDirectoryNode" />
  324 + </path>
  325 + <path>
  326 + <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
  327 + <item name="wms2" type="462c0819:PsiDirectoryNode" />
  328 + <item name="src" type="462c0819:PsiDirectoryNode" />
  329 + <item name="main" type="462c0819:PsiDirectoryNode" />
  330 + <item name="resources" type="462c0819:PsiDirectoryNode" />
  331 + </path>
  332 + <path>
  333 + <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
  334 + <item name="wms2" type="462c0819:PsiDirectoryNode" />
  335 + <item name="src" type="462c0819:PsiDirectoryNode" />
  336 + <item name="main" type="462c0819:PsiDirectoryNode" />
  337 + <item name="resources" type="462c0819:PsiDirectoryNode" />
  338 + <item name="templates" type="462c0819:PsiDirectoryNode" />
  339 + </path>
  340 + <path>
  341 + <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
  342 + <item name="wms2" type="462c0819:PsiDirectoryNode" />
  343 + <item name="src" type="462c0819:PsiDirectoryNode" />
  344 + <item name="main" type="462c0819:PsiDirectoryNode" />
  345 + <item name="resources" type="462c0819:PsiDirectoryNode" />
  346 + <item name="templates" type="462c0819:PsiDirectoryNode" />
  347 + <item name="config" type="462c0819:PsiDirectoryNode" />
  348 + </path>
  349 + <path>
  350 + <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
  351 + <item name="wms2" type="462c0819:PsiDirectoryNode" />
  352 + <item name="src" type="462c0819:PsiDirectoryNode" />
  353 + <item name="main" type="462c0819:PsiDirectoryNode" />
  354 + <item name="resources" type="462c0819:PsiDirectoryNode" />
  355 + <item name="templates" type="462c0819:PsiDirectoryNode" />
  356 + <item name="config" type="462c0819:PsiDirectoryNode" />
  357 + <item name="container" type="462c0819:PsiDirectoryNode" />
  358 + </path>
  359 + <path>
  360 + <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
  361 + <item name="wms2" type="462c0819:PsiDirectoryNode" />
  362 + <item name="src" type="462c0819:PsiDirectoryNode" />
  363 + <item name="main" type="462c0819:PsiDirectoryNode" />
  364 + <item name="resources" type="462c0819:PsiDirectoryNode" />
  365 + <item name="templates" type="462c0819:PsiDirectoryNode" />
  366 + <item name="inventory" type="462c0819:PsiDirectoryNode" />
  367 + </path>
  368 + <path>
  369 + <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
  370 + <item name="wms2" type="462c0819:PsiDirectoryNode" />
  371 + <item name="src" type="462c0819:PsiDirectoryNode" />
  372 + <item name="main" type="462c0819:PsiDirectoryNode" />
  373 + <item name="resources" type="462c0819:PsiDirectoryNode" />
  374 + <item name="templates" type="462c0819:PsiDirectoryNode" />
  375 + <item name="inventory" type="462c0819:PsiDirectoryNode" />
  376 + <item name="inventoryTransaction" type="462c0819:PsiDirectoryNode" />
  377 + </path>
  378 + <path>
  379 + <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
  380 + <item name="wms2" type="462c0819:PsiDirectoryNode" />
  381 + <item name="src" type="462c0819:PsiDirectoryNode" />
  382 + <item name="main" type="462c0819:PsiDirectoryNode" />
  383 + <item name="resources" type="462c0819:PsiDirectoryNode" />
  384 + <item name="templates" type="462c0819:PsiDirectoryNode" />
  385 + <item name="receipt" type="462c0819:PsiDirectoryNode" />
  386 + </path>
  387 + <path>
  388 + <item name="wms2" type="b2602c69:ProjectViewProjectNode" />
  389 + <item name="wms2" type="462c0819:PsiDirectoryNode" />
  390 + <item name="src" type="462c0819:PsiDirectoryNode" />
  391 + <item name="main" type="462c0819:PsiDirectoryNode" />
  392 + <item name="resources" type="462c0819:PsiDirectoryNode" />
  393 + <item name="templates" type="462c0819:PsiDirectoryNode" />
  394 + <item name="receipt" type="462c0819:PsiDirectoryNode" />
  395 + <item name="receiptHeader" type="462c0819:PsiDirectoryNode" />
  396 + </path>
  397 + </expand>
  398 + <select />
  399 + </subPane>
  400 + </pane>
  401 + <pane id="Scope" />
  402 + </panes>
  403 + </component>
52 404 <component name="PropertiesComponent">
53 405 <property name="ASKED_ADD_EXTERNAL_FILES" value="true" />
54 406 <property name="DefaultHtmlFileTemplate" value="HTML File" />
... ... @@ -58,6 +410,7 @@
58 410 <property name="RequestMappingsPanelWidth1" value="75" />
59 411 <property name="WebServerToolWindowFactoryState" value="false" />
60 412 <property name="aspect.path.notification.shown" value="true" />
  413 + <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1577352095697" />
61 414 <property name="full.screen.before.presentation.mode" value="false" />
62 415 <property name="last_opened_file_path" value="$PROJECT_DIR$/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable" />
63 416 <property name="node.js.detected.package.eslint" value="true" />
... ... @@ -66,6 +419,7 @@
66 419 <property name="node.js.path.for.package.tslint" value="project" />
67 420 <property name="node.js.selected.package.eslint" value="(autodetect)" />
68 421 <property name="node.js.selected.package.tslint" value="(autodetect)" />
  422 + <property name="nodejs_package_manager_path" value="npm" />
69 423 <property name="project.structure.last.edited" value="Modules" />
70 424 <property name="project.structure.proportion" value="0.15429688" />
71 425 <property name="project.structure.side.proportion" value="0.2" />
... ... @@ -73,10 +427,22 @@
73 427 <property name="settings.editor.selected.configurable" value="preferences.pluginManager" />
74 428 </component>
75 429 <component name="RecentsManager">
  430 + <key name="MoveFile.RECENT_KEYS">
  431 + <recent name="E:\code\wms2\src\main\resources\templates\config\configWarning" />
  432 + </key>
  433 + <key name="CopyClassDialog.RECENTS_KEY">
  434 + <recent name="com.huaheng.api.general.domain" />
  435 + </key>
76 436 <key name="CopyFile.RECENT_KEYS">
  437 + <recent name="D:\wms2\src\main\resources\templates\config\container" />
77 438 <recent name="E:\code\wms2\src\main\resources\static\ajax\libs\bootstrap-table\extensions\editable" />
78 439 </key>
79 440 </component>
  441 + <component name="RunAnythingCache">
  442 + <option name="myCommands">
  443 + <command value="," />
  444 + </option>
  445 + </component>
80 446 <component name="RunDashboard">
81 447 <option name="configurationTypes">
82 448 <set>
... ... @@ -93,17 +459,34 @@
93 459 </RuleState>
94 460 </list>
95 461 </option>
  462 + <option name="contentProportion" value="0.012987013" />
96 463 </component>
97   - <component name="RunManager" selected="Spring Boot.HuaHengApplication">
98   - <configuration name="ReceiptContainerHeaderServiceImpl" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
99   - <option name="MAIN_CLASS_NAME" value="com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderServiceImpl" />
  464 + <component name="RunManager" selected="Spring Boot.HuaHengApplication (1)">
  465 + <configuration name="EncryptPassword" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
  466 + <option name="MAIN_CLASS_NAME" value="com.huaheng.test.EncryptPassword" />
  467 + <module name="huaheng" />
  468 + <extension name="coverage">
  469 + <pattern>
  470 + <option name="PATTERN" value="com.huaheng.test.*" />
  471 + <option name="ENABLED" value="true" />
  472 + </pattern>
  473 + </extension>
  474 + <method v="2">
  475 + <option name="Make" enabled="true" />
  476 + </method>
  477 + </configuration>
  478 + <configuration name="MqTest.send" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
100 479 <module name="huaheng" />
101 480 <extension name="coverage">
102 481 <pattern>
103   - <option name="PATTERN" value="com.huaheng.pc.receipt.receiptContainerHeader.service.*" />
  482 + <option name="PATTERN" value="com.huaheng.test.*" />
104 483 <option name="ENABLED" value="true" />
105 484 </pattern>
106 485 </extension>
  486 + <option name="PACKAGE_NAME" value="com.huaheng.test" />
  487 + <option name="MAIN_CLASS_NAME" value="com.huaheng.test.MqTest" />
  488 + <option name="METHOD_NAME" value="send" />
  489 + <option name="TEST_OBJECT" value="method" />
107 490 <method v="2">
108 491 <option name="Make" enabled="true" />
109 492 </method>
... ... @@ -124,6 +507,19 @@
124 507 <option name="Make" enabled="true" />
125 508 </method>
126 509 </configuration>
  510 + <configuration name="HuaHengApplication (1)" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true">
  511 + <module name="wms2" />
  512 + <extension name="coverage">
  513 + <pattern>
  514 + <option name="PATTERN" value="com.huaheng.*" />
  515 + <option name="ENABLED" value="true" />
  516 + </pattern>
  517 + </extension>
  518 + <option name="SPRING_BOOT_MAIN_CLASS" value="com.huaheng.HuaHengApplication" />
  519 + <method v="2">
  520 + <option name="Make" enabled="true" />
  521 + </method>
  522 + </configuration>
127 523 <configuration name="HuaHengApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true">
128 524 <module name="huaheng" />
129 525 <extension name="coverage">
... ... @@ -134,41 +530,35 @@
134 530 </extension>
135 531 <option name="SPRING_BOOT_MAIN_CLASS" value="com.huaheng.HuaHengApplication" />
136 532 <option name="ALTERNATIVE_JRE_PATH" />
137   - <option name="UPDATE_ACTION_UPDATE_POLICY" value="UpdateClassesAndResources" />
  533 + <option name="UPDATE_ACTION_UPDATE_POLICY" value="UpdateResources" />
138 534 <option name="FRAME_DEACTIVATION_UPDATE_POLICY" value="UpdateClassesAndResources" />
139 535 <method v="2">
140 536 <option name="Make" enabled="true" />
141 537 </method>
142 538 </configuration>
143 539 <list>
144   - <item itemvalue="Application.ReceiptContainerHeaderServiceImpl" />
  540 + <item itemvalue="Application.EncryptPassword" />
  541 + <item itemvalue="JUnit.MqTest.send" />
145 542 <item itemvalue="JUnit.ServiceTest.sendSimpleMail" />
146 543 <item itemvalue="Spring Boot.HuaHengApplication" />
  544 + <item itemvalue="Spring Boot.HuaHengApplication (1)" />
147 545 </list>
148 546 <recent_temporary>
149 547 <list>
  548 + <item itemvalue="Spring Boot.HuaHengApplication (1)" />
150 549 <item itemvalue="Spring Boot.HuaHengApplication" />
151   - <item itemvalue="Application.ReceiptContainerHeaderServiceImpl" />
152 550 <item itemvalue="JUnit.ServiceTest.sendSimpleMail" />
  551 + <item itemvalue="JUnit.MqTest.send" />
  552 + <item itemvalue="Application.EncryptPassword" />
153 553 </list>
154 554 </recent_temporary>
155 555 </component>
156 556 <component name="ServiceViewManager">
157 557 <option name="allServicesViewState">
158 558 <serviceView>
159   - <option name="contentProportion" value="0.1612554" />
  559 + <option name="contentProportion" value="0.11255411" />
160 560 <treeState>
161   - <expand>
162   - <path>
163   - <item name="services root" type="e789fda9:ObjectUtils$Sentinel" />
164   - <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@c531c3e8" type="7427dc5b:ServiceModel$ServiceGroupNode" />
165   - </path>
166   - <path>
167   - <item name="services root" type="e789fda9:ObjectUtils$Sentinel" />
168   - <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@c531c3e8" type="7427dc5b:ServiceModel$ServiceGroupNode" />
169   - <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@ef9dc71e" type="7427dc5b:ServiceModel$ServiceGroupNode" />
170   - </path>
171   - </expand>
  561 + <expand />
172 562 <select />
173 563 </treeState>
174 564 </serviceView>
... ... @@ -271,154 +661,104 @@
271 661 <workItem from="1569745589865" duration="2739000" />
272 662 <workItem from="1569748443357" duration="438000" />
273 663 <workItem from="1569803438585" duration="13789000" />
274   - <workItem from="1570581146682" duration="9295000" />
275   - </task>
276   - <task id="LOCAL-00001" summary="修改添加物料时使用物料类别生成物料编码">
277   - <created>1567664306836</created>
278   - <option name="number" value="00001" />
279   - <option name="presentableId" value="LOCAL-00001" />
280   - <option name="project" value="LOCAL" />
281   - <updated>1567664306836</updated>
282   - </task>
283   - <task id="LOCAL-00002" summary="修改添加物料时使用物料类别生成物料编码">
284   - <created>1567936901056</created>
285   - <option name="number" value="00002" />
286   - <option name="presentableId" value="LOCAL-00002" />
287   - <option name="project" value="LOCAL" />
288   - <updated>1567936901056</updated>
289   - </task>
290   - <task id="LOCAL-00003" summary="修改质检页面、添加完成质检">
291   - <created>1568025230030</created>
292   - <option name="number" value="00003" />
293   - <option name="presentableId" value="LOCAL-00003" />
294   - <option name="project" value="LOCAL" />
295   - <updated>1568025230030</updated>
296   - </task>
297   - <task id="LOCAL-00004" summary="修改质检页面、添加完成质检">
298   - <created>1568110494128</created>
299   - <option name="number" value="00004" />
300   - <option name="presentableId" value="LOCAL-00004" />
301   - <option name="project" value="LOCAL" />
302   - <updated>1568110494128</updated>
303   - </task>
304   - <task id="LOCAL-00005" summary="修复入库质检请求地址冲突">
305   - <created>1568162392627</created>
306   - <option name="number" value="00005" />
307   - <option name="presentableId" value="LOCAL-00005" />
308   - <option name="project" value="LOCAL" />
309   - <updated>1568162392627</updated>
310   - </task>
311   - <task id="LOCAL-00006" summary="添加入库单打印">
312   - <created>1568174134623</created>
313   - <option name="number" value="00006" />
314   - <option name="presentableId" value="LOCAL-00006" />
315   - <option name="project" value="LOCAL" />
316   - <updated>1568174134623</updated>
317   - </task>
318   - <task id="LOCAL-00007" summary="修改入库单审核移动到入库单头表">
319   - <created>1568186231357</created>
320   - <option name="number" value="00007" />
321   - <option name="presentableId" value="LOCAL-00007" />
322   - <option name="project" value="LOCAL" />
323   - <updated>1568186231357</updated>
324   - </task>
325   - <task id="LOCAL-00008" summary="修改任务完成更新库位的错误">
326   - <created>1568191139437</created>
327   - <option name="number" value="00008" />
328   - <option name="presentableId" value="LOCAL-00008" />
329   - <option name="project" value="LOCAL" />
330   - <updated>1568191139437</updated>
331   - </task>
332   - <task id="LOCAL-00009" summary="修改入库类型自动判断">
333   - <created>1568259182874</created>
334   - <option name="number" value="00009" />
335   - <option name="presentableId" value="LOCAL-00009" />
336   - <option name="project" value="LOCAL" />
337   - <updated>1568259182874</updated>
338   - </task>
339   - <task id="LOCAL-00010" summary="修改入库单页面">
340   - <created>1568281128408</created>
341   - <option name="number" value="00010" />
342   - <option name="presentableId" value="LOCAL-00010" />
343   - <option name="project" value="LOCAL" />
344   - <updated>1568281128408</updated>
345   - </task>
346   - <task id="LOCAL-00011" summary="修改入库单页面,入库单审核,质检页面后台跳转接口">
347   - <created>1568616697584</created>
348   - <option name="number" value="00011" />
349   - <option name="presentableId" value="LOCAL-00011" />
350   - <option name="project" value="LOCAL" />
351   - <updated>1568616697584</updated>
352   - </task>
353   - <task id="LOCAL-00012" summary="修改 入库收货,生成上架任务自动执行定位">
354   - <created>1568692224269</created>
355   - <option name="number" value="00012" />
356   - <option name="presentableId" value="LOCAL-00012" />
357   - <option name="project" value="LOCAL" />
358   - <updated>1568692224269</updated>
359   - </task>
360   - <task id="LOCAL-00013" summary="修复商品管理、物料类别种bug">
361   - <created>1568784920330</created>
362   - <option name="number" value="00013" />
363   - <option name="presentableId" value="LOCAL-00013" />
364   - <option name="project" value="LOCAL" />
365   - <updated>1568784920330</updated>
366   - </task>
367   - <task id="LOCAL-00014" summary="修改入库明细添加加载定位规则的错误">
368   - <created>1568788287608</created>
369   - <option name="number" value="00014" />
370   - <option name="presentableId" value="LOCAL-00014" />
371   - <option name="project" value="LOCAL" />
372   - <updated>1568788287608</updated>
373   - </task>
374   - <task id="LOCAL-00015" summary="添加入库质检行内编辑">
375   - <created>1568857387442</created>
376   - <option name="number" value="00015" />
377   - <option name="presentableId" value="LOCAL-00015" />
378   - <option name="project" value="LOCAL" />
379   - <updated>1568857387442</updated>
380   - </task>
381   - <task id="LOCAL-00016" summary="行内编辑完成后更新数据库">
382   - <created>1568875291383</created>
383   - <option name="number" value="00016" />
384   - <option name="presentableId" value="LOCAL-00016" />
385   - <option name="project" value="LOCAL" />
386   - <updated>1568875291383</updated>
387   - </task>
388   - <task id="LOCAL-00017" summary="修改质检登记使用bootstarp boot原生方法初始化">
389   - <created>1568885639106</created>
390   - <option name="number" value="00017" />
391   - <option name="presentableId" value="LOCAL-00017" />
392   - <option name="project" value="LOCAL" />
393   - <updated>1568885639106</updated>
394   - </task>
395   - <task id="LOCAL-00018" summary="表单头创建时间添加默认创建时间&#10;开始时间默认提前一周,结束时间默认当天">
396   - <created>1569207792528</created>
397   - <option name="number" value="00018" />
398   - <option name="presentableId" value="LOCAL-00018" />
399   - <option name="project" value="LOCAL" />
400   - <updated>1569207792528</updated>
401   - </task>
402   - <task id="LOCAL-00019" summary="配置中所有页面添加重置按钮">
403   - <created>1569218224945</created>
404   - <option name="number" value="00019" />
405   - <option name="presentableId" value="LOCAL-00019" />
406   - <option name="project" value="LOCAL" />
407   - <updated>1569218224945</updated>
408   - </task>
409   - <task id="LOCAL-00020" summary="收货添加定位、取消定位、取消组盘按钮">
410   - <created>1569232154274</created>
411   - <option name="number" value="00020" />
412   - <option name="presentableId" value="LOCAL-00020" />
413   - <option name="project" value="LOCAL" />
414   - <updated>1569232154274</updated>
415   - </task>
416   - <task id="LOCAL-00021" summary="修改入库单数量使用BigDecimal类型,修改入库单添加、修改、物理类型添加和修改页面">
417   - <created>1569318560852</created>
418   - <option name="number" value="00021" />
419   - <option name="presentableId" value="LOCAL-00021" />
420   - <option name="project" value="LOCAL" />
421   - <updated>1569318560852</updated>
  664 + <workItem from="1570581146682" duration="20927000" />
  665 + <workItem from="1570613992837" duration="3000" />
  666 + <workItem from="1570667742663" duration="162000" />
  667 + <workItem from="1570667919475" duration="15928000" />
  668 + <workItem from="1570754346827" duration="21195000" />
  669 + <workItem from="1570840100481" duration="23954000" />
  670 + <workItem from="1571032298609" duration="8129000" />
  671 + <workItem from="1571043219515" duration="603000" />
  672 + <workItem from="1571101539586" duration="10573000" />
  673 + <workItem from="1571187054671" duration="1189000" />
  674 + <workItem from="1571272889222" duration="603000" />
  675 + <workItem from="1571273737925" duration="85000" />
  676 + <workItem from="1571273837562" duration="3768000" />
  677 + <workItem from="1571300400236" duration="564000" />
  678 + <workItem from="1571360965270" duration="10015000" />
  679 + <workItem from="1571618681667" duration="100000" />
  680 + <workItem from="1571618796133" duration="5393000" />
  681 + <workItem from="1571650852097" duration="388000" />
  682 + <workItem from="1571730992859" duration="6211000" />
  683 + <workItem from="1571793589446" duration="4409000" />
  684 + <workItem from="1571802162041" duration="1239000" />
  685 + <workItem from="1571811985419" duration="1151000" />
  686 + <workItem from="1571813176633" duration="2109000" />
  687 + <workItem from="1571877928640" duration="88000" />
  688 + <workItem from="1571883105941" duration="935000" />
  689 + <workItem from="1571884165422" duration="4991000" />
  690 + <workItem from="1571898249991" duration="4232000" />
  691 + <workItem from="1571983100230" duration="4800000" />
  692 + <workItem from="1572222845790" duration="23000" />
  693 + <workItem from="1572223191279" duration="31000" />
  694 + <workItem from="1572241535551" duration="625000" />
  695 + <workItem from="1572243079374" duration="68000" />
  696 + <workItem from="1572244739518" duration="7805000" />
  697 + <workItem from="1572309622449" duration="584000" />
  698 + <workItem from="1572311557063" duration="1863000" />
  699 + <workItem from="1572320193751" duration="472000" />
  700 + <workItem from="1572320671127" duration="1982000" />
  701 + <workItem from="1572421740780" duration="2214000" />
  702 + <workItem from="1572508717052" duration="767000" />
  703 + <workItem from="1572510572527" duration="589000" />
  704 + <workItem from="1572512185944" duration="8000" />
  705 + <workItem from="1572589020835" duration="476000" />
  706 + <workItem from="1572590452229" duration="1502000" />
  707 + <workItem from="1572592323148" duration="6000" />
  708 + <workItem from="1572832658949" duration="959000" />
  709 + <workItem from="1572837775650" duration="12521000" />
  710 + <workItem from="1572914081530" duration="12074000" />
  711 + <workItem from="1573434480300" duration="23000" />
  712 + <workItem from="1573434565742" duration="27000" />
  713 + <workItem from="1573434609619" duration="5949000" />
  714 + <workItem from="1573443267924" duration="3068000" />
  715 + <workItem from="1573451336746" duration="12626000" />
  716 + <workItem from="1573519499410" duration="1633000" />
  717 + <workItem from="1573521159413" duration="5332000" />
  718 + <workItem from="1573634144466" duration="1079000" />
  719 + <workItem from="1573695391377" duration="439000" />
  720 + <workItem from="1573695840147" duration="1238000" />
  721 + <workItem from="1573721771390" duration="57000" />
  722 + <workItem from="1573803890850" duration="1260000" />
  723 + <workItem from="1573805176417" duration="3000" />
  724 + <workItem from="1574037798176" duration="319000" />
  725 + <workItem from="1574129991269" duration="1422000" />
  726 + <workItem from="1574149477717" duration="150000" />
  727 + <workItem from="1574152276042" duration="2135000" />
  728 + <workItem from="1574211087867" duration="590000" />
  729 + <workItem from="1574211685051" duration="669000" />
  730 + <workItem from="1574213648864" duration="15909000" />
  731 + <workItem from="1574315910239" duration="2919000" />
  732 + <workItem from="1574320594485" duration="4805000" />
  733 + <workItem from="1574383470234" duration="1917000" />
  734 + <workItem from="1574402886027" duration="352000" />
  735 + <workItem from="1574406573271" duration="10000" />
  736 + <workItem from="1574413187883" duration="2458000" />
  737 + <workItem from="1574647559026" duration="1549000" />
  738 + <workItem from="1574650217287" duration="1426000" />
  739 + <workItem from="1574663555433" duration="234000" />
  740 + <workItem from="1574667250107" duration="248000" />
  741 + <workItem from="1574667819508" duration="853000" />
  742 + <workItem from="1574668813857" duration="78000" />
  743 + <workItem from="1574668955593" duration="4842000" />
  744 + <workItem from="1574734862621" duration="5289000" />
  745 + <workItem from="1574753109186" duration="1868000" />
  746 + <workItem from="1574758859383" duration="2324000" />
  747 + <workItem from="1574816203456" duration="3882000" />
  748 + <workItem from="1574826942468" duration="1951000" />
  749 + <workItem from="1574845813928" duration="13000" />
  750 + <workItem from="1574988822426" duration="270000" />
  751 + <workItem from="1577065229491" duration="6318000" />
  752 + <workItem from="1577147586156" duration="4281000" />
  753 + <workItem from="1577172416745" duration="4156000" />
  754 + <workItem from="1577234053132" duration="26850000" />
  755 + <workItem from="1577321748902" duration="21403000" />
  756 + <workItem from="1577406875935" duration="16374000" />
  757 + <workItem from="1577436625365" duration="3084000" />
  758 + <workItem from="1577665795897" duration="4942000" />
  759 + <workItem from="1577670757674" duration="6000" />
  760 + <workItem from="1577670887870" duration="8057000" />
  761 + <workItem from="1577687039415" duration="15130000" />
422 762 </task>
423 763 <task id="LOCAL-00022" summary="修改物料管理中物料类型使用物料类别表,不在使用数据字典">
424 764 <created>1569395439782</created>
... ... @@ -511,9 +851,304 @@
511 851 <option name="project" value="LOCAL" />
512 852 <updated>1570582333467</updated>
513 853 </task>
514   - <option name="localTasksCounter" value="35" />
  854 + <task id="LOCAL-00035" summary="添加流程时自动添加模块和类型&#10;修改入库到货通知">
  855 + <created>1570590631384</created>
  856 + <option name="number" value="00035" />
  857 + <option name="presentableId" value="LOCAL-00035" />
  858 + <option name="project" value="LOCAL" />
  859 + <updated>1570590631384</updated>
  860 + </task>
  861 + <task id="LOCAL-00036" summary="修改入库单明细中 入库流程和是否质检的显示">
  862 + <created>1570677316403</created>
  863 + <option name="number" value="00036" />
  864 + <option name="presentableId" value="LOCAL-00036" />
  865 + <option name="project" value="LOCAL" />
  866 + <updated>1570677316403</updated>
  867 + </task>
  868 + <task id="LOCAL-00037" summary="修改流程明细添加时模块可修改的问题">
  869 + <created>1570680001633</created>
  870 + <option name="number" value="00037" />
  871 + <option name="presentableId" value="LOCAL-00037" />
  872 + <option name="project" value="LOCAL" />
  873 + <updated>1570680001633</updated>
  874 + </task>
  875 + <task id="LOCAL-00038" summary="修改规则配置添加时类型选择项">
  876 + <created>1570687475164</created>
  877 + <option name="number" value="00038" />
  878 + <option name="presentableId" value="LOCAL-00038" />
  879 + <option name="project" value="LOCAL" />
  880 + <updated>1570687475164</updated>
  881 + </task>
  882 + <task id="LOCAL-00039" summary="修改质检登记查询code">
  883 + <created>1570778509824</created>
  884 + <option name="number" value="00039" />
  885 + <option name="presentableId" value="LOCAL-00039" />
  886 + <option name="project" value="LOCAL" />
  887 + <updated>1570778509824</updated>
  888 + </task>
  889 + <task id="LOCAL-00040" summary="添加站台表">
  890 + <created>1570781862179</created>
  891 + <option name="number" value="00040" />
  892 + <option name="presentableId" value="LOCAL-00040" />
  893 + <option name="project" value="LOCAL" />
  894 + <updated>1570781862179</updated>
  895 + </task>
  896 + <task id="LOCAL-00041" summary="修改规则配置">
  897 + <created>1570782180540</created>
  898 + <option name="number" value="00041" />
  899 + <option name="presentableId" value="LOCAL-00041" />
  900 + <option name="project" value="LOCAL" />
  901 + <updated>1570782180540</updated>
  902 + </task>
  903 + <task id="LOCAL-00042" summary="添加仓位分配接口">
  904 + <created>1570866304365</created>
  905 + <option name="number" value="00042" />
  906 + <option name="presentableId" value="LOCAL-00042" />
  907 + <option name="project" value="LOCAL" />
  908 + <updated>1570866304365</updated>
  909 + </task>
  910 + <task id="LOCAL-00043" summary="修改入库单头尾状态更新">
  911 + <created>1570869466088</created>
  912 + <option name="number" value="00043" />
  913 + <option name="presentableId" value="LOCAL-00043" />
  914 + <option name="project" value="LOCAL" />
  915 + <updated>1570869466088</updated>
  916 + </task>
  917 + <task id="LOCAL-00044" summary="添加站台表,入库组盘头表和任务表添加站台,默认为0">
  918 + <created>1571036164747</created>
  919 + <option name="number" value="00044" />
  920 + <option name="presentableId" value="LOCAL-00044" />
  921 + <option name="project" value="LOCAL" />
  922 + <updated>1571036164747</updated>
  923 + </task>
  924 + <task id="LOCAL-00045" summary="修改任务执行接口">
  925 + <created>1571039090453</created>
  926 + <option name="number" value="00045" />
  927 + <option name="presentableId" value="LOCAL-00045" />
  928 + <option name="project" value="LOCAL" />
  929 + <updated>1571039090453</updated>
  930 + </task>
  931 + <task id="LOCAL-00046" summary="修改接口实体类&#10;修改仓位分配接口">
  932 + <created>1571103433656</created>
  933 + <option name="number" value="00046" />
  934 + <option name="presentableId" value="LOCAL-00046" />
  935 + <option name="project" value="LOCAL" />
  936 + <updated>1571103433656</updated>
  937 + </task>
  938 + <task id="LOCAL-00047" summary="修改系统管理参数配置添加和修改页面中的模块和类型">
  939 + <created>1571108638507</created>
  940 + <option name="number" value="00047" />
  941 + <option name="presentableId" value="LOCAL-00047" />
  942 + <option name="project" value="LOCAL" />
  943 + <updated>1571108638507</updated>
  944 + </task>
  945 + <task id="LOCAL-00048" summary="修改重入和仓位下发接口">
  946 + <created>1571127851430</created>
  947 + <option name="number" value="00048" />
  948 + <option name="presentableId" value="LOCAL-00048" />
  949 + <option name="project" value="LOCAL" />
  950 + <updated>1571127851430</updated>
  951 + </task>
  952 + <task id="LOCAL-00049" summary="删除质检头表新增按钮">
  953 + <created>1571300858040</created>
  954 + <option name="number" value="00049" />
  955 + <option name="presentableId" value="LOCAL-00049" />
  956 + <option name="project" value="LOCAL" />
  957 + <updated>1571300858040</updated>
  958 + </task>
  959 + <task id="LOCAL-00050" summary="添加多环境配置文件">
  960 + <created>1571367987564</created>
  961 + <option name="number" value="00050" />
  962 + <option name="presentableId" value="LOCAL-00050" />
  963 + <option name="project" value="LOCAL" />
  964 + <updated>1571367987564</updated>
  965 + </task>
  966 + <task id="LOCAL-00051" summary="修改收货是是否收完的判断">
  967 + <created>1571650918354</created>
  968 + <option name="number" value="00051" />
  969 + <option name="presentableId" value="LOCAL-00051" />
  970 + <option name="project" value="LOCAL" />
  971 + <updated>1571650918355</updated>
  972 + </task>
  973 + <task id="LOCAL-00052" summary="修改收货是是否收完的判断">
  974 + <created>1571651232169</created>
  975 + <option name="number" value="00052" />
  976 + <option name="presentableId" value="LOCAL-00052" />
  977 + <option name="project" value="LOCAL" />
  978 + <updated>1571651232169</updated>
  979 + </task>
  980 + <task id="LOCAL-00053" summary="添加仓库复制">
  981 + <created>1571799829411</created>
  982 + <option name="number" value="00053" />
  983 + <option name="presentableId" value="LOCAL-00053" />
  984 + <option name="project" value="LOCAL" />
  985 + <updated>1571799829412</updated>
  986 + </task>
  987 + <task id="LOCAL-00054" summary="修改收货是是否手动指定库位,入库单状态的更新">
  988 + <created>1571884236981</created>
  989 + <option name="number" value="00054" />
  990 + <option name="presentableId" value="LOCAL-00054" />
  991 + <option name="project" value="LOCAL" />
  992 + <updated>1571884236981</updated>
  993 + </task>
  994 + <task id="LOCAL-00055" summary="修改容器已组盘的提示信息&#10;修改库位生成库位编码使用库位类型编码">
  995 + <created>1571888987512</created>
  996 + <option name="number" value="00055" />
  997 + <option name="presentableId" value="LOCAL-00055" />
  998 + <option name="project" value="LOCAL" />
  999 + <updated>1571888987512</updated>
  1000 + </task>
  1001 + <task id="LOCAL-00056" summary="修改仓库复制">
  1002 + <created>1571900347581</created>
  1003 + <option name="number" value="00056" />
  1004 + <option name="presentableId" value="LOCAL-00056" />
  1005 + <option name="project" value="LOCAL" />
  1006 + <updated>1571900347582</updated>
  1007 + </task>
  1008 + <task id="LOCAL-00057" summary="修改返回类型">
  1009 + <created>1571901488341</created>
  1010 + <option name="number" value="00057" />
  1011 + <option name="presentableId" value="LOCAL-00057" />
  1012 + <option name="project" value="LOCAL" />
  1013 + <updated>1571901488341</updated>
  1014 + </task>
  1015 + <task id="LOCAL-00058" summary="修改库位监控">
  1016 + <created>1572321206210</created>
  1017 + <option name="number" value="00058" />
  1018 + <option name="presentableId" value="LOCAL-00058" />
  1019 + <option name="project" value="LOCAL" />
  1020 + <updated>1572321206210</updated>
  1021 + </task>
  1022 + <task id="LOCAL-00059" summary="修改库位监控tips">
  1023 + <created>1572322002967</created>
  1024 + <option name="number" value="00059" />
  1025 + <option name="presentableId" value="LOCAL-00059" />
  1026 + <option name="project" value="LOCAL" />
  1027 + <updated>1572322002967</updated>
  1028 + </task>
  1029 + <task id="LOCAL-00060" summary="修改收发送邮件注释">
  1030 + <created>1572510829993</created>
  1031 + <option name="number" value="00060" />
  1032 + <option name="presentableId" value="LOCAL-00060" />
  1033 + <option name="project" value="LOCAL" />
  1034 + <updated>1572510829993</updated>
  1035 + </task>
  1036 + <task id="LOCAL-00061" summary="添加入库下发接口">
  1037 + <created>1572937952886</created>
  1038 + <option name="number" value="00061" />
  1039 + <option name="presentableId" value="LOCAL-00061" />
  1040 + <option name="project" value="LOCAL" />
  1041 + <updated>1572937952886</updated>
  1042 + </task>
  1043 + <task id="LOCAL-00062" summary="修改入库多仓库报错">
  1044 + <created>1573439368497</created>
  1045 + <option name="number" value="00062" />
  1046 + <option name="presentableId" value="LOCAL-00062" />
  1047 + <option name="project" value="LOCAL" />
  1048 + <updated>1573439368497</updated>
  1049 + </task>
  1050 + <task id="LOCAL-00063" summary="添加物料最大量最小量预警、空库位预警">
  1051 + <created>1573526280256</created>
  1052 + <option name="number" value="00063" />
  1053 + <option name="presentableId" value="LOCAL-00063" />
  1054 + <option name="project" value="LOCAL" />
  1055 + <updated>1573526280257</updated>
  1056 + </task>
  1057 + <task id="LOCAL-00064" summary="添加基础数据接口和入库单下发下发接口">
  1058 + <created>1574232706585</created>
  1059 + <option name="number" value="00064" />
  1060 + <option name="presentableId" value="LOCAL-00064" />
  1061 + <option name="project" value="LOCAL" />
  1062 + <updated>1574232706585</updated>
  1063 + </task>
  1064 + <task id="LOCAL-00065" summary="更新消息确认,发生错误后拒绝消息,消息被队列丢弃">
  1065 + <created>1574236213373</created>
  1066 + <option name="number" value="00065" />
  1067 + <option name="presentableId" value="LOCAL-00065" />
  1068 + <option name="project" value="LOCAL" />
  1069 + <updated>1574236213373</updated>
  1070 + </task>
  1071 + <task id="LOCAL-00066" summary="修改时间搜索无效,添加入库单没有明细不可以提交审核">
  1072 + <created>1574750425657</created>
  1073 + <option name="number" value="00066" />
  1074 + <option name="presentableId" value="LOCAL-00066" />
  1075 + <option name="project" value="LOCAL" />
  1076 + <updated>1574750425657</updated>
  1077 + </task>
  1078 + <task id="LOCAL-00067" summary="修复接口bug,新增库存同步物料同步用户同步接口">
  1079 + <created>1577352141668</created>
  1080 + <option name="number" value="00067" />
  1081 + <option name="presentableId" value="LOCAL-00067" />
  1082 + <option name="project" value="LOCAL" />
  1083 + <updated>1577352141668</updated>
  1084 + </task>
  1085 + <task id="LOCAL-00068" summary="托盘条码打印">
  1086 + <created>1577439445441</created>
  1087 + <option name="number" value="00068" />
  1088 + <option name="presentableId" value="LOCAL-00068" />
  1089 + <option name="project" value="LOCAL" />
  1090 + <updated>1577439445443</updated>
  1091 + </task>
  1092 + <task id="LOCAL-00069" summary="托盘条码打印">
  1093 + <created>1577668882647</created>
  1094 + <option name="number" value="00069" />
  1095 + <option name="presentableId" value="LOCAL-00069" />
  1096 + <option name="project" value="LOCAL" />
  1097 + <updated>1577668882648</updated>
  1098 + </task>
  1099 + <task id="LOCAL-00070" summary="托盘条码打印">
  1100 + <created>1577669193189</created>
  1101 + <option name="number" value="00070" />
  1102 + <option name="presentableId" value="LOCAL-00070" />
  1103 + <option name="project" value="LOCAL" />
  1104 + <updated>1577669193189</updated>
  1105 + </task>
  1106 + <option name="localTasksCounter" value="71" />
515 1107 <servers />
516 1108 </component>
  1109 + <component name="TimeTrackingManager">
  1110 + <option name="totallyTimeSpent" value="110601000" />
  1111 + </component>
  1112 + <component name="ToolWindowManager">
  1113 + <frame x="-7" y="-7" width="1550" height="838" extended-state="6" />
  1114 + <editor active="true" />
  1115 + <layout>
  1116 + <window_info content_ui="combo" id="Project" order="0" sideWeight="0.4978903" visible="true" weight="0.27680966" />
  1117 + <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
  1118 + <window_info id="Designer" order="2" />
  1119 + <window_info id="Image Layers" order="3" />
  1120 + <window_info id="Capture Tool" order="4" />
  1121 + <window_info id="UI Designer" order="5" />
  1122 + <window_info id="Favorites" order="6" sideWeight="0.5021097" side_tool="true" weight="0.308311" />
  1123 + <window_info id="Web" order="7" side_tool="true" />
  1124 + <window_info anchor="bottom" id="Message" order="0" />
  1125 + <window_info anchor="bottom" id="Find" order="1" />
  1126 + <window_info anchor="bottom" id="Run" order="2" />
  1127 + <window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
  1128 + <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
  1129 + <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
  1130 + <window_info anchor="bottom" id="TODO" order="6" />
  1131 + <window_info anchor="bottom" id="Spring" order="7" />
  1132 + <window_info anchor="bottom" id="Terminal" order="8" />
  1133 + <window_info anchor="bottom" id="Docker" order="9" show_stripe_button="false" />
  1134 + <window_info anchor="bottom" id="Event Log" order="10" sideWeight="0.09048257" side_tool="true" weight="0.44192636" />
  1135 + <window_info anchor="bottom" id="Java Enterprise" order="11" />
  1136 + <window_info anchor="bottom" id="Database Changes" order="12" />
  1137 + <window_info anchor="bottom" id="Version Control" order="13" sideWeight="0.91152817" weight="0.3286119" />
  1138 + <window_info anchor="bottom" id="Run Dashboard" order="14" sideWeight="0.9095174" weight="0.509915" />
  1139 + <window_info anchor="bottom" id="Messages" order="15" sideWeight="0.49932975" weight="0.3286119" />
  1140 + <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
  1141 + <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
  1142 + <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
  1143 + <window_info anchor="right" id="Maven" order="3" weight="0.3297587" />
  1144 + <window_info anchor="right" id="Palette" order="4" />
  1145 + <window_info anchor="right" id="Capture Analysis" order="5" />
  1146 + <window_info anchor="right" id="Database" order="6" />
  1147 + <window_info anchor="right" id="Palette&#9;" order="7" />
  1148 + <window_info anchor="right" id="Theme Preview" order="8" />
  1149 + <window_info anchor="right" id="Bean Validation" order="9" weight="0.3297587" />
  1150 + </layout>
  1151 + </component>
517 1152 <component name="TypeScriptGeneratedFilesManager">
518 1153 <option name="version" value="1" />
519 1154 </component>
... ... @@ -523,41 +1158,60 @@
523 1158 <entry key="MAIN">
524 1159 <value>
525 1160 <State>
  1161 + <option name="RECENTLY_FILTERED_USER_GROUPS">
  1162 + <collection />
  1163 + </option>
  1164 + <option name="RECENTLY_FILTERED_BRANCH_GROUPS">
  1165 + <collection />
  1166 + </option>
526 1167 <option name="COLUMN_ORDER" />
527 1168 </State>
528 1169 </value>
529 1170 </entry>
530 1171 </map>
531 1172 </option>
  1173 + <option name="RECENT_FILTERS">
  1174 + <map>
  1175 + <entry key="Branch">
  1176 + <value>
  1177 + <list />
  1178 + </value>
  1179 + </entry>
  1180 + <entry key="User">
  1181 + <value>
  1182 + <list />
  1183 + </value>
  1184 + </entry>
  1185 + </map>
  1186 + </option>
532 1187 </component>
533 1188 <component name="VcsManagerConfiguration">
534   - <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
535   - <MESSAGE value="修改入库单页面" />
536   - <MESSAGE value="修改入库单页面,入库单审核,质检页面后台跳转接口" />
537   - <MESSAGE value="修改 入库收货,生成上架任务自动执行定位" />
538   - <MESSAGE value="修复商品管理、物料类别种bug" />
539   - <MESSAGE value="修改入库明细添加加载定位规则的错误" />
540   - <MESSAGE value="添加入库质检行内编辑" />
541   - <MESSAGE value="行内编辑完成后更新数据库" />
542   - <MESSAGE value="修改质检登记使用bootstarp boot原生方法初始化" />
543   - <MESSAGE value="表单头创建时间添加默认创建时间&#10;开始时间默认提前一周,结束时间默认当天" />
544   - <MESSAGE value="配置中所有页面添加重置按钮" />
545   - <MESSAGE value="收货添加定位、取消定位、取消组盘按钮" />
546   - <MESSAGE value="修改入库单数量使用BigDecimal类型,修改入库单添加、修改、物理类型添加和修改页面" />
547   - <MESSAGE value="修改物料管理中物料类型使用物料类别表,不在使用数据字典" />
548   - <MESSAGE value="修改波次主表、波次流程头表、波次流程明细页面" />
549   - <MESSAGE value="修改入库首选项修改添加模块为select" />
550   - <MESSAGE value="修改任务取消入库组盘状态不回滚,修改任务完成入库单状态不完成" />
551   - <MESSAGE value="添加自动生成容器编码" />
552   - <MESSAGE value="修改入库首选项页面,规则查询使用数据字典值,表格值显示修改" />
553   - <MESSAGE value="入库单添加重置按钮,入库单历史添加上游单号搜索" />
554   - <MESSAGE value="添加取消入库组盘时容器为临时容器,删除容器" />
555   - <MESSAGE value="出库完成时删除临时容器" />
556   - <MESSAGE value="修改容器新增时容器enable状态" />
557   - <MESSAGE value="修改入库组盘页面中任务类型的显示问题&#10;修改任务完成不修改入库组盘状态的问题" />
558   - <MESSAGE value="添加根据code查询物料" />
559   - <MESSAGE value="添加根据容器编码查找容器的方法&#10;配置规则添加自动添加模块类型&#10;添加是否自动生成临时容器" />
560   - <option name="LAST_COMMIT_MESSAGE" value="添加根据容器编码查找容器的方法&#10;配置规则添加自动添加模块类型&#10;添加是否自动生成临时容器" />
  1189 + <MESSAGE value="添加站台表,入库组盘头表和任务表添加站台,默认为0" />
  1190 + <MESSAGE value="修改任务执行接口" />
  1191 + <MESSAGE value="修改接口实体类" />
  1192 + <MESSAGE value="修改接口实体类&#10;修改仓位分配接口" />
  1193 + <MESSAGE value="修改系统管理参数配置添加和修改页面中的模块和类型" />
  1194 + <MESSAGE value="修改重入和仓位下发接口" />
  1195 + <MESSAGE value="删除质检头表新增按钮" />
  1196 + <MESSAGE value="添加多环境配置文件" />
  1197 + <MESSAGE value="修改收货是是否收完的判断" />
  1198 + <MESSAGE value="添加仓库复制" />
  1199 + <MESSAGE value="修改收货是是否手动指定库位,入库单状态的更新" />
  1200 + <MESSAGE value="修改容器已组盘的提示信息&#10;修改库位生成库位编码使用库位类型编码" />
  1201 + <MESSAGE value="修改仓库复制" />
  1202 + <MESSAGE value="修改返回类型" />
  1203 + <MESSAGE value="修改库位监控" />
  1204 + <MESSAGE value="修改库位监控tips" />
  1205 + <MESSAGE value="修改收发送邮件注释" />
  1206 + <MESSAGE value="添加入库下发接口" />
  1207 + <MESSAGE value="修改入库多仓库报错" />
  1208 + <MESSAGE value="添加物料最大量最小量预警、空库位预警" />
  1209 + <MESSAGE value="添加基础数据接口和入库单下发下发接口" />
  1210 + <MESSAGE value="更新消息确认,发生错误后拒绝消息,消息被队列丢弃" />
  1211 + <MESSAGE value="修改时间搜索无效,添加入库单没有明细不可以提交审核" />
  1212 + <MESSAGE value="修复接口bug,新增库存同步物料同步用户同步接口" />
  1213 + <MESSAGE value="托盘条码打印" />
  1214 + <option name="LAST_COMMIT_MESSAGE" value="托盘条码打印" />
561 1215 </component>
562 1216 <component name="XDebuggerManager">
563 1217 <breakpoint-manager>
... ... @@ -565,42 +1219,94 @@
565 1219 <line-breakpoint enabled="true" type="java-line">
566 1220 <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/bom/controller/BomHeaderController.java</url>
567 1221 <line>164</line>
  1222 + <properties />
568 1223 <option name="timeStamp" value="24" />
569 1224 </line-breakpoint>
570 1225 <line-breakpoint enabled="true" type="java-line">
571 1226 <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java</url>
572   - <line>150</line>
  1227 + <line>165</line>
  1228 + <properties />
573 1229 <option name="timeStamp" value="26" />
574 1230 </line-breakpoint>
575 1231 <line-breakpoint enabled="true" type="java-line">
576 1232 <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkingRegister/controller/CheckingRegisterController.java</url>
577   - <line>174</line>
  1233 + <line>179</line>
  1234 + <properties />
578 1235 <option name="timeStamp" value="28" />
579 1236 </line-breakpoint>
580 1237 <line-breakpoint enabled="true" type="java-line">
  1238 + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/configValue/controller/ConfigValueController.java</url>
  1239 + <line>141</line>
  1240 + <properties />
  1241 + <option name="timeStamp" value="66" />
  1242 + </line-breakpoint>
  1243 + <line-breakpoint enabled="true" type="java-line">
581 1244 <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java</url>
582   - <line>631</line>
583   - <option name="timeStamp" value="48" />
  1245 + <line>190</line>
  1246 + <properties />
  1247 + <option name="timeStamp" value="87" />
584 1248 </line-breakpoint>
585 1249 <line-breakpoint enabled="true" type="java-line">
586   - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptContainerDetail/service/ReceiptContainerDetailServiceImpl.java</url>
587   - <line>56</line>
588   - <option name="timeStamp" value="49" />
  1250 + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/api/wcs/controller/WarecellAllocation.java</url>
  1251 + <line>35</line>
  1252 + <properties />
  1253 + <option name="timeStamp" value="101" />
589 1254 </line-breakpoint>
590 1255 <line-breakpoint enabled="true" type="java-line">
591   - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptContainerDetail/service/ReceiptContainerDetailServiceImpl.java</url>
592   - <line>84</line>
593   - <option name="timeStamp" value="51" />
  1256 + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java</url>
  1257 + <line>194</line>
  1258 + <properties>
  1259 + <option name="lambda-ordinal" value="-1" />
  1260 + </properties>
  1261 + <option name="timeStamp" value="112" />
594 1262 </line-breakpoint>
595 1263 <line-breakpoint enabled="true" type="java-line">
596   - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/statusFlow/controller/StatusFlowHeaderController.java</url>
597   - <line>86</line>
598   - <option name="timeStamp" value="57" />
  1264 + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java</url>
  1265 + <line>107</line>
  1266 + <properties />
  1267 + <option name="timeStamp" value="121" />
599 1268 </line-breakpoint>
600 1269 <line-breakpoint enabled="true" type="java-line">
601   - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkingRegister/controller/CheckingRegisterController.java</url>
602   - <line>145</line>
603   - <option name="timeStamp" value="62" />
  1270 + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java</url>
  1271 + <line>312</line>
  1272 + <properties />
  1273 + <option name="timeStamp" value="123" />
  1274 + </line-breakpoint>
  1275 + <line-breakpoint enabled="true" type="java-line">
  1276 + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/configWarning/service/ConfigWarningService.java</url>
  1277 + <line>110</line>
  1278 + <properties />
  1279 + <option name="timeStamp" value="124" />
  1280 + </line-breakpoint>
  1281 + <line-breakpoint enabled="true" type="java-line">
  1282 + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/configWarning/service/ConfigWarningService.java</url>
  1283 + <line>140</line>
  1284 + <properties />
  1285 + <option name="timeStamp" value="125" />
  1286 + </line-breakpoint>
  1287 + <line-breakpoint enabled="true" type="java-line">
  1288 + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/configWarning/service/ConfigWarningService.java</url>
  1289 + <line>118</line>
  1290 + <properties />
  1291 + <option name="timeStamp" value="126" />
  1292 + </line-breakpoint>
  1293 + <line-breakpoint enabled="true" type="java-line">
  1294 + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/configWarning/service/ConfigWarningService.java</url>
  1295 + <line>109</line>
  1296 + <properties />
  1297 + <option name="timeStamp" value="127" />
  1298 + </line-breakpoint>
  1299 + <line-breakpoint enabled="true" type="java-line">
  1300 + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java</url>
  1301 + <line>709</line>
  1302 + <properties />
  1303 + <option name="timeStamp" value="135" />
  1304 + </line-breakpoint>
  1305 + <line-breakpoint enabled="true" type="java-line">
  1306 + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/ReceiptHeaderController.java</url>
  1307 + <line>198</line>
  1308 + <properties />
  1309 + <option name="timeStamp" value="139" />
604 1310 </line-breakpoint>
605 1311 <line-breakpoint enabled="true" type="javascript">
606 1312 <url>file://$PROJECT_DIR$/src/main/resources/templates/check/checkingRegister/checkingRegister.html</url>
... ... @@ -621,8 +1327,431 @@
621 1327 </watches-manager>
622 1328 </component>
623 1329 <component name="com.intellij.coverage.CoverageDataManagerImpl">
624   - <SUITE FILE_PATH="coverage/huaheng$HuaHengApplication.ic" NAME="HuaHengApplication Coverage Results" MODIFIED="1568251952497" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false">
  1330 + <SUITE FILE_PATH="coverage/huaheng$HuaHengApplication.ic" NAME="HuaHengApplication Coverage Results" MODIFIED="1570677350612" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false">
625 1331 <FILTER>com.huaheng.*</FILTER>
626 1332 </SUITE>
627 1333 </component>
  1334 + <component name="editorHistoryManager">
  1335 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/domain/ReceiptDomain.java">
  1336 + <provider selected="true" editor-type-id="text-editor">
  1337 + <state relative-caret-position="209">
  1338 + <caret line="16" column="46" selection-start-line="16" selection-start-column="32" selection-end-line="16" selection-end-column="46" />
  1339 + </state>
  1340 + </provider>
  1341 + </entry>
  1342 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/LoginApi.java">
  1343 + <provider selected="true" editor-type-id="text-editor">
  1344 + <state relative-caret-position="186">
  1345 + <caret line="31" column="32" selection-start-line="31" selection-start-column="24" selection-end-line="31" selection-end-column="32" />
  1346 + </state>
  1347 + </provider>
  1348 + </entry>
  1349 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderServiceImpl.java">
  1350 + <provider selected="true" editor-type-id="text-editor">
  1351 + <state relative-caret-position="240">
  1352 + <caret line="89" column="9" lean-forward="true" selection-start-line="89" selection-start-column="9" selection-end-line="89" selection-end-column="9" />
  1353 + </state>
  1354 + </provider>
  1355 + </entry>
  1356 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/domain/ShipmentDomain.java">
  1357 + <provider selected="true" editor-type-id="text-editor">
  1358 + <state relative-caret-position="152">
  1359 + <caret line="12" column="48" selection-start-line="12" selection-start-column="33" selection-end-line="12" selection-end-column="48" />
  1360 + </state>
  1361 + </provider>
  1362 + </entry>
  1363 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderService.java">
  1364 + <provider selected="true" editor-type-id="text-editor">
  1365 + <state relative-caret-position="126">
  1366 + <caret line="15" column="11" selection-start-line="15" selection-start-column="11" selection-end-line="15" selection-end-column="11" />
  1367 + </state>
  1368 + </provider>
  1369 + </entry>
  1370 + <entry file="file://$PROJECT_DIR$/src/main/resources/mybatis/shipment/ShipmentDetailMapper.xml">
  1371 + <provider selected="true" editor-type-id="text-editor">
  1372 + <state relative-caret-position="160">
  1373 + <caret line="140" column="2" selection-start-line="140" selection-start-column="2" selection-end-line="140" selection-end-column="2" />
  1374 + </state>
  1375 + </provider>
  1376 + </entry>
  1377 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/shipment/shipmentDetail/mapper/ShipmentDetailMapper.java">
  1378 + <provider selected="true" editor-type-id="text-editor">
  1379 + <state relative-caret-position="214">
  1380 + <caret line="24" column="8" selection-start-line="24" selection-start-column="8" selection-end-line="24" selection-end-column="8" />
  1381 + </state>
  1382 + </provider>
  1383 + </entry>
  1384 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailService.java">
  1385 + <provider selected="true" editor-type-id="text-editor">
  1386 + <state relative-caret-position="290">
  1387 + <caret line="38" column="62" selection-start-line="38" selection-start-column="47" selection-end-line="38" selection-end-column="62" />
  1388 + </state>
  1389 + </provider>
  1390 + </entry>
  1391 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailServiceImpl.java">
  1392 + <provider selected="true" editor-type-id="text-editor">
  1393 + <state relative-caret-position="233">
  1394 + <caret line="304" column="21" lean-forward="true" selection-start-line="304" selection-start-column="21" selection-end-line="304" selection-end-column="21" />
  1395 + </state>
  1396 + </provider>
  1397 + </entry>
  1398 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/ShipmentApiService.java">
  1399 + <provider selected="true" editor-type-id="text-editor">
  1400 + <state relative-caret-position="230">
  1401 + <caret line="136" column="52" selection-start-line="136" selection-start-column="34" selection-end-line="136" selection-end-column="52" />
  1402 + </state>
  1403 + </provider>
  1404 + </entry>
  1405 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/ShipmentApi.java">
  1406 + <provider selected="true" editor-type-id="text-editor">
  1407 + <state relative-caret-position="266">
  1408 + <caret line="31" column="55" lean-forward="true" selection-start-line="31" selection-start-column="55" selection-end-line="31" selection-end-column="55" />
  1409 + </state>
  1410 + </provider>
  1411 + </entry>
  1412 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/ReceiptApiService.java">
  1413 + <provider selected="true" editor-type-id="text-editor">
  1414 + <state relative-caret-position="236">
  1415 + <caret line="111" column="56" selection-start-line="111" selection-start-column="43" selection-end-line="111" selection-end-column="56" />
  1416 + </state>
  1417 + </provider>
  1418 + </entry>
  1419 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/ReceiptApi.java">
  1420 + <provider selected="true" editor-type-id="text-editor">
  1421 + <state relative-caret-position="247">
  1422 + <caret line="32" column="52" selection-start-line="32" selection-start-column="52" selection-end-line="32" selection-end-column="52" />
  1423 + </state>
  1424 + </provider>
  1425 + </entry>
  1426 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/system/user/domain/User.java">
  1427 + <provider selected="true" editor-type-id="text-editor">
  1428 + <state relative-caret-position="209">
  1429 + <caret line="23" column="13" selection-start-line="23" selection-start-column="13" selection-end-line="23" selection-end-column="13" />
  1430 + </state>
  1431 + </provider>
  1432 + </entry>
  1433 + <entry file="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-extension/3.1.2/mybatis-plus-extension-3.1.2.jar!/com/baomidou/mybatisplus/extension/service/impl/ServiceImpl.class">
  1434 + <provider selected="true" editor-type-id="text-editor">
  1435 + <state relative-caret-position="114">
  1436 + <caret line="36" column="13" selection-start-line="36" selection-start-column="13" selection-end-line="36" selection-end-column="13" />
  1437 + </state>
  1438 + </provider>
  1439 + </entry>
  1440 + <entry file="file://$PROJECT_DIR$/src/main/resources/mybatis/system/UserMapper.xml">
  1441 + <provider selected="true" editor-type-id="text-editor">
  1442 + <state relative-caret-position="149">
  1443 + <caret line="43" column="4" selection-start-line="43" selection-start-column="4" selection-end-line="43" selection-end-column="4" />
  1444 + </state>
  1445 + </provider>
  1446 + </entry>
  1447 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/system/user/service/IUserService.java">
  1448 + <provider selected="true" editor-type-id="text-editor">
  1449 + <state relative-caret-position="171">
  1450 + <caret line="18" column="29" lean-forward="true" selection-start-line="18" selection-start-column="29" selection-end-line="18" selection-end-column="29" />
  1451 + </state>
  1452 + </provider>
  1453 + </entry>
  1454 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/service/MaterialService.java">
  1455 + <provider selected="true" editor-type-id="text-editor">
  1456 + <state relative-caret-position="-152">
  1457 + <caret line="8" column="60" lean-forward="true" selection-start-line="8" selection-start-column="60" selection-end-line="8" selection-end-column="60" />
  1458 + </state>
  1459 + </provider>
  1460 + </entry>
  1461 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/service/MaterialServiceImpl.java">
  1462 + <provider selected="true" editor-type-id="text-editor">
  1463 + <state relative-caret-position="95">
  1464 + <caret line="27" column="89" selection-start-line="27" selection-start-column="32" selection-end-line="27" selection-end-column="89" />
  1465 + </state>
  1466 + </provider>
  1467 + </entry>
  1468 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/system/user/controller/UserController.java">
  1469 + <provider selected="true" editor-type-id="text-editor">
  1470 + <state relative-caret-position="206">
  1471 + <caret line="71" column="46" selection-start-line="71" selection-start-column="46" selection-end-line="71" selection-end-column="46" />
  1472 + </state>
  1473 + </provider>
  1474 + </entry>
  1475 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/system/user/mapper/UserMapper.java">
  1476 + <provider selected="true" editor-type-id="text-editor">
  1477 + <state relative-caret-position="149">
  1478 + <caret line="23" column="22" selection-start-line="23" selection-start-column="22" selection-end-line="23" selection-end-column="22" />
  1479 + </state>
  1480 + </provider>
  1481 + </entry>
  1482 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/system/user/service/UserServiceImpl.java">
  1483 + <provider selected="true" editor-type-id="text-editor">
  1484 + <state relative-caret-position="19">
  1485 + <caret line="42" column="28" lean-forward="true" selection-start-line="42" selection-start-column="28" selection-end-line="42" selection-end-column="28" />
  1486 + <folding>
  1487 + <element signature="e#5266#5267#0" expanded="true" />
  1488 + <element signature="e#5320#5321#0" expanded="true" />
  1489 + <element signature="e#5486#5487#0" expanded="true" />
  1490 + <element signature="e#5551#5552#0" expanded="true" />
  1491 + <element signature="e#5726#5727#0" expanded="true" />
  1492 + <element signature="e#5796#5797#0" expanded="true" />
  1493 + <element signature="e#5950#5951#0" expanded="true" />
  1494 + <element signature="e#6008#6009#0" expanded="true" />
  1495 + <element signature="e#6166#6167#0" expanded="true" />
  1496 + <element signature="e#6222#6223#0" expanded="true" />
  1497 + <element signature="e#8470#8471#0" expanded="true" />
  1498 + <element signature="e#8520#8521#0" expanded="true" />
  1499 + <element signature="e#17198#17199#0" expanded="true" />
  1500 + <element signature="e#17266#17267#0" expanded="true" />
  1501 + </folding>
  1502 + </state>
  1503 + </provider>
  1504 + </entry>
  1505 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/domain/Receipt.java">
  1506 + <provider selected="true" editor-type-id="text-editor">
  1507 + <state relative-caret-position="171">
  1508 + <caret line="13" column="13" selection-start-line="13" selection-start-column="13" selection-end-line="13" selection-end-column="13" />
  1509 + </state>
  1510 + </provider>
  1511 + </entry>
  1512 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/BasicDataApi.java">
  1513 + <provider selected="true" editor-type-id="text-editor">
  1514 + <state relative-caret-position="2907">
  1515 + <caret line="170" column="1" selection-start-line="170" selection-start-column="1" selection-end-line="170" selection-end-column="1" />
  1516 + </state>
  1517 + </provider>
  1518 + </entry>
  1519 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/domain/InventoryDomain.java">
  1520 + <provider selected="true" editor-type-id="text-editor">
  1521 + <state relative-caret-position="114">
  1522 + <caret line="13" column="57" selection-start-line="13" selection-start-column="57" selection-end-line="13" selection-end-column="57" />
  1523 + </state>
  1524 + </provider>
  1525 + </entry>
  1526 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/BasicDataApiService.java">
  1527 + <provider selected="true" editor-type-id="text-editor">
  1528 + <state relative-caret-position="105">
  1529 + <caret line="657" column="76" selection-start-line="657" selection-start-column="76" selection-end-line="657" selection-end-column="76" />
  1530 + </state>
  1531 + </provider>
  1532 + </entry>
  1533 + <entry file="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-extension/3.1.2/mybatis-plus-extension-3.1.2.jar!/com/baomidou/mybatisplus/extension/service/IService.class">
  1534 + <provider selected="true" editor-type-id="text-editor">
  1535 + <state relative-caret-position="171">
  1536 + <caret line="70" column="6" selection-start-line="70" selection-start-column="6" selection-end-line="70" selection-end-column="6" />
  1537 + </state>
  1538 + </provider>
  1539 + </entry>
  1540 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/container/service/ContainerService.java">
  1541 + <provider selected="true" editor-type-id="text-editor">
  1542 + <state relative-caret-position="76">
  1543 + <caret line="9" column="17" selection-start-line="9" selection-start-column="17" selection-end-line="9" selection-end-column="17" />
  1544 + </state>
  1545 + </provider>
  1546 + </entry>
  1547 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/service/InventoryTransactionService.java">
  1548 + <provider selected="true" editor-type-id="text-editor">
  1549 + <state relative-caret-position="57">
  1550 + <caret line="4" column="17" selection-start-line="4" selection-start-column="17" selection-end-line="4" selection-end-column="17" />
  1551 + </state>
  1552 + </provider>
  1553 + </entry>
  1554 + <entry file="file://$PROJECT_DIR$/src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html">
  1555 + <provider selected="true" editor-type-id="text-editor">
  1556 + <state relative-caret-position="391">
  1557 + <caret line="322" column="10" lean-forward="true" selection-start-line="310" selection-start-column="7" selection-end-line="322" selection-end-column="10" />
  1558 + </state>
  1559 + </provider>
  1560 + </entry>
  1561 + <entry file="file://$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/jsLanguageServicesImpl/external/lib.es5.d.ts">
  1562 + <provider selected="true" editor-type-id="text-editor">
  1563 + <state relative-caret-position="140">
  1564 + <caret line="472" column="4" selection-start-line="472" selection-start-column="4" selection-end-line="472" selection-end-column="4" />
  1565 + </state>
  1566 + </provider>
  1567 + </entry>
  1568 + <entry file="file://$PROJECT_DIR$/src/main/resources/static/js/plugins/metisMenu/jquery.metisMenu.js">
  1569 + <provider selected="true" editor-type-id="text-editor">
  1570 + <state relative-caret-position="128">
  1571 + <caret line="101" column="8" selection-start-line="101" selection-start-column="8" selection-end-line="101" selection-end-column="8" />
  1572 + </state>
  1573 + </provider>
  1574 + </entry>
  1575 + <entry file="file://$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/jsLanguageServicesImpl/external/lib.dom.d.ts">
  1576 + <provider selected="true" editor-type-id="text-editor">
  1577 + <state relative-caret-position="128">
  1578 + <caret line="10712" column="13" selection-start-line="10712" selection-start-column="13" selection-end-line="10712" selection-end-column="13" />
  1579 + </state>
  1580 + </provider>
  1581 + </entry>
  1582 + <entry file="file://$PROJECT_DIR$/src/main/resources/static/js/qrcode/qrcode.min.js">
  1583 + <provider selected="true" editor-type-id="text-editor">
  1584 + <state>
  1585 + <caret column="4" selection-start-column="4" selection-end-column="4" />
  1586 + </state>
  1587 + </provider>
  1588 + </entry>
  1589 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/controller/InventoryTransactionController.java">
  1590 + <provider selected="true" editor-type-id="text-editor">
  1591 + <state relative-caret-position="-872">
  1592 + <caret line="41" column="33" lean-forward="true" selection-start-line="41" selection-start-column="33" selection-end-line="41" selection-end-column="33" />
  1593 + </state>
  1594 + </provider>
  1595 + </entry>
  1596 + <entry file="file://$PROJECT_DIR$/src/main/resources/templates/receipt/receiptHeader/receiptHeader.html">
  1597 + <provider selected="true" editor-type-id="text-editor">
  1598 + <state relative-caret-position="152">
  1599 + <caret line="675" column="43" lean-forward="true" selection-start-line="675" selection-start-column="43" selection-end-line="675" selection-end-column="43" />
  1600 + </state>
  1601 + </provider>
  1602 + </entry>
  1603 + <entry file="file://$PROJECT_DIR$/src/main/resources/templates/receipt/receiptHeader/add.html">
  1604 + <provider selected="true" editor-type-id="text-editor">
  1605 + <state relative-caret-position="-962" />
  1606 + </provider>
  1607 + </entry>
  1608 + <entry file="file://$PROJECT_DIR$/src/main/resources/static/js/echarts/echarts.js">
  1609 + <provider selected="true" editor-type-id="text-editor">
  1610 + <state relative-caret-position="19">
  1611 + <caret line="30207" selection-start-line="30207" selection-end-line="30207" />
  1612 + </state>
  1613 + </provider>
  1614 + </entry>
  1615 + <entry file="file://$PROJECT_DIR$/src/main/resources/templates/receipt/receiptHeader/report.html">
  1616 + <provider selected="true" editor-type-id="text-editor">
  1617 + <state relative-caret-position="225">
  1618 + <caret line="70" column="4" lean-forward="true" selection-start-line="70" selection-start-column="4" selection-end-line="70" selection-end-column="22" />
  1619 + <folding>
  1620 + <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" />
  1621 + </folding>
  1622 + </state>
  1623 + </provider>
  1624 + </entry>
  1625 + <entry file="file://$USER_HOME$/Desktop/长沙华恒企网2.0_new/答题HTML/答题HTML/answer.html">
  1626 + <provider selected="true" editor-type-id="text-editor">
  1627 + <state relative-caret-position="-171" />
  1628 + </provider>
  1629 + </entry>
  1630 + <entry file="file://$PROJECT_DIR$/src/main/resources/templates/config/container/container.html">
  1631 + <provider selected="true" editor-type-id="text-editor">
  1632 + <state relative-caret-position="1292">
  1633 + <caret line="68" column="44" selection-start-line="68" selection-start-column="35" selection-end-line="68" selection-end-column="44" />
  1634 + </state>
  1635 + </provider>
  1636 + </entry>
  1637 + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/container/controller/ContainerController.java">
  1638 + <provider selected="true" editor-type-id="text-editor">
  1639 + <state relative-caret-position="228">
  1640 + <caret line="41" column="29" selection-start-line="41" selection-start-column="29" selection-end-line="41" selection-end-column="38" />
  1641 + </state>
  1642 + </provider>
  1643 + </entry>
  1644 + <entry file="file://$PROJECT_DIR$/src/main/resources/static/js/jquery.jqprint-0.3.js">
  1645 + <provider selected="true" editor-type-id="text-editor">
  1646 + <state relative-caret-position="-316">
  1647 + <caret line="43" column="118" selection-start-line="43" selection-start-column="113" selection-end-line="43" selection-end-column="118" />
  1648 + </state>
  1649 + </provider>
  1650 + </entry>
  1651 + <entry file="file://$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/jsLanguageServicesImpl/external/browser.d.ts">
  1652 + <provider selected="true" editor-type-id="text-editor">
  1653 + <state relative-caret-position="155">
  1654 + <caret line="46" column="4" selection-start-line="46" selection-start-column="4" selection-end-line="46" selection-end-column="4" />
  1655 + </state>
  1656 + </provider>
  1657 + </entry>
  1658 + <entry file="file://$PROJECT_DIR$/src/main/resources/templates/inventory/inventoryTransaction/report.html">
  1659 + <provider selected="true" editor-type-id="text-editor">
  1660 + <state relative-caret-position="147">
  1661 + <caret line="98" column="13" selection-start-line="98" selection-start-column="13" selection-end-line="98" selection-end-column="13" />
  1662 + <folding>
  1663 + <element signature="n#style#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />
  1664 + <element signature="n#style#0;n#span#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />
  1665 + <element signature="n#style#0;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" />
  1666 + <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" />
  1667 + </folding>
  1668 + </state>
  1669 + </provider>
  1670 + </entry>
  1671 + <entry file="file://$USER_HOME$/Desktop/boot/boot/打印二维码 - 多个组2.html">
  1672 + <provider selected="true" editor-type-id="text-editor">
  1673 + <state relative-caret-position="241">
  1674 + <caret line="47" column="36" lean-forward="true" selection-start-line="47" selection-start-column="36" selection-end-line="47" selection-end-column="36" />
  1675 + <folding>
  1676 + <element signature="n#style#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />
  1677 + <element signature="n#style#0;n#div#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />
  1678 + <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" />
  1679 + <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" />
  1680 + <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" />
  1681 + <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" />
  1682 + <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" />
  1683 + <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" />
  1684 + <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" />
  1685 + <element signature="e#2973#2979#0" expanded="true" />
  1686 + <element signature="e#2979#2985#0" expanded="true" />
  1687 + <element signature="e#2985#2991#0" expanded="true" />
  1688 + <element signature="e#2991#2997#0" expanded="true" />
  1689 + <element signature="e#2997#3003#0" expanded="true" />
  1690 + <element signature="e#3003#3009#0" expanded="true" />
  1691 + <element signature="e#3009#3015#0" expanded="true" />
  1692 + <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" />
  1693 + <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" />
  1694 + <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" />
  1695 + <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" />
  1696 + <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" />
  1697 + <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" />
  1698 + <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" />
  1699 + <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" />
  1700 + <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" />
  1701 + <element signature="e#3995#4001#0" expanded="true" />
  1702 + <element signature="e#4001#4007#0" expanded="true" />
  1703 + <element signature="e#4007#4013#0" expanded="true" />
  1704 + <element signature="e#4013#4019#0" expanded="true" />
  1705 + <element signature="e#4019#4025#0" expanded="true" />
  1706 + <element signature="e#4025#4031#0" expanded="true" />
  1707 + <element signature="e#4031#4037#0" expanded="true" />
  1708 + <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" />
  1709 + <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" />
  1710 + </folding>
  1711 + </state>
  1712 + </provider>
  1713 + </entry>
  1714 + <entry file="jar://$MAVEN_REPOSITORY$/com/alibaba/druid/1.1.18/druid-1.1.18.jar!/support/http/resources/css/bootstrap.min.css">
  1715 + <provider selected="true" editor-type-id="text-editor">
  1716 + <state relative-caret-position="152">
  1717 + <caret line="8" column="25402" selection-start-line="8" selection-start-column="25402" selection-end-line="8" selection-end-column="25402" />
  1718 + </state>
  1719 + </provider>
  1720 + </entry>
  1721 + <entry file="file://$PROJECT_DIR$/src/main/resources/static/css/main/style.min862f.css">
  1722 + <provider selected="true" editor-type-id="text-editor">
  1723 + <state>
  1724 + <caret column="49663" selection-start-column="49663" selection-end-column="49663" />
  1725 + </state>
  1726 + </provider>
  1727 + </entry>
  1728 + <entry file="file://$PROJECT_DIR$/src/main/resources/static/css/bootstrap.min.css">
  1729 + <provider selected="true" editor-type-id="text-editor">
  1730 + <state relative-caret-position="127">
  1731 + <caret line="2721" column="1" selection-start-line="2721" selection-start-column="1" selection-end-line="2721" selection-end-column="1" />
  1732 + </state>
  1733 + </provider>
  1734 + </entry>
  1735 + <entry file="file://$PROJECT_DIR$/src/main/resources/static/css/style.css">
  1736 + <provider selected="true" editor-type-id="text-editor">
  1737 + <state relative-caret-position="241">
  1738 + <caret line="3360" column="17" lean-forward="true" selection-start-line="3360" selection-start-column="17" selection-end-line="3360" selection-end-column="17" />
  1739 + </state>
  1740 + </provider>
  1741 + </entry>
  1742 + <entry file="file://$PROJECT_DIR$/src/main/resources/templates/config/container/print.html">
  1743 + <provider selected="true" editor-type-id="text-editor">
  1744 + <state relative-caret-position="150">
  1745 + <caret line="21" column="28" lean-forward="true" selection-start-line="21" selection-start-column="28" selection-end-line="21" selection-end-column="28" />
  1746 + <folding>
  1747 + <element signature="n#style#0;n#div#0;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" />
  1748 + <element signature="n#style#0;n#span#0;n#div#0;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" />
  1749 + <element signature="n#style#0;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />
  1750 + <element signature="n#style#0;n#div#0;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />
  1751 + <element signature="n#style#0;n#table#0;n#div#0;n#div#0;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />
  1752 + </folding>
  1753 + </state>
  1754 + </provider>
  1755 + </entry>
  1756 + </component>
628 1757 </project>
629 1758 \ No newline at end of file
... ...
... ... @@ -249,6 +249,43 @@
249 249 <version>3.17</version>
250 250 </dependency>
251 251  
  252 + <!--jasperreports-->
  253 + <dependency>
  254 + <groupId>net.sf.jasperreports</groupId>
  255 + <artifactId>jasperreports</artifactId>
  256 + <version>6.10.0</version>
  257 + </dependency>
  258 + <dependency>
  259 + <groupId>net.sf.jasperreports</groupId>
  260 + <artifactId>jasperreports-fonts</artifactId>
  261 + <version>6.10.0</version>
  262 + </dependency>
  263 + <dependency>
  264 + <groupId>com.itextpdf</groupId>
  265 + <artifactId>itextpdf</artifactId>
  266 + <version>5.5.7</version>
  267 + </dependency>
  268 + <dependency>
  269 + <groupId>com.itextpdf</groupId>
  270 + <artifactId>itext-pdfa</artifactId>
  271 + <version>5.5.7</version>
  272 + </dependency>
  273 + <dependency>
  274 + <groupId>com.itextpdf</groupId>
  275 + <artifactId>itext-asian</artifactId>
  276 + <version>5.2.0</version>
  277 + </dependency>
  278 + <dependency>
  279 + <groupId>cn.lesper</groupId>
  280 + <artifactId>iTextAsian</artifactId>
  281 + <version>3.0</version>
  282 + </dependency>
  283 + <dependency>
  284 + <groupId>org.codehaus.groovy</groupId>
  285 + <artifactId>groovy-all</artifactId>
  286 + <version>2.4.11</version>
  287 + </dependency>
  288 +
252 289 <!--activiti工作流-->
253 290 <!--<dependency>-->
254 291 <!--<groupId>org.activiti</groupId>-->
... ...
src/main/java/com/huaheng/api/acs/controller/StateInfoUp.java 0 → 100644
  1 +package com.huaheng.api.acs.controller;
  2 +
  3 +import com.huaheng.api.acs.domain.StateInfoUploadModel;
  4 +import com.huaheng.api.acs.service.AcsService;
  5 +import com.huaheng.framework.aspectj.lang.annotation.Log;
  6 +import com.huaheng.framework.aspectj.lang.constant.BusinessType;
  7 +import com.huaheng.framework.web.controller.BaseController;
  8 +import com.huaheng.framework.web.domain.AjaxResult;
  9 +import io.swagger.annotations.Api;
  10 +import io.swagger.annotations.ApiOperation;
  11 +import org.springframework.web.bind.annotation.*;
  12 +
  13 +import javax.annotation.Resource;
  14 +
  15 +
  16 +@RestController
  17 +@RequestMapping("/api/ACS/v1")
  18 +@Api(tags = {"ACS"}, description = "登陆接口")
  19 +public class StateInfoUp extends BaseController {
  20 + @Resource
  21 + private AcsService acsService;
  22 +
  23 + /**
  24 + * AGV 信息上传
  25 + */
  26 +// @RequiresPermissions("api:acs:StateInfoUpload")
  27 + @Log(title = "AGV 信息上传", action = BusinessType.INSERT)
  28 + @PostMapping("/StateInfoUpload")
  29 + @ApiOperation("AGV 信息上传接口")
  30 + @ResponseBody
  31 + public AjaxResult StateInfoUpload(@RequestBody StateInfoUploadModel model)
  32 + {
  33 + return acsService.StateInfoUpload(model);
  34 + }
  35 +
  36 +}
... ...
src/main/java/com/huaheng/api/acs/controller/TaskConfirm.java 0 → 100644
  1 +package com.huaheng.api.acs.controller;
  2 +
  3 +import com.huaheng.api.acs.domain.AgvTask;
  4 +import com.huaheng.api.acs.service.AcsService;
  5 +import com.huaheng.framework.aspectj.lang.annotation.Log;
  6 +import com.huaheng.framework.aspectj.lang.constant.BusinessType;
  7 +import com.huaheng.framework.web.controller.BaseController;
  8 +import com.huaheng.framework.web.domain.AjaxResult;
  9 +import io.swagger.annotations.Api;
  10 +import io.swagger.annotations.ApiOperation;
  11 +import org.springframework.web.bind.annotation.*;
  12 +
  13 +import javax.annotation.Resource;
  14 +
  15 +
  16 +@RestController
  17 +@RequestMapping("/api/ACS/v1")
  18 +@Api(tags = {"ACS"}, description = "登陆接口")
  19 +public class TaskConfirm extends BaseController {
  20 + @Resource
  21 + private AcsService acsService;
  22 +
  23 + /**
  24 + * AGV 任务回传
  25 + */
  26 +// @RequiresPermissions("api:acs:TaskConfirm")
  27 + @Log(title = "AGV 任务回传", action = BusinessType.UPDATE)
  28 + @PostMapping("/TaskConfirm")
  29 + @ApiOperation("AGV 任务回传接口")
  30 + @ResponseBody
  31 + public AjaxResult TaskConfirm(@RequestBody AgvTask model)
  32 + {
  33 + return acsService.TaskConfirm(model);
  34 + }
  35 +
  36 +
  37 +}
... ...
src/main/java/com/huaheng/api/acs/domain/AgvTask.java 0 → 100644
  1 +package com.huaheng.api.acs.domain;
  2 +
  3 +import com.huaheng.framework.web.domain.BaseEntity;
  4 +
  5 +import java.util.Date;
  6 +import java.util.List;
  7 +
  8 +/**
  9 + * AGV任务实体
  10 + *
  11 + */
  12 +public class AgvTask extends BaseEntity {
  13 +
  14 +
  15 + private Integer id;
  16 + //交互标识
  17 + private String interactionId;
  18 + //任务头标识
  19 + private Integer taskHeaderId;
  20 + //任务子标识
  21 + private Integer taskDetailId;
  22 + //任务类型
  23 + private String taskType;
  24 + //货架编码
  25 + private String shelfNo;
  26 + //站台编码
  27 + private String station;
  28 + //源位置编码
  29 + private String fromLocationNo;
  30 + //目的位置编码
  31 + private String toLocationNo;
  32 + //方向
  33 + private String orientation;
  34 + //平台
  35 + private String platform;
  36 + //小车编号
  37 + private String carNo;
  38 + //状态
  39 + private String state;
  40 + //优先级
  41 + private Integer status;
  42 + //仓库ID
  43 + private Integer warehouseId;
  44 + //仓库编码
  45 + private String warehouseCode;
  46 + //货主ID
  47 + private Integer companyId;
  48 + //货主编码
  49 + private String companyCode;
  50 + //货主ID list
  51 + private List<Integer> companyIdList;
  52 + //货主list
  53 + private List<String> companyCodeList;
  54 +
  55 + private Date date;
  56 +
  57 + public Date getDate() {
  58 + return date;
  59 + }
  60 +
  61 + public void setDate(Date date) {
  62 + this.date = date;
  63 + }
  64 +
  65 + public List<Integer> getCompanyIdList() {
  66 + return companyIdList;
  67 + }
  68 +
  69 + public void setCompanyIdList(List<Integer> companyIdList) {
  70 + this.companyIdList = companyIdList;
  71 + }
  72 +
  73 + public Integer getWarehouseId() {
  74 + return warehouseId;
  75 + }
  76 +
  77 + public void setWarehouseId(Integer warehouseId) {
  78 + this.warehouseId = warehouseId;
  79 + }
  80 +
  81 + public String getWarehouseCode() {
  82 + return warehouseCode;
  83 + }
  84 +
  85 + public void setWarehouseCode(String warehouseCode) {
  86 + this.warehouseCode = warehouseCode;
  87 + }
  88 +
  89 + public Integer getCompanyId() {
  90 + return companyId;
  91 + }
  92 +
  93 + public void setCompanyId(Integer companyId) {
  94 + this.companyId = companyId;
  95 + }
  96 +
  97 + public String getCompanyCode() {
  98 + return companyCode;
  99 + }
  100 +
  101 + public void setCompanyCode(String companyCode) {
  102 + this.companyCode = companyCode;
  103 + }
  104 +
  105 + public List<String> getCompanyCodeList() {
  106 + return companyCodeList;
  107 + }
  108 +
  109 + public void setCompanyCodeList(List<String> companyCodeList) {
  110 + this.companyCodeList = companyCodeList;
  111 + }
  112 +
  113 + public Integer getId() {
  114 + return id;
  115 + }
  116 +
  117 + public void setId(Integer id) {
  118 + this.id = id;
  119 + }
  120 +
  121 + public String getInteractionId() {
  122 + return interactionId;
  123 + }
  124 +
  125 + public void setInteractionId(String interactionId) {
  126 + this.interactionId = interactionId;
  127 + }
  128 +
  129 + public Integer getTaskHeaderId() {
  130 + return taskHeaderId;
  131 + }
  132 +
  133 + public void setTaskHeaderId(Integer taskHeaderId) {
  134 + this.taskHeaderId = taskHeaderId;
  135 + }
  136 +
  137 + public Integer getTaskDetailId() {
  138 + return taskDetailId;
  139 + }
  140 +
  141 + public void setTaskDetailId(Integer taskDetailId) {
  142 + this.taskDetailId = taskDetailId;
  143 + }
  144 +
  145 + public String getTaskType() {
  146 + return taskType;
  147 + }
  148 +
  149 + public void setTaskType(String taskType) {
  150 + this.taskType = taskType;
  151 + }
  152 +
  153 + public String getShelfNo() {
  154 + return shelfNo;
  155 + }
  156 +
  157 + public void setShelfNo(String shelfNo) {
  158 + this.shelfNo = shelfNo;
  159 + }
  160 +
  161 + public String getStation() {
  162 + return station;
  163 + }
  164 +
  165 + public void setStation(String station) {
  166 + this.station = station;
  167 + }
  168 +
  169 + public String getFromLocationNo() {
  170 + return fromLocationNo;
  171 + }
  172 +
  173 + public void setFromLocationNo(String fromLocationNo) {
  174 + this.fromLocationNo = fromLocationNo;
  175 + }
  176 +
  177 + public String getToLocationNo() {
  178 + return toLocationNo;
  179 + }
  180 +
  181 + public void setToLocationNo(String toLocationNo) {
  182 + this.toLocationNo = toLocationNo;
  183 + }
  184 +
  185 + public String getOrientation() {
  186 + return orientation;
  187 + }
  188 +
  189 + public void setOrientation(String orientation) {
  190 + this.orientation = orientation;
  191 + }
  192 +
  193 + public String getPlatform() {
  194 + return platform;
  195 + }
  196 +
  197 + public void setPlatform(String platform) {
  198 + this.platform = platform;
  199 + }
  200 +
  201 + public String getCarNo() {
  202 + return carNo;
  203 + }
  204 +
  205 + public void setCarNo(String carNo) {
  206 + this.carNo = carNo;
  207 + }
  208 +
  209 + public String getState() {
  210 + return state;
  211 + }
  212 +
  213 + public void setState(String state) {
  214 + this.state = state;
  215 + }
  216 +
  217 + public Integer getStatus() {
  218 + return status;
  219 + }
  220 +
  221 + public void setStatus(Integer status) {
  222 + this.status = status;
  223 + }
  224 +
  225 + @Override
  226 + public String toString() {
  227 + return "AgvTask{" +
  228 + "id=" + id +
  229 + ", interactionId='" + interactionId + '\'' +
  230 + ", taskHeaderId=" + taskHeaderId +
  231 + ", taskDetailId=" + taskDetailId +
  232 + ", taskType='" + taskType + '\'' +
  233 + ", shelfNo='" + shelfNo + '\'' +
  234 + ", station='" + station + '\'' +
  235 + ", fromLocationNo='" + fromLocationNo + '\'' +
  236 + ", toLocationNo='" + toLocationNo + '\'' +
  237 + ", orientation='" + orientation + '\'' +
  238 + ", platform='" + platform + '\'' +
  239 + ", carNo='" + carNo + '\'' +
  240 + ", state='" + state + '\'' +
  241 + '}';
  242 + }
  243 +}
... ...
src/main/java/com/huaheng/api/acs/domain/StateInfoUploadModel.java 0 → 100644
  1 +package com.huaheng.api.acs.domain;
  2 +
  3 +import java.util.Date;
  4 +
  5 +/**
  6 + * 小车信息实体
  7 + *
  8 + */
  9 +public class StateInfoUploadModel {
  10 +
  11 + private String carNo; // 小车编号,string(50),唯一 ,必填
  12 + private String interactionId; // 交互标识,int,默认 0,必填"
  13 + private String taskType; // 任务类型,string (50),putway 上架 pick 拣货,必填
  14 + private String shelfNo; // 货架编码,string (50),默认 0,必填
  15 + private String station; // 站台编码,string (50),默认 0,必填
  16 + private String currentLocationNo; // 当前位置编码,string (50),默认 0 必填
  17 + private String fromLocationNo; // 源位置编码,string (50),默认 0 必填
  18 + private String toLocationNo; // 目的位置编码,string (50),默认 0 必填
  19 + private String orientation; // 方向,string (50),N,S,E,W,必填
  20 + private Integer percentCapacity; // 电量,int【0-100】,必填
  21 + private Integer exceptionFlag; // 异常标志 0 正常 1 异常,int,默认 0 必填
  22 + private String state; // 状态,string (50),0 空闲 1 预定 2 任务中 -1 充电,必填
  23 + private String exceptionInfo; // 异常信息 string(200)
  24 + //仓库ID
  25 + private Integer warehouseId;
  26 + //仓库编码
  27 + private String warehouseCode;
  28 +
  29 + private Date date;
  30 +
  31 + public Date getDate() {
  32 + return date;
  33 + }
  34 +
  35 + public void setDate(Date date) {
  36 + this.date = date;
  37 + }
  38 +
  39 + public Integer getWarehouseId() {
  40 + return warehouseId;
  41 + }
  42 +
  43 + public void setWarehouseId(Integer warehouseId) {
  44 + this.warehouseId = warehouseId;
  45 + }
  46 +
  47 + public String getWarehouseCode() {
  48 + return warehouseCode;
  49 + }
  50 +
  51 + public void setWarehouseCode(String warehouseCode) {
  52 + this.warehouseCode = warehouseCode;
  53 + }
  54 +
  55 + public String getCarNo() {
  56 + return carNo;
  57 + }
  58 +
  59 + public void setCarNo(String carNo) {
  60 + this.carNo = carNo;
  61 + }
  62 +
  63 + public String getInteractionId() {
  64 + return interactionId;
  65 + }
  66 +
  67 + public void setInteractionId(String interactionId) {
  68 + this.interactionId = interactionId;
  69 + }
  70 +
  71 + public String getTaskType() {
  72 + return taskType;
  73 + }
  74 +
  75 + public void setTaskType(String taskType) {
  76 + this.taskType = taskType;
  77 + }
  78 +
  79 + public String getShelfNo() {
  80 + return shelfNo;
  81 + }
  82 +
  83 + public void setShelfNo(String shelfNo) {
  84 + this.shelfNo = shelfNo;
  85 + }
  86 +
  87 + public String getStation() {
  88 + return station;
  89 + }
  90 +
  91 + public void setStation(String station) {
  92 + this.station = station;
  93 + }
  94 +
  95 + public String getCurrentLocationNo() {
  96 + return currentLocationNo;
  97 + }
  98 +
  99 + public void setCurrentLocationNo(String currentLocationNo) {
  100 + this.currentLocationNo = currentLocationNo;
  101 + }
  102 +
  103 + public String getFromLocationNo() {
  104 + return fromLocationNo;
  105 + }
  106 +
  107 + public void setFromLocationNo(String fromLocationNo) {
  108 + this.fromLocationNo = fromLocationNo;
  109 + }
  110 +
  111 + public String getToLocationNo() {
  112 + return toLocationNo;
  113 + }
  114 +
  115 + public void setToLocationNo(String toLocationNo) {
  116 + this.toLocationNo = toLocationNo;
  117 + }
  118 +
  119 + public String getOrientation() {
  120 + return orientation;
  121 + }
  122 +
  123 + public void setOrientation(String orientation) {
  124 + this.orientation = orientation;
  125 + }
  126 +
  127 + public Integer getPercentCapacity() {
  128 + return percentCapacity;
  129 + }
  130 +
  131 + public void setPercentCapacity(Integer percentCapacity) {
  132 + this.percentCapacity = percentCapacity;
  133 + }
  134 +
  135 + public Integer getExceptionFlag() {
  136 + return exceptionFlag;
  137 + }
  138 +
  139 + public void setExceptionFlag(Integer exceptionFlag) {
  140 + this.exceptionFlag = exceptionFlag;
  141 + }
  142 +
  143 + public String getState() {
  144 + return state;
  145 + }
  146 +
  147 + public void setState(String state) {
  148 + this.state = state;
  149 + }
  150 +
  151 + public String getExceptionInfo() {
  152 + return exceptionInfo;
  153 + }
  154 +
  155 + public void setExceptionInfo(String exceptionInfo) {
  156 + this.exceptionInfo = exceptionInfo;
  157 + }
  158 +
  159 +
  160 +
  161 +}
... ...
src/main/java/com/huaheng/api/acs/service/AcsService.java 0 → 100644
  1 +package com.huaheng.api.acs.service;
  2 +
  3 +import com.huaheng.api.acs.domain.AgvTask;
  4 +import com.huaheng.api.acs.domain.StateInfoUploadModel;
  5 +import com.huaheng.framework.web.domain.AjaxResult;
  6 +
  7 +public interface AcsService {
  8 +
  9 +
  10 + //AGV 信息上传
  11 + AjaxResult StateInfoUpload(StateInfoUploadModel model);
  12 +
  13 +
  14 + //AGV 任务回传
  15 + AjaxResult TaskConfirm(AgvTask agvTask);
  16 +}
... ...
src/main/java/com/huaheng/api/acs/service/AcsServiceImpl.java 0 → 100644
  1 +package com.huaheng.api.acs.service;
  2 +
  3 +import com.huaheng.api.acs.domain.AgvTask;
  4 +import com.huaheng.api.acs.domain.StateInfoUploadModel;
  5 +import com.huaheng.framework.web.domain.AjaxResult;
  6 +import org.springframework.stereotype.Service;
  7 +
  8 +/**
  9 + * @ClassName AcsServiceImpl
  10 + * @Description TODO
  11 + * @Author Administrator
  12 + * @Date 2019/12/2615:38
  13 + */
  14 +@Service
  15 +public class AcsServiceImpl implements AcsService {
  16 + @Override
  17 + public AjaxResult StateInfoUpload(StateInfoUploadModel model) {
  18 + return null;
  19 + }
  20 +
  21 + @Override
  22 + public AjaxResult TaskConfirm(AgvTask agvTask) {
  23 + return null;
  24 + }
  25 +}
... ...
src/main/java/com/huaheng/api/general/controller/BasicDataApi.java
... ... @@ -5,10 +5,12 @@ import com.huaheng.framework.aspectj.lang.annotation.Log;
5 5 import com.huaheng.framework.aspectj.lang.constant.BusinessType;
6 6 import com.huaheng.framework.web.controller.BaseController;
7 7 import com.huaheng.framework.web.domain.AjaxResult;
  8 +import com.huaheng.pc.config.containerCapacity.domain.ContainerCapacity;
8 9 import com.huaheng.pc.config.customer.domain.Customer;
9 10 import com.huaheng.pc.config.material.domain.Material;
10 11 import com.huaheng.pc.config.supplier.domain.Supplier;
11 12 import com.huaheng.pc.config.warehouse.domain.Warehouse;
  13 +import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
12 14 import com.huaheng.pc.system.dept.domain.Dept;
13 15 import com.huaheng.pc.system.dict.domain.DictData;
14 16 import com.huaheng.pc.system.user.domain.User;
... ... @@ -38,6 +40,17 @@ public class BasicDataApi extends BaseController {
38 40 return ajaxResult;
39 41 }
40 42  
  43 +
  44 + @Log(title = "物料查询", action = BusinessType.INSERT)
  45 + @PostMapping("/queryMaterialApi")
  46 + @ApiOperation("物料查询公共接口")
  47 + @ResponseBody
  48 + public AjaxResult QueryMaterialApi(@RequestBody Material material)
  49 + {
  50 + AjaxResult ajaxResult = basicDataApiService.queryMaterial(material);
  51 + return ajaxResult;
  52 + }
  53 +
41 54 /**
42 55 * 同步字典
43 56 */
... ... @@ -105,6 +118,29 @@ public class BasicDataApi extends BaseController {
105 118 return ajaxResult;
106 119 }
107 120  
  121 +
  122 + @Log(title = "用户同步", action = BusinessType.INSERT)
  123 + @PostMapping("/queryUserApi")
  124 + @ApiOperation("用户查询公共接口")
  125 + @ResponseBody
  126 + public AjaxResult queryUserApi(@RequestBody User user)
  127 + {
  128 + AjaxResult ajaxResult = basicDataApiService.queryUser(user);
  129 + return ajaxResult;
  130 + }
  131 +
  132 + /**
  133 + * 同步容器容量
  134 + */
  135 + @Log(title = "容器容量添加", action = BusinessType.INSERT)
  136 + @PostMapping("/containerCapacity")
  137 + @ApiOperation("容器容量添加公共接口")
  138 + @ResponseBody
  139 + public AjaxResult containerCapacityApi(@RequestBody ContainerCapacity containerCapacity){
  140 + AjaxResult ajaxResult = basicDataApiService.containerCapacity(containerCapacity);
  141 + return ajaxResult;
  142 + }
  143 +
108 144 /**
109 145 * 同步供应商档案
110 146 */
... ... @@ -119,5 +155,17 @@ public class BasicDataApi extends BaseController {
119 155  
120 156  
121 157  
  158 + @Log(title = "库存同步", action = BusinessType.INSERT)
  159 + @PostMapping("/queryInventoryApi")
  160 + @ApiOperation("库存查询公共接口")
  161 + @ResponseBody
  162 + public AjaxResult queryInventoryApi(@RequestBody InventoryDetail inventoryDetail)
  163 + {
  164 + AjaxResult ajaxResult = basicDataApiService.queryInventoryApi(inventoryDetail);
  165 + return ajaxResult;
  166 + }
  167 +
  168 +
  169 +
122 170  
123 171 }
... ...
src/main/java/com/huaheng/api/general/controller/ReceiptApi.java 0 → 100644
  1 +package com.huaheng.api.general.controller;
  2 +
  3 +
  4 +import com.huaheng.api.general.domain.ReceiptDomain;
  5 +import com.huaheng.api.general.service.ReceiptApiService;
  6 +import com.huaheng.framework.aspectj.lang.annotation.Log;
  7 +import com.huaheng.framework.aspectj.lang.constant.BusinessType;
  8 +import com.huaheng.framework.web.domain.AjaxResult;
  9 +import io.swagger.annotations.Api;
  10 +import io.swagger.annotations.ApiOperation;
  11 +import org.springframework.web.bind.annotation.*;
  12 +
  13 +import javax.annotation.Resource;
  14 +
  15 +@RestController
  16 +@RequestMapping("/api/receiptApi")
  17 +@Api(tags = {"receipt"}, description = "入库单接口")
  18 +public class ReceiptApi {
  19 +
  20 + @Resource
  21 + private ReceiptApiService receiptApiService;
  22 +
  23 +
  24 + /**
  25 + * 同步入库单
  26 + */
  27 + @Log(title = "入库单添加", action = BusinessType.INSERT)
  28 + @PostMapping("/receipt")
  29 + @ApiOperation("入库单添加公共接口")
  30 + @ResponseBody
  31 + public AjaxResult Receipt(@RequestBody ReceiptDomain receiptDomain)
  32 + {
  33 + AjaxResult ajaxResult = receiptApiService.receipt(receiptDomain);
  34 + return ajaxResult;
  35 + }
  36 +
  37 +}
... ...
src/main/java/com/huaheng/api/general/controller/ShipmentApi.java 0 → 100644
  1 +package com.huaheng.api.general.controller;
  2 +
  3 +
  4 +import com.huaheng.api.general.domain.ShipmentDomain;
  5 +import com.huaheng.api.general.service.ShipmentApiService;
  6 +import com.huaheng.framework.aspectj.lang.annotation.Log;
  7 +import com.huaheng.framework.aspectj.lang.constant.BusinessType;
  8 +import com.huaheng.framework.web.domain.AjaxResult;
  9 +import io.swagger.annotations.Api;
  10 +import io.swagger.annotations.ApiOperation;
  11 +import org.springframework.web.bind.annotation.*;
  12 +
  13 +import javax.annotation.Resource;
  14 +
  15 +@RestController
  16 +@RequestMapping("/api/shipmentApi")
  17 +@Api(tags = {"shipment"}, description = "出库单接口")
  18 +public class ShipmentApi {
  19 +
  20 + @Resource
  21 + private ShipmentApiService shipmentApiService;
  22 +
  23 + /**
  24 + * 同步出库单
  25 + */
  26 + @Log(title = "出库单添加", action = BusinessType.INSERT)
  27 + @PostMapping("/shipment")
  28 + @ApiOperation("出库单添加公共接口")
  29 + @ResponseBody
  30 + public AjaxResult Shipment(@RequestBody ShipmentDomain shipmentDomain)
  31 + {
  32 + AjaxResult ajaxResult = shipmentApiService.shipment(shipmentDomain);
  33 + return ajaxResult;
  34 + }
  35 +}
... ...
src/main/java/com/huaheng/api/general/domain/InventoryDomain.java 0 → 100644
  1 +package com.huaheng.api.general.domain;
  2 +
  3 +import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
  4 +import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader;
  5 +import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
  6 +import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
  7 +import lombok.Data;
  8 +
  9 +import java.util.List;
  10 +import java.util.Map;
  11 +
  12 +@Data
  13 +public class InventoryDomain {
  14 + private Map<Integer,InventoryHeader> inventoryHeader;
  15 +
  16 + private List<InventoryDetail> inventoryDetails;
  17 +}
... ...
src/main/java/com/huaheng/api/general/domain/ReceiptDomain.java 0 → 100644
  1 +package com.huaheng.api.general.domain;
  2 +
  3 +import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;
  4 +import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService;
  5 +import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
  6 +import lombok.Data;
  7 +
  8 +import java.util.List;
  9 +
  10 +@Data
  11 +public class ReceiptDomain {
  12 +
  13 + //入库主单
  14 + private ReceiptHeader receiptHeader;
  15 +
  16 + //入库子单列
  17 + private List<ReceiptDetail> receiptDetails;
  18 +}
... ...
src/main/java/com/huaheng/api/general/domain/ShipmentDomain.java 0 → 100644
  1 +package com.huaheng.api.general.domain;
  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.util.List;
  8 +
  9 +@Data
  10 +public class ShipmentDomain {
  11 + private ShipmentHeader shipmentHeader;
  12 +
  13 + private List<ShipmentDetail> shipmentDetails;
  14 +}
... ...
src/main/java/com/huaheng/api/general/service/BasicDataApiService.java
... ... @@ -2,11 +2,16 @@ package com.huaheng.api.general.service;
2 2  
3 3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 4 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  5 +import com.huaheng.api.general.domain.InventoryDomain;
5 6 import com.huaheng.common.exception.service.ServiceException;
6 7 import com.huaheng.common.utils.StringUtils;
7 8 import com.huaheng.framework.web.domain.AjaxResult;
8 9 import com.huaheng.pc.config.company.domain.Company;
9 10 import com.huaheng.pc.config.company.service.CompanyService;
  11 +import com.huaheng.pc.config.containerCapacity.domain.ContainerCapacity;
  12 +import com.huaheng.pc.config.containerCapacity.service.ContainerCapacityService;
  13 +import com.huaheng.pc.config.containerType.domain.ContainerType;
  14 +import com.huaheng.pc.config.containerType.service.ContainerTypeService;
10 15 import com.huaheng.pc.config.customer.domain.Customer;
11 16 import com.huaheng.pc.config.customer.service.CustomerServiceImpl;
12 17 import com.huaheng.pc.config.material.domain.Material;
... ... @@ -15,6 +20,10 @@ import com.huaheng.pc.config.supplier.domain.Supplier;
15 20 import com.huaheng.pc.config.supplier.service.SupplierService;
16 21 import com.huaheng.pc.config.warehouse.domain.Warehouse;
17 22 import com.huaheng.pc.config.warehouse.service.WarehouseService;
  23 +import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
  24 +import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
  25 +import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader;
  26 +import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService;
18 27 import com.huaheng.pc.system.dept.domain.Dept;
19 28 import com.huaheng.pc.system.dept.service.IDeptService;
20 29 import com.huaheng.pc.system.dict.domain.DictData;
... ... @@ -30,8 +39,11 @@ import org.springframework.stereotype.Component;
30 39 import org.springframework.transaction.annotation.Transactional;
31 40  
32 41 import javax.annotation.Resource;
  42 +import java.math.BigDecimal;
33 43 import java.util.ArrayList;
  44 +import java.util.HashMap;
34 45 import java.util.List;
  46 +import java.util.Map;
35 47  
36 48 @Component
37 49 @Transactional
... ... @@ -42,7 +54,12 @@ public class BasicDataApiService {
42 54 IDictDataService dictDataService;
43 55 @Autowired
44 56 MaterialService materialService;
45   -
  57 + @Autowired
  58 + ContainerTypeService containerTypeService;
  59 + @Autowired
  60 + InventoryDetailService inventoryDetailService;
  61 + @Autowired
  62 + InventoryHeaderService inventoryHeaderService;
46 63 @Resource
47 64 private DictTypeMapper dictTypeMapper;
48 65 @Resource
... ... @@ -66,6 +83,9 @@ public class BasicDataApiService {
66 83 @Autowired
67 84 CompanyService companyService;
68 85  
  86 + @Autowired
  87 + private ContainerCapacityService containerCapacityService;
  88 +
69 89 //检查仓库
70 90 public Warehouse checkWarehouse(String code) {
71 91 LambdaQueryWrapper<Warehouse> warehouseLam = Wrappers.lambdaQuery();
... ... @@ -221,6 +241,25 @@ public class BasicDataApiService {
221 241 return AjaxResult.success("新增物料成功");
222 242 }
223 243  
  244 + /**
  245 + 1,物料同步
  246 + 2,条件查询
  247 + * @param material
  248 + * @return
  249 + */
  250 + @Transactional
  251 + public AjaxResult queryMaterial(Material material) {
  252 + if (StringUtils.isEmpty(material.getWarehouseCode())){
  253 + return AjaxResult.error("仓库编码不能为空!!");
  254 + }
  255 + if (StringUtils.isEmpty(material.getCompanyCode())){
  256 + return AjaxResult.error("货主编码不能为空!!");
  257 + }
  258 + LambdaQueryWrapper<Material> lambdaQueryWrapper =Wrappers.lambdaQuery(material);
  259 + materialService.list(lambdaQueryWrapper);
  260 + return AjaxResult.success(materialService.list(lambdaQueryWrapper));
  261 + }
  262 +
224 263  
225 264  
226 265 /**
... ... @@ -292,6 +331,20 @@ public class BasicDataApiService {
292 331  
293 332  
294 333 /**
  334 + 1,用户同步
  335 + 2,条件查询
  336 + * @param user
  337 + * @return
  338 + */
  339 + @Transactional
  340 + public AjaxResult queryUser(User user) {
  341 + iUserService.selectUserList(user);
  342 + return AjaxResult.success(iUserService.selectUserList(user));
  343 + }
  344 +
  345 +
  346 +
  347 + /**
295 348 * 部门档案通用接口
296 349 * 1、判断必填字段是否为空
297 350 * 2、部门编码长度应是双数
... ... @@ -507,4 +560,114 @@ public class BasicDataApiService {
507 560 throw new ServiceException("供应商数据问题。。。");
508 561 }
509 562 }
  563 +
  564 +
  565 + /**
  566 + * 容器容量通用接口
  567 + * 1、判断必填字段是否为空
  568 + * 2、检查仓库、物料和容器类型
  569 + * 3、检查此容器容量是否存在,不存在则添加
  570 + * @param containerCapacity
  571 + * @return
  572 + */
  573 + public AjaxResult containerCapacity(ContainerCapacity containerCapacity){
  574 + Boolean flag = false;
  575 + //1、判断必填字段是否为空
  576 + if(StringUtils.isEmpty(containerCapacity.getContainerType())){
  577 + return AjaxResult.error("没有容器类型");
  578 + }
  579 + if(StringUtils.isEmpty(containerCapacity.getWarehouseCode())){
  580 + return AjaxResult.error("没有仓库编号");
  581 + }
  582 + if(StringUtils.isEmpty(containerCapacity.getMaterialCode())){
  583 + return AjaxResult.error("没有物料编号");
  584 + }
  585 + if(StringUtils.isNull(containerCapacity.getQty())){
  586 + return AjaxResult.error("没有容量上限");
  587 + }
  588 +
  589 + // 2、检查仓库、物料和容器类型
  590 + this.checkWarehouse(containerCapacity.getWarehouseCode());
  591 +
  592 + //物料检查
  593 + LambdaQueryWrapper<Material> materialLam = Wrappers.lambdaQuery();
  594 + materialLam.eq(Material::getCode,containerCapacity.getMaterialCode())
  595 + .eq(Material::getWarehouseCode,containerCapacity.getWarehouseCode());
  596 + Material material = materialService.getOne(materialLam);
  597 + if(material == null){
  598 + return AjaxResult.error("系统没有此物料编号");
  599 + }
  600 +
  601 + //容器类型检查
  602 + LambdaQueryWrapper<ContainerType> containerTypeLamb = Wrappers.lambdaQuery();
  603 + containerTypeLamb.eq(ContainerType::getCode,containerCapacity.getContainerType())
  604 + .eq(ContainerType::getWarehouseCode,containerCapacity.getWarehouseCode());
  605 + ContainerType containerType = containerTypeService.getOne(containerTypeLamb);
  606 + if(containerType == null){
  607 + return AjaxResult.error("系统没有此容器类型");
  608 + }
  609 +
  610 + //3、检查此容器容量是否存在,不存在则添加
  611 + LambdaQueryWrapper<ContainerCapacity> containerCapacityLambd = Wrappers.lambdaQuery();
  612 + containerCapacityLambd.eq(ContainerCapacity::getContainerType,containerCapacity.getContainerType())
  613 + .eq(ContainerCapacity::getWarehouseCode,containerCapacity.getWarehouseCode())
  614 + .eq(ContainerCapacity::getMaterialCode,containerCapacity.getMaterialCode());
  615 + ContainerCapacity capacity = containerCapacityService.getOne(containerCapacityLambd);
  616 + if(capacity == null){
  617 + flag = containerCapacityService.save(containerCapacity);
  618 + if(flag == false){
  619 + return AjaxResult.error("新增容器容量失败");
  620 + }
  621 + }else {
  622 + if(capacity.getQty().compareTo(containerCapacity.getQty()) != 0){
  623 + capacity.setQty(containerCapacity.getQty());
  624 + flag = containerCapacityService.updateById(capacity);
  625 + if(flag == false){
  626 + return AjaxResult.error("修改容器容量失败");
  627 + }
  628 + }
  629 + }
  630 + return AjaxResult.success("新增容器容量成功");
  631 + }
  632 +
  633 +
  634 +
  635 + /**
  636 + 1,库存同步
  637 + 2,条件查询
  638 + * @param inventoryDetail
  639 + * @return
  640 + */
  641 + @Transactional
  642 + public AjaxResult queryInventoryApi(InventoryDetail inventoryDetail) {
  643 + if (StringUtils.isEmpty(inventoryDetail.getWarehouseCode())){
  644 + return AjaxResult.error("仓库编码不能为空!!");
  645 + }
  646 + if (StringUtils.isEmpty(inventoryDetail.getCompanyCode())){
  647 + return AjaxResult.error("货主编码不能为空!!");
  648 + }
  649 + //查询库存明细
  650 + LambdaQueryWrapper<InventoryDetail> lambdaQueryWrapper =Wrappers.lambdaQuery(inventoryDetail);
  651 + List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(lambdaQueryWrapper);
  652 +
  653 + //查询库存Header表
  654 + Map<Integer,InventoryHeader> inventoryHeaderList = new HashMap<>();//map防止出现数据重复
  655 + for (InventoryDetail inventoryDetail1:inventoryDetailList) {
  656 + LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper =Wrappers.lambdaQuery();
  657 + inventoryHeaderLambdaQueryWrapper.eq(InventoryHeader::getId,inventoryDetail1.getInventoryHeaderId());
  658 + inventoryHeaderList.put(inventoryDetail1.getInventoryHeaderId(),inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper));
  659 + }
  660 +
  661 + InventoryDomain inventoryDomain =new InventoryDomain();
  662 + inventoryDomain.setInventoryHeader(inventoryHeaderList);
  663 + inventoryDomain.setInventoryDetails(inventoryDetailList);
  664 + return AjaxResult.success(inventoryDomain);
  665 + }
  666 +
  667 +
  668 +
  669 +
  670 +
  671 +
  672 +
510 673 }
... ...
src/main/java/com/huaheng/api/general/service/ReceiptApiService.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.controller.ReceiptApi;
  6 +import com.huaheng.api.general.domain.ReceiptDomain;
  7 +import com.huaheng.common.exception.service.ServiceException;
  8 +import com.huaheng.common.utils.StringUtils;
  9 +import com.huaheng.framework.web.domain.AjaxResult;
  10 +import com.huaheng.pc.config.FilterConfigDetail.domain.FilterConfigDetail;
  11 +import com.huaheng.pc.config.FilterConfigDetail.service.FilterConfigDetailService;
  12 +import com.huaheng.pc.config.company.domain.Company;
  13 +import com.huaheng.pc.config.company.service.CompanyService;
  14 +import com.huaheng.pc.config.material.domain.Material;
  15 +import com.huaheng.pc.config.material.service.MaterialService;
  16 +import com.huaheng.pc.config.receiptType.domain.ReceiptType;
  17 +import com.huaheng.pc.config.receiptType.service.ReceiptTypeService;
  18 +import com.huaheng.pc.config.statusFlow.domain.StatusFlowHeader;
  19 +import com.huaheng.pc.config.statusFlow.service.StatusFlowHeaderService;
  20 +import com.huaheng.pc.config.supplier.domain.Supplier;
  21 +import com.huaheng.pc.config.supplier.service.SupplierService;
  22 +import com.huaheng.pc.config.warehouse.domain.Warehouse;
  23 +import com.huaheng.pc.config.warehouse.service.WarehouseService;
  24 +import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;
  25 +import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService;
  26 +import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
  27 +import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
  28 +import org.springframework.stereotype.Component;
  29 +import org.springframework.transaction.annotation.Transactional;
  30 +
  31 +import javax.annotation.Resource;
  32 +import java.math.BigDecimal;
  33 +import java.util.ArrayList;
  34 +import java.util.List;
  35 +
  36 +@Component
  37 +@Transactional
  38 +public class ReceiptApiService {
  39 + @Resource
  40 + private ReceiptHeaderService receiptHeaderService;
  41 + @Resource
  42 + private ReceiptDetailService receiptDetailService;
  43 + @Resource
  44 + private ReceiptTypeService receiptTypeService;
  45 + @Resource
  46 + private WarehouseService warehouseService;
  47 + @Resource
  48 + private CompanyService companyService;
  49 + @Resource
  50 + private MaterialService materialService;
  51 + @Resource
  52 + private SupplierService supplierService;
  53 + @Resource
  54 + private FilterConfigDetailService filterConfigDetailService;
  55 + @Resource
  56 + private StatusFlowHeaderService statusFlowHeaderService;
  57 + /**
  58 + * 入库单下发
  59 + * @param receipt 入库单
  60 + * @return 是否下发成功
  61 + */
  62 + @Transactional(rollbackFor = Exception.class)
  63 + public AjaxResult receipt(ReceiptDomain receipt){
  64 +
  65 + /* 0.step 获取入库头表,获取入库明细*/
  66 + ReceiptHeader receiptHeader = receipt.getReceiptHeader();
  67 + List<ReceiptDetail> receiptDetails = receipt.getReceiptDetails();
  68 + /* 1.step 校验入库单是否为空*/
  69 + if (receiptHeader == null || receiptDetails.isEmpty()){
  70 + throw new ServiceException("入库主单或入库子单为空");
  71 + }
  72 + /* 2.step 检查入库头表合法性*/
  73 + AjaxResult checkReceiptHeaderResult = checkReceiptHeader(receiptHeader);
  74 + if (checkReceiptHeaderResult.hasErr() ){
  75 + return AjaxResult.error(checkReceiptHeaderResult.getMsg());
  76 + }
  77 +
  78 + /* 3.step 检查入库明细合法性*/
  79 + AjaxResult checkReceiptDetailResult = checkReceiptDetail(receiptDetails);
  80 + if (checkReceiptDetailResult.hasErr() ){
  81 + return AjaxResult.error(checkReceiptDetailResult.getMsg());
  82 + }
  83 +
  84 + /* 4.step 计算入库明细总行数、总数量*/
  85 + BigDecimal totalQty = new BigDecimal(0);
  86 + for (ReceiptDetail receiptDetail: receiptDetails) {
  87 + totalQty.add(receiptDetail.getTotalQty());
  88 + }
  89 + receiptHeader.setTotalLines(receiptDetails.size());
  90 + receiptHeader.setTotalQty(totalQty);
  91 +
  92 + /* 5.step 保存的入库头表*/
  93 + if (!receiptHeaderService.save(receiptHeader)){
  94 + throw new ServiceException("保存入库头表失败");
  95 + }
  96 +
  97 + /* 6.step 保存入库明细*/
  98 + LambdaQueryWrapper<ReceiptHeader> lambda = Wrappers.lambdaQuery();
  99 + lambda.eq(ReceiptHeader::getWarehouseCode, receiptHeader.getWarehouseCode())
  100 + .eq(ReceiptHeader::getCode, receiptHeader.getCode());
  101 + receiptHeader = receiptHeaderService.getOne(lambda);
  102 + List<ReceiptDetail> jsonListDetail= new ArrayList<ReceiptDetail>();
  103 + for (ReceiptDetail receiptDetail : receiptDetails) {
  104 + receiptDetail.setReceiptId(receiptHeader.getId());
  105 + receiptDetail.setReceiptCode(receiptHeader.getCode());
  106 + receiptDetail.setWarehouseCode(receiptHeader.getWarehouseCode());
  107 + receiptDetail.setCompanyCode(receiptHeader.getWarehouseCode());
  108 + Material material = materialService.findAllByCode(receiptDetail.getMaterialCode());
  109 + receiptDetail.setMaterialName(material.getName());
  110 + receiptDetail.setMaterialSpec(material.getSpec());
  111 + receiptDetail.setMaterialUnit(material.getUnit());
  112 + if (!receiptDetailService.save(receiptDetail)){
  113 + throw new ServiceException("保存入库明细失败");
  114 + }
  115 + jsonListDetail.add(receiptDetail);
  116 +
  117 + }
  118 + /* 6.step回传入库单和入库明细单 */
  119 + ReceiptDomain receiptDomain =new ReceiptDomain();
  120 + receiptDomain.setReceiptHeader(receiptHeader);
  121 + receiptDomain.setReceiptDetails(jsonListDetail);
  122 +
  123 + return AjaxResult.success(receiptDomain);
  124 + }
  125 +
  126 + /**
  127 + * 检查入库头表合法性
  128 + * @param receiptHeader 入库头表
  129 + * @return 检查结果
  130 + */
  131 + private AjaxResult checkReceiptHeader(ReceiptHeader receiptHeader){
  132 + /* 0.step 必填项是否为空*/
  133 + if (StringUtils.isEmpty(receiptHeader.getCode()) || StringUtils.isEmpty(receiptHeader.getCompanyCode()) ||
  134 + StringUtils.isEmpty(receiptHeader.getWarehouseCode()) || StringUtils.isEmpty(receiptHeader.getReceiptType())){
  135 + return AjaxResult.error("入库主单字段有误");
  136 + }
  137 +
  138 + /* 1.step 查询该单据编码是否已存在*/
  139 + LambdaQueryWrapper<ReceiptHeader> receiptHeaderLambda = Wrappers.lambdaQuery(receiptHeader);
  140 + if (receiptHeaderService.getOne(receiptHeaderLambda) != null){
  141 + return AjaxResult.error("该单据已存在:"+receiptHeader.getCode());
  142 + }
  143 +
  144 + /* 2.step 判断入库类型是否匹配*/
  145 + LambdaQueryWrapper<ReceiptType> receiptTypeLambda = Wrappers.lambdaQuery();
  146 + receiptTypeLambda.eq(ReceiptType::getCode, receiptHeader.getReceiptType())
  147 + .eq(ReceiptType::getWarehouseCode,receiptHeader.getWarehouseCode())
  148 + .eq(ReceiptType::getCompanyCode,receiptHeader.getCompanyCode());
  149 + if (receiptTypeService.getOne(receiptTypeLambda) == null){
  150 + return AjaxResult.error("没有对应的入库单类型");
  151 + }
  152 +
  153 + /* 3.step 判断仓库是否存在*/
  154 + LambdaQueryWrapper<Warehouse> warehouseLambda = Wrappers.lambdaQuery();
  155 + warehouseLambda.eq(Warehouse::getCode, receiptHeader.getWarehouseCode());
  156 + if (warehouseService.getOne(warehouseLambda) == null){
  157 + return AjaxResult.error("该仓库不存在");
  158 + }
  159 +
  160 + /* 4.step 判断货主是否存在*/
  161 + LambdaQueryWrapper<Company> companyLambda = Wrappers.lambdaQuery();
  162 + companyLambda.eq(Company::getCode, receiptHeader.getCompanyCode());
  163 + if (companyService.getOne(companyLambda) == null){
  164 + return AjaxResult.error("该货主不存在");
  165 + }
  166 +
  167 + return AjaxResult.success("");
  168 + }
  169 +
  170 + /**
  171 + * 检查入库明细合法性
  172 + * @param receiptDetails 入库明细
  173 + * @return 检查结果
  174 + */
  175 + private AjaxResult checkReceiptDetail(List<ReceiptDetail> receiptDetails){
  176 +
  177 + for (ReceiptDetail receiptDetail: receiptDetails) {
  178 + /* 0.step 判断必填字段是否为空且总数量不能为0*/
  179 + if (receiptDetail.getMaterialCode() == null ||
  180 + new BigDecimal(0).compareTo(receiptDetail.getTotalQty() != null ?
  181 + receiptDetail.getTotalQty() : new BigDecimal(0)) == 0 ){
  182 + return AjaxResult.error("入库明细字段有误");
  183 + }
  184 +
  185 + /* 1.step 判断供应商是否存在*/
  186 + if (receiptDetail.getSupplierCode() != null){
  187 + LambdaQueryWrapper<Supplier> supplierLambda = Wrappers.lambdaQuery();
  188 + supplierLambda.eq(Supplier::getCode, receiptDetail.getSupplierCode());
  189 + if (supplierService.getOne(supplierLambda) == null) {
  190 + return AjaxResult.error("供应商不存在");
  191 + }
  192 + }
  193 +
  194 + /* 2.step 判断定位规则是否存在*/
  195 + if (receiptDetail.getLocatingRule() != null){
  196 + LambdaQueryWrapper<FilterConfigDetail> filterConfigDetailLambda = Wrappers.lambdaQuery();
  197 + filterConfigDetailLambda.eq(FilterConfigDetail::getCode, receiptDetail.getLocatingRule())
  198 + .eq(FilterConfigDetail::getModuleType, "receipt")
  199 + .eq(FilterConfigDetail::getRecordType, "locationRule");
  200 + FilterConfigDetail filterConfigDetail = filterConfigDetailService.getOne(filterConfigDetailLambda);
  201 + if (filterConfigDetail == null){
  202 + return AjaxResult.error(receiptDetail.getLocatingRule()+"定位规则不存在");
  203 + }
  204 + }
  205 +
  206 + /* 3.step 判断流程编码是否存在*/
  207 + if (receiptDetail.getStatusFlowCode() != null){
  208 + LambdaQueryWrapper<StatusFlowHeader> statusFlowHeaderLambda = Wrappers.lambdaQuery();
  209 + statusFlowHeaderLambda.eq(StatusFlowHeader::getCode, receiptDetail.getStatusFlowCode())
  210 + .eq(StatusFlowHeader::getModuleType, "receipt")
  211 + .eq(StatusFlowHeader::getRecordType, "receivingFlow");
  212 + StatusFlowHeader statusFlowHeader = statusFlowHeaderService.getOne(statusFlowHeaderLambda);
  213 + if (statusFlowHeader == null){
  214 + return AjaxResult.error(receiptDetail.getLocatingRule()+"该流程不存在");
  215 + }
  216 + }
  217 + }
  218 +
  219 + return AjaxResult.success("");
  220 + }
  221 +}
... ...
src/main/java/com/huaheng/api/general/service/ShipmentApiService.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.ShipmentDomain;
  6 +import com.huaheng.common.exception.service.ServiceException;
  7 +import com.huaheng.common.utils.StringUtils;
  8 +import com.huaheng.common.utils.security.ShiroUtils;
  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.config.customer.domain.Customer;
  13 +import com.huaheng.pc.config.customer.service.CustomerServiceImpl;
  14 +import com.huaheng.pc.config.material.domain.Material;
  15 +import com.huaheng.pc.config.material.service.MaterialService;
  16 +import com.huaheng.pc.config.shipmentType.domain.ShipmentType;
  17 +import com.huaheng.pc.config.shipmentType.service.ShipmentTypeService;
  18 +import com.huaheng.pc.config.warehouse.domain.Warehouse;
  19 +import com.huaheng.pc.config.warehouse.service.WarehouseService;
  20 +import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
  21 +import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService;
  22 +import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
  23 +import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
  24 +import org.springframework.beans.factory.annotation.Autowired;
  25 +import org.springframework.stereotype.Component;
  26 +import org.springframework.transaction.annotation.Transactional;
  27 +
  28 +import java.math.BigDecimal;
  29 +import java.util.ArrayList;
  30 +import java.util.List;
  31 +
  32 +/**
  33 + * @author ricard
  34 + * @time 19/11/11
  35 + *
  36 + */
  37 +
  38 +
  39 +@Component
  40 +@Transactional
  41 +public class ShipmentApiService {
  42 +
  43 + @Autowired
  44 + private ShipmentHeaderService shipmentHeaderService;
  45 +
  46 + @Autowired
  47 + private ShipmentDetailService shipmentDetailService;
  48 +
  49 + @Autowired
  50 + private WarehouseService warehouseService;
  51 +
  52 + @Autowired
  53 + private CompanyService companyService;
  54 +
  55 + @Autowired
  56 + private CustomerServiceImpl customerService;
  57 +
  58 + @Autowired
  59 + private ShipmentTypeService shipmentTypeService;
  60 +
  61 + @Autowired
  62 + private MaterialService materialService;
  63 +
  64 + /**
  65 + * 出库单下发
  66 + *
  67 + * @param shipmentDomain
  68 + * @return
  69 + */
  70 + @Transactional
  71 + public AjaxResult shipment(ShipmentDomain shipmentDomain){
  72 +
  73 + //1、判断出库主单和子单列是否为空
  74 + ShipmentHeader shipmentHeader = shipmentDomain.getShipmentHeader();
  75 + List<ShipmentDetail> shipmentDetails = shipmentDomain.getShipmentDetails();
  76 + if(shipmentHeader == null){
  77 + return AjaxResult.error("出库主单为空");
  78 + }
  79 + if(shipmentDetails.size() < 1 || shipmentDetails == null ){
  80 + return AjaxResult.error("出库子单为空");
  81 + }
  82 +
  83 + //2、检查出库主单的合法性
  84 + AjaxResult ajaxResult = this.checkShipmentHeader(shipmentHeader);
  85 +
  86 + //3、检查出库子单的合法性
  87 + shipmentDetails =this.checkShipmentDetail(shipmentDetails,shipmentHeader);
  88 +
  89 + //4、保存出库主表
  90 + BigDecimal totalQty = new BigDecimal(0);
  91 + for (ShipmentDetail item: shipmentDetails) {
  92 + totalQty.add(item.getShipQty());
  93 + }
  94 + shipmentHeader.setTotalLines(shipmentDetails.size());
  95 + shipmentHeader.setTotalQty(totalQty);
  96 + shipmentHeader.setCode(shipmentHeaderService.createCode(shipmentHeader.getShipmentType()));
  97 +
  98 + if(!shipmentHeaderService.save(shipmentHeader)){
  99 + throw new ServiceException("保存出库主表失败");
  100 + }
  101 +
  102 + //5、保存出库子表
  103 + List<ShipmentDetail> shipmentDetailList = new ArrayList<>();
  104 + for(ShipmentDetail shipmentDetail : shipmentDetails){
  105 + shipmentDetail.setShipmentId(shipmentHeader.getId());
  106 + shipmentDetail.setShipmentCode(shipmentHeader.getCode());
  107 + shipmentDetail.setWarehouseCode(shipmentHeader.getWarehouseCode());
  108 + shipmentDetail.setCompanyCode(shipmentHeader.getCompanyCode());
  109 + }
  110 +
  111 + int num = 0;
  112 + if(shipmentDetails.size() >500 ){
  113 + for(ShipmentDetail item : shipmentDetails){
  114 + num++;
  115 + shipmentDetailList.add(item);
  116 + if(num % 500 ==0 || num == shipmentDetails.size()){
  117 + if(!shipmentDetailService.insertDetails(shipmentDetailList)){
  118 + throw new ServiceException("保存出库子表失败");
  119 + }
  120 + shipmentDetailList=new ArrayList<>();
  121 + }
  122 + }
  123 + }else {
  124 + if(!shipmentDetailService.insertDetails(shipmentDetails)){
  125 + throw new ServiceException("保存出库子表失败");
  126 + }
  127 + }
  128 +
  129 + //6回传添加对象
  130 + LambdaQueryWrapper<ShipmentDetail> lambdaQueryWrapper =Wrappers.lambdaQuery();
  131 + lambdaQueryWrapper.eq(ShipmentDetail::getShipmentId ,shipmentHeader.getId());
  132 +
  133 + ShipmentDomain jsonShipmentDomain =new ShipmentDomain();
  134 + jsonShipmentDomain.setShipmentHeader(shipmentHeader);
  135 + jsonShipmentDomain.setShipmentDetails(shipmentDetailService.list(lambdaQueryWrapper));
  136 +
  137 + return AjaxResult.success(jsonShipmentDomain);
  138 + }
  139 +
  140 +
  141 + /**
  142 + * 检查出库主单的合法性
  143 + * @param shipmentHeader
  144 + * @return
  145 + */
  146 + public AjaxResult checkShipmentHeader(ShipmentHeader shipmentHeader){
  147 + //1、判断仓库和货主
  148 + if(StringUtils.isEmpty(shipmentHeader.getWarehouseCode())){
  149 + return AjaxResult.error("仓库为空");
  150 + }
  151 + if(StringUtils.isEmpty(shipmentHeader.getCompanyCode())){
  152 + return AjaxResult.error("货主为空");
  153 + }
  154 +
  155 +
  156 + LambdaQueryWrapper<Warehouse> warehouseLamb = Wrappers.lambdaQuery();
  157 + warehouseLamb.eq(Warehouse::getCode,shipmentHeader.getWarehouseCode());
  158 + Warehouse warehouse =warehouseService.getOne(warehouseLamb);
  159 + if(warehouse == null){
  160 + return AjaxResult.error("wms没有此仓库");
  161 + }
  162 +
  163 + LambdaQueryWrapper<Company> companyLamb = Wrappers.lambdaQuery();
  164 + companyLamb.eq(Company::getCode,shipmentHeader.getCompanyCode());
  165 + Company company =companyService.getOne(companyLamb);
  166 + if(company == null){
  167 + return AjaxResult.error("wms没有此货主");
  168 + }
  169 +
  170 + //2、判断出库类型
  171 + LambdaQueryWrapper<ShipmentType> shipmentTypeLamb = Wrappers.lambdaQuery();
  172 + shipmentTypeLamb.eq(ShipmentType::getCode,shipmentHeader.getShipmentType())
  173 + .eq(ShipmentType::getWarehouseCode,shipmentHeader.getWarehouseCode());
  174 + ShipmentType shipmentType =shipmentTypeService.getOne(shipmentTypeLamb);
  175 + if(shipmentType == null){
  176 + return AjaxResult.error("wms没有此出库类型");
  177 + }
  178 +
  179 + //3、检查上游单号是否存在
  180 + LambdaQueryWrapper<ShipmentHeader> shipmentHeaderLamb = Wrappers.lambdaQuery();
  181 + shipmentHeaderLamb.eq(ShipmentHeader::getWarehouseCode,shipmentHeader.getWarehouseCode())
  182 + .eq(ShipmentHeader::getReferCode,shipmentHeader.getReferCode());
  183 + List<ShipmentHeader> shipmentHeaders = shipmentHeaderService.list(shipmentHeaderLamb);
  184 + if(shipmentHeaders.size() > 0 || shipmentHeaders != null){
  185 + return AjaxResult.success("出库单已经下发");
  186 + }
  187 +
  188 + //4、检查客户
  189 + if(StringUtils.isNotEmpty(shipmentHeader.getCustomerCode())){
  190 + LambdaQueryWrapper<Customer> customerLamb = Wrappers.lambdaQuery();
  191 + customerLamb.eq(Customer::getWarehouseCode,shipmentHeader.getWarehouseCode())
  192 + .eq(Customer::getCode,shipmentHeader.getCustomerCode());
  193 + Customer customer = customerService.getOne(customerLamb);
  194 + if(customer == null){
  195 + return AjaxResult.error("wms没有此客户");
  196 + }
  197 + }
  198 + return AjaxResult.success(shipmentHeader);
  199 + }
  200 +
  201 +
  202 + /**
  203 + * 检查出库子单的合法性
  204 + * @param shipmentDetails
  205 + * @return
  206 + */
  207 + public List<ShipmentDetail> checkShipmentDetail(List<ShipmentDetail> shipmentDetails,ShipmentHeader shipmentHeader){
  208 +
  209 + for(ShipmentDetail shipmentDetail : shipmentDetails) {
  210 + //1、检查物料
  211 + if(StringUtils.isEmpty(shipmentDetail.getMaterialCode())){
  212 + throw new ServiceException("物料为空");
  213 + }
  214 + LambdaQueryWrapper<Material> materialLamb = Wrappers.lambdaQuery();
  215 + materialLamb.eq(Material::getCode,shipmentDetail.getMaterialCode())
  216 + .eq(Material::getWarehouseCode,shipmentHeader.getWarehouseCode());
  217 + Material material = materialService.getOne(materialLamb);
  218 + if(material == null){
  219 + throw new ServiceException("wms没有此物料");
  220 + }
  221 +
  222 + //2、赋值物料属性
  223 + shipmentDetail.setMaterialName(material.getName());
  224 + shipmentDetail.setMaterialSpec(material.getSpec());
  225 + shipmentDetail.setMaterialUnit(material.getUnit());
  226 + }
  227 + return shipmentDetails;
  228 + }
  229 +}
... ...
src/main/java/com/huaheng/api/wcs/controller/EmptyOutHandle.java
1 1 package com.huaheng.api.wcs.controller;
2 2  
3   -import com.huaheng.api.wcs.domain.WcsTask;
4 3 import com.huaheng.api.wcs.service.emptyOutHandle.EmptyOutHandleService;
5   -import com.huaheng.api.wcs.service.overrideHandle.OverrideHandleService;
6 4 import com.huaheng.framework.aspectj.lang.annotation.Log;
7 5 import com.huaheng.framework.aspectj.lang.constant.BusinessType;
8 6 import com.huaheng.framework.web.controller.BaseController;
9 7 import com.huaheng.framework.web.domain.AjaxResult;
10   -import io.swagger.annotations.Api;
11 8 import io.swagger.annotations.ApiOperation;
12   -import org.springframework.web.bind.annotation.*;
  9 +import org.springframework.web.bind.annotation.PostMapping;
  10 +import org.springframework.web.bind.annotation.RequestMapping;
  11 +import org.springframework.web.bind.annotation.ResponseBody;
  12 +import org.springframework.web.bind.annotation.RestController;
13 13  
14 14 import javax.annotation.Resource;
15 15  
... ... @@ -21,7 +21,7 @@ import javax.annotation.Resource;
21 21 */
22 22  
23 23 @RestController
24   -@RequestMapping("/api/WCS/v2")
  24 +@RequestMapping("/API/WMS/v2")
25 25 public class EmptyOutHandle extends BaseController {
26 26  
27 27 @Resource
... ... @@ -31,9 +31,9 @@ public class EmptyOutHandle extends BaseController {
31 31 @PostMapping("/EmptyOutHandle")
32 32 @ApiOperation("wcs空出处理")
33 33 @ResponseBody
34   - public AjaxResult EmptyOutHandle(@RequestBody WcsTask wcsTask)
  34 + public AjaxResult EmptyOutHandle(String taskNo)
35 35 {
36   - AjaxResult ajaxResult =emptyOutHandleService.EmptyOutHandle(wcsTask) ;
  36 + AjaxResult ajaxResult =emptyOutHandleService.EmptyOutHandle(taskNo) ;
37 37 return ajaxResult;
38 38 }
39 39  
... ...
src/main/java/com/huaheng/api/wcs/controller/OverrideHandle.java
... ... @@ -20,20 +20,18 @@ import javax.annotation.Resource;
20 20 */
21 21  
22 22 @RestController
23   -@RequestMapping("/api/WCS/v2")
  23 +@RequestMapping("/API/WMS/v2")
24 24 public class OverrideHandle extends BaseController {
25 25  
26 26 @Resource
27 27 private OverrideHandleService overrideHandleService;
28 28  
29 29 @Log(title = "wcs重入处理", action = BusinessType.INSERT)
30   - @PostMapping("/OverrideHandle")
  30 + @PostMapping("/ReenterHandle")
31 31 @ApiOperation("wcs重入处理")
32 32 @ResponseBody
33   - public AjaxResult OverrideHandle(@RequestBody TaskFinishDomain taskFinishDomain)
34   - {
35   - AjaxResult ajaxResult =overrideHandleService.OverrideHandle(taskFinishDomain) ;
36   - return ajaxResult;
  33 + public AjaxResult ReenterHandle(@RequestBody TaskFinishDomain taskFinishDomain) {
  34 + return overrideHandleService.OverrideHandle(taskFinishDomain);
37 35 }
38 36  
39 37  
... ...
src/main/java/com/huaheng/api/wcs/controller/TaskFinish.java
... ... @@ -21,7 +21,7 @@ import javax.annotation.Resource;
21 21 */
22 22  
23 23 @RestController
24   -@RequestMapping("/api/WCS/v2")
  24 +@RequestMapping("/API/WCS/v2")
25 25 public class TaskFinish extends BaseController {
26 26  
27 27 @Resource
... ...
src/main/java/com/huaheng/api/wcs/controller/TaskInfoController.java 0 → 100644
  1 +package com.huaheng.api.wcs.controller;
  2 +
  3 +import com.huaheng.api.wcs.service.taskCancel.TaskCancelService;
  4 +import com.huaheng.framework.web.controller.BaseController;
  5 +import com.huaheng.framework.web.domain.AjaxResult;
  6 +import org.springframework.web.bind.annotation.GetMapping;
  7 +import org.springframework.web.bind.annotation.RequestMapping;
  8 +import org.springframework.web.bind.annotation.RestController;
  9 +
  10 +import javax.annotation.Resource;
  11 +
  12 +/**
  13 + * Created by Enzo Cotter on 2019/12/6.
  14 + */
  15 +@RestController
  16 +@RequestMapping("/API/taskInfo")
  17 +public class TaskInfoController extends BaseController {
  18 +
  19 + @Resource
  20 + private TaskCancelService taskCancelService;
  21 +
  22 +
  23 + @GetMapping
  24 + public AjaxResult info(Integer id) {
  25 + return taskCancelService.TaskCance(id);
  26 + }
  27 +}
... ...
src/main/java/com/huaheng/api/wcs/controller/WarecellAllocation.java
... ... @@ -21,7 +21,7 @@ import javax.annotation.Resource;
21 21 */
22 22  
23 23 @RestController
24   -@RequestMapping("/api/WCS/v2")
  24 +@RequestMapping("/API/WMS/v2")
25 25 public class WarecellAllocation extends BaseController {
26 26  
27 27 @Resource
... ... @@ -31,10 +31,30 @@ public class WarecellAllocation extends BaseController {
31 31 @PostMapping("/WarecellAllocation")
32 32 @ApiOperation(value="wcs仓位分配", notes="wcs仓位分配", httpMethod = "POST")
33 33 @ResponseBody
34   - public AjaxResult WarecellAllocation(@RequestBody WcsTask wcsTask)
35   - {
36   - AjaxResult ajaxResult =warecellAllocationService.WarecellAllocation(wcsTask) ;
37   - return ajaxResult;
  34 + public AjaxResult WarecellAllocation(String taskNo, String length, String width, String height, String weight, String destination) {
  35 + WcsTask wcsTask = new WcsTask();
  36 + wcsTask.setTaskNo(taskNo);
  37 + wcsTask.setLength(length);
  38 + wcsTask.setWidth(width);
  39 + wcsTask.setHeight(height);
  40 + wcsTask.setWeight(weight);
  41 + wcsTask.setDestination(destination);
  42 + return warecellAllocationService.warecellAllocation(wcsTask);
  43 + }
  44 +
  45 +
  46 + @Log(title = "wcs去向分配", action = BusinessType.INSERT)
  47 + @PostMapping("/DestinationAllocation")
  48 + @ApiOperation(value="wcs去向分配", notes="wcs去向分配", httpMethod = "POST")
  49 + @ResponseBody
  50 + public AjaxResult DestinationAllocation(String taskNo, String length, String width, String height, String weight) {
  51 + WcsTask wcsTask = new WcsTask();
  52 + wcsTask.setTaskNo(taskNo);
  53 + wcsTask.setLength(length);
  54 + wcsTask.setWidth(width);
  55 + wcsTask.setHeight(height);
  56 + wcsTask.setWeight(weight);
  57 + return warecellAllocationService.destinationAllocation(wcsTask);
38 58 }
39 59  
40 60  
... ...
src/main/java/com/huaheng/api/wcs/domain/TaskFinishDomain.java
... ... @@ -18,9 +18,10 @@ public class TaskFinishDomain {
18 18 //空出,int,1:空出 0:正常,必填
19 19 private Integer isEmptyOut;
20 20  
  21 + //取货错,int,1:取货错 0:正常 必填
  22 + private Integer isForkError;
  23 +
21 24 //重入的库位编码,string (50),默认0,必填
22 25 private String redirectionLocationCode;
23 26  
24   - //目的位置编码,string (50),默认0 ",必填
25   - private String toLocationCode;
26 27 }
... ...
src/main/java/com/huaheng/api/wcs/domain/WcsTask.java
... ... @@ -30,6 +30,8 @@ public class WcsTask implements Serializable {
30 30 //平台
31 31 private String platform;
32 32  
  33 + private String warehouseCode;
  34 +
33 35 //容器编码
34 36 private String containerCode;
35 37  
... ... @@ -51,8 +53,8 @@ public class WcsTask implements Serializable {
51 53 //优先级,int,默认100 ,数字越小优先级越高",必填
52 54 private Integer priority;
53 55  
54   - //巷道
55   - private String roadWay;
  56 + //目标
  57 + private String destination;
56 58  
57 59 //长
58 60 private String length;
... ...
src/main/java/com/huaheng/api/wcs/service/emptyOutHandle/EmptyOutHandleService.java
... ... @@ -5,5 +5,5 @@ import com.huaheng.framework.web.domain.AjaxResult;
5 5  
6 6 public interface EmptyOutHandleService {
7 7 //空出处理
8   - AjaxResult EmptyOutHandle(WcsTask wcsTask);
  8 + AjaxResult EmptyOutHandle(String taskNo);
9 9 }
... ...
src/main/java/com/huaheng/api/wcs/service/emptyOutHandle/EmptyOutHandleServiceImpl.java
... ... @@ -21,20 +21,20 @@ public class EmptyOutHandleServiceImpl implements EmptyOutHandleService {
21 21 * 1、判断非空字段
22 22 * 2、根据任务号查找任务
23 23 * 3、修改该任务为空出,过后处理
24   - * @param wcsTask
  24 + * @param taskNo
25 25 * @return
26 26 */
27 27 @Override
28 28 @Transactional
29   - public AjaxResult EmptyOutHandle(WcsTask wcsTask) {
  29 + public AjaxResult EmptyOutHandle(String taskNo) {
30 30  
31 31 //1、判断非空字段
32   - if(StringUtils.isEmpty(wcsTask.getTaskNo())){
  32 + if(StringUtils.isEmpty(taskNo)){
33 33 return AjaxResult.error("任务号为空");
34 34 }
35 35  
36 36 //2、根据任务号查找任务
37   - TaskHeader taskHeader = taskHeaderService.getById(Integer.valueOf(wcsTask.getTaskNo()));
  37 + TaskHeader taskHeader = taskHeaderService.getById(Integer.valueOf(taskNo));
38 38 if(taskHeader == null){
39 39 return AjaxResult.error("任务号错误,没有找到该任务");
40 40 }
... ...
src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java
... ... @@ -3,7 +3,6 @@ package com.huaheng.api.wcs.service.overrideHandle;
3 3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 4 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
5 5 import com.huaheng.api.wcs.domain.TaskFinishDomain;
6   -import com.huaheng.api.wcs.domain.WcsTask;
7 6 import com.huaheng.api.wcs.service.warecellAllocation.WarecellAllocationService;
8 7 import com.huaheng.common.exception.service.ServiceException;
9 8 import com.huaheng.common.utils.StringUtils;
... ... @@ -64,9 +63,6 @@ public class OverrideHandleServiceImpl implements OverrideHandleService {
64 63 if(StringUtils.isEmpty(taskFinishDomain.getTaskNo())){
65 64 return AjaxResult.error("任务号为空");
66 65 }
67   - if(StringUtils.isEmpty(taskFinishDomain.getToLocationCode())){
68   - return AjaxResult.error("目的库位为空");
69   - }
70 66 if(StringUtils.isEmpty(taskFinishDomain.getRedirectionLocationCode())){
71 67 return AjaxResult.error("重入的库位编码为空");
72 68 }
... ...
src/main/java/com/huaheng/api/wcs/service/pickupErrorHandle/PickupErrorHandleService.java 0 → 100644
  1 +package com.huaheng.api.wcs.service.pickupErrorHandle;
  2 +
  3 +import com.huaheng.framework.web.domain.AjaxResult;
  4 +
  5 +public interface PickupErrorHandleService {
  6 +
  7 + //取货错处理
  8 + AjaxResult PickupErrorHandle(String taskNo);
  9 +}
... ...
src/main/java/com/huaheng/api/wcs/service/pickupErrorHandle/PickupErrorHandleServiceImpl.java 0 → 100644
  1 +package com.huaheng.api.wcs.service.pickupErrorHandle;
  2 +
  3 +import com.huaheng.common.utils.StringUtils;
  4 +import com.huaheng.framework.web.domain.AjaxResult;
  5 +import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
  6 +import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
  7 +import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.stereotype.Service;
  9 +import org.springframework.transaction.annotation.Transactional;
  10 +
  11 +@Service
  12 +public class PickupErrorHandleServiceImpl implements PickupErrorHandleService {
  13 +
  14 +
  15 + @Autowired
  16 + private TaskHeaderService taskHeaderService;
  17 +
  18 +
  19 + /**
  20 + * 取货错处理
  21 + * 1、判断非空字段
  22 + * 2、根据任务号查找任务
  23 + * 3、修改该任务为取货错,过后处理
  24 + * @param taskNo
  25 + * @return
  26 + */
  27 + @Override
  28 + @Transactional
  29 + public AjaxResult PickupErrorHandle(String taskNo) {
  30 + //1、判断非空字段
  31 + if(StringUtils.isEmpty(taskNo)){
  32 + return AjaxResult.error("任务号为空");
  33 + }
  34 +
  35 + //2、根据任务号查找任务
  36 + TaskHeader taskHeader = taskHeaderService.getById(Integer.valueOf(taskNo));
  37 + if(taskHeader == null){
  38 + return AjaxResult.error("任务号错误,没有找到该任务");
  39 + }
  40 + if(taskHeader.getStatus() == 100){
  41 + return AjaxResult.error("任务已完成");
  42 + }
  43 +
  44 + //3、修改该任务为取货错,过后处理
  45 + taskHeader.setExceptionCode("取货错误");
  46 + Boolean flag = taskHeaderService.updateById(taskHeader);
  47 + if(flag == false){
  48 + return AjaxResult.error("修改任务失败,取货错处理失败");
  49 + }
  50 + return AjaxResult.success("取货错处理成功");
  51 + }
  52 +}
... ...
src/main/java/com/huaheng/api/wcs/service/stationInfo/StationInfoServiceImpl.java
... ... @@ -11,6 +11,11 @@ import com.huaheng.pc.config.address.service.AddressService;
11 11 import org.springframework.beans.factory.annotation.Autowired;
12 12 import org.springframework.stereotype.Service;
13 13  
  14 +import java.util.ArrayList;
  15 +import java.util.HashMap;
  16 +import java.util.List;
  17 +import java.util.Map;
  18 +
14 19 @Service
15 20 public class StationInfoServiceImpl implements StationInfoService {
16 21  
... ... @@ -34,13 +39,15 @@ public class StationInfoServiceImpl implements StationInfoService {
34 39 }
35 40  
36 41 //2、实体转换
37   - WcsTask wcsTask =new WcsTask();
38   - wcsTask.setStation(station);
  42 + Map<String , List> map =new HashMap<>();
  43 + List list = new ArrayList();
  44 + list.add(station);
  45 + map.put("port",list);
39 46  
40 47 //3、发送数据
41 48 String param="wcs";
42 49 String url=addressService.selectAddress(param)+"StationInfo";
43   - String JsonParam = JSON.toJSONString(wcsTask);
  50 + String JsonParam = JSON.toJSONString(map);
44 51 String result = HttpUtils.bodypost(url, JsonParam);
45 52 if(StringUtils.isEmpty(result)){
46 53 throw new ServiceException("接口地址错误");
... ...
src/main/java/com/huaheng/api/wcs/service/taskAssignService/TaskAssignServiceImpl.java
... ... @@ -9,6 +9,7 @@ import com.huaheng.api.wcs.domain.WcsTask;
9 9 import com.huaheng.common.exception.service.ServiceException;
10 10 import com.huaheng.common.utils.StringUtils;
11 11 import com.huaheng.common.utils.http.HttpUtils;
  12 +import com.huaheng.common.utils.security.ShiroUtils;
12 13 import com.huaheng.framework.web.domain.AjaxResult;
13 14 import com.huaheng.pc.config.address.service.AddressService;
14 15 import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
... ... @@ -89,7 +90,9 @@ public class TaskAssignServiceImpl implements TaskAssignService {
89 90  
90 91 //3、转换实体,初始化wcs任务实体
91 92 WcsTask wcsTask = new WcsTask();
  93 +// wcsTask.setWarehouseCode(ShiroUtils.getWarehouseCode());
92 94 wcsTask.setTaskNo(taskHeader.getId().toString());
  95 + wcsTask.setWarehouseCode("XT0001");
93 96 wcsTask.setPreTaskNo("0");
94 97 wcsTask.setTaskType(taskHeader.getTaskType().toString());
95 98 wcsTask.setFromPort("1000");
... ...
src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelService.java
1 1 package com.huaheng.api.wcs.service.taskCancel;
2 2  
3   -import com.huaheng.api.wcs.domain.WcsTask;
4 3 import com.huaheng.framework.web.domain.AjaxResult;
5 4  
6 5 public interface TaskCancelService {
... ...
src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelServiceImpl.java
... ... @@ -34,13 +34,13 @@ public class TaskCancelServiceImpl implements TaskCancelService {
34 34  
35 35  
36 36 //2、转换实体
37   - WcsTask wcsTask = new WcsTask();
38   - wcsTask.setTaskNo(id.toString());
  37 +// WcsTask wcsTask = new WcsTask();
  38 +// wcsTask.setTaskNo(id.toString());
39 39  
40 40 //3、发送数据
41 41 String param="wcs";
42 42 String url=addressService.selectAddress(param)+"TaskCancel";
43   - String JsonParam = JSON.toJSONString(wcsTask);
  43 + String JsonParam = JSON.toJSONString(id.toString());
44 44 String result = HttpUtils.bodypost(url, JsonParam);
45 45 if(StringUtils.isEmpty(result)){
46 46 throw new ServiceException("接口地址错误");
... ...
src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishServiceImpl.java
... ... @@ -3,6 +3,8 @@ package com.huaheng.api.wcs.service.taskFinish;
3 3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 4 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
5 5 import com.huaheng.api.wcs.domain.TaskFinishDomain;
  6 +import com.huaheng.api.wcs.service.emptyOutHandle.EmptyOutHandleService;
  7 +import com.huaheng.api.wcs.service.overrideHandle.OverrideHandleService;
6 8 import com.huaheng.common.support.Convert;
7 9 import com.huaheng.common.utils.StringUtils;
8 10 import com.huaheng.framework.web.domain.AjaxResult;
... ... @@ -16,6 +18,10 @@ public class TaskFinishServiceImpl implements TaskFinishService {
16 18  
17 19 @Autowired
18 20 private TaskHeaderService taskHeaderService;
  21 + @Autowired
  22 + private EmptyOutHandleService emptyOutHandleService;
  23 + @Autowired
  24 + private OverrideHandleService overrideHandleService;
19 25  
20 26 //任务完成
21 27 @Override
... ... @@ -24,22 +30,23 @@ public class TaskFinishServiceImpl implements TaskFinishService {
24 30 if(StringUtils.isEmpty(taskFinishDomain.getTaskNo())){
25 31 return AjaxResult.error("任务号为空");
26 32 }
  33 +
  34 + //1、空出处理
27 35 if(taskFinishDomain.getIsEmptyOut() == 1){
28   - LambdaQueryWrapper<TaskHeader> lam = Wrappers.lambdaQuery();
29   - lam.eq(TaskHeader::getId,Integer.valueOf(taskFinishDomain.getTaskNo()));
30   - TaskHeader taskHeader = taskHeaderService.getOne(lam);
31   - if(taskHeader == null){
32   - return AjaxResult.error("wms系统没有此任务号");
33   - }
34   - if(StringUtils.isEmpty(taskHeader.getExceptionCode())) {
35   - taskHeader.setExceptionCode("空托出库");
36   - Boolean flag = taskHeaderService.updateById(taskHeader);
37   - if (flag == false) {
38   - return AjaxResult.error("修改任务失败,空出处理失败");
39   - }
40   - }
41   - return AjaxResult.success("成功");
  36 + ajaxResult = emptyOutHandleService.EmptyOutHandle(taskFinishDomain.getTaskNo());
  37 + }
  38 +
  39 + //2、重入处理
  40 + if(taskFinishDomain.getIsDoubleIn() == 1){
  41 + ajaxResult = overrideHandleService.OverrideHandle(taskFinishDomain);
42 42 }
  43 +
  44 + //3、取货错
  45 + if(taskFinishDomain.getIsForkError() == 1){
  46 +
  47 + }
  48 +
  49 + //任务完成
43 50 try{
44 51 ajaxResult=taskHeaderService.completeTaskByWMS(Convert.toIntArray(taskFinishDomain.getTaskNo()));
45 52 } catch (Exception e) {
... ...
src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationService.java
... ... @@ -6,8 +6,11 @@ import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDeta
6 6  
7 7 public interface WarecellAllocationService {
8 8  
9   - //仓位分配
10   - AjaxResult WarecellAllocation(WcsTask wcsTask);
  9 + /**仓位分配*/
  10 + AjaxResult warecellAllocation(WcsTask wcsTask);
11 11  
12 12 String taskPositioning(ReceiptContainerDetail receiptContainerDetail);
  13 +
  14 + //去向分配
  15 + AjaxResult destinationAllocation(WcsTask wcsTask);
13 16 }
... ...
src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java
... ... @@ -2,7 +2,6 @@ package com.huaheng.api.wcs.service.warecellAllocation;
2 2  
3 3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 4 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
5   -import com.huaheng.api.wcs.domain.WcsTask;
6 5 import com.huaheng.common.exception.service.ServiceException;
7 6 import com.huaheng.common.utils.StringUtils;
8 7 import com.huaheng.common.utils.security.ShiroUtils;
... ... @@ -31,7 +30,8 @@ import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
31 30 import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
32 31 import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
33 32 import org.springframework.stereotype.Service;
34   -
  33 +import org.springframework.transaction.annotation.Transactional;
  34 +import com.huaheng.api.wcs.domain.WcsTask;
35 35 import javax.annotation.Resource;
36 36 import java.util.ArrayList;
37 37 import java.util.List;
... ... @@ -74,14 +74,15 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService
74 74 * @return
75 75 */
76 76 @Override
77   - public AjaxResult WarecellAllocation(WcsTask wcsTask) {
  77 + @Transactional(rollbackFor = Exception.class)
  78 + public AjaxResult warecellAllocation(WcsTask wcsTask) {
78 79  
79 80 //1、判断非空字段
80 81 if(StringUtils.isEmpty(wcsTask.getTaskNo())){
81 82 return AjaxResult.error("任务号为空");
82 83 }
83   - if(StringUtils.isEmpty(wcsTask.getRoadWay())){
84   - return AjaxResult.error("巷道为空");
  84 + if(StringUtils.isEmpty(wcsTask.getDestination())){
  85 + return AjaxResult.error("目的为空");
85 86 }
86 87 if(StringUtils.isNull(wcsTask.getLength())){
87 88 return AjaxResult.error("长为空");
... ... @@ -114,6 +115,7 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService
114 115 taskDetailLambda.eq(TaskDetail::getTaskId, wcsTask.getTaskNo());
115 116 List<TaskDetail> taskDetailList = taskDetailService.list(taskDetailLambda);
116 117  
  118 + /* 循环查询入库组盘明细*/
117 119 List<ReceiptContainerDetail> receiptContainerDetailList = new ArrayList<>();
118 120 for (TaskDetail taskDetail : taskDetailList) {
119 121 receiptContainerDetailList.add(receiptContainerDetailService.getById(taskDetail.getAllocationId()));
... ... @@ -121,13 +123,15 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService
121 123 //去重
122 124 receiptContainerDetailList = receiptContainerDetailList.stream().distinct().collect(Collectors.toList());
123 125  
  126 + /* 循环入库组盘明细,重新分配库位*/
124 127 for (ReceiptContainerDetail receiptContainerDetail : receiptContainerDetailList) {
125 128 ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getById(receiptContainerDetail.getReceiptContainerId());
126 129  
127 130 String locatingRule = this.taskPositioning(receiptContainerDetail);
128 131  
129 132 LambdaQueryWrapper<FilterConfigDetail> filterConfigDetailLambda = Wrappers.lambdaQuery();
130   - filterConfigDetailLambda.eq(FilterConfigDetail::getCode, locatingRule);
  133 + filterConfigDetailLambda.eq(FilterConfigDetail::getCode, locatingRule)
  134 + .eq(FilterConfigDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
131 135 FilterConfigDetail filterConfigDetail = filterConfigDetailService.getOne(filterConfigDetailLambda);
132 136 String[] locatingRules = filterConfigDetail.getStatement().split("limit");
133 137  
... ... @@ -136,7 +140,7 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService
136 140 locationLambda.last(locatingRules[0]);
137 141 List<Location> locationList = locationService.list(locationLambda);
138 142 // locationList.stream().filter(location -> location.getLocationType().equals(locationTypeList.get(0)));
139   - locationCode = filter(locationList, locationTypeList, wcsTask.getRoadWay());
  143 + locationCode = filter(locationList, locationTypeList, wcsTask.getDestination());
140 144 if (StringUtils.isEmpty(locationCode)){
141 145 throw new ServiceException("没有库位可分配");
142 146 }
... ... @@ -155,13 +159,13 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService
155 159  
156 160 //把库位编码赋到该入库组盘头表下的所有明细
157 161 LambdaQueryWrapper<ReceiptContainerDetail> lambda = Wrappers.lambdaQuery();
158   - lambda.eq(ReceiptContainerDetail::getReceiptContainerId, receiptContainerHeader.getId());
  162 + lambda.eq(ReceiptContainerDetail::getReceiptContainerId, receiptContainerHeader.getId())
  163 + .eq(ReceiptContainerDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
159 164 List<ReceiptContainerDetail> receiptContainerDetails = receiptContainerDetailService.list(lambda);
160 165 for (ReceiptContainerDetail receiptContainerDetail2: receiptContainerDetails) {
161 166 receiptContainerDetail2.setLocationCode(locationCode);
162 167 if (!receiptContainerDetailService.updateById(receiptContainerDetail2)){throw new ServiceException("更新库位编码到入库组盘明细");}
163 168 }
164   -
165 169 }
166 170  
167 171 if (StringUtils.isNotEmpty(locationCode)){
... ... @@ -175,9 +179,7 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService
175 179  
176 180 taskHeader.setToLocation(locationCode);
177 181 if (!taskHeaderService.updateById(taskHeader)){throw new ServiceException("更新任务头表目标库位失败");}
178   - WcsTask wcsTaskResult = new WcsTask();
179   - wcsTaskResult.setToLocationCode(locationCode);
180   - return AjaxResult.success(wcsTaskResult);
  182 + return AjaxResult.success(locationCode);
181 183 }
182 184  
183 185 return AjaxResult.error("错误");
... ... @@ -233,7 +235,8 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService
233 235 .eq(ConfigValue::getRecordType, "入库首选项");
234 236 ConfigValue configValue = configValueService.getOne(configValueLambda);
235 237 LambdaQueryWrapper<ReceiptPreference> receiptPreferenceLambda = Wrappers.lambdaQuery();
236   - receiptPreferenceLambda.eq(ReceiptPreference::getCode, configValue.getValue());
  238 + receiptPreferenceLambda.eq(ReceiptPreference::getCode, configValue.getValue())
  239 + .eq(ReceiptPreference::getWarehouseCode, ShiroUtils.getWarehouseCode());
237 240 ReceiptPreference receiptPreference = receiptPreferenceService.getOne(receiptPreferenceLambda);
238 241 locatingRule = receiptPreferenceService.getOne(receiptPreferenceLambda).getLocationRule();
239 242 }
... ... @@ -247,4 +250,90 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService
247 250  
248 251 return locatingRule;
249 252 }
250   -}
  253 +
  254 +
  255 + /**
  256 + * 去向分配
  257 + */
  258 + @Override
  259 + public AjaxResult destinationAllocation(WcsTask wcsTask) {
  260 +
  261 + //1、判断非空字段
  262 + if(StringUtils.isEmpty(wcsTask.getTaskNo())){
  263 + return AjaxResult.error("任务号为空");
  264 + }
  265 + if(StringUtils.isNull(wcsTask.getLength())){
  266 + return AjaxResult.error("长为空");
  267 + }
  268 + if(StringUtils.isNull(wcsTask.getWidth())){
  269 + return AjaxResult.error("宽为空");
  270 + }
  271 + if(StringUtils.isNull(wcsTask.getHeight())){
  272 + return AjaxResult.error("高为空");
  273 + }
  274 + if(StringUtils.isNull(wcsTask.getWeight())){
  275 + return AjaxResult.error("重为空");
  276 + }
  277 +
  278 + //查询满足条件的库位类型
  279 + LambdaQueryWrapper<LocationType> lambdaQueryWrapper = Wrappers.lambdaQuery();
  280 + lambdaQueryWrapper.gt(LocationType::getLength,wcsTask.getLength())
  281 + .gt(LocationType::getWidth, wcsTask.getWidth())
  282 + .gt(LocationType::getHeight, wcsTask.getHeight())
  283 + .gt(LocationType::getMaxWeight, wcsTask.getWidth());
  284 + List<LocationType> locationTypeList = locationTypeService.list(lambdaQueryWrapper);
  285 +
  286 + if (locationTypeList.isEmpty()){
  287 + return AjaxResult.error("没有区域可分配");
  288 + }
  289 + List<String> codeList = new ArrayList<>();
  290 + for (LocationType locationType: locationTypeList) {
  291 + codeList.add(locationType.getCode());
  292 + }
  293 +
  294 + //定位库位List
  295 + List<String> positioningLocationCodeList = null;
  296 + //查询任务明细
  297 + LambdaQueryWrapper<TaskDetail> taskDetailLambda = Wrappers.lambdaQuery();
  298 + taskDetailLambda.eq(TaskDetail::getTaskId, wcsTask.getTaskNo());
  299 + List<TaskDetail> taskDetailList = taskDetailService.list(taskDetailLambda);
  300 +
  301 + /* 循环查询入库组盘明细*/
  302 + List<ReceiptContainerDetail> receiptContainerDetailList = new ArrayList<>();
  303 + for (TaskDetail taskDetail : taskDetailList) {
  304 + receiptContainerDetailList.add(receiptContainerDetailService.getById(taskDetail.getAllocationId()));
  305 + }
  306 + //去重
  307 + receiptContainerDetailList = receiptContainerDetailList.stream().distinct().collect(Collectors.toList());
  308 +
  309 + for (ReceiptContainerDetail receiptContainerDetail : receiptContainerDetailList) {
  310 + String locatingRule = this.taskPositioning(receiptContainerDetail);
  311 +
  312 + LambdaQueryWrapper<FilterConfigDetail> filterConfigDetailLambda = Wrappers.lambdaQuery();
  313 + filterConfigDetailLambda.eq(FilterConfigDetail::getCode, locatingRule)
  314 + .eq(FilterConfigDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
  315 + FilterConfigDetail filterConfigDetail = filterConfigDetailService.getOne(filterConfigDetailLambda);
  316 + String[] locatingRules = filterConfigDetail.getStatement().split("limit");
  317 +
  318 + //根据定位规则查询库位编码
  319 + LambdaQueryWrapper<Location> locationLambda = Wrappers.lambdaQuery();
  320 + locationLambda.last(locatingRules[0]);
  321 + List<Location> locationList = locationService.list(locationLambda);
  322 + List<String> locationCodeList = locationTypeList.stream().map(t-> t.getCode()).collect(Collectors.toList());
  323 + List<Location> newLocation = locationList.stream().filter(t-> locationCodeList.contains(t.getLocationType())).collect(Collectors.toList());
  324 + if (!newLocation.isEmpty()){
  325 + positioningLocationCodeList.add(newLocation.get(0).getCode());
  326 + }
  327 +
  328 + if (StringUtils.isEmpty(positioningLocationCodeList)){
  329 + throw new ServiceException("没有区域可分配");
  330 + }
  331 + }
  332 +
  333 + LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery();
  334 + locationLambdaQueryWrapper.eq(Location::getCode, positioningLocationCodeList.get(0));
  335 + Location location = locationService.getOne(locationLambdaQueryWrapper);
  336 + String destinationArea = location.getRoadway();
  337 + return AjaxResult.success(destinationArea);
  338 + }
  339 +}
251 340 \ No newline at end of file
... ...
src/main/java/com/huaheng/common/constant/QuantityConstant.java
... ... @@ -348,5 +348,9 @@ public class QuantityConstant {
348 348 //在库抽检
349 349 public static final Integer CHECK_TYPE_SELECT = 300;
350 350  
  351 + //空货架
  352 + public static final Integer POINTS_EMPTY = 0;
351 353  
  354 + //非空货架
  355 + public static final Integer POINTS_SOME = 1;
352 356 }
... ...
src/main/java/com/huaheng/common/jasper/DocType.java 0 → 100644
  1 +package com.huaheng.common.jasper;
  2 +
  3 +/**
  4 + * 定义了报表输出类型,固定了可输出类型
  5 + * @author ricard
  6 + * @date 19/11/21
  7 + *
  8 + */
  9 +
  10 +public enum DocType {
  11 +
  12 + PDF, HTML, XLS, XLSX, XML, RTF, CSV, TXT, DOC
  13 +
  14 +}
... ...
src/main/java/com/huaheng/common/jasper/DocTypeUtil.java 0 → 100644
  1 +package com.huaheng.common.jasper;
  2 +
  3 +
  4 +/**
  5 + * 格式工具类
  6 + * @author ricard
  7 + * @date 19/11/21
  8 + *
  9 + */
  10 +public class DocTypeUtil {
  11 + /**
  12 + * 默认类型PDF
  13 + * @param docType
  14 + * @return
  15 + *
  16 + */
  17 +
  18 + public static DocType getEnumDocType(String docType){
  19 + //默认PDF
  20 + DocType type = DocType.PDF;
  21 + docType = docType.toUpperCase();
  22 +
  23 + if(docType.equals("DOC")){
  24 + type =DocType.DOC;
  25 + } else if (docType.equals("XLS")) {
  26 + type = DocType.XLS;
  27 + } else if(docType.equals("XLSX")) {
  28 + type = DocType.XLSX;
  29 + }else if (docType.equals("XML")) {
  30 + type = DocType.XML;
  31 + } else if (docType.equals("RTF")) {
  32 + type = DocType.RTF;
  33 + } else if (docType.equals("CSV")) {
  34 + type = DocType.CSV;
  35 + } else if (docType.equals("HTML")) {
  36 + type = DocType.HTML;
  37 + } else if (docType.equals("TXT")) {
  38 + type = DocType.TXT;
  39 + }
  40 + return type;
  41 + }
  42 +}
... ...
src/main/java/com/huaheng/common/jasper/JasperreportUtils.java 0 → 100644
  1 +package com.huaheng.common.jasper;
  2 +
  3 +import net.sf.jasperreports.engine.*;
  4 +import net.sf.jasperreports.engine.export.*;
  5 +import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter;
  6 +import net.sf.jasperreports.engine.fill.JRFileVirtualizer;
  7 +import net.sf.jasperreports.export.*;
  8 +import org.slf4j.Logger;
  9 +import org.slf4j.LoggerFactory;
  10 +
  11 +import javax.servlet.ServletException;
  12 +import javax.servlet.ServletOutputStream;
  13 +import javax.servlet.http.HttpServletRequest;
  14 +import javax.servlet.http.HttpServletResponse;
  15 +import javax.servlet.http.HttpSession;
  16 +import java.io.*;
  17 +import java.lang.reflect.Field;
  18 +import java.math.BigDecimal;
  19 +import java.net.URLEncoder;
  20 +import java.sql.Connection;
  21 +import java.sql.SQLException;
  22 +import java.text.DecimalFormat;
  23 +import java.text.SimpleDateFormat;
  24 +import java.util.Date;
  25 +import java.util.List;
  26 +import java.util.Map;
  27 +
  28 +/**
  29 + * 报表工具类
  30 + * @author ricard
  31 + * @date 19/11/21
  32 + *
  33 + */
  34 +public class JasperreportUtils {
  35 +
  36 +
  37 +
  38 +
  39 + private static final Logger LOGGER = LoggerFactory.getLogger(JasperreportUtils.class);
  40 + private HttpServletRequest request;
  41 + private HttpServletResponse response;
  42 + private HttpSession session;
  43 +
  44 + public JasperreportUtils(HttpServletRequest request, HttpServletResponse response, HttpSession session){
  45 + super();
  46 + this.request = request;
  47 + this.response =response;
  48 + this.session =request.getSession();
  49 + }
  50 +
  51 +
  52 +
  53 + /**
  54 + * datasource与parameters填充报表
  55 + *
  56 + * @param jasperPath
  57 + * @param dataSource
  58 + * @param parameters
  59 + * @return
  60 + * @throws JRException
  61 + */
  62 + public JasperPrint getJasperPrint(String jasperPath, Map<String, Object> parameters, JRDataSource dataSource)
  63 + throws JRException {
  64 +
  65 + JasperPrint jasperPrint = JasperFillManager.fillReport(jasperPath, parameters, dataSource);
  66 + return jasperPrint;
  67 + }
  68 +
  69 + /**
  70 + * connection与parameters填充报表
  71 + *
  72 + * @param jasperPath
  73 + * @param conn
  74 + * @param parameters
  75 + * @return
  76 + * @throws JRException
  77 + */
  78 + public JasperPrint getJasperPrint(String jasperPath, Map<String, Object> parameters, Connection conn)
  79 + throws JRException {
  80 +
  81 + JasperPrint jasperPrint = JasperFillManager.fillReport(jasperPath, parameters, conn);
  82 + return jasperPrint;
  83 + }
  84 +
  85 + /**
  86 + * 传入list获取jasperPrint
  87 + *
  88 + * @param jasperPath
  89 + * @param parameters
  90 + * @param list
  91 + * @return
  92 + * @throws JRException
  93 + */
  94 +// public JasperPrint getJasperPrintWithBeanList(String jasperPath, Map<String, Object> parameters, List<?> list)
  95 +// throws JRException,SQLException {
  96 +// JRDataSource jrDataSource = null;
  97 +// JasperPrint jasperPrint =new JasperPrint();
  98 +// if(null != list && list.size()> 0) {
  99 +// jrDataSource = new JRBeanCollectionDataSource(list);
  100 +// jasperPrint = JasperFillManager.fillReport(jasperPath, parameters, jrDataSource);
  101 +// }else {
  102 +// jasperPrint = JasperFillManager.fillReport(jasperPath, parameters, connection);
  103 +// }
  104 +// return jasperPrint;
  105 +// }
  106 +
  107 +
  108 +
  109 + /**
  110 + * 获得相应类型的Content type
  111 + *
  112 + * @param docType
  113 + * @return
  114 + */
  115 + public String getContentType(DocType docType) {
  116 + String contentType = "text/html";
  117 + switch (docType) {
  118 + case PDF:
  119 + contentType = "application/pdf";
  120 + break;
  121 + case XLS:
  122 + contentType = "application/vnd.ms-excel";
  123 + break;
  124 + case XLSX:
  125 + contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
  126 + break;
  127 + case XML:
  128 + contentType = "text/xml";
  129 + break;
  130 + case RTF:
  131 + contentType = "application/rtf";
  132 + break;
  133 + case CSV:
  134 + contentType = "text/plain";
  135 + break;
  136 + case DOC:
  137 + contentType = "application/msword";
  138 + break;
  139 + }
  140 + return contentType;
  141 + }
  142 +
  143 + /**
  144 + * jrxml文件 编译为 jasper文件
  145 + *
  146 + * @param jrxmlPath
  147 + * @param jasperPath
  148 + * @throws JRException
  149 + */
  150 + public void jrxmlToJsper(String jrxmlPath, String jasperPath) throws JRException {
  151 +
  152 + JasperCompileManager.compileReportToFile(jrxmlPath, jasperPath);
  153 +
  154 + }
  155 +
  156 +
  157 + /**
  158 + * 生成html文件
  159 + * @param response
  160 + * @param connection
  161 + * @param jasperPath
  162 + * @param fileName
  163 + * @param parameters
  164 + * @return
  165 + */
  166 + public String createHtml(HttpServletResponse response, Connection connection, String jasperPath, String fileName,
  167 + Map<String, Object> parameters, String folder) {
  168 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
  169 + String dpath = sdf.format(new Date());
  170 + String path = "D:"+"/reportHtml" + folder + "/" + dpath;
  171 + File file = new File(path);
  172 + if (!file.exists()) {
  173 + file.mkdirs();
  174 + }
  175 + String htmlFilePath = path + "/" + fileName;
  176 + try {
  177 +
  178 + JasperPrint jasperPrint = this.getJasperPrint(jasperPath,parameters,connection);
  179 + JasperExportManager.exportReportToHtmlFile(jasperPrint, htmlFilePath);
  180 +
  181 + } catch (Exception ex) {
  182 + LOGGER.error("生成html文件错误"+ex.getMessage(),ex);
  183 + }
  184 + return folder + "/" + dpath + "/" + fileName;
  185 + }
  186 +
  187 + /**
  188 + * 传入类型,获取输出器
  189 + *
  190 + * @param docType
  191 + * @return
  192 + */
  193 + @SuppressWarnings("deprecation")
  194 + public JRAbstractExporter getJRExporter(DocType docType) {
  195 + JRAbstractExporter exporter = null;
  196 + switch (docType) {
  197 + case PDF:
  198 + exporter = new JRPdfExporter();
  199 + break;
  200 + case HTML:
  201 + exporter = new HtmlExporter();
  202 + break;
  203 + case XLS:
  204 + exporter = new JRXlsExporter();
  205 + break;
  206 + case XLSX:
  207 + exporter = new JRXlsxExporter();
  208 + break;
  209 + case XML:
  210 + exporter = new JRXmlExporter();
  211 + break;
  212 + case RTF:
  213 + exporter = new JRRtfExporter();
  214 + break;
  215 + case CSV:
  216 + exporter = new JRCsvExporter();
  217 + break;
  218 + case DOC:
  219 + exporter = new JRRtfExporter();
  220 + break;
  221 + case TXT:
  222 + exporter = new JRTextExporter();
  223 + break;
  224 + }
  225 + return exporter;
  226 + }
  227 +
  228 +
  229 + /**
  230 + * 生成不同格式报表文档(带缓存)
  231 + *
  232 + * @param docType
  233 + * 文档类型
  234 + * @param jasperPath
  235 + */
  236 + @SuppressWarnings("deprecation")
  237 + public void createExportDocument(DocType docType, String jasperPath, Map<String, Object> parameters,
  238 + String fileName,Connection connection) throws JRException, IOException, ServletException, SQLException {
  239 +
  240 + //1、传入类型,获取输出器
  241 + JRAbstractExporter exporter = getJRExporter(docType);
  242 +
  243 + // 2、获取后缀
  244 + String ext = docType.toString().toLowerCase();
  245 +
  246 + if (!fileName.toLowerCase().endsWith(ext)) {
  247 + fileName += "." + ext;
  248 + }
  249 +
  250 +
  251 + // 3、判断资源类型
  252 + if (ext.equals("xls")) {
  253 + SimpleXlsReportConfiguration configuration = new SimpleXlsReportConfiguration();
  254 + // 删除记录最下面的空行
  255 + configuration.setRemoveEmptySpaceBetweenRows(Boolean.TRUE);
  256 + // 一页一个sheet
  257 + configuration.setOnePagePerSheet(Boolean.FALSE);
  258 + // 显示边框 背景白色
  259 + configuration.setWhitePageBackground(Boolean.FALSE);
  260 + exporter.setConfiguration(configuration);
  261 + }
  262 + if(ext.equals("xlsx")) {
  263 + SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration();
  264 + configuration.setRemoveEmptySpaceBetweenRows(Boolean.TRUE);
  265 + configuration.setRemoveEmptySpaceBetweenColumns(Boolean.TRUE);
  266 + configuration.setWhitePageBackground(Boolean.FALSE);
  267 + //自动选择格式
  268 + configuration.setDetectCellType(Boolean.TRUE);
  269 + exporter.setConfiguration(configuration);
  270 + }
  271 + if (ext.equals("txt")) {
  272 + SimpleTextReportConfiguration configuration = new SimpleTextReportConfiguration();
  273 + configuration.setCharWidth((float)8);
  274 + configuration.setCharHeight((float)15);
  275 + exporter.setConfiguration(configuration);
  276 + }
  277 +
  278 + //4、设置格式和头
  279 + response.setContentType(getContentType(docType));
  280 + response.setHeader("Content-Disposition",
  281 + "attachment; filename*=UTF-8''" + URLEncoder.encode(fileName, "UTF-8"));
  282 +
  283 + //5、加缓存
  284 + JRFileVirtualizer virtualizer = new JRFileVirtualizer(2, "D:/temp");
  285 + parameters.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);
  286 + virtualizer.setReadOnly(true);
  287 +
  288 + //6、连接数据库获取jasperPrint
  289 + exporter.setExporterInput(new SimpleExporterInput(getJasperPrint(jasperPath, parameters, connection)));
  290 + /*exporter.setParameter(JRExporterParameter.JASPER_PRINT,
  291 + getJasperPrintWithBeanList(jasperPath, parameters, list));*/
  292 +
  293 + OutputStream outStream = null;
  294 + PrintWriter outWriter = null;
  295 +
  296 + // 7、解决中文乱码问题
  297 + response.setCharacterEncoding("UTF-8");
  298 + if (ext.equals("csv") || ext.equals("doc") || ext.equals("rtf") || ext.equals("txt")) {
  299 + outWriter = response.getWriter();
  300 + SimpleWriterExporterOutput outPut = new SimpleWriterExporterOutput(outWriter);
  301 + exporter.setExporterOutput(outPut);
  302 + //exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, outWriter);
  303 + } else {
  304 + if(ext.equals("xml")) {
  305 + outWriter = response.getWriter();
  306 + XmlExporterOutput outPut = new SimpleXmlExporterOutput(outWriter);
  307 + exporter.setExporterOutput(outPut);
  308 + }else if(ext.equals("html")){
  309 + outWriter = response.getWriter();
  310 + HtmlExporterOutput outPut = new SimpleHtmlExporterOutput(outWriter);
  311 + exporter.setExporterOutput(outPut);
  312 + }else {
  313 + outStream = response.getOutputStream();
  314 + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outStream));
  315 + }
  316 + }
  317 + try {
  318 + exporter.exportReport();
  319 + virtualizer.cleanup();
  320 + } catch (JRException e) {
  321 + throw new ServletException(e);
  322 + } finally {
  323 + if (outStream != null) {
  324 + try {
  325 + outStream.close();
  326 + } catch (IOException ex) {
  327 + }
  328 + }
  329 + if(outWriter != null) {
  330 + outWriter.close();
  331 + }
  332 + }
  333 + }
  334 +
  335 +
  336 + /**
  337 + * 输出以分页的形式输出html
  338 + * @param jasperPrint
  339 + * @param pageStr
  340 + * @throws JRException
  341 + * @throws IOException
  342 + */
  343 +
  344 + public void createHtmlByPage(JasperPrint jasperPrint,String pageStr) throws JRException, IOException {
  345 + int pageIndex = 0;
  346 + int lastPageIndex = 0;
  347 +
  348 + HtmlExporter exporter = new HtmlExporter();
  349 + if(null != jasperPrint.getPages()) {
  350 + lastPageIndex = jasperPrint.getPages().size() - 1;
  351 + }
  352 +
  353 + if(null == pageStr) {
  354 + pageStr = "0";
  355 + }
  356 + try {
  357 + pageIndex = Integer.valueOf(pageStr);
  358 + if(pageIndex > 0) {
  359 + pageIndex = pageIndex -1 ;
  360 + }
  361 + } catch (Exception e) {
  362 + // 如果得到的非数字字符串
  363 + if("lastPage".equals(pageStr)) {
  364 + pageIndex = lastPageIndex;
  365 + }
  366 + }
  367 +
  368 + if (pageIndex < 0) {
  369 + pageIndex = 0;
  370 + }
  371 + if (pageIndex > lastPageIndex) {
  372 + pageIndex = lastPageIndex;
  373 + }
  374 + response.setCharacterEncoding("UTF-8");
  375 + try {
  376 + PrintWriter out = response.getWriter();
  377 + exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
  378 +
  379 + SimpleHtmlReportConfiguration configuration = new SimpleHtmlReportConfiguration();
  380 + configuration.setPageIndex(pageIndex);
  381 + exporter.setConfiguration(configuration);
  382 + //exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE);
  383 +
  384 + HtmlExporterOutput outPut = new SimpleHtmlExporterOutput(out);
  385 + exporter.setExporterOutput(outPut);
  386 +
  387 + exporter.exportReport();
  388 + } catch (Exception e) {
  389 +
  390 + e.printStackTrace();
  391 + }
  392 + }
  393 +
  394 +
  395 + /**
  396 + * 批量打印pdf文件
  397 + */
  398 + public void exportBatchPdf(List<JasperPrint> jasperPrintList,String fileName) {
  399 +
  400 + JRPdfExporter exporter = new JRPdfExporter();
  401 + try {
  402 + /**
  403 + * 注入打印模板
  404 + */
  405 + exporter.setExporterInput(SimpleExporterInput.getInstance(jasperPrintList));
  406 +
  407 + OutputStream outStream = null;
  408 +
  409 + response.setContentType(getContentType(DocType.PDF));
  410 + response.setHeader("Content-Disposition",
  411 + "attachment; filename*=UTF-8''" + URLEncoder.encode(fileName, "UTF-8"));
  412 + outStream = response.getOutputStream();
  413 +
  414 + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outStream));
  415 + //配置项
  416 + SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
  417 + // 是否批量打印
  418 + configuration.setCreatingBatchModeBookmarks(true);
  419 + // 是否加密
  420 + configuration.setEncrypted(false);
  421 + exporter.setConfiguration(configuration);
  422 +
  423 + exporter.exportReport();
  424 + } catch (Exception e) {
  425 + e.printStackTrace();
  426 + }
  427 +
  428 + }
  429 +
  430 +
  431 +
  432 + /**
  433 + * 千分位格式化数据 保留两位小数,且 ‘0 ’ 转为 ‘--’
  434 + *
  435 + * @param obj
  436 + * @param fieldNames
  437 + * 需转化的属性
  438 + * @return
  439 + */
  440 + public Object toFormatNumber(Object obj, String[] fieldNames) {
  441 + Class clazz = (Class) obj.getClass();
  442 + Field[] fs = clazz.getDeclaredFields();
  443 + for (int i = 0; i < fs.length; i++) {
  444 + Field f = fs[i];
  445 + // 设置些属性是可以访问的
  446 + f.setAccessible(true);
  447 + String type = f.getType().toString();
  448 + Object val = null;
  449 +
  450 + try {
  451 + for (String str : fieldNames) {
  452 + if (f.getName() == str) {
  453 + val = f.get(obj);
  454 + }
  455 + }
  456 + if (null != val) {
  457 + if (type.endsWith("String")) {
  458 + if (val.equals("0")) {
  459 + f.set(obj, "--");
  460 + } else {
  461 + /*
  462 + * ; BigDecimal str=new BigDecimal((String) val); DecimalFormat df=new
  463 + * DecimalFormat(",###,##0.00");
  464 + */ // 保留两位小数
  465 + f.set(obj, this.toNumeber((String) val));
  466 + }
  467 +
  468 + } else if (type.endsWith("int") || type.endsWith("Integer")) {
  469 + // System.out.println(f.getType()+"\t");
  470 + } else {
  471 + // System.out.println(f.getType()+"\t");
  472 + }
  473 + }
  474 +
  475 + } catch (Exception ex) {
  476 + LOGGER.error("千分位格式化数据错误"+ex.getMessage(), ex);
  477 + }
  478 + }
  479 + return obj;
  480 + }
  481 +
  482 + /**
  483 + * 转为万元保留小数点后两位
  484 + *
  485 + * @param value
  486 + * @return
  487 + */
  488 + private String toNumeber(String value) {
  489 + Double number = Double.valueOf(value) / 10000.00;
  490 + BigDecimal str = new BigDecimal(number);
  491 + DecimalFormat df = new DecimalFormat(",###,##0.00");
  492 +
  493 + return df.format(str);
  494 + }
  495 +
  496 +
  497 +}
... ...
src/main/java/com/huaheng/framework/config/SwaggerConfig.java
... ... @@ -36,7 +36,7 @@ public class SwaggerConfig
36 36 .apiInfo(apiInfo())
37 37 .select()
38 38 // 指定当前包路径
39   - .apis(RequestHandlerSelectors.basePackage("com.huaheng.pc"))
  39 + .apis(RequestHandlerSelectors.basePackage("com.huaheng.api"))
40 40 // 扫描所有 .apis(RequestHandlerSelectors.any())
41 41 .paths(PathSelectors.any())
42 42 .build();
... ...
src/main/java/com/huaheng/pc/config/FilterConfigHeader/service/FilterConfigHeaderService.java
... ... @@ -9,6 +9,7 @@ import com.huaheng.pc.config.FilterConfigDetail.mapper.FilterConfigDetailMapper;
9 9 import com.huaheng.pc.config.FilterConfigHeader.domain.FilterConfigHeader;
10 10 import com.huaheng.pc.config.FilterConfigHeader.mapper.FilterConfigHeaderMapper;
11 11 import org.springframework.stereotype.Service;
  12 +import org.springframework.transaction.annotation.Transactional;
12 13  
13 14 import javax.annotation.Resource;
14 15 import java.util.List;
... ... @@ -34,6 +35,7 @@ public class FilterConfigHeaderService extends ServiceImpl&lt;FilterConfigHeaderMap
34 35  
35 36  
36 37 //复制规则配置
  38 + @Transactional
37 39 public Boolean filterConfigCopy(String code,String newCode){
38 40 int i = 0;
39 41 //复制规则配置主表
... ...
src/main/java/com/huaheng/pc/config/address/domain/Address.java
... ... @@ -33,6 +33,13 @@ public class Address implements Serializable {
33 33 private String warehouseCode;
34 34  
35 35 /**
  36 + * 编号
  37 + */
  38 + @TableField(value = "number")
  39 + @ApiModelProperty(value="编号")
  40 + private Integer number;
  41 +
  42 + /**
36 43 * 参数
37 44 */
38 45 @TableField(value = "param")
... ... @@ -62,6 +69,14 @@ public class Address implements Serializable {
62 69 this.warehouseCode = warehouseCode;
63 70 }
64 71  
  72 + public Integer getNumber() {
  73 + return number;
  74 + }
  75 +
  76 + public void setNumber(Integer number) {
  77 + this.number = number;
  78 + }
  79 +
65 80 public String getParam() {
66 81 return param;
67 82 }
... ...
src/main/java/com/huaheng/pc/config/address/service/AddressServiceImpl.java
... ... @@ -10,6 +10,7 @@ import com.huaheng.common.utils.security.ShiroUtils;
10 10 import com.huaheng.pc.config.address.domain.Address;
11 11 import com.huaheng.pc.config.address.mapper.AddressMapper;
12 12 import org.springframework.stereotype.Service;
  13 +import org.springframework.transaction.annotation.Transactional;
13 14  
14 15 import java.util.List;
15 16  
... ... @@ -42,6 +43,7 @@ public class AddressServiceImpl extends ServiceImpl&lt;AddressMapper, Address&gt; impl
42 43 * @return 是否复制成功
43 44 */
44 45 @Override
  46 + @Transactional
45 47 public Boolean addressCopy(String warehouseCode, String newWarehouseCode) {
46 48 log.trace("开始复制地址表");
47 49 LambdaQueryWrapper<Address> lambdaQueryWrapper = Wrappers.lambdaQuery();
... ...
src/main/java/com/huaheng/pc/config/bom/controller/BomHeaderController.java
... ... @@ -72,7 +72,7 @@ public class BomHeaderController extends BaseController {
72 72 lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), BomHeader::getCreated, createdBegin)
73 73 .lt(StringUtils.isNotEmpty(createdEnd), BomHeader::getCreated, createdEnd)
74 74 .eq(StringUtils.isNotEmpty(bomHeader.getMaterialCode()), BomHeader::getMaterialCode, bomHeader.getMaterialCode())
75   - .eq(StringUtils.isNotEmpty(bomHeader.getMaterialName()), BomHeader::getMaterialName, bomHeader.getMaterialName())
  75 + .like(StringUtils.isNotEmpty(bomHeader.getMaterialName()), BomHeader::getMaterialName, bomHeader.getMaterialName())
76 76 .eq(StringUtils.isNotEmpty(bomHeader.getCompanyCode()), BomHeader::getCompanyCode, bomHeader.getCompanyCode());
77 77  
78 78 if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
... ...
src/main/java/com/huaheng/pc/config/carrier/controller/CarrierController.java
... ... @@ -64,7 +64,7 @@ public class CarrierController extends BaseController {
64 64 lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), Carrier::getCreated, createdBegin)
65 65 .lt(StringUtils.isNotEmpty(createdEnd), Carrier::getCreated, createdEnd)
66 66 .eq(StringUtils.isNotEmpty(carrier.getCode()), Carrier::getCode, carrier.getCode())
67   - .eq(StringUtils.isNotEmpty(carrier.getName()), Carrier::getName, carrier.getName())
  67 + .like(StringUtils.isNotEmpty(carrier.getName()), Carrier::getName, carrier.getName())
68 68 .eq(Carrier::getWarehouseCode, ShiroUtils.getWarehouseCode());
69 69  
70 70 if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
... ...
src/main/java/com/huaheng/pc/config/company/service/CompanyServiceImpl.java
... ... @@ -87,11 +87,11 @@ public class CompanyServiceImpl extends ServiceImpl&lt;CompanyMapper, Company&gt; impl
87 87 warehouseCompanyService.remove(lambdaQueryWrapper.eq(WarehouseCompany::getCompanyId, company.getId()));
88 88 //添加货主仓库关联
89 89 WarehouseCompany record = new WarehouseCompany();
90   - for (int i=0; i<warehouse.length-1; i++)
  90 + for (int i=0; i<warehouse.length; i++)
91 91 {
92 92 record.setCompanyId(company.getId());
93 93 record.setCompanyCode(company.getCode());
94   - record.setWarehouseCode(warehouse[i+1]);
  94 + record.setWarehouseCode(warehouse[i]);
95 95 warehouseCompanyService.save(record);
96 96 }
97 97 //更新货主
... ...
src/main/java/com/huaheng/pc/config/configValue/service/ConfigValueService.java
... ... @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
6 6 import com.huaheng.pc.config.configValue.domain.ConfigValue;
7 7 import com.huaheng.pc.config.configValue.mapper.ConfigValueMapper;
8 8 import org.springframework.stereotype.Service;
  9 +import org.springframework.transaction.annotation.Transactional;
9 10  
10 11 import java.util.List;
11 12 @Service
... ... @@ -17,6 +18,7 @@ public class ConfigValueService extends ServiceImpl&lt;ConfigValueMapper, ConfigVal
17 18 * @param newWarehouseCode 新仓库编码
18 19 * @return 是否复制成功
19 20 */
  21 + @Transactional
20 22 public boolean configValueCopy(String warehouseCode, String newWarehouseCode){
21 23 log.trace("开始复制系统参数配置表");
22 24 LambdaQueryWrapper<ConfigValue> lambdaQueryWrapper = Wrappers.lambdaQuery();
... ...
src/main/java/com/huaheng/pc/config/container/controller/ContainerController.java
... ... @@ -17,6 +17,7 @@ import com.huaheng.framework.web.page.TableDataInfo;
17 17 import com.huaheng.framework.web.page.TableSupport;
18 18 import com.huaheng.pc.config.container.domain.Container;
19 19 import com.huaheng.pc.config.container.service.ContainerService;
  20 +import com.huaheng.pc.inventory.inventoryTransaction.domain.InventoryTransaction;
20 21 import io.swagger.annotations.Api;
21 22 import io.swagger.annotations.ApiOperation;
22 23 import io.swagger.annotations.ApiParam;
... ... @@ -27,6 +28,7 @@ import org.springframework.web.bind.annotation.*;
27 28 import org.springframework.web.multipart.MultipartFile;
28 29  
29 30 import javax.annotation.Resource;
  31 +import java.util.ArrayList;
30 32 import java.util.List;
31 33  
32 34 @Api(tags={"容器操作类"})
... ... @@ -175,4 +177,21 @@ public class ContainerController extends BaseController {
175 177 ExcelUtil<Container> util = new ExcelUtil<>(Container.class);
176 178 return util.importTemplateExcel("容器");
177 179 }
  180 +
  181 +
  182 + @RequiresPermissions("iconfig:container:print")
  183 + @Log(title = "容器条码", operating = "容器条码打印", action = BusinessType.OTHER)
  184 + @GetMapping("/print/{ids}")
  185 + public String print(@PathVariable("ids") Integer[] ids, ModelMap mmap)
  186 + {
  187 + List<Container> list = new ArrayList<>();
  188 + for(Integer id:ids){
  189 + if(id != null) {
  190 + Container container = containerService.getById(id);
  191 + list.add(container);
  192 + }
  193 + mmap.put("container", list);
  194 + }
  195 + return prefix + "/print";
  196 + }
178 197 }
... ...
src/main/java/com/huaheng/pc/config/container/domain/Container.java
... ... @@ -65,6 +65,15 @@ public class Container implements Serializable {
65 65 @Excel(name = "容器类型")
66 66 private String containerType;
67 67  
  68 +
  69 + /**
  70 + * 容器类型
  71 + */
  72 + @TableField(value = "goodsShelfNo")
  73 + @ApiModelProperty(value="AGV货架编码")
  74 + @Excel(name = "AGV货架编码")
  75 + private String goodsShelfNo;
  76 +
68 77 /**
69 78 * 创建时间
70 79 */
... ... @@ -199,6 +208,8 @@ public class Container implements Serializable {
199 208  
200 209 public static final String COL_CONTAINERTYPE = "containerType";
201 210  
  211 + public static final String COL_GOODSSHELFNO = "goodsShelfNo";
  212 +
202 213 public static final String COL_CREATED = "created";
203 214  
204 215 public static final String COL_CREATEDBY = "createdBy";
... ... @@ -245,6 +256,7 @@ public class Container implements Serializable {
245 256 sb.append(", warehouseCode=").append(warehouseCode);
246 257 sb.append(", companyCode=").append(companyCode);
247 258 sb.append(", containerType=").append(containerType);
  259 + sb.append(", goodsShelfNo=").append(goodsShelfNo);
248 260 sb.append(", created=").append(created);
249 261 sb.append(", createdBy=").append(createdBy);
250 262 sb.append(", lastUpdated=").append(lastUpdated);
... ...
src/main/java/com/huaheng/pc/config/container/mapper/ContainerMapper.java
... ... @@ -16,5 +16,9 @@ public interface ContainerMapper extends BaseMapper&lt;Container&gt; {
16 16  
17 17 Container findAllByCode(@Param("code") String code);
18 18  
  19 + int addList(@Param("containers") List<Container> containers);
19 20  
  21 +
  22 + //获得空货架编号
  23 + List<Container> selectListShelf();
20 24 }
21 25 \ No newline at end of file
... ...
src/main/java/com/huaheng/pc/config/container/service/ContainerService.java
... ... @@ -22,4 +22,8 @@ public interface ContainerService extends IService&lt;Container&gt;{
22 22 void removeByCode(String containCode);
23 23  
24 24 Container findAllByCode(String containCode);
  25 +
  26 +
  27 + //获得空货架编号
  28 + List<Container> selectListShelf();
25 29 }
... ...
src/main/java/com/huaheng/pc/config/container/service/ContainerServiceImpl.java
... ... @@ -31,6 +31,7 @@ public class ContainerServiceImpl extends ServiceImpl&lt;ContainerMapper, Container
31 31 @Override
32 32 public AjaxResult<List<Container>> insertContainer(String type, Integer quantity) {
33 33 List<Container> containerList = new ArrayList<>();
  34 + List<Container> containers =new ArrayList<>();
34 35 Integer number = getNumber(type);
35 36 for(int i=0; i<quantity; i++) {
36 37 number++;
... ... @@ -45,10 +46,13 @@ public class ContainerServiceImpl extends ServiceImpl&lt;ContainerMapper, Container
45 46 container.setEnable(true);
46 47 container.setCompanyCode(ShiroUtils.getCompanyCodeList().get(0));
47 48 container.setWarehouseCode(ShiroUtils.getWarehouseCode());
48   - this.save(container);
49   - containerList.add(container);
  49 + containers.add(container);
  50 + if( i>0 && (i%1000==0 || i == quantity-1)){
  51 + containerMapper.addList(containers);
  52 + containers = new ArrayList<>();
  53 + }
50 54 }
51   - return AjaxResult.success(containerList);
  55 + return AjaxResult.success(containers);
52 56 }
53 57  
54 58 private Integer getNumber(String type) {
... ... @@ -167,4 +171,10 @@ public class ContainerServiceImpl extends ServiceImpl&lt;ContainerMapper, Container
167 171 public Container findAllByCode(String code) {
168 172 return containerMapper.findAllByCode(code);
169 173 }
  174 +
  175 +
  176 + @Override
  177 + public List<Container> selectListShelf() {
  178 + return containerMapper.selectListShelf();
  179 + }
170 180 }
... ...
src/main/java/com/huaheng/pc/config/containerType/controller/ContainerTypeController.java
... ... @@ -63,6 +63,7 @@ public class ContainerTypeController extends BaseController
63 63 lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin),ContainerType::getCreated, createdBegin)
64 64 .le(StringUtils.isNotEmpty(createdEnd), ContainerType::getCreated, createdEnd)
65 65 .eq(ContainerType::getWarehouseCode,ShiroUtils.getWarehouseCode())
  66 + .in(ContainerType::getCompanyCode,ShiroUtils.getCompanyCodeList())
66 67 .eq(StringUtils.isNotEmpty(containerType.getCode()),ContainerType::getCode,containerType.getCode())
67 68 .like(StringUtils.isNotEmpty(containerType.getName()),ContainerType::getName,containerType.getName());;
68 69  
... ...
src/main/java/com/huaheng/pc/config/containerType/service/ContainerTypeServiceImpl.java
... ... @@ -3,14 +3,17 @@ package com.huaheng.pc.config.containerType.service;
3 3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 4 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
5 5 import com.huaheng.common.utils.security.ShiroUtils;
  6 +import com.huaheng.pc.config.configValue.domain.ConfigValue;
6 7 import org.springframework.stereotype.Service;
7   -
  8 +import javax.annotation.Resource;
8 9 import java.util.List;
9 10 import java.util.Map;
10 11  
11 12 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
12 13 import com.huaheng.pc.config.containerType.domain.ContainerType;
13 14 import com.huaheng.pc.config.containerType.mapper.ContainerTypeMapper;
  15 +import com.huaheng.pc.config.containerType.service.ContainerTypeService;
  16 +import org.springframework.transaction.annotation.Transactional;
14 17  
15 18 @Service("containerType")
16 19 public class ContainerTypeServiceImpl extends ServiceImpl<ContainerTypeMapper, ContainerType> implements ContainerTypeService{
... ...
src/main/java/com/huaheng/pc/config/customer/controller/CustomerController.java
... ... @@ -66,7 +66,7 @@ public class CustomerController extends BaseController {
66 66 lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), Customer::getCreated, createdBegin)
67 67 .lt(StringUtils.isNotEmpty(createdEnd), Customer::getCreated, createdEnd)
68 68 .eq(StringUtils.isNotEmpty(customer.getCode()), Customer::getCode, customer.getCode())
69   - .eq(StringUtils.isNotEmpty(customer.getName()), Customer::getName, customer.getName())
  69 + .like(StringUtils.isNotEmpty(customer.getName()), Customer::getName, customer.getName())
70 70 .eq(Customer::getDeleted, false)
71 71 .eq(Customer::getWarehouseCode, ShiroUtils.getWarehouseCode())
72 72 .orderByDesc(Customer::getCreated);
... ...
src/main/java/com/huaheng/pc/config/cycleCountPreference/service/CycleCountPreferenceService.java
... ... @@ -73,6 +73,7 @@ public class CycleCountPreferenceService extends ServiceImpl&lt;CycleCountPreferenc
73 73 * @param newWarehouseCode 新仓库编码
74 74 * @return 是否复制成功
75 75 */
  76 + @Transactional
76 77 public boolean cycleCountPreferenceCopy(String warehouseCode, String newWarehouseCode) {
77 78 log.trace("开始复盘点首选项表");
78 79 LambdaQueryWrapper<CycleCountPreference> lambdaQueryWrapper = Wrappers.lambdaQuery();
... ...
src/main/java/com/huaheng/pc/config/excelTemplate/controller/excelTemplateController.java
... ... @@ -59,7 +59,7 @@ public class excelTemplateController extends BaseController {
59 59 Integer pageSize = pageDomain.getPageSize();
60 60 lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), ExcelTemplate::getCreated, createdBegin)
61 61 .lt(StringUtils.isNotEmpty(createdEnd), ExcelTemplate::getCreated, createdEnd)
62   - .eq(StringUtils.isNotEmpty(excelTemplate.getName()), ExcelTemplate::getName, excelTemplate.getName())
  62 + .like(StringUtils.isNotEmpty(excelTemplate.getName()), ExcelTemplate::getName, excelTemplate.getName())
63 63 .eq(ExcelTemplate::getWarehouseCode, ShiroUtils.getWarehouseCode())
64 64 .in(ExcelTemplate::getCompanyCode, ShiroUtils.getCompanyCodeList());
65 65  
... ...
src/main/java/com/huaheng/pc/config/location/controller/LocationController.java
... ... @@ -76,6 +76,7 @@ public class LocationController extends BaseController {
76 76 Integer pageSize = pageDomain.getPageSize();
77 77 lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), Location::getCreated, createdBegin)
78 78 .lt(StringUtils.isNotEmpty(createdEnd), Location::getCreated, createdEnd)
  79 + .eq(Location::getWarehouseCode,ShiroUtils.getWarehouseCode())
79 80 .eq(StringUtils.isNotEmpty(location.getCode()), Location::getCode, location.getCode())
80 81 .eq(StringUtils.isNotEmpty(location.getName()), Location::getName,location.getName())
81 82 .eq(StringUtils.isNotEmpty(location.getContainerCode()), Location::getContainerCode, location.getContainerCode())
... ...
src/main/java/com/huaheng/pc/config/location/mapper/LocationMapper.java
... ... @@ -7,6 +7,8 @@ import org.apache.ibatis.annotations.Param;
7 7 import java.util.LinkedHashMap;
8 8 import java.util.List;
9 9  
  10 +import java.util.List;
  11 +
10 12 public interface LocationMapper extends BaseMapper<Location> {
11 13  
12 14 void updateStatus(@Param("warehouseCode") String warehouseCode, @Param("code") String code, @Param("status") String status);
... ... @@ -15,8 +17,11 @@ public interface LocationMapper extends BaseMapper&lt;Location&gt; {
15 17  
16 18 Location position(String locatingRule);
17 19  
  20 + int addList(@Param("locations") List<Location> locations);
  21 +
18 22 Location getAllLocation(@Param("warehouseCode") String warehouseCode, @Param("type") String type);
19 23  
20 24 //库位利用率
21 25 List<LinkedHashMap<String, Object>> getLocationProp();
  26 +
22 27 }
23 28 \ No newline at end of file
... ...
src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java
... ... @@ -142,7 +142,21 @@ public class LocationServiceImpl extends ServiceImpl&lt;LocationMapper, Location&gt; i
142 142 }
143 143 }
144 144 }
145   - return locationService.saveBatch(locations);
  145 + int num =0;
  146 + List<Location> locations1 = new ArrayList<>();
  147 + if(locations.size() >1000 ){
  148 + for(Location item : locations){
  149 + num++;
  150 + locations1.add(item);
  151 + if(num % 1000 ==0 || num == locations.size()){
  152 + locationMapper.addList(locations1);
  153 + locations1=new ArrayList<>();
  154 + }
  155 + }
  156 + }else {
  157 + locationMapper.addList(locations);
  158 + }
  159 + return true;
146 160 }
147 161  
148 162 @Override
... ...
src/main/java/com/huaheng/pc/config/locationType/domain/LocationType.java
... ... @@ -39,19 +39,19 @@ public class LocationType implements Serializable {
39 39 * 长
40 40 */
41 41 @TableField(value = "length")
42   - private Integer length;
  42 + private String length;
43 43  
44 44 /**
45 45 * 宽
46 46 */
47 47 @TableField(value = "width")
48   - private Integer width;
  48 + private String width;
49 49  
50 50 /**
51 51 * 高
52 52 */
53 53 @TableField(value = "height")
54   - private Integer height;
  54 + private String height;
55 55  
56 56 /**
57 57 * 最大重量
... ...
src/main/java/com/huaheng/pc/config/locationType/service/LocationTypeServiceImpl.java
... ... @@ -8,6 +8,7 @@ import com.huaheng.pc.config.cycleCountPreference.domain.CycleCountPreference;
8 8 import com.huaheng.pc.config.locationType.domain.LocationType;
9 9 import com.huaheng.pc.config.locationType.mapper.LocationTypeMapper;
10 10 import org.springframework.stereotype.Service;
  11 +import org.springframework.transaction.annotation.Transactional;
11 12  
12 13 import java.util.List;
13 14 import java.util.Map;
... ... @@ -31,6 +32,7 @@ public class LocationTypeServiceImpl extends ServiceImpl&lt;LocationTypeMapper, Loc
31 32 * @return 是否复制成功
32 33 */
33 34 @Override
  35 + @Transactional
34 36 public boolean locationTypeCopy(String warehouseCode, String newWarehouseCode) {
35 37 log.trace("开始复盘点首选项表");
36 38 LambdaQueryWrapper<LocationType> lambdaQueryWrapper = Wrappers.lambdaQuery();
... ...
src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java
... ... @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 4 import com.baomidou.mybatisplus.core.metadata.IPage;
5 5 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
6 6 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7 +import com.huaheng.common.exception.service.ServiceException;
  8 +import com.huaheng.common.support.Convert;
7 9 import com.huaheng.common.utils.StringUtils;
8 10 import com.huaheng.common.utils.poi.ExcelUtil;
9 11 import com.huaheng.common.utils.security.ShiroUtils;
... ... @@ -16,6 +18,8 @@ import com.huaheng.framework.web.page.TableDataInfo;
16 18 import com.huaheng.framework.web.page.TableSupport;
17 19 import com.huaheng.pc.config.material.domain.Material;
18 20 import com.huaheng.pc.config.material.service.MaterialService;
  21 +import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
  22 +import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
19 23 import io.swagger.annotations.Api;
20 24 import io.swagger.annotations.ApiOperation;
21 25 import io.swagger.annotations.ApiParam;
... ... @@ -37,6 +41,8 @@ public class MaterialController extends BaseController {
37 41  
38 42 @Resource
39 43 private MaterialService materialService;
  44 + @Resource
  45 + private InventoryDetailService inventoryDetailService;
40 46  
41 47 @RequiresPermissions("config:material:view")
42 48 @GetMapping()
... ... @@ -66,11 +72,10 @@ public class MaterialController extends BaseController {
66 72 lambda.gt(StringUtils.isNotEmpty(createdBegin), Material::getCreated, createdBegin)
67 73 .lt(StringUtils.isNotEmpty(createdEnd), Material::getCreated, createdEnd)
68 74 .eq(StringUtils.isNotEmpty(material.getCode()), Material::getCode, material.getCode())
69   - .eq(StringUtils.isNotEmpty(material.getName()), Material::getName, material.getName())
  75 + .like(StringUtils.isNotEmpty(material.getName()), Material::getName, material.getName())
70 76 .eq(StringUtils.isNotEmpty(material.getType()), Material::getType, material.getType())
71 77 .like(StringUtils.isNotEmpty(material.getSpec()), Material::getSpec, material.getSpec())
72 78 .eq(Material::getWarehouseCode, ShiroUtils.getWarehouseCode())
73   - .in(Material::getCompanyCode, ShiroUtils.getCompanyCodeList())
74 79 .eq(Material::getDeleted, false);
75 80  
76 81 if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
... ... @@ -139,6 +144,16 @@ public class MaterialController extends BaseController {
139 144 if (StringUtils.isEmpty(ids)){
140 145 return AjaxResult.error("id不能为空");
141 146 } else {
  147 + for(Integer id :Convert.toIntArray(ids)){
  148 + Material material = materialService.getById(id);
  149 + LambdaQueryWrapper<InventoryDetail> lamb = Wrappers.lambdaQuery();
  150 + lamb.eq(InventoryDetail::getWarehouseCode,ShiroUtils.getWarehouseCode())
  151 + .eq(InventoryDetail::getMaterialCode,material.getCode());
  152 + List<InventoryDetail> inventoryDetails = inventoryDetailService.list(lamb);
  153 + if(inventoryDetails != null || inventoryDetails.size() > 0){
  154 + throw new ServiceException("id为"+id+"的物料有库存");
  155 + }
  156 + }
142 157 return materialService.removeByIds(ids);
143 158 }
144 159 }
... ...