1. 删除OrderInCheckor定时任务, 将MES与ERP的校验转移到创建任务时处理
2. 添加xsfbillno, xsfseq, neibubianhao, goodsBarcode字段
This commit is contained in:
parent
e7436bcf46
commit
7ab3096b94
|
|
@ -11,7 +11,7 @@
|
||||||
Target Server Version : 80034 (8.0.34)
|
Target Server Version : 80034 (8.0.34)
|
||||||
File Encoding : 65001
|
File Encoding : 65001
|
||||||
|
|
||||||
Date: 07/04/2025 16:52:04
|
Date: 08/04/2025 19:42:54
|
||||||
*/
|
*/
|
||||||
|
|
||||||
SET NAMES utf8mb4;
|
SET NAMES utf8mb4;
|
||||||
|
|
@ -2223,7 +2223,6 @@ CREATE TABLE `t_app_jobs` (
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Records of t_app_jobs
|
-- Records of t_app_jobs
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
INSERT INTO `t_app_jobs` VALUES ('OrderInCheckor', 'com.wms_main.service.quartz_job.job_executor.OrderInCheckor', '0/2 * * * * ? *', 2000, 1, 1);
|
|
||||||
INSERT INTO `t_app_jobs` VALUES ('OutsExecutor', 'com.wms_main.service.quartz_job.job_executor.OutsExecutor', '0/2 * * * * ? *', 2000, 1, 1);
|
INSERT INTO `t_app_jobs` VALUES ('OutsExecutor', 'com.wms_main.service.quartz_job.job_executor.OutsExecutor', '0/2 * * * * ? *', 2000, 1, 1);
|
||||||
INSERT INTO `t_app_jobs` VALUES ('WcsStackerTaskSender', 'com.wms_main.service.quartz_job.job_executor.WcsStackerTaskSender', '0/2 * * * * ? *', 2000, 1, 1);
|
INSERT INTO `t_app_jobs` VALUES ('WcsStackerTaskSender', 'com.wms_main.service.quartz_job.job_executor.WcsStackerTaskSender', '0/2 * * * * ? *', 2000, 1, 1);
|
||||||
INSERT INTO `t_app_jobs` VALUES ('WmsTaskFinisher', 'com.wms_main.service.quartz_job.job_executor.WmsTaskFinisher', '0/2 * * * * ? *', 2000, 1, 1);
|
INSERT INTO `t_app_jobs` VALUES ('WmsTaskFinisher', 'com.wms_main.service.quartz_job.job_executor.WmsTaskFinisher', '0/2 * * * * ? *', 2000, 1, 1);
|
||||||
|
|
@ -4999,11 +4998,15 @@ CREATE TABLE `t_app_order_in` (
|
||||||
`goods_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
`goods_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
`specification` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
`specification` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
`quantity` double NOT NULL,
|
`quantity` double NOT NULL,
|
||||||
|
`goods_bar_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
`goods_desc` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
`goods_desc` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
`order_status` int NOT NULL,
|
`order_status` int NOT NULL,
|
||||||
`create_time` datetime NOT NULL,
|
`create_time` datetime NOT NULL,
|
||||||
`update_time` datetime NULL DEFAULT NULL,
|
`update_time` datetime NULL DEFAULT NULL,
|
||||||
`complete_time` datetime NULL DEFAULT NULL,
|
`complete_time` datetime NULL DEFAULT NULL,
|
||||||
|
`xsfbillno` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`xsfseq` int NULL DEFAULT NULL,
|
||||||
|
`neibubianhao` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
PRIMARY KEY (`record_id`) USING BTREE
|
PRIMARY KEY (`record_id`) USING BTREE
|
||||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
||||||
|
|
@ -5498,6 +5501,10 @@ CREATE TABLE `t_app_stock` (
|
||||||
`mes_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'mes单号',
|
`mes_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'mes单号',
|
||||||
`batch` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
`batch` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
`goods_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
`goods_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`xsfbillno` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`xsfseq` int NULL DEFAULT NULL,
|
||||||
|
`neibubianhao` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`goods_bar_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
PRIMARY KEY (`stock_id`) USING BTREE
|
PRIMARY KEY (`stock_id`) USING BTREE
|
||||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
|
||||||
|
|
||||||
|
|
@ -5613,8 +5620,8 @@ CREATE TABLE `t_app_vehicle` (
|
||||||
-- Records of t_app_vehicle
|
-- Records of t_app_vehicle
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
INSERT INTO `t_app_vehicle` VALUES ('0401', 0, 3, '1', 0, '', '2025-04-01 13:11:48');
|
INSERT INTO `t_app_vehicle` VALUES ('0401', 0, 3, '1', 0, '', '2025-04-01 13:11:48');
|
||||||
INSERT INTO `t_app_vehicle` VALUES ('0402', 0, 2, '1', 0, 'A04-19-06-01', '2025-04-01 13:11:56');
|
INSERT INTO `t_app_vehicle` VALUES ('0402', 0, 2, '1', 0, '', '2025-04-01 13:11:56');
|
||||||
INSERT INTO `t_app_vehicle` VALUES ('20250401150031', 0, 3, '1', 0, '', '2025-04-07 16:20:15');
|
INSERT INTO `t_app_vehicle` VALUES ('20250401150031', 0, 3, '1', 0, '', '2025-04-08 19:30:11');
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Table structure for t_app_wcs_task
|
-- Table structure for t_app_wcs_task
|
||||||
|
|
@ -5713,6 +5720,19 @@ INSERT INTO `t_app_wcs_task_bak` VALUES ('1744013622086010000', 2, 1, 0, '202504
|
||||||
INSERT INTO `t_app_wcs_task_bak` VALUES ('1744013869045010000', 100, 2, 1, '20250401150031', 'A04-20-05-02', '103', '2025-04-07 16:17:49', NULL, NULL, NULL);
|
INSERT INTO `t_app_wcs_task_bak` VALUES ('1744013869045010000', 100, 2, 1, '20250401150031', 'A04-20-05-02', '103', '2025-04-07 16:17:49', NULL, NULL, NULL);
|
||||||
INSERT INTO `t_app_wcs_task_bak` VALUES ('1744013987278010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-02', '2025-04-07 16:19:47', '2025-04-07 16:19:47', NULL, NULL);
|
INSERT INTO `t_app_wcs_task_bak` VALUES ('1744013987278010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-02', '2025-04-07 16:19:47', '2025-04-07 16:19:47', NULL, NULL);
|
||||||
INSERT INTO `t_app_wcs_task_bak` VALUES ('1744014051040010000', 100, 2, 1, '20250401150031', 'A04-20-05-02', '103', '2025-04-07 16:20:51', NULL, NULL, NULL);
|
INSERT INTO `t_app_wcs_task_bak` VALUES ('1744014051040010000', 100, 2, 1, '20250401150031', 'A04-20-05-02', '103', '2025-04-07 16:20:51', NULL, NULL, NULL);
|
||||||
|
INSERT INTO `t_app_wcs_task_bak` VALUES ('1744101715450010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-02', '2025-04-08 16:41:55', '2025-04-08 16:41:55', NULL, NULL);
|
||||||
|
INSERT INTO `t_app_wcs_task_bak` VALUES ('1744103504534010000', 100, 2, 1, '20250401150031', 'A04-20-05-02', '272399-343153-97', '2025-04-08 17:11:45', NULL, NULL, NULL);
|
||||||
|
INSERT INTO `t_app_wcs_task_bak` VALUES ('1744104108494010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-02', '2025-04-08 17:21:48', '2025-04-08 17:21:48', NULL, NULL);
|
||||||
|
INSERT INTO `t_app_wcs_task_bak` VALUES ('1744104795372010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-02', '2025-04-08 17:33:15', '2025-04-08 17:33:15', NULL, NULL);
|
||||||
|
INSERT INTO `t_app_wcs_task_bak` VALUES ('1744107367237010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-02', '2025-04-08 18:16:07', '2025-04-08 18:16:07', NULL, NULL);
|
||||||
|
INSERT INTO `t_app_wcs_task_bak` VALUES ('1744108481848010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-02', '2025-04-08 18:34:42', '2025-04-08 18:34:42', NULL, NULL);
|
||||||
|
INSERT INTO `t_app_wcs_task_bak` VALUES ('1744110229130010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-01', '2025-04-08 19:03:49', '2025-04-08 19:03:49', NULL, NULL);
|
||||||
|
INSERT INTO `t_app_wcs_task_bak` VALUES ('1744110590961010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-01', '2025-04-08 19:09:51', '2025-04-08 19:09:51', NULL, NULL);
|
||||||
|
INSERT INTO `t_app_wcs_task_bak` VALUES ('1744110928097010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-02', '2025-04-08 19:15:28', '2025-04-08 19:15:28', NULL, NULL);
|
||||||
|
INSERT INTO `t_app_wcs_task_bak` VALUES ('1744110975061010000', 100, 2, 1, '20250401150031', 'A04-20-05-02', '103', '2025-04-08 19:16:15', NULL, NULL, NULL);
|
||||||
|
INSERT INTO `t_app_wcs_task_bak` VALUES ('1744111374581010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-02', '2025-04-08 19:22:55', '2025-04-08 19:22:55', NULL, NULL);
|
||||||
|
INSERT INTO `t_app_wcs_task_bak` VALUES ('1744111790731010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-02', '2025-04-08 19:29:51', '2025-04-08 19:29:51', NULL, NULL);
|
||||||
|
INSERT INTO `t_app_wcs_task_bak` VALUES ('1744111948895010000', 100, 2, 1, '20250401150031', 'A04-20-05-02', '103', '2025-04-08 19:32:29', NULL, NULL, NULL);
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Table structure for t_app_work
|
-- Table structure for t_app_work
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,6 @@ public class ErpGoodsDetail {
|
||||||
private String goodsDesc;
|
private String goodsDesc;
|
||||||
private String goodsBarcode;
|
private String goodsBarcode;
|
||||||
private String xsfbillno;
|
private String xsfbillno;
|
||||||
private String xsfseq;
|
private Integer xsfseq;
|
||||||
private String neibubianhao;
|
private String neibubianhao;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,9 @@ public class TAppOrderIn {
|
||||||
@TableField(value = "order_status")
|
@TableField(value = "order_status")
|
||||||
private Integer orderStatus;
|
private Integer orderStatus;
|
||||||
|
|
||||||
|
@TableField(value = "goods_bar_code")
|
||||||
|
private String goodsBarcode;
|
||||||
|
|
||||||
@TableField(value = "create_time")
|
@TableField(value = "create_time")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
|
@ -68,6 +71,15 @@ public class TAppOrderIn {
|
||||||
@TableField(value = "complete_time")
|
@TableField(value = "complete_time")
|
||||||
private LocalDateTime completeTime;
|
private LocalDateTime completeTime;
|
||||||
|
|
||||||
|
@TableField(value = "xsfbillno")
|
||||||
|
private String xsfbillno;
|
||||||
|
|
||||||
|
@TableField(value = "xsfseq")
|
||||||
|
private Integer xsfseq;
|
||||||
|
|
||||||
|
@TableField(value = "neibubianhao")
|
||||||
|
private String neibubianhao;
|
||||||
|
|
||||||
@TableField(value = "remark")
|
@TableField(value = "remark")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -117,4 +117,16 @@ public class TAppStock {
|
||||||
|
|
||||||
@TableField(value = "goods_type")
|
@TableField(value = "goods_type")
|
||||||
private String goodsType;
|
private String goodsType;
|
||||||
|
|
||||||
|
@TableField(value = "xsfbillno")
|
||||||
|
private String xsfbillno;
|
||||||
|
|
||||||
|
@TableField(value = "xsfseq")
|
||||||
|
private Integer xsfseq;
|
||||||
|
|
||||||
|
@TableField(value = "neibubianhao")
|
||||||
|
private String neibubianhao;
|
||||||
|
|
||||||
|
@TableField(value = "goods_bar_code")
|
||||||
|
private String goodsBarCode;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,7 @@ public class ExternalApiServiceImpl implements IExternalApiService {
|
||||||
goodsDetail.setQuantity(Double.parseDouble(detail.get("quantity").toString()));
|
goodsDetail.setQuantity(Double.parseDouble(detail.get("quantity").toString()));
|
||||||
goodsDetail.setGoodsDesc((String) detail.get("goodsDesc"));
|
goodsDetail.setGoodsDesc((String) detail.get("goodsDesc"));
|
||||||
goodsDetail.setXsfbillno((String) detail.get("xsfbillno"));
|
goodsDetail.setXsfbillno((String) detail.get("xsfbillno"));
|
||||||
goodsDetail.setXsfseq((String) detail.get("xsfseq"));
|
goodsDetail.setXsfseq(Integer.parseInt(detail.get("xsfseq").toString()));
|
||||||
goodsDetail.setNeibubianhao((String) detail.get("neibubianhao"));
|
goodsDetail.setNeibubianhao((String) detail.get("neibubianhao"));
|
||||||
goodsDetail.setGoodsBarcode((String) detail.get("goodsBarcode"));
|
goodsDetail.setGoodsBarcode((String) detail.get("goodsBarcode"));
|
||||||
erpsGoodsDetails.add(goodsDetail);
|
erpsGoodsDetails.add(goodsDetail);
|
||||||
|
|
|
||||||
|
|
@ -383,7 +383,7 @@ public class StackerTaskServiceImpl implements IStackerTaskService {
|
||||||
needDeleteOrderIns.add(thisOrderIn.getRecordId());
|
needDeleteOrderIns.add(thisOrderIn.getRecordId());
|
||||||
orderCBIds.add(thisOrderIn.getOrderId());
|
orderCBIds.add(thisOrderIn.getOrderId());
|
||||||
// 添加库存
|
// 添加库存
|
||||||
String validateStr = thisOrderIn.getGoodsId() + thisOrderIn.getBatch() + thisOrderIn.getGoodsType() + thisOrderIn.getSpecification();
|
String validateStr = thisOrderIn.getGoodsId() + thisOrderIn.getGoodsBarcode() + thisOrderIn.getGoodsType() + thisOrderIn.getSpecification() + thisOrderIn.getXsfbillno() + thisOrderIn.getXsfseq().toString() + thisOrderIn.getNeibubianhao();
|
||||||
if (!stockMap.containsKey(validateStr)) {
|
if (!stockMap.containsKey(validateStr)) {
|
||||||
TAppStock newStock = new TAppStock();
|
TAppStock newStock = new TAppStock();
|
||||||
newStock.setStockId(UUIDUtils.getNewUUID());
|
newStock.setStockId(UUIDUtils.getNewUUID());
|
||||||
|
|
@ -405,7 +405,10 @@ public class StackerTaskServiceImpl implements IStackerTaskService {
|
||||||
newStock.setBatch(thisOrderIn.getBatch());
|
newStock.setBatch(thisOrderIn.getBatch());
|
||||||
newStock.setGoodsType(thisOrderIn.getGoodsType());
|
newStock.setGoodsType(thisOrderIn.getGoodsType());
|
||||||
newStock.setBarCode(thisOrderIn.getInStand());
|
newStock.setBarCode(thisOrderIn.getInStand());
|
||||||
// newStockList.add(newStock);
|
newStock.setGoodsBarCode(thisOrderIn.getGoodsBarcode());
|
||||||
|
newStock.setXsfbillno(thisOrderIn.getXsfbillno());
|
||||||
|
newStock.setXsfseq(thisOrderIn.getXsfseq());
|
||||||
|
newStock.setNeibubianhao(thisOrderIn.getNeibubianhao());
|
||||||
stockMap.put(validateStr, newStock);
|
stockMap.put(validateStr, newStock);
|
||||||
} else {
|
} else {
|
||||||
TAppStock newStock = stockMap.get(validateStr);
|
TAppStock newStock = stockMap.get(validateStr);
|
||||||
|
|
@ -572,6 +575,10 @@ public class StackerTaskServiceImpl implements IStackerTaskService {
|
||||||
thisVehicleInTask.getBarCode(),
|
thisVehicleInTask.getBarCode(),
|
||||||
thisVehicleInTask.getMesId(),
|
thisVehicleInTask.getMesId(),
|
||||||
"",
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
0,
|
||||||
|
"",
|
||||||
""
|
""
|
||||||
));
|
));
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -605,7 +612,12 @@ public class StackerTaskServiceImpl implements IStackerTaskService {
|
||||||
thisVehicleInTask.getBarCode(),
|
thisVehicleInTask.getBarCode(),
|
||||||
thisVehicleInTask.getMesId(),
|
thisVehicleInTask.getMesId(),
|
||||||
"",
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
0,
|
||||||
|
"",
|
||||||
""
|
""
|
||||||
|
|
||||||
));
|
));
|
||||||
needDeleteStockIds.addAll(oldStockList.stream()
|
needDeleteStockIds.addAll(oldStockList.stream()
|
||||||
.map(TAppStock::getStockId)
|
.map(TAppStock::getStockId)
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,12 @@ package com.wms_main.service.controller.serviceImpl;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.wms_main.constant.enums.wms.OrderStatusEnum;
|
import com.wms_main.constant.enums.wms.OrderStatusEnum;
|
||||||
|
import com.wms_main.constant.enums.wms.WmsApiResponseCodeEnums;
|
||||||
import com.wms_main.dao.ITAppOrderInService;
|
import com.wms_main.dao.ITAppOrderInService;
|
||||||
import com.wms_main.dao.ITAppOrderOutService;
|
import com.wms_main.dao.ITAppOrderOutService;
|
||||||
import com.wms_main.dao.ITAppStockService;
|
import com.wms_main.dao.ITAppStockService;
|
||||||
|
import com.wms_main.model.bo.erp.ErpGoodsDetail;
|
||||||
|
import com.wms_main.model.bo.erp.ErpVehicleNoResp;
|
||||||
import com.wms_main.model.dto.request.ycwms.*;
|
import com.wms_main.model.dto.request.ycwms.*;
|
||||||
import com.wms_main.model.dto.response.ycwms.YcwmsResponse;
|
import com.wms_main.model.dto.response.ycwms.YcwmsResponse;
|
||||||
import com.wms_main.model.po.TAppOrderIn;
|
import com.wms_main.model.po.TAppOrderIn;
|
||||||
|
|
@ -12,6 +15,7 @@ import com.wms_main.model.po.TAppOrderOut;
|
||||||
import com.wms_main.model.po.TAppStock;
|
import com.wms_main.model.po.TAppStock;
|
||||||
import com.wms_main.repository.utils.StringUtils;
|
import com.wms_main.repository.utils.StringUtils;
|
||||||
import com.wms_main.repository.utils.UUIDUtils;
|
import com.wms_main.repository.utils.UUIDUtils;
|
||||||
|
import com.wms_main.service.api.IExternalApiService;
|
||||||
import com.wms_main.service.controller.IYcwmsControllerService;
|
import com.wms_main.service.controller.IYcwmsControllerService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
@ -19,7 +23,9 @@ import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
|
@ -29,6 +35,7 @@ public class YcwmsControllerServiceImpl implements IYcwmsControllerService {
|
||||||
private final ITAppOrderInService appOrderInService;
|
private final ITAppOrderInService appOrderInService;
|
||||||
private final ITAppOrderOutService appOrderOutService;
|
private final ITAppOrderOutService appOrderOutService;
|
||||||
private final ITAppStockService appStockService;
|
private final ITAppStockService appStockService;
|
||||||
|
private final IExternalApiService externalApiService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public YcwmsResponse<Object> orderIn(OrderInReq request) {
|
public YcwmsResponse<Object> orderIn(OrderInReq request) {
|
||||||
|
|
@ -47,8 +54,40 @@ public class YcwmsControllerServiceImpl implements IYcwmsControllerService {
|
||||||
if(!withOrderId.isEmpty()) {
|
if(!withOrderId.isEmpty()) {
|
||||||
return YcwmsResponse.error("入库单已存在,请勿重复推送", null);
|
return YcwmsResponse.error("入库单已存在,请勿重复推送", null);
|
||||||
}
|
}
|
||||||
|
String vehicleNo = request.getVehicleNo();
|
||||||
|
List<ErpGoodsDetail> erpGoodsDetails = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
YcwmsResponse<ErpVehicleNoResp> erpResp = externalApiService.getVehicleNoData(vehicleNo);
|
||||||
|
if (erpResp != null && WmsApiResponseCodeEnums.SUCCESS.getCode() == erpResp.getCode() && !erpResp.getReturnData().getGoodsDetail().isEmpty()) {
|
||||||
|
erpGoodsDetails = erpResp.getReturnData().getGoodsDetail();
|
||||||
|
} else {
|
||||||
|
log.warn("获取载具[{}]数据失败,响应:{}", vehicleNo, erpResp);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("处理载具[{}]数据时发生异常:", vehicleNo, e);
|
||||||
|
}
|
||||||
|
List<OrderInGoodsDetail> mesGoodsDetails = request.getGoodsDetail();
|
||||||
|
// 对比inTasks和goodsDetails
|
||||||
|
Iterator<OrderInGoodsDetail> iterator = mesGoodsDetails.iterator();
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
OrderInGoodsDetail goodsDetail = iterator.next();
|
||||||
|
boolean matchFound = erpGoodsDetails.stream().anyMatch(erpGoodsDetail ->
|
||||||
|
erpGoodsDetail.getGoodsId().equals(goodsDetail.getGoodsId()) &&
|
||||||
|
erpGoodsDetail.getGoodsBarcode().equals(goodsDetail.getGoodsBarcode()) &&
|
||||||
|
Objects.equals(erpGoodsDetail.getQuantity(), goodsDetail.getQuantity()) &&
|
||||||
|
erpGoodsDetail.getGoodsType().equals(goodsDetail.getGoodsType()) &&
|
||||||
|
Objects.equals(erpGoodsDetail.getSpecification(), goodsDetail.getSpecification())
|
||||||
|
);
|
||||||
|
if (matchFound) {
|
||||||
|
// 找到匹配的任务,删除该 goodsDetail
|
||||||
|
iterator.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!mesGoodsDetails.isEmpty()) {
|
||||||
|
return YcwmsResponse.error("MES与ERP校验失败", null);
|
||||||
|
}
|
||||||
List<TAppOrderIn> orderInList = new ArrayList<>();
|
List<TAppOrderIn> orderInList = new ArrayList<>();
|
||||||
for (var goodsDetail : request.getGoodsDetail()) {
|
for (ErpGoodsDetail goodsDetail : erpGoodsDetails) {
|
||||||
if(goodsDetail == null || StringUtils.isEmpty(goodsDetail.getGoodsId()) || goodsDetail.getQuantity() == null) {
|
if(goodsDetail == null || StringUtils.isEmpty(goodsDetail.getGoodsId()) || goodsDetail.getQuantity() == null) {
|
||||||
return YcwmsResponse.error("参数错误", null);
|
return YcwmsResponse.error("参数错误", null);
|
||||||
}
|
}
|
||||||
|
|
@ -66,7 +105,11 @@ public class YcwmsControllerServiceImpl implements IYcwmsControllerService {
|
||||||
orderIn.setSpecification(goodsDetail.getSpecification());
|
orderIn.setSpecification(goodsDetail.getSpecification());
|
||||||
orderIn.setQuantity(goodsDetail.getQuantity());
|
orderIn.setQuantity(goodsDetail.getQuantity());
|
||||||
orderIn.setGoodsDesc(goodsDetail.getGoodsDesc());
|
orderIn.setGoodsDesc(goodsDetail.getGoodsDesc());
|
||||||
|
orderIn.setGoodsBarcode(goodsDetail.getGoodsBarcode());
|
||||||
orderIn.setOrderStatus(OrderStatusEnum.CREATE.getCode());
|
orderIn.setOrderStatus(OrderStatusEnum.CREATE.getCode());
|
||||||
|
orderIn.setXsfbillno(goodsDetail.getXsfbillno());
|
||||||
|
orderIn.setXsfseq(goodsDetail.getXsfseq());
|
||||||
|
orderIn.setNeibubianhao(goodsDetail.getNeibubianhao());
|
||||||
orderIn.setCreateTime(LocalDateTime.now());
|
orderIn.setCreateTime(LocalDateTime.now());
|
||||||
orderIn.setUpdateTime(LocalDateTime.now());
|
orderIn.setUpdateTime(LocalDateTime.now());
|
||||||
orderInList.add(orderIn);
|
orderInList.add(orderIn);
|
||||||
|
|
|
||||||
|
|
@ -26,12 +26,11 @@ import java.util.stream.Collectors;
|
||||||
// 以下注解用于实现fixed_delay
|
// 以下注解用于实现fixed_delay
|
||||||
@DisallowConcurrentExecution
|
@DisallowConcurrentExecution
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class OrderInCheckor implements Job {
|
public class OrderInCheckor {
|
||||||
private final ITAppOrderInService orderInService;
|
private final ITAppOrderInService orderInService;
|
||||||
private final ITAppWcsTaskService wcsTaskService;
|
private final ITAppWcsTaskService wcsTaskService;
|
||||||
private final IExternalApiService externalApiService;
|
private final IExternalApiService externalApiService;
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(JobExecutionContext jobExecutionContext) {
|
public void execute(JobExecutionContext jobExecutionContext) {
|
||||||
List<TAppOrderIn> inOrdersToCheck = orderInService.list(
|
List<TAppOrderIn> inOrdersToCheck = orderInService.list(
|
||||||
new LambdaQueryWrapper<TAppOrderIn>()
|
new LambdaQueryWrapper<TAppOrderIn>()
|
||||||
|
|
@ -69,6 +68,7 @@ public class OrderInCheckor implements Job {
|
||||||
ErpGoodsDetail goodsDetail = iterator.next();
|
ErpGoodsDetail goodsDetail = iterator.next();
|
||||||
boolean matchFound = inTasks.stream().anyMatch(task ->
|
boolean matchFound = inTasks.stream().anyMatch(task ->
|
||||||
task.getGoodsId().equals(goodsDetail.getGoodsId()) &&
|
task.getGoodsId().equals(goodsDetail.getGoodsId()) &&
|
||||||
|
task.getGoodsBarcode().equals(goodsDetail.getGoodsBarcode()) &&
|
||||||
Objects.equals(task.getQuantity(), goodsDetail.getQuantity()) &&
|
Objects.equals(task.getQuantity(), goodsDetail.getQuantity()) &&
|
||||||
task.getGoodsType().equals(goodsDetail.getGoodsType()) &&
|
task.getGoodsType().equals(goodsDetail.getGoodsType()) &&
|
||||||
Objects.equals(task.getSpecification(), goodsDetail.getSpecification())
|
Objects.equals(task.getSpecification(), goodsDetail.getSpecification())
|
||||||
|
|
|
||||||
|
|
@ -74,11 +74,10 @@ public class OutsExecutor implements Job {
|
||||||
}
|
}
|
||||||
TAppStock stock = new TAppStock();
|
TAppStock stock = new TAppStock();
|
||||||
stock.setGoodsId(orderOut.getGoodsId());
|
stock.setGoodsId(orderOut.getGoodsId());
|
||||||
stock.setBatch(orderOut.getBatch());
|
|
||||||
stock.setSled(orderOut.getSpecification());
|
stock.setSled(orderOut.getSpecification());
|
||||||
List<TAppStock> stockList = stockService.getWithEntity(stock);
|
List<TAppStock> stockList = stockService.getWithEntity(stock);
|
||||||
// 提取所有相关库存的载具号
|
// 提取所有相关库存的载具号
|
||||||
List<String> vehicleIds = stockList.stream().map(TAppStock::getVehicleId).toList();
|
List<String> vehicleIds = stockList.stream().map(TAppStock::getVehicleId).distinct().toList();
|
||||||
List<TAppStock> outStockList = new ArrayList<TAppStock>();
|
List<TAppStock> outStockList = new ArrayList<TAppStock>();
|
||||||
if(vehicleIds.isEmpty()) {
|
if(vehicleIds.isEmpty()) {
|
||||||
log.warn("缺少库存, goodsId is {}, batch is {}, specification is {}", orderOut.getGoodsId(), orderOut.getBatch(), orderOut.getSpecification());
|
log.warn("缺少库存, goodsId is {}, batch is {}, specification is {}", orderOut.getGoodsId(), orderOut.getBatch(), orderOut.getSpecification());
|
||||||
|
|
@ -92,11 +91,9 @@ public class OutsExecutor implements Job {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (stockItem.getGoodsId().equals(orderOut.getGoodsId()) && stockItem.getStockStatus().equals(WmsStockStatusEnums.OK.getCode())) {
|
if (stockItem.getGoodsId().equals(orderOut.getGoodsId()) && stockItem.getStockStatus().equals(WmsStockStatusEnums.OK.getCode())) {
|
||||||
needQuantity -= stockItem.getRemainNum();
|
needQuantity -= stockItem.getTotalNum();
|
||||||
}
|
}
|
||||||
stockItem.setStockStatus(WmsStockStatusEnums.OUTING.getCode());
|
stockItem.setStockStatus(WmsStockStatusEnums.OUTING.getCode());
|
||||||
stockItem.setRemainNum(0.0);
|
|
||||||
stockItem.setRealNum(0.0);
|
|
||||||
outStockList.add(stockItem);
|
outStockList.add(stockItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -122,23 +119,27 @@ public class OutsExecutor implements Job {
|
||||||
// appTaskList.add(appTask);
|
// appTaskList.add(appTask);
|
||||||
// }
|
// }
|
||||||
List<TAppWcsTask> wcsTasks = new ArrayList<>();
|
List<TAppWcsTask> wcsTasks = new ArrayList<>();
|
||||||
for (TAppStock stockItem : outStockList) {
|
Map<String, List<TAppStock>> vehicleIdToStockMap = outStockList.stream()
|
||||||
|
.filter(stockMap -> Objects.equals(stockMap.getStockStatus(), WmsStockStatusEnums.OUTING.getCode()))
|
||||||
|
.collect(Collectors.groupingBy(TAppStock::getVehicleId));
|
||||||
|
|
||||||
|
for (String vehicleId : vehicleIdToStockMap.keySet()) {
|
||||||
|
List<TAppStock> stocks = vehicleIdToStockMap.get(vehicleId);
|
||||||
TAppWcsTask wcsTask = new TAppWcsTask();
|
TAppWcsTask wcsTask = new TAppWcsTask();
|
||||||
wcsTask.setWcsTaskId(UUIDUtils.getNewUUID());
|
wcsTask.setWcsTaskId(UUIDUtils.getNewUUID());
|
||||||
wcsTask.setWcsTaskType(WmsTaskTypeEnums.OUT.getCode());
|
wcsTask.setWcsTaskType(WmsTaskTypeEnums.OUT.getCode());
|
||||||
wcsTask.setWcsTaskStatus(WcsStackerTaskStatusEnums.INIT.getCode());
|
wcsTask.setWcsTaskStatus(WcsStackerTaskStatusEnums.INIT.getCode());
|
||||||
wcsTask.setTaskPriority(1);
|
wcsTask.setTaskPriority(1);
|
||||||
wcsTask.setVehicleId(stockItem.getVehicleId());
|
wcsTask.setVehicleId(stocks.getFirst().getVehicleId());
|
||||||
wcsTask.setOrderId(orderOut.getOrderId());
|
wcsTask.setOrderId(orderOut.getOrderId());
|
||||||
wcsTask.setCreateTime(LocalDateTime.now());
|
wcsTask.setCreateTime(LocalDateTime.now());
|
||||||
wcsTask.setOrigin(stockItem.getLocationId());
|
wcsTask.setOrigin(stocks.getFirst().getLocationId());
|
||||||
wcsTask.setDestination(stockItem.getBarCode());
|
wcsTask.setDestination(stocks.getFirst().getBarCode());
|
||||||
wcsTasks.add(wcsTask);
|
wcsTasks.add(wcsTask);
|
||||||
}
|
}
|
||||||
|
|
||||||
orderOut.setOrderStatus(OrderStatusEnum.RUNNING.getCode());
|
orderOut.setOrderStatus(OrderStatusEnum.RUNNING.getCode());
|
||||||
orderOutService.updateById(orderOut);
|
orderOutService.updateById(orderOut);
|
||||||
// taskService.saveBatch(appTaskList);
|
|
||||||
wcsTaskService.saveBatch(wcsTasks);
|
wcsTaskService.saveBatch(wcsTasks);
|
||||||
stockService.updateBatchById(outStockList);
|
stockService.updateBatchById(outStockList);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import axios from "axios";
|
||||||
|
|
||||||
const _request = axios.create({
|
const _request = axios.create({
|
||||||
// baseURL: 'http://10.18.58.20:12315/wms',
|
// baseURL: 'http://10.18.58.20:12315/wms',
|
||||||
baseURL: 'http://10.18.58.20:12315',
|
baseURL: 'http://10.18.58.21:12315',
|
||||||
timeout: 5000
|
timeout: 5000
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import axios from "axios";
|
||||||
|
|
||||||
const _request = axios.create({
|
const _request = axios.create({
|
||||||
// baseURL: 'http://10.18.58.20:12315/wms',
|
// baseURL: 'http://10.18.58.20:12315/wms',
|
||||||
baseURL: 'http://10.18.58.20:12315',
|
baseURL: 'http://10.18.58.21:12315',
|
||||||
timeout: 5000
|
timeout: 5000
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user