Merge remote-tracking branch 'origin/main'

This commit is contained in:
gaoqr
2024-11-29 17:05:02 +08:00
11 changed files with 233 additions and 177 deletions
@@ -40,6 +40,7 @@ public class ErrorCodeConstants {
// ========== 生产单 TODO 补充编号 ==========
public static final ErrorCode PHONE_NOT_LAWFUL = new ErrorCode(1_001_116_000, "手机号不合法");
public static final ErrorCode CUSTOM_ORDER_EXISTS = new ErrorCode(1_001_117_000, "自定义生产单号存在");
public static final ErrorCode ORDER_EXISTS = new ErrorCode(1_001_117_000, "api导入生产单已存在");
public static final ErrorCode ORDER_PROCESS_NOT_EXISTS = new ErrorCode(1_001_119_001, "工序组不存在");
public static final ErrorCode ORDER_PROCESS_EXISTS = new ErrorCode(1_001_119_002, "该生产单工序组已经存在");
public static final ErrorCode PROCESS_GROUP_NOT_EXISTS = new ErrorCode(1_002_029_003, "工序组不存在");
@@ -24,6 +24,9 @@ public class OrderPlatesDetailReqVO {
@Schema(description = "板编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "晨丰")
private String plateNo;
@Schema(description = "自定义板编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "00001")
private String customPlateNo;
@Schema(description = "材质", requiredMode = Schema.RequiredMode.REQUIRED, example = "晨丰")
private String material;
@@ -29,10 +29,13 @@ public class PlateRespVO extends PageParam {
@ExcelProperty("板名称")
private String name;
@Schema(description = "自定义板编号,设计有板编号,则保留设计板编号;设计没有且在机台设置中设置了自定义板编号规则,则按规则自动生成", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("自定义板编号,设计有板编号,则保留设计板编号;设计没有且在机台设置中设置了自定义板编号规则,则按规则自动生成")
@Schema(description = "板编号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("板编号")
private String plateNo;
@Schema(description = "自定义板编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "00001")
private String customPlateNo;
@Schema(description = "板类型,0 层板 1 立板 2 背板", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("板类型,0 层板 1 立板 2 背板")
private Integer type;
@@ -50,6 +50,7 @@ import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
import com.cf.imes.module.executor.dal.mysql.rawgoods.RawGoodsMapper;
import com.cf.imes.module.executor.enums.OrderDeletedEnum;
import com.cf.imes.module.executor.enums.OrderStatusEnum;
import com.cf.imes.module.executor.service.customplateno.CustomPlateNoGenerateService;
import com.cf.imes.module.executor.service.plan.PlanService;
import com.cf.imes.module.executor.util.deviseData.structure.FieldConstants;
import com.cf.imes.module.executor.util.deviseData.structure.PlateDetail;
@@ -135,6 +136,9 @@ public class OrderServiceImpl implements OrderService {
@Resource
private PartsMapper partsMapper;
@Resource
private CustomPlateNoGenerateService customPlateNoGenerateService;
private static final String SUBMIT_STATE = "1"; // 空订单 原生产系统
@@ -148,10 +152,6 @@ public class OrderServiceImpl implements OrderService {
@Resource
private PlanService planService;
// 重复使用的常量
private static final String PLATE_GOODS_LIST_KEY = "plateGoodDOLists";
private static final String GOODSDO_KEY = "goodsDO";
@Override
public void updateOrder(OrderSaveReqVO updateReqVO) {
// 校验存在, 生产单未删除
@@ -383,8 +383,13 @@ public class OrderServiceImpl implements OrderService {
@Override
@Transactional(rollbackFor = Exception.class)
public Long importApiData(Map<String, Object> listMap) {
OrderDO order = (OrderDO) listMap.get("orderDO");
OrderDO order = (OrderDO) listMap.get(FieldConstants.ORDER);
if (order != null) {
//判断是否已经导入
// if (!validateOrderNoExists(order.getApiOrderId(), OrganContextHolder.getOrganId())) {
// throw exception(ORDER_EXISTS);
// }
validateCustomOrderNoExists(order.getCustomOrderNo());
String nickName = SecurityFrameworkUtils.getLoginUser().getNickname();
if (order.getSalesman() == null || order.getSalesman().equals("")) {
@@ -393,25 +398,25 @@ public class OrderServiceImpl implements OrderService {
if (order.getSplitter() == null || order.getSplitter().equals("")) {
order.setSplitter(nickName);
}
orderMapper.insert(order);
}
List<GoodsDO> goodsDO = (List<GoodsDO>) listMap.get(GOODSDO_KEY);
List<RawGoodsDO> rawGoodsDO = (List<RawGoodsDO>) listMap.get("rawGoodsDO");
List<OrderBodyDO> bodyDO = (List<OrderBodyDO>) listMap.get("bodyDO");
List<OrderGroupDO> groupDO = (List<OrderGroupDO>) listMap.get("groupDO");
List<OrderPartsDO> partsDO = (List<OrderPartsDO>) listMap.get("partsDO");
List<GoodsDO> goodsDO = (List<GoodsDO>) listMap.get(FieldConstants.GOODS);
List<RawGoodsDO> rawGoodsDO = (List<RawGoodsDO>) listMap.get(FieldConstants.RAW_GOODS);
List<OrderBodyDO> bodyDO = (List<OrderBodyDO>) listMap.get(FieldConstants.BODY);
List<OrderGroupDO> groupDO = (List<OrderGroupDO>) listMap.get(FieldConstants.GROUP);
List<OrderPartsDO> partsDO = (List<OrderPartsDO>) listMap.get(FieldConstants.PARTS);
List<PlateDO> plateDO = (List<PlateDO>) listMap.get(FieldConstants.PLATE);
List<PlateDetail> plateDetail = (List<PlateDetail>) listMap.get("plateDetail");
List<OrderItemDO> itemDO = (List<OrderItemDO>) listMap.get("itemDO");
List<OrderPartsRemark> partsRemark = (List<OrderPartsRemark>) listMap.get("partsRemark");
List<PlateDetail> plateDetail = (List<PlateDetail>) listMap.get(FieldConstants.PLATE_DETAIL);
List<OrderItemDO> itemDO = (List<OrderItemDO>) listMap.get(FieldConstants.ITEM);
List<OrderPartsRemark> partsRemark = (List<OrderPartsRemark>) listMap.get(FieldConstants.PARTS_REMARK);
Map<String, List<?>> map = getPlateGoods(goodsDO);// 检验商品板材信息是否存在
goodsDO = (List<GoodsDO>) map.get(GOODSDO_KEY);
List<PlateGoodDO> plateGoodDOS = (List<PlateGoodDO>) map.get(PLATE_GOODS_LIST_KEY);
goodsDO = (List<GoodsDO>) map.get(FieldConstants.GOODS);
List<PlateGoodDO> plateGoodDOS = (List<PlateGoodDO>) map.get(FieldConstants.PLATE_GOODS_LIST_KEY);
// 配件信息
List<PartsDO> partsDOS = getPartsGoods(partsDO);
customPlateNoGenerateService.generateCustomPlateNo(order, plateDO);
orderMapper.insert(order);
orderInputProcessor.batchInsert(rawGoodsDO, bodyDO, groupDO, partsDO, plateDO, itemDO, goodsDO, plateGoodDOS, partsDOS);
List<OrderModelDO> orderModelDOs = BeanUtils.toBean(plateDetail, OrderModelDO.class);
@@ -443,28 +448,27 @@ public class OrderServiceImpl implements OrderService {
@Override
@Transactional(rollbackFor = Exception.class)
public void importExcelData(OrderDO orderDO, Integer index, Map<String, Object> listMap) {
insertOrder(orderDO, index);
if (!Objects.equals(orderDO.getStatus(), OrderStatusEnum.NEW_ORDER.getStatus())) {
return;
}
List<RawGoodsDO> rawGoodsDO = (List<RawGoodsDO>) listMap.get("rawGoodsDOS");
List<GoodsDO> goodsDO = (List<GoodsDO>) listMap.get("goodsDOS");
List<RawGoodsDO> rawGoodsDO = (List<RawGoodsDO>) listMap.get(FieldConstants.RAW_GOODS);
List<GoodsDO> goodsDO = (List<GoodsDO>) listMap.get(FieldConstants.GOODS);
List<OrderBodyDO> bodyDO = (List<OrderBodyDO>) listMap.get("orderBodyDOS");
List<OrderGroupDO> groupDO = (List<OrderGroupDO>) listMap.get("orderGroupDOS");
List<PlateDO> plateDO = (List<PlateDO>) listMap.get("plateDOS");
List<OrderPartsDO> partsDO = (List<OrderPartsDO>) listMap.get("orderPartsDOS");
List<OrderItemDO> itemDO = (List<OrderItemDO>) listMap.get("orderItemDOS");
// List<OrderModelDO> orderModelDOS = (List<OrderModelDO>) listMap.get("orderModelDOS");
List<OrderPartsRemark> orderPartsRemarks = (List<OrderPartsRemark>) listMap.get("orderPartsRemarks");
List<PlateDetail> plateDetail = (List<PlateDetail>) listMap.get("plateDetail");
List<OrderBodyDO> bodyDO = (List<OrderBodyDO>) listMap.get(FieldConstants.BODY);
List<OrderGroupDO> groupDO = (List<OrderGroupDO>) listMap.get(FieldConstants.GROUP);
List<PlateDO> plateDO = (List<PlateDO>) listMap.get(FieldConstants.PLATE);
List<OrderPartsDO> partsDO = (List<OrderPartsDO>) listMap.get(FieldConstants.PARTS);
List<OrderItemDO> itemDO = (List<OrderItemDO>) listMap.get(FieldConstants.ITEM);
List<OrderPartsRemark> orderPartsRemarks = (List<OrderPartsRemark>) listMap.get(FieldConstants.PARTS_REMARK);
List<PlateDetail> plateDetail = (List<PlateDetail>) listMap.get(FieldConstants.PLATE_DETAIL);
// 板材库匹配
Map<String, List<?>> map = getPlateGoods(goodsDO);// 检验商品板材信息是否存在 excel
goodsDO = (List<GoodsDO>) map.get(GOODSDO_KEY);
List<PlateGoodDO> plateGoodDOS = (List<PlateGoodDO>) map.get(PLATE_GOODS_LIST_KEY);
goodsDO = (List<GoodsDO>) map.get(FieldConstants.GOODS);
List<PlateGoodDO> plateGoodDOS = (List<PlateGoodDO>) map.get(FieldConstants.PLATE_GOODS_LIST_KEY);
// 配件库匹配
List<PartsDO> partsDOList = getPartsGoods(partsDO);
@@ -483,17 +487,14 @@ public class OrderServiceImpl implements OrderService {
updateOrder(BeanUtils.toBean(orderDO, OrderSaveReqVO.class));
}
}
customPlateNoGenerateService.generateCustomPlateNo(orderDO, plateDO);
insertOrder(orderDO, index);
orderInputProcessor.batchInsert(rawGoodsDO, bodyDO, groupDO, partsDO, plateDO, itemDO, goodsDO, plateGoodDOS, partsDOList);
// if (orderModelDOS != null && !orderModelDOS.isEmpty()) {
// orderInputProcessor.batchSaveModel(orderModelDOS);
// }
if (plateDetail != null && !plateDetail.isEmpty()){
List<OrderModelDO> orderModelDOs = BeanUtils.toBean(plateDetail, OrderModelDO.class);
// if (!orderModelDOs.isEmpty()) {
// orderModelDOs.forEach(orderModelDO -> orderModelDO.setOrderId(orderDO.getId()));
// System.out.println("----" + orderModelDOs);
orderInputProcessor.batchSaveModel(orderModelDOs);
// }
}
if (orderPartsRemarks != null && !orderPartsRemarks.isEmpty()) {
orderInputProcessor.batchSaveOrderPartsModel(orderPartsRemarks);
@@ -782,8 +783,8 @@ public class OrderServiceImpl implements OrderService {
}
}
map.put(GOODSDO_KEY, goodsLists);
map.put(PLATE_GOODS_LIST_KEY, plateGoodLists);
map.put(FieldConstants.GOODS, goodsLists);
map.put(FieldConstants.PLATE_GOODS_LIST_KEY, plateGoodLists);
return map;
}
@@ -867,7 +868,7 @@ public class OrderServiceImpl implements OrderService {
}
// 判断是否已经导入
private Boolean validateOrderNoExists(String orderNo, Long organId) {
private boolean validateOrderNoExists(String orderNo, Long organId) {
if (orderMapper.selectCount(new LambdaQueryWrapper<OrderDO>()
.eq(OrderDO::getApiOrderId, orderNo)
.eq(OrderDO::getDeleted, false)
@@ -16,5 +16,6 @@ public class FieldConstants {
public static final String PLATE_DETAIL = "plateDetail";
public static final String PARTS_REMARK = "partsRemark";
public static final String PLATE_GOODS_LIST_KEY = "plateGoodDOLists";
}
@@ -14,12 +14,10 @@ import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
import com.cf.imes.module.executor.dal.dataobject.rawgoods.RawGoodsDO;
import com.cf.imes.module.executor.enums.*;
import com.cf.imes.module.executor.service.customplateno.CustomPlateNoGenerateService;
import com.cf.imes.module.executor.util.fileConversion.admin.SnowflakeIdWorker3rd;
import com.cf.imes.module.executor.util.deviseData.structure.*;
import com.cf.imes.module.system.api.dict.DictDataApi;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.parameters.P;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@@ -50,8 +48,6 @@ public class ApiTypeRealize {
@Resource
private ApiDataAchieve apiDataAchieve;
@Resource
private CustomPlateNoGenerateService customPlateNoGenerateService;
private static final Integer X = 0;
private static final Integer Y = 1;
@@ -144,7 +140,7 @@ public class ApiTypeRealize {
Map<Long, PlateDO> orderPlatesDO = (Map<Long, PlateDO>) platesDO.get("platesInfos");
if (orderPlatesDO != null) {
// 需要添加自定义板编号
plateAddGroupName(orderGroupDO, groupLists, orderPlatesDO);
// plateAddGroupName(orderGroupDO, groupLists, orderPlatesDO);
map.put(FieldConstants.PLATE, new ArrayList<>(orderPlatesDO.values()));
}
@@ -782,8 +778,9 @@ public class ApiTypeRealize {
.filterType("")
.remark(remark)
.organId(organId)
// .roomName(bodyInfos.get(plate.getLong(ProduceApiConstants.BD_BOX_ID)).getRoomName())
// .bodyName(bodyInfos.get(plate.getLong(ProduceApiConstants.BD_BOX_ID)).getName())
.roomName(bodyInfos.get(plate.getLong(ProduceApiConstants.BD_BOX_ID)).getRoomName())
.bodyName(bodyInfos.get(plate.getLong(ProduceApiConstants.BD_BOX_ID)).getName())
.customPlateNoBuilder(new StringBuilder())
.build();
// item 明细
OrderItemDO itemPlate = OrderItemDO.builder()
@@ -913,7 +910,7 @@ public class ApiTypeRealize {
map.put(Long.valueOf(blockNo), block);
}
}
System.out.println("map 板材 " + map);
// System.out.println("map 板材 " + map);
return map;
}
@@ -17,6 +17,7 @@ import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO;
import com.cf.imes.module.executor.dal.dataobject.rawgoods.RawGoodsDO;
import com.cf.imes.module.executor.enums.OrderItemTypeEnum;
import com.cf.imes.module.executor.service.customplateno.CustomPlateNoGenerateService;
import com.cf.imes.module.executor.util.deviseData.structure.FieldConstants;
import com.cf.imes.module.executor.util.deviseData.structure.PlateDetail;
import com.cf.imes.module.executor.util.fileConversion.admin.SnowflakeIdWorker3rd;
import com.cf.imes.module.system.api.dict.DictDataApi;
@@ -49,8 +50,6 @@ public class ExcelTypeRealize {
@Resource
private DictDataApi dictDataApi;
@Resource
private CustomPlateNoGenerateService customPlateNoGenerateService;
final String NOT_ASSIGNED = "未命名";
final String PLATE = "plate";
@@ -63,19 +62,18 @@ public class ExcelTypeRealize {
return null;
}
// List<OrderPlateImportExcelVO> excelVOS = (List<OrderPlateImportExcelVO>) list;
long startTime = System.currentTimeMillis();
Map<String, Object> map = new HashMap<>();
Long organId = OrganContextHolder.getOrganId();
ArrayList<RawGoodsDO> rawGoodsDOS = new ArrayList<>();
ArrayList<GoodsDO> goodsDOS = new ArrayList<>();
ArrayList<PlateGoodDO> plateGoodDOS = new ArrayList<>();
ArrayList<OrderBodyDO> orderBodyDOS = new ArrayList<>();
ArrayList<OrderGroupDO> orderGroupDOS = new ArrayList<>();
ArrayList<PlateDO> plateDOS = new ArrayList<>();
ArrayList<OrderPartsDO> orderPartsDOS = new ArrayList<>();
ArrayList<OrderItemDO> orderItemDOS = new ArrayList<>();
ArrayList<OrderModuleExtraDO> orderModuleExtraDOS = new ArrayList<>();
ArrayList<PlateDetail> plateDetail = new ArrayList<>();
ArrayList<OrderPartsRemark> orderPartsRemarks = new ArrayList<>();
@@ -316,9 +314,9 @@ public class ExcelTypeRealize {
.isSpecialShaped(false)
.isSculpt(false)
.remark(remarkExtract(combination.remarkJSON()))
// .roomName(roomName)
// .bodyName(bodyName)
// .processGroupName(combinationName)
.roomName(roomName)
.bodyName(bodyName)
.customPlateNoBuilder(new StringBuilder())
.build();
plateDOS.add(plateDO);
@@ -334,22 +332,6 @@ public class ExcelTypeRealize {
} else {
//配件
// Long partsId = (Long) snowFlakeGenerator.nextId(null);
// OrderPartsDO orderPartsDO = OrderPartsDO.builder().id(partsId).orderId(orderId).goodsId(combination.getGoodsId())
// .color(combination.getColor()).category(combination.getCategory()).type(combination.getType())
// .length(Double.valueOf(StringUtils.isEmpty(combination.getGoodsHeight()) ? "0" : combination.getGoodsHeight()))
// .width(Double.valueOf(StringUtils.isEmpty(combination.getGoodsWidth()) ? "0" : combination.getGoodsWidth()))
// .thickness(Double.valueOf(StringUtils.isEmpty(combination.getGoodsThickness()) ? "0" : combination.getGoodsThickness()))
// .isComposite(Boolean.valueOf(combination.getIsComposite()))
// .name(combination.getGoodsName()).material(combination.getMaterial()).type(combination.getGoodType())
// .model(combination.getModel()).spec(combination.getSpec()).brand(combination.getBrand()).factory(combination.getFactory())
// .unit(combination.getUnit()).price(0.0).isComposite(false).remark(remarkExtract(combination.remarkJSON())).isComposite(false).build();
// orderPartsDOS.add(orderPartsDO);
// // 配件备注信息存储
// OrderPartsRemark orderPartsRemark = OrderPartsRemark.builder().partsId(partsId).orderId(orderId)
// .remark(remarkExtract(combination.remarkJSON())).build();
// orderPartsRemarks.add(orderPartsRemark);
OrderItemDO orderItemDO = OrderItemDO.builder().orderId(orderId).type(OrderItemTypeEnum.PARTS_ITEM.getStatus())
.roomId(roomName != " " ? roomId : null).bodyId(bodyName != " " ? bodyId : null).partsId(combination.getGoodId()).groupId(synthesisTypeName != " " ? groupId : null)
.num(Double.valueOf(combination.getGoodsNumber())).build();
@@ -365,26 +347,23 @@ public class ExcelTypeRealize {
});
});
orderBodyDO.setPlateNum(Integer.valueOf(plateCountByCabinetName[0].intValue()));
// if (orderBodyDO.getName() != null && !orderBodyDO.getName().trim().isEmpty()) {
orderBodyDOS.add(orderBodyDO);
// }
// System.out.println(" ban-num " + plateCountByCabinetName[0]);
});
});
// 添加板材自定义板编号
// customPlateNoGenerateService.generateCustomPlateNo(plateDOS);
map.put("rawGoodsDOS", rawGoodsDOS);
map.put("goodsDOS", goodsDOS);
map.put("plateGoodDOS", plateGoodDOS);
map.put("orderBodyDOS", orderBodyDOS);
map.put("orderGroupDOS", orderGroupDOS);
map.put("plateDOS", plateDOS);
map.put("orderPartsDOS", orderPartsDOS);
map.put("orderItemDOS", orderItemDOS);
map.put("orderModuleExtraDOS", orderModuleExtraDOS);
map.put("plateDetail", plateDetail);
map.put("orderPartsRemarks", orderPartsRemarks);
map.put(FieldConstants.RAW_GOODS, rawGoodsDOS);
map.put(FieldConstants.GOODS, goodsDOS);
map.put(FieldConstants.BODY, orderBodyDOS);
map.put(FieldConstants.GROUP, orderGroupDOS);
map.put(FieldConstants.PLATE, plateDOS);
map.put(FieldConstants.PARTS, orderPartsDOS);
map.put(FieldConstants.ITEM, orderItemDOS);
map.put(FieldConstants.PLATE_DETAIL, plateDetail);
map.put(FieldConstants.PARTS_REMARK, orderPartsRemarks);
long endTime = System.currentTimeMillis();
long duration = endTime - startTime;
System.out.println("方法运行耗时 excel 转换: " + duration + " 毫秒");
return map;
}
@@ -136,8 +136,8 @@ public class BlockXmlVO implements Serializable {
private String boxCode;
// 加工组号
@XmlAttribute(name = "groupCode")
private String groupCode;
@XmlAttribute(name = "groupCodes")
private String groupCodes;
// 柜体名称
@XmlAttribute(name = "groupName")
@@ -25,6 +25,8 @@ import java.time.temporal.ChronoUnit;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Consumer;
import java.util.function.Supplier;
@@ -72,9 +74,8 @@ public class XMLUtil {
}
// XML转为JAVA对象
Object odfBody = XmlBuilder.xmlStrToOject(clazz, builder.toString());
return odfBody;
return XmlBuilder.xmlStrToOject(clazz, builder.toString());
} catch (IOException e) {
log.error("Error reading the file: " + file.getOriginalFilename(), e);
} catch (Exception e) {
@@ -186,53 +187,131 @@ public class XMLUtil {
long startTime = System.currentTimeMillis();
AtomicBoolean error = new AtomicBoolean(true);
RoomXmlVOS roomXmlVOS = orderXmlVO.getRoomXmlVOS();
if (roomXmlVOS != null) {
checkRoom(roomXmlVOS, error);
}
// 创建一个 CompletableFuture 来表示所有任务的组合
CompletableFuture<Void> allTasks = CompletableFuture.allOf(
checkRoomAsync(orderXmlVO.getRoomXmlVOS(), error),
checkModulesAsync(orderXmlVO.getModuleXmlVOS(), error),
checkGroupsAsync(orderXmlVO.getGroupXmlVOS(), error),
checkMaterialsAsync(orderXmlVO.getMaterialXmlVO(), error)
);
ModuleXmlVOS moduleXmlVOS = orderXmlVO.getModuleXmlVOS();
if (moduleXmlVOS != null) {
checkModules(moduleXmlVOS, error);
}
GroupXmlVOS grooveXmlVOS = orderXmlVO.getGroupXmlVOS();
if (grooveXmlVOS != null) {
checkGroups(grooveXmlVOS, error);
}
MaterialXmlVO materialXmlVO = orderXmlVO.getMaterialXmlVO();
if (materialXmlVO != null) {
PlateXmlVOS plateXmlVOS = materialXmlVO.getPlateXmlVOS();
Map<String, Object> map = extractPlateDate(plateXmlVOS);
if (map != null) {
// 判断板块和归属code是否相匹配
}
if (plateXmlVOS != null && plateXmlVOS.getPlateXmlVOList().size() > 0) {
checkPlates(plateXmlVOS.getPlateXmlVOList(), error);
}
AccessoryXmlVO accessoryXmlVO = materialXmlVO.getAccessoryXmlVO(); //配件
if (accessoryXmlVO != null) {
checkEdgings(accessoryXmlVO.getEdgingXmlVOS(), error);
checkHardwares(accessoryXmlVO.getHardwareXmlVOS(), error);
}
AssemblieXmlVOS assemblieXmlVOS = materialXmlVO.getAssemblieXmlVOS(); // 组件
if (assemblieXmlVOS != null && assemblieXmlVOS.getAssemblyXmlVOList() != null && assemblieXmlVOS.getAssemblyXmlVOList().size() > 0) {
checkAssemblies(assemblieXmlVOS, error);
}
try {
// 等待所有任务完成
allTasks.get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
return false; // 如果有异常发生,返回 false
}
long endTime = System.currentTimeMillis();
long duration = endTime - startTime;
System.out.println("方法运行耗时: " + duration + " 毫秒");
System.out.println("方法运行耗时 xml: " + duration + " 毫秒");
return error.get();
}
private CompletableFuture<Void> checkRoomAsync(RoomXmlVOS roomXmlVOS, AtomicBoolean error) {
return CompletableFuture.runAsync(() -> {
if (roomXmlVOS != null) {
checkRoom(roomXmlVOS, error);
}
});
}
private CompletableFuture<Void> checkModulesAsync(ModuleXmlVOS moduleXmlVOS, AtomicBoolean error) {
return CompletableFuture.runAsync(() -> {
if (moduleXmlVOS != null) {
checkModules(moduleXmlVOS, error);
}
});
}
private CompletableFuture<Void> checkGroupsAsync(GroupXmlVOS groupXmlVOS, AtomicBoolean error) {
return CompletableFuture.runAsync(() -> {
if (groupXmlVOS != null) {
checkGroups(groupXmlVOS, error);
}
});
}
private CompletableFuture<Void> checkMaterialsAsync(MaterialXmlVO materialXmlVO, AtomicBoolean error) {
return CompletableFuture.runAsync(() -> {
if (materialXmlVO != null) {
PlateXmlVOS plateXmlVOS = materialXmlVO.getPlateXmlVOS();
Map<String, Object> map = extractPlateDate(plateXmlVOS);
if (map != null) {
// 判断板块和归属code是否相匹配
}
if (plateXmlVOS != null && !plateXmlVOS.getPlateXmlVOList().isEmpty()) {
checkPlates(plateXmlVOS.getPlateXmlVOList(), error);
}
AccessoryXmlVO accessoryXmlVO = materialXmlVO.getAccessoryXmlVO(); // 配件
if (accessoryXmlVO != null) {
checkEdgings(accessoryXmlVO.getEdgingXmlVOS(), error);
checkHardwares(accessoryXmlVO.getHardwareXmlVOS(), error);
}
AssemblieXmlVOS assemblieXmlVOS = materialXmlVO.getAssemblieXmlVOS(); // 组件
if (assemblieXmlVOS != null && assemblieXmlVOS.getAssemblyXmlVOList() != null && !assemblieXmlVOS.getAssemblyXmlVOList().isEmpty()) {
checkAssemblies(assemblieXmlVOS, error);
}
}
});
}
// public Boolean checkVO(OrderXmlVO orderXmlVO) {
// long startTime = System.currentTimeMillis();
// AtomicBoolean error = new AtomicBoolean(true);
//
// RoomXmlVOS roomXmlVOS = orderXmlVO.getRoomXmlVOS();
// if (roomXmlVOS != null) {
// checkRoom(roomXmlVOS, error);
// }
//
// ModuleXmlVOS moduleXmlVOS = orderXmlVO.getModuleXmlVOS();
// if (moduleXmlVOS != null) {
// checkModules(moduleXmlVOS, error);
// }
//
// GroupXmlVOS grooveXmlVOS = orderXmlVO.getGroupXmlVOS();
// if (grooveXmlVOS != null) {
// checkGroups(grooveXmlVOS, error);
// }
//
// MaterialXmlVO materialXmlVO = orderXmlVO.getMaterialXmlVO();
// if (materialXmlVO != null) {
// PlateXmlVOS plateXmlVOS = materialXmlVO.getPlateXmlVOS();
//
// Map<String, Object> map = extractPlateDate(plateXmlVOS);
// if (map != null) {
// // 判断板块和归属code是否相匹配
// }
//
// if (plateXmlVOS != null && !plateXmlVOS.getPlateXmlVOList().isEmpty()) {
// checkPlates(plateXmlVOS.getPlateXmlVOList(), error);
// }
//
// AccessoryXmlVO accessoryXmlVO = materialXmlVO.getAccessoryXmlVO(); //配件
// if (accessoryXmlVO != null) {
// checkEdgings(accessoryXmlVO.getEdgingXmlVOS(), error);
// checkHardwares(accessoryXmlVO.getHardwareXmlVOS(), error);
// }
//
// AssemblieXmlVOS assemblieXmlVOS = materialXmlVO.getAssemblieXmlVOS(); // 组件
// if (assemblieXmlVOS != null && assemblieXmlVOS.getAssemblyXmlVOList() != null && !assemblieXmlVOS.getAssemblyXmlVOList().isEmpty()) {
// checkAssemblies(assemblieXmlVOS, error);
// }
// }
//
// long endTime = System.currentTimeMillis();
// long duration = endTime - startTime;
//
// System.out.println("方法运行耗时 xml: " + duration + " 毫秒");
// return error.get();
// }
/**
*
@@ -1139,19 +1218,6 @@ public class XMLUtil {
}
}
// 数据格式+数据正数判断
private Boolean checkNumber(String numberStr, Class<?> targetType) {
boolean error = true;
if (ToolUtil.convertToType(numberStr, targetType)) {
if (!ToolUtil.checkNumber(numberStr)) {
error = false;
}
} else {
error = false;
}
return error;
}
// point 验证
private void checkPointRemoveZ(PointXmlVO pointXmlVO, AtomicBoolean flag, String name) {
@@ -1186,7 +1252,7 @@ public class XMLUtil {
code.put(ROOM_CODE, blockXmlVO.getRoomCode());
code.put(BODY_CODE, blockXmlVO.getBoxCode());
code.put(MODULE_CODE, blockXmlVO.getModuleCode());
code.put(GROUP_CODE, blockXmlVO.getGroupCode());
code.put(GROUP_CODE, blockXmlVO.getGroupCodes());
map.put(blockXmlVO.getProductionCode(), code); // 生产编号
}
}
@@ -410,19 +410,28 @@ public class XmlTypeRealize {
List<Object> partDOList = new ArrayList<>(partsDOInfos.values());
List<Object> partRemarks = new ArrayList<>(orderPartsRemarks.values());
map.put("rawGoodsDOS", rawGoodsDOs);
map.put("goodsDOS", goodsDOs);
map.put("orderBodyDOS", orderBodyDOList);
map.put("orderGroupDOS", groupDOList);
map.put("plateDOS", plateDOs);
map.put("orderPartsDOS", partDOList);
map.put("orderItemDOS", itemDOList);
map.put("plateDetail", plateDetail);
map.put("orderPartsRemarks", partRemarks);
map.put(FieldConstants.RAW_GOODS, rawGoodsDOs);
map.put(FieldConstants.GOODS, goodsDOs);
map.put(FieldConstants.BODY, orderBodyDOList);
map.put(FieldConstants.GROUP, groupDOList);
map.put(FieldConstants.PLATE, plateDOs);
map.put(FieldConstants.PARTS, partDOList);
map.put(FieldConstants.ITEM, itemDOList);
map.put(FieldConstants.PLATE_DETAIL, plateDetail);
map.put(FieldConstants.PARTS_REMARK, partRemarks);
return map;
}
// groupCodes提取code
private String[] getGroupCode(String groupCode) {
if (groupCode == null) {
return new String[]{};
}
groupCode = groupCode.replaceAll("\\[|\\]", "");
return groupCode.split(",");
}
// id得到
private Map<String, Long> getId(PositionVO positionVO, Map<String, Map<String, OrderBodyDO>> roomInfos, Map<String, OrderGroupDO> groupInfos,
Double plateNum, Double unregularNum, Long orderId, Long organId) {
@@ -766,10 +775,18 @@ public class XmlTypeRealize {
}
public List<Object> plateInfoChange(List<Object> plateDetails, Long organId, Long orderId, Long goodsId, BlockXmlVOS blockXmlVOS,
List<Object> plateDOs, Map<String, Object> orderItemMap, Map<String, Object> partsDO,
Map<String, Map<String, OrderBodyDO>> roomInfos, Map<String, OrderGroupDO> groupInfos,
Map<String, Map<String, BasePosition>> boxBasePositionMap, Map<String, BasePosition> roomBasePositions) {
public List<Object> plateInfoChange(List<Object> plateDetails,
Long organId,
Long orderId,
Long goodsId,
BlockXmlVOS blockXmlVOS,
List<Object> plateDOs,
Map<String, Object> orderItemMap,
Map<String, Object> partsDO,
Map<String, Map<String, OrderBodyDO>> roomInfos,
Map<String, OrderGroupDO> groupInfos,
Map<String, Map<String, BasePosition>> boxBasePositionMap,
Map<String, BasePosition> roomBasePositions) {
if (blockXmlVOS != null && blockXmlVOS.getBlockXmlVOList() == null || blockXmlVOS.getBlockXmlVOList().isEmpty()) {
@@ -808,7 +825,7 @@ public class XmlTypeRealize {
.boxName(blockXmlVO.getBoxName())
.boxCode(blockXmlVO.getBoxCode())
.groupName(blockXmlVO.getGroupName())
.groupCode(blockXmlVO.getGroupCode())
.groupCode(blockXmlVO.getGroupCodes())
.moduleName(blockXmlVO.getModuleName())
.moduleCode(blockXmlVO.getModuleCode())
.build();
@@ -850,6 +867,9 @@ public class XmlTypeRealize {
.isDoor(doorType != 0)
.openDoorType(doorType)
.isSpecialShaped(convertToBoolean(blockXmlVO.getUnregular()))
.roomName(positionVO.getRoomName())
.bodyName(positionVO.getBoxName())
.customPlateNoBuilder(new StringBuilder())
.build();
orderItemMap.put(blockXmlVO.getProductionCode(), OrderItemDO.builder()
@@ -886,7 +906,7 @@ public class XmlTypeRealize {
.roomsName(blockXmlVO.getRoomName())
.bodyNo(blockXmlVO.getBoxCode())
.bodyName(blockXmlVO.getBoxName())
.groupNo(blockXmlVO.getGroupCode())
.groupNo(blockXmlVO.getGroupCodes())
.groupName(blockXmlVO.getGroupName())
.has2DModel(false)
.has3DModel(false)
@@ -942,21 +962,6 @@ public class XmlTypeRealize {
}
// private void addIslandDetail(PlateDetail plateDetail, IsletXmlVOS isletXmlVOS) {
// if (isletXmlVOS != null && ObjectUtils.allNull(isletXmlVOS)) {
// if (isletXmlVOS.getIsletXmlVOList() != null && !isletXmlVOS.getIsletXmlVOList().isEmpty()) {
// for (IsletXmlVO isletXmlVO : isletXmlVOS.getIsletXmlVOList()) {
// ModelDetail modelDetail = ModelDetail.builder()
// .id(Integer.valueOf(isletXmlVO.getId()))
//// .parentId(Integer.valueOf(isletXmlVO.getSubIDs()))
// .pointList(addPointDetail(isletXmlVO.getPointXmlVOS())).build();
// plateDetail.getContourDetail().add(modelDetail);
// }
// }
// }
// }
// 小板关联配件添加
private void addParts(PlateDetail plateDetail, CorrelationXmlVOS correlationXmlVOS, Map<String, Object> partsDOMap) {
List<PartsInfo> partsInfos = new ArrayList<>();
@@ -6,7 +6,7 @@
<select id="selectPlatesDetailByOrderId" resultType="com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO">
SELECT DISTINCT i.order_id, p.id, p.plate_no, g.material, p.name, p.area, p.seal_left, p.seal_down,
p.seal_right, p.seal_up, p.texture, p.is_special_shaped, p.is_sculpt, p.unregular_point_count, p.front_hole_count,
p.back_hole_count, p.side_hole_count,p.width,p.height,p.thickness,p.remark,g.color,p.is_row_hole
p.back_hole_count, p.side_hole_count,p.width,p.height,p.thickness,p.remark,g.color,p.is_row_hole, p.custom_plate_no
FROM order_item i
RIGHT JOIN `order_plate` p ON i.plate_id = p.id
LEFT JOIN `order_goods` g ON g.id = p.goods_id