Commit cc9dad801d54ffd8efebc4aa0359b99915747fe6

Authored by 周峰
2 parents 1ef18804 4ccddc1d

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&lt;ReceiptContai @@ -224,6 +224,7 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl&lt;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&lt;ReceiptContai @@ -260,7 +261,7 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl&lt;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&lt;ShipmentContai @@ -17,5 +18,15 @@ public interface IShipmentContainerAdviceService extends IService&lt;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&lt;ShipmentCont @@ -69,6 +70,8 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl&lt;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&lt;ShipmentCont @@ -165,9 +168,8 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl&lt;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&lt;ShipmentCont @@ -202,9 +204,17 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl&lt;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&lt;ShipmentHeaderMapper, @@ -515,8 +515,11 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl&lt;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&lt;TaskHeaderMapper, TaskHea @@ -157,6 +159,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;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&lt;TaskHeaderMapper, TaskHea @@ -1273,6 +1277,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;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&lt;TaskHeaderMapper, TaskHea @@ -1296,6 +1301,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;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&lt;TaskHeaderMapper, TaskHea @@ -1397,6 +1403,13 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;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&lt;TaskHeaderMapper, TaskHea @@ -1641,6 +1654,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;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;