新增webcad生产单导入:cad拆单导入数据空异常处理、代码规范修改

This commit is contained in:
gaoqr
2025-03-14 16:22:39 +08:00
parent 1b02e086c0
commit 60c31bf637
3 changed files with 54 additions and 104 deletions
@@ -12,11 +12,9 @@ public class ErrorCodeConstants {
public static final ErrorCode ORDER_IMPORT_ORGANID_NOT_EXISTS = new ErrorCode(1_005_000_001, "不存在组织id,导入终止");
public static final ErrorCode ORDER_IMPORT_FAIL = new ErrorCode(1_005_000_002, "导入失败");
public static final ErrorCode WEBCAD_ORDER_NOT_EXISTS_ERROR = new ErrorCode(1_005_000_004, "导入失败:生产单号【{}】不存在");
public static final ErrorCode WEBCAD_ORDER_IMPORT_MATERIALS_EMPTY_ERROR = new ErrorCode(1_005_000_005, "导入失败:板材对应列表不能为空");
public static final ErrorCode WEBCAD_ORDER_IMPORT_ROOMBODY_EMPTY_ERROR = new ErrorCode(1_005_000_006, "导入失败:房间柜体列表不能为空");
public static final ErrorCode WEBCAD_ORDER_IMPORT_ORGANID_EMPTY_ERROR = new ErrorCode(1_005_000_007, "导入失败:无法获取机构信息,请检查cadtoken是否配置正确");
public static final ErrorCode WEBCAD_ORDER_IMPORT_FAILED = new ErrorCode(1_005_000_008, "导入失败:请检查拆单数据");
public static final ErrorCode WEBCAD_ORDER_IMPORT_PLATE_NOT_EXIST_ERROR = new ErrorCode(1_005_000_009, "导入失败:板材对应失败,板材库中不存在对应板材【{}】");
public static final ErrorCode WEBCAD_ORDER_IMPORT_SEAL_NOT_EXIST_ERROR = new ErrorCode(1_005_000_010, "导入失败:封边条对应失败,配件库中不存在对应封边条【{}】");
public static final ErrorCode WEBCAD_ORDER_IMPORT_SAVEDATA_ERROR = new ErrorCode(1_005_000_011, "导入失败:数据保存异常,请检查拆单数据");
public static final ErrorCode WEBCAD_ORDER_IMPORT_ORGANID_EMPTY_ERROR = new ErrorCode(1_005_000_005, "导入失败:无法获取机构信息,请检查cadtoken是否配置正确");
public static final ErrorCode WEBCAD_ORDER_IMPORT_FAILED = new ErrorCode(1_005_000_006, "导入失败:请检查拆单数据");
public static final ErrorCode WEBCAD_ORDER_IMPORT_PLATE_NOT_EXIST_ERROR = new ErrorCode(1_005_000_007, "导入失败:板材对应失败,板材库中不存在对应板材【{}】");
public static final ErrorCode WEBCAD_ORDER_IMPORT_SEAL_NOT_EXIST_ERROR = new ErrorCode(1_005_000_008, "导入失败:封边条对应失败,配件库中不存在对应封边条【{}】");
public static final ErrorCode WEBCAD_ORDER_IMPORT_SAVEDATA_ERROR = new ErrorCode(1_005_000_009, "导入失败:数据保存异常,请检查拆单数据");
}
@@ -3,14 +3,9 @@ package com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;
import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
/**
* @author Gqr
* @since 2025/3/3 17:40
@@ -22,65 +17,6 @@ public class WebCadDataOrderReqVO {
* 生产单号
*/
@JsonProperty(value = "OrderNo")
@NotNull(message = "生产单号不能为空")
private String OrderNo;
/**
* 自定义单号
*/
@JsonProperty(value = "CustomOrderNo")
private String CustomOrderNo;
/**
* 客户
*/
@JsonProperty(value = "CustomName")
private String CustomName;
/**
* 状态
*/
@JsonProperty(value = "Status")
private int Status;
/**
* 经销商
*/
@JsonProperty(value = "SalePerson")
private String SalePerson;
/**
* 订单日期
*/
@JsonProperty(value = "OrderDate")
@NotNull(message = "订单日期不能为空")
private String OrderDate;
/**
* 交付日期
*/
@NotNull(message = "交付日期不能为空")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
@JsonProperty(value = "DeliveryDate")
private LocalDate DeliveryDate;
@JsonProperty(value = "Consigee")
private String Consigee;
@JsonProperty(value = "ConsigeePhone")
private String ConsigeePhone;
@JsonProperty(value = "ConsigeeAddress")
private String ConsigeeAddress;
/**
* 拆单员
*/
@JsonProperty(value = "Splitter")
private String Splitter;
/**
* 备注
*/
@JsonProperty(value = "Remark")
private String Remark;
}
@@ -66,9 +66,7 @@ import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPORT_MATERIALS_EMPTY_ERROR;
import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPORT_PLATE_NOT_EXIST_ERROR;
import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPORT_ROOMBODY_EMPTY_ERROR;
import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPORT_SAVEDATA_ERROR;
import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPORT_SEAL_NOT_EXIST_ERROR;
import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_NOT_EXISTS_ERROR;
@@ -265,7 +263,7 @@ public class WebCadOrderImportFactory {
*/
private void analyzeMaterials(List<WebCadDataMaterialReqVO> materialReqVOS, List<WebCadDataBlockReqVO> blockReqVOS) {
if (CollUtil.isEmpty(materialReqVOS)) {
throw new ServiceException(WEBCAD_ORDER_IMPORT_MATERIALS_EMPTY_ERROR);
return;
}
for (WebCadDataMaterialReqVO materialReqVO : materialReqVOS) {
String plateGoodsId = materialReqVO.getId();
@@ -411,7 +409,7 @@ public class WebCadOrderImportFactory {
*/
private void analyzeRoomBody(List<WebCadDataDoubleRoomTreeReqVO> douleRoomTree) {
if (CollUtil.isEmpty(douleRoomTree)) {
throw new ServiceException(WEBCAD_ORDER_IMPORT_ROOMBODY_EMPTY_ERROR);
return;
}
for (WebCadDataDoubleRoomTreeReqVO room : douleRoomTree) {
String roomName = room.getName();
@@ -432,6 +430,9 @@ public class WebCadOrderImportFactory {
* @param blockList
*/
private void analyzeBlockList(List<WebCadDataBlockReqVO> blockList) {
if (CollUtil.isEmpty(blockList)) {
return;
}
// 基于房间名分组
Map<String, List<WebCadDataBlockReqVO>> roomCollect = blockList.stream()
.collect(Collectors.groupingBy(WebCadDataBlockReqVO::getRoomName, Collectors.toList()));
@@ -643,8 +644,6 @@ public class WebCadOrderImportFactory {
private void analyzeBlockProcessGroup(OrderBodyDO orderBodyDO, WebCadDataBlockReqVO block, Long plateId) {
Long bodyId = orderBodyDO.getId();
Long roomId = orderBodyDO.getRoomId();
String roomName = orderBodyDO.getRoomName();
String bodyName = orderBodyDO.getName();
Boolean isSpecialShape = block.getIsSpecialShape();
List<WebCadDataBlockReqVO.GroupInfo> groupInfos = block.getGroupInfos();
@@ -728,7 +727,14 @@ public class WebCadOrderImportFactory {
* @param parts
*/
private void analyzeParts(WebCadDataPartsReqVO parts) {
if (ObjectUtil.isNull(parts)) {
return;
}
List<WebCadDataPartsReqVO.BlockObjectListDTO> blockObjectList = parts.getBlockObjectList();
if (CollUtil.isEmpty(blockObjectList)) {
return;
}
// 配件对应列表
matchLeftEdge(parts, blockObjectList);
@@ -756,6 +762,20 @@ public class WebCadOrderImportFactory {
// 房间+柜体不在成倍缓存中, 再检查bodyMap, 再没有创建房间,缓存房间到bodyMap
createPartsUnknownBody(roomId, roomName, bodyName, listBody);
} else {
multipleCreateProcessGroup(cadBody, roomNameKey, listBody);
}
}
});
}
/**
* 成倍创建配件加工组和item
*
* @param cadBody
* @param roomNameKey
* @param listBody
*/
private void multipleCreateProcessGroup(WebCadDataDoubleRoomTreeReqVO.ChildrenDTO cadBody, String roomNameKey, List<WebCadDataPartsReqVO.BlockObjectListDTO> listBody) {
// 成倍数量
Integer bodyMultipleNum = cadBody.getCount();
for (int j = 0; j < bodyMultipleNum; j++) {
@@ -767,9 +787,6 @@ public class WebCadOrderImportFactory {
}
}
}
}
});
}
/**
* 创建不需要成倍的房间柜体以及其下的板件
@@ -803,8 +820,6 @@ public class WebCadOrderImportFactory {
private void analyzePartProcessGroup(OrderBodyDO orderBodyDO, WebCadDataPartsReqVO.BlockObjectListDTO part) {
Long bodyId = orderBodyDO.getId();
Long roomId = orderBodyDO.getRoomId();
String roomName = orderBodyDO.getRoomName();
String bodyName = orderBodyDO.getName();
// 遍历加工组信息,生成对应的orderItem
List<WebCadDataBlockReqVO.GroupInfo> groupInfos = part.getGroupInfos();
@@ -953,17 +968,17 @@ public class WebCadOrderImportFactory {
.color(EMPTY_STRING)
.category(type)
.type(type)
.goodsId(StringUtils.isNotEmpty(goodsId) ? goodsId : EMPTY_STRING)
.goodsId(getEmpty(goodsId))
.length(NumberUtil.parseDouble(part.getHeight()))
.width(NumberUtil.parseDouble(part.getWidth()))
.thickness(NumberUtil.parseDouble(part.getThickness()))
.isComposite(part.getIsComposite())
.name(part.getName())
.material(EMPTY_STRING)
.model(StringUtils.isNotEmpty(model) ? model : EMPTY_STRING)
.spec(StringUtils.isNotEmpty(spec) ? spec : EMPTY_STRING)
.brand(StringUtils.isNotEmpty(brand) ? brand : EMPTY_STRING)
.factory(StringUtils.isNotEmpty(factory) ? factory : EMPTY_STRING)
.model(getEmpty(model))
.spec(getEmpty(spec))
.brand(getEmpty(brand))
.factory(getEmpty(factory))
.unit(part.getUnit())
.price(0.0)
.subparts(EMPTY_STRING)
@@ -1018,6 +1033,16 @@ public class WebCadOrderImportFactory {
orderInfoBatchInsertWithinThreshold(orderPartsMapper, orderPartsDOS, true);
}
/**
* value为空返回EMPTY_STRING
*
* @param value
* @return
*/
private String getEmpty(String value) {
return StringUtils.isNotEmpty(value) ? value : EMPTY_STRING;
}
/**
* 配件对应
*
@@ -1112,15 +1137,6 @@ public class WebCadOrderImportFactory {
}
}
// /**
// * 数据保存入库
// */
// private void saveData() {
// orderInfoBatchInsertWithinThreshold(orderBodyMapper, bodyMap.values().stream().toList(), true);
// orderInfoBatchInsertWithinThreshold(orderItemMapper, orderItemDOS, true);
// orderInfoBatchInsertWithinThreshold(orderGroupMapper, orderGroupDOS, true);
// }
/**
* 数据保存入库