From 9b4c0c7ff9f40bb0a1388edc18e819f66439a97a Mon Sep 17 00:00:00 2001 From: fengliu Date: Mon, 8 Dec 2025 13:40:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A1=E6=A3=80=E6=B5=81=E7=A8=8B=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=8C=E5=8E=BB=E9=99=A4=E6=8A=A5=E5=A4=87=E6=AD=A5?= =?UTF-8?q?=E9=AA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../duty/controller/ImsDutyRecController.java | 17 +- .../duty/service/IImsDutyEmergencyService.java | 9 +- .../service/impl/ImsDutyEmergencyServiceImpl.java | 80 +- .../plan/service/impl/PlanServiceImpl.java | 974 +++++++++++---------- .../task/controller/TaskRecordController.java | 60 +- .../task/job/service/TaskJobService.java | 289 +++--- .../src/main/resources/application-local.yml | 2 +- .../src/main/resources/log/logback-local.xml | 308 +++++++ .../src/main/resources/log/logback-test.xml | 308 ------- 9 files changed, 1006 insertions(+), 1041 deletions(-) create mode 100644 hnac-framework-boot/src/main/resources/log/logback-local.xml delete mode 100644 hnac-framework-boot/src/main/resources/log/logback-test.xml diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyRecController.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyRecController.java index f204061..e32cffa 100644 --- a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyRecController.java +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyRecController.java @@ -187,10 +187,6 @@ public class ImsDutyRecController { return R.data(imsDutyRecService.testClassDate(id, type)); } - - /** - * 新增:突发事件记录 - */ @PostMapping("/addEmergency") @ApiOperationSupport(order = 6) @ApiOperation(value = "新增突发事件", notes = "传入imsDutyEmergencyEntity") @@ -198,9 +194,6 @@ public class ImsDutyRecController { return iImsDutyEmergencyService.saveEntity(imsDutyEmergencyEntity); } - /** - * 删除:突发事件记录 - */ @PostMapping("/deleteEmergency") @ApiOperationSupport(order = 6) @ApiOperation(value = "删除突发事件记录", notes = "传入imsDutyEmergencyEntity") @@ -209,14 +202,10 @@ public class ImsDutyRecController { return iImsDutyEmergencyService.deleteEntity(imsDutyEmergencyEntity); } - /** - * 查询:突发事件记录 - */ - @PostMapping("/queryEmergency") - @ApiOperationSupport(order = 6) + @GetMapping("/queryEmergency") @ApiOperation(value = "查询突发事件记录", notes = "传入imsDutyEmergencyEntity") - public R queryEmergency(@Valid @RequestBody ImsDutyEmergencyVo imsDutyEmergencyVo, Query query) { - return iImsDutyEmergencyService.queryEntity(imsDutyEmergencyVo, query); + public R queryEmergency(ImsDutyEmergencyEntity imsDutyEmergencyEntity, Query query) { + return iImsDutyEmergencyService.queryEmergency(imsDutyEmergencyEntity, query); } diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyEmergencyService.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyEmergencyService.java index 5545103..2b0ad61 100644 --- a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyEmergencyService.java +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyEmergencyService.java @@ -4,21 +4,20 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.hzinfo_inspect.duty.entity.ImsDutyEmergencyEntity; -import org.springblade.hzinfo_inspect.duty.vo.ImsDutyEmergencyVo; /** - * 服务类 + * 服务类 * * @author Chill */ public interface IImsDutyEmergencyService extends IService { - R saveEntity(ImsDutyEmergencyEntity imsDutyEmergencyEntity); + R saveEntity(ImsDutyEmergencyEntity imsDutyEmergencyEntity); - R deleteEntity(ImsDutyEmergencyEntity imsDutyEmergencyEntity); + R deleteEntity(ImsDutyEmergencyEntity imsDutyEmergencyEntity); - R queryEntity(ImsDutyEmergencyVo imsDutyEmergencyVo, Query query); + R queryEmergency(ImsDutyEmergencyEntity entity, Query query); } diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyEmergencyServiceImpl.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyEmergencyServiceImpl.java index 6062d45..efd4694 100644 --- a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyEmergencyServiceImpl.java +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyEmergencyServiceImpl.java @@ -2,13 +2,10 @@ package org.springblade.hzinfo_inspect.duty.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.utils.AuthUtil; @@ -21,7 +18,6 @@ import org.springblade.hzinfo_inspect.duty.enums.DutyMainStatus; import org.springblade.hzinfo_inspect.duty.mapper.ImsDutyEmergencyMapper; import org.springblade.hzinfo_inspect.duty.mapper.ImsDutyMainMapper; import org.springblade.hzinfo_inspect.duty.service.IImsDutyEmergencyService; -import org.springblade.hzinfo_inspect.duty.vo.ImsDutyEmergencyVo; import org.springblade.system.user.entity.User; import org.springblade.system.user.feign.IUserClient; import org.springframework.beans.factory.annotation.Autowired; @@ -70,64 +66,26 @@ public class ImsDutyEmergencyServiceImpl extends ServiceImpl queryWrapper = getQueryWrapper(imsDutyEmergencyVo); - IPage imsDutyEmergencyEntityIPage = baseMapper.selectPage(Condition.getPage(query), new LambdaQueryWrapper<>()); - List records = imsDutyEmergencyEntityIPage.getRecords(); - List collect; - if (CollectionUtils.isNotEmpty(records)) { - collect = records.stream().map(sig -> { - R user = userClient.userInfoById(sig.getRegistrant()); - if (user.isSuccess() && ObjectUtils.isNotEmpty(user.getData())) { - sig.setRegistrantName(user.getData().getName()); - } - R userR = userClient.userInfoById(sig.getChargePerson()); - if (userR.isSuccess() && ObjectUtils.isNotEmpty(userR.getData())) { - sig.setChargePersonName(userR.getData().getName()); - } - ImsDutyClassEntity classEntity = imsDutyClassService.getById(sig.getDutyClass()); - sig.setDutyClassName(classEntity.getClassName()); - return sig; - }).collect(Collectors.toList()); - imsDutyEmergencyEntityIPage.setRecords(collect); + public R queryEmergency(ImsDutyEmergencyEntity entity, Query query) { + IPage pageList = this.page(Condition.getPage(query), Condition.getQueryWrapper(entity)); + if (pageList.getTotal() == 0) { + return R.data(pageList); } - return R.data(imsDutyEmergencyEntityIPage); + List resultList = pageList.getRecords().stream().map(obj -> { + R user = userClient.userInfoById(obj.getRegistrant()); + if (user.isSuccess() && ObjectUtils.isNotEmpty(user.getData())) { + obj.setRegistrantName(user.getData().getName()); + } + R userR = userClient.userInfoById(obj.getChargePerson()); + if (userR.isSuccess() && ObjectUtils.isNotEmpty(userR.getData())) { + obj.setChargePersonName(userR.getData().getName()); + } + ImsDutyClassEntity classEntity = imsDutyClassService.getById(obj.getDutyClass()); + obj.setDutyClassName(classEntity == null ? "未知" : classEntity.getClassName()); + return obj; + }).collect(Collectors.toList()); + pageList.setRecords(resultList); + return R.data(pageList); } - private QueryWrapper getQueryWrapper(ImsDutyEmergencyVo imsDutyEmergencyVo) { - QueryWrapper queryWrapper = new QueryWrapper(); - if (ObjectUtils.isNotEmpty(imsDutyEmergencyVo.getId())) { - queryWrapper.lambda().in(ImsDutyEmergencyEntity::getId, imsDutyEmergencyVo.getId()); - } - if (ObjectUtils.isNotEmpty(imsDutyEmergencyVo.getDutyStartTime())) { - queryWrapper.lambda().ge(ImsDutyEmergencyEntity::getDutyTime, imsDutyEmergencyVo.getDutyStartTime()); - } - if (ObjectUtils.isNotEmpty(imsDutyEmergencyVo.getDutyEndTime())) { - queryWrapper.lambda().le(ImsDutyEmergencyEntity::getDutyTime, imsDutyEmergencyVo.getDutyEndTime()); - } - if (CollectionUtils.isNotEmpty(imsDutyEmergencyVo.getDutyClass())) { - queryWrapper.lambda().in(ImsDutyEmergencyEntity::getDutyClass, imsDutyEmergencyVo.getDutyClass()); - } - if (CollectionUtils.isNotEmpty(imsDutyEmergencyVo.getChargePerson())) { - queryWrapper.lambda().in(ImsDutyEmergencyEntity::getChargePerson, imsDutyEmergencyVo.getChargePerson()); - } - if (CollectionUtils.isNotEmpty(imsDutyEmergencyVo.getRegistrant())) { - queryWrapper.lambda().in(ImsDutyEmergencyEntity::getRegistrant, imsDutyEmergencyVo.getRegistrant()); - } - if (CollectionUtils.isNotEmpty(imsDutyEmergencyVo.getRegistrant())) { - queryWrapper.lambda().in(ImsDutyEmergencyEntity::getRegistrant, imsDutyEmergencyVo.getRegistrant()); - } - if (StringUtils.isNotEmpty(imsDutyEmergencyVo.getEventTitle())) { - queryWrapper.lambda().like(ImsDutyEmergencyEntity::getEventTitle, imsDutyEmergencyVo.getEventTitle()); - } - if (StringUtils.isNotEmpty(imsDutyEmergencyVo.getEventInfo())) { - queryWrapper.lambda().like(ImsDutyEmergencyEntity::getEventInfo, imsDutyEmergencyVo.getEventInfo()); - } - if (StringUtils.isNotEmpty(imsDutyEmergencyVo.getEventType())) { - queryWrapper.lambda().like(ImsDutyEmergencyEntity::getEventType, imsDutyEmergencyVo.getEventType()); - } - return queryWrapper; - } - - } diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/plan/service/impl/PlanServiceImpl.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/plan/service/impl/PlanServiceImpl.java index b9eb004..721c39c 100644 --- a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/plan/service/impl/PlanServiceImpl.java +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/plan/service/impl/PlanServiceImpl.java @@ -1,6 +1,5 @@ package org.springblade.hzinfo_inspect.plan.service.impl; -import org.springblade.system.feign.ISysClient; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -9,7 +8,12 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.google.common.collect.Lists; -//import com.hnac.hzims.operational.duty.feign.IDutyClassClient; +import org.springblade.core.log.exception.ServiceException; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.utils.BeanUtil; +import org.springblade.core.tool.utils.Func; +import org.springblade.core.tool.utils.SpringUtil; import org.springblade.hzinfo_inspect.obj.entity.ObjectEntity; import org.springblade.hzinfo_inspect.obj.entity.TemplateEntity; import org.springblade.hzinfo_inspect.obj.services.ObjectService; @@ -28,12 +32,7 @@ import org.springblade.hzinfo_inspect.task.job.service.ITaskJobService; import org.springblade.hzinfo_inspect.task.job.service.impl.ConcurrentTaskServcie; import org.springblade.hzinfo_inspect.task.job.service.impl.SeizeTaskService; import org.springblade.hzinfo_inspect.task.service.ITaskService; -import org.springblade.core.log.exception.ServiceException; -import org.springblade.core.mp.base.BaseServiceImpl; -import org.springblade.core.secure.utils.AuthUtil; -import org.springblade.core.tool.utils.BeanUtil; -import org.springblade.core.tool.utils.Func; -import org.springblade.core.tool.utils.SpringUtil; +import org.springblade.system.feign.ISysClient; import org.springblade.system.user.cache.UserCache; import org.springblade.system.user.entity.User; import org.springframework.beans.factory.annotation.Autowired; @@ -46,501 +45,508 @@ import java.util.*; import java.util.stream.Collectors; /** - * 巡检计划服务实现类 + * 巡检计划服务实现类 * * @author Chill */ @Service public class PlanServiceImpl extends BaseServiceImpl implements IPlanService { - @Autowired - private IPlanObjectTemplateService planObjectTemplateService; - @Autowired - private IPlanUserService planUserService; - @Autowired - private IPlanPositionService planPositionService; - @Autowired - private IPlanOrgService planOrgService; - @Autowired - private ObjectService objectService; - @Autowired - private TemplateService templateService; - @Autowired - private ISysClient sysClient; - @Autowired - private ITaskService taskService; + @Autowired + private IPlanObjectTemplateService planObjectTemplateService; + @Autowired + private IPlanUserService planUserService; + @Autowired + private IPlanPositionService planPositionService; + @Autowired + private IPlanOrgService planOrgService; + @Autowired + private ObjectService objectService; + @Autowired + private TemplateService templateService; + @Autowired + private ISysClient sysClient; + @Autowired + private ITaskService taskService; // @Autowired // private IDutyClassClient dutyClassClient; - /** - * 任务提醒缓存名字 cacheName - */ + /** + * 任务提醒缓存名字 cacheName + */ // private static final String TASK_REMIND_CACHE_NAME = "taskRemindCache"; - /** - * 任务开始提醒缓存key cacheName - */ + /** + * 任务开始提醒缓存key cacheName + */ // private static final String TASK_START_REMIND_KEY = "taskStartRemind"; - /** - * 任务结束提醒缓存key cacheName - */ + /** + * 任务结束提醒缓存key cacheName + */ // private static final String TASK_END_REMIND_KEY = "taskEndRemind"; - - /** - * 删除巡检计划,删除巡检计划相关的所有信息 - * @param id - * @return - */ - @Override - public Boolean deletePlanAndRelatives(Long id){ - taskService.deleteTaskByPlanId(id); - planUserService.remove(Wrappers.lambdaQuery().eq(PlanUserEntity::getPlanId,id)); - planOrgService.remove(Wrappers.lambdaQuery().eq(PlanOrgEntity::getPlanId,id)); - planPositionService.remove(Wrappers.lambdaQuery().eq(PlanPositionEntity::getPlanId,id)); - planObjectTemplateService.remove(Wrappers.lambdaQuery().eq(PlanObjectTemplateEntity::getPlanId,id)); - return remove(Wrappers.lambdaQuery().eq(PlanEntity::getId,id)); - } - - /** - * 保存巡检计划 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public Boolean submit(PlanVO plan){ - checkInputParam(plan); - boolean modify = plan.getId()!=null; - PlanEntity entity = BeanUtil.copy(plan, PlanEntity.class); - //不管是新增还是修改成功后都为待提交状态 - entity.setStatus(Integer.valueOf(PlanContants.PlanStatusEnum.PLAN_SUBMIT.getStatus())); - boolean success = this.saveOrUpdate(entity); - if(success){ - plan.setId(entity.getId()); - success = insertPlanRelations(modify,plan); - } - return success; - } - - - /** - * 新增巡检计划 并审核、生成任务 - * @param plan - * @return 返回taskId list - */ - @Transactional(rollbackFor = Exception.class) - @Override - public List addAndChecked(PlanVO plan){ - List taskIds = new ArrayList<>(); - checkInputParam(plan); - boolean modify = plan.getId()!=null; - PlanEntity entity = BeanUtil.copy(plan, PlanEntity.class); - //不管是新增还是修改成功后都为待提交状态 - entity.setStatus(Integer.valueOf(PlanContants.PlanStatusEnum.CHECK_STATUS.getStatus())); - boolean success = this.save(entity); - if(success){ - plan.setId(entity.getId()); - success = insertPlanRelations(modify,plan); - if(success){ - taskIds = genPresentTaskReturnTaskId(entity.getId()); - } - } - return taskIds; - } - - /** - * 校验提交参数 - * @param plan - */ - private void checkInputParam(PlanVO plan){ - if(plan.getId()==null && Func.isEmpty(plan.getCode())){ - plan.setCode(CodeUtils.randomCode()); - LocalDate now = LocalDate.now(); - if(plan.getStartTime().isBefore(now)){ - throw new ServiceException("新增计划时开始时间不能早于当前时间"); - } - } - if(plan.getEndTime().isBefore(plan.getStartTime())){ - throw new ServiceException("结束时间不能早于开始时间"); - } - if(!plan.getType().equals(PlanContants.PlanTypeEnum.FREE_TYPE.getType()) && Func.isEmpty(plan.getRouteData())){ - throw new ServiceException("巡检路径数据不能为空"); - } - } - - /** - * 插入巡检计划相关表 - * @param modify 是否是修改 - * @param plan - * @return - */ - private boolean insertPlanRelationsOld(boolean modify,PlanVO plan){ - boolean success = false; - //添加巡检计划对象模板(一个对象在一个计划只能出现一次) - List obtList = plan.getPlanObjectTemplates().stream().filter(objectEntity->objectEntity.getId()==null).collect(Collectors.toList()); - if(obtList.size()>0){ - List planObjectIds = planObjectTemplateService.list(Wrappers.lambdaQuery() - .eq(PlanObjectTemplateEntity::getPlanId,plan.getId())).stream().map(objEntity->objEntity.getObjectId()).distinct().collect(Collectors.toList()); - planObjectIds.addAll(obtList.stream().map(planObjectVO->planObjectVO.getObjectId()).collect(Collectors.toList())); - Set planObjectIdsSet = new HashSet<>(planObjectIds); - boolean repeat = planObjectIds.size()!=planObjectIdsSet.size(); - if(repeat){ - throw new ServiceException("一个对象在一个计划只能出现一次"); - } - List pteList = Lists.newArrayList(); - for(PlanObjectTemplateVO tvo :obtList){ - PlanObjectTemplateEntity pte = PlanObjectTemplateEntity.builder().objectId(tvo.getObjectId()).templateId(tvo.getTemplateId()).planId(plan.getId()).build(); - pte.setId(tvo.getId()); - pteList.add(pte); - } - if(pteList.size()>0){ - success = planObjectTemplateService.saveOrUpdateBatch(pteList); - } - } - if(modify){//修改先要删除 - //巡检计划模式人员 - UpdateWrapper ew = new UpdateWrapper<>(); - ew.lambda().eq(PlanUserEntity::getPlanId, plan.getId()); - planUserService.remove(ew); - //巡检计划模式岗位 - UpdateWrapper ew1 = new UpdateWrapper<>(); - ew1.lambda().eq(PlanPositionEntity::getPlanId, plan.getId()); - planPositionService.remove(ew1); - //巡检计划模式机构 - UpdateWrapper ew2 = new UpdateWrapper<>(); - ew2.lambda().eq(PlanOrgEntity::getPlanId, plan.getId()); - planOrgService.remove(ew2); - } - //巡检计划模式人员 - List uVoList = plan.getPlanUsers(); - if(Func.isNotEmpty(uVoList)){ - List uList = Lists.newArrayList(); - for(Long uId:uVoList){ - uList.add(PlanUserEntity.builder().planId(plan.getId()).userId(uId).build()); - } - if(uList.size()>0){ - success = planUserService.saveBatch(uList); - } - } - - //巡检计划模式岗位 - List pVoList = plan.getPlanPosts(); - if(Func.isNotEmpty(pVoList)){ - List pList = Lists.newArrayList(); - for(Long pId:pVoList){ - pList.add(PlanPositionEntity.builder().planId(plan.getId()).positionId(pId).build()); - } - if(pList.size()>0){ - success = planPositionService.saveBatch(pList); - } - } - - //巡检计划模式机构 - List oVoList = plan.getPlanOrgs(); - if(Func.isNotEmpty(oVoList)){ - List oList = Lists.newArrayList(); - for(Long oId:oVoList){ - oList.add(PlanOrgEntity.builder().planId(plan.getId()).orgId(oId).build()); - } - if(oList.size()>0){ - success = planOrgService.saveBatch(oList); - } - } - return success; - } - - - /** - * 插入巡检计划相关表 - * 对象模板信息来源于路径 - * @param modify 是否是修改 - * @param plan - * @return - */ - public boolean insertPlanRelations(boolean modify,PlanVO plan){ - boolean success = false; - //添加巡检计划对象模板(一个对象在一个计划只能出现一次) - List obtList = new ArrayList<>(); - if(!plan.getType().equals(PlanContants.PlanTypeEnum.FREE_TYPE.getType())){ - if(Func.isNotBlank(plan.getRouteData())){ - JSONArray routeJson = JSON.parseArray(plan.getRouteData()); - int len = routeJson.size(); - for (int i = 0; i < len; i++) { - PlanObjectTemplateEntity pot = new PlanObjectTemplateEntity(); - JSONObject time = routeJson.getJSONObject(i); - pot.setObjectId(Long.valueOf(time.get("objectId").toString())); - pot.setTemplateId(Long.valueOf(time.get("templateId").toString())); - pot.setPlanId(plan.getId()); - obtList.add(pot); - } - } else { - throw new ServiceException("巡检路径数据不能为空"); - } - } - - - if(modify){//修改先要删除 - //巡检计划模式人员 - UpdateWrapper ew = new UpdateWrapper<>(); - ew.lambda().eq(PlanUserEntity::getPlanId, plan.getId()); - planUserService.remove(ew); - //巡检计划模式岗位 - UpdateWrapper ew1 = new UpdateWrapper<>(); - ew1.lambda().eq(PlanPositionEntity::getPlanId, plan.getId()); - planPositionService.remove(ew1); - //巡检计划模式机构 - UpdateWrapper ew2 = new UpdateWrapper<>(); - ew2.lambda().eq(PlanOrgEntity::getPlanId, plan.getId()); - planOrgService.remove(ew2); - //巡检计划对象模板 - UpdateWrapper ew3 = new UpdateWrapper<>(); - ew3.lambda().eq(PlanObjectTemplateEntity::getPlanId, plan.getId()); - planObjectTemplateService.remove(ew3); - - //巡检计划班次 在计划时间json中实现 - } - - //巡检计划对象模板 - planObjectTemplateService.saveBatch(obtList); - - //巡检计划模式人员 - List uVoList = plan.getPlanUsers(); - if(Func.isNotEmpty(uVoList)){ - List uList = Lists.newArrayList(); - for(Long uId:uVoList){ - uList.add(PlanUserEntity.builder().planId(plan.getId()).userId(uId).build()); - } - if(uList.size()>0){ - success = planUserService.saveBatch(uList); - } - } - - //巡检计划模式岗位 - List pVoList = plan.getPlanPosts(); - if(Func.isNotEmpty(pVoList)){ - List pList = Lists.newArrayList(); - for(Long pId:pVoList){ - pList.add(PlanPositionEntity.builder().planId(plan.getId()).positionId(pId).build()); - } - if(pList.size()>0){ - success = planPositionService.saveBatch(pList); - } - } - - //巡检计划模式机构 - List oVoList = plan.getPlanOrgs(); - if(Func.isNotEmpty(oVoList)){ - List oList = Lists.newArrayList(); - for(Long oId:oVoList){ - oList.add(PlanOrgEntity.builder().planId(plan.getId()).orgId(oId).build()); - } - if(oList.size()>0){ - success = planOrgService.saveBatch(oList); - } - } - - if(plan.getType().equals(PlanTypeEnum.CLASS_TYPE.getType()) ){ - success = true; - } - - return success; - } - - /** - * hld 保存巡检计划 - * @param plan - * @return - */ - @Override - @Transactional(rollbackFor = Exception.class) - public Boolean submitForHld(PlanVO plan){ - boolean modify = plan.getId()!=null; - PlanEntity entity = BeanUtil.copy(plan, PlanEntity.class); - //不管是新增还是修改成功后都为已审核状态 - entity.setStatus(Integer.valueOf(PlanContants.PlanStatusEnum.CHECK_STATUS.getStatus())); - - //临时任务 - if(plan.getPlanType() != null && plan.getPlanType().equals(PlanContants.PlanContentTypeEnum.TEMP.getDesc())){ - /*add for huanglongdai 20190927 生成临时任务*/ - entity.setStatus(Integer.valueOf(PlanContants.PlanStatusEnum.FINISH_STATUS.getStatus())); - } else { - entity.setPlanType(PlanContants.PlanContentTypeEnum.COMMON.getDesc()); - if(plan.getTaskFlg() != null && plan.getTaskFlg() == PlanContants.GenTaskImmediateEnum.YES.getFlag()){ - if (plan.getCycle().equals(PlanContants.PlanCycleEnum.NEVER_CYCLE.getCycle())){ - entity.setStatus(Integer.valueOf(PlanContants.PlanStatusEnum.FINISH_STATUS.getStatus())); - }else{ - entity.setStatus(Integer.valueOf(PlanContants.PlanStatusEnum.UNDERWAY_STATUS.getStatus())); - } - } - } - - boolean success = this.saveOrUpdate(entity); - if(success){ - plan.setId(entity.getId()); - success = insertPlanRelations(modify,plan); - - //立即生成任务 或者 临时任务 hld - if(plan.getTaskFlg() == PlanContants.GenTaskImmediateEnum.YES.getFlag() - || plan.getPlanType().equals(PlanContants.PlanContentTypeEnum.TEMP.getDesc())){ - - ITaskJobService taskJobService = null; - if(PlanContants.PlanMethodEnum.SEIZE.getMethod().equals(plan.getMethod())){ - taskJobService = SpringUtil.getBean(SeizeTaskService.class); - }else if(PlanContants.PlanMethodEnum.CONCURRENT.getMethod().equals(plan.getMethod())){ - taskJobService = SpringUtil.getBean(ConcurrentTaskServcie.class); - } - taskJobService.sendTask(entity); - } - } - return success; - } - - @Override - public Boolean modifyPlanStatus(Long planId, Integer status){ - boolean re; - LambdaUpdateWrapper uw = new UpdateWrapper().lambda(); - uw.set(PlanEntity::getStatus, status); - if(PlanContants.PlanStatusEnum.CHECK_STATUS.getStatus().equals(String.valueOf(status))|| - PlanContants.PlanStatusEnum.AUTH_STOP.getStatus().equals(String.valueOf(status))){//通过、驳回时需要填审核信息 - uw.set(PlanEntity::getApprover, AuthUtil.getUserId()).set(PlanEntity::getApproveTime, LocalDateTime.now()); - } - uw.eq(PlanEntity::getId, planId); - re = update(uw); - if(re){ - if(PlanContants.PlanStatusEnum.CHECK_STATUS.getStatus().equals(String.valueOf(status))){ - genPresentTask(planId); - } - } - return re; - } - - /** - * 生成当天任务 - * 如果计划开始时间小于等于当天则产生当天任务 - * @param planId 计划id - */ - @Transactional(rollbackFor = Exception.class) - public void genPresentTask(Long planId){ - PlanEntity plan = this.baseMapper.selectById(planId); - //立即生成任务 或者 临时任务 hld - if(plan.getStartTime().isBefore(LocalDate.now()) || plan.getStartTime().isEqual(LocalDate.now()) ){ - ITaskJobService taskJobService = null; - if(PlanContants.PlanMethodEnum.SEIZE.getMethod().equals(plan.getMethod())){ - taskJobService = SpringUtil.getBean(SeizeTaskService.class); - }else if(PlanContants.PlanMethodEnum.CONCURRENT.getMethod().equals(plan.getMethod())){ - taskJobService = SpringUtil.getBean(ConcurrentTaskServcie.class); - } - taskJobService.sendTask(plan); - plan.setStatus(Integer.valueOf(PlanContants.PlanStatusEnum.UNDERWAY_STATUS.getStatus())); - this.baseMapper.updateById(plan); - } - } - - @Transactional(rollbackFor = Exception.class) - public List genPresentTaskReturnTaskId(Long planId){ - List taskIds = new ArrayList<>(); - PlanEntity plan = this.baseMapper.selectById(planId); - //立即生成任务 或者 临时任务 hld - if(plan.getStartTime().isBefore(LocalDate.now()) || plan.getStartTime().isEqual(LocalDate.now()) ){ - ITaskJobService taskJobService = null; - if(PlanContants.PlanMethodEnum.SEIZE.getMethod().equals(plan.getMethod())){ - taskJobService = SpringUtil.getBean(SeizeTaskService.class); - }else if(PlanContants.PlanMethodEnum.CONCURRENT.getMethod().equals(plan.getMethod())){ - taskJobService = SpringUtil.getBean(ConcurrentTaskServcie.class); - } - taskIds = taskJobService.sendTaskReturnTaskId(plan); - plan.setStatus(Integer.valueOf(PlanContants.PlanStatusEnum.UNDERWAY_STATUS.getStatus())); - this.baseMapper.updateById(plan); - } - return taskIds; - } - - /** - * 查看巡检计划 - * @param id - */ - @Override - public PlanVO detail(Long id){ - PlanEntity entity = this.getById(id); - PlanVO plan = BeanUtil.copy(entity, PlanVO.class); - //巡检计划对象模板 - QueryWrapper qw = new QueryWrapper<>(); - qw.lambda().eq(PlanObjectTemplateEntity::getPlanId, id); - List pteList = planObjectTemplateService.list(qw); - if(pteList!=null && pteList.size()>0){ - List objIds = Lists.newArrayList(); - List tmpIds = Lists.newArrayList(); - for(PlanObjectTemplateEntity pote:pteList){ - objIds.add(pote.getObjectId()); - tmpIds.add(pote.getTemplateId()); - } - Map objMap = objectService.listByIds(objIds).stream().collect(Collectors.toMap(ObjectEntity::getId, ObjectEntity::getName)); - Map tmpMap = templateService.listByIds(tmpIds).stream().collect(Collectors.toMap(TemplateEntity::getId, TemplateEntity::getName)); - List planObjectTemplates = Lists.newArrayList(); - for(PlanObjectTemplateEntity pote:pteList){ - planObjectTemplates.add(PlanObjectTemplateVO.builder().id(pote.getId()).objectId(pote.getObjectId()).objectName(objMap.get(pote.getObjectId())) - .templateId(pote.getTemplateId()).templateName(tmpMap.get(pote.getTemplateId())) - .build()); - } - plan.setPlanObjectTemplates(planObjectTemplates); - } - //人员||自由模式 - List planUserNames = Lists.newArrayList(); - List planUserIds = Lists.newArrayList(); - if(PlanTypeEnum.USER_TYPE.getType().equals(plan.getType()) || PlanTypeEnum.FREE_TYPE.getType().equals(plan.getType())){ - UpdateWrapper ew = new UpdateWrapper<>(); - ew.lambda().eq(PlanUserEntity::getPlanId, entity.getId()); - List list = planUserService.list(ew); - list.forEach(e->{ - User user = UserCache.getUser(e.getUserId()); - if(user!=null){ - planUserNames.add(user.getRealName()); - planUserIds.add(user.getId()); - } - }); - } - plan.setPlanUsers(planUserIds); - plan.setPlanUserNames(planUserNames); - //岗位 - List planPostNames = Lists.newArrayList(); - List planPostIds = Lists.newArrayList(); - if(PlanTypeEnum.POSITION_TYPE.getType().equals(plan.getType())){ - UpdateWrapper ew = new UpdateWrapper<>(); - ew.lambda().eq(PlanPositionEntity::getPlanId, entity.getId()); - List list = planPositionService.list(ew); - planPostIds = list.stream().map(e->e.getPositionId()).collect(Collectors.toList()); - String postIds = String.join(",", list.stream().map(e->String.valueOf(e.getPositionId())).collect(Collectors.toList())); - planPostNames.addAll(sysClient.getPostNames(postIds).getData()); - } - plan.setPlanPosts(planPostIds); - plan.setPlanPostNames(planPostNames); - //机构 - List planOrgNames = Lists.newArrayList(); - List planOrgIds = Lists.newArrayList(); - if(PlanTypeEnum.ORG_TYPE.getType().equals(plan.getType())){ - UpdateWrapper ew = new UpdateWrapper<>(); - ew.lambda().eq(PlanOrgEntity::getPlanId, entity.getId()); - List list = planOrgService.list(ew); - planOrgIds = list.stream().map(e->e.getOrgId()).collect(Collectors.toList()); - String orgIds = String.join(",", list.stream().map(e->String.valueOf(e.getOrgId())).collect(Collectors.toList())); - planOrgNames.addAll(sysClient.getDeptNames(orgIds).getData()); - } - plan.setPlanOrgs(planOrgIds); - plan.setPlanOrgNames(planOrgNames); - //值班班次 + /** + * 删除巡检计划,删除巡检计划相关的所有信息 + * + * @param id + * @return + */ + @Override + public Boolean deletePlanAndRelatives(Long id) { + taskService.deleteTaskByPlanId(id); + planUserService.remove(Wrappers.lambdaQuery().eq(PlanUserEntity::getPlanId, id)); + planOrgService.remove(Wrappers.lambdaQuery().eq(PlanOrgEntity::getPlanId, id)); + planPositionService.remove(Wrappers.lambdaQuery().eq(PlanPositionEntity::getPlanId, id)); + planObjectTemplateService.remove(Wrappers.lambdaQuery().eq(PlanObjectTemplateEntity::getPlanId, id)); + return remove(Wrappers.lambdaQuery().eq(PlanEntity::getId, id)); + } + + /** + * 保存巡检计划 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public Boolean submit(PlanVO plan) { + checkInputParam(plan); + boolean modify = plan.getId() != null; + PlanEntity entity = BeanUtil.copy(plan, PlanEntity.class); + //不管是新增还是修改成功后都为待提交状态 + entity.setStatus(Integer.valueOf(PlanContants.PlanStatusEnum.PLAN_SUBMIT.getStatus())); + boolean success = this.saveOrUpdate(entity); + if (success) { + plan.setId(entity.getId()); + success = insertPlanRelations(modify, plan); + } + return success; + } + + + /** + * 新增巡检计划 并审核、生成任务 + * + * @param plan + * @return 返回taskId list + */ + @Transactional(rollbackFor = Exception.class) + @Override + public List addAndChecked(PlanVO plan) { + List taskIds = new ArrayList<>(); + checkInputParam(plan); + boolean modify = plan.getId() != null; + PlanEntity entity = BeanUtil.copy(plan, PlanEntity.class); + //不管是新增还是修改成功后都为待提交状态 + entity.setStatus(Integer.valueOf(PlanContants.PlanStatusEnum.CHECK_STATUS.getStatus())); + boolean success = this.save(entity); + if (success) { + plan.setId(entity.getId()); + success = insertPlanRelations(modify, plan); + if (success) { + taskIds = genPresentTaskReturnTaskId(entity.getId()); + } + } + return taskIds; + } + + /** + * 校验提交参数 + * + * @param plan + */ + private void checkInputParam(PlanVO plan) { + if (plan.getId() == null && Func.isEmpty(plan.getCode())) { + plan.setCode(CodeUtils.randomCode()); + LocalDate now = LocalDate.now(); + if (plan.getStartTime().isBefore(now)) { + throw new ServiceException("新增计划时开始时间不能早于当前时间"); + } + } + if (plan.getEndTime().isBefore(plan.getStartTime())) { + throw new ServiceException("结束时间不能早于开始时间"); + } + if (!plan.getType().equals(PlanContants.PlanTypeEnum.FREE_TYPE.getType()) && Func.isEmpty(plan.getRouteData())) { + throw new ServiceException("巡检路径数据不能为空"); + } + } + + /** + * 插入巡检计划相关表 + * + * @param modify 是否是修改 + * @param plan + * @return + */ + private boolean insertPlanRelationsOld(boolean modify, PlanVO plan) { + boolean success = false; + //添加巡检计划对象模板(一个对象在一个计划只能出现一次) + List obtList = plan.getPlanObjectTemplates().stream().filter(objectEntity -> objectEntity.getId() == null).collect(Collectors.toList()); + if (obtList.size() > 0) { + List planObjectIds = planObjectTemplateService.list(Wrappers.lambdaQuery() + .eq(PlanObjectTemplateEntity::getPlanId, plan.getId())).stream().map(objEntity -> objEntity.getObjectId()).distinct().collect(Collectors.toList()); + planObjectIds.addAll(obtList.stream().map(planObjectVO -> planObjectVO.getObjectId()).collect(Collectors.toList())); + Set planObjectIdsSet = new HashSet<>(planObjectIds); + boolean repeat = planObjectIds.size() != planObjectIdsSet.size(); + if (repeat) { + throw new ServiceException("一个对象在一个计划只能出现一次"); + } + List pteList = Lists.newArrayList(); + for (PlanObjectTemplateVO tvo : obtList) { + PlanObjectTemplateEntity pte = PlanObjectTemplateEntity.builder().objectId(tvo.getObjectId()).templateId(tvo.getTemplateId()).planId(plan.getId()).build(); + pte.setId(tvo.getId()); + pteList.add(pte); + } + if (pteList.size() > 0) { + success = planObjectTemplateService.saveOrUpdateBatch(pteList); + } + } + if (modify) {//修改先要删除 + //巡检计划模式人员 + UpdateWrapper ew = new UpdateWrapper<>(); + ew.lambda().eq(PlanUserEntity::getPlanId, plan.getId()); + planUserService.remove(ew); + //巡检计划模式岗位 + UpdateWrapper ew1 = new UpdateWrapper<>(); + ew1.lambda().eq(PlanPositionEntity::getPlanId, plan.getId()); + planPositionService.remove(ew1); + //巡检计划模式机构 + UpdateWrapper ew2 = new UpdateWrapper<>(); + ew2.lambda().eq(PlanOrgEntity::getPlanId, plan.getId()); + planOrgService.remove(ew2); + } + //巡检计划模式人员 + List uVoList = plan.getPlanUsers(); + if (Func.isNotEmpty(uVoList)) { + List uList = Lists.newArrayList(); + for (Long uId : uVoList) { + uList.add(PlanUserEntity.builder().planId(plan.getId()).userId(uId).build()); + } + if (uList.size() > 0) { + success = planUserService.saveBatch(uList); + } + } + + //巡检计划模式岗位 + List pVoList = plan.getPlanPosts(); + if (Func.isNotEmpty(pVoList)) { + List pList = Lists.newArrayList(); + for (Long pId : pVoList) { + pList.add(PlanPositionEntity.builder().planId(plan.getId()).positionId(pId).build()); + } + if (pList.size() > 0) { + success = planPositionService.saveBatch(pList); + } + } + + //巡检计划模式机构 + List oVoList = plan.getPlanOrgs(); + if (Func.isNotEmpty(oVoList)) { + List oList = Lists.newArrayList(); + for (Long oId : oVoList) { + oList.add(PlanOrgEntity.builder().planId(plan.getId()).orgId(oId).build()); + } + if (oList.size() > 0) { + success = planOrgService.saveBatch(oList); + } + } + return success; + } + + + /** + * 插入巡检计划相关表 + * 对象模板信息来源于路径 + * + * @param modify 是否是修改 + * @param plan + * @return + */ + public boolean insertPlanRelations(boolean modify, PlanVO plan) { + boolean success = false; + //添加巡检计划对象模板(一个对象在一个计划只能出现一次) + List obtList = new ArrayList<>(); + if (!plan.getType().equals(PlanContants.PlanTypeEnum.FREE_TYPE.getType())) { + if (Func.isNotBlank(plan.getRouteData())) { + JSONArray routeJson = JSON.parseArray(plan.getRouteData()); + int len = routeJson.size(); + for (int i = 0; i < len; i++) { + PlanObjectTemplateEntity pot = new PlanObjectTemplateEntity(); + JSONObject time = routeJson.getJSONObject(i); + pot.setObjectId(Long.valueOf(time.get("objectId").toString())); + pot.setTemplateId(Long.valueOf(time.get("templateId").toString())); + pot.setPlanId(plan.getId()); + obtList.add(pot); + } + } else { + throw new ServiceException("巡检路径数据不能为空"); + } + } + + + if (modify) {//修改先要删除 + //巡检计划模式人员 + UpdateWrapper ew = new UpdateWrapper<>(); + ew.lambda().eq(PlanUserEntity::getPlanId, plan.getId()); + planUserService.remove(ew); + //巡检计划模式岗位 + UpdateWrapper ew1 = new UpdateWrapper<>(); + ew1.lambda().eq(PlanPositionEntity::getPlanId, plan.getId()); + planPositionService.remove(ew1); + //巡检计划模式机构 + UpdateWrapper ew2 = new UpdateWrapper<>(); + ew2.lambda().eq(PlanOrgEntity::getPlanId, plan.getId()); + planOrgService.remove(ew2); + //巡检计划对象模板 + UpdateWrapper ew3 = new UpdateWrapper<>(); + ew3.lambda().eq(PlanObjectTemplateEntity::getPlanId, plan.getId()); + planObjectTemplateService.remove(ew3); + + //巡检计划班次 在计划时间json中实现 + } + + //巡检计划对象模板 + planObjectTemplateService.saveBatch(obtList); + + //巡检计划模式人员 + List uVoList = plan.getPlanUsers(); + if (Func.isNotEmpty(uVoList)) { + List uList = Lists.newArrayList(); + for (Long uId : uVoList) { + uList.add(PlanUserEntity.builder().planId(plan.getId()).userId(uId).build()); + } + if (uList.size() > 0) { + success = planUserService.saveBatch(uList); + } + } + + //巡检计划模式岗位 + List pVoList = plan.getPlanPosts(); + if (Func.isNotEmpty(pVoList)) { + List pList = Lists.newArrayList(); + for (Long pId : pVoList) { + pList.add(PlanPositionEntity.builder().planId(plan.getId()).positionId(pId).build()); + } + if (pList.size() > 0) { + success = planPositionService.saveBatch(pList); + } + } + + //巡检计划模式机构 + List oVoList = plan.getPlanOrgs(); + if (Func.isNotEmpty(oVoList)) { + List oList = Lists.newArrayList(); + for (Long oId : oVoList) { + oList.add(PlanOrgEntity.builder().planId(plan.getId()).orgId(oId).build()); + } + if (oList.size() > 0) { + success = planOrgService.saveBatch(oList); + } + } + + if (plan.getType().equals(PlanTypeEnum.CLASS_TYPE.getType())) { + success = true; + } + + return success; + } + + /** + * hld 保存巡检计划 + * + * @param plan + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean submitForHld(PlanVO plan) { + boolean modify = plan.getId() != null; + PlanEntity entity = BeanUtil.copy(plan, PlanEntity.class); + //不管是新增还是修改成功后都为已审核状态 + entity.setStatus(Integer.valueOf(PlanContants.PlanStatusEnum.CHECK_STATUS.getStatus())); + + //临时任务 + if (plan.getPlanType() != null && plan.getPlanType().equals(PlanContants.PlanContentTypeEnum.TEMP.getDesc())) { + /*add for huanglongdai 20190927 生成临时任务*/ + entity.setStatus(Integer.valueOf(PlanContants.PlanStatusEnum.FINISH_STATUS.getStatus())); + } else { + entity.setPlanType(PlanContants.PlanContentTypeEnum.COMMON.getDesc()); + if (plan.getTaskFlg() != null && plan.getTaskFlg() == PlanContants.GenTaskImmediateEnum.YES.getFlag()) { + if (plan.getCycle().equals(PlanContants.PlanCycleEnum.NEVER_CYCLE.getCycle())) { + entity.setStatus(Integer.valueOf(PlanContants.PlanStatusEnum.FINISH_STATUS.getStatus())); + } else { + entity.setStatus(Integer.valueOf(PlanContants.PlanStatusEnum.UNDERWAY_STATUS.getStatus())); + } + } + } + + boolean success = this.saveOrUpdate(entity); + if (success) { + plan.setId(entity.getId()); + success = insertPlanRelations(modify, plan); + + //立即生成任务 或者 临时任务 hld + if (plan.getTaskFlg() == PlanContants.GenTaskImmediateEnum.YES.getFlag() + || plan.getPlanType().equals(PlanContants.PlanContentTypeEnum.TEMP.getDesc())) { + + ITaskJobService taskJobService = null; + if (PlanContants.PlanMethodEnum.SEIZE.getMethod().equals(plan.getMethod())) { + taskJobService = SpringUtil.getBean(SeizeTaskService.class); + } else if (PlanContants.PlanMethodEnum.CONCURRENT.getMethod().equals(plan.getMethod())) { + taskJobService = SpringUtil.getBean(ConcurrentTaskServcie.class); + } + taskJobService.sendTask(entity); + } + } + return success; + } + + @Override + public Boolean modifyPlanStatus(Long planId, Integer status) { + boolean re; + LambdaUpdateWrapper uw = new UpdateWrapper().lambda(); + uw.set(PlanEntity::getStatus, status); + if (PlanContants.PlanStatusEnum.CHECK_STATUS.getStatus().equals(String.valueOf(status)) || + PlanContants.PlanStatusEnum.AUTH_STOP.getStatus().equals(String.valueOf(status))) {//通过、驳回时需要填审核信息 + uw.set(PlanEntity::getApprover, AuthUtil.getUserId()).set(PlanEntity::getApproveTime, LocalDateTime.now()); + } + uw.eq(PlanEntity::getId, planId); + re = update(uw); + if (re) { + if (PlanContants.PlanStatusEnum.CHECK_STATUS.getStatus().equals(String.valueOf(status))) { + genPresentTask(planId); + } + } + return re; + } + + /** + * 生成当天任务 + * 如果计划开始时间小于等于当天则产生当天任务 + * + * @param planId 计划id + */ + @Transactional(rollbackFor = Exception.class) + public void genPresentTask(Long planId) { + PlanEntity plan = this.baseMapper.selectById(planId); + //立即生成任务 或者 临时任务 hld + if (plan.getStartTime().isBefore(LocalDate.now()) || plan.getStartTime().isEqual(LocalDate.now())) { + ITaskJobService taskJobService = null; + if (PlanContants.PlanMethodEnum.SEIZE.getMethod().equals(plan.getMethod())) { + taskJobService = SpringUtil.getBean(SeizeTaskService.class); + } else if (PlanContants.PlanMethodEnum.CONCURRENT.getMethod().equals(plan.getMethod())) { + taskJobService = SpringUtil.getBean(ConcurrentTaskServcie.class); + } + taskJobService.sendTask(plan); + plan.setStatus(Integer.valueOf(PlanContants.PlanStatusEnum.UNDERWAY_STATUS.getStatus())); + this.baseMapper.updateById(plan); + } + } + + @Transactional(rollbackFor = Exception.class) + public List genPresentTaskReturnTaskId(Long planId) { + List taskIds = new ArrayList<>(); + PlanEntity plan = this.baseMapper.selectById(planId); + //立即生成任务 或者 临时任务 hld + if (plan.getStartTime().isBefore(LocalDate.now()) || plan.getStartTime().isEqual(LocalDate.now())) { + ITaskJobService taskJobService = null; + if (PlanContants.PlanMethodEnum.SEIZE.getMethod().equals(plan.getMethod())) { + taskJobService = SpringUtil.getBean(SeizeTaskService.class); + } else if (PlanContants.PlanMethodEnum.CONCURRENT.getMethod().equals(plan.getMethod())) { + taskJobService = SpringUtil.getBean(ConcurrentTaskServcie.class); + } + taskIds = taskJobService.sendTaskReturnTaskId(plan); + plan.setStatus(Integer.valueOf(PlanContants.PlanStatusEnum.UNDERWAY_STATUS.getStatus())); + this.baseMapper.updateById(plan); + } + return taskIds; + } + + /** + * 查看巡检计划 + * + * @param id + */ + @Override + public PlanVO detail(Long id) { + PlanEntity entity = this.getById(id); + PlanVO plan = BeanUtil.copy(entity, PlanVO.class); + //巡检计划对象模板 + QueryWrapper qw = new QueryWrapper<>(); + qw.lambda().eq(PlanObjectTemplateEntity::getPlanId, id); + List pteList = planObjectTemplateService.list(qw); + if (pteList != null && pteList.size() > 0) { + List objIds = Lists.newArrayList(); + List tmpIds = Lists.newArrayList(); + for (PlanObjectTemplateEntity pote : pteList) { + objIds.add(pote.getObjectId()); + tmpIds.add(pote.getTemplateId()); + } + Map objMap = objectService.listByIds(objIds).stream().collect(Collectors.toMap(ObjectEntity::getId, ObjectEntity::getName)); + Map tmpMap = templateService.listByIds(tmpIds).stream().collect(Collectors.toMap(TemplateEntity::getId, TemplateEntity::getName)); + List planObjectTemplates = Lists.newArrayList(); + for (PlanObjectTemplateEntity pote : pteList) { + planObjectTemplates.add(PlanObjectTemplateVO.builder().id(pote.getId()).objectId(pote.getObjectId()).objectName(objMap.get(pote.getObjectId())) + .templateId(pote.getTemplateId()).templateName(tmpMap.get(pote.getTemplateId())) + .build()); + } + plan.setPlanObjectTemplates(planObjectTemplates); + } + //人员||自由模式 + List planUserNames = Lists.newArrayList(); + List planUserIds = Lists.newArrayList(); + if (PlanTypeEnum.USER_TYPE.getType().equals(plan.getType()) || PlanTypeEnum.FREE_TYPE.getType().equals(plan.getType())) { + UpdateWrapper ew = new UpdateWrapper<>(); + ew.lambda().eq(PlanUserEntity::getPlanId, entity.getId()); + List list = planUserService.list(ew); + list.forEach(e -> { + User user = UserCache.getUser(e.getUserId()); + if (user != null) { + planUserNames.add(user.getRealName()); + planUserIds.add(user.getId()); + } + }); + } + plan.setPlanUsers(planUserIds); + plan.setPlanUserNames(planUserNames); + //岗位 + List planPostNames = Lists.newArrayList(); + List planPostIds = Lists.newArrayList(); + if (PlanTypeEnum.POSITION_TYPE.getType().equals(plan.getType())) { + UpdateWrapper ew = new UpdateWrapper<>(); + ew.lambda().eq(PlanPositionEntity::getPlanId, entity.getId()); + List list = planPositionService.list(ew); + planPostIds = list.stream().map(e -> e.getPositionId()).collect(Collectors.toList()); + String postIds = String.join(",", list.stream().map(e -> String.valueOf(e.getPositionId())).collect(Collectors.toList())); + planPostNames.addAll(sysClient.getPostNames(postIds).getData()); + } + plan.setPlanPosts(planPostIds); + plan.setPlanPostNames(planPostNames); + //机构 + List planOrgNames = Lists.newArrayList(); + List planOrgIds = Lists.newArrayList(); + if (PlanTypeEnum.ORG_TYPE.getType().equals(plan.getType())) { + UpdateWrapper ew = new UpdateWrapper<>(); + ew.lambda().eq(PlanOrgEntity::getPlanId, entity.getId()); + List list = planOrgService.list(ew); + planOrgIds = list.stream().map(e -> e.getOrgId()).collect(Collectors.toList()); + String orgIds = String.join(",", list.stream().map(e -> String.valueOf(e.getOrgId())).collect(Collectors.toList())); + planOrgNames.addAll(sysClient.getDeptNames(orgIds).getData()); + } + plan.setPlanOrgs(planOrgIds); + plan.setPlanOrgNames(planOrgNames); + //值班班次 /* if(PlanTypeEnum.CLASS_TYPE.getType().equals(plan.getType())){ PlanClassEntity one = planClassService.getOne(Wrappers.lambdaQuery(PlanClassEntity.class).eq(PlanClassEntity::getPlanId, plan.getId()).last(" limit 1 ")); plan.setClassName(dutyClassClient.getClassName(one.getClassId())); plan.setClassId(one.getClassId()); }*/ - //任务 - List taskList = taskService.list(Wrappers.lambdaQuery().eq(TaskEntity::getPlanId,plan.getId())); - List planTaskVO = Lists.newArrayList(); - taskList.forEach(entityTask->{ - planTaskVO.add(PlanTaskListVO.builder().taskId(entityTask.getId()).batchNumber(entityTask.getBatchNumber()).planStartTime(entityTask.getPlanStartTime()).planEndTime(entityTask.getPlanEndTime()).status(entityTask.getStatus()).build()); - }); - plan.setTasks(planTaskVO); - return plan; - } + //任务 + List taskList = taskService.list(Wrappers.lambdaQuery().eq(TaskEntity::getPlanId, plan.getId())); + List planTaskVO = Lists.newArrayList(); + taskList.forEach(entityTask -> { + planTaskVO.add(PlanTaskListVO.builder().taskId(entityTask.getId()).batchNumber(entityTask.getBatchNumber()).planStartTime(entityTask.getPlanStartTime()).planEndTime(entityTask.getPlanEndTime()).status(entityTask.getStatus()).build()); + }); + plan.setTasks(planTaskVO); + return plan; + } } diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/task/controller/TaskRecordController.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/task/controller/TaskRecordController.java index 8c09dd7..cf74287 100644 --- a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/task/controller/TaskRecordController.java +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/task/controller/TaskRecordController.java @@ -5,27 +5,28 @@ package org.springblade.hzinfo_inspect.task.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import org.springblade.core.mp.support.Condition; -import org.springblade.hzinfo_inspect.task.entity.TaskRecordEntity; -import org.springblade.hzinfo_inspect.task.service.ITaskRecordService; -import org.springblade.hzinfo_inspect.task.service.ITaskService; -import org.springblade.hzinfo_inspect.task.vo.TaskListQuery; -import org.springblade.hzinfo_inspect.task.vo.TaskRecordAddVO; -import org.springblade.hzinfo_inspect.task.vo.TaskVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.BeanUtil; +import org.springblade.hzinfo_inspect.task.entity.TaskRecordEntity; +import org.springblade.hzinfo_inspect.task.service.ITaskRecordService; +import org.springblade.hzinfo_inspect.task.service.ITaskService; +import org.springblade.hzinfo_inspect.task.vo.TaskListQuery; +import org.springblade.hzinfo_inspect.task.vo.TaskRecordAddVO; +import org.springblade.hzinfo_inspect.task.vo.TaskVo; import org.springframework.web.bind.annotation.*; import java.util.List; /** * 巡检报备 + * * @author ninglong * */ @@ -36,35 +37,30 @@ import java.util.List; @Slf4j public class TaskRecordController { - private final ITaskService taskService; - private final ITaskRecordService taskRecordService; + private final ITaskService taskService; + private final ITaskRecordService taskRecordService; - @GetMapping("/list") - @ApiOperation(value = "巡检报备列表", notes = "巡检报备列表(只显示未开始)") - public R> getListTaskRecord(TaskListQuery task, Query query) { - IPage pages = Condition.getPage(query); - task.setCurUserId(AuthUtil.getUserId()); - task.setStatus(0); - List list = taskService.getListPage(pages,task); - pages.setRecords(list); - return R.data(pages); - } + @GetMapping("/list") + @ApiOperation(value = "巡检报备列表", notes = "巡检报备列表(只显示未开始)") + public R> getListTaskRecord(TaskListQuery task, Query query) { + IPage pages = Condition.getPage(query); + task.setCurUserId(AuthUtil.getUserId()); + task.setStatus(0); + List list = taskService.getListPage(pages, task); + pages.setRecords(list); + return R.data(pages); + } - /** - * 插入巡检任务报备信息 - * @param itr 巡检任务报备实例 - * @return 结果整型数 - */ @PostMapping("/addTaskRecord") @ApiOperation(value = "巡检任务报备", notes = "巡检任务报备") - public R addTaskRecord(@RequestBody TaskRecordAddVO itr) { - TaskRecordEntity record = taskRecordService.getOne(Wrappers.query().lambda().eq(TaskRecordEntity::getTaskId,itr.getTaskId())); - if(record!=null){ - log.error("该任务已报备,不可重复进行任务报备"); - return R.fail("该任务已报备,不可重复进行任务报备"); - } - record = BeanUtil.copy(itr,TaskRecordEntity.class); - record.setCreator(AuthUtil.getUserId()); + public R addTaskRecord(@RequestBody TaskRecordAddVO itr) { + TaskRecordEntity record = taskRecordService.getOne(Wrappers.query().lambda().eq(TaskRecordEntity::getTaskId, itr.getTaskId())); + if (record != null) { + log.error("该任务已报备,不可重复进行任务报备"); + return R.fail("该任务已报备,不可重复进行任务报备"); + } + record = BeanUtil.copy(itr, TaskRecordEntity.class); + record.setCreator(AuthUtil.getUserId()); boolean res = taskRecordService.addTaskRecord(record); return R.status(res); } diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/task/job/service/TaskJobService.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/task/job/service/TaskJobService.java index a15f345..cf13533 100644 --- a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/task/job/service/TaskJobService.java +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/task/job/service/TaskJobService.java @@ -6,12 +6,22 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.google.common.collect.Lists; +import com.xxl.job.core.log.XxlJobLogger; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springblade.core.log.exception.ServiceException; +import org.springblade.core.tool.utils.CollectionUtil; +import org.springblade.core.tool.utils.Func; +import org.springblade.core.tool.utils.ObjectUtil; import org.springblade.hzinfo_inspect.obj.entity.*; import org.springblade.hzinfo_inspect.obj.services.*; import org.springblade.hzinfo_inspect.plan.PlanContants.PlanCycleEnum; import org.springblade.hzinfo_inspect.plan.PlanContants.PlanTypeEnum; import org.springblade.hzinfo_inspect.plan.entity.*; -import org.springblade.hzinfo_inspect.plan.service.*; +import org.springblade.hzinfo_inspect.plan.service.IPlanObjectTemplateService; +import org.springblade.hzinfo_inspect.plan.service.IPlanOrgService; +import org.springblade.hzinfo_inspect.plan.service.IPlanPositionService; +import org.springblade.hzinfo_inspect.plan.service.IPlanUserService; import org.springblade.hzinfo_inspect.task.TaskContants; import org.springblade.hzinfo_inspect.task.TaskContants.ClaimStatusEnum; import org.springblade.hzinfo_inspect.task.entity.*; @@ -19,13 +29,6 @@ import org.springblade.hzinfo_inspect.task.service.ITaskObjectProjectContentServ import org.springblade.hzinfo_inspect.task.service.ITaskObjectProjectService; import org.springblade.hzinfo_inspect.task.service.ITaskObjectService; import org.springblade.hzinfo_inspect.task.service.ITaskService; -import com.xxl.job.core.log.XxlJobLogger; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springblade.core.log.exception.ServiceException; -import org.springblade.core.tool.utils.CollectionUtil; -import org.springblade.core.tool.utils.Func; -import org.springblade.core.tool.utils.ObjectUtil; import org.springblade.system.user.entity.User; import org.springblade.system.user.feign.IUserClient; import org.springframework.beans.factory.annotation.Autowired; @@ -42,6 +45,7 @@ import java.util.stream.Collectors; /** * 任务派发处理逻辑 + * * @author ninglong * @create 2020-08-26 17:06 */ @@ -85,14 +89,15 @@ public class TaskJobService { // @Autowired // private IDutyMainClient dutyMainClient; - private final String dateSplit = "_"; + private final String dateSplit = "_"; /** * 根据计划用户获取接任务的人 + * * @param planUserId * @param taskId */ - public TaskUserEntity getTaskUser(Long planUserId, Long taskId,Long deptId) { + public TaskUserEntity getTaskUser(Long planUserId, Long taskId, Long deptId) { // public TaskUserEntity getTaskUser(Long planUserId, Long taskId,String tenantId) { TaskUserEntity taskUserEntity = TaskUserEntity.builder().taskId(taskId).userId(planUserId) .claimStatus(ClaimStatusEnum.UN_COLLECT.getStatus()).build(); @@ -103,6 +108,7 @@ public class TaskJobService { /** * 从巡检计划和任务获取信息插入巡检任务对象表以及对应的历史数据表 + * * @param plan 巡检计划实例 * @param task 巡检任务实例 * @return @@ -110,47 +116,47 @@ public class TaskJobService { public String distributeTaskObjs(PlanEntity plan, TaskEntity task) { String result = StringUtils.EMPTY; List taskObjectList = Lists.newArrayList(); - if(PlanTypeEnum.FREE_TYPE.getType().equals(plan.getType())){//自由模式,通过计划找到用户,通过用户找到对象,通过对象找到模板 - List planUserList = planUserService.list(Wrappers.query().lambda().eq(PlanUserEntity::getPlanId,plan.getId())); - for (PlanUserEntity entity:planUserList){ - List objectUserList = objectUserService.list(Wrappers.query().lambda().eq(ObjectUserEntity::getUserId,entity.getUserId())); - for (ObjectUserEntity ou:objectUserList){ - //如果是抢占模式 - List existEntity = taskObjectList.stream().filter(taskObjectEntity -> ou.getObjectId().equals(taskObjectEntity.getObjectId())).collect(Collectors.toList()); - if(ObjectUtil.isNotEmpty(existEntity)){ - break; - } - result = distributeTaskObjs(taskObjectList,task,ou.getObjectId(),ou.getTemplateId()); - if(!result.equals(StringUtils.EMPTY)){ - break; - } + if (PlanTypeEnum.FREE_TYPE.getType().equals(plan.getType())) {//自由模式,通过计划找到用户,通过用户找到对象,通过对象找到模板 + List planUserList = planUserService.list(Wrappers.query().lambda().eq(PlanUserEntity::getPlanId, plan.getId())); + for (PlanUserEntity entity : planUserList) { + List objectUserList = objectUserService.list(Wrappers.query().lambda().eq(ObjectUserEntity::getUserId, entity.getUserId())); + for (ObjectUserEntity ou : objectUserList) { + //如果是抢占模式 + List existEntity = taskObjectList.stream().filter(taskObjectEntity -> ou.getObjectId().equals(taskObjectEntity.getObjectId())).collect(Collectors.toList()); + if (ObjectUtil.isNotEmpty(existEntity)) { + break; + } + result = distributeTaskObjs(taskObjectList, task, ou.getObjectId(), ou.getTemplateId()); + if (!result.equals(StringUtils.EMPTY)) { + break; + } } } - }else{ - List templates = planObjectTemplateService.list(Wrappers.query().lambda().eq(PlanObjectTemplateEntity::getPlanId,plan.getId())); + } else { + List templates = planObjectTemplateService.list(Wrappers.query().lambda().eq(PlanObjectTemplateEntity::getPlanId, plan.getId())); for (PlanObjectTemplateEntity template : templates) { - result = distributeTaskObjs(taskObjectList,task,template.getObjectId(),template.getTemplateId()); - if(!result.equals(StringUtils.EMPTY)){ + result = distributeTaskObjs(taskObjectList, task, template.getObjectId(), template.getTemplateId()); + if (!result.equals(StringUtils.EMPTY)) { break; } } } - if(taskObjectList.size()>0 && result.equals(StringUtils.EMPTY)){ + if (taskObjectList.size() > 0 && result.equals(StringUtils.EMPTY)) { taskObjectService.saveBatch(taskObjectList); } return result; } - private String distributeTaskObjs(List taskObjectList,TaskEntity task,Long objectId,Long templateId){ + private String distributeTaskObjs(List taskObjectList, TaskEntity task, Long objectId, Long templateId) { String result = StringUtils.EMPTY; ObjectEntity io = objectService.getById(objectId); - if(io == null) { - return "巡检对象id="+objectId+"找不到记录"; - } - TemplateEntity templateInfo = templateService.getById(templateId); - if(templateInfo == null) { - return "巡检模板id="+templateId+"找不到记录"; - } + if (io == null) { + return "巡检对象id=" + objectId + "找不到记录"; + } + TemplateEntity templateInfo = templateService.getById(templateId); + if (templateInfo == null) { + return "巡检模板id=" + templateId + "找不到记录"; + } TaskObjectEntity ito = new TaskObjectEntity(); ito.setTaskId(task.getId()); ito.setObjectId(objectId); @@ -166,25 +172,27 @@ public class TaskJobService { // ito.setTenantId(task.getTenantId()); ito.setStatus(TaskContants.StatusEnum.INIT_STATUS.getStatus()); taskObjectList.add(ito); - List projects = templateProjectService.list(Wrappers.query().lambda().eq(TemplateProjectEntity::getTemplateId,templateId)); + List projects = templateProjectService.list(Wrappers.query().lambda().eq(TemplateProjectEntity::getTemplateId, templateId)); for (TemplateProjectEntity project : projects) { result = distributeTaskProjects(task, objectId, project); - if(!result.equals(StringUtils.EMPTY)){ + if (!result.equals(StringUtils.EMPTY)) { break; } } return result; } + /** * 从巡检任务、巡检计划对象模板、巡检模板项目获取信息插入巡检任务项目表以及对应的历史数据表 + * * @param objectId 巡检计划对象模板实例 - * @param project 巡检模板项目实例 + * @param project 巡检模板项目实例 * @return */ private String distributeTaskProjects(TaskEntity task, Long objectId, TemplateProjectEntity project) { String result = StringUtils.EMPTY; ProjectEntity ip = projectService.getById(project.getProjectId()); - if(ip == null) return "巡检项目id="+project.getProjectId()+"找不到记录"; + if (ip == null) return "巡检项目id=" + project.getProjectId() + "找不到记录"; TaskObjectProjectEntity itop = new TaskObjectProjectEntity(); itop.setObjectId(objectId); itop.setProjectId(ip.getId()); @@ -194,14 +202,14 @@ public class TaskJobService { itop.setDescription(ip.getDescription()); itop.setCreateTime(project.getCreateTime()); // itop.setTenantId(task.getTenantId()); - itop.setCreateUser(task.getCreateUser()); - itop.setCreateDept(task.getCreateDept()); - itop.setStatus(TaskContants.StatusEnum.INIT_STATUS.getStatus()); + itop.setCreateUser(task.getCreateUser()); + itop.setCreateDept(task.getCreateDept()); + itop.setStatus(TaskContants.StatusEnum.INIT_STATUS.getStatus()); taskObjectProjectService.save(itop); - List contents = projectContentService.list(Wrappers.query().lambda().eq(ProjectContentEntity::getProjectId,project.getProjectId())); + List contents = projectContentService.list(Wrappers.query().lambda().eq(ProjectContentEntity::getProjectId, project.getProjectId())); for (ProjectContentEntity content : contents) { result = distributeTaskContents(task, objectId, content); - if(!result.equals(StringUtils.EMPTY)){ + if (!result.equals(StringUtils.EMPTY)) { break; } } @@ -210,13 +218,16 @@ public class TaskJobService { /** * 从巡检任务、巡检计划对象模板、巡检项目内容获取信息插入巡检任务内容表以及对应的历史数据表 + * * @param objectId 巡检计划对象模板实例 - * @param content 巡检项目内容实例 + * @param content 巡检项目内容实例 * @return */ private String distributeTaskContents(TaskEntity task, Long objectId, ProjectContentEntity content) { ContentEntity ioc = contentService.getById(content.getContentId()); - if(ioc == null) {return "巡检内容id="+content.getContentId()+"找不到记录";} + if (ioc == null) { + return "巡检内容id=" + content.getContentId() + "找不到记录"; + } TaskObjectProjectContentEntity itopc = new TaskObjectProjectContentEntity(); itopc.setTaskId(task.getId()); itopc.setObjectId(objectId); @@ -229,8 +240,8 @@ public class TaskJobService { itopc.setRecordType(ioc.getRecordType()); itopc.setCreateTime(content.getCreateTime()); // itopc.setTenantId(task.getTenantId()); - itopc.setCreateUser(task.getCreateUser()); - itopc.setCreateDept(task.getCreateDept()); + itopc.setCreateUser(task.getCreateUser()); + itopc.setCreateDept(task.getCreateDept()); itopc.setCheckTypeSon(ioc.getCheckTypeSon()); itopc.setCameraAddr(ioc.getCameraAddr()); itopc.setCameraId(ioc.getCameraId()); @@ -244,64 +255,64 @@ public class TaskJobService { /** * 根据巡检计划返回与计划有关的所有用户 + * * @param plan 巡检计划实例 * @return 计划相关用户集合 */ public List getUsersByPlan(PlanEntity plan) { List res = new LinkedList(); - if(PlanTypeEnum.USER_TYPE.getType().equals(plan.getType()) || PlanTypeEnum.FREE_TYPE.getType().equals(plan.getType())){ + if (PlanTypeEnum.USER_TYPE.getType().equals(plan.getType()) || PlanTypeEnum.FREE_TYPE.getType().equals(plan.getType())) { QueryWrapper planUserQw = new QueryWrapper<>(); planUserQw.lambda().eq(PlanUserEntity::getPlanId, plan.getId()); res.addAll(planUserService.list(planUserQw)); - }else if(PlanTypeEnum.POSITION_TYPE.getType().equals(plan.getType())){ + } else if (PlanTypeEnum.POSITION_TYPE.getType().equals(plan.getType())) { QueryWrapper planPositionEntityQueryWrapper = new QueryWrapper<>(); planPositionEntityQueryWrapper.lambda().eq(PlanPositionEntity::getPlanId, plan.getId()); - planPostionService.list(planPositionEntityQueryWrapper).stream().forEach(entity->{ - //获取该机构下所有用户列表 - List users = new ArrayList<>(); - List positionUsers = userClient.userListByPosition(entity.getPositionId()).getData(); - if(CollectionUtil.isNotEmpty(positionUsers)){ - users = positionUsers.stream().filter(user->user.getCreateDept().toString().contains(entity.getCreateDept().toString())).collect(Collectors.toList()); - } - //List users = userClient.userListByPositionAndDept(entity.getPositionId(), plan.getCreateDept()).getData(); - log.info("岗位信息:" + entity.toString() + "; 获取到的user:{}",users.stream().map(User::getName).collect(Collectors.joining(","))); - for(User u:users){ + planPostionService.list(planPositionEntityQueryWrapper).stream().forEach(entity -> { + //获取该机构下所有用户列表 + List users = new ArrayList<>(); + List positionUsers = userClient.userListByPosition(entity.getPositionId()).getData(); + if (CollectionUtil.isNotEmpty(positionUsers)) { + users = positionUsers.stream().filter(user -> user.getCreateDept().toString().contains(entity.getCreateDept().toString())).collect(Collectors.toList()); + } + //List users = userClient.userListByPositionAndDept(entity.getPositionId(), plan.getCreateDept()).getData(); + log.info("岗位信息:" + entity.toString() + "; 获取到的user:{}", users.stream().map(User::getName).collect(Collectors.joining(","))); + for (User u : users) { res.add(PlanUserEntity.builder().planId(plan.getId()).userId(u.getId()).build()); } }); - }else if(PlanTypeEnum.ORG_TYPE.getType().equals(plan.getType())){ + } else if (PlanTypeEnum.ORG_TYPE.getType().equals(plan.getType())) { QueryWrapper planOrgEntityQueryWrapper = new QueryWrapper<>(); planOrgEntityQueryWrapper.lambda().eq(PlanOrgEntity::getPlanId, plan.getId()); - planOrgService.list(planOrgEntityQueryWrapper).stream().forEach(entity->{ + planOrgService.list(planOrgEntityQueryWrapper).stream().forEach(entity -> { List users = userClient.userListByDeptId(entity.getOrgId()).getData(); - for(User u:users){ + for (User u : users) { res.add(PlanUserEntity.builder().planId(plan.getId()).userId(u.getId()).build()); } }); - }else if(PlanTypeEnum.CLASS_TYPE.getType().equals(plan.getType())){ - log.error("巡检计划为班次时,有单独的处理流程,不应该跑到该分支下面来, plan = " + plan.toString()); - JSONArray timeJsonArray; - if(Func.isNotEmpty(plan.getExecTimeJson())){ - /** 多次计划执行时间 **/ - timeJsonArray = JSON.parseArray(plan.getExecTimeJson()); - } - else{ - throw new ServiceException("巡检计划未设置值班班次: plan = " + plan.toString()); - } - for(int i=0;i ids = mainPerson.getPersons(); - //log.info("--计划为:{};人员ID为:{}--",plan.getName(),ids.stream().map(id->String.valueOf(id)).collect(Collectors.joining(","))); - //plan.setDutyId(mainPerson.getMainId()); + } else if (PlanTypeEnum.CLASS_TYPE.getType().equals(plan.getType())) { + log.error("巡检计划为班次时,有单独的处理流程,不应该跑到该分支下面来, plan = " + plan.toString()); + JSONArray timeJsonArray; + if (Func.isNotEmpty(plan.getExecTimeJson())) { + /** 多次计划执行时间 **/ + timeJsonArray = JSON.parseArray(plan.getExecTimeJson()); + } else { + throw new ServiceException("巡检计划未设置值班班次: plan = " + plan.toString()); + } + for (int i = 0; i < plan.getTaskTimesADay(); i++) { + JSONObject time = timeJsonArray.getJSONObject(i); + plan.setExecStartTime(time.get("execStartTime").toString()); + plan.setExecEndTime(time.get("execEndTime").toString()); + if (time.containsKey("isNextDay")) { + plan.setIsNextDay(time.getBoolean("isNextDay")); + } + //获取值班用户 + if (time.containsKey("classId")) { + DateTimeFormatter dfShort = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + //ImsDutyMainFeignVO mainPerson = dutyMainClient.getMainPerson(time.getLong("classId"), dfShort.format(LocalDate.now())); + //List ids = mainPerson.getPersons(); + //log.info("--计划为:{};人员ID为:{}--",plan.getName(),ids.stream().map(id->String.valueOf(id)).collect(Collectors.joining(","))); + //plan.setDutyId(mainPerson.getMainId()); // if(Func.isNotEmpty(ids)){ // for (Long id : ids) { // res.add(PlanUserEntity.builder().planId(plan.getId()).userId(id).build()); @@ -309,8 +320,8 @@ public class TaskJobService { // } else { // log.error("获取该班次值班人员为空, plan = " + plan.toString()); // } - } - } + } + } /*PlanClassEntity one = planClassService.getOne(Wrappers.lambdaQuery(PlanClassEntity.class).eq(PlanClassEntity::getPlanId, plan.getId()).last(" limit 1 ")); if(Func.isNotEmpty(one)) { DateTimeFormatter dfShort = DateTimeFormatter.ofPattern("yyyy-MM-dd"); @@ -329,79 +340,85 @@ public class TaskJobService { }*/ } //设置租户 - List userResult = res.stream().distinct().map(entity-> { + List userResult = res.stream().distinct().map(entity -> { // entity.setTenantId(plan.getTenantId()); entity.setCreateDept(plan.getCreateDept()); - return entity; - }).collect(Collectors.toList()); + return entity; + }).collect(Collectors.toList()); //res.forEach(entity->entity.setTenantId(plan.getTenantId())); return userResult; } /** * 根据计划信息设置任务信息 - * @param plan 巡检计划实例 + * + * @param plan 巡检计划实例 * @param totalTaskNum 任务数 并发任务有多少个人做任务就生成多少个任务,抢占任务只生成一个 * @return 巡检任务实例 */ - public TaskEntity fillInspectionTask(PlanEntity plan,int totalTaskNum) { - totalTaskNum = plan.getTaskTimesADay() * totalTaskNum; + public TaskEntity fillInspectionTask(PlanEntity plan, int totalTaskNum) { + totalTaskNum = plan.getTaskTimesADay() * totalTaskNum; TaskEntity task = new TaskEntity(); LocalDate now = LocalDate.now(); - DateTimeFormatter dfShort = DateTimeFormatter.ofPattern("yyyy-MM-dd "); - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + DateTimeFormatter dfShort = DateTimeFormatter.ofPattern("yyyy-MM-dd "); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - if(PlanCycleEnum.NEVER_CYCLE.getCycle().equals(plan.getCycle())) { - task.setBatchNumber(now.getYear()+dateSplit+now.getMonthValue()+dateSplit+now.getDayOfMonth() + "N"); - task.setPlanEndTime(LocalDateTime.parse(dfShort.format(plan.getEndTime())+plan.getExecEndTime(), df)); - }else if(PlanCycleEnum.EVERYDAY_CYCLE.getCycle().equals(plan.getCycle())) { - task.setBatchNumber(now.getYear()+dateSplit+now.getMonthValue()+dateSplit+now.getDayOfMonth() +""); - if(Func.isNotEmpty(plan.getIsNextDay()) && plan.getIsNextDay()){ - task.setPlanEndTime(LocalDateTime.parse(dfShort.format(now.plusDays(1L)) + plan.getExecEndTime(), df)); + if (PlanCycleEnum.NEVER_CYCLE.getCycle().equals(plan.getCycle())) { + task.setBatchNumber(now.getYear() + dateSplit + now.getMonthValue() + dateSplit + now.getDayOfMonth() + "N"); + task.setPlanEndTime(LocalDateTime.parse(dfShort.format(plan.getEndTime()) + plan.getExecEndTime(), df)); + } else if (PlanCycleEnum.EVERYDAY_CYCLE.getCycle().equals(plan.getCycle())) { + task.setBatchNumber(now.getYear() + dateSplit + now.getMonthValue() + dateSplit + now.getDayOfMonth() + ""); + if (Func.isNotEmpty(plan.getIsNextDay()) && plan.getIsNextDay()) { + task.setPlanEndTime(LocalDateTime.parse(dfShort.format(now.plusDays(1L)) + plan.getExecEndTime(), df)); } else { - task.setPlanEndTime(LocalDateTime.parse(dfShort.format(now) + plan.getExecEndTime(), df)); - } - }else if(PlanCycleEnum.EVERYWEEK_CYCLE.getCycle().equals(plan.getCycle())) { - WeekFields weekFields = WeekFields.of(DayOfWeek.MONDAY,1); + task.setPlanEndTime(LocalDateTime.parse(dfShort.format(now) + plan.getExecEndTime(), df)); + } + } else if (PlanCycleEnum.EVERYWEEK_CYCLE.getCycle().equals(plan.getCycle())) { + WeekFields weekFields = WeekFields.of(DayOfWeek.MONDAY, 1); int weeks = now.get(weekFields.weekOfYear()); - task.setBatchNumber(now.getYear()+dateSplit+now.getMonthValue() + dateSplit+weeks + "W"); - task.setPlanEndTime(LocalDateTime.parse(dfShort.format(now.plusWeeks(1)) + plan.getExecEndTime(), df)); - }else if(PlanCycleEnum.EVERYMONTH_CYCLE.getCycle().equals(plan.getCycle())) { - task.setBatchNumber(now.getYear()+dateSplit+now.getMonthValue()); - task.setPlanEndTime(LocalDateTime.parse(dfShort.format(now.plusMonths(1))+plan.getExecEndTime(), df)); - }else if(PlanCycleEnum.EVERYQUARTER_CYCLE.getCycle().equals(plan.getCycle())) { - task.setBatchNumber(now.getYear()+dateSplit+now.getMonthValue() + "Q"); - task.setPlanEndTime(LocalDateTime.parse(dfShort.format(now.plusMonths(3)) + plan.getExecEndTime(), df)); - }else if(PlanCycleEnum.EVERYYEAR_CYCLE.getCycle().equals(plan.getCycle())){ - task.setBatchNumber(now.getYear()+""); - task.setPlanEndTime(LocalDateTime.parse(dfShort.format(now.plusYears(1))+plan.getExecEndTime(), df)); + task.setBatchNumber(now.getYear() + dateSplit + now.getMonthValue() + dateSplit + weeks + "W"); + task.setPlanEndTime(LocalDateTime.parse(dfShort.format(now.plusWeeks(1)) + plan.getExecEndTime(), df)); + } else if (PlanCycleEnum.EVERYMONTH_CYCLE.getCycle().equals(plan.getCycle())) { + task.setBatchNumber(now.getYear() + dateSplit + now.getMonthValue()); + task.setPlanEndTime(LocalDateTime.parse(dfShort.format(now.plusMonths(1)) + plan.getExecEndTime(), df)); + } else if (PlanCycleEnum.EVERYQUARTER_CYCLE.getCycle().equals(plan.getCycle())) { + task.setBatchNumber(now.getYear() + dateSplit + now.getMonthValue() + "Q"); + task.setPlanEndTime(LocalDateTime.parse(dfShort.format(now.plusMonths(3)) + plan.getExecEndTime(), df)); + } else if (PlanCycleEnum.EVERYYEAR_CYCLE.getCycle().equals(plan.getCycle())) { + task.setBatchNumber(now.getYear() + ""); + task.setPlanEndTime(LocalDateTime.parse(dfShort.format(now.plusYears(1)) + plan.getExecEndTime(), df)); } task.setDutyId(plan.getDutyId()); task.setPlanId(plan.getId()); task.setPlanName(plan.getName()); task.setType(plan.getType()); task.setCycle(plan.getCycle()); - if(PlanCycleEnum.NEVER_CYCLE.getCycle().equals(plan.getCycle())) { - task.setPlanStartTime(LocalDateTime.parse(dfShort.format(plan.getStartTime()) + plan.getExecStartTime(), df)); - } else { - task.setPlanStartTime(LocalDateTime.parse(dfShort.format(now) + plan.getExecStartTime(), df)); - } + if (PlanCycleEnum.NEVER_CYCLE.getCycle().equals(plan.getCycle())) { + task.setPlanStartTime(LocalDateTime.parse(dfShort.format(plan.getStartTime()) + plan.getExecStartTime(), df)); + } else { + task.setPlanStartTime(LocalDateTime.parse(dfShort.format(now) + plan.getExecStartTime(), df)); + } task.setStatus(Integer.valueOf(TaskContants.TaskStatusEnum.INIT_STATUS.getStatus())); - task.setCreateUser(plan.getCreateUser()); - task.setCreateDept(plan.getCreateDept()); - task.setAutoVideo(plan.getAutoVideo()); + task.setCreateUser(plan.getCreateUser()); + task.setCreateDept(plan.getCreateDept()); + task.setAutoVideo(plan.getAutoVideo()); task.setMethod(plan.getMethod()); task.setEndRemindFlag(true); task.setStartRemindFlag(true); task.setStartRemindTime(task.getPlanStartTime().minusMinutes(plan.getStartRemind())); - task.setEndRemindTime(task.getPlanEndTime().minusMinutes(plan.getEndRemind())); - int taskCount = taskService.count(Wrappers.query().lambda().eq(TaskEntity::getPlanId,task.getPlanId()).eq(TaskEntity::getBatchNumber, task.getBatchNumber())); - XxlJobLogger.log("该计划已生成计划批次:{},数量:{}",task.getBatchNumber(),taskCount); - if(taskCount>=totalTaskNum){ - log.info("计划id={}本周期batchNumber={}的任务已生成",plan.getId(),task.getBatchNumber()); - return null; - } + task.setEndRemindTime(task.getPlanEndTime().minusMinutes(plan.getEndRemind())); + int taskCount = taskService.count(Wrappers.query().lambda().eq(TaskEntity::getPlanId, task.getPlanId()).eq(TaskEntity::getBatchNumber, task.getBatchNumber())); + XxlJobLogger.log("该计划已生成计划批次:{},数量:{}", task.getBatchNumber(), taskCount); + if (taskCount >= totalTaskNum) { + log.info("计划id={}本周期batchNumber={}的任务已生成", plan.getId(), task.getBatchNumber()); + return null; + } + // 自动报备 + task.setKeepOnRecord(TaskContants.keepOnRecordEnum.yes.getType()); + task.setStartTime(LocalDateTime.now()); + task.setStatus(Integer.valueOf(TaskContants.TaskStatusEnum.UNDERWAY_STATUS.getStatus())); taskService.save(task); + return task; } diff --git a/hnac-framework-boot/src/main/resources/application-local.yml b/hnac-framework-boot/src/main/resources/application-local.yml index 168760f..05c71ad 100644 --- a/hnac-framework-boot/src/main/resources/application-local.yml +++ b/hnac-framework-boot/src/main/resources/application-local.yml @@ -12,7 +12,7 @@ spring: password: 1qaz2WSX! slave: url: jdbc:mysql://192.168.1.58:3576/hzinfo_ris_pxhd?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&allowMultiQueries=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true - username: root + username: hzinfo password: 1qaz2WSX! tdengine: db-type: postgresql diff --git a/hnac-framework-boot/src/main/resources/log/logback-local.xml b/hnac-framework-boot/src/main/resources/log/logback-local.xml new file mode 100644 index 0000000..17681b5 --- /dev/null +++ b/hnac-framework-boot/src/main/resources/log/logback-local.xml @@ -0,0 +1,308 @@ + + + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf8 + + + + + + + + + log/info.log + + + log/info/info-%d{yyyy-MM-dd_HH}.%i.log + + 48 + + 20MB + 500MB + true + + + ${log.pattern} + + + + INFO + ACCEPT + DENY + + + + + + log/error.log + + + log/error/error-%d{yyyy-MM-dd_HH}.%i.log + + 120 + + 20MB + 500MB + true + + + ${log.pattern} + + + + ERROR + ACCEPT + DENY + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + INFO + ACCEPT + DENY + + + log/data/yc-%d{yyyy-MM-dd_HH}.log + 240 + 40GB + true + + %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n + + + + + INFO + ACCEPT + DENY + + + log/data/yc_v4-%d{yyyy-MM-dd_HH}.log + 240 + 40GB + true + + %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n + + + + + INFO + ACCEPT + DENY + + + log/data/yx-%d{yyyy-MM-dd_HH}.log + 240 + 40GB + true + + %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n + + + + + INFO + ACCEPT + DENY + + + log/data/yx_v4-%d{yyyy-MM-dd_HH}.log + 240 + 40GB + true + + %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n + + + + + INFO + ACCEPT + DENY + + + log/data/dd_v4-%d{yyyy-MM-dd_HH}.log + 240 + 40GB + true + + %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n + + + + + INFO + ACCEPT + DENY + + + log/data/soe-%d{yyyy-MM-dd_HH}.log + 240 + 40GB + true + + %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n + + + + + INFO + ACCEPT + DENY + + + log/data/soe_v4-%d{yyyy-MM-dd_HH}.log + 240 + 40GB + true + + %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n + + + + + INFO + ACCEPT + DENY + + + log/data/model-%d{yyyy-MM-dd_HH}.log + 240 + 40GB + true + + %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n + + + + + INFO + ACCEPT + DENY + + + log/data/model_v4-%d{yyyy-MM-dd_HH}.log + 240 + 40GB + true + + %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n + + + + + INFO + ACCEPT + DENY + + + log/data/device-%d{yyyy-MM-dd_HH}.log + 240 + 40GB + true + + %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hnac-framework-boot/src/main/resources/log/logback-test.xml b/hnac-framework-boot/src/main/resources/log/logback-test.xml deleted file mode 100644 index 17681b5..0000000 --- a/hnac-framework-boot/src/main/resources/log/logback-test.xml +++ /dev/null @@ -1,308 +0,0 @@ - - - - - - - - - - - - - - - ${CONSOLE_LOG_PATTERN} - utf8 - - - - - - - - - log/info.log - - - log/info/info-%d{yyyy-MM-dd_HH}.%i.log - - 48 - - 20MB - 500MB - true - - - ${log.pattern} - - - - INFO - ACCEPT - DENY - - - - - - log/error.log - - - log/error/error-%d{yyyy-MM-dd_HH}.%i.log - - 120 - - 20MB - 500MB - true - - - ${log.pattern} - - - - ERROR - ACCEPT - DENY - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - INFO - ACCEPT - DENY - - - log/data/yc-%d{yyyy-MM-dd_HH}.log - 240 - 40GB - true - - %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n - - - - - INFO - ACCEPT - DENY - - - log/data/yc_v4-%d{yyyy-MM-dd_HH}.log - 240 - 40GB - true - - %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n - - - - - INFO - ACCEPT - DENY - - - log/data/yx-%d{yyyy-MM-dd_HH}.log - 240 - 40GB - true - - %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n - - - - - INFO - ACCEPT - DENY - - - log/data/yx_v4-%d{yyyy-MM-dd_HH}.log - 240 - 40GB - true - - %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n - - - - - INFO - ACCEPT - DENY - - - log/data/dd_v4-%d{yyyy-MM-dd_HH}.log - 240 - 40GB - true - - %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n - - - - - INFO - ACCEPT - DENY - - - log/data/soe-%d{yyyy-MM-dd_HH}.log - 240 - 40GB - true - - %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n - - - - - INFO - ACCEPT - DENY - - - log/data/soe_v4-%d{yyyy-MM-dd_HH}.log - 240 - 40GB - true - - %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n - - - - - INFO - ACCEPT - DENY - - - log/data/model-%d{yyyy-MM-dd_HH}.log - 240 - 40GB - true - - %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n - - - - - INFO - ACCEPT - DENY - - - log/data/model_v4-%d{yyyy-MM-dd_HH}.log - 240 - 40GB - true - - %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n - - - - - INFO - ACCEPT - DENY - - - log/data/device-%d{yyyy-MM-dd_HH}.log - 240 - 40GB - true - - %d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file