Commit 2d385b1d authored by hanbing's avatar hanbing

方案管理-保存方案逻辑优化

parent e9320c3c
......@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Set;
/**
* 方案基础信息;(t_base_cross_scheme)表数据库访问层
......@@ -37,4 +38,8 @@ public interface CrossSchemeMapper {
void insertOne(CrossSchemePO crossSchemePO);
void update(CrossSchemePO crossSchemePO);
Set<Integer> selectIdsByCrossId(String crossId);
void deleteByIds(Set<Integer> existedIds);
}
package net.wanji.web.service.scheme.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import net.wanji.web.common.constant.ControlModeConst;
import net.wanji.web.common.exception.PhaseNoNotUniqueException;
import net.wanji.common.dto.CrossIdDTO;
......@@ -568,7 +569,7 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
crossAccompanyPhasePO.setCrossId(crossId);
crossAccompanyPhasePO.setPhaseId(accompanyPhaseId);
Integer superPhaseId = crossPhaseMapper.selectIdByCrossIdAndCoordPhaseNo(
crossId, schemeId,superPhaseNo);
crossId, schemeId, superPhaseNo);
crossAccompanyPhasePO.setSuperId(superPhaseId);
crossAccompanyPhasePOList.add(crossAccompanyPhasePO);
}
......@@ -669,10 +670,22 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
private void updateCrossScheme(SaveSchemeConfigDTO saveSchemeConfigDTO) {
String crossId = saveSchemeConfigDTO.getCrossId();
crossSchemeMapper.deleteByCrossId(crossId);
List<SaveSchemeConfigDTO.PhaseScheme> phaseSchemeList = saveSchemeConfigDTO.getPhaseSchemeList();
List<CrossSchemePO> crossSchemePOList = new ArrayList<>();
// 删除数据口里有,但是DTO里没有的方案ID对应的记录
Set<Integer> existedIds = crossSchemeMapper.selectIdsByCrossId(crossId);
if (CollectionUtil.isNotEmpty(existedIds)) {
Set<Integer> dtoIds = phaseSchemeList.stream()
.map(SaveSchemeConfigDTO.PhaseScheme::getSchemeId)
.collect(Collectors.toSet());
if (CollectionUtil.isNotEmpty(dtoIds)) {
existedIds.removeAll(dtoIds);
if (CollectionUtil.isNotEmpty(existedIds)){
crossSchemeMapper.deleteByIds(existedIds);
}
}
}
for (SaveSchemeConfigDTO.PhaseScheme phaseScheme : phaseSchemeList) {
// 构造PO
CrossSchemePO crossSchemePO = new CrossSchemePO();
String schemeNo = phaseScheme.getSchemeNo();// 方案号
crossSchemePO.setSchemeNo(schemeNo);
......@@ -686,8 +699,16 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
}
crossSchemePO.setSource(2); // 来自平台
crossSchemePO.setIsDeleted(0);
crossSchemePOList.add(crossSchemePO);
// 新增或修改数据
Integer schemeId = phaseScheme.getSchemeId();
if (ObjectUtil.isEmpty(schemeId)){
// 没有方案ID视为新增
crossSchemeMapper.insertOne(crossSchemePO);
} else {
// 有方案ID视为修改
crossSchemePO.setId(schemeId);
crossSchemeMapper.update(crossSchemePO);
}
}
crossSchemeMapper.insertBatch(crossSchemePOList);
}
}
......@@ -58,7 +58,7 @@
is_deleted = #{isDeleted},
</if>
</set>
where cross_id = #{crossId} and scheme_no = #{schemeNo}
where id = #{id}
</update>
<delete id="deleteByCrossId">
......@@ -97,5 +97,17 @@
where id = #{id}
</select>
<select id="selectIdsByCrossId" resultType="java.lang.Integer">
SELECT id FROM t_base_cross_scheme
WHERE cross_id = #{crossId}
</select>
<delete id="deleteByIds">
DELETE FROM t_base_cross_scheme
WHERE id IN
<foreach collection="existedIds" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</delete>
</mapper>
......@@ -214,9 +214,6 @@ public class TrendServiceImpl implements TrendService {
List<AbnormalCrossDetailVO.DirDataElement> dirData = new ArrayList<>();
// 获取当前时间之前40分钟的10位时间戳
long currentSeconds = DateUtil.currentSeconds();
// todo 演示用,固定当前时间为 2023-02-11 10:30:00
currentSeconds = 1676082600L;
long preSeconds = currentSeconds - 40 * 60;
List<CrossDirDataHistPO> crossDirDataHistPOList =
crossDirDataHistMapper.selectByCrossIdAndTimestamp(crossId, preSeconds);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment