Commit fdaf6d97 authored by H2T's avatar H2T

计划重做时删除原先es中数据

parent d84644e8
package com.yeejoin.amos.patrol.business.dao.mapper; package com.yeejoin.amos.patrol.business.dao.mapper;
import com.yeejoin.amos.patrol.dao.entity.ESTaskDetailDto;
import com.yeejoin.amos.patrol.dao.entity.PlanTaskDetail; import com.yeejoin.amos.patrol.dao.entity.PlanTaskDetail;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -14,4 +15,6 @@ public interface PlanTaskDetailMapper extends BaseMapper { ...@@ -14,4 +15,6 @@ public interface PlanTaskDetailMapper extends BaseMapper {
List<PlanTaskDetail> findAllByIdInAndStatus(@Param("planTaskIds") List<Long> planTaskNo, @Param("status") String status); List<PlanTaskDetail> findAllByIdInAndStatus(@Param("planTaskIds") List<Long> planTaskNo, @Param("status") String status);
List<ESTaskDetailDto> findAllByTaskNos(@Param("ids") String ids);
} }
...@@ -458,19 +458,61 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -458,19 +458,61 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
return; return;
} }
//3.删除planTask表,按照计划id+日期 //4.删除对应es中数据
List<ESPlanTaskListDto> oldEsPlanTaskListDtos = deletePlanTaskAndDet(param); CompletableFuture.runAsync(() -> deleteEsData(param));
//5.执行数据生成(具体时间 + 人员) //5.执行数据生成(具体时间 + 人员)
List<HashMap<String, Object>> list = genAllExeDate(plan, vo, XJConstant.REGEN_FLAG); List<HashMap<String, Object>> list = genAllExeDate(plan, vo, XJConstant.REGEN_FLAG);
//6.插入planTask及planTaskDetail //6.插入planTask及planTaskDetail
insertPlanTaskAndDetNew(list, plan, flag, new Date(), oldEsPlanTaskListDtos); insertPlanTaskAndDetNew(list, plan, flag, new Date());
// 更新统计表 // 更新统计表
taskStaticExecution(null); taskStaticExecution(null);
} }
private void deleteEsData(HashMap<String, Object> param) {
//删除planTask表,按照计划id+日期
List<ESPlanTaskListDto> oldEsPlanTaskListDtos = deletePlanTaskAndDet(param);
//删除planTaskDetail表
List<String> planTaskIds = oldEsPlanTaskListDtos.stream().map(ESPlanTaskListDto::getPlanTaskId).collect(Collectors.toList());
if (!ValidationUtil.isEmpty(planTaskIds)) {
if (planTaskIds.size() > 5000) {
int index = 5000;
for (int i = 0; i < planTaskIds.size(); i += 5000) {
if (i + 5000 > planTaskIds.size()) {
index = planTaskIds.size() - i;
}
List<String> newList = planTaskIds.subList(i, i + index);
String ids = newList.stream().collect(Collectors.joining("','", "('", "')"));
List<ESTaskDetailDto> maps = planTaskDetailMapper.findAllByTaskNos(ids);
esTaskDetail.deleteAll(maps);
}
} else {
String ids = planTaskIds.stream().collect(Collectors.joining("','", "('", "')"));
List<ESTaskDetailDto> maps = planTaskDetailMapper.findAllByTaskNos(ids);
esTaskDetail.deleteAll(maps);
}
}
if (!ValidationUtil.isEmpty(oldEsPlanTaskListDtos)) {
if (oldEsPlanTaskListDtos.size() > 5000) {
int index = 5000;
for (int i = 0; i < oldEsPlanTaskListDtos.size(); i += 5000) {
if (i + 5000 > oldEsPlanTaskListDtos.size()) {
index = oldEsPlanTaskListDtos.size() - i;
}
List<ESPlanTaskListDto> newList = oldEsPlanTaskListDtos.subList(i, i + index);
esPlanTaskList.deleteAll(newList);
}
} else {
esPlanTaskList.deleteAll(oldEsPlanTaskListDtos);
}
}
}
private void notifyBusinessRefresh(String type) { private void notifyBusinessRefresh(String type) {
try { try {
...@@ -718,7 +760,7 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -718,7 +760,7 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
} }
//2.5.插入planTask及planTaskDetail //2.5.插入planTask及planTaskDetail
insertPlanTaskAndDetNew(list, plan, XJConstant.SCHED_FLAG, now, null); insertPlanTaskAndDetNew(list, plan, XJConstant.SCHED_FLAG, now);
// 更新统计表 // 更新统计表
taskStaticExecution(null); taskStaticExecution(null);
...@@ -870,7 +912,7 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -870,7 +912,7 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
* @param plan * @param plan
* @param flag 是否初始状态0-初始 1-非初始 * @param flag 是否初始状态0-初始 1-非初始
*/ */
public void insertPlanTaskAndDetNew(List<HashMap<String, Object>> list, Plan plan, String flag, Date now, List<ESPlanTaskListDto> oldEsPlanTaskListDtos) { public void insertPlanTaskAndDetNew(List<HashMap<String, Object>> list, Plan plan, String flag, Date now) {
if (list == null || list.size() <= 0) { if (list == null || list.size() <= 0) {
HashMap<String, Object> paramMap = new HashMap<String, Object>(); HashMap<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("id", plan.getId()); paramMap.put("id", plan.getId());
...@@ -1010,7 +1052,7 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -1010,7 +1052,7 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
//存在事物,在事务提交之后执行 //存在事物,在事务提交之后执行
asyncSaveEs(planTaskDetails, esPlanTaskListDtos, oldEsPlanTaskListDtos); asyncSaveEs(planTaskDetails, esPlanTaskListDtos);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
...@@ -1020,18 +1062,18 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -1020,18 +1062,18 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
} }
} }
private void asyncSaveEs(Iterable<PlanTaskDetail> planTaskDetails, List<ESPlanTaskListDto> esPlanTaskListDtos, List<ESPlanTaskListDto> oldEsPlanTaskListDtos) { private void asyncSaveEs(Iterable<PlanTaskDetail> planTaskDetails, List<ESPlanTaskListDto> esPlanTaskListDtos) {
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() { TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override @Override
public void afterCommit() { public void afterCommit() {
//异步存储任务和任务详情到es //异步存储任务和任务详情到es
asyncSavePlanTaskAndDetailListToEs(planTaskDetails, esPlanTaskListDtos, oldEsPlanTaskListDtos); asyncSavePlanTaskAndDetailListToEs(planTaskDetails, esPlanTaskListDtos);
} }
}); });
} }
@Async @Async
public void asyncSavePlanTaskAndDetailListToEs(Iterable<PlanTaskDetail> planTaskDetails, List<ESPlanTaskListDto> esPlanTaskListDtos, List<ESPlanTaskListDto> oldEsPlanTaskListDtos) { public void asyncSavePlanTaskAndDetailListToEs(Iterable<PlanTaskDetail> planTaskDetails, List<ESPlanTaskListDto> esPlanTaskListDtos) {
log.info("异步存储任务和任务详情到es"); log.info("异步存储任务和任务详情到es");
Plan plan = planMapper.getPlan(esPlanTaskListDtos.get(0).getPlanId()); Plan plan = planMapper.getPlan(esPlanTaskListDtos.get(0).getPlanId());
StopWatch stopWatch = new StopWatch(); StopWatch stopWatch = new StopWatch();
...@@ -1186,7 +1228,7 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -1186,7 +1228,7 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
log.info("esPlanTaskListDtos数据组装,耗时:{} 秒", stopWatch6.getTotalTimeSeconds()); log.info("esPlanTaskListDtos数据组装,耗时:{} 秒", stopWatch6.getTotalTimeSeconds());
StopWatch stopWatch7 = new StopWatch(); StopWatch stopWatch7 = new StopWatch();
stopWatch7.start(); stopWatch7.start();
saveEsPlanTaskList(esPlanTaskListDtos, oldEsPlanTaskListDtos); saveEsPlanTaskList(esPlanTaskListDtos);
stopWatch7.stop(); stopWatch7.stop();
log.info("任务存入es,耗时:{} 秒", stopWatch7.getTotalTimeSeconds()); log.info("任务存入es,耗时:{} 秒", stopWatch7.getTotalTimeSeconds());
} }
...@@ -1212,22 +1254,7 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -1212,22 +1254,7 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
} }
public void saveEsPlanTaskList(List<ESPlanTaskListDto> esPlanTaskListDtos, List<ESPlanTaskListDto> oldEsPlanTaskListDtos) { public void saveEsPlanTaskList(List<ESPlanTaskListDto> esPlanTaskListDtos) {
if (!ValidationUtil.isEmpty(oldEsPlanTaskListDtos)) {
if (oldEsPlanTaskListDtos.size() > 5000) {
int index = 5000;
for (int i = 0; i < oldEsPlanTaskListDtos.size(); i += 5000) {
if (i + 5000 > oldEsPlanTaskListDtos.size()) {
index = oldEsPlanTaskListDtos.size() - i;
}
List<ESPlanTaskListDto> newList = oldEsPlanTaskListDtos.subList(i, i + index);
esPlanTaskList.deleteAll(newList);
}
} else {
esPlanTaskList.deleteAll(oldEsPlanTaskListDtos);
}
}
if (!ValidationUtil.isEmpty(esPlanTaskListDtos)) { if (!ValidationUtil.isEmpty(esPlanTaskListDtos)) {
if (esPlanTaskListDtos.size() > 5000) { if (esPlanTaskListDtos.size() > 5000) {
int index = 5000; int index = 5000;
......
...@@ -30,4 +30,12 @@ ...@@ -30,4 +30,12 @@
pptd.task_no in <foreach collection="planTaskIds" item="planTaskId" index="index" open="(" separator="," close=")" >#{planTaskId}</foreach> pptd.task_no in <foreach collection="planTaskIds" item="planTaskId" index="index" open="(" separator="," close=")" >#{planTaskId}</foreach>
and pptd.status = #{status} and pptd.status = #{status}
</select> </select>
<select id="findAllByTaskNos" resultType="com.yeejoin.amos.patrol.dao.entity.PlanTaskDetail">
select
pptd.id
from
"p_plan_task_detail" pptd
where
pptd.task_no in #{ids}
</select>
</mapper> </mapper>
\ No newline at end of file
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