Commit 532cf712b26360e1db07ea7539762778b274a190

Authored by pengcheng
2 parents 3c7d6309 e0b03d18

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

Showing 50 changed files with 921 additions and 306 deletions
.idea/workspace.xml
... ... @@ -3,16 +3,14 @@
3 3 <component name="ChangeListManager">
4 4 <list default="true" id="baeae966-16bb-4f97-a411-22fe5a65cefd" name="Default Changelist" comment="">
5 5 <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/config/FilterConfigDetail/service/FilterConfigDetailService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/FilterConfigDetail/service/FilterConfigDetailService.java" afterDir="false" />
7   - <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java" afterDir="false" />
8   - <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/ReceiptHeaderController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/ReceiptHeaderController.java" afterDir="false" />
9   - <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiving/service/ReceivingService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiving/service/ReceivingService.java" afterDir="false" />
10   - <change beforePath="$PROJECT_DIR$/src/main/resources/templates/check/checkDetail/checkDetail.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/check/checkDetail/checkDetail.html" afterDir="false" />
11   - <change beforePath="$PROJECT_DIR$/src/main/resources/templates/receipt/receiptDetail/add.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/receipt/receiptDetail/add.html" afterDir="false" />
12   - <change beforePath="$PROJECT_DIR$/src/main/resources/templates/receipt/receiptDetail/receiptDetail.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/receipt/receiptDetail/receiptDetail.html" 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 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" />
14   - <change beforePath="$PROJECT_DIR$/src/main/resources/templates/receipt/receiptHeader/report.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/receipt/receiptHeader/report.html" afterDir="false" />
15   - <change beforePath="$PROJECT_DIR$/src/main/resources/templates/receipt/receiving/add.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/receipt/receiving/add.html" afterDir="false" />
16 14 </list>
17 15 <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
18 16 <option name="SHOW_DIALOG" value="false" />
... ... @@ -31,59 +29,7 @@
31 29 <option name="HIDDEN_KINDS">
32 30 <set />
33 31 </option>
34   - <expand>
35   - <path>
36   - <item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" />
37   - <item name="@172.16.29.45" type="feb32156:DbDataSourceImpl" />
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   - </path>
44   - <path>
45   - <item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" />
46   - <item name="@172.16.29.45" type="feb32156:DbDataSourceImpl" />
47   - <item name="schemas" type="d4e8921:DatabaseStructure$FamilyGroup" />
48   - <item name="wms_v2: schema" type="76f4a085:MysqlImplModel$Schema" />
49   - </path>
50   - <path>
51   - <item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" />
52   - <item name="@172.16.29.45" type="feb32156:DbDataSourceImpl" />
53   - <item name="schemas" type="d4e8921:DatabaseStructure$FamilyGroup" />
54   - <item name="wms_v2: schema" type="76f4a085:MysqlImplModel$Schema" />
55   - <item name="receipt_header: table" type="285a2a93:MysqlImplModel$Table" />
56   - </path>
57   - <path>
58   - <item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" />
59   - <item name="@localhost" type="feb32156:DbDataSourceImpl" />
60   - </path>
61   - <path>
62   - <item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" />
63   - <item name="@localhost" type="feb32156:DbDataSourceImpl" />
64   - <item name="schemas" type="d4e8921:DatabaseStructure$FamilyGroup" />
65   - </path>
66   - <path>
67   - <item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" />
68   - <item name="@localhost" type="feb32156:DbDataSourceImpl" />
69   - <item name="schemas" type="d4e8921:DatabaseStructure$FamilyGroup" />
70   - <item name="wms2.0: schema" type="76f4a085:MysqlImplModel$Schema" />
71   - </path>
72   - <path>
73   - <item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" />
74   - <item name="@localhost" type="feb32156:DbDataSourceImpl" />
75   - <item name="schemas" type="d4e8921:DatabaseStructure$FamilyGroup" />
76   - <item name="wms2.0: schema" type="76f4a085:MysqlImplModel$Schema" />
77   - <item name="check_detail: table" type="285a2a93:MysqlImplModel$Table" />
78   - </path>
79   - <path>
80   - <item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" />
81   - <item name="@localhost" type="feb32156:DbDataSourceImpl" />
82   - <item name="schemas" type="d4e8921:DatabaseStructure$FamilyGroup" />
83   - <item name="wms2.0: schema" type="76f4a085:MysqlImplModel$Schema" />
84   - <item name="check_header: table" type="285a2a93:MysqlImplModel$Table" />
85   - </path>
86   - </expand>
  32 + <expand />
87 33 <select />
88 34 </component>
89 35 <component name="FileTemplateManagerImpl">
... ... @@ -104,6 +50,7 @@
104 50 <OptionsSetting value="false" id="Update" />
105 51 </component>
106 52 <component name="PropertiesComponent">
  53 + <property name="ASKED_ADD_EXTERNAL_FILES" value="true" />
107 54 <property name="DefaultHtmlFileTemplate" value="HTML File" />
108 55 <property name="RequestMappingsPanelOrder0" value="0" />
109 56 <property name="RequestMappingsPanelOrder1" value="1" />
... ... @@ -112,17 +59,30 @@
112 59 <property name="WebServerToolWindowFactoryState" value="false" />
113 60 <property name="aspect.path.notification.shown" value="true" />
114 61 <property name="full.screen.before.presentation.mode" value="false" />
115   - <property name="last_opened_file_path" value="$PROJECT_DIR$/../WMSV1" />
  62 + <property name="last_opened_file_path" value="$PROJECT_DIR$/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable" />
116 63 <property name="node.js.detected.package.eslint" value="true" />
117 64 <property name="node.js.detected.package.tslint" value="true" />
118 65 <property name="node.js.path.for.package.eslint" value="project" />
119 66 <property name="node.js.path.for.package.tslint" value="project" />
120 67 <property name="node.js.selected.package.eslint" value="(autodetect)" />
121 68 <property name="node.js.selected.package.tslint" value="(autodetect)" />
  69 + <property name="project.structure.last.edited" value="Modules" />
  70 + <property name="project.structure.proportion" value="0.15429688" />
  71 + <property name="project.structure.side.proportion" value="0.2" />
122 72 <property name="run.code.analysis.last.selected.profile" value="pProject Default" />
123   - <property name="settings.editor.selected.configurable" value="reference.settingsdialog.IDE.editor.colors.Console Font" />
  73 + <property name="settings.editor.selected.configurable" value="preferences.pluginManager" />
  74 + </component>
  75 + <component name="RecentsManager">
  76 + <key name="CopyFile.RECENT_KEYS">
  77 + <recent name="E:\code\wms2\src\main\resources\static\ajax\libs\bootstrap-table\extensions\editable" />
  78 + </key>
124 79 </component>
125 80 <component name="RunDashboard">
  81 + <option name="configurationTypes">
  82 + <set>
  83 + <option value="SpringBootApplicationConfigurationType" />
  84 + </set>
  85 + </option>
126 86 <option name="ruleStates">
127 87 <list>
128 88 <RuleState>
... ... @@ -135,6 +95,19 @@
135 95 </option>
136 96 </component>
137 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" />
  100 + <module name="huaheng" />
  101 + <extension name="coverage">
  102 + <pattern>
  103 + <option name="PATTERN" value="com.huaheng.pc.receipt.receiptContainerHeader.service.*" />
  104 + <option name="ENABLED" value="true" />
  105 + </pattern>
  106 + </extension>
  107 + <method v="2">
  108 + <option name="Make" enabled="true" />
  109 + </method>
  110 + </configuration>
138 111 <configuration name="ServiceTest.sendSimpleMail" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
139 112 <module name="huaheng" />
140 113 <extension name="coverage">
... ... @@ -168,12 +141,14 @@
168 141 </method>
169 142 </configuration>
170 143 <list>
  144 + <item itemvalue="Application.ReceiptContainerHeaderServiceImpl" />
171 145 <item itemvalue="JUnit.ServiceTest.sendSimpleMail" />
172 146 <item itemvalue="Spring Boot.HuaHengApplication" />
173 147 </list>
174 148 <recent_temporary>
175 149 <list>
176 150 <item itemvalue="Spring Boot.HuaHengApplication" />
  151 + <item itemvalue="Application.ReceiptContainerHeaderServiceImpl" />
177 152 <item itemvalue="JUnit.ServiceTest.sendSimpleMail" />
178 153 </list>
179 154 </recent_temporary>
... ... @@ -181,11 +156,17 @@
181 156 <component name="ServiceViewManager">
182 157 <option name="allServicesViewState">
183 158 <serviceView>
  159 + <option name="contentProportion" value="0.1612554" />
184 160 <treeState>
185 161 <expand>
186 162 <path>
187 163 <item name="services root" type="e789fda9:ObjectUtils$Sentinel" />
188   - <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@20dd4d1b" type="7427dc5b:ServiceModel$ServiceGroupNode" />
  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" />
189 170 </path>
190 171 </expand>
191 172 <select />
... ... @@ -224,7 +205,73 @@
224 205 <workItem from="1568102802104" duration="132000" />
225 206 <workItem from="1568108585629" duration="2016000" />
226 207 <workItem from="1568162278389" duration="3299000" />
227   - <workItem from="1568170378983" duration="10947000" />
  208 + <workItem from="1568170378983" duration="18141000" />
  209 + <workItem from="1568249510258" duration="10225000" />
  210 + <workItem from="1568266250892" duration="1333000" />
  211 + <workItem from="1568269799447" duration="99000" />
  212 + <workItem from="1568270609232" duration="2008000" />
  213 + <workItem from="1568277784815" duration="3397000" />
  214 + <workItem from="1568595092050" duration="120000" />
  215 + <workItem from="1568595230891" duration="859000" />
  216 + <workItem from="1568597823149" duration="18415000" />
  217 + <workItem from="1568622349963" duration="1657000" />
  218 + <workItem from="1568625672966" duration="1471000" />
  219 + <workItem from="1568680155591" duration="361000" />
  220 + <workItem from="1568680712425" duration="2511000" />
  221 + <workItem from="1568684486098" duration="957000" />
  222 + <workItem from="1568685565340" duration="4430000" />
  223 + <workItem from="1568691952276" duration="8650000" />
  224 + <workItem from="1568707800753" duration="1137000" />
  225 + <workItem from="1568710796434" duration="1618000" />
  226 + <workItem from="1568766055582" duration="6000" />
  227 + <workItem from="1568768025248" duration="5346000" />
  228 + <workItem from="1568778175920" duration="2572000" />
  229 + <workItem from="1568787162277" duration="1740000" />
  230 + <workItem from="1568788907625" duration="7345000" />
  231 + <workItem from="1568853208604" duration="1177000" />
  232 + <workItem from="1568854399388" duration="3001000" />
  233 + <workItem from="1568861704814" duration="2380000" />
  234 + <workItem from="1568865359898" duration="108000" />
  235 + <workItem from="1568865651366" duration="623000" />
  236 + <workItem from="1568868902957" duration="3468000" />
  237 + <workItem from="1568875455023" duration="3979000" />
  238 + <workItem from="1568882661913" duration="1883000" />
  239 + <workItem from="1568887498559" duration="554000" />
  240 + <workItem from="1568940290765" duration="1255000" />
  241 + <workItem from="1568943643646" duration="634000" />
  242 + <workItem from="1568946720514" duration="599000" />
  243 + <workItem from="1568951675236" duration="5060000" />
  244 + <workItem from="1568963416874" duration="848000" />
  245 + <workItem from="1568964502775" duration="3587000" />
  246 + <workItem from="1568970279520" duration="8000" />
  247 + <workItem from="1569032862367" duration="1792000" />
  248 + <workItem from="1569037677538" duration="64000" />
  249 + <workItem from="1569134046393" duration="65000" />
  250 + <workItem from="1569198499251" duration="8680000" />
  251 + <workItem from="1569207254306" duration="18489000" />
  252 + <workItem from="1569285398457" duration="5908000" />
  253 + <workItem from="1569295518709" duration="463000" />
  254 + <workItem from="1569299856099" duration="4172000" />
  255 + <workItem from="1569312420091" duration="6208000" />
  256 + <workItem from="1569318779053" duration="35000" />
  257 + <workItem from="1569372049669" duration="4595000" />
  258 + <workItem from="1569390345693" duration="1418000" />
  259 + <workItem from="1569393808742" duration="10588000" />
  260 + <workItem from="1569411369199" duration="191000" />
  261 + <workItem from="1569457959376" duration="2373000" />
  262 + <workItem from="1569461866204" duration="777000" />
  263 + <workItem from="1569462694383" duration="6561000" />
  264 + <workItem from="1569477197991" duration="8695000" />
  265 + <workItem from="1569545011335" duration="12640000" />
  266 + <workItem from="1569565238961" duration="5096000" />
  267 + <workItem from="1569571884664" duration="2032000" />
  268 + <workItem from="1569577676760" duration="124000" />
  269 + <workItem from="1569717688488" duration="13568000" />
  270 + <workItem from="1569743740441" duration="1168000" />
  271 + <workItem from="1569745589865" duration="2739000" />
  272 + <workItem from="1569748443357" duration="438000" />
  273 + <workItem from="1569803438585" duration="13789000" />
  274 + <workItem from="1570581146682" duration="9295000" />
