Commit 1a7134524f530ee63befbddb211e1765b3387395
Merge branch 'develop' of http://172.16.29.40:8010/wms/wms2 into develop
Showing
13 changed files
with
131 additions
and
15 deletions
src/main/java/com/huaheng/pc/config/materialType/service/MaterialTypeService.java
1 | package com.huaheng.pc.config.materialType.service; | 1 | package com.huaheng.pc.config.materialType.service; |
2 | 2 | ||
3 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||
4 | +import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||
3 | import org.springframework.stereotype.Service; | 5 | import org.springframework.stereotype.Service; |
4 | import javax.annotation.Resource; | 6 | import javax.annotation.Resource; |
5 | import java.util.List; | 7 | import java.util.List; |
8 | +import java.util.Map; | ||
9 | + | ||
6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 10 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
7 | import com.huaheng.pc.config.materialType.domain.MaterialType; | 11 | import com.huaheng.pc.config.materialType.domain.MaterialType; |
8 | import com.huaheng.pc.config.materialType.mapper.MaterialTypeMapper; | 12 | import com.huaheng.pc.config.materialType.mapper.MaterialTypeMapper; |
9 | -@Service | 13 | +@Service("materialType") |
10 | public class MaterialTypeService extends ServiceImpl<MaterialTypeMapper, MaterialType> { | 14 | public class MaterialTypeService extends ServiceImpl<MaterialTypeMapper, MaterialType> { |
11 | 15 | ||
16 | + public List<Map<String, Object>> queryType(){ | ||
17 | + LambdaQueryWrapper<MaterialType> lambda = Wrappers.lambdaQuery(); | ||
18 | + lambda.select(MaterialType::getCode, MaterialType::getName); | ||
19 | + return this.listMaps(lambda); | ||
20 | + } | ||
12 | } | 21 | } |
src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailServiceImpl.java
@@ -151,7 +151,12 @@ public class ShipmentDetailServiceImpl extends ServiceImpl<ShipmentDetailMapper, | @@ -151,7 +151,12 @@ public class ShipmentDetailServiceImpl extends ServiceImpl<ShipmentDetailMapper, | ||
151 | } | 151 | } |
152 | 152 | ||
153 | 153 | ||
154 | - //选中的单据加入波次 | 154 | + /** |
155 | + * 选中的单据加入波次 | ||
156 | + * 根据选中的主单ID和波次主表的code,判断主单之和是否符合波次的限制条件, | ||
157 | + * 看此code的波次是否建成未开始执行,如果是则只需修改波次属性,否则创建新的波次, | ||
158 | + * 修改加入波次的子单,修改子单和主单的状态,并修改子单的waveId | ||
159 | + */ | ||
155 | @Override | 160 | @Override |
156 | @Transactional | 161 | @Transactional |
157 | public void saveWave(String ids, String code) { | 162 | public void saveWave(String ids, String code) { |
@@ -228,14 +233,29 @@ public class ShipmentDetailServiceImpl extends ServiceImpl<ShipmentDetailMapper, | @@ -228,14 +233,29 @@ public class ShipmentDetailServiceImpl extends ServiceImpl<ShipmentDetailMapper, | ||
228 | } | 233 | } |
229 | } | 234 | } |
230 | 235 | ||
231 | - //修改出库子单 | 236 | + //修改出库子单,加入波次ID,并修改状态为波次 |
232 | for(ShipmentDetail shipmentDetail :shipmentDetailList){ | 237 | for(ShipmentDetail shipmentDetail :shipmentDetailList){ |
233 | shipmentDetail.setWaveId(wave.getId()); | 238 | shipmentDetail.setWaveId(wave.getId()); |
239 | + shipmentDetail.setStatus(200); | ||
234 | } | 240 | } |
235 | 241 | ||
236 | flag = this.updateBatchById(shipmentDetailList); | 242 | flag = this.updateBatchById(shipmentDetailList); |
237 | if(flag == false){ | 243 | if(flag == false){ |
238 | throw new ServiceException("出库子单加入波次失败"); | 244 | throw new ServiceException("出库子单加入波次失败"); |
239 | } | 245 | } |
246 | + | ||
247 | + List<ShipmentHeader> shipmentHeaderList=new ArrayList<>(); | ||
248 | + //修改主单状态 | ||
249 | + for (Integer id : Convert.toIntArray(ids)){ | ||
250 | + ShipmentHeader shipmentHeader = shipmentHeaderService.getById(id); | ||
251 | + shipmentHeader.setFirstStatus(200); | ||
252 | + shipmentHeader.setLastStatus(200); | ||
253 | + shipmentHeaderList.add(shipmentHeader); | ||
254 | + } | ||
255 | + flag = shipmentHeaderService.updateBatchById(shipmentHeaderList); | ||
256 | + if(flag == false){ | ||
257 | + throw new ServiceException("修改主单状态失败"); | ||
258 | + } | ||
259 | + | ||
240 | } | 260 | } |
241 | } | 261 | } |
src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java
@@ -272,6 +272,7 @@ public class ShipmentHeaderController extends BaseController | @@ -272,6 +272,7 @@ public class ShipmentHeaderController extends BaseController | ||
272 | } | 272 | } |
273 | 273 | ||
274 | shipmentDetailService.saveWave(ids,code); | 274 | shipmentDetailService.saveWave(ids,code); |
275 | + | ||
275 | return AjaxResult.success("加入波次成功"); | 276 | return AjaxResult.success("加入波次成功"); |
276 | } | 277 | } |
277 | 278 |
src/main/java/com/huaheng/pc/shipment/wave/controller/WaveController.java
@@ -173,4 +173,20 @@ public class WaveController extends BaseController { | @@ -173,4 +173,20 @@ public class WaveController extends BaseController { | ||
173 | return result; | 173 | return result; |
174 | } | 174 | } |
175 | 175 | ||
176 | + | ||
177 | + /** | ||
178 | + * 开始波次 | ||
179 | + */ | ||
180 | + @RequiresPermissions("shipment:wave:freed") | ||
181 | + @Log(title = "出库-波次", operating = "开始波次", action = BusinessType.UPDATE) | ||
182 | + @PostMapping("/freed") | ||
183 | + @ResponseBody | ||
184 | + public AjaxResult freed(String ids) { | ||
185 | + if (StringUtils.isEmpty(ids)){ | ||
186 | + return AjaxResult.error("id不能为空"); | ||
187 | + } | ||
188 | + AjaxResult result=waveService.freed(ids); | ||
189 | + return result; | ||
190 | + } | ||
191 | + | ||
176 | } | 192 | } |
src/main/java/com/huaheng/pc/shipment/wave/service/WaveService.java
@@ -3,6 +3,7 @@ package com.huaheng.pc.shipment.wave.service; | @@ -3,6 +3,7 @@ package com.huaheng.pc.shipment.wave.service; | ||
3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
4 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | 4 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
5 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 5 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
6 | +import com.huaheng.common.exception.service.ServiceException; | ||
6 | import com.huaheng.common.support.Convert; | 7 | import com.huaheng.common.support.Convert; |
7 | import com.huaheng.common.utils.security.ShiroUtils; | 8 | import com.huaheng.common.utils.security.ShiroUtils; |
8 | import com.huaheng.framework.web.domain.AjaxResult; | 9 | import com.huaheng.framework.web.domain.AjaxResult; |
@@ -28,12 +29,28 @@ public class WaveService extends ServiceImpl<WaveMapper, Wave> { | @@ -28,12 +29,28 @@ public class WaveService extends ServiceImpl<WaveMapper, Wave> { | ||
28 | @Autowired | 29 | @Autowired |
29 | private ShipmentContainerHeaderService shipmentContainerHeaderService; | 30 | private ShipmentContainerHeaderService shipmentContainerHeaderService; |
30 | 31 | ||
31 | - //开始波次,对带有此波次号的单据进行后续的后台操作 | 32 | + /** |
33 | + * 开始波次,对带有此波次号的单据进行后续的后台操作 | ||
34 | + * 1、查看波次是否符合开始波次的条件 | ||
35 | + * 2、整合波次的所有子单单据 | ||
36 | + * 3、对每个单据自动组盘,失败则回退 | ||
37 | + * 4、生成任务 | ||
38 | + * 5、修改波次的状态 | ||
39 | + */ | ||
32 | 40 | ||
33 | @Transactional | 41 | @Transactional |
34 | public AjaxResult startWave(String ids) { | 42 | public AjaxResult startWave(String ids) { |
43 | + List<Wave> waves = new ArrayList<>(); | ||
35 | List<ShipmentDetail> list = new ArrayList<>(); | 44 | List<ShipmentDetail> list = new ArrayList<>(); |
36 | for (Integer id : Convert.toIntArray(ids)) { | 45 | for (Integer id : Convert.toIntArray(ids)) { |
46 | + | ||
47 | + //查看此波次的状态,状态不为o时,无法开始波次 | ||
48 | + Wave wave = this.getById(id); | ||
49 | + if(wave == null || wave.getStatus() != 0){ | ||
50 | + return AjaxResult.error("id为"+id+"的波次找不到,或者状态不能做开始操作"); | ||
51 | + } | ||
52 | + waves.add(wave); | ||
53 | + | ||
37 | //找到此波次的单据 | 54 | //找到此波次的单据 |
38 | LambdaQueryWrapper<ShipmentDetail> lam = Wrappers.lambdaQuery(); | 55 | LambdaQueryWrapper<ShipmentDetail> lam = Wrappers.lambdaQuery(); |
39 | lam.eq(ShipmentDetail::getWaveId,id) | 56 | lam.eq(ShipmentDetail::getWaveId,id) |
@@ -52,6 +69,27 @@ public class WaveService extends ServiceImpl<WaveMapper, Wave> { | @@ -52,6 +69,27 @@ public class WaveService extends ServiceImpl<WaveMapper, Wave> { | ||
52 | //生成任务 | 69 | //生成任务 |
53 | shipmentContainerHeaderService.createTask(Arrays.asList(Convert.toIntArray(ajaxResult.getData().toString()))); | 70 | shipmentContainerHeaderService.createTask(Arrays.asList(Convert.toIntArray(ajaxResult.getData().toString()))); |
54 | } | 71 | } |
72 | + | ||
73 | + for(Wave wave : waves){ | ||
74 | + wave.setStatus(400); | ||
75 | + wave.setCurrentWaveStep("生成任务"); | ||
76 | + } | ||
77 | + Boolean flag = this.updateBatchById(waves); | ||
78 | + if(flag == false){ | ||
79 | + throw new ServiceException("波次运行失败,修改波次状态时报错"); | ||
80 | + } | ||
55 | return AjaxResult.success("波次运行成功"); | 81 | return AjaxResult.success("波次运行成功"); |
56 | } | 82 | } |
83 | + | ||
84 | + | ||
85 | + /** | ||
86 | + * 释放波次,执行任务 | ||
87 | + * @param ids | ||
88 | + * @return | ||
89 | + */ | ||
90 | + @Transactional | ||
91 | + public AjaxResult freed(String ids) { | ||
92 | + | ||
93 | + return null; | ||
94 | + } | ||
57 | } | 95 | } |
src/main/resources/static/huaheng/js/huahengUI.js
@@ -29,7 +29,7 @@ | @@ -29,7 +29,7 @@ | ||
29 | pageList: [10, 25, 50], // 可供选择的每页的行数(*) | 29 | pageList: [10, 25, 50], // 可供选择的每页的行数(*) |
30 | iconSize: 'outline', // 图标大小:undefined默认的按钮尺寸 xs超小按钮sm小按钮lg大按钮 | 30 | iconSize: 'outline', // 图标大小:undefined默认的按钮尺寸 xs超小按钮sm小按钮lg大按钮 |
31 | toolbar: '#toolbar', // 指定工作栏 | 31 | toolbar: '#toolbar', // 指定工作栏 |
32 | - sidePagination: "server", // 启用服务端分页 | 32 | + sidePagination: "server", // 启用服务端分页 |
33 | search: $.common.visible(options.search), // 是否显示搜索框功能 | 33 | search: $.common.visible(options.search), // 是否显示搜索框功能 |
34 | showRefresh: $.common.visible(options.showRefresh), // 是否显示刷新按钮 | 34 | showRefresh: $.common.visible(options.showRefresh), // 是否显示刷新按钮 |
35 | showColumns: $.common.visible(options.showColumns), // 是否显示隐藏某列下拉框 | 35 | showColumns: $.common.visible(options.showColumns), // 是否显示隐藏某列下拉框 |
src/main/resources/templates/config/material/add.html
@@ -40,8 +40,8 @@ | @@ -40,8 +40,8 @@ | ||
40 | <div class="form-group"> | 40 | <div class="form-group"> |
41 | <label class="col-sm-3 control-label">物料类别:</label> | 41 | <label class="col-sm-3 control-label">物料类别:</label> |
42 | <div class="col-sm-8"> | 42 | <div class="col-sm-8"> |
43 | - <select id="type" name="type" class="form-control" th:with="materialType=${@dict.getType('materialType')}"> | ||
44 | - <option th:each="item : ${materialType}" th:text="${item['dictLabel']}" th:value="${item['dictValue']}"></option> | 43 | + <select id="type" name="type" class="form-control" th:with="materialType=${@materialType.queryType()}"> |
44 | + <option th:each="item : ${materialType}" th:text="${item['name']}" th:value="${item['code']}"></option> | ||
45 | </select> | 45 | </select> |
46 | </div> | 46 | </div> |
47 | </div> | 47 | </div> |
src/main/resources/templates/config/material/edit.html
@@ -35,9 +35,8 @@ | @@ -35,9 +35,8 @@ | ||
35 | <div class="form-group"> | 35 | <div class="form-group"> |
36 | <label class="col-sm-3 control-label">物料类别:</label> | 36 | <label class="col-sm-3 control-label">物料类别:</label> |
37 | <div class="col-sm-8"> | 37 | <div class="col-sm-8"> |
38 | - <select id="type" name="type" class="form-control" th:with="materialType=${@dict.getType('materialType')}"> | ||
39 | - <option th:each="item : ${materialType}" th:text="${item['dictLabel']}" th:value="${item['dictValue']}" | ||
40 | - th:field="*{type}"></option> | 38 | + <select id="type" name="type" class="form-control" th:with="materialType=${@materialType.queryType()}" th:field="*{type}"> |
39 | + <option th:each="item : ${materialType}" th:text="${item['name']}" th:value="${item['code']}"></option> | ||
41 | </select> | 40 | </select> |
42 | </div> | 41 | </div> |
43 | </div> | 42 | </div> |
src/main/resources/templates/config/material/material.html
@@ -66,7 +66,7 @@ | @@ -66,7 +66,7 @@ | ||
66 | var removeFlag = [[${@permission.hasPermi('config:material:remove')}]]; | 66 | var removeFlag = [[${@permission.hasPermi('config:material:remove')}]]; |
67 | var prefix = ctx + "config/material"; | 67 | var prefix = ctx + "config/material"; |
68 | var datas = [[${@dict.getType('sys_normal_disable')}]]; | 68 | var datas = [[${@dict.getType('sys_normal_disable')}]]; |
69 | - var mType = [[${@dict.getType('materialType')}]]; | 69 | + var mType = [[${@materialType.queryType()}]]; |
70 | $(function() { | 70 | $(function() { |
71 | var options = { | 71 | var options = { |
72 | url: prefix + "/list", | 72 | url: prefix + "/list", |
@@ -95,7 +95,14 @@ | @@ -95,7 +95,14 @@ | ||
95 | title : '物料类别' , | 95 | title : '物料类别' , |
96 | align: 'center', | 96 | align: 'center', |
97 | formatter: function(value, row, index) { | 97 | formatter: function(value, row, index) { |
98 | - return $.table.selectDictLabel(mType, value); | 98 | + var actions = []; |
99 | + $.each(mType, function(index, dict) { | ||
100 | + if (dict.code == value) { | ||
101 | + actions.push("<span class='badge badge-" + dict.code + "'>" + dict.name + "</span>"); | ||
102 | + return false; | ||
103 | + } | ||
104 | + }); | ||
105 | + return actions.join(''); | ||
99 | } | 106 | } |
100 | }, | 107 | }, |
101 | { | 108 | { |
src/main/resources/templates/config/statusFlowHeader/add.html
@@ -20,7 +20,9 @@ | @@ -20,7 +20,9 @@ | ||
20 | <div class="form-group"> | 20 | <div class="form-group"> |
21 | <label class="col-sm-3 control-label">模块:</label> | 21 | <label class="col-sm-3 control-label">模块:</label> |
22 | <div class="col-sm-8"> | 22 | <div class="col-sm-8"> |
23 | - <input id="moduleType" name="moduleType" class="form-control" type="text"> | 23 | + <select id="moduleType" name="moduleType" class="form-control" th:with="moduleTyped=${@dict.getType('moduleType')}"> |
24 | + <option th:each="item : ${moduleType}" th:text="${item['dictLabel']}" th:value="${item['dictValue']}"></option> | ||
25 | + </select> | ||
24 | </div> | 26 | </div> |
25 | </div> | 27 | </div> |
26 | <div class="form-group"> | 28 | <div class="form-group"> |
src/main/resources/templates/config/statusFlowHeader/edit.html
@@ -21,7 +21,9 @@ | @@ -21,7 +21,9 @@ | ||
21 | <div class="form-group"> | 21 | <div class="form-group"> |
22 | <label class="col-sm-3 control-label">模块:</label> | 22 | <label class="col-sm-3 control-label">模块:</label> |
23 | <div class="col-sm-8"> | 23 | <div class="col-sm-8"> |
24 | - <input id="moduleType" name="moduleType" class="form-control" type="text" th:field="*{moduleType}"> | 24 | + <select id="moduleType" name="moduleType" class="form-control" th:with="moduleTyped=${@dict.getType('moduleType')}" th:field="*{moduleType}"> |
25 | + <option th:each="item : ${moduleType}" th:text="${item['dictLabel']}" th:value="${item['dictValue']}"></option> | ||
26 | + </select> | ||
25 | </div> | 27 | </div> |
26 | </div> | 28 | </div> |
27 | <div class="form-group"> | 29 | <div class="form-group"> |
src/main/resources/templates/shipment/wave/wave.html
@@ -231,6 +231,23 @@ | @@ -231,6 +231,23 @@ | ||
231 | }; | 231 | }; |
232 | localSubmit(url, "post", "json", data); | 232 | localSubmit(url, "post", "json", data); |
233 | } | 233 | } |
234 | + | ||
235 | + | ||
236 | + //释放 | ||
237 | + function freed() { | ||
238 | + var rows = $("#bootstrap-table").bootstrapTable('getSelections'); | ||
239 | + if (rows.length == 0) { | ||
240 | + $.modal.alertWarning("请至少选择一条记录"); | ||
241 | + return; | ||
242 | + } | ||
243 | + var url = prefix + "/freed"; | ||
244 | + var data = { | ||
245 | + "ids": rows.map(function (v) { | ||
246 | + return v.id; | ||
247 | + }).join(',') | ||
248 | + }; | ||
249 | + localSubmit(url, "post", "json", data); | ||
250 | + } | ||
234 | </script> | 251 | </script> |
235 | </body> | 252 | </body> |
236 | </html> | 253 | </html> |
237 | \ No newline at end of file | 254 | \ No newline at end of file |
src/main/resources/templates/system/dict/data/data.html
@@ -146,7 +146,12 @@ | @@ -146,7 +146,12 @@ | ||
146 | 146 | ||
147 | function queryParams(params) { | 147 | function queryParams(params) { |
148 | return { | 148 | return { |
149 | - dictType: $("#dictType").val() | 149 | + dictType: $("#dictType").val(), |
150 | + pageSize: params.limit, | ||
151 | + pageNum: params.offset / params.limit + 1, | ||
152 | + searchValue: params.search, | ||
153 | + orderByColumn: params.sort, | ||
154 | + isAsc: params.order | ||
150 | }; | 155 | }; |
151 | } | 156 | } |
152 | 157 |