Commit 39e1379d authored by 韩桐桐's avatar 韩桐桐

两个规定-完善计划重做及删除计划

parent 0b58ecdf
...@@ -12,7 +12,10 @@ import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; ...@@ -12,7 +12,10 @@ import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.component.feign.model.FeignClientResult; import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.component.feign.utils.FeignUtil; import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.feign.privilege.Privilege; import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.*; import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.privilege.model.DepartmentModel;
import com.yeejoin.amos.feign.privilege.model.RoleModel;
import com.yeejoin.amos.feign.systemctl.Systemctl; import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.RegionModel; import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
...@@ -39,11 +42,9 @@ import org.typroject.tyboot.core.restful.doc.TycloudOperation; ...@@ -39,11 +42,9 @@ import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors;
/** /**
* controller层切面 用于用户数据缓存 供 sql自动填充使用 (使用粒度过大的Aop会创建大量代理对象,影响性能,占用内存,考虑使用 * controller层切面 用于用户数据缓存 供 sql自动填充使用 (使用粒度过大的Aop会创建大量代理对象,影响性能,占用内存,考虑使用
...@@ -118,7 +119,7 @@ public class ControllerAop { ...@@ -118,7 +119,7 @@ public class ControllerAop {
urls.add("/tcm/userInfo/getPersonType"); urls.add("/tcm/userInfo/getPersonType");
urls.add("/patrol/api/check/saveRecordAll"); urls.add("/patrol/api/check/saveRecordAll");
urls.add("/patrol/api/check/saveRecordAll2"); urls.add("/patrol/api/check/saveRecordAll2");
urls.add("/patrol/api/planTask/queryPlanTaskNew"); // urls.add("/patrol/api/planTask/queryPlanTaskNew");
// 获取请求路径 // 获取请求路径
for (String uri : urls) { for (String uri : urls) {
Pattern p = Pattern.compile(uri); Pattern p = Pattern.compile(uri);
......
...@@ -22,7 +22,7 @@ public class ESTaskDetailDto { ...@@ -22,7 +22,7 @@ public class ESTaskDetailDto {
@Id @Id
private Long id; private String id;
@Field(type = FieldType.Text) @Field(type = FieldType.Text)
private String pointId; private String pointId;
......
...@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject; ...@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel; import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.patrol.business.constants.XJConstant; import com.yeejoin.amos.patrol.business.constants.XJConstant;
import com.yeejoin.amos.patrol.business.param.PlanInfoPageParam;
import com.yeejoin.amos.patrol.business.param.PlanTaskPageParam; import com.yeejoin.amos.patrol.business.param.PlanTaskPageParam;
import com.yeejoin.amos.patrol.business.service.intfc.IPlanTaskService; import com.yeejoin.amos.patrol.business.service.intfc.IPlanTaskService;
import com.yeejoin.amos.patrol.business.service.intfc.IPointService; import com.yeejoin.amos.patrol.business.service.intfc.IPointService;
...@@ -27,8 +26,6 @@ import com.yeejoin.amos.patrol.feign.RemoteSecurityService; ...@@ -27,8 +26,6 @@ import com.yeejoin.amos.patrol.feign.RemoteSecurityService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import io.swagger.annotations.Authorization;
import org.apache.commons.collections.CollectionUtils;
import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RequestOptions;
...@@ -36,13 +33,11 @@ import org.elasticsearch.client.RestHighLevelClient; ...@@ -36,13 +33,11 @@ import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.SortOrder;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
......
...@@ -16,7 +16,9 @@ public interface PlanTaskDetailMapper extends BaseMapper { ...@@ -16,7 +16,9 @@ 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); List<ESTaskDetailDto> findAllByTaskNos(@Param("taskNos") List<String> taskNos);
void deleteAllByTaskNos(@Param("taskNos") List<String> taskNos);
PlanTaskDetail selectOne(Long planTaskId, Long pointId); PlanTaskDetail selectOne(Long planTaskId, Long pointId);
......
...@@ -11,10 +11,6 @@ import com.yeejoin.amos.patrol.business.vo.CodeOrderVo; ...@@ -11,10 +11,6 @@ import com.yeejoin.amos.patrol.business.vo.CodeOrderVo;
import com.yeejoin.amos.patrol.business.vo.LeavePlanTaskVo; import com.yeejoin.amos.patrol.business.vo.LeavePlanTaskVo;
import com.yeejoin.amos.patrol.business.vo.PlanTaskVo; import com.yeejoin.amos.patrol.business.vo.PlanTaskVo;
import com.yeejoin.amos.patrol.core.common.response.AppCheckInputRespone; import com.yeejoin.amos.patrol.core.common.response.AppCheckInputRespone;
import com.yeejoin.amos.patrol.dao.entity.Plan;
import com.yeejoin.amos.patrol.dao.entity.PlanTask;
import com.yeejoin.amos.patrol.dao.entity.PlanTaskDetail;
import com.yeejoin.amos.patrol.dao.entity.PointInputItem;
import com.yeejoin.amos.patrol.dao.entity.*; import com.yeejoin.amos.patrol.dao.entity.*;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -60,8 +56,9 @@ public interface PlanTaskMapper extends BaseMapper { ...@@ -60,8 +56,9 @@ public interface PlanTaskMapper extends BaseMapper {
* @param param * @param param
* @return * @return
*/ */
List<Long> getGenPlanTask(HashMap<String, Object> param); List<String> getGenPlanTask(HashMap<String, Object> param);
void deleteAllById(@Param("ids") List<String> ids);
/** /**
* 根据路线id获取关联的计划任务 * 根据路线id获取关联的计划任务
* *
......
...@@ -5,10 +5,7 @@ import com.yeejoin.amos.patrol.dao.entity.ESTaskDetailDto; ...@@ -5,10 +5,7 @@ import com.yeejoin.amos.patrol.dao.entity.ESTaskDetailDto;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
@Repository @Repository
public interface ESTaskDetail extends ElasticsearchRepository<ESTaskDetailDto, String> { public interface ESTaskDetail extends ElasticsearchRepository<ESTaskDetailDto, String> {
List<ESTaskDetailDto> findAllByPlanTaskIdIn(List<String> planTaskIds);
} }
...@@ -405,7 +405,7 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -405,7 +405,7 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
} }
//3.删除planTask表,按照计划id+日期 //3.删除planTask表,按照计划id+日期
deletePlanTaskAndDet(param); CompletableFuture.runAsync(() -> deletePlanTaskAndDetAndEs(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);
...@@ -460,7 +460,7 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -460,7 +460,7 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
} }
//4.删除对应es中数据 //4.删除对应es中数据
CompletableFuture.runAsync(() -> deleteEsData(param)); CompletableFuture.runAsync(() -> deletePlanTaskAndDetAndEs(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);
...@@ -472,45 +472,31 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -472,45 +472,31 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
taskStaticExecution(null); taskStaticExecution(null);
} }
private void deleteEsData(HashMap<String, Object> param) { private void deletePlanTaskAndDetAndEs(HashMap<String, Object> param) {
//删除planTask表,按照计划id+日期 //删除planTask表,按照计划id+日期
List<ESPlanTaskListDto> oldEsPlanTaskListDtos = deletePlanTaskAndDet(param); List<String> planTaskIds = getPlanTaskId(param);
//删除planTaskDetail表
List<String> planTaskIds = oldEsPlanTaskListDtos.stream().map(ESPlanTaskListDto::getPlanTaskId).collect(Collectors.toList());
if (!ValidationUtil.isEmpty(planTaskIds)) {
if (planTaskIds.size() > 5000) { if (planTaskIds.size() > 5000) {
int index = 5000; int index = 5000;
for (int i = 0; i < planTaskIds.size(); i += 5000) { for (int i = 0; i < planTaskIds.size(); i += 5000) {
if (i + 5000 > planTaskIds.size()) { if (i + 5000 > planTaskIds.size()) {
index = planTaskIds.size() - i; index = planTaskIds.size() - i;
} }
List<String> newList = planTaskIds.subList(i, i + index); List<String> subList = planTaskIds.subList(i, i + index);
String ids = newList.stream().collect(Collectors.joining("','", "('", "')")); List<ESTaskDetailDto> maps = planTaskDetailMapper.findAllByTaskNos(subList);
List<ESTaskDetailDto> maps = planTaskDetailMapper.findAllByTaskNos(ids);
esTaskDetail.deleteAll(maps); esTaskDetail.deleteAll(maps);
List<ESPlanTaskListDto> esPlanTaskListDtos = subList.stream().map(item -> new ESPlanTaskListDto().setId(item)).collect(Collectors.toList());
esPlanTaskList.deleteAll(esPlanTaskListDtos);
planTaskDetailMapper.deleteAllByTaskNos(subList);
planTaskMapper.deleteAllById(subList);
} }
} else { } else {
String ids = planTaskIds.stream().collect(Collectors.joining("','", "('", "')")); List<ESTaskDetailDto> maps = planTaskDetailMapper.findAllByTaskNos(planTaskIds);
List<ESTaskDetailDto> maps = planTaskDetailMapper.findAllByTaskNos(ids);
esTaskDetail.deleteAll(maps); esTaskDetail.deleteAll(maps);
} List<ESPlanTaskListDto> esPlanTaskListDtos = planTaskIds.stream().map(item -> new ESPlanTaskListDto().setId(item)).collect(Collectors.toList());
} esPlanTaskList.deleteAll(esPlanTaskListDtos);
planTaskDetailMapper.deleteAllByTaskNos(planTaskIds);
if (!ValidationUtil.isEmpty(oldEsPlanTaskListDtos)) { planTaskMapper.deleteAllById(planTaskIds);
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);
}
} }
} }
...@@ -584,12 +570,18 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -584,12 +570,18 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
throw new YeeException("删除数据内容不能为空"); throw new YeeException("删除数据内容不能为空");
} }
Set<Long> taskNos = new HashSet<>(); Set<Long> taskNos = new HashSet<>();
ArrayList<ESPlanTaskListDto> esPlanTaskListDtos = new ArrayList<>();
for (String id : strArry) { for (String id : strArry) {
PlanTaskDetail planTkDet = planTaskDetail.findById(Long.parseLong(id)).get(); PlanTaskDetail planTkDet = planTaskDetail.findById(Long.parseLong(id)).get();
if (null != planTkDet) { if (null != planTkDet) {
taskNos.add(planTkDet.getTaskNo()); taskNos.add(planTkDet.getTaskNo());
esPlanTaskListDtos.add(new ESPlanTaskListDto().setId(Objects.toString(planTkDet.getTaskNo())));
} }
} }
// 删除es数据
esPlanTaskList.deleteAll(esPlanTaskListDtos);
List<ESTaskDetailDto> esTaskDetailDtos = planTaskDetailMapper.findAllByTaskNos(esPlanTaskListDtos.stream().map(ESPlanTaskListDto::getId).collect(Collectors.toList()));
esTaskDetail.deleteAll(esTaskDetailDtos);
planTaskMapper.planTaskDet(strArry);// 删除数据 planTaskMapper.planTaskDet(strArry);// 删除数据
HashMap<String, Object> param = new HashMap<String, Object>(); HashMap<String, Object> param = new HashMap<String, Object>();
param.put("IDS", new ArrayList<>(taskNos)); param.put("IDS", new ArrayList<>(taskNos));
...@@ -867,22 +859,14 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -867,22 +859,14 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
} }
/** /**
* 删除plantask及det * 获取plantaskId
* *
* @param param * @param param
*/ */
public List<ESPlanTaskListDto> deletePlanTaskAndDet(HashMap<String, Object> param) { public List<String> getPlanTaskId(HashMap<String, Object> param) {
param.put("beginDate", param.get("beginDate") + " " + "00:00:00"); param.put("beginDate", param.get("beginDate") + " " + "00:00:00");
param.put("endDate", param.get("endDate") + " " + "23:59:59"); param.put("endDate", param.get("endDate") + " " + "23:59:59");
List<Long> ids = planTaskMapper.getGenPlanTask(param); return planTaskMapper.getGenPlanTask(param);
List<ESPlanTaskListDto> planTaskList = new ArrayList<>();
for (long id : ids) {
iplanTaskDao.deleteById(id);
ESPlanTaskListDto esPlanTaskListDto = new ESPlanTaskListDto();
esPlanTaskListDto.setPlanTaskId(String.valueOf(id));
planTaskList.add(esPlanTaskListDto);
}
return planTaskList;
} }
/** /**
...@@ -1912,7 +1896,7 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -1912,7 +1896,7 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
private List<ESTaskDetailDto> buildESTaskDetailDtoData(String planTaskIds, List<PlanTaskDetail> planTaskDetails) { private List<ESTaskDetailDto> buildESTaskDetailDtoData(String planTaskIds, List<PlanTaskDetail> planTaskDetails) {
// 查询所有的 // 查询所有的
List<ESTaskDetailDto> allESTaskDetailDtos = this.queryTaskDetailEs(planTaskIds); List<ESTaskDetailDto> allESTaskDetailDtos = this.queryTaskDetailEs(planTaskIds);
Map<Long, ESTaskDetailDto> esTaskDetailDtoMap = allESTaskDetailDtos.stream().collect(Collectors.toMap(ESTaskDetailDto::getId, Function.identity())); Map<String, ESTaskDetailDto> esTaskDetailDtoMap = allESTaskDetailDtos.stream().collect(Collectors.toMap(ESTaskDetailDto::getId, Function.identity()));
// 只更新未完成状态 // 只更新未完成状态
planTaskDetails.forEach(planTaskDetail -> { planTaskDetails.forEach(planTaskDetail -> {
ESTaskDetailDto esTaskDetailDto = esTaskDetailDtoMap.get(planTaskDetail.getId()); ESTaskDetailDto esTaskDetailDto = esTaskDetailDtoMap.get(planTaskDetail.getId());
...@@ -1949,7 +1933,7 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -1949,7 +1933,7 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
private void buildESTaskDetailDtoData2(List<ESTaskDetailDto> allESTaskDetailDtos, List<PlanTaskDetail> planTaskDetails) { private void buildESTaskDetailDtoData2(List<ESTaskDetailDto> allESTaskDetailDtos, List<PlanTaskDetail> planTaskDetails) {
// 查询所有的 // 查询所有的
Map<Long, ESTaskDetailDto> esTaskDetailDtoMap = allESTaskDetailDtos.stream().collect(Collectors.toMap(ESTaskDetailDto::getId, Function.identity())); Map<String , ESTaskDetailDto> esTaskDetailDtoMap = allESTaskDetailDtos.stream().collect(Collectors.toMap(ESTaskDetailDto::getId, Function.identity()));
// 只更新未完成状态 // 只更新未完成状态
planTaskDetails.stream().filter(p-> PlanTaskDetailStatusEnum.NOTSTARTED.getValue().equals(p.getStatus())).forEach(planTaskDetail -> { planTaskDetails.stream().filter(p-> PlanTaskDetailStatusEnum.NOTSTARTED.getValue().equals(p.getStatus())).forEach(planTaskDetail -> {
ESTaskDetailDto esTaskDetailDto = esTaskDetailDtoMap.get(planTaskDetail.getId()); ESTaskDetailDto esTaskDetailDto = esTaskDetailDtoMap.get(planTaskDetail.getId());
......
...@@ -191,7 +191,7 @@ ...@@ -191,7 +191,7 @@
</foreach> </foreach>
</update> </update>
<select id="getGenPlanTask" resultType="long"> <select id="getGenPlanTask" resultType="java.lang.String">
select a.id from p_plan_task a select a.id from p_plan_task a
<trim prefix="where" prefixOverrides="AND |OR"> <trim prefix="where" prefixOverrides="AND |OR">
<if test="beginDate!=null"> and a.begin_Time >= #{beginDate}</if> <if test="beginDate!=null"> and a.begin_Time >= #{beginDate}</if>
...@@ -200,6 +200,14 @@ ...@@ -200,6 +200,14 @@
</trim> </trim>
</select> </select>
<delete id="deleteAllById">
delete from "p_plan_task" ppt
where ppt.id in
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<select id="getPlanTaskByRouteId" resultType="com.yeejoin.amos.patrol.dao.entity.PlanTask"> <select id="getPlanTaskByRouteId" resultType="com.yeejoin.amos.patrol.dao.entity.PlanTask">
SELECT * FROM p_plan_task SELECT * FROM p_plan_task
<where> <where>
......
...@@ -40,13 +40,27 @@ ...@@ -40,13 +40,27 @@
where where
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>
</select> </select>
<select id="findAllByTaskNos" resultType="com.yeejoin.amos.patrol.dao.entity.PlanTaskDetail">
<delete id="deleteAllByTaskNos">
delete from
"p_plan_task_detail" pptd
where
pptd.task_no in
<foreach collection="taskNos" item="no" open="(" separator="," close=")">
#{no}
</foreach>
</delete>
<select id="findAllByTaskNos" resultType="com.yeejoin.amos.patrol.dao.entity.ESTaskDetailDto">
select select
pptd.id pptd.id
from from
"p_plan_task_detail" pptd "p_plan_task_detail" pptd
where where
pptd.task_no in #{ids} pptd.task_no in
<foreach collection="taskNos" item="no" open="(" separator="," close=")">
#{no}
</foreach>
</select> </select>
<select id="selectOne" resultType="com.yeejoin.amos.patrol.dao.entity.PlanTaskDetail"> <select id="selectOne" resultType="com.yeejoin.amos.patrol.dao.entity.PlanTaskDetail">
......
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