|
|
|
|
@ -23,6 +23,8 @@ import org.springblade.plugin.operation.system.entity.ProjectInfo; |
|
|
|
|
import org.springblade.plugin.operation.system.service.IModuleInfoService; |
|
|
|
|
import org.springblade.plugin.operation.system.service.IProjectInfoService; |
|
|
|
|
import org.springblade.plugin.operation.task.service.ITaskInfoService; |
|
|
|
|
import org.springblade.plugin.operation.webservice.WebServiceUtils; |
|
|
|
|
import org.springblade.plugin.operation.workorder.entity.InsertTodealByPollCode; |
|
|
|
|
import org.springblade.plugin.operation.workorder.entity.WorkOrder; |
|
|
|
|
import org.springblade.plugin.operation.workorder.service.IWorkOrderService; |
|
|
|
|
import org.springblade.plugin.workbench.entity.AutoStartModel; |
|
|
|
|
@ -39,6 +41,7 @@ import org.springblade.system.entity.Dept; |
|
|
|
|
import org.springblade.system.feign.ISysClient; |
|
|
|
|
import org.springblade.system.user.cache.UserCache; |
|
|
|
|
import org.springblade.system.user.entity.User; |
|
|
|
|
import org.springblade.system.user.feign.IUserClient; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
import org.springframework.web.bind.annotation.RequestBody; |
|
|
|
|
@ -61,6 +64,8 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
|
|
|
|
|
private final ISysClient sysClient; |
|
|
|
|
|
|
|
|
|
private final IUserClient userClient; |
|
|
|
|
|
|
|
|
|
private final ITaskInfoService taskInfoService; |
|
|
|
|
|
|
|
|
|
private final IProjectDatabaseService dataBaseService; |
|
|
|
|
@ -72,7 +77,7 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
private final ProcessErrorLogClient processErrorLogClient; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void saveProcessErrorLog(@RequestBody LogError logError){ |
|
|
|
|
public void saveProcessErrorLog(@RequestBody LogError logError) { |
|
|
|
|
processErrorLogClient.saveErrorLog(logError); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -86,13 +91,13 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
queryWrapper.ne(AutoStartModel::getIsBreak, 1); |
|
|
|
|
List<AutoStartModel> autoStartModels = baseMapper.selectList(queryWrapper); |
|
|
|
|
|
|
|
|
|
List<Map<String,Object>> maps = new ArrayList<>(); |
|
|
|
|
if(autoStartModels.size() > 0){ |
|
|
|
|
autoStartModels.forEach(bl ->{ |
|
|
|
|
List<Map<String, Object>> maps = new ArrayList<>(); |
|
|
|
|
if (autoStartModels.size() > 0) { |
|
|
|
|
autoStartModels.forEach(bl -> { |
|
|
|
|
List<HistoricVariableInstance> variableList = historyService.createHistoricVariableInstanceQuery().processInstanceId(bl.getProcessInstanceId()).list(); |
|
|
|
|
Map<String,Object> variable = new HashMap<>(); |
|
|
|
|
variableList.forEach(va ->{ |
|
|
|
|
variable.put(va.getVariableName(),va.getValue()); |
|
|
|
|
Map<String, Object> variable = new HashMap<>(); |
|
|
|
|
variableList.forEach(va -> { |
|
|
|
|
variable.put(va.getVariableName(), va.getValue()); |
|
|
|
|
}); |
|
|
|
|
maps.add(variable); |
|
|
|
|
}); |
|
|
|
|
@ -112,9 +117,9 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public List<AutoStartModelVO> setInfo(@NonNull List<AutoStartModel> list){ |
|
|
|
|
public List<AutoStartModelVO> setInfo(@NonNull List<AutoStartModel> list) { |
|
|
|
|
List<AutoStartModelVO> lists = new ArrayList<>(); |
|
|
|
|
list.forEach(l->{ |
|
|
|
|
list.forEach(l -> { |
|
|
|
|
AutoStartModelVO copy = Func.copy(l, AutoStartModelVO.class); |
|
|
|
|
copy.setTaskType(taskInfoService.getById(l.getTaskType()).getTaskTypeName()); |
|
|
|
|
copy.setTaskParent(DictBizCache.getById(l.getTaskParent()).getDictValue()); |
|
|
|
|
@ -153,9 +158,9 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
public boolean breakAutoStartModel(String ids) { |
|
|
|
|
List<String> strings = Func.toStrList(ids); |
|
|
|
|
|
|
|
|
|
for(String s : strings){ |
|
|
|
|
for (String s : strings) { |
|
|
|
|
AutoStartModel autoStartModel = baseMapper.selectById(Long.valueOf(s)); |
|
|
|
|
if(Func.isNotEmpty(autoStartModel)){ |
|
|
|
|
if (Func.isNotEmpty(autoStartModel)) { |
|
|
|
|
autoStartModel.setIsBreak(1); |
|
|
|
|
autoStartModel.setStatus(1); |
|
|
|
|
autoStartModel.setBreakTime(DateUtil.now()); |
|
|
|
|
@ -200,14 +205,15 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 不重复任务直接生成工单 |
|
|
|
|
* |
|
|
|
|
* @param processInstanceId |
|
|
|
|
* @param variables |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public boolean newWorkOrder(String processInstanceId,Map<String,Object> variables){ |
|
|
|
|
public boolean newWorkOrder(String processInstanceId, Map<String, Object> variables) { |
|
|
|
|
boolean save = false; |
|
|
|
|
WorkOrder workOrder = new WorkOrder(); |
|
|
|
|
try{ |
|
|
|
|
try { |
|
|
|
|
workOrder.setUploadRecord(JSON.toJSONString(variables.get("uploadrecord"))); |
|
|
|
|
workOrder.setOperateSys(variables.get("xitongmingchengshujuku").toString()); |
|
|
|
|
workOrder.setOperateModule(variables.get("xitongmokuaishujubiao").toString()); |
|
|
|
|
@ -223,33 +229,37 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
workOrder.setMaintenanceCompany(variables.get("yunweigongsi").toString()); |
|
|
|
|
workOrder.setTenantId(WfTaskUtil.getTenantId()); |
|
|
|
|
workOrder.setProcessInstanceId(processInstanceId); |
|
|
|
|
workOrder.setExpectedCompletionTime(DateUtil.parse(variables.get("qiwangwanchengshijian").toString(),"yyyy-MM-dd HH:mm:ss")); |
|
|
|
|
workOrder.setExpectedCompletionTime(DateUtil.parse(variables.get("qiwangwanchengshijian").toString(), "yyyy-MM-dd HH:mm:ss")); |
|
|
|
|
workOrder.setRepeatMode(variables.get("chongfumoshi").toString()); |
|
|
|
|
workOrder.setDetail(variables.get("beizhu").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")){ |
|
|
|
|
if (StringUtils.equals(roleId, "1623514957507272705") && StringUtils.equals(variables.get("renwudengji").toString(), "1625035000825049090")) { |
|
|
|
|
workOrder.setIsFinish(1); |
|
|
|
|
workOrder.setFinishTime(new Date()); |
|
|
|
|
} else { |
|
|
|
|
workOrder.setIsFinish(0); |
|
|
|
|
// 消息推送
|
|
|
|
|
messagePush(variables.get("applyUser").toString(), variables.get("yunweigongsi").toString()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
save = workOrderService.save(workOrder); |
|
|
|
|
|
|
|
|
|
int retryNum = 0; |
|
|
|
|
while(retryNum < 5 && !save){ |
|
|
|
|
try{ |
|
|
|
|
while (retryNum < 5 && !save) { |
|
|
|
|
try { |
|
|
|
|
save = workOrderService.save(workOrder); |
|
|
|
|
}catch (Exception e){ |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
}finally { |
|
|
|
|
retryNum ++; |
|
|
|
|
} finally { |
|
|
|
|
retryNum++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}catch (Exception e){ |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
}finally { |
|
|
|
|
} finally { |
|
|
|
|
return save; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -259,26 +269,26 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
* 1.新建工单 |
|
|
|
|
* 2.保存模板数据 |
|
|
|
|
* 3.更新模板的下一次开始和结束时间 |
|
|
|
|
* |
|
|
|
|
* @param processinstanceId |
|
|
|
|
* @param variables |
|
|
|
|
* @return |
|
|
|
|
* "更新模板数据失败" |
|
|
|
|
* @return "更新模板数据失败" |
|
|
|
|
* “生成工单失败” |
|
|
|
|
* “保存工单模板数据失败” |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public String saveStartProcess(String processinstanceId,Map<String,Object> variables){ |
|
|
|
|
String result = ""; |
|
|
|
|
public String saveStartProcess(String processinstanceId, Map<String, Object> variables) { |
|
|
|
|
String result = ""; |
|
|
|
|
|
|
|
|
|
//保存新增工单和工单模板数据 返回结果: “1” 成功 或 “生成工单失败” 或 “保存工单模板数据失败”
|
|
|
|
|
result = this.newWorkOrderAndSaveModel(processinstanceId,variables); |
|
|
|
|
result = this.newWorkOrderAndSaveModel(processinstanceId, variables); |
|
|
|
|
|
|
|
|
|
if(!StringUtils.equals(result,"1")) { |
|
|
|
|
if (!StringUtils.equals(result, "1")) { |
|
|
|
|
return result; |
|
|
|
|
}else{ |
|
|
|
|
//更新工单模板的nestStartTime和nextEndTime
|
|
|
|
|
} else { |
|
|
|
|
//更新工单模板的nestStartTime和nextEndTime
|
|
|
|
|
LambdaQueryWrapper<AutoStartModel> wrapper = Wrappers.lambdaQuery(); |
|
|
|
|
wrapper.eq(AutoStartModel::getProcessInstanceId,processinstanceId).orderByDesc(AutoStartModel::getCreateTime).last("limit 1"); |
|
|
|
|
wrapper.eq(AutoStartModel::getProcessInstanceId, processinstanceId).orderByDesc(AutoStartModel::getCreateTime).last("limit 1"); |
|
|
|
|
AutoStartModel autoStartModel = baseMapper.selectOne(wrapper); |
|
|
|
|
|
|
|
|
|
Date startTime = autoStartModel.getNextStartTime(); |
|
|
|
|
@ -288,14 +298,14 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
Date nextEndTime = this.nextTime(endTime, repeatMode); |
|
|
|
|
|
|
|
|
|
//如果下次结束时间大于当前记录的结束时间,才会更新
|
|
|
|
|
if(DateUtil.between(endTime,nextEndTime).getSeconds() > 0){ |
|
|
|
|
if (DateUtil.between(endTime, nextEndTime).getSeconds() > 0) { |
|
|
|
|
Date nextStartTime = this.setStartTime(nextEndTime, repeatMode); |
|
|
|
|
autoStartModel.setNextStartTime(nextStartTime); |
|
|
|
|
autoStartModel.setNextEndTime(nextEndTime); |
|
|
|
|
|
|
|
|
|
int i = baseMapper.updateById(autoStartModel); |
|
|
|
|
|
|
|
|
|
if(i > 0) return "1"; |
|
|
|
|
if (i > 0) return "1"; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return "更新模板数据失败"; |
|
|
|
|
@ -303,13 +313,14 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 新增工单并保存模板数据,返回结果: “0” 成功 或 “生成工单失败” 或 “保存工单模板数据失败” |
|
|
|
|
* |
|
|
|
|
* @param processinstanceId |
|
|
|
|
* @param variables |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
@Override |
|
|
|
|
public String newWorkOrderAndSaveModel(String processinstanceId,Map<String,Object> variables){ |
|
|
|
|
public String newWorkOrderAndSaveModel(String processinstanceId, Map<String, Object> variables) { |
|
|
|
|
String result = "1"; |
|
|
|
|
//根据流程表单数据创建AutoStartModel对象
|
|
|
|
|
AutoStartModel autoStartModel = new AutoStartModel(); |
|
|
|
|
@ -340,17 +351,17 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
//自动生成工单并保存
|
|
|
|
|
boolean saveOrder = false; |
|
|
|
|
int retrySaveOrder = 0; |
|
|
|
|
while(!saveOrder && retrySaveOrder < 5){ |
|
|
|
|
try{ |
|
|
|
|
while (!saveOrder && retrySaveOrder < 5) { |
|
|
|
|
try { |
|
|
|
|
saveOrder = this.newWorkOrder(autoStartModel); |
|
|
|
|
}catch (Exception e){ |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
}finally { |
|
|
|
|
retrySaveOrder ++; |
|
|
|
|
} finally { |
|
|
|
|
retrySaveOrder++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
//如果生成工单失败,返回失败信息
|
|
|
|
|
if(!saveOrder){ |
|
|
|
|
if (!saveOrder) { |
|
|
|
|
result = "生成工单失败"; |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
@ -359,25 +370,25 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
int retrySaveModel = 0; |
|
|
|
|
//首先判断autoStartModel中是否有符合processinstanceId的记录,没有才能继续
|
|
|
|
|
LambdaQueryWrapper<AutoStartModel> autoStartModelWrapper = Wrappers.lambdaQuery(); |
|
|
|
|
autoStartModelWrapper.eq(AutoStartModel::getProcessInstanceId,processinstanceId); |
|
|
|
|
autoStartModelWrapper.eq(AutoStartModel::getProcessInstanceId, processinstanceId); |
|
|
|
|
List<AutoStartModel> autoStartModels = baseMapper.selectList(autoStartModelWrapper); |
|
|
|
|
if(autoStartModels.size() > 0) return "数据库中已经有该工作数据了"; |
|
|
|
|
if (autoStartModels.size() > 0) return "数据库中已经有该工作数据了"; |
|
|
|
|
|
|
|
|
|
while(insertModel <= 0){ |
|
|
|
|
try{ |
|
|
|
|
while (insertModel <= 0) { |
|
|
|
|
try { |
|
|
|
|
boolean save = this.save(autoStartModel); |
|
|
|
|
if (save) { |
|
|
|
|
insertModel = 1; |
|
|
|
|
} |
|
|
|
|
}catch (Exception e){ |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
}finally { |
|
|
|
|
retrySaveOrder ++; |
|
|
|
|
} finally { |
|
|
|
|
retrySaveOrder++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//如果保存模板数据失败,返回失败信息
|
|
|
|
|
if(insertModel <=0){ |
|
|
|
|
if (insertModel <= 0) { |
|
|
|
|
result = "保存工单模板数据失败"; |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
@ -386,31 +397,31 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//根据期望结束时间,计算开始时间
|
|
|
|
|
private Date setStartTime(Date endTime,String repeatMode){ |
|
|
|
|
private Date setStartTime(Date endTime, String repeatMode) { |
|
|
|
|
Date startDate; |
|
|
|
|
LocalDateTime localEndTime = DateUtil.fromDate(endTime); |
|
|
|
|
LocalDate localDate = LocalDate.of(localEndTime.getYear(),localEndTime.getMonth(),localEndTime.getDayOfMonth()); |
|
|
|
|
LocalDate localDate = LocalDate.of(localEndTime.getYear(), localEndTime.getMonth(), localEndTime.getDayOfMonth()); |
|
|
|
|
|
|
|
|
|
//repeatMode 为空串
|
|
|
|
|
if(StringUtils.isEmpty(repeatMode) || StringUtils.isBlank(repeatMode)) return endTime; |
|
|
|
|
if (StringUtils.isEmpty(repeatMode) || StringUtils.isBlank(repeatMode)) return endTime; |
|
|
|
|
|
|
|
|
|
//每天重复
|
|
|
|
|
if(StringUtils.equals(RepeatEnum.每天.getCode(),repeatMode)){ |
|
|
|
|
if (StringUtils.equals(RepeatEnum.每天.getCode(), repeatMode)) { |
|
|
|
|
startDate = DateUtil.toDate(localDate); |
|
|
|
|
return startDate; |
|
|
|
|
} |
|
|
|
|
//每周重复,获取当前日期所在周的周一
|
|
|
|
|
if(StringUtils.equals(RepeatEnum.每周.getCode(),repeatMode)){ |
|
|
|
|
if (StringUtils.equals(RepeatEnum.每周.getCode(), repeatMode)) { |
|
|
|
|
Date date = DateUtil.toDate(localDate); |
|
|
|
|
return MyDateUtil.getFirstDayOfWeek(date); |
|
|
|
|
} |
|
|
|
|
//每月重复,获取当前日期所在月的第一天
|
|
|
|
|
if(StringUtils.equals(RepeatEnum.每月.getCode(),repeatMode)){ |
|
|
|
|
if (StringUtils.equals(RepeatEnum.每月.getCode(), repeatMode)) { |
|
|
|
|
LocalDate firsDayOfMonth = localDate.with(TemporalAdjusters.firstDayOfMonth()); |
|
|
|
|
return DateUtil.toDate(firsDayOfMonth); |
|
|
|
|
} |
|
|
|
|
//每季度重复,获取当前日期所在季度的首月的第一天
|
|
|
|
|
if(StringUtils.equals(RepeatEnum.每季度.getCode(),repeatMode)){ |
|
|
|
|
if (StringUtils.equals(RepeatEnum.每季度.getCode(), repeatMode)) { |
|
|
|
|
int month = localDate.getMonth().getValue(); |
|
|
|
|
if (1 <= month && month <= 3) { |
|
|
|
|
localDate = localDate.withMonth(1); |
|
|
|
|
@ -421,35 +432,35 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
} else { |
|
|
|
|
localDate = localDate.withMonth(10); |
|
|
|
|
} |
|
|
|
|
return DateUtil.toDate(localDate); |
|
|
|
|
return DateUtil.toDate(localDate); |
|
|
|
|
} |
|
|
|
|
return endTime; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//计算下次时间
|
|
|
|
|
private Date nextTime(Date date,String repeatMode){ |
|
|
|
|
private Date nextTime(Date date, String repeatMode) { |
|
|
|
|
Date now = DateUtil.now(); |
|
|
|
|
|
|
|
|
|
//每分钟重复
|
|
|
|
|
// if(StringUtils.equals(RepeatEnum.每分钟.getCode(),repeatMode)) return DateUtil.plusMinutes(date,1);
|
|
|
|
|
|
|
|
|
|
//每天重复
|
|
|
|
|
if(StringUtils.equals(RepeatEnum.每天.getCode(),repeatMode)) return DateUtil.plusDays(date,1); |
|
|
|
|
if (StringUtils.equals(RepeatEnum.每天.getCode(), repeatMode)) return DateUtil.plusDays(date, 1); |
|
|
|
|
|
|
|
|
|
//每周重复
|
|
|
|
|
if(StringUtils.equals(RepeatEnum.每周.getCode(),repeatMode)) return DateUtil.plusWeeks(date,1); |
|
|
|
|
if (StringUtils.equals(RepeatEnum.每周.getCode(), repeatMode)) return DateUtil.plusWeeks(date, 1); |
|
|
|
|
|
|
|
|
|
//每月重复
|
|
|
|
|
if(StringUtils.equals(RepeatEnum.每月.getCode(),repeatMode)) return DateUtil.plusMonths(date,1); |
|
|
|
|
if (StringUtils.equals(RepeatEnum.每月.getCode(), repeatMode)) return DateUtil.plusMonths(date, 1); |
|
|
|
|
|
|
|
|
|
//每季度重复
|
|
|
|
|
if(StringUtils.equals(RepeatEnum.每季度.getCode(),repeatMode)) return DateUtil.plusMonths(date,3); |
|
|
|
|
if (StringUtils.equals(RepeatEnum.每季度.getCode(), repeatMode)) return DateUtil.plusMonths(date, 3); |
|
|
|
|
|
|
|
|
|
return now; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private boolean newWorkOrder(AutoStartModel autoStartModel){ |
|
|
|
|
private boolean newWorkOrder(AutoStartModel autoStartModel) { |
|
|
|
|
boolean save = false; |
|
|
|
|
//生成工单
|
|
|
|
|
WorkOrder workOrder = new WorkOrder(); |
|
|
|
|
@ -470,16 +481,19 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
workOrder.setIsFinish(0); |
|
|
|
|
workOrder.setDetail(autoStartModel.getDetail()); |
|
|
|
|
//如果是运维公司发起的日常任务(普通),生成工单,并标记为已完成
|
|
|
|
|
if(StringUtils.equals(autoStartModel.getApplyRole(),"运维公司") && StringUtils.equals(autoStartModel.getTaskLevel().toString(),"1625035000825049090")){ |
|
|
|
|
if (StringUtils.equals(autoStartModel.getApplyRole(), "运维公司") && StringUtils.equals(autoStartModel.getTaskLevel().toString(), "1625035000825049090")) { |
|
|
|
|
workOrder.setIsFinish(1); |
|
|
|
|
workOrder.setFinishTime(new Date()); |
|
|
|
|
} else { |
|
|
|
|
// 消息推送
|
|
|
|
|
messagePush(workOrder.getApplyUser(), workOrder.getMaintenanceCompany()); |
|
|
|
|
} |
|
|
|
|
workOrder.setExpectedCompletionTime(autoStartModel.getNextEndTime()); |
|
|
|
|
save = workOrderService.save(workOrder); |
|
|
|
|
return save; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private boolean autoNewWorkOrder(AutoStartModel autoStartModel){ |
|
|
|
|
private boolean autoNewWorkOrder(AutoStartModel autoStartModel) { |
|
|
|
|
boolean save = false; |
|
|
|
|
//生成工单
|
|
|
|
|
WorkOrder workOrder = new WorkOrder(); |
|
|
|
|
@ -501,17 +515,19 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
workOrder.setDetail(autoStartModel.getDetail()); |
|
|
|
|
workOrder.setExpectedCompletionTime(autoStartModel.getNextEndTime()); |
|
|
|
|
save = workOrderService.save(workOrder); |
|
|
|
|
// 消息推送
|
|
|
|
|
messagePush(workOrder.getApplyUser(), workOrder.getMaintenanceCompany()); |
|
|
|
|
return save; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void autoCreateWorkOrderByQuartz(){ |
|
|
|
|
public void autoCreateWorkOrderByQuartz() { |
|
|
|
|
this.autoCreateWorkOrder(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//自动生成工单
|
|
|
|
|
private void autoCreateWorkOrder(){ |
|
|
|
|
synchronized (AutoStartModelServiceImpl.class){ |
|
|
|
|
private void autoCreateWorkOrder() { |
|
|
|
|
synchronized (AutoStartModelServiceImpl.class) { |
|
|
|
|
Date now = DateUtil.now(); |
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<AutoStartModel> wrapper = Wrappers.lambdaQuery(); |
|
|
|
|
@ -527,9 +543,9 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//递归生成工单并更新autoStartModel的nextSatartTime nextEndTime
|
|
|
|
|
private void autoCreateWorkOrder(Date now,AutoStartModel autoStartModel){ |
|
|
|
|
private void autoCreateWorkOrder(Date now, AutoStartModel autoStartModel) { |
|
|
|
|
boolean b = this.autoNewWorkOrder(autoStartModel); |
|
|
|
|
if(b){ |
|
|
|
|
if (b) { |
|
|
|
|
Date endTime = autoStartModel.getNextEndTime(); |
|
|
|
|
|
|
|
|
|
//计算下次开始结束时间
|
|
|
|
|
@ -541,11 +557,34 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe |
|
|
|
|
autoStartModel.setNextEndTime(nextEndTime); |
|
|
|
|
baseMapper.updateById(autoStartModel); |
|
|
|
|
|
|
|
|
|
// boolean ii = DateUtil.between(nextStartTime,now).isNegative();
|
|
|
|
|
// boolean ii = DateUtil.between(nextStartTime,now).isNegative();
|
|
|
|
|
|
|
|
|
|
if(!DateUtil.between(nextStartTime,now).isNegative()){ |
|
|
|
|
autoCreateWorkOrder(now,autoStartModel); |
|
|
|
|
if (!DateUtil.between(nextStartTime, now).isNegative()) { |
|
|
|
|
autoCreateWorkOrder(now, autoStartModel); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void messagePush(String applyUserId,String userId) { |
|
|
|
|
// 发起人
|
|
|
|
|
User startUser = userClient.userInfoById(Long.parseLong(applyUserId)).getData(); |
|
|
|
|
// 接收人
|
|
|
|
|
User user = userClient.userInfoById(Long.parseLong(userId)).getData(); |
|
|
|
|
|
|
|
|
|
InsertTodealByPollCode code = new InsertTodealByPollCode(); |
|
|
|
|
code.setTitle("新的工单待处理"); |
|
|
|
|
if (user != null) { |
|
|
|
|
// 接收人
|
|
|
|
|
code.setReceiveLocalPerson(user.getName()); |
|
|
|
|
code.setReceiveLocalPersonGuid(user.getGuid()); |
|
|
|
|
code.setToExchangeCode(user.getMobile()); |
|
|
|
|
} |
|
|
|
|
if (startUser != null) { |
|
|
|
|
// 发送人
|
|
|
|
|
code.setSendperson(startUser.getName()); |
|
|
|
|
code.setSendpersonGuid(startUser.getGuid()); |
|
|
|
|
code.setFromExchangeCode(startUser.getMobile()); |
|
|
|
|
} |
|
|
|
|
WebServiceUtils.InsertTodealByPollCode(WebServiceUtils.getData(code)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|