|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
package com.hnac.hzims.operational.maintenance.service.impl; |
|
|
|
|
|
|
|
|
|
import cn.hutool.core.stream.CollectorUtil; |
|
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
|
import com.alibaba.fastjson.TypeReference; |
|
|
|
@ -18,6 +19,7 @@ import com.hnac.hzims.operational.duty.entity.ImsDutyMainEntity;
|
|
|
|
|
import com.hnac.hzims.operational.duty.service.IImsDutyMainService; |
|
|
|
|
import com.hnac.hzims.operational.maintenance.entity.OperMaintenancePlanEntity; |
|
|
|
|
import com.hnac.hzims.operational.maintenance.entity.OperMaintenanceTaskEntity; |
|
|
|
|
import com.hnac.hzims.operational.maintenance.scheduled.MaintenanceTaskSchedule; |
|
|
|
|
import com.hnac.hzims.operational.maintenance.service.IOperMaintenancePlanService; |
|
|
|
|
import com.hnac.hzims.operational.maintenance.service.IOperMaintenanceTaskService; |
|
|
|
|
import com.hnac.hzims.operational.maintenance.service.MaintenanceService; |
|
|
|
@ -40,11 +42,9 @@ import org.springframework.beans.BeanUtils;
|
|
|
|
|
import org.springframework.jdbc.datasource.DataSourceTransactionManager; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
import org.springframework.util.Assert; |
|
|
|
|
|
|
|
|
|
import java.time.Instant; |
|
|
|
|
import java.time.LocalDate; |
|
|
|
|
import java.time.LocalDateTime; |
|
|
|
|
import java.time.ZoneId; |
|
|
|
|
import java.time.*; |
|
|
|
|
import java.time.format.DateTimeFormatter; |
|
|
|
|
import java.util.*; |
|
|
|
|
import java.util.concurrent.ThreadPoolExecutor; |
|
|
|
@ -72,12 +72,9 @@ public class MaintenanceServiceImpl implements MaintenanceService {
|
|
|
|
|
private final List<TemplateService> templateService; |
|
|
|
|
private final IFlowClient flowClient; |
|
|
|
|
private final ISysClient sysClient; |
|
|
|
|
|
|
|
|
|
private final MaintenanceTaskSchedule taskSchedule; |
|
|
|
|
private final ThreadPoolExecutor executor; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final DataSourceTransactionManager dataSourceTransactionManager; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 日常维护生成任务 |
|
|
|
|
* |
|
|
|
@ -87,33 +84,16 @@ public class MaintenanceServiceImpl implements MaintenanceService {
|
|
|
|
|
// @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void createTask(List<String> ids) { |
|
|
|
|
try { |
|
|
|
|
//获取日常维护计划
|
|
|
|
|
LambdaQueryWrapper<OperMaintenancePlanEntity> planEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
planEntityLambdaQueryWrapper.in(BaseEntity::getId, ids); |
|
|
|
|
List<OperMaintenancePlanEntity> planEntities = maintenancePlanService.list(planEntityLambdaQueryWrapper); |
|
|
|
|
//筛选当月没生成任务的计划
|
|
|
|
|
List<OperMaintenancePlanEntity> finalPlanEntities = planEntities.stream(). |
|
|
|
|
filter(planEntity -> ObjectUtil.isEmpty(planEntity.getCreateTaskTime()) || |
|
|
|
|
!DateUtil.judgeSameDay(DateUtil.DateToLocalDateTime(planEntity.getCreateTaskTime()), LocalDate.now())) |
|
|
|
|
LambdaQueryWrapper<OperMaintenancePlanEntity> wrapper = Wrappers.<OperMaintenancePlanEntity>lambdaQuery() |
|
|
|
|
.in(OperMaintenancePlanEntity::getId, ids); |
|
|
|
|
List<OperMaintenancePlanEntity> planList = maintenancePlanService.list(wrapper); |
|
|
|
|
LocalDateTime minDate = LocalDateTime.of(LocalDate.now(), LocalTime.MIN); |
|
|
|
|
List<OperMaintenancePlanEntity> generatePlanList = planList.stream().filter(plan -> Func.isEmpty(plan.getCreateTaskTime()) || minDate.isAfter(DateUtil.DateToLocalDateTime(plan.getCreateTaskTime()))) |
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
if (CollectionUtil.isEmpty(finalPlanEntities)) { |
|
|
|
|
Assert.isTrue(CollectionUtil.isNotEmpty(generatePlanList), () -> { |
|
|
|
|
throw new ServiceException("所选计划当天已生成任务"); |
|
|
|
|
} |
|
|
|
|
for (OperMaintenancePlanEntity finalPlanEntity : finalPlanEntities) { |
|
|
|
|
// 通过计划生成任务
|
|
|
|
|
Boolean taskByPlan = this.createTaskByPlan(finalPlanEntity); |
|
|
|
|
if (taskByPlan) { |
|
|
|
|
//更新任务派发时间
|
|
|
|
|
LambdaUpdateWrapper<OperMaintenancePlanEntity> planEntityLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); |
|
|
|
|
planEntityLambdaUpdateWrapper.set(OperMaintenancePlanEntity::getCreateTaskTime, new Date()); |
|
|
|
|
planEntityLambdaUpdateWrapper.eq(OperMaintenancePlanEntity::getId, finalPlanEntity.getId()); |
|
|
|
|
boolean update = maintenancePlanService.update(planEntityLambdaUpdateWrapper); |
|
|
|
|
if (!update) { |
|
|
|
|
log.error("maintenance:generateTask 更新任务派发失败"); |
|
|
|
|
throw new ServiceException("更新任务派发失败"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
generatePlanList.forEach(plan -> taskSchedule.generateTaskByPlan(plan)); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
} |
|
|
|
@ -316,6 +296,7 @@ public class MaintenanceServiceImpl implements MaintenanceService {
|
|
|
|
|
* @param finalPlanEntity |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
@Deprecated |
|
|
|
|
// @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public Long fillTask(OperMaintenanceTaskEntity taskEntity, OperMaintenancePlanEntity finalPlanEntity, Boolean flag) { |
|
|
|
|
// DefaultTransactionDefinition = new DefaultTransactionDefinition();
|
|
|
|
|