|
@@ -0,0 +1,99 @@
|
|
|
+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; //回避设计总体方向表的Mapper层接口装配
|
|
|
+ private final AvoidDesignLittleDirectionMapper avoidDesignLittleDirectionMapper; //回避设计方向表的Mapper层接口装配
|
|
|
+ private final AssoAvoidDesignWholeLittleDirectionMapper assoAvoidDesignWholeLittleDirectionMapper; //回避设计总体方向和方向关联表的Mapper层接口装配
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增回避设计方案
|
|
|
+ *
|
|
|
+ * @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的DTO对象的集合,将它们插入回避设计方向表
|
|
|
+ List<AvoidDesignLittleDirectionDTO> avoidDesignLittleDirectionDTOs = avoidDesignDirectionDTO.getAvoidDesignLittleDirectionDTOs();
|
|
|
+ //将获取到的存放特征featureId与回避设计方向littleDirection的DTO对象的集合复制给新创建的回避设计方向表实体类集合后插入
|
|
|
+ ArrayList<AvoidDesignLittleDirection> avoidDesignLittleDirections = new ArrayList<>();
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ //将获取到的回避设计总体方向avoidDesignWholeDirectionId与回避设计方向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("新增回避设计方案完成");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|