Commit 9bdb66bd authored by tianyiming's avatar tianyiming

更新索引--涉及任务下发、定时器修改、任务执行

parent 4b5f9e37
......@@ -316,9 +316,9 @@ public interface PlanTaskMapper extends BaseMapper {
List<PlanTask> selectTaskList(@Param(value = "ids") List<String> ids);
List<PlanTaskStaticDto> queryPlanTaskStaticById(@Param(value = "planTaskIds") List<String> planTaskIds);
List<PlanTaskStaticDto> queryPlanTaskStaticById(@Param(value = "planTaskIds") String planTaskIds);
List<ESTaskDetailDto> selectTaskDetailList(@Param(value = "taskIds") List<String> taskIds);
List<ESTaskDetailDto> selectTaskDetailList(@Param(value = "ids") String ids);
List<ESTaskDetailDto> selectTaskInfoList(@Param(value = "id") long id);
......
......@@ -990,6 +990,17 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
//存在事物,在事务提交之后执行
asyncSaveEs(planTaskDetails, esPlanTaskListDtos, oldEsPlanTaskListDtos);
} catch (Exception e) {
e.printStackTrace();
log.error(e.getMessage());
throw new RuntimeException(e.getMessage());
}
}
}
private void asyncSaveEs(Iterable<PlanTaskDetail> planTaskDetails, List<ESPlanTaskListDto> esPlanTaskListDtos, List<ESPlanTaskListDto> oldEsPlanTaskListDtos) {
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
public void afterCommit() {
......@@ -997,34 +1008,31 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
asyncSavePlanTaskAndDetailListToEs(planTaskDetails, esPlanTaskListDtos, oldEsPlanTaskListDtos);
}
});
} catch (Exception e) {
e.printStackTrace();
log.error(e.getMessage());
throw new RuntimeException(e.getMessage());
}
}
}
private void asyncSavePlanTaskAndDetailListToEs(Iterable<PlanTaskDetail> planTaskDetails, List<ESPlanTaskListDto> esPlanTaskListDtos, List<ESPlanTaskListDto> oldEsPlanTaskListDtos) {
log.error("异步存储任务和任务详情到es");
@Async
public void asyncSavePlanTaskAndDetailListToEs(Iterable<PlanTaskDetail> planTaskDetails, List<ESPlanTaskListDto> esPlanTaskListDtos, List<ESPlanTaskListDto> oldEsPlanTaskListDtos) {
log.info("异步存储任务和任务详情到es");
Plan plan = planMapper.getPlan(esPlanTaskListDtos.get(0).getPlanId());
StopWatch stopWatch = new StopWatch();
stopWatch.start();
List<String> taskIds = planTaskMapper.getPlanTaskIds(plan.getId());
List<ESTaskDetailDto> esTaskDetailDtos = new ArrayList<>();
if (!ValidationUtil.isEmpty(taskIds)) {
if (taskIds.size() > 10000) {
int index = 10000;
for (int i = 0; i < taskIds.size(); i += 10000) {
if (i + 10000 > taskIds.size()) {
if (taskIds.size() > 5000) {
int index = 5000;
for (int i = 0; i < taskIds.size(); i += 5000) {
if (i + 5000 > taskIds.size()) {
index = taskIds.size() - i;
}
List<String> newList = taskIds.subList(i, i + index);
List<ESTaskDetailDto> maps = planTaskMapper.selectTaskDetailList(newList);
String ids = newList.stream().collect(Collectors.joining("','", "('", "')"));
List<ESTaskDetailDto> maps = planTaskMapper.selectTaskDetailList(ids);
esTaskDetailDtos.addAll(maps);
}
} else {
List<ESTaskDetailDto> maps = planTaskMapper.selectTaskDetailList(taskIds);
String ids = taskIds.stream().collect(Collectors.joining("','", "('", "')"));
List<ESTaskDetailDto> maps = planTaskMapper.selectTaskDetailList(ids);
esTaskDetailDtos.addAll(maps);
}
}
......@@ -1078,18 +1086,20 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
List<String> planTaskIds = esPlanTaskListDtos.stream().map(ESPlanTaskListDto::getPlanTaskId).collect(Collectors.toList());
List<PlanTaskStaticDto> planTaskStaticListMap = new ArrayList<>();
if (!ValidationUtil.isEmpty(planTaskIds)) {
if (planTaskIds.size() > 10000) {
int index = 10000;
for (int i = 0; i < planTaskIds.size(); i += 10000) {
if (planTaskIds.size() > 5000) {
int index = 5000;
for (int i = 0; i < planTaskIds.size(); i += 5000) {
if (i + 10000 > planTaskIds.size()) {
index = planTaskIds.size() - i;
}
List<String> newList = planTaskIds.subList(i, i + index);
List<PlanTaskStaticDto> maps = queryPlanTaskStaticById(newList);
String ids = newList.stream().collect(Collectors.joining("','", "('", "')"));
List<PlanTaskStaticDto> maps = queryPlanTaskStaticById(ids);
planTaskStaticListMap.addAll(maps);
}
} else {
List<PlanTaskStaticDto> maps = queryPlanTaskStaticById(planTaskIds);
String ids = planTaskIds.stream().collect(Collectors.joining("','", "('", "')"));
List<PlanTaskStaticDto> maps = queryPlanTaskStaticById(ids);
planTaskStaticListMap.addAll(maps);
}
}
......@@ -1098,9 +1108,11 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
StopWatch stopWatch6 = new StopWatch();
stopWatch6.start();
Map<Long, List<PlanTaskDetail>> collect = planTaskDetailList.stream().collect(Collectors.groupingBy(PlanTaskDetail::getTaskNo));
for (ESPlanTaskListDto esPlanTaskListDto : esPlanTaskListDtos) {
List<PlanTaskDetail> newPlanTaskDetailList = planTaskDetailList.stream().filter(x -> x.getTaskNo() == Long.valueOf(esPlanTaskListDto.getPlanTaskId())).collect(Collectors.toList());
esPlanTaskListDto.setPoints(newPlanTaskDetailList);
// List<PlanTaskDetail> newPlanTaskDetailList = planTaskDetailList.stream().filter(x -> x.getTaskNo() == Long.valueOf(esPlanTaskListDto.getPlanTaskId())).collect(Collectors.toList());
esPlanTaskListDto.setPoints(collect.get(Long.valueOf(esPlanTaskListDto.getPlanTaskId())));
if (!ValidationUtil.isEmpty(planTaskIds)) {
PlanTaskStaticDto task = planTaskStaticListMap.stream().filter(x -> x.getPlanTaskId().equals(esPlanTaskListDto.getPlanTaskId())).collect(Collectors.toList()).get(0);
esPlanTaskListDto.setFinshNum(ObjectUtils.isEmpty(task.getFinshNum()) ? "0" : task.getFinshNum());
......@@ -1138,7 +1150,7 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
return checkInput;
}
private List<PlanTaskStaticDto> queryPlanTaskStaticById(List<String> planTaskIds) {
private List<PlanTaskStaticDto> queryPlanTaskStaticById(String planTaskIds) {
return planTaskMapper.queryPlanTaskStaticById(planTaskIds);
}
......@@ -1464,9 +1476,11 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
}
List<PlanTaskDetail> planTaskDetails = iPlanTaskDetailDao.findAllByTaskNoAndStatus(planTask.getId(), PlanTaskDetailStatusEnum.NOTSTARTED.getValue());
List<ESTaskDetailDto> esTaskDetailDtos = new ArrayList<>();
if (!planTaskDetails.isEmpty()) {
Long routId = planTaskMapper.selectRoutId(id);
planTaskDetails = planTaskDetails.stream().map(action -> {
planTaskDetails.stream().map(action -> {
action.setStatus(PlanTaskDetailStatusEnum.QUALIFIED.getValue());
iPlanTaskDetailDao.saveAndFlush(action);
planTaskDetailMapper.finishTaskDetail(action.getId(), action.getPointId(),
......@@ -1476,19 +1490,24 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
JSONObject jsonObject = jobService.getCheckInput(routId, action.getPointId(), "update", null);
appPointCheckRespone.setAppCheckInput(jsonObject);
esTaskDetailDto.setPointImgUrls(new ArrayList<>());
esTaskDetail.save(esTaskDetailDto);
esTaskDetailDtos.add(esTaskDetailDto);
return action;
}).collect(Collectors.toList());
}
esTaskDetail.saveAll(esTaskDetailDtos);
ESPlanTaskListDto esPlanTaskListDto = esPlanTaskList.findById(String.valueOf(planTask.getId())).get();
Map task = queryPlanTaskById(Long.valueOf(id));
esPlanTaskListDto.setFinishStatus(String.valueOf(PlanTaskFinishStatusEnum.FINISHED.getValue()));
esPlanTaskListDto.setFinshNum(ObjectUtils.isEmpty(task.get("finshNum")) ? "0" : task.get("finshNum").toString());
esPlanTaskListDto.setOmission(ObjectUtils.isEmpty(task.get("omission")) ? "0" : task.get("omission").toString());
esPlanTaskListDto.setUnqualified(ObjectUtils.isEmpty(task.get("unqualified")) ? "0" : task.get("unqualified").toString());
esPlanTaskListDto.setUnplan(ObjectUtils.isEmpty(task.get("unplan")) ? "0" : task.get("unplan").toString());
esPlanTaskListDto.setTaskPlanNum(ObjectUtils.isEmpty(task.get("taskPlanNum")) ? "0" : task.get("taskPlanNum").toString());
esPlanTaskListDto.setPoints(planTaskDetails);
List<PlanTaskDetail> planTaskDetailList = planTaskMapper.selectTaskDetails(esPlanTaskListDto.getPlanTaskId());
esPlanTaskListDto.setPoints(planTaskDetailList);
esPlanTaskList.save(esPlanTaskListDto);
}
......
......@@ -291,11 +291,8 @@ public class JobService implements IJobService {
esPlanTaskListDto.setTaskPlanNum(ObjectUtils.isEmpty(task.get("taskPlanNum")) ? "0" : task.get("taskPlanNum").toString());
List<PlanTaskDetail> planTaskDetailList = planTaskMapper.selectTaskDetails(id);
Long routId = planTaskMapper.selectRoutId(id);
List<ESTaskDetailDto> esTaskDetailDtos = new ArrayList<>();
for (PlanTaskDetail taskDetail : planTaskDetailList) {
Point point = pointMapper.selectPointInfo(taskDetail.getPointId());
taskDetail.setName(point.getName());
taskDetail.setPointNo(point.getPointNo());
AppPointCheckRespone appPointCheckRespone = planService.queryPointPlanTaskDetail(null, null, null, taskDetail.getTaskNo(), taskDetail.getPointId());
ESTaskDetailDto esTaskDetailDto = esTaskDetail.findById(String.valueOf(appPointCheckRespone.getId())).get();
JSONObject jsonObject = getCheckInput(routId, taskDetail.getPointId(), type, requestParam);
......@@ -303,8 +300,9 @@ public class JobService implements IJobService {
esTaskDetailDto.setTaskStatus(String.valueOf(status));
appPointCheckRespone.setAppCheckInput(jsonObject);
esTaskDetailDto.setPointImgUrls(ObjectUtils.isEmpty(requestParam) ? new ArrayList<>() : requestParam.getCheckRecordImg());
esTaskDetail.save(esTaskDetailDto);
esTaskDetailDtos.add(esTaskDetailDto);
}
esTaskDetail.saveAll(esTaskDetailDtos);
esPlanTaskListDto.setPoints(planTaskDetailList);
esPlanTaskListDtos.add(esPlanTaskListDto);
}
......
......@@ -1724,9 +1724,16 @@
<select id="selectTaskDetails" resultType="com.yeejoin.amos.patrol.dao.entity.PlanTaskDetail">
select
*
pptd.is_finish,
pptd.point_id,
pptd.task_no,
pp.name,
pp.point_no,
pptd.status,
pptd.id,
pptd.create_date
from
"p_plan_task_detail"
"p_plan_task_detail" pptd LEFT JOIN p_point pp ON pp."id"=pptd.point_id
where
task_no = #{id}
</select>
......@@ -1809,10 +1816,7 @@
p_plan_task_detail ptd
LEFT JOIN p_plan_task pt ON ptd.task_no = pt.id
) a
where a.planTaskId IN
<foreach item="id" collection="planTaskIds" index="index" open="(" separator="," close=")">
#{id}
</foreach>
where a.planTaskId IN ${planTaskIds}
GROUP BY a.planTaskId
</select>
......@@ -1828,13 +1832,10 @@
pp.shot_max_number shortMaxNumber,
'0' checkId
FROM
"p_plan_task_detail" pptd LEFT JOIN p_point pp ON pp.id = pptd.point_id WHERE
task_no IN
<foreach item="id" collection="taskIds" index="index" open="(" separator="," close=")">
#{id}
</foreach>
"p_plan_task_detail" pptd LEFT JOIN p_point pp ON pp.id = pptd.point_id
WHERE
task_no IN ${ids}
</select>
<select id="selectTaskInfoList" resultType="com.yeejoin.amos.patrol.dao.entity.ESTaskDetailDto">
SELECT
id planTaskId,
......
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