|
@@ -0,0 +1,100 @@
|
|
|
+package cn.cslg.report.service.impl;
|
|
|
+
|
|
|
+import cn.cslg.report.common.model.dto.AvoidDesignDirectionDTO;
|
|
|
+import cn.cslg.report.common.model.dto.AvoidDesignLittleDirectionDTO;
|
|
|
+import cn.cslg.report.entity.AssoAvoidDesignWholeLittleDirection;
|
|
|
+import cn.cslg.report.entity.AvoidDesignLittleDirection;
|
|
|
+import cn.cslg.report.entity.AvoidDesignWholeDirection;
|
|
|
+import cn.cslg.report.exception.XiaoShiException;
|
|
|
+import cn.cslg.report.mapper.AssoAvoidDesignWholeLittleDirectionMapper;
|
|
|
+import cn.cslg.report.mapper.AvoidDesignLittleDirectionMapper;
|
|
|
+import cn.cslg.report.mapper.AvoidDesignWholeDirectionMapper;
|
|
|
+import cn.cslg.report.service.IAvoidDesignDirectionService;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 回避设计方向的Service层接口实现类
|
|
|
+ *
|
|
|
+ * @Author chenyu
|
|
|
+ * @Data 2023/2/2
|
|
|
+ */
|
|
|
+@RequiredArgsConstructor
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+public class AvoidDesignDirectionServiceImpl implements IAvoidDesignDirectionService {
|
|
|
+ private final AvoidDesignWholeDirectionMapper avoidDesignWholeDirectionMapper;
|
|
|
+ private final AvoidDesignLittleDirectionMapper avoidDesignLittleDirectionMapper;
|
|
|
+ private final AssoAvoidDesignWholeLittleDirectionMapper assoAvoidDesignWholeLittleDirectionMapper;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增回避设计方案
|
|
|
+ *
|
|
|
+ * @param avoidDesignDirectionDTO 回避设计方案数据对象
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void addAvoidDesignDirection(AvoidDesignDirectionDTO avoidDesignDirectionDTO) {
|
|
|
+ log.info("开始处理【新增回避设计方案】的业务,参数为:{}", avoidDesignDirectionDTO);
|
|
|
+
|
|
|
+ //1.从回避设计方案中获取报告reportId和回避设计总体方向wholeDirection,将它们插入回避设计总体方向表
|
|
|
+ Integer reportId = avoidDesignDirectionDTO.getReportId();
|
|
|
+ String wholeDirection = avoidDesignDirectionDTO.getWholeDirection();
|
|
|
+ //将获取到的报告reportId与回避设计总体方向wholeDirection数据赋值给实体类后再插入表
|
|
|
+ AvoidDesignWholeDirection avoidDesignWholeDirection = new AvoidDesignWholeDirection()
|
|
|
+ .setReportId(reportId)
|
|
|
+ .setWholeDirection(wholeDirection);
|
|
|
+ log.info("将数据插入回避设计总体方向表,数据为:{}", avoidDesignWholeDirection);
|
|
|
+ int rows = avoidDesignWholeDirectionMapper.insert(avoidDesignWholeDirection);
|
|
|
+ if (rows != 1) {
|
|
|
+ String message = "数据插入回避设计总体方向表失败,新增回避设计方案失败(数据已回滚),服务器忙请稍后再次尝试";
|
|
|
+ log.info("{}", message);
|
|
|
+ throw new XiaoShiException(message);
|
|
|
+ }
|
|
|
+
|
|
|
+ //2.从回避设计方案中获取特征featureId与回避设计方向littleDirection的对象集合,将它们插入回避设计方向表
|
|
|
+ List<AvoidDesignLittleDirectionDTO> avoidDesignLittleDirectionDTOs = avoidDesignDirectionDTO.getAvoidDesignLittleDirectionDTOs();
|
|
|
+ ArrayList<AvoidDesignLittleDirection> avoidDesignLittleDirections = new ArrayList<>();
|
|
|
+ //将获取到的特征featureId与回避设计方向littleDirection的DTO对象集合转换成实体类对象集合后再插入表
|
|
|
+ BeanUtils.copyProperties(avoidDesignLittleDirectionDTOs, avoidDesignLittleDirections);
|
|
|
+ log.info("将数据插入回避设计方向表,数据为:{}", avoidDesignLittleDirections);
|
|
|
+ rows = avoidDesignLittleDirectionMapper.insertBatch(avoidDesignLittleDirections);
|
|
|
+ if (rows != avoidDesignLittleDirections.size()) {
|
|
|
+ String message = "数据插入回避设计方向表失败,新增回避设计方案失败(数据已回滚),服务器忙请稍后再次尝试";
|
|
|
+ log.info("{}", message);
|
|
|
+ throw new XiaoShiException(message);
|
|
|
+ }
|
|
|
+
|
|
|
+ //3.以上两个数据成功插入两张表后,分别取出各自的id,将两个id(回避设计总体方向数据avoidDesignWholeDirectionId、回避设计方向数据avoidDesignLittleDirectionId)插入回避设计总体方向和回避设计方向关联表
|
|
|
+ Integer avoidDesignWholeDirectionId = avoidDesignWholeDirection.getId();
|
|
|
+ ArrayList<Integer> avoidDesignLittleDirectionIds = new ArrayList<>();
|
|
|
+ for (AvoidDesignLittleDirection avoidDesignLittleDirection : avoidDesignLittleDirections) {
|
|
|
+ Integer avoidDesignLittleDirectionId = avoidDesignLittleDirection.getId();
|
|
|
+ avoidDesignLittleDirectionIds.add(avoidDesignLittleDirectionId);
|
|
|
+ }
|
|
|
+
|
|
|
+ ArrayList<AssoAvoidDesignWholeLittleDirection> assoAvoidDesignWholeLittleDirections = new ArrayList<>();
|
|
|
+ for (Integer avoidDesignLittleDirectionId : avoidDesignLittleDirectionIds) {
|
|
|
+ AssoAvoidDesignWholeLittleDirection assoAvoidDesignWholeLittleDirection = new AssoAvoidDesignWholeLittleDirection()
|
|
|
+ .setAvoidDesignWholeDirectionId(avoidDesignWholeDirectionId)
|
|
|
+ .setAvoidDesignLittleDirectionId(avoidDesignLittleDirectionId);
|
|
|
+ assoAvoidDesignWholeLittleDirections.add(assoAvoidDesignWholeLittleDirection);
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("将数据插入回避设计总体方向和回避设计方向关联表,数据为:{}", assoAvoidDesignWholeLittleDirections);
|
|
|
+ rows = assoAvoidDesignWholeLittleDirectionMapper.insertBatch(assoAvoidDesignWholeLittleDirections);
|
|
|
+ if (rows != assoAvoidDesignWholeLittleDirections.size()) {
|
|
|
+ String message = "数据插入回避设计总体方向和回避设计方向关联表失败,新增回避设计方案失败(数据已回滚),服务器忙请稍后再次尝试";
|
|
|
+ log.info("{}", message);
|
|
|
+ throw new XiaoShiException(message);
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("新增回避设计方案完成");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|