228 275 </task>
229 276 <task id="LOCAL-00001" summary="修改添加物料时使用物料类别生成物料编码">
230 277 <created>1567664306836</created>
... ... @@ -268,7 +315,203 @@
268 315 <option name="project" value="LOCAL" />
269 316 <updated>1568174134623</updated>
270 317 </task>
271   - <option name="localTasksCounter" value="7" />
  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>
  422 + </task>
  423 + <task id="LOCAL-00022" summary="修改物料管理中物料类型使用物料类别表,不在使用数据字典">
  424 + <created>1569395439782</created>
  425 + <option name="number" value="00022" />
  426 + <option name="presentableId" value="LOCAL-00022" />
  427 + <option name="project" value="LOCAL" />
  428 + <updated>1569395439782</updated>
  429 + </task>
  430 + <task id="LOCAL-00023" summary="修改波次主表、波次流程头表、波次流程明细页面">
  431 + <created>1569402291802</created>
  432 + <option name="number" value="00023" />
  433 + <option name="presentableId" value="LOCAL-00023" />
  434 + <option name="project" value="LOCAL" />
  435 + <updated>1569402291802</updated>
  436 + </task>
  437 + <task id="LOCAL-00024" summary="修改入库首选项修改添加模块为select">
  438 + <created>1569411473661</created>
  439 + <option name="number" value="00024" />
  440 + <option name="presentableId" value="LOCAL-00024" />
  441 + <option name="project" value="LOCAL" />
  442 + <updated>1569411473661</updated>
  443 + </task>
  444 + <task id="LOCAL-00025" summary="修改任务取消入库组盘状态不回滚,修改任务完成入库单状态不完成">
  445 + <created>1569477488017</created>
  446 + <option name="number" value="00025" />
  447 + <option name="presentableId" value="LOCAL-00025" />
  448 + <option name="project" value="LOCAL" />
  449 + <updated>1569477488017</updated>
  450 + </task>
  451 + <task id="LOCAL-00026" summary="添加自动生成容器编码">
  452 + <created>1569484931952</created>
  453 + <option name="number" value="00026" />
  454 + <option name="presentableId" value="LOCAL-00026" />
  455 + <option name="project" value="LOCAL" />
  456 + <updated>1569484931952</updated>
  457 + </task>
  458 + <task id="LOCAL-00027" summary="修改入库首选项页面,规则查询使用数据字典值,表格值显示修改">
  459 + <created>1569553028716</created>
  460 + <option name="number" value="00027" />
  461 + <option name="presentableId" value="LOCAL-00027" />
  462 + <option name="project" value="LOCAL" />
  463 + <updated>1569553028716</updated>
  464 + </task>
  465 + <task id="LOCAL-00028" summary="入库单添加重置按钮,入库单历史添加上游单号搜索">
  466 + <created>1569554438854</created>
  467 + <option name="number" value="00028" />
  468 + <option name="presentableId" value="LOCAL-00028" />
  469 + <option name="project" value="LOCAL" />
  470 + <updated>1569554438854</updated>
  471 + </task>
  472 + <task id="LOCAL-00029" summary="添加取消入库组盘时容器为临时容器,删除容器">
  473 + <created>1569567112288</created>
  474 + <option name="number" value="00029" />
  475 + <option name="presentableId" value="LOCAL-00029" />
  476 + <option name="project" value="LOCAL" />
  477 + <updated>1569567112288</updated>
  478 + </task>
  479 + <task id="LOCAL-00030" summary="出库完成时删除临时容器">
  480 + <created>1569568426923</created>
  481 + <option name="number" value="00030" />
  482 + <option name="presentableId" value="LOCAL-00030" />
  483 + <option name="project" value="LOCAL" />
  484 + <updated>1569568426923</updated>
  485 + </task>
  486 + <task id="LOCAL-00031" summary="修改容器新增时容器enable状态">
  487 + <created>1569577849038</created>
  488 + <option name="number" value="00031" />
  489 + <option name="presentableId" value="LOCAL-00031" />
  490 + <option name="project" value="LOCAL" />
  491 + <updated>1569577849039</updated>
  492 + </task>
  493 + <task id="LOCAL-00032" summary="修改入库组盘页面中任务类型的显示问题&#10;修改任务完成不修改入库组盘状态的问题">
  494 + <created>1569740895495</created>
  495 + <option name="number" value="00032" />
  496 + <option name="presentableId" value="LOCAL-00032" />
  497 + <option name="project" value="LOCAL" />
  498 + <updated>1569740895496</updated>
  499 + </task>
  500 + <task id="LOCAL-00033" summary="添加根据code查询物料">
  501 + <created>1569743042718</created>
  502 + <option name="number" value="00033" />
  503 + <option name="presentableId" value="LOCAL-00033" />
  504 + <option name="project" value="LOCAL" />
  505 + <updated>1569743042718</updated>
  506 + </task>
  507 + <task id="LOCAL-00034" summary="添加根据容器编码查找容器的方法&#10;配置规则添加自动添加模块类型&#10;添加是否自动生成临时容器">
  508 + <created>1570582333467</created>
  509 + <option name="number" value="00034" />
  510 + <option name="presentableId" value="LOCAL-00034" />
  511 + <option name="project" value="LOCAL" />
  512 + <updated>1570582333467</updated>
  513 + </task>
  514 + <option name="localTasksCounter" value="35" />
272 515 <servers />
273 516 </component>
274 517 <component name="TypeScriptGeneratedFilesManager">
... ... @@ -288,41 +531,98 @@
288 531 </option>
289 532 </component>
290 533 <component name="VcsManagerConfiguration">
291   - <MESSAGE value="修改添加物料时使用物料类别生成物料编码" />
292   - <MESSAGE value="修改质检页面、添加完成质检" />
293   - <MESSAGE value="修复入库质检请求地址冲突" />
294   - <MESSAGE value="添加入库单打印" />
295   - <option name="LAST_COMMIT_MESSAGE" value="添加入库单打印" />
  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;添加是否自动生成临时容器" />
296 561 </component>
297 562 <component name="XDebuggerManager">
298 563 <breakpoint-manager>
299 564 <breakpoints>
300 565 <line-breakpoint enabled="true" type="java-line">
301   - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkDetail/controller/CheckDetailController.java</url>
302   - <line>152</line>
303   - <option name="timeStamp" value="6" />
  566 + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/bom/controller/BomHeaderController.java</url>
  567 + <line>164</line>
  568 + <option name="timeStamp" value="24" />
  569 + </line-breakpoint>
  570 + <line-breakpoint enabled="true" type="java-line">
  571 + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java</url>
  572 + <line>150</line>
  573 + <option name="timeStamp" value="26" />
  574 + </line-breakpoint>
  575 + <line-breakpoint enabled="true" type="java-line">
  576 + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkingRegister/controller/CheckingRegisterController.java</url>
  577 + <line>174</line>
  578 + <option name="timeStamp" value="28" />
304 579 </line-breakpoint>
305 580 <line-breakpoint enabled="true" type="java-line">
306   - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkDetail/controller/CheckDetailController.java</url>
307   - <line>154</line>
308   - <option name="timeStamp" value="8" />
  581 + <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" />
309 584 </line-breakpoint>
310 585 <line-breakpoint enabled="true" type="java-line">
311   - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkDetail/service/CheckDetailService.java</url>
312   - <line>45</line>
313   - <option name="timeStamp" value="9" />
  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" />
314 589 </line-breakpoint>
315 590 <line-breakpoint enabled="true" type="java-line">
316   - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptHeader/service/ReceiptHeaderService.java</url>
317   - <line>144</line>
318   - <option name="timeStamp" value="10" />
  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" />
319 594 </line-breakpoint>
320 595 <line-breakpoint enabled="true" type="java-line">
321   - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/ReceiptHeaderController.java</url>
322   - <line>240</line>
323   - <option name="timeStamp" value="11" />
  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" />
  599 + </line-breakpoint>
  600 + <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" />
  604 + </line-breakpoint>
  605 + <line-breakpoint enabled="true" type="javascript">
  606 + <url>file://$PROJECT_DIR$/src/main/resources/templates/check/checkingRegister/checkingRegister.html</url>
  607 + <line>308</line>
  608 + <option name="timeStamp" value="29" />
  609 + </line-breakpoint>
  610 + <line-breakpoint enabled="true" type="javascript">
  611 + <url>file://$PROJECT_DIR$/src/main/resources/templates/config/waveFlowHeader/waveFlowHeader.html</url>
  612 + <line>71</line>
  613 + <option name="timeStamp" value="43" />
324 614 </line-breakpoint>
325 615 </breakpoints>
326 616 </breakpoint-manager>
  617 + <watches-manager>
  618 + <configuration name="SpringBootApplicationConfigurationType">
  619 + <watch expression="receiptDetailService.getById(receiptContainerDetail.getReceiptDetailId()).getLocatingRule()" language="JAVA" />
  620 + </configuration>
  621 + </watches-manager>
  622 + </component>
  623 + <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">
  625 + <FILTER>com.huaheng.*</FILTER>
  626 + </SUITE>
