|
|
|
@ -5,10 +5,15 @@ import cn.afterturn.easypoi.word.WordExportUtil;
|
|
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
|
|
|
|
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; |
|
|
|
|
import com.hnac.hzims.common.logs.utils.StringUtils; |
|
|
|
|
import com.hnac.hzims.message.MessageConstants; |
|
|
|
|
import com.hnac.hzims.message.dto.MessagePushRecordDto; |
|
|
|
|
import com.hnac.hzims.message.fegin.IMessageClient; |
|
|
|
|
import com.hnac.hzims.operational.access.entity.OperAccessTaskEntity; |
|
|
|
|
import com.hnac.hzims.operational.access.feign.IOperAccessTaskClient; |
|
|
|
|
import com.hnac.hzims.operational.feign.IAccessTaskClient; |
|
|
|
@ -18,6 +23,7 @@ import com.hnac.hzims.operational.station.entity.StationEntity;
|
|
|
|
|
import com.hnac.hzims.operational.station.feign.IStationClient; |
|
|
|
|
import com.hnac.hzims.ticket.constants.TicketConstants; |
|
|
|
|
import com.hnac.hzims.ticket.constants.WorkTicketConstants; |
|
|
|
|
import com.hnac.hzims.ticket.processflow.service.ProcessDictService; |
|
|
|
|
import com.hnac.hzims.ticket.processflow.strategy.core.ProcessIdWorker; |
|
|
|
|
import com.hnac.hzims.ticket.response.ProcessWorkFlowResponse; |
|
|
|
|
import com.hnac.hzims.ticket.twoTicket.constant.TicketConstant; |
|
|
|
@ -51,6 +57,7 @@ import org.springblade.core.tool.utils.Func;
|
|
|
|
|
import org.springblade.core.tool.utils.ObjectUtil; |
|
|
|
|
import org.springblade.flow.core.entity.BladeFlow; |
|
|
|
|
import org.springblade.flow.core.feign.IFlowClient; |
|
|
|
|
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; |
|
|
|
@ -68,6 +75,8 @@ import java.time.LocalDateTime;
|
|
|
|
|
import java.util.*; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
import static com.hnac.hzims.ticket.processflow.constant.TicketProcessConstant.FIRST_TICKET_KEY; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 开票处理流程实现类 |
|
|
|
@ -112,8 +121,6 @@ public class TicketProcessServiceImpl implements TicketProcessService {
|
|
|
|
|
|
|
|
|
|
private final IAccessTaskClient accessTaskClient; |
|
|
|
|
|
|
|
|
|
private String newFirstWorkTicketFlowKey = "workTicketFlow"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final IStationClient stationClient; |
|
|
|
|
|
|
|
|
@ -141,6 +148,16 @@ public class TicketProcessServiceImpl implements TicketProcessService {
|
|
|
|
|
private final TicketInfoDangerService ticketInfoDangerService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final ProcessDictService processDictService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final IMessageClient messageClient; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final ISysClient sysClient; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 启动开票流程 |
|
|
|
|
* |
|
|
|
@ -188,9 +205,11 @@ public class TicketProcessServiceImpl implements TicketProcessService {
|
|
|
|
|
this.saveSafetyMeasures(workTicketVo.getSafetyMeasuresList(), workTicketVo.getWorkTicket()); |
|
|
|
|
//5. 保存工作任务
|
|
|
|
|
this.saveWorkTicketContentDto(workTicketVo.getWorkTicketContentDtoList(), workTicketVo.getWorkTicket()); |
|
|
|
|
//6. 开启动作流
|
|
|
|
|
this.dealProcess(newFirstWorkTicketFlowKey, workTicketVo); |
|
|
|
|
//7. 处理任务
|
|
|
|
|
//6. 查询第一种工作票值
|
|
|
|
|
String dictValue = processDictService.selectDictValueByKey(FIRST_TICKET_KEY); |
|
|
|
|
//7. 开启动作流
|
|
|
|
|
this.dealProcess(dictValue, workTicketVo); |
|
|
|
|
//8. 处理任务
|
|
|
|
|
this.returnTicket(workTicketVo); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
@ -244,16 +263,21 @@ public class TicketProcessServiceImpl implements TicketProcessService {
|
|
|
|
|
e.printStackTrace(); |
|
|
|
|
} |
|
|
|
|
//更新安全措施
|
|
|
|
|
List<WorkTicketSafetyMeasureEntity> safetyMeasuresList = workTicketVo.getSafetyMeasuresList(); |
|
|
|
|
if (CollectionUtils.isNotEmpty(safetyMeasuresList)) { |
|
|
|
|
log.info("获取安全措施的数据:{}", safetyMeasuresList); |
|
|
|
|
safetyMeasuresList.forEach(item -> { |
|
|
|
|
if (ObjectUtils.isNotEmpty(item.getTicketId())) { |
|
|
|
|
LambdaQueryWrapper<WorkTicketSafetyMeasureEntity> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
queryWrapper.eq(WorkTicketSafetyMeasureEntity::getTicketId, item.getTicketId()); |
|
|
|
|
workTicketSafetyMeasureService.update(item, queryWrapper); |
|
|
|
|
try { |
|
|
|
|
List<WorkTicketSafetyMeasureEntity> safetyMeasuresList = workTicketVo.getSafetyMeasuresList(); |
|
|
|
|
if (CollectionUtils.isNotEmpty(safetyMeasuresList)) { |
|
|
|
|
log.info("获取安全措施的数据:{}", safetyMeasuresList); |
|
|
|
|
for (WorkTicketSafetyMeasureEntity item : safetyMeasuresList) { |
|
|
|
|
if (ObjectUtils.isNotEmpty(item.getId())) { |
|
|
|
|
workTicketSafetyMeasureService.updateById(item); |
|
|
|
|
}else { |
|
|
|
|
item.setTicketId(workTicketInfo.getId()); |
|
|
|
|
workTicketSafetyMeasureService.save(item); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
} |
|
|
|
|
//工作票工作任务组
|
|
|
|
|
// List<WorkTicketContentEntity> workTicketContentDtoList = workTicketVo.getWorkTicketContentDtoList();
|
|
|
|
@ -293,13 +317,16 @@ public class TicketProcessServiceImpl implements TicketProcessService {
|
|
|
|
|
//工作结束
|
|
|
|
|
WorkTicketFinish workTicketFinish = workTicketVo.getWorkTicketFinish(); |
|
|
|
|
try { |
|
|
|
|
if (ObjectUtils.isNotEmpty(workTicketFinish) && 99 == workTicket.getFlowStatus().intValue()) { |
|
|
|
|
log.info("工作结束==============>"+ (workTicket.getFlowStatus().intValue())); |
|
|
|
|
if (ObjectUtils.isNotEmpty(workTicketFinish)) { |
|
|
|
|
WorkTicketFinish ticketFinish = workTicketFinishService.selectByTicketId(workTicketInfo.getId()); |
|
|
|
|
log.info("获取工作结束:{}", workTicketFinish); |
|
|
|
|
if (ObjectUtils.isEmpty(workTicketFinish.getId()) || ObjectUtils.isEmpty(ticketFinish)) { |
|
|
|
|
log.info("获取工作结束保存成功"); |
|
|
|
|
workTicketFinish.setTicketId(workTicketInfo.getId()); |
|
|
|
|
workTicketFinishService.save(workTicketFinish); |
|
|
|
|
} else { |
|
|
|
|
log.info("获取工作结束更新成功"); |
|
|
|
|
workTicketDelay.setInitialTime(LocalDateTime.now()); |
|
|
|
|
workTicketFinishService.updateByTicketId(workTicketFinish); |
|
|
|
|
} |
|
|
|
@ -369,6 +396,47 @@ public class TicketProcessServiceImpl implements TicketProcessService {
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//推送消息
|
|
|
|
|
MessagePushRecordDto message = new MessagePushRecordDto(); |
|
|
|
|
message.setBusinessClassify("business"); |
|
|
|
|
message.setBusinessKey(MessageConstants.BusinessClassifyEnum.TICKETMESSAGE.getKey()); |
|
|
|
|
message.setSubject(MessageConstants.BusinessClassifyEnum.TICKETMESSAGE.getDescription()); |
|
|
|
|
message.setTaskId(workTicketInfo.getId()); |
|
|
|
|
message.setTenantId("200000"); |
|
|
|
|
message.setTypes(Arrays.asList(MessageConstants.APP_PUSH, MessageConstants.WS_PUSH)); |
|
|
|
|
message.setPushType(MessageConstants.IMMEDIATELY); |
|
|
|
|
//您有一张工作票待审批,工作内容:*****,审批环节:*****;
|
|
|
|
|
String countent = |
|
|
|
|
"您有一张工作票待审批,工作内容:".concat(workTicketInfo.getWorkContent()) |
|
|
|
|
.concat(",审批环节:") |
|
|
|
|
.concat(response.getTaskName()); |
|
|
|
|
message.setContent(countent); |
|
|
|
|
message.setDeptId(workTicketInfo.getCreateDept()); |
|
|
|
|
R<String> deptName = sysClient.getDeptName(workTicketInfo.getCreateDept()); |
|
|
|
|
if (deptName.isSuccess()) { |
|
|
|
|
message.setDeptName(deptName.getData()); |
|
|
|
|
} |
|
|
|
|
String userIds = response.getUserId(); |
|
|
|
|
if (StringUtils.isBlank(userIds)){ |
|
|
|
|
log.error("推送的消息不能为空哦,{}",userIds); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
String[] split = userIds.split(","); |
|
|
|
|
for (String userId : split) { |
|
|
|
|
message.setPusher(userId); |
|
|
|
|
User user = UserCache.getUser(NumberUtils.toLong(userId)); |
|
|
|
|
if (ObjectUtils.isNotEmpty(user)) { |
|
|
|
|
message.setPusherName(user.getName()); |
|
|
|
|
} |
|
|
|
|
message.setAccount(userId); |
|
|
|
|
|
|
|
|
|
message.setCreateUser(NumberUtils.toLong(userId)); |
|
|
|
|
messageClient.sendMessage(message); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -417,10 +485,11 @@ public class TicketProcessServiceImpl implements TicketProcessService {
|
|
|
|
|
String taskId = response.getTaskId(); |
|
|
|
|
if (StringUtils.isEmpty(taskId)) { |
|
|
|
|
workTicket.setFlowDescription("结束"); |
|
|
|
|
workTicket.setFlowTaskId(" "); |
|
|
|
|
// workTicket.setFlowTaskId(" ");
|
|
|
|
|
workTicket.setFlowTaskName("结束"); |
|
|
|
|
workTicket.setNextStepOperator(" "); |
|
|
|
|
workTicket.setStepOperator(" "); |
|
|
|
|
workTicket.setFlowStatus(999); |
|
|
|
|
} else { |
|
|
|
|
workTicket.setFlowTaskId(taskId); |
|
|
|
|
workTicket.setFlowTaskName(response.getTaskName()); |
|
|
|
@ -850,7 +919,7 @@ public class TicketProcessServiceImpl implements TicketProcessService {
|
|
|
|
|
WorkTicketDelayEntity workTicketDelay = workTicketVo.getWorkTicketDelay(); |
|
|
|
|
log.info("工作票延期: {}", workTicketDelay); |
|
|
|
|
if (ObjectUtils.isNotEmpty(workTicketDelay)) { |
|
|
|
|
result.putAll(PdfUtils.objectToMapResult(workTicket, result)); |
|
|
|
|
result.putAll(PdfUtils.objectToMapResult(workTicketDelay, result)); |
|
|
|
|
} else { |
|
|
|
|
result.putAll(PdfUtils.objectToMapResult(new WorkTicketDelayEntity(), result)); |
|
|
|
|
} |
|
|
|
@ -967,12 +1036,11 @@ public class TicketProcessServiceImpl implements TicketProcessService {
|
|
|
|
|
//负责人
|
|
|
|
|
String licensorName = WordHelper.toMapAsString(result, "principalName", 10); |
|
|
|
|
result.put("principalName2", licensorName); |
|
|
|
|
}else { |
|
|
|
|
} else { |
|
|
|
|
WordHelper.putMap(result, "principalName2", 10); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//许可人确认工作票终结
|
|
|
|
|
|
|
|
|
|
if (WordHelper.isNoneBlank(result, "workEndTime")) { |
|
|
|
|
log.info("许可人确认工作票终结"); |
|
|
|
|
//负责人
|
|
|
|
@ -981,7 +1049,7 @@ public class TicketProcessServiceImpl implements TicketProcessService {
|
|
|
|
|
//许可人
|
|
|
|
|
String licensorName = WordHelper.toMapAsString(result, "licensorName", 10); |
|
|
|
|
result.put("licensorName2", licensorName); |
|
|
|
|
}else { |
|
|
|
|
} else { |
|
|
|
|
WordHelper.putMap(result, "principalName3", 10); |
|
|
|
|
WordHelper.putMap(result, "licensorName2", 10); |
|
|
|
|
} |
|
|
|
@ -1059,12 +1127,32 @@ public class TicketProcessServiceImpl implements TicketProcessService {
|
|
|
|
|
* @param maps 新的Map |
|
|
|
|
* @param i 索引 |
|
|
|
|
*/ |
|
|
|
|
private static void listWichMap(List<Map<String, Object>> matterLibraryListFive, List<Map<String, Object>> matterLibraryListFlow, List<Map<String, Object>> maps, int i) { |
|
|
|
|
Map<String, Object> stringObjectMap = matterLibraryListFive.get(i); |
|
|
|
|
Map<String, Object> stringObjectMap1 = matterLibraryListFlow.get(i); |
|
|
|
|
private static void listWichMap(List<Map<String, Object>> matterLibraryListFive, |
|
|
|
|
List<Map<String, Object>> matterLibraryListFlow, List<Map<String, Object>> maps, int i) { |
|
|
|
|
HashMap<String, Object> objectObjectHashMap = new HashMap<>(); |
|
|
|
|
objectObjectHashMap.put("safetyMeasure", stringObjectMap.get("safetyMeasure")); |
|
|
|
|
objectObjectHashMap.put("safetyMeasure1", stringObjectMap1.get("safetyMeasure")); |
|
|
|
|
if (matterLibraryListFive.size() > 0) { |
|
|
|
|
if (matterLibraryListFive.size() <= i) { |
|
|
|
|
objectObjectHashMap.put("safetyMeasure", ""); |
|
|
|
|
} else { |
|
|
|
|
Map<String, Object> stringObjectMap = matterLibraryListFive.get(i); |
|
|
|
|
objectObjectHashMap.put("safetyMeasure", stringObjectMap.get("safetyMeasure")); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
objectObjectHashMap.put("safetyMeasure", ""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (matterLibraryListFlow.size() > 0) { |
|
|
|
|
if (matterLibraryListFlow.size() <= i) { |
|
|
|
|
objectObjectHashMap.put("safetyMeasure1", ""); |
|
|
|
|
} else { |
|
|
|
|
Map<String, Object> stringObjectMap = matterLibraryListFive.get(i); |
|
|
|
|
objectObjectHashMap.put("safetyMeasure1", stringObjectMap.get("safetyMeasure")); |
|
|
|
|
} |
|
|
|
|
}else { |
|
|
|
|
objectObjectHashMap.put("safetyMeasure1", ""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
maps.add(objectObjectHashMap); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -1130,8 +1218,6 @@ public class TicketProcessServiceImpl implements TicketProcessService {
|
|
|
|
|
dataConversion.put(key, BooleanUtils.toBoolean(newValue) ? "☑" : "□"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|