Commit cc9dad801d54ffd8efebc4aa0359b99915747fe6
Merge branch 'develop' of http://172.16.29.40:8010/wms/wms4 into develop
* 'develop' of http://172.16.29.40:8010/wms/wms4: 入库增加序列号 增加出库预配盘
Showing
18 changed files
with
290 additions
and
77 deletions
ant-design-vue-jeecg/src/views/system/inventory/InventoryDetailList.vue
@@ -216,11 +216,11 @@ export default { | @@ -216,11 +216,11 @@ export default { | ||
216 | align: 'center', | 216 | align: 'center', |
217 | dataIndex: 'batch' | 217 | dataIndex: 'batch' |
218 | }, | 218 | }, |
219 | - // { | ||
220 | - // title: '序列号', | ||
221 | - // align: "center", | ||
222 | - // dataIndex: 'sn' | ||
223 | - // }, | 219 | + { |
220 | + title: '序列号', | ||
221 | + align: "center", | ||
222 | + dataIndex: 'sn' | ||
223 | + }, | ||
224 | { | 224 | { |
225 | title: '入库日期', | 225 | title: '入库日期', |
226 | align: 'center', | 226 | align: 'center', |
ant-design-vue-jeecg/src/views/system/inventory/SimpleInventoryDetailList.vue
@@ -350,11 +350,11 @@ export default { | @@ -350,11 +350,11 @@ export default { | ||
350 | align: 'center', | 350 | align: 'center', |
351 | dataIndex: 'batch' | 351 | dataIndex: 'batch' |
352 | }, | 352 | }, |
353 | - // { | ||
354 | - // title:'序列号', | ||
355 | - // align:"center", | ||
356 | - // dataIndex: 'sn' | ||
357 | - // }, | 353 | + { |
354 | + title:'序列号', | ||
355 | + align:"center", | ||
356 | + dataIndex: 'sn' | ||
357 | + }, | ||
358 | { | 358 | { |
359 | title: '入库日期', | 359 | title: '入库日期', |
360 | align: 'center', | 360 | align: 'center', |
ant-design-vue-jeecg/src/views/system/receipt/ReceiptContainerDetailList.vue
@@ -219,6 +219,11 @@ export default { | @@ -219,6 +219,11 @@ export default { | ||
219 | dataIndex: 'batch' | 219 | dataIndex: 'batch' |
220 | }, | 220 | }, |
221 | { | 221 | { |
222 | + title: '序列号', | ||
223 | + align: "center", | ||
224 | + dataIndex: 'sn' | ||
225 | + }, | ||
226 | + { | ||
222 | title: '创建人', | 227 | title: '创建人', |
223 | align: "center", | 228 | align: "center", |
224 | dataIndex: 'createBy' | 229 | dataIndex: 'createBy' |
ant-design-vue-jeecg/src/views/system/shipment/ShipmentContainerDetailList.vue
@@ -220,6 +220,11 @@ export default { | @@ -220,6 +220,11 @@ export default { | ||
220 | dataIndex: 'batch' | 220 | dataIndex: 'batch' |
221 | }, | 221 | }, |
222 | { | 222 | { |
223 | + title: '序列号', | ||
224 | + align: "center", | ||
225 | + dataIndex: 'sn' | ||
226 | + }, | ||
227 | + { | ||
223 | title: '创建人', | 228 | title: '创建人', |
224 | align: "center", | 229 | align: "center", |
225 | dataIndex: 'createBy' | 230 | dataIndex: 'createBy' |
ant-design-vue-jeecg/src/views/system/task/TaskDetailList.vue
@@ -188,6 +188,11 @@ export default { | @@ -188,6 +188,11 @@ export default { | ||
188 | dataIndex: 'batch' | 188 | dataIndex: 'batch' |
189 | }, | 189 | }, |
190 | { | 190 | { |
191 | + title: '序列号', | ||
192 | + align: 'center', | ||
193 | + dataIndex: 'sn' | ||
194 | + }, | ||
195 | + { | ||
191 | title: '库存状态', | 196 | title: '库存状态', |
192 | align: 'center', | 197 | align: 'center', |
193 | dataIndex: 'inventoryStatus_dictText', | 198 | dataIndex: 'inventoryStatus_dictText', |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mes/entity/MaterialInfo.java
@@ -28,6 +28,11 @@ public class MaterialInfo implements Comparable<MaterialInfo> { | @@ -28,6 +28,11 @@ public class MaterialInfo implements Comparable<MaterialInfo> { | ||
28 | */ | 28 | */ |
29 | @ApiModelProperty(value = "顺序") | 29 | @ApiModelProperty(value = "顺序") |
30 | private int sequence; | 30 | private int sequence; |
31 | + /** | ||
32 | + * 序列号 | ||
33 | + */ | ||
34 | + @ApiModelProperty(value = "序列号") | ||
35 | + private String sn; | ||
31 | 36 | ||
32 | @Override | 37 | @Override |
33 | public int compareTo(@NotNull MaterialInfo o) { | 38 | public int compareTo(@NotNull MaterialInfo o) { |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mes/servuce/impl/MesServiceImpl.java
@@ -112,30 +112,28 @@ public class MesServiceImpl implements IMesService { | @@ -112,30 +112,28 @@ public class MesServiceImpl implements IMesService { | ||
112 | if (receiptDetailList == null || receiptDetailList.size() == 0) { | 112 | if (receiptDetailList == null || receiptDetailList.size() == 0) { |
113 | return Result.error("MES下发入库信息,没有找到匹配的入库单详情, 上游单号:" + referCode); | 113 | return Result.error("MES下发入库信息,没有找到匹配的入库单详情, 上游单号:" + referCode); |
114 | } | 114 | } |
115 | - for (ReceiptDetail receiptDetail : receiptDetailList) { | ||
116 | - String materialCode = receiptDetail.getMaterialCode(); | ||
117 | - BigDecimal taskQty = BigDecimal.ZERO; | ||
118 | - boolean hav = false; | ||
119 | - for (MaterialInfo materialInfo : materialInfoList) { | 115 | + |
116 | + for (MaterialInfo materialInfo : materialInfoList) { | ||
117 | + for (ReceiptDetail receiptDetail : receiptDetailList) { | ||
118 | + String materialCode = receiptDetail.getMaterialCode(); | ||
119 | + BigDecimal taskQty = BigDecimal.ZERO; | ||
120 | if (materialInfo.getMaterialCode().equals(materialCode)) { | 120 | if (materialInfo.getMaterialCode().equals(materialCode)) { |
121 | - hav = true; | ||
122 | taskQty = materialInfo.getQty(); | 121 | taskQty = materialInfo.getQty(); |
123 | - break; | 122 | + String sn = materialInfo.getSn(); |
123 | + Receive receive = new Receive(); | ||
124 | + receive.setId(receiptDetail.getId()); | ||
125 | + receive.setContainerCode(containerCode); | ||
126 | + receive.setMaterialCode(materialCode); | ||
127 | + receive.setMaterialName(receiptDetail.getMaterialName()); | ||
128 | + receive.setMaterialSpec(receiptDetail.getMaterialSpec()); | ||
129 | + receive.setMaterialUnit(receiptDetail.getMaterialUnit()); | ||
130 | + receive.setInventoryStatus(receiptDetail.getInventoryStatus()); | ||
131 | + receive.setQty(receiptDetail.getQty()); | ||
132 | + receive.setSn(sn); | ||
133 | + receive.setTaskQty(taskQty); | ||
134 | + receiveList.add(receive); | ||
124 | } | 135 | } |
125 | } | 136 | } |
126 | - if (hav) { | ||
127 | - Receive receive = new Receive(); | ||
128 | - receive.setId(receiptDetail.getId()); | ||
129 | - receive.setContainerCode(containerCode); | ||
130 | - receive.setMaterialCode(materialCode); | ||
131 | - receive.setMaterialName(receiptDetail.getMaterialName()); | ||
132 | - receive.setMaterialSpec(receiptDetail.getMaterialSpec()); | ||
133 | - receive.setMaterialUnit(receiptDetail.getMaterialUnit()); | ||
134 | - receive.setInventoryStatus(receiptDetail.getInventoryStatus()); | ||
135 | - receive.setQty(receiptDetail.getQty()); | ||
136 | - receive.setTaskQty(taskQty); | ||
137 | - receiveList.add(receive); | ||
138 | - } | ||
139 | } | 137 | } |
140 | Result result = receiveService.receiving(receiveList, warehouseCode); | 138 | Result result = receiveService.receiving(receiveList, warehouseCode); |
141 | if (!result.isSuccess()) { | 139 | if (!result.isSuccess()) { |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/tv/TvController.java
1 | package org.jeecg.modules.wms.api.tv; | 1 | package org.jeecg.modules.wms.api.tv; |
2 | 2 | ||
3 | -import cn.hutool.core.collection.CollUtil; | ||
4 | -import cn.hutool.core.collection.CollectionUtil; | ||
5 | -import cn.hutool.core.date.DateUtil; | ||
6 | -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||
7 | -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; | ||
8 | -import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||
9 | -import io.swagger.annotations.Api; | ||
10 | -import io.swagger.annotations.ApiOperation; | ||
11 | -import lombok.extern.slf4j.Slf4j; | 3 | +import java.math.BigDecimal; |
4 | +import java.util.*; | ||
5 | +import java.util.stream.Collectors; | ||
6 | + | ||
7 | +import javax.annotation.Resource; | ||
8 | +import javax.servlet.http.HttpServletResponse; | ||
9 | + | ||
12 | import org.jeecg.common.api.vo.Result; | 10 | import org.jeecg.common.api.vo.Result; |
13 | import org.jeecg.modules.wms.api.mobile.entity.TvTaskVo; | 11 | import org.jeecg.modules.wms.api.mobile.entity.TvTaskVo; |
14 | import org.jeecg.modules.wms.config.location.entity.Location; | 12 | import org.jeecg.modules.wms.config.location.entity.Location; |
@@ -18,27 +16,29 @@ import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail; | @@ -18,27 +16,29 @@ import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail; | ||
18 | import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService; | 16 | import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService; |
19 | import org.jeecg.modules.wms.inventory.inventoryTransaction.entity.InventoryTransaction; | 17 | import org.jeecg.modules.wms.inventory.inventoryTransaction.entity.InventoryTransaction; |
20 | import org.jeecg.modules.wms.inventory.inventoryTransaction.service.IInventoryTransactionService; | 18 | import org.jeecg.modules.wms.inventory.inventoryTransaction.service.IInventoryTransactionService; |
19 | +import org.jeecg.modules.wms.shipment.shipmentContainerAdvice.entity.ShipmentContainerAdvice; | ||
20 | +import org.jeecg.modules.wms.shipment.shipmentContainerAdvice.service.IShipmentContainerAdviceService; | ||
21 | import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentDetail; | 21 | import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentDetail; |
22 | import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentDetailService; | 22 | import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentDetailService; |
23 | import org.jeecg.modules.wms.task.taskHeader.entity.TaskDetail; | 23 | import org.jeecg.modules.wms.task.taskHeader.entity.TaskDetail; |
24 | import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader; | 24 | import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader; |
25 | -import org.jeecg.modules.wms.task.taskHeader.service.ITaskDetailService; | ||
26 | -import org.jeecg.modules.wms.task.taskHeader.service.ITaskHeaderService; | ||
27 | import org.jeecg.modules.wms.task.taskHeader.service.impl.TaskDetailServiceImpl; | 25 | import org.jeecg.modules.wms.task.taskHeader.service.impl.TaskDetailServiceImpl; |
28 | import org.jeecg.modules.wms.task.taskHeader.service.impl.TaskHeaderServiceImpl; | 26 | import org.jeecg.modules.wms.task.taskHeader.service.impl.TaskHeaderServiceImpl; |
29 | import org.jeecg.utils.StringUtils; | 27 | import org.jeecg.utils.StringUtils; |
30 | import org.jeecg.utils.constant.QuantityConstant; | 28 | import org.jeecg.utils.constant.QuantityConstant; |
31 | -import org.jeecg.utils.support.PassApiAuthentication; | ||
32 | import org.springframework.beans.factory.annotation.Value; | 29 | import org.springframework.beans.factory.annotation.Value; |
33 | import org.springframework.web.bind.annotation.GetMapping; | 30 | import org.springframework.web.bind.annotation.GetMapping; |
34 | import org.springframework.web.bind.annotation.RequestMapping; | 31 | import org.springframework.web.bind.annotation.RequestMapping; |
35 | import org.springframework.web.bind.annotation.RestController; | 32 | import org.springframework.web.bind.annotation.RestController; |
36 | 33 | ||
37 | -import javax.annotation.Resource; | ||
38 | -import javax.servlet.http.HttpServletResponse; | ||
39 | -import java.math.BigDecimal; | ||
40 | -import java.util.*; | ||
41 | -import java.util.stream.Collectors; | 34 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
35 | +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; | ||
36 | +import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||
37 | + | ||
38 | +import cn.hutool.core.collection.CollUtil; | ||
39 | +import cn.hutool.core.date.DateUtil; | ||
40 | +import io.swagger.annotations.Api; | ||
41 | +import lombok.extern.slf4j.Slf4j; | ||
42 | 42 | ||
43 | /** | 43 | /** |
44 | */ | 44 | */ |
@@ -71,9 +71,11 @@ public class TvController { | @@ -71,9 +71,11 @@ public class TvController { | ||
71 | 71 | ||
72 | @Resource | 72 | @Resource |
73 | private IInventoryDetailService inventoryDetailService; | 73 | private IInventoryDetailService inventoryDetailService; |
74 | + @Resource | ||
75 | + private IShipmentContainerAdviceService shipmentContainerAdviceService; | ||
74 | 76 | ||
75 | @GetMapping("taskOfStation") | 77 | @GetMapping("taskOfStation") |
76 | - public Result<List<TvTaskVo>> importExcel(String code, HttpServletResponse response) { | 78 | + public Result<List<TvTaskVo>> taskOfStation(String code, HttpServletResponse response) { |
77 | 79 | ||
78 | addResponseHeader(response, QuantityConstant.TV_VERSION); | 80 | addResponseHeader(response, QuantityConstant.TV_VERSION); |
79 | List<String> stationList = new ArrayList<>(); | 81 | List<String> stationList = new ArrayList<>(); |
@@ -103,8 +105,7 @@ public class TvController { | @@ -103,8 +105,7 @@ public class TvController { | ||
103 | statusMap.put("100", "任务完成"); | 105 | statusMap.put("100", "任务完成"); |
104 | 106 | ||
105 | LambdaQueryWrapper<TaskHeader> hQuery = Wrappers.lambdaQuery(); | 107 | LambdaQueryWrapper<TaskHeader> hQuery = Wrappers.lambdaQuery(); |
106 | - hQuery.eq(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_ARRIVED_STATION) | ||
107 | - .in(stationList.size() > 0, TaskHeader::getToPortCode, stationList); | 108 | + hQuery.eq(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_ARRIVED_STATION).in(stationList.size() > 0, TaskHeader::getToPortCode, stationList); |
108 | List<TaskHeader> headers = taskHeaderService.list(hQuery); | 109 | List<TaskHeader> headers = taskHeaderService.list(hQuery); |
109 | 110 | ||
110 | List<TvTaskVo> list = new ArrayList<>(); | 111 | List<TvTaskVo> list = new ArrayList<>(); |
@@ -128,12 +129,12 @@ public class TvController { | @@ -128,12 +129,12 @@ public class TvController { | ||
128 | * @param response | 129 | * @param response |
129 | * @param key | 130 | * @param key |
130 | */ | 131 | */ |
131 | - private void addResponseHeader(HttpServletResponse response, String key){ | 132 | + private void addResponseHeader(HttpServletResponse response, String key) { |
132 | try { | 133 | try { |
133 | String version = parameterConfigurationService.getValueByCode(key); | 134 | String version = parameterConfigurationService.getValueByCode(key); |
134 | response.setHeader(key, version); | 135 | response.setHeader(key, version); |
135 | - response.setHeader("Access-Control-Expose-Headers",key); | ||
136 | - }catch (Exception e){ | 136 | + response.setHeader("Access-Control-Expose-Headers", key); |
137 | + } catch (Exception e) { | ||
137 | log.error("查找电视版本参数错误", e); | 138 | log.error("查找电视版本参数错误", e); |
138 | } | 139 | } |
139 | } | 140 | } |
@@ -287,13 +288,13 @@ public class TvController { | @@ -287,13 +288,13 @@ public class TvController { | ||
287 | long sumNum = sumLocationList.size(); | 288 | long sumNum = sumLocationList.size(); |
288 | long haveContainerNum = sumLocationList.stream().filter(l -> StringUtils.isNotEmpty(l.getContainerCode())).count(); | 289 | long haveContainerNum = sumLocationList.stream().filter(l -> StringUtils.isNotEmpty(l.getContainerCode())).count(); |
289 | long unHaveContainerNum = sumNum - haveContainerNum; | 290 | long unHaveContainerNum = sumNum - haveContainerNum; |
290 | - //巷道 | 291 | + // 巷道 |
291 | resultMap.put("roadWay", roadWay + "号巷道"); | 292 | resultMap.put("roadWay", roadWay + "号巷道"); |
292 | - //库位总数 | 293 | + // 库位总数 |
293 | resultMap.put("sumNum", String.valueOf(sumNum)); | 294 | resultMap.put("sumNum", String.valueOf(sumNum)); |
294 | - //有托盘库位 | 295 | + // 有托盘库位 |
295 | resultMap.put("haveContainerNum", String.valueOf(haveContainerNum)); | 296 | resultMap.put("haveContainerNum", String.valueOf(haveContainerNum)); |
296 | - //空闲库位 | 297 | + // 空闲库位 |
297 | resultMap.put("unHaveContainerNum", String.valueOf(unHaveContainerNum)); | 298 | resultMap.put("unHaveContainerNum", String.valueOf(unHaveContainerNum)); |
298 | float usagerate = (Math.round(haveContainerNum / (float)sumNum * 100)) / 100f; | 299 | float usagerate = (Math.round(haveContainerNum / (float)sumNum * 100)) / 100f; |
299 | resultMap.put("usagerate", (int)(usagerate * 100) + "%"); | 300 | resultMap.put("usagerate", (int)(usagerate * 100) + "%"); |
@@ -355,4 +356,53 @@ public class TvController { | @@ -355,4 +356,53 @@ public class TvController { | ||
355 | return Result.OK(result); | 356 | return Result.OK(result); |
356 | } | 357 | } |
357 | 358 | ||
359 | + @GetMapping("getAdviceByTv") | ||
360 | + public Result getAdviceByTv(String code, HttpServletResponse response) { | ||
361 | + | ||
362 | + addResponseHeader(response, QuantityConstant.TV_VERSION); | ||
363 | + List<String> stationList = new ArrayList<>(); | ||
364 | + if (StringUtils.isNotEmpty(code)) { | ||
365 | + stationList = Arrays.asList(code.split(",")); | ||
366 | + } | ||
367 | + | ||
368 | + HashMap<String, String> typeMap = new HashMap<>(); | ||
369 | + typeMap.put("100", "整盘入库"); | ||
370 | + typeMap.put("200", "补充入库"); | ||
371 | + typeMap.put("300", "整盘出库"); | ||
372 | + typeMap.put("400", "分拣出库"); | ||
373 | + typeMap.put("500", "空容器入库"); | ||
374 | + typeMap.put("600", "空容器出库"); | ||
375 | + typeMap.put("700", "盘点"); | ||
376 | + typeMap.put("800", "移库"); | ||
377 | + typeMap.put("900", "出库查看"); | ||
378 | + typeMap.put("1000", "换站"); | ||
379 | + typeMap.put("1100", "空托盘组入库"); | ||
380 | + typeMap.put("1200", "空托盘组出库"); | ||
381 | + typeMap.put("1300", "空托盘组换站"); | ||
382 | + | ||
383 | + HashMap<String, String> statusMap = new HashMap<>(); | ||
384 | + statusMap.put("1", "生成任务"); | ||
385 | + statusMap.put("10", "下发任务"); | ||
386 | + statusMap.put("50", "到达拣选台"); | ||
387 | + statusMap.put("100", "任务完成"); | ||
388 | + | ||
389 | + LambdaQueryWrapper<TaskHeader> hQuery = Wrappers.lambdaQuery(); | ||
390 | + hQuery.eq(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_ARRIVED_STATION).in(stationList.size() > 0, TaskHeader::getToPortCode, stationList); | ||
391 | + List<TaskHeader> taskHeaderList = taskHeaderService.list(hQuery); | ||
392 | + | ||
393 | + List<ShipmentContainerAdvice> shipmentContainerAdviceList = new ArrayList<>(); | ||
394 | + for (TaskHeader taskHeader : taskHeaderList) { | ||
395 | + if (taskHeader.getTaskType() == QuantityConstant.TASK_TYPE_SORTINGSHIPMENT) { | ||
396 | + int shipmentContainerHeaderId = taskHeader.getShipmentContainerHeaderId(); | ||
397 | + List<ShipmentContainerAdvice> shipmentContainerAdviceList1 = | ||
398 | + shipmentContainerAdviceService.getShipmentContainerAdviceListByShipmentContainerId(shipmentContainerHeaderId); | ||
399 | + if (CollectionUtils.isNotEmpty(shipmentContainerAdviceList1)) { | ||
400 | + shipmentContainerAdviceList.addAll(shipmentContainerAdviceList1); | ||
401 | + } | ||
402 | + } | ||
403 | + } | ||
404 | + | ||
405 | + return Result.OK(shipmentContainerAdviceList); | ||
406 | + } | ||
407 | + | ||
358 | } | 408 | } |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java
@@ -280,9 +280,7 @@ public class WcsServiceImpl implements WcsService { | @@ -280,9 +280,7 @@ public class WcsServiceImpl implements WcsService { | ||
280 | } | 280 | } |
281 | } | 281 | } |
282 | if (taskType == QuantityConstant.TASK_TYPE_WHOLERECEIPT) { | 282 | if (taskType == QuantityConstant.TASK_TYPE_WHOLERECEIPT) { |
283 | - if (!lockStationService.unlockStation(taskHeader.getToPortCode(), warehouseCode)) { | ||
284 | - throw new JeecgBootException("分配库位,解锁站台失败:" + taskHeader.getToPortCode()); | ||
285 | - } | 283 | + lockStationService.unlockStation(taskHeader.getToPortCode(), warehouseCode); |
286 | } | 284 | } |
287 | taskHeader = new TaskHeader(); | 285 | taskHeader = new TaskHeader(); |
288 | taskHeader.setId(Integer.parseInt(taskNo)); | 286 | taskHeader.setId(Integer.parseInt(taskNo)); |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java
@@ -224,6 +224,7 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai | @@ -224,6 +224,7 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai | ||
224 | taskDetail.setBatch(receiptContainerDetail.getBatch()); | 224 | taskDetail.setBatch(receiptContainerDetail.getBatch()); |
225 | taskDetail.setLot(receiptContainerDetail.getLot()); | 225 | taskDetail.setLot(receiptContainerDetail.getLot()); |
226 | taskDetail.setProject(receiptContainerDetail.getProject()); | 226 | taskDetail.setProject(receiptContainerDetail.getProject()); |
227 | + taskDetail.setSn(receiptContainerDetail.getSn()); | ||
227 | taskDetail.setReceiveTime(receiptContainerDetail.getReceiveTime()); | 228 | taskDetail.setReceiveTime(receiptContainerDetail.getReceiveTime()); |
228 | taskDetailList.add(taskDetail); | 229 | taskDetailList.add(taskDetail); |
229 | ReceiptDetail receiptDetail = receiptDetailService.getById(receiptContainerDetail.getReceiptDetailId()); | 230 | ReceiptDetail receiptDetail = receiptDetailService.getById(receiptContainerDetail.getReceiptDetailId()); |
@@ -260,7 +261,7 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai | @@ -260,7 +261,7 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai | ||
260 | throw new JeecgBootException("创建入库任务, 更新入库单明细失败"); | 261 | throw new JeecgBootException("创建入库任务, 更新入库单明细失败"); |
261 | } | 262 | } |
262 | } | 263 | } |
263 | - String value = parameterConfigurationService.getValueByCode(QuantityConstant.START_LOCKING_STATION,zoneCode); | 264 | + String value = parameterConfigurationService.getValueByCode(QuantityConstant.START_LOCKING_STATION, zoneCode); |
264 | if (StringUtils.isNotEmpty(value)) { | 265 | if (StringUtils.isNotEmpty(value)) { |
265 | int lockStation = Integer.parseInt(value); | 266 | int lockStation = Integer.parseInt(value); |
266 | if (lockStation == QuantityConstant.START_LOCK_STATION) { | 267 | if (lockStation == QuantityConstant.START_LOCK_STATION) { |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java
@@ -1202,6 +1202,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi | @@ -1202,6 +1202,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi | ||
1202 | if (shipmentContainerHeader == null) { | 1202 | if (shipmentContainerHeader == null) { |
1203 | return Result.error("生成出库任务时, 出库组盘头" + "未找到,操作中止"); | 1203 | return Result.error("生成出库任务时, 出库组盘头" + "未找到,操作中止"); |
1204 | } | 1204 | } |
1205 | + shipmentContainerHeader = shipmentContainerHeaderService.getById(shipmentContainerHeader.getId()); | ||
1205 | if (shipmentContainerHeader.getStatus() >= QuantityConstant.SHIPMENT_CONTAINER_TASK) { | 1206 | if (shipmentContainerHeader.getStatus() >= QuantityConstant.SHIPMENT_CONTAINER_TASK) { |
1206 | return Result.error("生成出库任务时, 出库组盘头" + shipmentContainerHeader.getId() + "已经生成任务,请不要重复生成,操作中止"); | 1207 | return Result.error("生成出库任务时, 出库组盘头" + shipmentContainerHeader.getId() + "已经生成任务,请不要重复生成,操作中止"); |
1207 | } | 1208 | } |
@@ -1245,10 +1246,6 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi | @@ -1245,10 +1246,6 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi | ||
1245 | } | 1246 | } |
1246 | int taskType = QuantityConstant.TASK_TYPE_SORTINGSHIPMENT; | 1247 | int taskType = QuantityConstant.TASK_TYPE_SORTINGSHIPMENT; |
1247 | String zoneCode = location.getZoneCode(); | 1248 | String zoneCode = location.getZoneCode(); |
1248 | -// if (taskType == QuantityConstant.TASK_TYPE_SORTINGSHIPMENT) { | ||
1249 | -// shipmentContainerHeader.setToLocationCode(fromLocationCode); | ||
1250 | -// } | ||
1251 | - shipmentContainerHeader.setTaskType(taskType); | ||
1252 | TaskHeader taskHeader = new TaskHeader(); | 1249 | TaskHeader taskHeader = new TaskHeader(); |
1253 | taskHeader.setPreTaskNo(preTaskNo); | 1250 | taskHeader.setPreTaskNo(preTaskNo); |
1254 | taskHeader.setTaskType(taskType); | 1251 | taskHeader.setTaskType(taskType); |
@@ -1267,8 +1264,11 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi | @@ -1267,8 +1264,11 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi | ||
1267 | if (!success) { | 1264 | if (!success) { |
1268 | throw new JeecgBootException("生成出库任务时, 创建任务失败"); | 1265 | throw new JeecgBootException("生成出库任务时, 创建任务失败"); |
1269 | } | 1266 | } |
1270 | - shipmentContainerHeader.setStatus(QuantityConstant.SHIPMENT_CONTAINER_TASK); | ||
1271 | - success = shipmentContainerHeaderService.updateById(shipmentContainerHeader); | 1267 | + ShipmentContainerHeader shipmentContainerHeader1 = new ShipmentContainerHeader(); |
1268 | + shipmentContainerHeader1.setId(shipmentContainerHeader.getId()); | ||
1269 | + shipmentContainerHeader1.setTaskType(taskType); | ||
1270 | + shipmentContainerHeader1.setStatus(QuantityConstant.SHIPMENT_CONTAINER_TASK); | ||
1271 | + success = shipmentContainerHeaderService.updateById(shipmentContainerHeader1); | ||
1272 | if (!success) { | 1272 | if (!success) { |
1273 | throw new JeecgBootException("生成出库任务时, 更新出库组盘头失败"); | 1273 | throw new JeecgBootException("生成出库任务时, 更新出库组盘头失败"); |
1274 | } | 1274 | } |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerAdvice/service/IShipmentContainerAdviceService.java
@@ -3,6 +3,7 @@ package org.jeecg.modules.wms.shipment.shipmentContainerAdvice.service; | @@ -3,6 +3,7 @@ package org.jeecg.modules.wms.shipment.shipmentContainerAdvice.service; | ||
3 | import java.math.BigDecimal; | 3 | import java.math.BigDecimal; |
4 | import java.util.List; | 4 | import java.util.List; |
5 | 5 | ||
6 | +import org.jeecg.common.api.vo.Result; | ||
6 | import org.jeecg.modules.wms.shipment.shipmentContainerAdvice.entity.ShipmentContainerAdvice; | 7 | import org.jeecg.modules.wms.shipment.shipmentContainerAdvice.entity.ShipmentContainerAdvice; |
7 | 8 | ||
8 | import com.baomidou.mybatisplus.extension.service.IService; | 9 | import com.baomidou.mybatisplus.extension.service.IService; |
@@ -17,5 +18,15 @@ public interface IShipmentContainerAdviceService extends IService<ShipmentContai | @@ -17,5 +18,15 @@ public interface IShipmentContainerAdviceService extends IService<ShipmentContai | ||
17 | 18 | ||
18 | boolean updateQtyById(BigDecimal qty, int id); | 19 | boolean updateQtyById(BigDecimal qty, int id); |
19 | 20 | ||
21 | + boolean updateStatusById(int status, int id); | ||
22 | + | ||
23 | + /** | ||
24 | + * 取消配盘 | ||
25 | + * @return | ||
26 | + */ | ||
27 | + Result cancelCombine(Integer id); | ||
28 | + | ||
20 | List<ShipmentContainerAdvice> getShipmentContainerAdviceListByShipmentCode(String shipmentCode, String warehouseCode); | 29 | List<ShipmentContainerAdvice> getShipmentContainerAdviceListByShipmentCode(String shipmentCode, String warehouseCode); |
30 | + | ||
31 | + List<ShipmentContainerAdvice> getShipmentContainerAdviceListByShipmentContainerId(int shipmentContainerId); | ||
21 | } | 32 | } |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerAdvice/service/impl/ShipmentContainerAdviceServiceImpl.java
@@ -3,35 +3,136 @@ package org.jeecg.modules.wms.shipment.shipmentContainerAdvice.service.impl; | @@ -3,35 +3,136 @@ package org.jeecg.modules.wms.shipment.shipmentContainerAdvice.service.impl; | ||
3 | import java.math.BigDecimal; | 3 | import java.math.BigDecimal; |
4 | import java.util.List; | 4 | import java.util.List; |
5 | 5 | ||
6 | +import javax.annotation.Resource; | ||
7 | + | ||
8 | +import org.jeecg.common.api.vo.Result; | ||
9 | +import org.jeecg.common.exception.JeecgBootException; | ||
10 | +import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail; | ||
11 | +import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService; | ||
6 | import org.jeecg.modules.wms.shipment.shipmentContainerAdvice.entity.ShipmentContainerAdvice; | 12 | import org.jeecg.modules.wms.shipment.shipmentContainerAdvice.entity.ShipmentContainerAdvice; |
7 | import org.jeecg.modules.wms.shipment.shipmentContainerAdvice.mapper.ShipmentContainerAdviceMapper; | 13 | import org.jeecg.modules.wms.shipment.shipmentContainerAdvice.mapper.ShipmentContainerAdviceMapper; |
8 | import org.jeecg.modules.wms.shipment.shipmentContainerAdvice.service.IShipmentContainerAdviceService; | 14 | import org.jeecg.modules.wms.shipment.shipmentContainerAdvice.service.IShipmentContainerAdviceService; |
15 | +import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerHeader; | ||
16 | +import org.jeecg.modules.wms.shipment.shipmentContainerHeader.service.IShipmentContainerDetailService; | ||
17 | +import org.jeecg.modules.wms.shipment.shipmentContainerHeader.service.IShipmentContainerHeaderService; | ||
18 | +import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentDetail; | ||
19 | +import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentDetailService; | ||
20 | +import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentHeaderService; | ||
21 | +import org.jeecg.utils.constant.QuantityConstant; | ||
9 | import org.springframework.stereotype.Service; | 22 | import org.springframework.stereotype.Service; |
23 | +import org.springframework.transaction.annotation.Transactional; | ||
10 | 24 | ||
25 | +import com.alibaba.fastjson.JSON; | ||
11 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 26 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
12 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | 27 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
13 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 28 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
14 | 29 | ||
30 | +import cn.monitor4all.logRecord.context.LogRecordContext; | ||
31 | +import lombok.extern.slf4j.Slf4j; | ||
32 | + | ||
15 | /** | 33 | /** |
16 | * @Description: 出库预配盘 | 34 | * @Description: 出库预配盘 |
17 | * @Author: jeecg-boot | 35 | * @Author: jeecg-boot |
18 | * @Date: 2023-11-16 | 36 | * @Date: 2023-11-16 |
19 | * @Version: V1.0 | 37 | * @Version: V1.0 |
20 | */ | 38 | */ |
39 | +@Slf4j | ||
21 | @Service | 40 | @Service |
22 | public class ShipmentContainerAdviceServiceImpl extends ServiceImpl<ShipmentContainerAdviceMapper, ShipmentContainerAdvice> | 41 | public class ShipmentContainerAdviceServiceImpl extends ServiceImpl<ShipmentContainerAdviceMapper, ShipmentContainerAdvice> |
23 | implements IShipmentContainerAdviceService { | 42 | implements IShipmentContainerAdviceService { |
24 | 43 | ||
44 | + @Resource | ||
45 | + private IShipmentContainerHeaderService shipmentContainerHeaderService; | ||
46 | + @Resource | ||
47 | + private IShipmentContainerDetailService shipmentContainerDetailService; | ||
48 | + @Resource | ||
49 | + private IShipmentDetailService shipmentDetailService; | ||
50 | + @Resource | ||
51 | + private IShipmentHeaderService shipmentHeaderService; | ||
52 | + @Resource | ||
53 | + private IInventoryDetailService inventoryDetailService; | ||
54 | + @Resource | ||
55 | + private IShipmentContainerAdviceService shipmentContainerAdviceService; | ||
56 | + | ||
25 | @Override | 57 | @Override |
26 | public boolean updateQtyById(BigDecimal qty, int id) { | 58 | public boolean updateQtyById(BigDecimal qty, int id) { |
27 | - return false; | 59 | + ShipmentContainerAdvice shipmentContainerAdvice = new ShipmentContainerAdvice(); |
60 | + shipmentContainerAdvice.setQty(qty); | ||
61 | + shipmentContainerAdvice.setId(id); | ||
62 | + boolean success = updateById(shipmentContainerAdvice); | ||
63 | + return success; | ||
64 | + } | ||
65 | + | ||
66 | + @Override | ||
67 | + public boolean updateStatusById(int status, int id) { | ||
68 | + ShipmentContainerAdvice shipmentContainerAdvice = new ShipmentContainerAdvice(); | ||
69 | + shipmentContainerAdvice.setStatus(status); | ||
70 | + shipmentContainerAdvice.setId(id); | ||
71 | + boolean success = updateById(shipmentContainerAdvice); | ||
72 | + return success; | ||
73 | + } | ||
74 | + | ||
75 | + @Override | ||
76 | + @Transactional(rollbackFor = JeecgBootException.class) | ||
77 | + public Result cancelCombine(Integer id) { | ||
78 | + log.info("开始取消预配盘,id:" + id); | ||
79 | + ShipmentContainerHeader shipmentContainerHeader = shipmentContainerHeaderService.getById(id); | ||
80 | + if (shipmentContainerHeader == null) { | ||
81 | + return Result.error("取消出库预配盘失败, 没有找到出库组盘头ID:" + id); | ||
82 | + } | ||
83 | + int status = shipmentContainerHeader.getStatus(); | ||
84 | + if (status >= QuantityConstant.SHIPMENT_CONTAINER_TASK) { | ||
85 | + return Result.error("取消出库预配盘失败,出库配盘状态是生成出库任务"); | ||
86 | + } | ||
87 | + List<ShipmentContainerAdvice> shipmentContainerAdviceList = shipmentContainerAdviceService.getShipmentContainerAdviceListByShipmentContainerId(id); | ||
88 | + for (ShipmentContainerAdvice shipmentContainerAdvice : shipmentContainerAdviceList) { | ||
89 | + ShipmentDetail shipmentDetail = shipmentDetailService.getById(shipmentContainerAdvice.getShipmentDetailId()); | ||
90 | + if (shipmentDetail == null) { | ||
91 | + throw new JeecgBootException("取消出库预配盘失败, 没有找到出库单,出库详情ID:" + shipmentContainerAdvice.getShipmentDetailId()); | ||
92 | + } | ||
93 | + shipmentDetail.setStatus(QuantityConstant.SHIPMENT_HEADER_BUILD); | ||
94 | + BigDecimal taskQty = shipmentDetail.getTaskQty().subtract(shipmentContainerAdvice.getQty()); | ||
95 | + shipmentDetail.setTaskQty(taskQty); | ||
96 | + if (!shipmentDetailService.updateTaskQtyAndStatusById(taskQty, QuantityConstant.SHIPMENT_HEADER_BUILD, shipmentDetail.getId())) { | ||
97 | + throw new JeecgBootException("取消出库预配盘失败, 更新出库明细失败,出库详情ID:" + shipmentContainerAdvice.getShipmentDetailId()); | ||
98 | + } | ||
99 | + if (!shipmentContainerAdviceService.removeById(shipmentContainerAdvice.getId())) { | ||
100 | + throw new JeecgBootException("取消出库预配盘失败, 删除出库组盘明细表失败,配盘详情ID:" + shipmentContainerAdvice.getId()); | ||
101 | + } | ||
102 | + if (!shipmentHeaderService.updateShipmentHeaderStatus(shipmentDetail.getShipmentId())) { | ||
103 | + throw new JeecgBootException("取消出库预配盘失败, 更新出库单头失败,出库单ID:" + shipmentDetail.getShipmentId()); | ||
104 | + } | ||
105 | + InventoryDetail inventoryDetail = inventoryDetailService.getById(shipmentContainerAdvice.getInventoryDetailId()); | ||
106 | + if (inventoryDetail == null) { | ||
107 | + throw new JeecgBootException("取消出库预配盘失败, 没有找到库存详情失败,库存详情ID:" + shipmentContainerAdvice.getInventoryDetailId()); | ||
108 | + } | ||
109 | + BigDecimal inventoryDetailTaskQty = inventoryDetail.getTaskQty().subtract(shipmentContainerAdvice.getQty()); | ||
110 | + if (!inventoryDetailService.updateTaskQtyById(inventoryDetailTaskQty, shipmentContainerAdvice.getInventoryDetailId())) { | ||
111 | + throw new JeecgBootException("取消出库预配盘失败, 解锁库存详情失败,库存详情ID:" + inventoryDetail.getId()); | ||
112 | + } | ||
113 | + } | ||
114 | + if (!shipmentContainerHeaderService.removeById(id)) { | ||
115 | + throw new JeecgBootException("取消出库预配盘失败, 删除出库组盘头表失败,配盘ID:" + id); | ||
116 | + } | ||
117 | + LogRecordContext.putVariable("extraJsonString", JSON.toJSONString(shipmentContainerAdviceList)); | ||
118 | + log.info("完成取消预配盘,id:" + id); | ||
119 | + return Result.ok("取消预配盘成功"); | ||
28 | } | 120 | } |
29 | 121 | ||
30 | @Override | 122 | @Override |
31 | public List<ShipmentContainerAdvice> getShipmentContainerAdviceListByShipmentCode(String shipmentCode, String warehouseCode) { | 123 | public List<ShipmentContainerAdvice> getShipmentContainerAdviceListByShipmentCode(String shipmentCode, String warehouseCode) { |
32 | LambdaQueryWrapper<ShipmentContainerAdvice> shipmentContainerAdviceLambdaQueryWrapper = Wrappers.lambdaQuery(); | 124 | LambdaQueryWrapper<ShipmentContainerAdvice> shipmentContainerAdviceLambdaQueryWrapper = Wrappers.lambdaQuery(); |
33 | - shipmentContainerAdviceLambdaQueryWrapper.eq(ShipmentContainerAdvice::getShipmentCode, shipmentCode).eq(ShipmentContainerAdvice::getWarehouseCode, | ||
34 | - warehouseCode); | 125 | + shipmentContainerAdviceLambdaQueryWrapper.eq(ShipmentContainerAdvice::getShipmentCode, shipmentCode) |
126 | + .eq(ShipmentContainerAdvice::getWarehouseCode, warehouseCode).lt(ShipmentContainerAdvice::getStatus, QuantityConstant.SHIPMENT_CONTAINER_FINISHED); | ||
127 | + List<ShipmentContainerAdvice> shipmentContainerAdviceList = list(shipmentContainerAdviceLambdaQueryWrapper); | ||
128 | + return shipmentContainerAdviceList; | ||
129 | + } | ||
130 | + | ||
131 | + @Override | ||
132 | + public List<ShipmentContainerAdvice> getShipmentContainerAdviceListByShipmentContainerId(int shipmentContainerId) { | ||
133 | + LambdaQueryWrapper<ShipmentContainerAdvice> shipmentContainerAdviceLambdaQueryWrapper = Wrappers.lambdaQuery(); | ||
134 | + shipmentContainerAdviceLambdaQueryWrapper.eq(ShipmentContainerAdvice::getShipmentContainerId, shipmentContainerId).lt(ShipmentContainerAdvice::getStatus, | ||
135 | + QuantityConstant.SHIPMENT_CONTAINER_FINISHED); | ||
35 | List<ShipmentContainerAdvice> shipmentContainerAdviceList = list(shipmentContainerAdviceLambdaQueryWrapper); | 136 | List<ShipmentContainerAdvice> shipmentContainerAdviceList = list(shipmentContainerAdviceLambdaQueryWrapper); |
36 | return shipmentContainerAdviceList; | 137 | return shipmentContainerAdviceList; |
37 | } | 138 | } |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/entity/ShipmentContainerHeader.java
@@ -77,6 +77,9 @@ public class ShipmentContainerHeader implements Serializable { | @@ -77,6 +77,9 @@ public class ShipmentContainerHeader implements Serializable { | ||
77 | @Excel(name = "目标出入口", width = 15) | 77 | @Excel(name = "目标出入口", width = 15) |
78 | @ApiModelProperty(value = "目标出入口") | 78 | @ApiModelProperty(value = "目标出入口") |
79 | private String toPort; | 79 | private String toPort; |
80 | + /** 是否预配盘 */ | ||
81 | + @ApiModelProperty(value = "是否预配盘") | ||
82 | + private Integer advice; | ||
80 | /** 备用字段1 */ | 83 | /** 备用字段1 */ |
81 | @Excel(name = "备用字段1", width = 15) | 84 | @Excel(name = "备用字段1", width = 15) |
82 | @ApiModelProperty(value = "备用字段1") | 85 | @ApiModelProperty(value = "备用字段1") |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/impl/ShipmentContainerHeaderServiceImpl.java
@@ -15,6 +15,7 @@ import org.jeecg.modules.wms.config.parameterConfiguration.service.IParameterCon | @@ -15,6 +15,7 @@ import org.jeecg.modules.wms.config.parameterConfiguration.service.IParameterCon | ||
15 | import org.jeecg.modules.wms.framework.service.IHuahengMultiHandlerService; | 15 | import org.jeecg.modules.wms.framework.service.IHuahengMultiHandlerService; |
16 | import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail; | 16 | import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail; |
17 | import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService; | 17 | import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService; |
18 | +import org.jeecg.modules.wms.shipment.shipmentContainerAdvice.service.IShipmentContainerAdviceService; | ||
18 | import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerDetail; | 19 | import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerDetail; |
19 | import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerHeader; | 20 | import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerHeader; |
20 | import org.jeecg.modules.wms.shipment.shipmentContainerHeader.mapper.ShipmentContainerDetailMapper; | 21 | import org.jeecg.modules.wms.shipment.shipmentContainerHeader.mapper.ShipmentContainerDetailMapper; |
@@ -69,6 +70,8 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont | @@ -69,6 +70,8 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont | ||
69 | private IHuahengMultiHandlerService huahengMultiHandlerService; | 70 | private IHuahengMultiHandlerService huahengMultiHandlerService; |
70 | @Resource | 71 | @Resource |
71 | private IParameterConfigurationService parameterConfigurationService; | 72 | private IParameterConfigurationService parameterConfigurationService; |
73 | + @Resource | ||
74 | + private IShipmentContainerAdviceService shipmentContainerAdviceService; | ||
72 | 75 | ||
73 | @Override | 76 | @Override |
74 | @Transactional | 77 | @Transactional |
@@ -165,9 +168,8 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont | @@ -165,9 +168,8 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont | ||
165 | shipmentContainerHeader.setStatus(QuantityConstant.SHIPMENT_CONTAINER_BUILD); | 168 | shipmentContainerHeader.setStatus(QuantityConstant.SHIPMENT_CONTAINER_BUILD); |
166 | boolean success = this.updateStatusById(QuantityConstant.SHIPMENT_CONTAINER_BUILD, shipmentContainerHeader.getId()); | 169 | boolean success = this.updateStatusById(QuantityConstant.SHIPMENT_CONTAINER_BUILD, shipmentContainerHeader.getId()); |
167 | if (!success) { | 170 | if (!success) { |
168 | - throw new JeecgBootException("取消入库任务时, 更新入库组盘头失败"); | 171 | + throw new JeecgBootException("取消出库任务时, 更新出库组盘头失败"); |
169 | } | 172 | } |
170 | - | ||
171 | List<ShipmentContainerDetail> shipmentContainerDetailList = | 173 | List<ShipmentContainerDetail> shipmentContainerDetailList = |
172 | shipmentContainerDetailService.getShipmentContainerDetailListByHeaderId(shipmentContainerHeader.getId()); | 174 | shipmentContainerDetailService.getShipmentContainerDetailListByHeaderId(shipmentContainerHeader.getId()); |
173 | List<ShipmentDetail> shipmentDetailList = new ArrayList<>(); | 175 | List<ShipmentDetail> shipmentDetailList = new ArrayList<>(); |
@@ -202,9 +204,17 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont | @@ -202,9 +204,17 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont | ||
202 | } | 204 | } |
203 | int cancelTaskRule = Integer.parseInt(value); | 205 | int cancelTaskRule = Integer.parseInt(value); |
204 | if (cancelTaskRule == QuantityConstant.RULE_TASK_CANCEL_CONTAINER) { | 206 | if (cancelTaskRule == QuantityConstant.RULE_TASK_CANCEL_CONTAINER) { |
205 | - Result result = shipmentContainerHeaderService.cancelCombine(shipmentContainerHeader.getId()); | ||
206 | - if (!result.isSuccess()) { | ||
207 | - throw new JeecgBootException("取消出库任务时, 取消配盘失败"); | 207 | + int shipmentContainerAdvice = shipmentContainerHeader.getAdvice(); |
208 | + if (shipmentContainerAdvice == QuantityConstant.STATUS_CLOSE) { | ||
209 | + Result result = shipmentContainerHeaderService.cancelCombine(shipmentContainerHeader.getId()); | ||
210 | + if (!result.isSuccess()) { | ||
211 | + throw new JeecgBootException("取消出库任务时, 取消配盘失败"); | ||
212 | + } | ||
213 | + } else { | ||
214 | + Result result = shipmentContainerAdviceService.cancelCombine(shipmentContainerHeader.getId()); | ||
215 | + if (!result.isSuccess()) { | ||
216 | + throw new JeecgBootException("取消出库任务时, 取消配盘失败"); | ||
217 | + } | ||
208 | } | 218 | } |
209 | } | 219 | } |
210 | log.info("完成取消出库任务,任务id" + taskHeader.getId()); | 220 | log.info("完成取消出库任务,任务id" + taskHeader.getId()); |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java
@@ -515,8 +515,11 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper, | @@ -515,8 +515,11 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper, | ||
515 | throw new JeecgBootException("自动预配盘出库, 没有合适的出库口"); | 515 | throw new JeecgBootException("自动预配盘出库, 没有合适的出库口"); |
516 | } | 516 | } |
517 | Port port = portList.get(0); | 517 | Port port = portList.get(0); |
518 | - shipmentContainerHeader.setToPort(port.getCode()); | ||
519 | - boolean success = shipmentContainerHeaderService.updateById(shipmentContainerHeader); | 518 | + ShipmentContainerHeader shipmentContainerHeader1 = new ShipmentContainerHeader(); |
519 | + shipmentContainerHeader1.setId(shipmentContainerHeader.getId()); | ||
520 | + shipmentContainerHeader1.setToPort(port.getCode()); | ||
521 | + shipmentContainerHeader1.setAdvice(QuantityConstant.STATUS_OPEN); | ||
522 | + boolean success = shipmentContainerHeaderService.updateById(shipmentContainerHeader1); | ||
520 | if (!success) { | 523 | if (!success) { |
521 | throw new JeecgBootException("自动预配盘出库, 更新出库组盘头失败"); | 524 | throw new JeecgBootException("自动预配盘出库, 更新出库组盘头失败"); |
522 | } | 525 | } |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java
@@ -45,6 +45,8 @@ import org.jeecg.modules.wms.receipt.receiving.domain.Receive; | @@ -45,6 +45,8 @@ import org.jeecg.modules.wms.receipt.receiving.domain.Receive; | ||
45 | import org.jeecg.modules.wms.receipt.receiving.service.IReceiveService; | 45 | import org.jeecg.modules.wms.receipt.receiving.service.IReceiveService; |
46 | import org.jeecg.modules.wms.shipment.shipmentCombination.entity.CombinationModel; | 46 | import org.jeecg.modules.wms.shipment.shipmentCombination.entity.CombinationModel; |
47 | import org.jeecg.modules.wms.shipment.shipmentCombination.service.IShipmentCombinationService; | 47 | import org.jeecg.modules.wms.shipment.shipmentCombination.service.IShipmentCombinationService; |
48 | +import org.jeecg.modules.wms.shipment.shipmentContainerAdvice.entity.ShipmentContainerAdvice; | ||
49 | +import org.jeecg.modules.wms.shipment.shipmentContainerAdvice.service.IShipmentContainerAdviceService; | ||
48 | import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerDetail; | 50 | import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerDetail; |
49 | import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerHeader; | 51 | import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerHeader; |
50 | import org.jeecg.modules.wms.shipment.shipmentContainerHeader.service.IShipmentContainerDetailService; | 52 | import org.jeecg.modules.wms.shipment.shipmentContainerHeader.service.IShipmentContainerDetailService; |
@@ -157,6 +159,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | @@ -157,6 +159,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | ||
157 | private ILockStationService lockStationService; | 159 | private ILockStationService lockStationService; |
158 | @Resource | 160 | @Resource |
159 | private IQualityDetailService qualityDetailService; | 161 | private IQualityDetailService qualityDetailService; |
162 | + @Resource | ||
163 | + private IShipmentContainerAdviceService shipmentContainerAdviceService; | ||
160 | 164 | ||
161 | @Override | 165 | @Override |
162 | @Transactional | 166 | @Transactional |
@@ -1273,6 +1277,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | @@ -1273,6 +1277,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | ||
1273 | inventoryDetail.setBatch(taskDetail.getBatch()); | 1277 | inventoryDetail.setBatch(taskDetail.getBatch()); |
1274 | inventoryDetail.setLot(taskDetail.getLot()); | 1278 | inventoryDetail.setLot(taskDetail.getLot()); |
1275 | inventoryDetail.setProject(taskDetail.getProject()); | 1279 | inventoryDetail.setProject(taskDetail.getProject()); |
1280 | + inventoryDetail.setSn(taskDetail.getSn()); | ||
1276 | inventoryDetail.setReceiveTime(taskDetail.getReceiveTime()); | 1281 | inventoryDetail.setReceiveTime(taskDetail.getReceiveTime()); |
1277 | inventoryDetail.setReceiptDate(new Date()); | 1282 | inventoryDetail.setReceiptDate(new Date()); |
1278 | inventoryDetailList.add(inventoryDetail); | 1283 | inventoryDetailList.add(inventoryDetail); |
@@ -1296,6 +1301,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | @@ -1296,6 +1301,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | ||
1296 | inventoryTransaction.setBatch(taskDetail.getBatch()); | 1301 | inventoryTransaction.setBatch(taskDetail.getBatch()); |
1297 | inventoryTransaction.setLot(taskDetail.getLot()); | 1302 | inventoryTransaction.setLot(taskDetail.getLot()); |
1298 | inventoryTransaction.setProject(taskDetail.getProject()); | 1303 | inventoryTransaction.setProject(taskDetail.getProject()); |
1304 | + inventoryTransaction.setSn(taskDetail.getSn()); | ||
1299 | inventoryTransaction.setInventoryStatus(taskDetail.getInventoryStatus()); | 1305 | inventoryTransaction.setInventoryStatus(taskDetail.getInventoryStatus()); |
1300 | inventoryTransaction.setQty(receiptQty); | 1306 | inventoryTransaction.setQty(receiptQty); |
1301 | inventoryTransaction.setReceiptQty(receiptQty); | 1307 | inventoryTransaction.setReceiptQty(receiptQty); |
@@ -1397,6 +1403,13 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | @@ -1397,6 +1403,13 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | ||
1397 | if (!success) { | 1403 | if (!success) { |
1398 | throw new JeecgBootException("完成出库任务,更新出库组盘头失败"); | 1404 | throw new JeecgBootException("完成出库任务,更新出库组盘头失败"); |
1399 | } | 1405 | } |
1406 | + List<ShipmentContainerAdvice> shipmentContainerAdviceList = | ||
1407 | + shipmentContainerAdviceService.getShipmentContainerAdviceListByShipmentContainerId(shipmentContainerHeader.getId()); | ||
1408 | + for (ShipmentContainerAdvice shipmentContainerAdvice : shipmentContainerAdviceList) { | ||
1409 | + if (!shipmentContainerAdviceService.updateStatusById(QuantityConstant.SHIPMENT_CONTAINER_FINISHED, shipmentContainerAdvice.getId())) { | ||
1410 | + throw new JeecgBootException("完成出库任务,更新出库预配盘失败"); | ||
1411 | + } | ||
1412 | + } | ||
1400 | } | 1413 | } |
1401 | Result result = taskHeaderService.completeTaskUnLockContainerAndLocation(taskHeader.getContainerFillStatus(), taskType, containerCode, | 1414 | Result result = taskHeaderService.completeTaskUnLockContainerAndLocation(taskHeader.getContainerFillStatus(), taskType, containerCode, |
1402 | fromLocationCode, toLocationCode, warehouseCode); | 1415 | fromLocationCode, toLocationCode, warehouseCode); |
@@ -1641,6 +1654,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | @@ -1641,6 +1654,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | ||
1641 | InventoryDetail inventoryDetail2 = inventoryDetailList.get(j); | 1654 | InventoryDetail inventoryDetail2 = inventoryDetailList.get(j); |
1642 | if (inventoryDetail1.getMaterialCode().equals(inventoryDetail2.getMaterialCode()) && inventoryDetail1.getBatch().equals(inventoryDetail2.getBatch()) | 1655 | if (inventoryDetail1.getMaterialCode().equals(inventoryDetail2.getMaterialCode()) && inventoryDetail1.getBatch().equals(inventoryDetail2.getBatch()) |
1643 | && inventoryDetail1.getLot().equals(inventoryDetail2.getLot()) && inventoryDetail1.getProject().equals(inventoryDetail2.getProject()) | 1656 | && inventoryDetail1.getLot().equals(inventoryDetail2.getLot()) && inventoryDetail1.getProject().equals(inventoryDetail2.getProject()) |
1657 | + && inventoryDetail1.getSn().equals(inventoryDetail2.getSn()) | ||
1644 | && inventoryDetail1.getInventoryStatus().equals(inventoryDetail2.getInventoryStatus())) { | 1658 | && inventoryDetail1.getInventoryStatus().equals(inventoryDetail2.getInventoryStatus())) { |
1645 | // 属性一样的库存,相加合并。 | 1659 | // 属性一样的库存,相加合并。 |
1646 | BigDecimal totalQty = inventoryDetail1.getQty().add(inventoryDetail2.getQty()); | 1660 | BigDecimal totalQty = inventoryDetail1.getQty().add(inventoryDetail2.getQty()); |
huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java
@@ -531,6 +531,10 @@ public class QuantityConstant { | @@ -531,6 +531,10 @@ public class QuantityConstant { | ||
531 | public static final String TV_VERSION = "Tv-Ver"; | 531 | public static final String TV_VERSION = "Tv-Ver"; |
532 | public static final String RULE_SHIPMENT_ZONE = "shipmentZoneRule"; | 532 | public static final String RULE_SHIPMENT_ZONE = "shipmentZoneRule"; |
533 | public static final String SHIPMENT_WHOLE_TASK_CLEAR_INVENTORY = "shipmentWholeTaskClearInventory"; | 533 | public static final String SHIPMENT_WHOLE_TASK_CLEAR_INVENTORY = "shipmentWholeTaskClearInventory"; |
534 | + public static final String RULE_SHIPMENT_CONTAINER_ADVICE = "shipmentContainerAdvice"; | ||
535 | + | ||
536 | + public static final int STATUS_CLOSE = 0; | ||
537 | + public static final int STATUS_OPEN = 1; | ||
534 | 538 | ||
535 | public static final int DOUBLE_FORK = 1; | 539 | public static final int DOUBLE_FORK = 1; |
536 | public static final int SINGLE_FORK = 0; | 540 | public static final int SINGLE_FORK = 0; |