327 627 </component>
328 628 </project>
329 629 \ No newline at end of file
... ...
src/main/java/com/huaheng/pc/check/checkingRegister/controller/CheckingRegisterController.java
... ... @@ -84,7 +84,9 @@ public class CheckingRegisterController extends BaseController {
84 84 PageDomain pageDomain = TableSupport.buildPageRequest();
85 85 Integer pageNum = pageNumber;
86 86 Integer pageSize = pageDomain.getPageSize();
87   - boolean isDetailNull;
  87 + boolean isDetailNull; //质检明细是否存在标识
  88 +
  89 + //判断质检单明细标号是否存在,不存在显示所有质检报告
88 90 if (StringUtils.isNotNull(checkingRegister.getCheckDetailId())){
89 91 isDetailNull = true;
90 92 if (checkingRegister.getCheckDetailId() == 0){
... ...
src/main/java/com/huaheng/pc/check/checkingRegister/service/CheckingRegisterService.java
... ... @@ -64,7 +64,7 @@ public class CheckingRegisterService extends ServiceImpl&lt;CheckingRegisterMapper,
64 64 */
65 65 public List<CheckingRegister> emptyList(Integer checkDetailId){
66 66 List<CheckingRegister> list = new ArrayList<>();
67   - List<DictData> dictDataList = dictDataService.selectDictDataByType("inventoryStatus");
  67 + List<DictData> dictDataList = dictDataService.selectDictDataByType("inventorySts");
68 68 CheckDetail checkDetail = checkDetailService.getById(checkDetailId);
69 69 for (DictData dictData: dictDataList){
70 70 CheckingRegister checkingRegister1 = new CheckingRegister();
... ...
src/main/java/com/huaheng/pc/config/FilterConfigHeader/controller/FilterConfigHeaderController.java
... ... @@ -98,8 +98,9 @@ public class FilterConfigHeaderController extends BaseController {
98 98 /**
99 99 * 新增规则配置主表
100 100 */
101   - @GetMapping("/add")
102   - public String add() {
  101 + @GetMapping("/add/{type}")
  102 + public String add(@PathVariable("type")String type, ModelMap modelMap) {
  103 + modelMap.put("moduleType", type);
103 104 return prefix + "/add";
104 105 }
105 106  
... ...
src/main/java/com/huaheng/pc/config/container/mapper/ContainerMapper.java
... ... @@ -14,6 +14,7 @@ public interface ContainerMapper extends BaseMapper&lt;Container&gt; {
14 14  
15 15 void updateLocationCodeAndStatus(@Param("warehouseCode") String warehouseCode, @Param("containerCode") String containerCode, @Param("locationCode") String locationCode, @Param("status") String status);
16 16  
  17 + Container findAllByCode(@Param("code") String code);
17 18  
18 19  
19 20 }
20 21 \ No newline at end of file
... ...
src/main/java/com/huaheng/pc/config/container/service/ContainerService.java
... ... @@ -20,4 +20,6 @@ public interface ContainerService extends IService&lt;Container&gt;{
20 20 void removeContainer(String containType, String containCode);
21 21  
22 22 void removeByCode(String containCode);
  23 +
  24 + Container findAllByCode(String containCode);
23 25 }
... ...
src/main/java/com/huaheng/pc/config/container/service/ContainerServiceImpl.java
... ... @@ -162,4 +162,9 @@ public class ContainerServiceImpl extends ServiceImpl&lt;ContainerMapper, Container
162 162 }
163 163  
164 164 }
  165 +
  166 + @Override
  167 + public Container findAllByCode(String code) {
  168 + return containerMapper.findAllByCode(code);
  169 + }
165 170 }
... ...
src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java
... ... @@ -156,7 +156,6 @@ public class MaterialController extends BaseController {
156 156  
157 157 /**
158 158 * 导出模板
159   - * @param file
160 159 * @return
161 160 * @throws Exception
162 161 */
... ...
src/main/java/com/huaheng/pc/config/statusFlow/controller/StatusFlowDetailController.java
... ... @@ -96,6 +96,7 @@ public class StatusFlowDetailController extends BaseController {
96 96 StatusFlowHeader statusFlowHeader = statusFlowHeaderService.getById(headerId);
97 97 mmap.put("headerId",headerId);
98 98 mmap.put("headerCode", statusFlowHeader.getCode());
  99 + mmap.put("moduleType", statusFlowHeader.getModuleType());
99 100 return prefix + "/add";
100 101 }
101 102  
... ...
src/main/java/com/huaheng/pc/config/statusFlow/controller/StatusFlowHeaderController.java
... ... @@ -82,8 +82,9 @@ public class StatusFlowHeaderController extends BaseController {
82 82 /**
83 83 * 新增流程
84 84 */
85   - @GetMapping("/add")
86   - public String add() {
  85 + @GetMapping("/add/{type}")
  86 + public String add(@PathVariable("type") String type, ModelMap modelMap) {
  87 + modelMap.put("moduleType", type);
87 88 return prefix + "/add";
88 89 }
89 90  
... ...
src/main/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java
... ... @@ -38,8 +38,6 @@ public class adjustDetailController extends BaseController {
38 38  
39 39  
40 40 @Resource
41   - private AdjustHeaderService adjustHeaderService;
42   - @Resource
43 41 private AdjustHeaderMapper adjustHeaderMapper;
44 42 @Resource
45 43 private AdjustDetailService adjustDetailService;
... ... @@ -49,7 +47,7 @@ public class adjustDetailController extends BaseController {
49 47 private String prefix = "inventory/adjustDetail";
50 48  
51 49  
52   - //@RequiresPermissions("inventory:cycleCount:view")
  50 + @RequiresPermissions("inventory:adjustDetail:view")
53 51 @GetMapping()
54 52 public String adjustHeader()
55 53 {
... ... @@ -60,7 +58,7 @@ public class adjustDetailController extends BaseController {
60 58 /**
61 59 * 查询调整单主列表
62 60 */
63   - //@RequiresPermissions("inventory:cycleCount:list")
  61 + @RequiresPermissions("inventory:adjustDetail:list")
64 62 @PostMapping("/list")
65 63 @Log(title = "库存-调整",operating = "查看调整明细单", action = BusinessType.GRANT)
66 64 @ResponseBody
... ... @@ -121,7 +119,7 @@ public class adjustDetailController extends BaseController {
121 119 /**
122 120 * 保存新增调整明细
123 121 */
124   - //@RequiresPermissions("inventory:cyclecountDetail:add")
  122 + @RequiresPermissions("inventory:adjustDetail:add")
125 123 @Log(title = "库存-盘点", operating = "新增盘点补货明细", action = BusinessType.INSERT)
126 124 @PostMapping("/addAdjust")
127 125 @ResponseBody
... ... @@ -150,7 +148,7 @@ public class adjustDetailController extends BaseController {
150 148 * 调整数量,调整库存状态
151 149 * 调整插入库存
152 150 */
153   - //@RequiresPermissions("inventory:cyclecountAdjustDetail:addAdjust")
  151 + @RequiresPermissions("inventory:adjustDetail:addAdjust")
154 152 @Log(title = "库存-调整单", operating = "调整单调整库存差异,调整数量", action = BusinessType.UPDATE)
155 153 @PostMapping("/adjustEdit")
156 154 @ResponseBody
... ... @@ -177,6 +175,7 @@ public class adjustDetailController extends BaseController {
177 175 * @param ids
178 176 * @return
179 177 */
  178 + @RequiresPermissions("inventory:adjustDetail:adjustAgree")
180 179 @Log(title = "库存-调整单", operating = "调整审批", action = BusinessType.OTHER)
181 180 @PostMapping("/adjustAgree")
182 181 @ResponseBody
... ... @@ -199,7 +198,7 @@ public class adjustDetailController extends BaseController {
199 198 /**
200 199 * 删除调整单明细
201 200 */
202   - //@RequiresPermissions("inventory:cyclecountDetail:remove")
  201 + @RequiresPermissions("inventory:adjustDetail:remove")
203 202 @Log(title = "库存-调整", operating = "删除调整单明细", action = BusinessType.DELETE)
204 203 @PostMapping( "/remove")
205 204 @ResponseBody
... ... @@ -212,7 +211,6 @@ public class adjustDetailController extends BaseController {
212 211 return AjaxResult.error("单据状态不允许删除");
213 212 }
214 213 adjustDetailService.removeById(id);
215   -
216 214 return AjaxResult.success("删除成功!");
217 215 }
218 216  
... ...
src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailServiceImpl.java
... ... @@ -157,7 +157,7 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj
157 157 AjaxResult.error("该单据已调整,不允许再次调整!" );
158 158 }
159 159 //查询调整的库存明细
160   - InventoryDetail inventoryDetail = new InventoryDetail();
  160 + InventoryDetail inventoryDetail ;
161 161 //调整单中不带库存明细时不查询
162 162 if(adjustDetail.getInventoryDetailId() != null) {
163 163 inventoryDetail = inventoryDetailService.getById(adjustDetail.getInventoryDetailId());
... ...
src/main/java/com/huaheng/pc/inventory/adjustHeader/controller/adjustHeaderController.java
... ... @@ -44,7 +44,7 @@ public class adjustHeaderController extends BaseController {
44 44 private String prefix = "inventory/adjustHeader";
45 45  
46 46  
47   - //@RequiresPermissions("inventory:cycleCount:view")
  47 + @RequiresPermissions("inventory:adjustHeader:view")
48 48 @GetMapping()
49 49 public String adjustHeader()
50 50 {
... ... @@ -55,7 +55,7 @@ public class adjustHeaderController extends BaseController {
55 55 /**
56 56 * 查询调整单主列表
57 57 */
58   - //@RequiresPermissions("inventory:cycleCount:list")
  58 + @RequiresPermissions("inventory:adjustHeader:list")
59 59 @PostMapping("/list")
60 60 @Log(title = "库存-调整",operating = "查看调整主单", action = BusinessType.GRANT)
61 61 @ResponseBody
... ... @@ -101,7 +101,7 @@ public class adjustHeaderController extends BaseController {
101 101 /**
102 102 * 新增保存调整单主
103 103 */
104   - //@RequiresPermissions("inventory:cycleCount:add")
  104 + @RequiresPermissions("inventory:adjustHeader:add")
105 105 @Log(title = "库存-调整",operating = "新增调整主单", action = BusinessType.INSERT)
106 106 @PostMapping("/addsave")
107 107 @ResponseBody
... ... @@ -114,7 +114,7 @@ public class adjustHeaderController extends BaseController {
114 114 /**
115 115 * 删除调整单主
116 116 */
117   - //@RequiresPermissions("inventory:cycleCount:remove")
  117 + @RequiresPermissions("inventory:adjustHeader:remove")
118 118 @Log(title = "库存-调整",operating = "删除调整主单", action = BusinessType.DELETE)
119 119 @PostMapping( "/remove")
120 120 @ResponseBody
... ... @@ -124,7 +124,7 @@ public class adjustHeaderController extends BaseController {
124 124 return AjaxResult.error("id不能为空");
125 125 for (Integer id : Convert.toIntArray(ids))
126 126 {
127   - AjaxResult result = adjustHeaderService.delete(id);
  127 + AjaxResult result = adjustHeaderService.deleteHeader(id);
128 128 if(result.code!=200){
129 129 return result;
130 130 }
... ... @@ -136,7 +136,7 @@ public class adjustHeaderController extends BaseController {
136 136 * 调整单打印
137 137 * @return
138 138 */
139   - //@RequiresPermissions("inventory:cyclecountAdjust:report")
  139 + @RequiresPermissions("inventory:adjustHeader:report")
140 140 @GetMapping("/report/{id}")
141 141 public String report(@PathVariable("id") Integer id, ModelMap mmap)
142 142 {
... ...
src/main/java/com/huaheng/pc/inventory/adjustHeader/service/AdjustHeaderService.java
... ... @@ -11,7 +11,7 @@ public interface AdjustHeaderService extends IService&lt;AdjustHeader&gt; {
11 11  
12 12 String createCode();
13 13  
14   - AjaxResult delete(Integer id);
  14 + AjaxResult deleteHeader(Integer id);
15 15  
16 16 AjaxResult addSave(AdjustHeader adjustHeader);
17 17  
... ...
src/main/java/com/huaheng/pc/inventory/adjustHeader/service/AdjustHeaderServiceImpl.java
1 1 package com.huaheng.pc.inventory.adjustHeader.service;
2 2  
  3 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
3 5 import com.huaheng.common.utils.StringUtils;
4 6 import com.huaheng.common.utils.security.ShiroUtils;
5 7 import com.huaheng.framework.web.domain.AjaxResult;
  8 +import com.huaheng.pc.config.warehouse.domain.Warehouse;
6 9 import com.huaheng.pc.inventory.adjustDetail.domain.AdjustDetail;
  10 +import com.huaheng.pc.inventory.adjustDetail.service.AdjustDetailService;
7 11 import org.springframework.stereotype.Service;
8 12 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
9 13 import com.huaheng.pc.inventory.adjustHeader.domain.AdjustHeader;
... ... @@ -13,6 +17,7 @@ import org.springframework.transaction.annotation.Transactional;
13 17 import javax.annotation.Resource;
14 18 import java.text.SimpleDateFormat;
15 19 import java.util.Date;
  20 +import java.util.List;
16 21  
17 22 @Service
18 23 public class AdjustHeaderServiceImpl extends ServiceImpl<AdjustHeaderMapper, AdjustHeader> implements AdjustHeaderService {
... ... @@ -20,7 +25,8 @@ public class AdjustHeaderServiceImpl extends ServiceImpl&lt;AdjustHeaderMapper, Adj
20 25  
21 26 @Resource
22 27 private AdjustHeaderMapper adjustHeaderMapper;
23   -
  28 + @Resource
  29 + private AdjustDetailService adjustDetailService;
24 30  
25 31  
26 32  
... ... @@ -48,22 +54,29 @@ public class AdjustHeaderServiceImpl extends ServiceImpl&lt;AdjustHeaderMapper, Adj
48 54 }
49 55  
50 56 /**
51   - * 删除
52   - * 空缺
  57 + * 调整主单删除
53 58 * @param id
54 59 * @return
55 60 */
  61 + @Transactional
56 62 @Override
57   - public AjaxResult delete(Integer id) {
  63 + public AjaxResult deleteHeader(Integer id) {
58 64 AdjustHeader adjustHeader = this.getById(id);
59 65 if(adjustHeader == null){
60 66 return AjaxResult.error("id为"+id.toString()+"的调整单不存在出,操作中止");
61 67 }
62   -
63   - //批量删除子单据
  68 + //判断该主单下有没又存在子单,没有直接删除主单,有则不能删除
64 69 AdjustDetail temp = new AdjustDetail();
65 70 temp.setAdjustCode(adjustHeader.getCode());
  71 + temp.setCompanyCode(adjustHeader.getCompanyCode());
  72 + temp.setWarehouseCode(adjustHeader.getWarehouseCode());
  73 + LambdaQueryWrapper<AdjustDetail> lambdaQueryWrapper = Wrappers.lambdaQuery(temp);
  74 + List<AdjustDetail> adjustDetails = adjustDetailService.list(lambdaQueryWrapper);
  75 + if(adjustDetails.size() > 0){
  76 + throw new SecurityException("该主单存在明细,无法删除,操作失败!");
  77 + }
66 78  
  79 + adjustHeaderMapper.deleteById(id); //直接删主单
67 80 return AjaxResult.success("删除成功");
68 81 }
69 82  
... ...
src/main/java/com/huaheng/pc/inventory/cycleCountDetail/controller/CycleCountDetailController.java
... ... @@ -58,9 +58,10 @@ public class CycleCountDetailController extends BaseController {
58 58  
59 59  
60 60  
61   -
62 61 private String prefix = "inventory/cycleCountDetail";
63 62  
  63 +
  64 + @RequiresPermissions("inventory:cyclecountDetail:view")
64 65 @GetMapping()
65 66 public String cyclecountHeader()
66 67 {
... ... @@ -70,7 +71,7 @@ public class CycleCountDetailController extends BaseController {
70 71 /**
71 72 * 查询盘点单主列表
72 73 */
73   - //@RequiresPermissions("inventory:cycleCount:list")
  74 + @RequiresPermissions("inventory:cycleCountDetail:list")
74 75 @PostMapping("/list")
75 76 @Log(title = "库存-盘点",operating = "查看盘点明细", action = BusinessType.GRANT)
76 77 @ResponseBody
... ... @@ -143,19 +144,22 @@ public class CycleCountDetailController extends BaseController {
143 144 /**
144 145 * 新增保存盘点明细
145 146 */
146   - //@RequiresPermissions("inventory:cyclecountDetail:add")
  147 + @RequiresPermissions("inventory:cyclecountDetail:add")
147 148 @Log(title = "库存-盘点", operating = "新增盘点补货明细", action = BusinessType.INSERT)
148 149 @PostMapping("/add")
149 150 @ResponseBody
150   - public AjaxResult addSave(String cycleCountHeadCode, Integer[] inventoryDetailIdIds)
  151 + public AjaxResult addSave(String cycleCountHeadCode, Integer[] inventoryDetailIds)
151 152 {
152   - return cycleCountDetailService.addDetails(cycleCountHeadCode,inventoryDetailIdIds);
  153 + if(inventoryDetailIds == null){
  154 + return AjaxResult.error("盘点的库存ID不能为空!");
  155 + }
  156 + return cycleCountDetailService.addDetails(cycleCountHeadCode,inventoryDetailIds);
153 157 }
154 158  
155 159 /**
156 160 * 删除盘点明细
157 161 */
158   - //@RequiresPermissions("inventory:cyclecountDetail:remove")
  162 + @RequiresPermissions("inventory:cyclecountDetail:remove")
159 163 @Log(title = "库存-盘点", operating = "删除盘点明细", action = BusinessType.DELETE)
160 164 @PostMapping( "/remove")
161 165 @ResponseBody
... ... @@ -194,7 +198,7 @@ public class CycleCountDetailController extends BaseController {
194 198 }
195 199  
196 200 /**生成全部盘点任务*/
197   - //@RequiresPermissions("inventory:cyclecountDetail:createTask")
  201 + @RequiresPermissions("inventory:cyclecountDetail:createTask")
198 202 @PostMapping("/createCycleCountTaskByHeadId")
199 203 @ResponseBody
200 204 public AjaxResult createCycleCountTaskByHeadId(String cycleCountHeadCode){
... ... @@ -205,7 +209,7 @@ public class CycleCountDetailController extends BaseController {
205 209 }
206 210  
207 211 /**生成单条盘点任务*/
208   - //@RequiresPermissions("inventory:cyclecountDetail:createTask")
  212 + @RequiresPermissions("inventory:cyclecountDetail:createTask")
209 213 @PostMapping("/createCycleCoutTaskByDetailId")
210 214 @ResponseBody
211 215 public AjaxResult createCycleCoutTaskByDetailId(Integer cycleCoutdetailId){
... ... @@ -221,10 +225,11 @@ public class CycleCountDetailController extends BaseController {
221 225 * @param qty
222 226 * @return
223 227 */
224   - //@RequiresPermissions("inventory:cyclecountDetail:confirm")
  228 + @RequiresPermissions("inventory:cyclecountDetail:confirm")
225 229 @PostMapping("/confirmGapQty")
226 230 @ResponseBody
227 231 public AjaxResult confirmGapQty(Integer detailId, BigDecimal qty){
  232 +
228 233 return cycleCountDetailService.confirmGapQty(detailId,qty);
229 234 }
230 235  
... ... @@ -233,11 +238,13 @@ public class CycleCountDetailController extends BaseController {
233 238 * @param cycleCountHeadCode
234 239 * @return
235 240 */
236   - //@RequiresPermissions("inventory:cyclecountDetail:cyclecountRepeat")
  241 + @RequiresPermissions("inventory:cyclecountDetail:cyclecountRepeat")
237 242 @PostMapping("/createCyclecountWithGapQty")
238 243 @ResponseBody
239 244 public AjaxResult createCyclecountWithGapQty(String cycleCountHeadCode){
240   -
  245 + if(StringUtils.isEmpty(cycleCountHeadCode)){
  246 + return AjaxResult.error("需要复盘的盘点单编码不能为空!");
  247 + }
241 248 return cycleCountDetailService.createCyclecountWithGapQty(cycleCountHeadCode);
242 249 }
243 250  
... ...
src/main/java/com/huaheng/pc/inventory/cycleCountDetail/service/CycleCountDetailServiceImpl.java
... ... @@ -48,10 +48,6 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
48 48  
49 49  
50 50  
51   -
52   -
53   -
54   -
55 51 /**
56 52 * 执行任务修改状态为10
57 53 * @param detailid
... ... @@ -131,7 +127,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
131 127 ccd.setCompanyCode(inventoryDetail.getCompanyCode());
132 128 ccd.setInventorySts(inventoryDetail.getInventorySts());
133 129 ccd.setCountId(inventoryDetail.getId());
134   - ccd.setEnableStatus(5);
  130 + //ccd.setEnableStatus(1);
135 131 ccd.setLocationCode(inventoryDetail.getLocationCode());
136 132 ccd.setContainerCode(inventoryDetail.getContainerCode());
137 133 ccd.setMaterialCode(inventoryDetail.getMaterialCode());
... ... @@ -226,10 +222,10 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
226 222 LambdaQueryWrapper<Location> lambdaQueryWrapper = Wrappers.lambdaQuery(temp);
227 223 Location loc = locationService.getOne(lambdaQueryWrapper);
228 224 if(!loc.getStatus().equals("empty")){
229   - return AjaxResult.error(cycleCountDetail.getLocationCode()+"状态非空闲,操作失败");
  225 + return AjaxResult.error(cycleCountDetail.getLocationCode()+"库位不在空闲状态,请先完成其他任务,操作失败!");
230 226 }
231 227 if(StringUtils.isEmpty(loc.getContainerCode())){
232   - return AjaxResult.error(cycleCountDetail.getLocationCode()+"没有托盘,操作失败");
  228 + return AjaxResult.error(cycleCountDetail.getLocationCode()+"库位中没有容器,操作失败!");
233 229 }
234 230  
235 231 //查询任务头和明细有相同容器,没有就新增任务头和明细
... ... @@ -363,9 +359,9 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
363 359 if (inventoryDetail == null) {
364 360 return AjaxResult.error("没有对应库存信息,请重建盘点单");
365 361 }
366   - if(qty.compareTo(inventoryDetail.getTaskQty()) < 0){
  362 + /*if(qty.compareTo(inventoryDetail.getTaskQty()) < 0){
367 363 return AjaxResult.error("登记数量不能小于任务分配数量");
368   - }
  364 + }*/
369 365 }
370 366 cyclecountDetail.setCountedQty(qty);
371 367 cyclecountDetail.setGapQty(qty.subtract(cyclecountDetail.getSystemQty()));
... ... @@ -390,7 +386,6 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
390 386 public AjaxResult createCyclecountWithGapQty(String cycleCountHeaderCode) {
391 387 /*找出实盘登记中数量有差异的,重新生成盘点单*/
392 388  
393   -
394 389 CycleCountHeader cycleCountHeader = new CycleCountHeader();
395 390 cycleCountHeader.setWarehouseCode(ShiroUtils.getWarehouseCode());
396 391 cycleCountHeader.setCode(cycleCountHeaderCode);
... ... @@ -409,22 +404,30 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
409 404 if(countHeader != null){
410 405 return AjaxResult.error("该单据已生成复盘单,请勿重复生成!");
411 406 }
  407 + //没有盘点明细或明细都没有差异时不生成复盘单
  408 +
412 409 CycleCountDetail cycleCountDetail = new CycleCountDetail();
413   - cycleCountDetail.setTaskHeaderId(cycleCountHeader.getId());
  410 + cycleCountDetail.setCycleCountHeadCode(cycleCountHeaderCode);
414 411 cycleCountDetail.setWarehouseCode(cycleCountHeader.getWarehouseCode());
415 412 cycleCountDetail.setCompanyCode(cycleCountHeader.getCompanyCode());
416   - LambdaQueryWrapper<CycleCountDetail> cycleCountDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
  413 + LambdaQueryWrapper<CycleCountDetail> cycleCountDetailLambdaQueryWrapper = Wrappers.lambdaQuery(cycleCountDetail);
417 414 List<CycleCountDetail> cycleCountDetails = this.list(cycleCountDetailLambdaQueryWrapper);//明细
418 415 if(cycleCountDetails.size() == 0){
419   - throw new SecurityException("没有明细!");
  416 + throw new SecurityException("没有盘点明细条目,操作失败!");
420 417 }
421 418 //生成复盘盘点主单
422   - cycleCountHeader.setCode(cycleCountHeaderService.createCode());
423   - cycleCountHeader.setRound(cycleCountHeader.getRound() + 1);//盘点轮次+1
424   - cycleCountHeader.setCreated(new Date());
425   - cycleCountHeader.setCreatedBy(ShiroUtils.getLoginName());
426   - cycleCountHeader.setSourceCode(cycleCountHeaderCode);//源盘点单号
427   - if(!cycleCountHeaderService.saveOrUpdate(cycleCountHeader)){
  419 + CycleCountHeader cycleCountHeader1 = new CycleCountHeader();
  420 + String cycleCountHeaderCode1 = cycleCountHeaderService.createCode();
  421 + cycleCountHeader1.setCode(cycleCountHeaderCode1);
  422 + cycleCountHeader1.setCompanyCode(cycleCountHeader.getCompanyCode());
  423 + cycleCountHeader1.setWarehouseCode(cycleCountHeader.getWarehouseCode());
  424 + cycleCountHeader1.setRound(cycleCountHeader.getRound() + 1);//盘点轮次+1
  425 + cycleCountHeader1.setCountType(cycleCountHeader.getCountType());
  426 + cycleCountHeader1.setCreated(new Date());
  427 + cycleCountHeader1.setCreatedBy(ShiroUtils.getLoginName());
  428 + cycleCountHeader1.setLastUpdatedBy(ShiroUtils.getLoginName());
  429 + cycleCountHeader1.setSourceCode(cycleCountHeaderCode);//源盘点单号
  430 + if(!cycleCountHeaderService.saveOrUpdate(cycleCountHeader1)){
428 431 throw new ServiceException("复盘主单生成失败!");
429 432 }
430 433 //获取差异数量不为零的子单重新再生成盘点单
... ... @@ -433,20 +436,23 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
433 436 //getGapQty不能为null默认值为0
434 437 int f = item.getGapQty().compareTo(BigDecimal.ZERO);
435 438 if(f > 0){
  439 + item.setCycleCountHeadCode(cycleCountHeaderCode1);
436 440 item.setCountedQty(null);
437 441 item.setGapQty(BigDecimal.ZERO);
  442 + item.setEnableStatus(1);
438 443 item.setCreatedBy(ShiroUtils.getLoginName());
439 444 item.setCreated(new Date());
440 445 cycleCountDetailList.add(item);
441 446 }
442   -
443 447 }
444 448 if(cycleCountDetailList.size() == 0){
445   - throw new SecurityException("该单据没有符合复盘条件的明细!");
  449 + throw new SecurityException("该单据没有符合复盘条件的明细!");
446 450 }
447   - if(!this.saveBatch(cycleCountDetailList)){
  451 + Boolean j = this.saveBatch(cycleCountDetailList);
  452 + if(j == false ){
448 453 throw new ServiceException("复盘明细子单生成失败");
449 454 }
  455 +
450 456 return AjaxResult.success("生成复盘单成功!");
451 457 }
452 458  
... ...
src/main/java/com/huaheng/pc/inventory/cycleCountHeader/controller/CycleCountHeaderController.java
... ... @@ -44,15 +44,12 @@ public class CycleCountHeaderController extends BaseController {
44 44 private CycleCountHeaderService cycleCountHeaderService;
45 45 @Resource
46 46 private CycleCountDetailService cycleCountDetailService;
47   - @Resource
48   - private AdjustHeaderService adjustHeaderService;
49   -
50 47  
51 48  
52 49 private String prefix = "inventory/cycleCountHeader";
53 50  
54 51  
55   - //@RequiresPermissions("inventory:cycleCount:view")
  52 + @RequiresPermissions("inventory:cycleCountHeader:view")
56 53 @GetMapping()
57 54 public String cyclecountHeader()
58 55 {
... ... @@ -62,7 +59,7 @@ public class CycleCountHeaderController extends BaseController {
62 59 /**
63 60 * 查询盘点单主列表
64 61 */
65   - //@RequiresPermissions("inventory:cycleCount:list")
  62 + @RequiresPermissions("inventory:cycleCountHeader:list")
66 63 @PostMapping("/list")
67 64 @Log(title = "库存-盘点",operating = "查看盘点主单", action = BusinessType.GRANT)
68 65 @ResponseBody
... ... @@ -95,6 +92,9 @@ public class CycleCountHeaderController extends BaseController {
95 92 }
96 93  
97 94 }
  95 +
  96 +
  97 +
98 98 /**
99 99 * 新增盘点单主
100 100 */
... ... @@ -107,7 +107,7 @@ public class CycleCountHeaderController extends BaseController {
107 107 /**
108 108 * 新增保存盘点单主
109 109 */
110   - //@RequiresPermissions("inventory:cycleCount:add")
  110 + @RequiresPermissions("inventory:cycleCountHeader:add")
111 111 @Log(title = "库存-盘点",operating = "新增盘点主单", action = BusinessType.INSERT)
112 112 @PostMapping("/add")
113 113 @ResponseBody
... ... @@ -137,7 +137,7 @@ public class CycleCountHeaderController extends BaseController {
137 137 /**
138 138 * 修改保存盘点单主
139 139 */
140   - //@RequiresPermissions("inventory:cycleCount:edit")
  140 + @RequiresPermissions("inventory:cycleCountHeader:edit")
141 141 @Log(title = "库存-盘点",operating = "修改盘点主单", action = BusinessType.UPDATE)
142 142 @PostMapping("/edit")
143 143 @ResponseBody
... ... @@ -151,7 +151,7 @@ public class CycleCountHeaderController extends BaseController {
151 151 /**
152 152 * 删除盘点单主
153 153 */
154   - //@RequiresPermissions("inventory:cycleCount:remove")
  154 + @RequiresPermissions("inventory:cycleCountHeader:remove")
155 155 @Log(title = "库存-盘点",operating = "删除盘点主单", action = BusinessType.DELETE)
156 156 @PostMapping( "/remove")
157 157 @ResponseBody
... ... @@ -173,7 +173,7 @@ public class CycleCountHeaderController extends BaseController {
173 173 *
174 174 * 生成调整单
175 175 * */
176   - //@RequiresPermissions("inventory:cyclecountHead:addAdjust")
  176 + @RequiresPermissions("inventory:cyclecountHead:addAdjust")
177 177 @Log(title = "库存-盘点", operating = "新增盘点差异调整单", action = BusinessType.INSERT)
178 178 @PostMapping("/goAdjust")
179 179 @ResponseBody
... ... @@ -187,7 +187,7 @@ public class CycleCountHeaderController extends BaseController {
187 187 * 盘点单报表打印
188 188 * @return
189 189 */
190   - //@RequiresPermissions("inventory:cycleCount:report")
  190 + @RequiresPermissions("inventory:cycleCountHeader:report")
191 191 @GetMapping("/report/{id}")
192 192 public String report(@PathVariable("id") Integer id, ModelMap mmap)
193 193 {
... ...
src/main/java/com/huaheng/pc/inventory/cycleCountHeader/service/CycleCountHeaderServiceImpl.java
... ... @@ -169,12 +169,10 @@ public class CycleCountHeaderServiceImpl extends ServiceImpl&lt;CycleCountHeaderMap
169 169  
170 170 //查询该条盘点单头 id
171 171 CycleCountHeader cyclecountHeader = cycleCountHeaderMapper.selectById(id);
172   -
173   - if(cyclecountHeader.getStatusCyc() >= 35){
  172 + if(cyclecountHeader.getStatusCyc() < 100){
174 173 //查询是否已生成差异单
175   - throw new ServiceException("该条盘点单无法生成调整单,请检查状态!");
  174 + throw new ServiceException("该条盘点单无法生成调整单,必须为盘点任务完成,请检查状态!");
176 175 }
177   -
178 176 AdjustHeader adjustHeader = new AdjustHeader();
179 177 adjustHeader.setWarehouseCode(ShiroUtils.getWarehouseCode());//仓库
180 178 adjustHeader.setCode(adjustHeaderService.createCode());//生成差异单号
... ... @@ -197,6 +195,7 @@ public class CycleCountHeaderServiceImpl extends ServiceImpl&lt;CycleCountHeaderMap
197 195 //AdjustHeader adjust = adjustHeaderService.getById(adjustHeader.getId());
198 196 //循环明细条目,查找符合条件的数据写入调整单明细
199 197 AdjustDetail adjustDetail = new AdjustDetail();
  198 + List<AdjustDetail> adjustDetails = new ArrayList<>();
200 199 for(CycleCountDetail item:cycleCountDetailList){
201 200 //BigDecimal的比较 .compareTo(BigDecimal.ZERO) != 0
202 201  
... ... @@ -224,14 +223,16 @@ public class CycleCountHeaderServiceImpl extends ServiceImpl&lt;CycleCountHeaderMap
224 223 adjustDetail.setCreated(new Date());
225 224 adjustDetail.setCreatedBy(ShiroUtils.getLoginName());
226 225 //adjustDetail.setStatus(0);//状态
227   -
228   - adjustDetailService.save(adjustDetail);
  226 + adjustDetails.add(adjustDetail);
  227 + //adjustDetailService.save(adjustDetail);
229 228 }
230   -
231 229 }
232   -
  230 + if(adjustDetails.size() == 0 ){
  231 + throw new SecurityException("该盘点单没有差异数据条目,无法生成调整单!");
  232 + }
  233 + adjustDetailService.saveBatch(adjustDetails);
233 234 //修改盘点主单状态为已生成差异单
234   - cyclecountHeader.setStatusCyc(35);
  235 + cyclecountHeader.setStatusCyc(101);
235 236 this.saveOrUpdate(cyclecountHeader);
236 237  
237 238 return AjaxResult.success("差异调整及明细单生成完毕!");
... ...
src/main/java/com/huaheng/pc/receipt/receiptContainerDetail/service/ReceiptContainerDetailServiceImpl.java
... ... @@ -59,6 +59,9 @@ public class ReceiptContainerDetailServiceImpl extends ServiceImpl&lt;ReceiptContai
59 59 ReceiptDetail receiptDetail = receiptDetailService.getById(receiptContainerDetail.getReceiptDetailId());
60 60 receiptDetail.setOpenQty(receiptDetail.getOpenQty().subtract(receiptContainerDetail.getQty()));
61 61  
  62 + //如果为临时容器,则删除
  63 + receiptContainerDetail.getContainerCode();
  64 +
62 65 if (!receiptDetailService.updateById(receiptDetail)){throw new SecurityException("回滚入库单明细失败");}
63 66 //删除组盘明细
64 67 if (!this.removeById(id)){ throw new ServiceException("回滚入库组盘失败");}
... ... @@ -70,12 +73,15 @@ public class ReceiptContainerDetailServiceImpl extends ServiceImpl&lt;ReceiptContai
70 73 throw new ServiceException("删除入库组盘头失败");
71 74 }
72 75 }
  76 +
73 77 //查询入库头表
74 78 LambdaQueryWrapper<ReceiptContainerDetail> containerDetailLambda = Wrappers.lambdaQuery();
75 79 containerDetailLambda.eq(ReceiptContainerDetail::getReceiptId, receiptContainerDetail.getReceiptId());
76 80 List<ReceiptContainerDetail> containerDetailList = this.list(containerDetailLambda);
  81 +
  82 +
77 83 //如果入库组盘没有该入库单的组盘信息,回滚入库单状态
78   - if (containerDetailList == null){
  84 + if (containerDetailList.size() == 0){
79 85 ReceiptHeader receiptHeader = new ReceiptHeader();
80 86 receiptHeader.setId(receiptContainerDetail.getReceiptId());
81 87 receiptHeader.setFirstStatus(200);
... ...
src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java
... ... @@ -72,6 +72,7 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl&lt;ReceiptContai
72 72 //检查容器编码合法性
73 73 Integer taskType = checkContainer(containerCode, detail.getMaterialCode());
74 74 if (taskType == 1){
  75 + //创建临时容器
75 76 containerCode = createContainer();
76 77 taskType = 100;
77 78 }else {
... ... @@ -97,6 +98,8 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl&lt;ReceiptContai
97 98 receiptContainerHeader.setWarehouseCode(ShiroUtils.getWarehouseCode());
98 99 receiptContainerHeader.setCompanyCode(receiptDetail.getCompanyCode());
99 100 receiptContainerHeader.setContainerCode(containerCode);
  101 + Container container = containerService.findAllByCode(containerCode);
  102 + receiptContainerHeader.setContainerType(container.getContainerType());
100 103 receiptContainerHeader.setTaskType(String.valueOf(taskType));
101 104 receiptContainerHeader.setProjectNo(receiptDetail.getProjectNo());
102 105 receiptContainerHeader.setToLocation(locationCode);
... ... @@ -128,6 +131,11 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl&lt;ReceiptContai
128 131 receiptContainerDetailAdd(receiptContainerHeaders.get(0).getId(), receiptDetail, qty, containerCode, locationCode);
129 132 //如果单据数量等于已收数量,更新入库详情状态和入库单状态
130 133 if (receiptDetail.getTotalQty() == receiptDetail.getOpenQty()){
  134 + receiptDetail.setProcessStamp("200");
  135 + if (!receiptDetailService.updateById(receiptDetail)){
  136 + throw new ServiceException("更新入库详情处理标记失败");
  137 + }
  138 +
131 139 ReceiptDetail receiptDetail1 = receiptDetailService.queryflow(receiptDetail);
132 140 if (!receiptDetailService.updateById(receiptDetail1)){
133 141 throw new ServiceException("更新入库详情下一流程失败");
... ... @@ -182,7 +190,9 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl&lt;ReceiptContai
182 190 }
183 191 }
184 192 //删除入库组盘头表
185   - this.removeById(id);
  193 + if (!this.removeById(id)){
  194 + throw new ServiceException("删除入库组盘头表失败");
  195 + }
186 196 } else {
187 197 throw new ServiceException("已生成任务不允许取消");
188 198 }
... ...
src/main/java/com/huaheng/pc/receipt/receiptDetail/domain/ReceiptDetail.java
... ... @@ -6,6 +6,8 @@ import io.swagger.annotations.ApiModelProperty;
6 6 import java.io.Serializable;
7 7 import java.math.BigDecimal;
8 8 import java.util.Date;
  9 +
  10 +import io.swagger.annotations.ApiParam;
9 11 import lombok.Data;
10 12  
11 13 @ApiModel(value = "com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail")
... ... @@ -341,4 +343,11 @@ public class ReceiptDetail implements Serializable {
341 343 @ApiModelProperty(value = "是否删除")
342 344 private Boolean deleted;
343 345  
  346 + /**
  347 + * 流程编码
  348 + */
  349 + @TableField(value = "statusFlowCode")
  350 + @ApiModelProperty(value = "流程编码")
  351 + private String statusFlowCode;
  352 +
344 353 }
345 354 \ No newline at end of file
... ...
src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java
... ... @@ -7,6 +7,10 @@ import com.huaheng.common.support.Convert;
7 7 import com.huaheng.common.utils.StringUtils;
8 8 import com.huaheng.common.utils.security.ShiroUtils;
9 9 import com.huaheng.framework.web.domain.AjaxResult;
  10 +import com.huaheng.pc.check.checkHeader.domain.CheckHeader;
  11 +import com.huaheng.pc.check.checkHeader.service.CheckHeaderService;
  12 +import com.huaheng.pc.config.configValue.domain.ConfigValue;
  13 +import com.huaheng.pc.config.configValue.service.ConfigValueService;
10 14 import com.huaheng.pc.config.material.domain.Material;
11 15 import com.huaheng.pc.config.material.service.MaterialService;
12 16 import com.huaheng.pc.config.materialType.domain.MaterialType;
... ... @@ -19,6 +23,7 @@ import com.huaheng.pc.config.statusFlow.domain.StatusFlowDetail;
19 23 import com.huaheng.pc.config.statusFlow.service.StatusFlowDetailService;
20 24 import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
21 25 import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
  26 +import com.huaheng.pc.system.config.domain.Config;
22 27 import com.huaheng.pc.system.dict.domain.DictData;
23 28 import com.huaheng.pc.system.dict.service.IDictDataService;
24 29 import org.aspectj.weaver.loadtime.Aj;
... ... @@ -48,6 +53,10 @@ public class ReceiptDetailServiceImpl extends ServiceImpl&lt;ReceiptDetailMapper, R
48 53 private ReceiptPreferenceService receiptPreferenceService;
49 54 @Resource
50 55 private IDictDataService dictDataService;
  56 + @Resource
  57 + private CheckHeaderService checkHeaderService;
  58 + @Resource
  59 + private ConfigValueService configValueService;
51 60  
52 61 /**
53 62 * 新增入库明细
... ... @@ -163,6 +172,18 @@ public class ReceiptDetailServiceImpl extends ServiceImpl&lt;ReceiptDetailMapper, R
163 172 return receiptDetail;
164 173 }
165 174  
  175 + //如果入库明细绑定了入库流程则从入库明细中选择流程
  176 + if ( StringUtils.isNotEmpty(receiptDetail.getStatusFlowCode())){
  177 + List<StatusFlowDetail> statusFlowDetails = statusFlowDetailService.queryStatusFlowDetail(receiptDetail.getStatusFlowCode());
  178 + String status = nextStatusFlow(statusFlowDetails, receiptDetail.getProcessStamp());
  179 + //在状态到达时候是判断是否要质检
  180 + if ("200".equals(status) && inspection(receiptDetail)){
  181 + receiptDetail.setProcessStamp("180");
  182 + } else {
  183 + receiptDetail.setProcessStamp(status);
  184 + }
  185 + return receiptDetail;
  186 + }
166 187 //查询头表信息
167 188 LambdaQueryWrapper<ReceiptHeader> lambdaReceiptHeader = Wrappers.lambdaQuery();
168 189 lambdaReceiptHeader.eq(ReceiptHeader::getCode, receiptDetail.getReceiptCode());
... ... @@ -183,13 +204,23 @@ public class ReceiptDetailServiceImpl extends ServiceImpl&lt;ReceiptDetailMapper, R
183 204 //物料是否有入库流程
184 205 List<StatusFlowDetail> statusFlowDetails = statusFlowDetailService.queryStatusFlowDetail(receiptType.getReceiptFlow());
185 206 String status = nextStatusFlow(statusFlowDetails, receiptDetail.getProcessStamp());
186   - receiptDetail.setProcessStamp(status);
  207 + //在状态到达时候是判断是否要质检
  208 + if ("200".equals(status) && inspection(receiptDetail)){
  209 + receiptDetail.setProcessStamp("180");
  210 + } else {
  211 + receiptDetail.setProcessStamp(status);
  212 + }
187 213 return receiptDetail;
188 214 } else if (material.getReceivingFlow() != null){
189 215 //物料是否有入库流程
190 216 List<StatusFlowDetail> statusFlowDetails = statusFlowDetailService.queryStatusFlowDetail(material.getReceivingFlow());
191 217 String status = nextStatusFlow(statusFlowDetails, receiptDetail.getProcessStamp());
192   - receiptDetail.setProcessStamp(status);
  218 + //在状态到达时候是判断是否要质检
  219 + if ("200".equals(status) && inspection(receiptDetail)){
  220 + receiptDetail.setProcessStamp("180");
  221 + } else {
  222 + receiptDetail.setProcessStamp(status);
  223 + }
193 224 return receiptDetail;
194 225 } else {
195 226 //该物料类别是否有入库流程
... ... @@ -199,16 +230,31 @@ public class ReceiptDetailServiceImpl extends ServiceImpl&lt;ReceiptDetailMapper, R
199 230 if (materialType.getReceivingFlow() != null) {
200 231 List<StatusFlowDetail> statusFlowDetails = statusFlowDetailService.queryStatusFlowDetail(materialType.getReceivingFlow());
201 232 String status = nextStatusFlow(statusFlowDetails, receiptDetail.getProcessStamp());
202   - receiptDetail.setProcessStamp(status);
  233 + //在状态到达时候是判断是否要质检
  234 + if ("200".equals(status) && inspection(receiptDetail)){
  235 + receiptDetail.setProcessStamp("180");
  236 + } else {
  237 + receiptDetail.setProcessStamp(status);
  238 + }
203 239 return receiptDetail;
204 240 } else {
  241 + //查询系统参数配置中绑定的入库首选项A
  242 + LambdaQueryWrapper<ConfigValue> lambdaQueryWrapper = Wrappers.lambdaQuery();
  243 + lambdaQueryWrapper.eq(ConfigValue::getModuleType, "receipt");
  244 + ConfigValue configValue = configValueService.getOne(lambdaQueryWrapper);
  245 +
205 246 //以上都没有的情况下查询入库首选项中的入库流程
206 247 LambdaQueryWrapper<ReceiptPreference> lambda = Wrappers.lambdaQuery();
207   - lambda.last("Limit 1");
  248 + lambda.eq(ReceiptPreference::getCode, configValue.getValue());
208 249 ReceiptPreference receiptPreference = receiptPreferenceService.getOne(lambda);
209 250 List<StatusFlowDetail> statusFlowDetails = statusFlowDetailService.queryStatusFlowDetail(receiptPreference.getReceivingFlow());
210 251 String status = nextStatusFlow(statusFlowDetails, receiptDetail.getProcessStamp());
211   - receiptDetail.setProcessStamp(status);
  252 + //在状态到达时候是判断是否要质检
  253 + if ("200".equals(status) && inspection(receiptDetail)){
  254 + receiptDetail.setProcessStamp("180");
  255 + } else {
  256 + receiptDetail.setProcessStamp(status);
  257 + }
212 258 return receiptDetail;
213 259 }
214 260 }
... ... @@ -308,4 +354,20 @@ public class ReceiptDetailServiceImpl extends ServiceImpl&lt;ReceiptDetailMapper, R
308 354 }
309 355 return AjaxResult.success("审核完成");
310 356 }
  357 +
  358 + /**
  359 + * 判断明细中是否质检
  360 + */
  361 + public boolean inspection(ReceiptDetail receiptDetail){
  362 + //如果明细中需要质检,则判断是否已经生成质检单
  363 + if ("0".equals(receiptDetail.getQcCheck())){
  364 + LambdaQueryWrapper<CheckHeader> lambda = Wrappers.lambdaQuery();
  365 + lambda.eq(CheckHeader::getReferCode, receiptDetail.getReceiptCode());
  366 + CheckHeader checkHeader = checkHeaderService.getOne(lambda);
  367 + if (checkHeader == null){
  368 + return true;
  369 + }
  370 + }
  371 + return false;
  372 + }
311 373 }
... ...
src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/ReceiptHeaderController.java
... ... @@ -137,7 +137,8 @@ public class ReceiptHeaderController extends BaseController {
137 137 @PostMapping("/edit")
138 138 @ResponseBody
139 139 public AjaxResult editSave(ReceiptHeader receiptHeader) {
140   - if (receiptHeader.getFirstStatus() >100 | receiptHeader.getLastStatus()>100){
  140 + ReceiptHeader receiptHeader1 = receiptHeaderService.getById(receiptHeader.getId());
  141 + if (receiptHeader1.getFirstStatus() >100 | receiptHeader1.getLastStatus()>100){
141 142 return AjaxResult.error("已进入订单池,不允许修改");
142 143 }
143 144 receiptHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
... ... @@ -160,7 +161,7 @@ public class ReceiptHeaderController extends BaseController {
160 161 * 审核入库单
161 162 */
162 163 @ApiOperation(value="审核入库单", notes="审核入库单", httpMethod = "POST")
163   - @RequiresPermissions("receipt:receiptHeader:approval")
  164 + @RequiresPermissions("receipt:receiptHeader:review")
164 165 @Log(title = "入库-入库单 ",operating = "审核入库单 ", action = BusinessType.UPDATE)
165 166 @PostMapping("/approval")
166 167 @ResponseBody
... ... @@ -223,7 +224,7 @@ public class ReceiptHeaderController extends BaseController {
223 224 */
224 225 @ApiOperation(value="保存入库预约", notes="保存入库预约", httpMethod = "POST")
225 226 @RequiresPermissions("receipt:receiptHeader:reservation")
226   - @Log(title = "入库-入库单 ",operating = "入库单到货", action = BusinessType.UPDATE)
  227 + @Log(title = "入库-入库单 ",operating = "入库单预约", action = BusinessType.UPDATE)
227 228 @PostMapping("/arrival")
228 229 @ResponseBody
229 230 public AjaxResult reservation(ReceiptHeader receiptHeader) {
... ... @@ -287,4 +288,34 @@ public class ReceiptHeaderController extends BaseController {
287 288 }
288 289 return AjaxResult.success(receiptHeaderService.getById(id));
289 290 }
  291 +
  292 + /**
  293 + * 到货通知
  294 + */
  295 + @ApiOperation(value="到货通知 ", notes="到货通知 ", httpMethod = "POST")
  296 + @RequiresPermissions("receipt:receiptDetail:add")
  297 + @Log(title = "入库-入库单 ",operating = "到货通知 ", action = BusinessType.OTHER)
  298 + @PostMapping("/arrivalNotice")
  299 + @ResponseBody
  300 + public AjaxResult arrivalNotice(String id) {
  301 + if (StringUtils.isEmpty(id)){
  302 + return AjaxResult.success("");
  303 + }
  304 + return AjaxResult.success(receiptHeaderService.arrivalNotice(id));
  305 + }
  306 +
  307 + /**
  308 + * 加入订单池
  309 + */
  310 + @ApiOperation(value="加入订单池 ", notes="加入订单池 ", httpMethod = "POST")
  311 + @RequiresPermissions("receipt:receiptHeader:addPool")
  312 + @Log(title = "入库-入库单 ",operating = "加入订单池 ", action = BusinessType.OTHER)
  313 + @PostMapping("/addPool")
  314 + @ResponseBody
  315 + public AjaxResult addPool(String ids) {
  316 + if (StringUtils.isEmpty(ids)){
  317 + return AjaxResult.error("id不能为空");
  318 + }
  319 + return AjaxResult.success(receiptHeaderService.addPool(ids));
  320 + }
290 321 }
... ...
src/main/java/com/huaheng/pc/receipt/receiptHeader/service/ReceiptHeaderService.java
... ... @@ -15,6 +15,7 @@ import com.huaheng.pc.check.checkHeader.domain.CheckHeader;
15 15 import com.huaheng.pc.check.checkHeader.service.CheckHeaderService;
16 16 import com.huaheng.pc.config.receiptType.domain.ReceiptType;
17 17 import com.huaheng.pc.config.receiptType.service.ReceiptTypeService;
  18 +import com.huaheng.pc.config.sendMail.service.SendMailService;
18 19 import com.huaheng.pc.config.statusFlow.domain.StatusFlowDetail;
19 20 import com.huaheng.pc.config.statusFlow.service.StatusFlowDetailService;
20 21 import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;
... ... @@ -27,6 +28,7 @@ import org.springframework.stereotype.Service;
27 28 import javax.annotation.Resource;
28 29 import java.lang.ref.WeakReference;
29 30 import java.text.SimpleDateFormat;
  31 +import java.util.Arrays;
30 32 import java.util.Date;
31 33 import java.util.List;
32 34  
... ... @@ -41,6 +43,8 @@ public class ReceiptHeaderService extends ServiceImpl&lt;ReceiptHeaderMapper, Recei
41 43 private CheckHeaderService checkHeaderService;
42 44 @Resource
43 45 private CheckDetailService checkDetailService;
  46 + @Resource
  47 + private SendMailService sendMailService;
44 48  
45 49 /**
46 50 * 保存入库单
... ... @@ -155,6 +159,13 @@ public class ReceiptHeaderService extends ServiceImpl&lt;ReceiptHeaderMapper, Recei
155 159 receiptDetailLambda.eq(ReceiptDetail::getReceiptId, id);
156 160 List<ReceiptDetail> receiptDetails = receiptDetailService.list(receiptDetailLambda);
157 161  
  162 + //判断是否已经生成了质检单
  163 + LambdaQueryWrapper<CheckHeader> checkHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
  164 + checkHeaderLambdaQueryWrapper.eq(CheckHeader::getReferCode, receiptHeader.getCode());
  165 + CheckHeader checkHeaderQuery = checkHeaderService.getOne(checkHeaderLambdaQueryWrapper);
  166 + if (checkHeaderQuery != null){
  167 + throw new ServiceException("质检表已生成");
  168 + }
158 169 //创建质检头表
159 170 CheckHeader checkHeader = new CheckHeader();
160 171 checkHeader.setCode(receiptHeader.getCode());
... ... @@ -167,7 +178,7 @@ public class ReceiptHeaderService extends ServiceImpl&lt;ReceiptHeaderMapper, Recei
167 178 checkHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
168 179  
169 180 if (!checkHeaderService.save(checkHeader)){
170   - throw new ServiceException("添加质检头表发送错误");
  181 + throw new ServiceException("添加质检头表错误");
171 182 }
172 183  
173 184 //查询保存后的质检头表
... ... @@ -223,4 +234,54 @@ public class ReceiptHeaderService extends ServiceImpl&lt;ReceiptHeaderMapper, Recei
223 234 }
224 235 return AjaxResult.success("提交审核成功");
225 236 }
  237 +
  238 + /**
  239 + * 到货通知
  240 + * @param id
  241 + * @return
  242 + */
  243 + public AjaxResult arrivalNotice(String id){
  244 + LambdaQueryWrapper<ReceiptDetail> lambda = Wrappers.lambdaQuery();
  245 + lambda.eq(ReceiptDetail::getReceiptId, id);
  246 + List<ReceiptDetail> receiptDetails = receiptDetailService.list(lambda);
  247 + for (ReceiptDetail receiptDetail : receiptDetails) {
  248 + receiptDetail.setProcessStamp(String.valueOf(150));
  249 + receiptDetailService.updateById(receiptDetail);
  250 + if (!receiptDetailService.updateById(receiptDetailService.queryflow(receiptDetail))){
  251 + throw new ServiceException("更新入库明细处理标记出错");
  252 + }
  253 + receiptDetailService.updateReceiptHeaderLastStatus(receiptDetail.getReceiptId());
  254 + }
  255 + return AjaxResult.success("");
  256 + }
  257 +
  258 + /**
  259 + * 加入订单池
  260 + * @param ids 头表id字符串
  261 + * @return
  262 + */
  263 + public AjaxResult addPool(String ids){
  264 + List<Integer> idList = Arrays.asList(Convert.toIntArray(ids));
  265 + for (Integer id : idList){
  266 + LambdaQueryWrapper<ReceiptDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
  267 + lambdaQueryWrapper.eq(ReceiptDetail::getReceiptId, id);
  268 + List<ReceiptDetail> list = receiptDetailService.list(lambdaQueryWrapper);
  269 + if (list.size() != 0){
  270 + for (ReceiptDetail receiptDetail : list){
  271 + if (Integer.parseInt(receiptDetail.getProcessStamp()) < 100){
  272 + receiptDetail.setProcessStamp("100");
  273 + ReceiptDetail receiptDetail1 = receiptDetailService.queryflow(receiptDetail);
  274 + if (!receiptDetailService.updateById(receiptDetail1)){
  275 + throw new ServiceException("更新入库明细状态失败");
  276 + }
  277 + } else {
  278 + throw new ServiceException("已有入库明细进入订单池");
  279 + }
  280 + }
  281 + }
  282 + //更新头表状态
  283 + receiptDetailService.updateReceiptHeaderLastStatus(id);
  284 + }
  285 + return AjaxResult.success("");
  286 + }
226 287 }
... ...
src/main/java/com/huaheng/pc/receipt/receiptHeaderHistory/service/ReceiptHeaderHistoryService.java
... ... @@ -63,16 +63,19 @@ public class ReceiptHeaderHistoryService extends ServiceImpl&lt;ReceiptHeaderHistor
63 63 if (!receiptHeaderService.removeById(receiptHeader.getId())){
64 64 throw new ServiceException("删除头表失败");
65 65 }
66   - //删除入库明细
67   - List<Integer> ids = new ArrayList<>();
68   - for (int i=0; i<receiptDetailHistoryList.size();i++){
69   - receiptDetailHistoryList.get(i).setLastUpdatedBy(ShiroUtils.getLoginName());
70   - ids.add(receiptDetailHistoryList.get(i).getId());
71   - }
72   - if (!receiptDetailService.removeByIds(ids)) {
73   - throw new ServiceException("删除明细表失败");
  66 + // 当存在明细时删除
  67 + if (list.size()!= 0){
  68 + //删除入库明细
  69 + List<Integer> ids = new ArrayList<>();
  70 + for (int i=0; i<receiptDetailHistoryList.size();i++){
  71 + receiptDetailHistoryList.get(i).setLastUpdatedBy(ShiroUtils.getLoginName());
  72 + ids.add(receiptDetailHistoryList.get(i).getId());
  73 + }
  74 + if (!receiptDetailService.removeByIds(ids)) {
  75 + throw new ServiceException("删除明细表失败");
  76 + }
  77 + receiptDetailHistoryService.saveBatch(receiptDetailHistoryList);
74 78 }
75   - receiptDetailHistoryService.saveBatch(receiptDetailHistoryList);
76 79 this.save(receiptHeaderHistory);
77 80 }else {
78 81 return AjaxResult.success("入库单没有完成,无法删除");
... ...
src/main/java/com/huaheng/pc/receipt/receiving/controller/ReceivingController.java
1 1 package com.huaheng.pc.receipt.receiving.controller;
2 2  
3   -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4   -import com.baomidou.mybatisplus.core.toolkit.Wrappers;
5   -import com.huaheng.common.utils.security.ShiroUtils;
6 3 import com.huaheng.framework.aspectj.lang.annotation.Log;
7 4 import com.huaheng.framework.aspectj.lang.constant.BusinessType;
8 5 import com.huaheng.framework.web.controller.BaseController;
... ... @@ -10,8 +7,6 @@ import com.huaheng.framework.web.domain.AjaxResult;
10 7 import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService;
11 8 import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
12 9 import com.huaheng.pc.receipt.receiving.service.ReceivingService;
13   -import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
14   -import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
15 10 import io.swagger.annotations.ApiOperation;
16 11 import io.swagger.annotations.ApiParam;
17 12 import org.apache.shiro.authz.annotation.RequiresPermissions;
... ...
src/main/java/com/huaheng/pc/receipt/receiving/service/ReceivingService.java
... ... @@ -182,16 +182,17 @@ public class ReceivingService {
182 182 throw new ServiceException("组盘已生成任务不能取消定位");
183 183 }
184 184 //将入库组盘头表中的而库位编码赋值null
185   - receiptContainerHeader.setToLocation(null);
  185 + receiptContainerHeader.setToLocation("");
186 186 if (!receiptContainerHeaderService.updateById(receiptContainerHeader)){
187 187 throw new ServiceException("回滚入库组盘头失败");
188 188 }
189 189  
  190 + //将入库组盘明细的库位修改为空
190 191 LambdaQueryWrapper<ReceiptContainerDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
191 192 lambdaQueryWrapper.eq(ReceiptContainerDetail::getReceiptContainerId, receiptContainerDetail.getReceiptContainerId());
192 193 List<ReceiptContainerDetail> receiptContainerDetailList = receiptContainerDetailService.list(lambdaQueryWrapper);
193 194 for (ReceiptContainerDetail receiptContainerDetail2 : receiptContainerDetailList) {
194   - receiptContainerDetail2.setLocationCode(null);
  195 + receiptContainerDetail2.setLocationCode("");
195 196 if (!receiptContainerDetailService.updateById(receiptContainerDetail2)){
196 197 throw new ServiceException("回滚入库组盘明细失败");
197 198 }
... ...
src/main/resources/mybatis/config/ContainerMapper.xml
... ... @@ -52,4 +52,7 @@
52 52 UPDATE container set `status`=#{status}, locationCode=#{locationCode} WHERE warehouseCode=#{warehouseCode} AND `code`=#{containerCode}
53 53 </update>
54 54  
  55 + <select id="findAllByCode" resultMap="BaseResultMap" parameterType="java.lang.String">
  56 + SELECT * FROM container WHERE code = #{code,jdbcType=VARCHAR}
  57 + </select>
55 58 </mapper>
56 59 \ No newline at end of file
... ...
src/main/resources/templates/config/configValue/edit.html
... ... @@ -64,7 +64,7 @@
64 64 </div>
65 65 <div th:include="include::footer"></div>
66 66 <script type="text/javascript">
67   - var prefix = ctx + "config/configvalue";
  67 + var prefix = ctx + "config/configValue";
68 68 $("#form-configValue-edit").validate({
69 69 rules:{
70 70 moduleType:{
... ...
src/main/resources/templates/config/filterConfigHeader/add.html
... ... @@ -5,18 +5,14 @@
5 5 <body class="white-bg">
6 6 <div class="wrapper wrapper-content animated fadeInRight ibox-content">
7 7 <form class="form-horizontal m" id="form-filterConfigHeader-add">
8   - <div class="form-group">
9   - <label class="col-sm-3 control-label">模块:</label>
10   - <div class="col-sm-8">
11   - <select class="form-control" name="moduleType" th:with="moduleType=${@dict.getType('moduleType')}">
12   - <option th:each="item : ${moduleType}" th:text="${item['dictLabel']}" th:value="${item['dictValue']}"></option>
13   - </select>
14   - </div>
15   - </div>
  8 + <input name="moduleType" th:value="${moduleType}" hidden>
16 9 <div class="form-group">
17 10 <label class="col-sm-3 control-label">类型:</label>
18 11 <div class="col-sm-8">
19   - <select id="recordType" name="recordType" class="form-control" th:with="recordType=${@dict.getType('recordType')}">
  12 + <select id="recordType" name="recordType" class="form-control" th:if="${moduleType == 'receipt'}" th:with="recordType=${@dict.getType('receiptRuleType')}">
  13 + <option th:each="item : ${recordType}" th:text="${item['dictLabel']}" th:value="${item['dictValue']}"></option>
  14 + </select>
  15 + <select id="recordType" name="recordType" class="form-control" th:if="${moduleType != 'receipt'}" th:with="recordType=${@dict.getType('shipmentRuleType')}">
20 16 <option th:each="item : ${recordType}" th:text="${item['dictLabel']}" th:value="${item['dictValue']}"></option>
21 17 </select>
22 18 </div>
... ...
src/main/resources/templates/config/filterConfigHeader/filterConfigHeader.html
... ... @@ -79,7 +79,7 @@
79 79 $(function() {
80 80 var options = {
81 81 url: prefix + "/list",
82   - createUrl: prefix + "/add",
  82 + createUrl: prefix + "/add/"+[[${moduleType}]],
83 83 updateUrl: prefix + "/edit/{id}",
84 84 removeUrl: prefix + "/remove",
85 85 modalName: "规则配置主表",
... ...
src/main/resources/templates/config/receiptPreference/add.html
... ... @@ -20,7 +20,7 @@
20 20 <div class="form-group">
21 21 <label class="col-sm-3 control-label">入库流程:</label>
22 22 <div class="col-sm-8">
23   - <select id="receiptFlow" name="receiptFlow" class="form-control" th:with="statusFlowList=${@StatusFlow.flowList('入库单')}">
  23 + <select id="receiptFlow" name="receiptFlow" class="form-control" th:with="statusFlowList=${@StatusFlow.flowList('receivingFlow')}">
24 24 <option th:each="flow : ${statusFlowList}" th:text="${flow['name']}" th:value="${flow['code']}"></option>
25 25 </select>
26 26 </div>
... ...
src/main/resources/templates/config/receiptPreference/receiptPreference.html
... ... @@ -139,6 +139,7 @@
139 139 {
140 140 field : 'manuallyBuildLPN',
141 141 title : '人工组盘',
  142 + align : "center",
142 143 formatter : function(value, row, index) {
143 144 return $.table.selectWhetherLabel(value);
144 145 },
... ...
src/main/resources/templates/config/receiptType/add.html
... ... @@ -46,7 +46,8 @@
46 46 <div class="form-group">
47 47 <label class="col-sm-3 control-label">入库流程:</label>
48 48 <div class="col-sm-8">
49   - <select id="receiptFlow" name="receiptFlow" class="form-control" th:with="statusFlowList=${@StatusFlow.flowList('入库单')}">
  49 + <select id="receiptFlow" name="receiptFlow" class="form-control" th:with="statusFlowList=${@StatusFlow.flowList('receivingFlow')}">
  50 + <option value="">请选择</option>
50 51 <option th:each="flow : ${statusFlowList}" th:text="${flow['name']}" th:value="${flow['code']}"></option>
51 52 </select>
52 53 </div>
... ...
src/main/resources/templates/config/receiptType/edit.html
... ... @@ -48,7 +48,8 @@
48 48 <div class="form-group">
49 49 <label class="col-sm-3 control-label">入库流程:</label>
50 50 <div class="col-sm-8">
51   - <select id="receiptFlow" name="receiptFlow" class="form-control" th:with="statusFlowList=${@StatusFlow.flowList('入库单')}" th:field="*{receiptFlow}">
  51 + <select id="receiptFlow" name="receiptFlow" class="form-control" th:with="statusFlowList=${@StatusFlow.flowList('receivingFlow')}" th:field="*{receiptFlow}">
  52 + <option value="">请选择</option>
52 53 <option th:each="flow : ${statusFlowList}" th:text="${flow['name']}" th:value="${flow['code']}"></option>
53 54 </select>
54 55 </div>
... ...
src/main/resources/templates/config/statusFlowDetail/add.html
... ... @@ -16,9 +16,7 @@
16 16 <div class="form-group">
17 17 <label class="col-sm-3 control-label">模块:</label>
18 18 <div class="col-sm-8">
19   - <select id="moduleType" name="moduleType" class="form-control" th:with="moduleType=${@dict.getType('moduleType')}">
20   - <option th:each="item : ${moduleType}" th:text="${item['dictLabel']}" th:value="${item['dictValue']}"></option>
21   - </select>
  19 + <input id="moduleType" name="moduleType" class="form-control" type="text" th:value="${moduleType}" readonly="readonly">
22 20 </div>
23 21 </div>
24 22 <div class="form-group">
... ...
src/main/resources/templates/config/statusFlowHeader/add.html
... ... @@ -5,6 +5,7 @@
5 5 <body class="white-bg">
6 6 <div class="wrapper wrapper-content animated fadeInRight ibox-content">
7 7 <form class="form-horizontal m" id="form-statusFlowHeader-add">
  8 + <input id="moduleType" name="moduleType" hidden th:value="${moduleType}">
8 9 <div class="form-group">
9 10 <label class="col-sm-3 control-label">编码:</label>
10 11 <div class="col-sm-8">
... ... @@ -17,22 +18,7 @@
17 18 <input id="name" name="name" class="form-control" type="text">
18 19 </div>
19 20 </div>
20   - <div class="form-group">
21   - <label class="col-sm-3 control-label">模块:</label>
22   - <div class="col-sm-8">
23   - <select id="moduleType" name="moduleType" class="form-control" th:with="moduleType=${@dict.getType('moduleType')}">
24   - <option th:each="item : ${moduleType}" th:text="${item['dictLabel']}" th:value="${item['dictValue']}"></option>
25   - </select>
26   - </div>
27   - </div>
28   - <div class="form-group">
29   - <label class="col-sm-3 control-label">类型:</label>
30   - <div class="col-sm-8">
31   - <select id="recordType" name="recordType" class="form-control" th:with="recordType=${@dict.getType('recordType')}">
32   - <option th:each="item : ${recordType}" th:text="${item['dictLabel']}" th:value="${item['dictValue']}"></option>
33   - </select>
34   - </div>
35   - </div>
  21 + <input id="recordType" name="recordType" class="form-control" type="hidden" th:value="${moduleType} == 'receipt'? 'receivingFlow':'shippingFlow'">
36 22 <!--<div class="form-group">-->
37 23 <!-- <label class="col-sm-3 control-label">数据版本:</label>-->
38 24 <!-- <div class="col-sm-8">-->
... ...
src/main/resources/templates/config/statusFlowHeader/statusFlowHeader.html
... ... @@ -82,7 +82,7 @@
82 82 $(function() {
83 83 var options = {
84 84 url: prefix + "/list",
85   - createUrl: prefix + "/add",
  85 + createUrl: prefix + "/add/"+[[${moduleType}]],
86 86 updateUrl: prefix + "/edit/{id}",
87 87 removeUrl: prefix + "/remove",
88 88 modalName: "流程",
... ...
src/main/resources/templates/inventory/adjustDetail/adjustDetail.html
... ... @@ -91,14 +91,16 @@
91 91 </div>
92 92 </div>
93 93 <div class="btn-group hidden-xs" id="toolbar" role="group">
94   - <a class="btn btn-outline btn-success btn-rounded" onclick="add()">
  94 + <a class="btn btn-outline btn-success btn-rounded" onclick="add()"
  95 + shiro:hasPermission="inventory:adjustDetail:add" >
95 96 <i class="fa fa-plus"></i> 新增
96 97 </a>
97   - <a class="btn btn-outline btn-primary btn-rounded" onclick="agree()">
  98 + <a class="btn btn-outline btn-primary btn-rounded" onclick="agree()"
  99 + shiro:hasPermission="inventory:adjustDetail:adjustAgree" >
98 100 <i class="fa fa-edit"></i> 审批
99 101 </a>
100   - <a class="btn btn-outline btn-danger btn-rounded" onclick="addAdjust()"/>
101   - <!--shiro:hasPermission="inventory:cyclecountAdjustDetail:addAdjust"-->
  102 + <a class="btn btn-outline btn-danger btn-rounded" onclick="addAdjust()"
  103 + shiro:hasPermission="inventory:adjustDetail:addAdjust">
102 104 <i class="fa fa-vcard"></i>调整
103 105 </a>
104 106 <!--<a class="btn btn-outline btn-success btn-rounded" onclick="$.table.refresh()">
... ... @@ -112,6 +114,7 @@
112 114 <script th:inline="javascript">
113 115 var prefix = ctx + "inventory/adjustDetail";
114 116 var prefix_head = ctx + "inventory/adjustHeader";
  117 + var removes= [[${@permission.hasPermi('inventory:adjustDetail:remove')}]];
115 118 var type2 = [[${@dict.getType('adjustType')}]];
116 119 var adjustStatus = [[${@dict.getType('adjustStatus')}]];
117 120 var inventoryStatus = [[${@dict.getType('inventoryStatus')}]];
... ... @@ -353,7 +356,7 @@
353 356 align: 'center',
354 357 formatter: function (value, row, index) {
355 358 var actions = [];
356   - actions.push('<a class="btn btn-danger btn-xs" href="#" onclick="remove(\'' + row.id + '\')"><i class="fa fa-trash-o"></i>删除</a> ');
  359 + actions.push('<a class="btn btn-danger btn-xs ' + removes + ' " href="#" onclick="remove(\'' + row.id + '\')"><i class="fa fa-trash-o"></i>删除</a> ');
357 360 return actions.join('');
358 361 }
359 362 }
... ...
src/main/resources/templates/inventory/adjustHeader/adjustHeader.html
... ... @@ -69,13 +69,13 @@
69 69 </div>
70 70 <div class="btn-group hidden-xs" id="toolbar" role="group">
71 71 <a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()"
72   - shiro:hasPermission="inventory:cycleCount:add">
  72 + shiro:hasPermission="inventory:adjustHeader:add">
73 73 <i class="fa fa-plus"></i> 新增
74 74 </a>
75   - <!--<a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()"
76   - shiro:hasPermission="inventory:cycleCount:remove">
77   - <i class="fa fa-trash-o"></i> 删除
78   - </a>-->
  75 + <a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()"
  76 + shiro:hasPermission="inventory:adjustHeader:remove">
  77 + <i class="fa fa-trash-o"></i> 删除
  78 + </a>
79 79 </div>
80 80 <table id="bootstrap-table" data-mobile-responsive="true"
81 81 class="table table-bordered table-hover"></table>
... ... @@ -90,7 +90,7 @@
90 90 <script th:inline="javascript">
91 91 var prefix = ctx + "inventory/adjustHeader";
92 92 var upload = [[${@permission.hasPermi('inventoryHeader:adjustHeader:upload')}]];
93   - var report = [[${@permission.hasPermi('inventoryHeader:adjustHeader:report')}]];
  93 + var report = [[${@permission.hasPermi('inventory:adjustHeader:report')}]];
94 94 var datas = [[${@dict.getType('sys_normal_disable')}]];
95 95 var type2 = [[${@dict.getType('adjustType')}]];
96 96  
... ... @@ -180,8 +180,8 @@
180 180 align: 'center',
181 181 formatter: function (value, row, index) {
182 182 var actions = [];
183   - /* actions.push('<a class="btn btn-success btn-xs " href="#" onclick="adjustPrint(\'' + row.id + '\')"><i class="fa fa-print"></i>打印</a> ');
184   - actions.push('<a class="btn btn-info btn-xs ' + upload + ' " href="#" onclick="upLoad(\'' + row.code + '\',\'' + row.sourceCode + '\')"><i class="fa fa-edit"></i>上传</a> ');
  183 + actions.push('<a class="btn btn-success btn-xs " href="#" onclick="adjustPrint(\'' + row.id + '\')"><i class="fa fa-print"></i>打印</a> ');
  184 + /* actions.push('<a class="btn btn-info btn-xs ' + upload + ' " href="#" onclick="upLoad(\'' + row.code + '\',\'' + row.sourceCode + '\')"><i class="fa fa-edit"></i>上传</a> ');
185 185 actions.push('<a class="btn btn-danger btn-xs " href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-trash-o"></i>删除</a> ');*/
186 186 actions.push('<a style="background: #b5bdc0" class="btn btn-default btn-xs " href="#" onclick="detail(\'' + row.id + '\',\'' + row.code + '\')"><i class="fa fa-list-ul"></i>明细</a>');
187 187 return actions.join('');
... ...
src/main/resources/templates/inventory/cycleCountDetail/add.html
... ... @@ -11,7 +11,6 @@
11 11 <input type="hidden" id="cycleCountHeadCode" name="cycleCountHeadCode" th:value="${cycleCountHeadCode}">
12 12 <div class="select-list">
13 13 <ul>
14   - <ul>
15 14 <li>
16 15 库存头ID:<input id="inventoryHeaderId" type="text" name="inventoryHeaderId"/>
17 16 </li>
... ... @@ -79,12 +78,14 @@
79 78 <a id="search" class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
80 79 <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="general:inventoryHeader:export"><i class="fa fa-download"></i>&nbsp;导出</a>-->
81 80 </li>
82   - </ul>
  81 + </ul>
83 82 </div>
84 83 </form>
85 84 </div>
86 85 <div class="col-sm-12 select-info">
87   - <a class="btn btn-success btn-sm" onclick="addDetails()" style="float: left; margin-top: 12px" shiro:hasPermission="inventory:cyclecountDetail:add"><i class="fa fa-edit" ></i>&nbsp;批量添加盘点明细</a>
  86 + <a class="btn btn-success btn-sm" onclick="addDetails()" style="float: left; margin-top: 12px"
  87 + shiro:hasPermission="inventory:cyclecountDetail:add">
  88 + <i class="fa fa-edit" ></i>&nbsp;添加盘点明细</a>
88 89 <table id="bootstrap-table" data-mobile-responsive="true" class="table table-bordered table-hover"></table>
89 90 </div>
90 91 </div>
... ... @@ -94,7 +95,7 @@
94 95 <div th:include="include::footer"></div>
95 96  
96 97 <script th:inline="javascript">
97   - var addFlag = [[${@permission.hasPermi('inventoryHeader:cycleCountDetail:add')}]];
  98 + var addFlag = [[${@permission.hasPermi('inventory:cyclecountDetail:add')}]];
98 99 // var removeFlag = [[${@permission.hasPermi('inventoryHeader:inventoryHeader:remove')}]];
99 100 var prefix = ctx + "inventory/inventoryDetail";
100 101 var prefix_cycleDetails = ctx + "inventory/cycleCountDetail";
... ... @@ -132,7 +133,7 @@
132 133 {
133 134 checkbox: true
134 135 },
135   - {
  136 + /*{
136 137 title: '操作',
137 138 align: 'center',
138 139 formatter: function(value, row, index) {
... ... @@ -141,10 +142,10 @@
141 142 // actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a>');
142 143 return actions.join('');
143 144 }
144   - },
  145 + },*/
145 146 {
146 147 field: 'id',
147   - title: '明细ID',
  148 + title: '库存明细ID',
148 149 sortable: true
149 150 },
150 151 {
... ... @@ -315,14 +316,18 @@
315 316  
316 317 });
317 318  
318   - /*function addDetail(cycleCountHeadId) {
319   - addInner($('cycleCountHeadId').val(),cycleCountHeadId);
320   - }*/
  319 + function addDetail(id) {
  320 + /*var ids =[];
  321 + rows.forEach(function (item) {
  322 + ids.push(item.id);
  323 + });*/
  324 + addInner($('#cycleCountHeadCode').val(),id);
  325 + }
321 326  
322 327 function addDetails() {
323 328 var rows=$("#bootstrap-table").bootstrapTable('getSelections');
324 329 if (rows.length < 1) {
325   - $.modal.alertWarning("请先选择记录");
  330 + $.modal.alertWarning("请选择库存明细!");
326 331 return;
327 332 }
328 333 var ids =[];
... ... @@ -339,7 +344,7 @@
339 344 url : prefix_cycleDetails + "/add",
340 345 data:{
341 346 cycleCountHeadCode:cycleCountHeadCode,
342   - inventoryDetailIdIds:ids
  347 + inventoryDetailIds:ids
343 348 },
344 349 async : false,
345 350 error : function(request) {
... ...
src/main/resources/templates/inventory/cycleCountDetail/cycleCountDetail.html
... ... @@ -85,7 +85,7 @@
85 85 </div>
86 86 <div class="btn-group hidden-xs" id="toolbar" role="group">
87 87 <a class="btn btn-outline btn-success btn-rounded" onclick="add()"
88   - shiro:hasPermission="inventory:cycleCountDetail:add">
  88 + shiro:hasPermission="inventory:cyclecountDetail:add">
89 89 <i class="fa fa-plus"></i> 新增
90 90 </a>
91 91 <a class="btn btn-outline btn-danger btn-rounded" onclick="createCyclecountWithGapQty()"
... ... @@ -98,7 +98,7 @@
98 98 </a>
99 99 <a class="btn btn-outline btn-danger btn-rounded" onclick="batRemove()"
100 100 shiro:hasPermission="inventory:cyclecountDetail:remove">
101   - <i class="fa fa-trash-o"></i> 批量删除
  101 + <i class="fa fa-trash-o"></i> 删除
102 102 </a>
103 103 <a class="btn btn-outline btn-success btn-rounded" onclick="$.table.refresh()">
104 104 <i class="fa fa-refresh"></i> 刷新
... ... @@ -109,10 +109,10 @@
109 109 </div>
110 110 <div th:include="include :: footer"></div>
111 111 <script th:inline="javascript">
112   - var editFlag = [[${@permission.hasPermi('inventoryHeader:cycleCountDetail:edit')}]];
113   - var removeFlag = [[${@permission.hasPermi('inventoryHeader:cycleCountDetail:remove')}]];
114   - var confirmFlag=[[${@permission.hasPermi('inventoryHeader:cycleCountDetail:confirm')}]];
115   - var createTaskFalg=[[${@permission.hasPermi('inventoryHeader:cycleCountDetail:createTask')}]];
  112 + //var editFlag = [[${@permission.hasPermi('inventory:cyclecountDetail:edit')}]];
  113 + var removeFlag = [[${@permission.hasPermi('inventory:cyclecountDetail:remove')}]];
  114 + var confirmFlag = [[${@permission.hasPermi('inventory:cyclecountDetail:confirm')}]];
  115 + var createTaskFalg = [[${@permission.hasPermi('inventory:cyclecountDetail:createTask')}]];
116 116 var prefix = ctx + "inventory/cycleCountDetail";
117 117 var prefix_head = ctx + "inventory/cycleCountHeader";
118 118 var remove_url= prefix + "/remove";
... ... @@ -318,12 +318,13 @@
318 318 align: 'center',
319 319 formatter: function (value, row, index) {
320 320 var actions = [];
321   -
322   - actions.push('<a class="btn btn-success btn-xs " href="#" onclick="confirmGapQty(\'' + row.id + '\')"><i class="fa fa-comment"></i>实盘登记</a> ');
323   -
324   - actions.push('<a class="btn btn-primary btn-xs " href="#" onclick="outcheck(\'' + row.id + '\')"><i class="fa fa-gbp"></i>生成盘点任务</a> ');
325   -
326   - actions.push('<a class="btn btn-danger btn-xs " href="#" onclick="remove(\'' + row.id + '\')" ><i class="fa fa-trash-o"></i>删除</a>');
  321 + if(row.enableStatus >= 10 && row.enableStatus < 100){
  322 + actions.push('<a class="btn btn-success btn-xs ' + confirmFlag + '" href="#" onclick="confirmGapQty(\'' + row.id + '\')"><i class="fa fa-comment"></i>实盘登记</a> ');
  323 + }
  324 + if(row.enableStatus === 1 ){
  325 + actions.push('<a class="btn btn-primary btn-xs ' + createTaskFalg + '" href="#" onclick="outcheck(\'' + row.id + '\')"><i class="fa fa-gbp"></i>生成盘点任务</a> ');
  326 + }
  327 + actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="remove(\'' + row.id + '\')" ><i class="fa fa-trash-o"></i>删除</a>');
327 328 return actions.join('');
328 329 }
329 330 }]
... ...
src/main/resources/templates/inventory/cycleCountHeader/cycleCountHeader.html
... ... @@ -70,13 +70,13 @@
70 70 </div>
71 71 <div class="btn-group hidden-xs" id="toolbar" role="group">
72 72 <a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()"
73   - shiro:hasPermission="inventory:cycleCount:add">
  73 + shiro:hasPermission="inventory:cycleCountHeader:add">
74 74 <i class="fa fa-plus"></i> 新增
75 75 </a>
76   - <a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()"
77   - shiro:hasPermission="inventory:cycleCount:remove">
  76 + <!--<a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()"
  77 + shiro:hasPermission="inventory:cycleCountHeader:remove">
78 78 <i class="fa fa-trash-o"></i> 删除
79   - </a>
  79 + </a>-->
80 80 </div>
81 81 <table id="bootstrap-table" data-mobile-responsive="true"
82 82 class="table table-bordered table-hover"></table>
... ... @@ -89,10 +89,10 @@
89 89 </div>
90 90 <div th:include="include :: footer"></div>
91 91 <script th:inline="javascript">
92   - var reportFlag = [[${@permission.hasPermi('inventoryHeader:cycleCount:report')}]];
93   - var editFlag = [[${@permission.hasPermi('inventoryHeader:cycleCount:edit')}]];
94   - var addAdjust = [[${@permission.hasPermi('inventoryHeader:cyclecountHead:addAdjust')}]];
95   - var removeFlag = [[${@permission.hasPermi('inventoryHeader:cycleCount:remove')}]];
  92 + var reportFlag = [[${@permission.hasPermi('inventory:cycleCountHeader:report')}]];
  93 + //var editFlag = [[${@permission.hasPermi('inventory:cycleCountHeader:edit')}]];
  94 + var addAdjust = [[${@permission.hasPermi('inventory:cyclecountHead:addAdjust')}]];
  95 + var removeFlag = [[${@permission.hasPermi('inventory:cycleCount:remove')}]];
96 96 var prefix = ctx + "inventory/cycleCountHeader";
97 97 var datas = [[${@dict.getType('sys_normal_disable')}]];
98 98 var types = [[${@dict.getType('cyclecountType')}]];
... ... @@ -137,6 +137,11 @@
137 137 title: '货主编码'
138 138 },
139 139 {
  140 + field: 'round',
  141 + title: ' 盘点轮次',
  142 + visible: false
  143 + },
  144 + {
140 145 field: 'sourceCode',
141 146 title: '源盘点单'
142 147 },
... ... @@ -274,12 +279,12 @@
274 279 align: 'center',
275 280 formatter: function (value, row, index) {
276 281 var actions = [];
277   - actions.push('<a class="btn btn-success btn-xs " href="#" onclick="cyclecountPrint(\'' + row.id + '\')"><i class="fa fa-print"></i>打印</a> ');
278   -
279   - actions.push('<a class="btn btn-warning btn-xs " href="#" onclick="goAdjust(\'' + row.id + '\')"><i class="fa fa-gbp"></i>生成调整单</a> ');
280   -
281   - //actions.push('<a class="btn btn-info btn-xs " href="#" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
282   - actions.push('<a class="btn btn-danger btn-xs " href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-trash-o"></i>删除</a> ');
  282 + actions.push('<a class="btn btn-success btn-xs ' + reportFlag + '" href="#" onclick="cyclecountPrint(\'' + row.id + '\')"><i class="fa fa-print"></i>打印</a> ');
  283 + if(row.statusCyc === 100){
  284 + actions.push('<a class="btn btn-warning btn-xs ' + addAdjust + '" href="#" onclick="goAdjust(\'' + row.id + '\')"><i class="fa fa-gbp"></i>生成调整单</a> ');
  285 + }
  286 + //actions.push('<a class="btn btn-info btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
  287 + actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-trash-o"></i>删除</a> ');
283 288 return actions.join('');
284 289 }
285 290 }]
... ...
src/main/resources/templates/inventory/inventoryDetail/inventoryDetail.html
... ... @@ -86,7 +86,7 @@
86 86 shiro:hasPermission="inventory:inventoryHeader:seeOut">
87 87 <i class="fa fa-eye"></i> 出库查看
88 88 </a>
89   - <a class="btn btn-outline btn-primary btn-rounded" onclick="check()"
  89 + <a class="btn btn-outline btn-danger btn-rounded" onclick="check()"
90 90 shiro:hasPermission="inventory:inventoryDetail:detailCheckTask">
91 91 <i class="fa fa-eye"></i> 在库质检
92 92 </a>
... ... @@ -305,7 +305,9 @@
305 305 visible: false
306 306 }
307 307 ]
308   - },url = location.search.substr(1);
  308 + },
  309 +
  310 + url = location.search.substr(1);
309 311 let strs = url.split("&");
310 312 $("#inventoryHeaderId").val(strs[0]);
311 313 $("#locationCode").val(strs[1]);
... ...
src/main/resources/templates/receipt/receiptDetail/add.html
... ... @@ -52,7 +52,10 @@
52 52 <div class="form-group">
53 53 <label class="col-sm-3 control-label">是否质检:</label>
54 54 <div class="col-sm-8">
55   - <input id="qcCheck" name="qcCheck" class="form-control" type="text">
  55 + <select id="qcCheck" name="qcCheck" class="form-control">
  56 + <option value="1">否</option>
  57 + <option value="0">是</option>
  58 + </select>
56 59 </div>
57 60 </div>
58 61 <div class="form-group">
... ... @@ -70,7 +73,7 @@
70 73 <div class="form-group">
71 74 <label class="col-sm-3 control-label">库存状态:</label>
72 75 <div class="col-sm-8">
73   - <select id="inventorySts" name="inventorySts" class="form-control" th:with="inventoryStatus=${@dict.getType('inventoryStatus')}">
  76 + <select id="inventorySts" name="inventorySts" class="form-control" th:with="inventoryStatus=${@dict.getType('inventorySts')}">
74 77 <option th:each="dict : ${inventoryStatus}" th:text="${dict['dictLabel']}" th:value="${dict['dictValue']}"></option>
75 78 </select>
76 79 </div>
... ... @@ -84,12 +87,21 @@
84 87 <div class="form-group">
85 88 <label class="col-sm-3 control-label">定位规则:</label>
86 89 <div class="col-sm-8">
87   - <select id="locatingRule" name="locatingRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('入库')}">
  90 + <select id="locatingRule" name="locatingRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('locationRule')}">
88 91 <option value="">请选择</option>
89 92 <option th:each="item : ${list}" th:text="${item['description']}" th:value="${item['code']}"></option>
90 93 </select>
91 94 </div>
92 95 </div>
  96 + <div class="form-group">
  97 + <label class="col-sm-3 control-label">入库流程:</label>
  98 + <div class="col-sm-8">
  99 + <select id="statusFlowCode" name="statusFlowCode" class="form-control" th:with="statusFlowList=${@StatusFlow.flowList('receivingFlow')}">
  100 + <option value="">请选择</option>
  101 + <option th:each="flow : ${statusFlowList}" th:text="${flow['name']}" th:value="${flow['code']}"></option>
  102 + </select>
  103 + </div>
  104 + </div>
93 105 <!-- <div class="form-group">-->
94 106 <!-- <label class="col-sm-3 control-label">标价:</label>-->
95 107 <!-- <div class="col-sm-8">-->
... ... @@ -150,6 +162,7 @@
150 162 submitHandler: function(form) {
151 163 var tableValue = $("#form-receiptDetail-add").serialize();
152 164 tableValue = formValueReplace(tableValue, "inventorySts", $("#inventorySts option:selected").val());
  165 + tableValue = formValueReplace(tableValue, "qcCheck", $("#qcCheck option:selected").val());
153 166 $.operate.save(prefix + "/add", tableValue);
154 167 }
155 168 });
... ...
src/main/resources/templates/receipt/receiptDetail/edit.html
... ... @@ -53,7 +53,10 @@
53 53 <div class="form-group">
54 54 <label class="col-sm-3 control-label">是否质检:</label>
55 55 <div class="col-sm-8">
56   - <input id="qcCheck" name="qcCheck" class="form-control" type="text" th:field="*{qcCheck}">
  56 + <select id="qcCheck" name="qcCheck" class="form-control" th:field="*{qcCheck}">
  57 + <option value="1">否</option>
  58 + <option value="0">是</option>
  59 + </select>
57 60 </div>
58 61 </div>
59 62 <div class="form-group">
... ... @@ -72,7 +75,7 @@
72 75 <label class="col-sm-3 control-label">库存状态:</label>
73 76 <div class="col-sm-8">
74 77 <select id="inventorySts" name="inventorySts" class="form-control"
75   - th:with="inventoryStatus=${@dict.getType('inventoryStatus')}" th:field="*{inventorySts}">
  78 + th:with="inventoryStatus=${@dict.getType('inventorySts')}" th:field="*{inventorySts}">
76 79 <option th:each="dict : ${inventoryStatus}" th:text="${dict['dictLabel']}" th:value="${dict['dictValue']}"></option>
77 80 </select>
78 81 </div>
... ... @@ -86,7 +89,11 @@
86 89 <div class="form-group">
87 90 <label class="col-sm-3 control-label">定位规则:</label>
88 91 <div class="col-sm-8">
89   - <input id="locatingRule" name="locatingRule" class="form-control" type="text" th:field="*{locatingRule}">
  92 + <select id="locatingRule" name="locatingRule" class="form-control"
  93 + th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('locationRule')}" th:field="*{locatingRule}">
  94 + <option value="">请选择</option>
  95 + <option th:each="item : ${list}" th:text="${item['description']}" th:value="${item['code']}"></option>
  96 + </select>
90 97 </div>
91 98 </div>
92 99 <div class="form-group">
... ... @@ -101,6 +108,16 @@
101 108 <input id="itemNetPrice" name="itemNetPrice" class="form-control" type="text" th:field="*{itemNetPrice}">
102 109 </div>
103 110 </div>
  111 + <div class="form-group">
  112 + <label class="col-sm-3 control-label">入库流程:</label>
  113 + <div class="col-sm-8">
  114 + <select id="statusFlowCode" name="statusFlowCode" class="form-control"
  115 + th:with="statusFlowList=${@StatusFlow.flowList('receivingFlow')}" th:field="*{statusFlowCode}">
  116 + <option value="">请选择</option>
  117 + <option th:each="flow : ${statusFlowList}" th:text="${flow['name']}" th:value="${flow['code']}"></option>
  118 + </select>
  119 + </div>
  120 + </div>
104 121 <!--<div class="form-group">-->
105 122 <!--<label class="col-sm-3 control-label">自定义字段1:</label>-->
106 123 <!--<div class="col-sm-8">-->
... ...
src/main/resources/templates/receipt/receiptHeader/edit.html
... ... @@ -54,9 +54,6 @@
54 54 },
55 55 companyCode:{
56 56 required:true,
57   - },
58   - scheduledArriveDate:{
59   - required:true,
60 57 }
61 58 },
62 59 submitHandler: function(form) {
... ...
src/main/resources/templates/receipt/receiptHeader/receiptHeader.html
... ... @@ -82,12 +82,15 @@
82 82 <a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="receipt:receiptHeader:add">
83 83 <i class="fa fa-plus"></i> 新增
84 84 </a>
85   - <a class="btn btn-outline btn-default btn-rounded" onclick="submitReview()" shiro:hasPermission="receipt:receiptHeader:add">
  85 + <a class="btn btn-outline btn-default btn-rounded" onclick="submitReview()" shiro:hasPermission="receipt:receiptHeader:approval">
86 86 <i class="fa fa-fighter-jet"></i> 提交审核
87 87 </a>
88   - <a class="btn btn-outline btn-primary btn-rounded" onclick="approval()" shiro:hasPermission="receipt:receiptHeader:add">
  88 + <a class="btn btn-outline btn-primary btn-rounded" onclick="approval()" shiro:hasPermission="receipt:receiptHeader:review">
89 89 <i class="fa fa-level-up"></i> 审核通过
90 90 </a>
  91 + <a class="btn btn-outline btn-primary btn-rounded" onclick="addPool()" shiro:hasPermission="receipt:receiptHeader:addPool">
  92 + <i class="fa fa-check-circle"></i> 加入订单池
  93 + </a>
91 94 <a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="receipt:receiptHeader:remove">
92 95 <i class="fa fa-trash-o"></i> 删除
93 96 </a>
... ... @@ -389,7 +392,7 @@
389 392 actions.push('<a class="btn btn-info btn-xs ' + editFlag + '" href="#" onclick="arrival(\'' + row.id + '\')" ><i class="fa fa-edit"></i>入库预约</a> ');
390 393 }
391 394 if (row.firstStatus ==150 || row.lastStatus == 150 ){
392   - actions.push('<a class="btn btn-info btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.id + '\')" ><i class="fa fa-edit"></i>到货通知</a> ');
  395 + actions.push('<a class="btn btn-info btn-xs ' + editFlag + '" href="#" onclick="arrivalNotice(\'' + row.id + '\')" ><i class="fa fa-edit"></i>到货通知</a> ');
393 396 }
394 397 if (row.firstStatus ==180 || row.lastStatus == 180 ){
395 398 actions.push('<a class="btn btn-info btn-xs ' + editFlag + '" href="#" onclick="check(\'' + row.id + '\')" ><i class="fa fa-edit"></i>质检</a> ');
... ... @@ -474,7 +477,17 @@
474 477 },
475 478 {
476 479 field : 'qcCheck',
477   - title : '是否质检'
  480 + title : '是否质检',
  481 + align : "center",
  482 + formatter: function(value, row, index) {
  483 + var actions = [];
  484 + if (value == 0) {
  485 + actions.push("<span class='badge badge-info'>是</span>");
  486 + } else {
  487 + actions.push("<span class='badge badge-info'>否</span>");
  488 + }
  489 + return actions.join('');
  490 + }
478 491 },
479 492 {
480 493 field : 'projectNo',
... ... @@ -541,8 +554,13 @@
541 554 visible:false
542 555 },
543 556 {
  557 + field : 'statusFlowCode',
  558 + title : '流程编码'
  559 + },
  560 + {
544 561 field : 'isVirtualBom',
545 562 title : '是否虚拟套件',
  563 + align : "center",
546 564 formatter: function(value, row, index) {
547 565 return $.table.selectDictLabel(isVirtualBoms, value);
548 566 }
... ... @@ -807,6 +825,27 @@
807 825 var data = { "id": id };
808 826 $.operate.submit(url, "post", "json", data);
809 827 }
  828 +
  829 + function arrivalNotice(id) {
  830 + var url = prefix+"/arrivalNotice";
  831 + var data = { "id": id };
  832 + $.operate.submit(url, "post", "json", data);
  833 + }
  834 +
  835 + function addPool() {
  836 + var rows=$("#bootstrap-table").bootstrapTable('getSelections');
  837 + if (rows.length == 0) {
  838 + $.modal.alertWarning("请至少选择一条记录");
  839 + return;
  840 + }
  841 + var url = prefix+"/addPool";
  842 + var ids = "";
  843 + for(var i=0; i<rows.length; i++) {
  844 + ids = ids + rows[i].id + ","
  845 + }
  846 + var data = { "ids": ids.substring(0, ids.length-1),"approval": 100 };
  847 + $.operate.submit(url, "post", "json", data);
  848 + }
810 849 </script>
811 850 </body>
812 851 </html>
813 852 \ No newline at end of file
... ...
src/main/resources/templates/receipt/receiving/receiving.html
... ... @@ -189,15 +189,11 @@
189 189 updateUrl: prefix + "/edit/{id}",
190 190 removeUrl: prefix + "/remove",
191 191 contentType: "application/x-www-form-urlencoded",
192   - // search: true, //搜索
193   - // showRefresh: true,//刷新
194   - // showToggle:true, //视图切换
195 192 clickToSelect: true,
196   - // showColumns:true, //列选择
197   - // detailView:true,
198   - // showExport: true, //导出
199   - // exportDataType: "all", //导出类型basic', 'all', 'selected'.当前页、所有数据、选中数据
200 193 modalName: "收货",
  194 + onRefresh: function(){
  195 +
  196 + },
201 197 columns: [
202 198 {
203 199 field:'work',
... ... @@ -367,6 +363,7 @@
367 363 }
368 364 localStorage.removeItem("receiving_code");
369 365 }
  366 +
370 367 receiving_refresh();
371 368  
372 369 function remove(id) {
... ... @@ -390,7 +387,18 @@
390 387 ids += ",";
391 388 }
392 389 var data = { "ids": ids };
393   - $.operate.submit(url, "post", "json", data);
  390 + $.modal.loading("正在处理中,请稍后...");
  391 + var config = {
  392 + url: url,
  393 + type: "post",
  394 + dataType: "json",
  395 + data: data,
  396 + success: function(result) {
  397 + $.operate.ajaxSuccess(result);
  398 + list_receiptInfo($("#code").val());
  399 + }
  400 + };
  401 + $.ajax(config)
394 402 }
395 403  
396 404 function cancelPositioning() {
... ... @@ -406,7 +414,20 @@
406 414 ids += ",";
407 415 }
408 416 var data = { "ids": ids };
409   - $.operate.submit(url, "post", "json", data);
  417 +
  418 + $.modal.loading("正在处理中,请稍后...");
  419 + var config = {
  420 + url: url,
  421 + type: "post",
  422 + dataType: "json",
  423 + data: data,
  424 + success: function(result) {
  425 + $.operate.ajaxSuccess(result);
  426 + list_receiptInfo($("#code").val());
  427 + }
  428 + };
  429 + $.ajax(config)
  430 +
410 431 }
411 432  
412 433 function batRemove() {
... ... @@ -418,11 +439,22 @@
418 439 var url = ctx+"receipt/receiptContainerDetail/remove";
419 440 var ids = "";
420 441 for (var i = 0; i<rows.length; i++){
421   - ids += rows[i].receiptContainerId;
  442 + ids += rows[i].id;
422 443 ids += ",";
423 444 }
424 445 var data = { "ids": ids };
425   - $.operate.submit(url, "post", "json", data);
  446 + var config = {
  447 + url: url,
  448 + type: "post",
  449 + dataType: "json",
  450 + data: data,
  451 + success: function(result) {
  452 + $.operate.ajaxSuccess(result);
  453 + list_receiptInfo($("#code").val());
  454 + list_select($("#code").val());
  455 + }
  456 + };
  457 + $.ajax(config)
426 458 }
427 459 </script>
428 460 </body>
... ...