package org.springblade.mdm.flow.service; import com.itextpdf.text.Chunk; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Font; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.flowable.engine.HistoryService; import org.flowable.task.api.history.HistoricTaskInstance; import org.springblade.core.oss.OssTemplate; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.mdm.basesetting.machine.MachineService; import org.springblade.mdm.basesetting.machine.entity.Machine; import org.springblade.mdm.commons.service.ParamService; import org.springblade.mdm.commons.support.TemplatedPdfWriter; import org.springblade.mdm.flow.constants.FlowContants; import org.springblade.mdm.flow.vo.ApproveTableInfo; import org.springblade.mdm.program.entity.NcNode; import org.springblade.mdm.program.entity.NcProgramApproved; import org.springblade.mdm.program.service.NcNodeService; import org.springblade.mdm.program.service.NcProgramApprovedService; import org.springblade.system.feign.IUserClient; import org.springblade.system.pojo.entity.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.*; /** * 数控程序审批信息查询服务 * * @author yangys */ @Slf4j @Service public class ApproveInfoQueryService { @Autowired private NcNodeService ncNodeService; @Autowired private HistoryService historyService; @Autowired private IUserClient useClient; @Autowired private NcProgramApprovedService programApprovedService; /** * 获取实际审批人姓名,和时间 * @param props 流程属性 * @return 审批人信息,程序编号 */ public ApproveTableInfo getApproveInfo(FlowProgramProperties props){ ApproveTableInfo appInfo = new ApproveTableInfo(); Long teamLeaderId = 0L; Long programmerId= 0L; Long checkerId = 0L; Long seniorId = 0L; //获取审批人和时间信息 List hisTasks = historyService.createHistoricTaskInstanceQuery() .processInstanceId(props.getProcessInstanceId()).orderByTaskCreateTime().desc().list(); for(HistoricTaskInstance task : hisTasks){ if(appInfo.getDispatchDate()== null && StringUtils.containsIgnoreCase(task.getTaskDefinitionKey(),"teamLeaderTask")){ appInfo.setDispatchDate(task.getEndTime()); teamLeaderId = Func.toLong(task.getAssignee()); } if(appInfo.getProgrammingDate()== null && StringUtils.containsIgnoreCase(task.getTaskDefinitionKey(),"program")){ appInfo.setProgrammingDate(task.getEndTime()); programmerId = Func.toLong(task.getAssignee()); } if(appInfo.getCheckDate()== null && StringUtils.containsIgnoreCase(task.getTaskDefinitionKey(),"check")){ appInfo.setCheckDate(task.getEndTime()); checkerId = Func.toLong(task.getAssignee()); } if(appInfo.getApproveDate()== null && StringUtils.containsIgnoreCase(task.getTaskDefinitionKey(),"approve")){ appInfo.setApproveDate(task.getEndTime()); seniorId = Func.toLong(task.getAssignee()); } } appInfo.setTeamLeaderName(getNameByUserid(teamLeaderId)); appInfo.setProgrammerName(getNameByUserid(programmerId)); appInfo.setCheckerName(getNameByUserid(checkerId)); appInfo.setSeniorName(getNameByUserid(seniorId)); //查询数控程序编号 Optional appOpt = programApprovedService.lambdaQuery().eq(NcProgramApproved::getProcessInstanceId, props.getProcessInstanceId()).oneOpt(); if(appOpt.isEmpty()){ appInfo.setProgramNo("(未生成)"); }else{ NcNode programPkgNameNode = this.ncNodeService.getById(appOpt.get().getNcNodeId()); appInfo.setProgramNo(programPkgNameNode.getProgramNo()); } return appInfo; } String getNameByUserid(Long userid){ String name = StringUtils.EMPTY; //审核 R userR = useClient.userInfoById(userid); if (userR.isSuccess()) { name = userR.getData().getName(); } return name; } }