Browse Source

# 解决日常维护任务生成失败问题

zhongwei
haungxing 1 year ago
parent
commit
f6d3a26ec2
  1. 22
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/scheduled/MaintenanceTaskCreateTask.java
  2. 40
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/service/impl/MaintenanceServiceImpl.java

22
hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/scheduled/MaintenanceTaskCreateTask.java

@ -114,20 +114,18 @@ public class MaintenanceTaskCreateTask {
* @return * @return
*/ */
public void generateTaskByPlan(OperMaintenancePlanEntity planEntity,Boolean flag) { public void generateTaskByPlan(OperMaintenancePlanEntity planEntity,Boolean flag) {
threadPoolExecutor.execute(() -> { OperMaintenanceTaskEntity taskEntity = BeanUtil.copy(planEntity,OperMaintenanceTaskEntity.class);
OperMaintenanceTaskEntity taskEntity = BeanUtil.copy(planEntity,OperMaintenanceTaskEntity.class); //拆分设备 每个设备生成一条任务
//拆分设备 每个设备生成一条任务 if(StringUtil.isNotBlank(planEntity.getEmCode())){
if(StringUtil.isNotBlank(planEntity.getEmCode())){ List<String> emCodeList = Arrays.asList(planEntity.getEmCode().split(","));
List<String> emCodeList = Arrays.asList(planEntity.getEmCode().split(",")); for(String emCode : emCodeList){
for(String emCode : emCodeList){ taskEntity.setEmCode(emCode);
taskEntity.setEmCode(emCode);
maintenanceService.fillTask(taskEntity,planEntity,flag);
}
}
else {
maintenanceService.fillTask(taskEntity,planEntity,flag); maintenanceService.fillTask(taskEntity,planEntity,flag);
} }
}); }
else {
maintenanceService.fillTask(taskEntity,planEntity,flag);
}
} }
/** /**

40
hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/service/impl/MaintenanceServiceImpl.java

@ -6,6 +6,7 @@ import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.hnac.hzims.common.utils.DateUtil; import com.hnac.hzims.common.utils.DateUtil;
import com.hnac.hzims.message.MessageConstants; import com.hnac.hzims.message.MessageConstants;
@ -288,10 +289,11 @@ public class MaintenanceServiceImpl implements MaintenanceService {
* @param taskEntity * @param taskEntity
* @param finalPlanEntity * @param finalPlanEntity
*/ */
@Override
public void fillTask(OperMaintenanceTaskEntity taskEntity, OperMaintenancePlanEntity finalPlanEntity,Boolean flag) { public void fillTask(OperMaintenanceTaskEntity taskEntity, OperMaintenancePlanEntity finalPlanEntity,Boolean flag) {
DefaultTransactionDefinition defaultTransactionDefinition = new DefaultTransactionDefinition(); // DefaultTransactionDefinition = new DefaultTransactionDefinition();
defaultTransactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); // defaultTransactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
TransactionStatus transaction = dataSourceTransactionManager.getTransaction(defaultTransactionDefinition); // TransactionStatus transaction = dataSourceTransactionManager.getTransaction(defaultTransactionDefinition);
taskEntity.setId(null); taskEntity.setId(null);
taskEntity.setCreateTime(new Date()); taskEntity.setCreateTime(new Date());
taskEntity.setUpdateTime(new Date()); taskEntity.setUpdateTime(new Date());
@ -322,27 +324,21 @@ public class MaintenanceServiceImpl implements MaintenanceService {
} }
} }
taskService.save(taskEntity); taskService.save(taskEntity);
dataSourceTransactionManager.commit(transaction); // dataSourceTransactionManager.commit(transaction);
//启动流程 //启动流程
String processInstanceId = this.startProcess(finalPlanEntity.getProcDefId(), taskEntity,flag); String processInstanceId = this.startProcess(finalPlanEntity.getProcDefId(), taskEntity,flag);
//推送消息 LambdaUpdateWrapper<OperMaintenanceTaskEntity> taskQueryWrapper = Wrappers.<OperMaintenanceTaskEntity>lambdaUpdate()
CompletableFuture<Void> operMaintenanceTaskEntityCompletableFuture = .set(OperMaintenanceTaskEntity::getProcessInstanceId, processInstanceId)
CompletableFuture.runAsync(() -> { .eq(OperMaintenanceTaskEntity::getId, taskEntity.getId());
taskEntity.setProcessInstanceId(processInstanceId); taskService.update(taskQueryWrapper);
taskService.updateById(taskEntity); LambdaUpdateWrapper<OperMaintenancePlanEntity> planQueryWrapper = Wrappers.<OperMaintenancePlanEntity>lambdaUpdate()
finalPlanEntity.setCreateTaskTime(new Date()); .set(OperMaintenancePlanEntity::getCreateTaskTime, new Date())
maintenancePlanService.updateById(finalPlanEntity); .eq(OperMaintenancePlanEntity::getId, finalPlanEntity.getId());
OperMaintenanceTaskEntity maintenanceTask = taskService.getById(taskEntity.getId()); maintenancePlanService.update(planQueryWrapper);
//推送消息 executor.execute(() -> {
this.pushTaskMessage(maintenanceTask); OperMaintenanceTaskEntity maintenanceTask = taskService.getById(taskEntity.getId());
}, executor); this.pushTaskMessage(maintenanceTask);
//启动队列 });
try {
CompletableFuture.allOf(operMaintenanceTaskEntityCompletableFuture).get();
} catch (Exception e) {
e.printStackTrace();
}
} }

Loading…
Cancel
Save