|
|
|
|
@ -3,7 +3,6 @@ package org.springblade.plugin.workbench.service.impl; |
|
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
|
import liquibase.pro.packaged.E; |
|
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
|
import lombok.NonNull; |
|
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
|
@ -43,13 +42,18 @@ import org.springblade.plugin.workbench.service.IAutoStartModelService; |
|
|
|
|
import org.springblade.plugin.workbench.vo.AutoStartModelVO; |
|
|
|
|
import org.springblade.plugin.workflow.core.utils.WfTaskUtil; |
|
|
|
|
import org.springblade.system.cache.DictBizCache; |
|
|
|
|
import org.springblade.system.cache.DictCache; |
|
|
|
|
import org.springblade.system.cache.SysCache; |
|
|
|
|
import org.springblade.system.entity.Dept; |
|
|
|
|
import org.springblade.system.entity.Dict; |
|
|
|
|
import org.springblade.system.entity.DictBiz; |
|
|
|
|
import org.springblade.system.feign.ISysClient; |
|
|
|
|
import org.springblade.system.user.cache.UserCache; |
|
|
|
|
import org.springblade.system.user.entity.User; |
|
|
|
|
import org.springframework.scheduling.annotation.Async; |
|
|
|
|
import org.springframework.stereotype.Component; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
|
import javax.validation.constraints.NotEmpty; |
|
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
|
@ -82,7 +86,6 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
private final IWorkOrderService workOrderService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public List<Map<String, Object>> bladeManMadeVariabList() { |
|
|
|
|
LambdaQueryWrapper<AutoStartModel> queryWrapper = Wrappers.lambdaQuery(); |
|
|
|
|
@ -285,7 +288,13 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 重复任务生成工单并更新重复任务的元数据 |
|
|
|
|
* @param processinstanceId |
|
|
|
|
* @param variables |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
public void updateAutoStartModel(String processinstanceId,Map<String,Object> variables){ |
|
|
|
|
try{ |
|
|
|
|
Thread.sleep(200); |
|
|
|
|
@ -293,92 +302,58 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//查询AutoStartModel status = 1 isBreak = 0的数据
|
|
|
|
|
//查询AutoStartModel status = 10 isBreak = 0的数据
|
|
|
|
|
LambdaQueryWrapper<AutoStartModel> autoStartModelWrapper = Wrappers.lambdaQuery(); |
|
|
|
|
autoStartModelWrapper.eq(AutoStartModel::getProcessInstanceId,processinstanceId).eq(AutoStartModel::getIsBreak,0); |
|
|
|
|
autoStartModelWrapper.eq(AutoStartModel::getProcessInstanceId,processinstanceId).eq(AutoStartModel::getIsBreak,0) |
|
|
|
|
.ne(AutoStartModel::getNextFlag,0).eq(AutoStartModel::getStatus,1); |
|
|
|
|
AutoStartModel autoStartModel = baseMapper.selectOne(autoStartModelWrapper); |
|
|
|
|
Date qiwangwanchengshijian; |
|
|
|
|
if(Func.isNotEmpty(autoStartModel)){ |
|
|
|
|
autoStartModel.setStatus(10); |
|
|
|
|
|
|
|
|
|
autoStartModel.setManagement(Long.valueOf(variables.get("guanlibumen").toString())); |
|
|
|
|
|
|
|
|
|
autoStartModel.setTaskParent(Long.valueOf(variables.get("renwufulei").toString())); |
|
|
|
|
|
|
|
|
|
autoStartModel.setTaskType(Long.valueOf(variables.get("renwuzhonglei").toString())); |
|
|
|
|
|
|
|
|
|
autoStartModel.setTaskLevel(Long.valueOf(variables.get("renwudengji").toString())); |
|
|
|
|
|
|
|
|
|
autoStartModel.setOperateSys(Long.valueOf(variables.get("xitongmingchengshujuku").toString())); |
|
|
|
|
|
|
|
|
|
autoStartModel.setOperateModule(Long.valueOf(variables.get("xitongmokuaishujubiao").toString())); |
|
|
|
|
|
|
|
|
|
autoStartModel.setRepeatMode(Long.valueOf(variables.get("chongfumoshi").toString())); |
|
|
|
|
|
|
|
|
|
qiwangwanchengshijian = DateUtil.parse(variables.get("qiwangwanchengshijian").toString(),"yyyy-MM-dd HH:mm:ss"); |
|
|
|
|
|
|
|
|
|
if(Func.isNotEmpty(autoStartModel)){ |
|
|
|
|
//生成工单
|
|
|
|
|
//this.newWorkOrder(autoStartModel);
|
|
|
|
|
|
|
|
|
|
//获取工作流的开始时间
|
|
|
|
|
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processinstanceId).singleResult(); |
|
|
|
|
Date startTime = historicProcessInstance.getStartTime(); |
|
|
|
|
// Date nextStartTime;
|
|
|
|
|
// Date nextEndTime;
|
|
|
|
|
// //获取任务重复模式
|
|
|
|
|
// Long repeatMode = autoStartModel.getRepeatMode();
|
|
|
|
|
// System.out.println(Long.valueOf(RepeatEnum.每周.getCode()));
|
|
|
|
|
// System.out.println(repeatMode);
|
|
|
|
|
// if(StringUtils.equals(RepeatEnum.每周.getCode(),repeatMode.toString())){
|
|
|
|
|
// nextStartTime = DateUtil.plusWeeks(startTime,1);
|
|
|
|
|
// nextEndTime = DateUtil.plusWeeks(qiwangwanchengshijian,1);
|
|
|
|
|
// }else if(StringUtils.equals(RepeatEnum.每月.getCode(),repeatMode.toString())){
|
|
|
|
|
// nextStartTime = DateUtil.plusMonths(startTime,1);
|
|
|
|
|
// nextEndTime = DateUtil.plusMonths(qiwangwanchengshijian,1);
|
|
|
|
|
// }else if(StringUtils.equals(RepeatEnum.每季度.getCode(),repeatMode.toString())){
|
|
|
|
|
// nextStartTime = DateUtil.plusMonths(startTime,3);
|
|
|
|
|
// nextEndTime = DateUtil.plusMonths(qiwangwanchengshijian,3);
|
|
|
|
|
// }else if(StringUtils.equals(RepeatEnum.每天.getCode(),repeatMode.toString())){
|
|
|
|
|
// nextStartTime = DateUtil.plusDays(startTime,1);
|
|
|
|
|
// nextEndTime = DateUtil.plusDays(qiwangwanchengshijian,1);
|
|
|
|
|
// }else if(StringUtils.equals(RepeatEnum.每分钟.getCode(),repeatMode.toString())){
|
|
|
|
|
// nextStartTime = DateUtil.plusMinutes(startTime,1);
|
|
|
|
|
// nextEndTime = DateUtil.plusMinutes(qiwangwanchengshijian,1);
|
|
|
|
|
// }
|
|
|
|
|
// else{
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
//还要自动生成work_order,所以以本次的信息为依据,auto_start_model nextFlag = 1 ,表示已经生成工单了
|
|
|
|
|
autoStartModel.setNextStartTime(startTime); |
|
|
|
|
autoStartModel.setNextEndTime(qiwangwanchengshijian); |
|
|
|
|
autoStartModel.setNextFlag(1); |
|
|
|
|
//更新autostartModel,使该条记录可以重复执行
|
|
|
|
|
// autoStartModel.setNextFlag(1);
|
|
|
|
|
autoStartModel.setStatus(10); |
|
|
|
|
baseMapper.updateById(autoStartModel); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//生成工单
|
|
|
|
|
WorkOrder workOrder = new WorkOrder(); |
|
|
|
|
workOrder.setProcessInstanceId(autoStartModel.getProcessInstanceId()); |
|
|
|
|
workOrder.setTenantId(autoStartModel.getTenantId()); |
|
|
|
|
workOrder.setApplyUser(autoStartModel.getApplyUser().toString()); |
|
|
|
|
workOrder.setMaintenanceCompany(autoStartModel.getMaintenanceCompany().toString()); |
|
|
|
|
workOrder.setManagement(autoStartModel.getManagement().toString()); |
|
|
|
|
workOrder.setTaskParent(autoStartModel.getTaskParent().toString()); |
|
|
|
|
workOrder.setTaskType(autoStartModel.getTaskType().toString()); |
|
|
|
|
workOrder.setTaskLevel(autoStartModel.getTaskLevel().toString()); |
|
|
|
|
workOrder.setRepeatMode(autoStartModel.getRepeatMode().toString()); |
|
|
|
|
workOrder.setType(autoStartModel.getType()); |
|
|
|
|
workOrder.setOperateSys(autoStartModel.getOperateSys().toString()); |
|
|
|
|
workOrder.setOperateModule(autoStartModel.getOperateModule().toString()); |
|
|
|
|
workOrder.setUploadRecord(autoStartModel.getUploadRecord()); |
|
|
|
|
workOrder.setExpectedCompletionTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(qiwangwanchengshijian)); |
|
|
|
|
workOrder.setIsFinish(0); |
|
|
|
|
//如果是运维公司发起的日常任务(普通),生成工单,并标记为已完成
|
|
|
|
|
if(StringUtils.equals(autoStartModel.getApplyRole(),"运维公司") && StringUtils.equals(autoStartModel.getTaskLevel().toString(),"1625035000825049090")){ |
|
|
|
|
workOrder.setIsFinish(1); |
|
|
|
|
workOrder.setFinishTime(new Date()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
workOrderService.save(workOrder); |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 不重复任务直接生成工单 |
|
|
|
|
* @param processInstanceId |
|
|
|
|
* @param variables |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public void newWorkOrder(String processInstanceId,Map<String,Object> variables){ |
|
|
|
|
|
|
|
|
|
WorkOrder workOrder = new WorkOrder(); |
|
|
|
|
workOrder.setUploadRecord(JSON.toJSONString(variables.get("uploadrecord"))); |
|
|
|
|
workOrder.setOperateSys(variables.get("xitongmingchengshujuku").toString()); |
|
|
|
|
workOrder.setOperateModule(variables.get("xitongmokuaishujubiao").toString()); |
|
|
|
|
workOrder.setType(Integer.parseInt(variables.get("type").toString())); |
|
|
|
|
workOrder.setTaskParent(variables.get("renwufulei").toString()); |
|
|
|
|
workOrder.setTaskType(variables.get("renwuzhonglei").toString()); |
|
|
|
|
workOrder.setTaskLevel(variables.get("renwudengji").toString()); |
|
|
|
|
workOrder.setApplyUser(variables.get("applyUser").toString()); |
|
|
|
|
workOrder.setOperateSys(variables.get("xitongmingchengshujuku").toString()); |
|
|
|
|
workOrder.setOperateModule(variables.get("xitongmokuaishujubiao").toString()); |
|
|
|
|
workOrder.setApplyUser(variables.get("applyUser").toString()); |
|
|
|
|
workOrder.setManagement(variables.get("guanlibumen").toString()); |
|
|
|
|
workOrder.setMaintenanceCompany(variables.get("yunweigongsi").toString()); |
|
|
|
|
workOrder.setTenantId(WfTaskUtil.getTenantId()); |
|
|
|
|
workOrder.setProcessInstanceId(processInstanceId); |
|
|
|
|
workOrder.setExpectedCompletionTime(variables.get("qiwangwanchengshijian").toString()); |
|
|
|
|
//如果是运维公司发起的日常任务(普通),生成工单,并标记为已完成
|
|
|
|
|
User applyUser = UserCache.getUser(Long.valueOf(variables.get("applyUser").toString())); |
|
|
|
|
String roleId = applyUser.getRoleId(); |
|
|
|
|
|
|
|
|
|
if(StringUtils.equals(roleId,"1623514957507272705") && StringUtils.equals(variables.get("renwudengji").toString(),"1625035000825049090")){ |
|
|
|
|
workOrder.setIsFinish(1); |
|
|
|
|
workOrder.setFinishTime(new Date()); |
|
|
|
|
} |
|
|
|
|
workOrderService.save(workOrder); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
@ -387,10 +362,14 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
AutoStartModel autoStartModel = new AutoStartModel(); |
|
|
|
|
autoStartModel.setProcessInstanceId(processinstanceId); |
|
|
|
|
HistoricProcessInstance processInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processinstanceId).singleResult(); |
|
|
|
|
Date startTime = processInstance.getStartTime(); |
|
|
|
|
Date processStartTime = processInstance.getStartTime(); |
|
|
|
|
String chongfumoshi = variables.get("chongfumoshi") == null ? "" : variables.get("chongfumoshi").toString(); |
|
|
|
|
//Date nextStartTime = this.nextDate(processStartTime,chongfumoshi);
|
|
|
|
|
autoStartModel.setNextStartTime(DateUtil.now()); |
|
|
|
|
Date qiwangwanchengshijian = DateUtil.parse(variables.get("qiwangwanchengshijian").toString(), "yyyy-MM-dd HH:mm:ss"); |
|
|
|
|
// Duration between = DateUtil.between(startTime, qiwangwanchengshijian);
|
|
|
|
|
// autoStartModel.setProcessSeconds(between.getSeconds());
|
|
|
|
|
//Date nextEndTime = this.nextDate(qiwangwanchengshijian,chongfumoshi);
|
|
|
|
|
autoStartModel.setNextEndTime(qiwangwanchengshijian); |
|
|
|
|
autoStartModel.setNextFlag(0); |
|
|
|
|
autoStartModel.setApplyUser(Long.valueOf(variables.get("applyUser").toString())); |
|
|
|
|
autoStartModel.setApplyRole(variables.get("createRole").toString()); |
|
|
|
|
autoStartModel.setMaintenanceCompany(Long.valueOf(variables.get("yunweigongsi").toString())); |
|
|
|
|
@ -402,16 +381,59 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
autoStartModel.setType(Integer.parseInt(variables.get("type").toString())); |
|
|
|
|
autoStartModel.setOperateSys(Long.valueOf(variables.get("xitongmingchengshujuku").toString())); |
|
|
|
|
autoStartModel.setOperateModule(Long.valueOf(variables.get("xitongmokuaishujubiao").toString())); |
|
|
|
|
autoStartModel.setCreateTime(processInstance.getStartTime()); |
|
|
|
|
autoStartModel.setIsDeleted(0); |
|
|
|
|
autoStartModel.setUploadRecord(JSON.toJSONString(variables.get("uploadrecord"))); |
|
|
|
|
String deptId = AuthUtil.getDeptId(); |
|
|
|
|
Long userId = AuthUtil.getUser().getUserId(); |
|
|
|
|
|
|
|
|
|
autoStartModel.setCreateUser(userId); |
|
|
|
|
autoStartModel.setCreateDept(Long.valueOf(deptId)); |
|
|
|
|
autoStartModel.setCreateTime(DateUtil.now()); |
|
|
|
|
autoStartModel.setStatus(10); |
|
|
|
|
baseMapper.insert(autoStartModel); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private Date nextDate(Date startTime, String repeatMode){ |
|
|
|
|
Date endTime; |
|
|
|
|
if(StringUtils.equals(RepeatEnum.每周.getCode(),repeatMode)){ |
|
|
|
|
endTime = DateUtil.plusWeeks(startTime,1); |
|
|
|
|
}else if(StringUtils.equals(RepeatEnum.每月.getCode(),repeatMode)){ |
|
|
|
|
endTime = DateUtil.plusMonths(startTime,1); |
|
|
|
|
}else if(StringUtils.equals(RepeatEnum.每季度.getCode(),repeatMode)){ |
|
|
|
|
endTime = DateUtil.plusMonths(startTime,3); |
|
|
|
|
}else if(StringUtils.equals(RepeatEnum.每分钟.getCode(),repeatMode)){ |
|
|
|
|
endTime = DateUtil.plusMinutes(startTime,1); |
|
|
|
|
}else{ |
|
|
|
|
endTime = startTime; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return endTime; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void newWorkOrder(AutoStartModel autoStartModel){ |
|
|
|
|
//生成工单
|
|
|
|
|
WorkOrder workOrder = new WorkOrder(); |
|
|
|
|
workOrder.setProcessInstanceId(autoStartModel.getProcessInstanceId()); |
|
|
|
|
workOrder.setTenantId(autoStartModel.getTenantId()); |
|
|
|
|
workOrder.setApplyUser(autoStartModel.getApplyUser().toString()); |
|
|
|
|
workOrder.setMaintenanceCompany(autoStartModel.getMaintenanceCompany().toString()); |
|
|
|
|
workOrder.setManagement(autoStartModel.getManagement().toString()); |
|
|
|
|
workOrder.setTaskParent(autoStartModel.getTaskParent().toString()); |
|
|
|
|
workOrder.setTaskType(autoStartModel.getTaskType().toString()); |
|
|
|
|
workOrder.setTaskLevel(autoStartModel.getTaskLevel().toString()); |
|
|
|
|
workOrder.setRepeatMode(autoStartModel.getRepeatMode().toString()); |
|
|
|
|
workOrder.setType(autoStartModel.getType()); |
|
|
|
|
workOrder.setOperateSys(autoStartModel.getOperateSys().toString()); |
|
|
|
|
workOrder.setOperateModule(autoStartModel.getOperateModule().toString()); |
|
|
|
|
workOrder.setUploadRecord(autoStartModel.getUploadRecord()); |
|
|
|
|
workOrder.setExpectedCompletionTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(autoStartModel.getNextEndTime())); |
|
|
|
|
workOrder.setIsFinish(0); |
|
|
|
|
//如果是运维公司发起的日常任务(普通),生成工单,并标记为已完成
|
|
|
|
|
if(StringUtils.equals(autoStartModel.getApplyRole(),"运维公司") && StringUtils.equals(autoStartModel.getTaskLevel().toString(),"1625035000825049090")){ |
|
|
|
|
workOrder.setIsFinish(1); |
|
|
|
|
workOrder.setFinishTime(new Date()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
workOrderService.save(workOrder); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|