package com.ruoyi.project.eoeg.controller; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.data.Pictures; import com.deepoove.poi.data.TextRenderData; import com.deepoove.poi.data.Texts; import com.deepoove.poi.data.style.Style; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.config.RuoYiConfig; import com.ruoyi.framework.interceptor.annotation.RepeatSubmit; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.framework.web.page.TableDataInfo; import com.ruoyi.project.approve.damain.DevTask; import com.ruoyi.project.eoeg.domain.TEoegLock; import com.ruoyi.project.eoeg.domain.TEoegLockApply; import com.ruoyi.project.eoeg.domain.TEoegLockChange; import com.ruoyi.project.eoeg.domain.TEoegStaffmgr; import com.ruoyi.project.eoeg.service.ITEoegLockApplyService; import com.ruoyi.project.eoeg.service.ITEoegLockChangeService; import com.ruoyi.project.eoeg.service.ITEoegLockService; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.service.ISysUserService; import io.jsonwebtoken.lang.Assert; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.impl.identity.Authentication; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * EOEG 锁开锁关申请Controller * * @author ssy * @date 2025-09-19 */ @RestController @RequestMapping("/eoeg/eoegChange") public class TEoegLockChangeController extends BaseController { @Autowired private ITEoegLockChangeService tEoegLockChangeService; @Autowired private ITEoegLockService tEoegLockService; @Autowired private ITEoegLockApplyService tEoegLockApplyService; @Autowired private ISysUserService sysUserService; @Autowired private RuntimeService runtimeService; @Autowired private TaskService taskService; /** * 查询EOEG 锁开锁关申请列表 */ @PreAuthorize("@ss.hasPermi('eoeg:eoegChange:list')") @GetMapping("/list") public TableDataInfo list(TEoegLockChange tEoegLockChange) { startPage(); List list = tEoegLockChangeService.selectTEoegLockChangeList(tEoegLockChange); return getDataTable(list); } /** * 导出EOEG 锁开锁关申请列表 */ @PreAuthorize("@ss.hasPermi('eoeg:eoegChange:export')") @Log(title = "EOEG 锁开锁关申请", businessType = BusinessType.EXPORT) @GetMapping("/export") public AjaxResult export(TEoegLockChange tEoegLockChange) { List list = tEoegLockChangeService.selectTEoegLockChangeList(tEoegLockChange); ExcelUtil util = new ExcelUtil(TEoegLockChange.class); return util.exportExcel(list, "eoegChange"); } /** * 获取EOEG 锁开锁关申请详细信息 */ @PreAuthorize("@ss.hasPermi('eoeg:eoegChange:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return AjaxResult.success(tEoegLockChangeService.selectTEoegLockChangeById(id)); } /** * 新增EOEG 锁开锁关申请 */ @PreAuthorize("@ss.hasPermi('eoeg:eoegChange:add')") @Log(title = "EOEG 锁开锁关申请", businessType = BusinessType.INSERT) @PostMapping @RepeatSubmit public AjaxResult add(@RequestBody TEoegLockChange tEoegLockChange) { try { String userId = getUserId().toString(); TEoegLock tEoegLock = new TEoegLock(); tEoegLock.setUniqueIdentifier(tEoegLockChange.getLockNo()); for (TEoegLock eoegLock : tEoegLockService.selectTEoegLockList(tEoegLock)) { if (eoegLock.getStatus() == 1 || eoegLock.getStatus() == 2) { return AjaxResult.error("该锁正处于申请流程中,请结束上一流程后再选择该锁!"); } eoegLock.setStatus(1L); tEoegLockService.updateTEoegLock(eoegLock); } // 填充用户名称信息 fillUserNames(tEoegLockChange); // 设置申请人ID tEoegLockChange.setApplicant(userId); // 设置申请人姓名 tEoegLockChange.setApplicantName(getNickName()); // 设置申请时间 tEoegLockChange.setApplicationTime(new Date()); // 设置状态为待审批 tEoegLockChange.setApproveStatus("1");//待审批 // 设置创建日期 tEoegLockChange.setCreatedate(new Date()); // 设置创建人编码 tEoegLockChange.setCreaterCode(getUserId().toString()); // 保存锁变更申请记录 tEoegLockChangeService.insertTEoegLockChange(tEoegLockChange); //开始审批流 TEoegLockApply apply = new TEoegLockApply(); apply.setApNo(DateUtils.dateTimeNow() + userId); apply.setCreaterCode(userId); apply.setCreatedate(new Date()); tEoegLockApplyService.insertTEoegLockApply(apply); long businessKey = apply.getId(); //开始工作流、监听 Authentication.setAuthenticatedUserId(userId);//设置当前申请人 Map variables = new HashMap<>(); variables.put("applyuser", userId); variables.put("safaer", tEoegLockChange.getSafaer()); variables.put("changeConfirmer", tEoegLockChange.getChangeConfirmer()); //查询经理 TEoegStaffmgr tEoegStaffmgr = new TEoegStaffmgr(); tEoegStaffmgr.setActualposts("24,26"); StringBuilder approvers = new StringBuilder(); for (SysUser user : sysUserService.selectEoegUserPost(tEoegStaffmgr)) { approvers.append(user.getUserId().toString()).append(","); } if (StringUtils.isNotEmpty(approvers.toString())) { approvers = new StringBuilder(approvers.substring(0, approvers.length() - 1)); } variables.put("approver", approvers.toString()); // 查询班长 tEoegStaffmgr = new TEoegStaffmgr(); tEoegStaffmgr.setActualposts("12"); StringBuilder monitor = new StringBuilder(); for (SysUser user : sysUserService.selectEoegUserPost(tEoegStaffmgr)) { monitor.append(user.getUserId().toString()).append(","); } if (StringUtils.isNotEmpty(monitor.toString())) { monitor = new StringBuilder(monitor.substring(0, monitor.length() - 1)); } variables.put("monitor", monitor.toString()); // 查询副班长 tEoegStaffmgr = new TEoegStaffmgr(); tEoegStaffmgr.setActualposts("34"); StringBuilder viceSquad = new StringBuilder(); for (SysUser user : sysUserService.selectEoegUserPost(tEoegStaffmgr)) { viceSquad.append(user.getUserId().toString()).append(","); } if (StringUtils.isNotEmpty(viceSquad.toString())) { viceSquad = new StringBuilder(viceSquad.substring(0, viceSquad.length() - 1)).append(",").append(monitor); } variables.put("measureConfirmer", viceSquad.toString()); //采用key来启动流程定义并设置流程变量,返回流程实例 ProcessInstance pi = runtimeService.startProcessInstanceByKey("eoegLock", String.valueOf(businessKey), variables); logger.info("流程定义id:" + pi.getProcessDefinitionId()); logger.info("流程实例id:" + pi.getProcessInstanceId()); apply.setProcessId(pi.getProcessInstanceId()); apply.setChangeId(tEoegLockChange.getId()); tEoegLockApplyService.updateTEoegLockApply(apply); // 申请人申请直接通过 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); TaskService taskService = processEngine.getTaskService(); Task task = taskService.createTaskQuery().processInstanceId(pi.getProcessInstanceId()).active().singleResult(); String taskId = task.getId(); processEngine.getTaskService().claim(taskId, userId); taskService.addComment(taskId, pi.getProcessInstanceId(), ""); Map param = new HashMap<>(); param.put("condition", "1"); taskService.complete(taskId, param); return AjaxResult.success(); } catch (Exception e) { return AjaxResult.error("流程添加失败:" + e.getMessage()); } } @Log(title = "EOEG锁开锁关申请审核处理", businessType = BusinessType.UPDATE) @RepeatSubmit @PutMapping("/handle") public AjaxResult handle(@RequestBody DevTask devTask) { TEoegLockApply taskForm = devTask.gettEoegLockApply(); TEoegLockChange form = taskForm.gettEoegLockChange(); Date date = new Date(); //使用任务服务完成任务(提交任务) String taskId = devTask.getTaskId(); // 使用任务id,获取任务对象,获取流程实例id Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); //利用任务对象,获取流程实例id String processInstancesId = task.getProcessInstanceId(); TEoegLockChange change = tEoegLockChangeService.selectTEoegLockChangeById(form.getId());//申请单数据 TEoegLock tEoegLock = new TEoegLock(); tEoegLock.setUniqueIdentifier(change.getLockNo()); TEoegLock lock = tEoegLockService.selectTEoegLockList(tEoegLock).get(0);//锁数据 // 添加备注 String remarks = StringUtils.isEmpty(change.getRemarks()) ? "" : change.getRemarks(); String taskName = task.getName();//实例名 //流程审批意见 String symbol = ""; String text = ""; if (StringUtils.isNotEmpty(form.getRemarks())) { text = form.getRemarks(); symbol = ","; form.setRemarks(remarks + taskName + "-" + getNickName() + ":" + form.getRemarks() + ";"); } // 判断流程 if ("1".equals(devTask.getCondition())) { devTask.setComment("通过" + symbol + text); } else if ("0".equals(devTask.getCondition())) { devTask.setComment("拒绝" + symbol + text); change.setStatus(1L); change.setApproveStatus("3"); //修改锁状态 lock.setStatus(0L);//将锁状态改为已拆锁 tEoegLockService.updateTEoegLock(lock); } else if ("2".equals(devTask.getCondition())) { devTask.setComment("驳回" + symbol + text); } // 根据当前节点处理流程信息 Map param = new HashMap<>(); switch (taskName) { case "申请人提交申请": change.setChangeReason(form.getChangeReason()); change.setChangeDescribe(form.getChangeDescribe()); case "评估人"://评估人通过后,判断锁风险等级,B->流程至经理,C、D->流程至评估人 String lockLevel; if (lock.getRiskLevel().equals("B")) { lockLevel = "2"; } else { lockLevel = "1"; } change.setSafa(form.getSafa()); param.put("lockLevel", lockLevel); change.setSafaTime(date); break; case "批准人": case "评估人2": change.setApprover(getUserId().toString()); change.setApproverName(getNickName()); change.setApproveTime(date); break; case "措施确认人": change.setConfirmer(getUserId().toString()); change.setConfirmerName(getNickName()); change.setConfirmTime(date); change.setExecutionTime(date); break; case "变更确认人": change.setChangeExecutorTime(date); change.setChangeConfirmTime(date); change.setChangeExecution(form.getChangeExecution()); break; case "班长": change.setMonitor(getUserId().toString()); change.setMonitorName(getNickName()); change.setMonitorTime(date); change.setResetConfirmer1(form.getResetConfirmer1()); change.setResetConfirmer2(form.getResetConfirmer2()); change.setResetConfirmerName1(getUserNameById(form.getResetConfirmer1())); change.setResetConfirmerName2(getUserNameById(form.getResetConfirmer2())); change.setResetConfirmTime1(date); change.setResetConfirmTime2(date); change.setRevokeConfirm(form.getRevokeConfirm()); change.setResetConfirm(form.getResetConfirm()); change.setStatus(1L); change.setApproveStatus("2"); //修改锁状态 lock.setStatus(0L);//将锁状态改为已拆锁 tEoegLockService.updateTEoegLock(lock); break; } param.put("condition", devTask.getCondition()); ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); TaskService taskService = processEngine.getTaskService(); //认领任务 processEngine.getTaskService().claim(taskId, getUserId().toString()); taskService.addComment(taskId, processInstancesId, devTask.getComment()); taskService.complete(taskId, param); tEoegLockChangeService.updateTEoegLockChange(change); return AjaxResult.success(); } /** * 修改EOEG 锁开锁关申请 */ @PreAuthorize("@ss.hasPermi('eoeg:eoegChange:edit')") @Log(title = "EOEG 锁开锁关申请", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody TEoegLockChange tEoegLockChange) { try { fillUserNames(tEoegLockChange); return toAjax(tEoegLockChangeService.updateTEoegLockChange(tEoegLockChange)); } catch (Exception e) { return AjaxResult.error("更新失败:" + e.getMessage()); } } /** * 填充用户名称字段 */ private void fillUserNames(TEoegLockChange tEoegLockChange) { tEoegLockChange.setSafaerName(getUserNameById(tEoegLockChange.getSafaer())); tEoegLockChange.setExecutorName(getUserNameById(tEoegLockChange.getExecutor())); tEoegLockChange.setChangeConfirmerName(getUserNameById(tEoegLockChange.getChangeConfirmer())); tEoegLockChange.setChangeExecutorName(getUserNameById(tEoegLockChange.getChangeExecutor())); } /** * 根据ID获取用户名 */ private String getUserNameById(String userIdStr) { if (userIdStr == null || userIdStr.trim().isEmpty()) { throw new IllegalArgumentException("用户ID不能为空"); } Long userId; try { userId = Long.valueOf(userIdStr); } catch (NumberFormatException e) { throw new IllegalArgumentException("用户ID格式不正确: " + userIdStr); } SysUser user = sysUserService.selectUserById(userId); if (user == null) { throw new IllegalArgumentException("找不到ID为 " + userId + " 的用户"); } return user.getNickName(); } /** * 删除EOEG 锁开锁关申请 */ @PreAuthorize("@ss.hasPermi('eoeg:eoegChange:remove')") @Log(title = "EOEG 锁开锁关申请", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(tEoegLockChangeService.deleteTEoegLockChangeByIds(ids)); } /** * @param id * @return * @throws IOException */ @GetMapping("/wordView/{id}") public AjaxResult wordView(@PathVariable Long id) throws IOException { //根据ID查询并生成 String url = PreView(id); return AjaxResult.success(url); } /** * @param id 生成文件名 * @return * @throws IOException */ public String PreView(Long id) throws IOException { //根据ID查询并生成 TEoegLockChange tEoegLockChange = tEoegLockChangeService.selectTEoegLockChangeById(id); return this.createEoegLockChangeWord(tEoegLockChange); } /** * 生成word */ public String createEoegLockChangeWord(TEoegLockChange tEoegLockChange) throws IOException { //生成word //渲染文本 Map params = getWordData(tEoegLockChange); // 模板路径 String templatePath = "static/word/apply/applyEoegLock.docx"; // 生成word的路径 String fileDir = RuoYiConfig.getProfile() + "/" + "apply/eoegLockChange"; // 生成word的文件名称 String fileName = tEoegLockChange.getId() + ".docx"; return this.createWord(templatePath, fileDir, fileName, params); } /** * 获取word数据 */ public Map getWordData(TEoegLockChange tEoegLockChange) { Map params = new HashMap<>(); params.put("lockNo", Texts.of(tEoegLockChange.getLockNo()).fontSize(10).bold().create()); params.put("changeDescribe", Texts.of(tEoegLockChange.getChangeDescribe()).fontSize(10).bold().create()); params.put("changeReason", Texts.of(tEoegLockChange.getChangeReason()).fontSize(10).bold().create()); if (StringUtils.isNotEmpty(tEoegLockChange.getApplicant())) {//申请人 SysUser sysUser = sysUserService.selectUserById(Long.parseLong(tEoegLockChange.getApplicant())); if (sysUser.getSignUrl() != null && new File(fileName(sysUser.getSignUrl())).exists()) { params.put("applicantP", Pictures.ofLocal(fileName(sysUser.getSignUrl())).size(50, 20).create()); } else { params.put("applicant", Texts.of(sysUser.getNickName()).fontSize(10).bold().create()); } } if (tEoegLockChange.getApplicationTime() != null) {//申请时间 params.put("applicationTime", Texts.of(DateUtils.dateTimeMin(tEoegLockChange.getApplicationTime())).fontSize(9).bold().create()); } params.put("safa", Texts.of(tEoegLockChange.getSafa()).fontSize(10).bold().create()); if (StringUtils.isNotEmpty(tEoegLockChange.getSafaer())) {//安全评估人 SysUser sysUser = sysUserService.selectUserById(Long.parseLong(tEoegLockChange.getSafaer())); if (sysUser.getSignUrl() != null && new File(fileName(sysUser.getSignUrl())).exists()) { params.put("safaerP", Pictures.ofLocal(fileName(sysUser.getSignUrl())).size(50, 20).create()); } else { params.put("safaer", Texts.of(sysUser.getNickName()).fontSize(10).bold().create()); } } if (tEoegLockChange.getSafaTime() != null) {//安全评估时间 params.put("safaTime", Texts.of(DateUtils.dateTimeMin(tEoegLockChange.getSafaTime())).fontSize(9).bold().create()); } if (StringUtils.isNotEmpty(tEoegLockChange.getApprover())) {//批准人 SysUser sysUser = sysUserService.selectUserById(Long.parseLong(tEoegLockChange.getApprover())); if (sysUser.getSignUrl() != null && new File(fileName(sysUser.getSignUrl())).exists()) { params.put("approverP", Pictures.ofLocal(fileName(sysUser.getSignUrl())).size(50, 20).create()); } else { params.put("approver", Texts.of(sysUser.getNickName()).fontSize(10).bold().create()); } } if (tEoegLockChange.getApproveTime() != null) {//批准时间 params.put("approveTime", Texts.of(DateUtils.dateTimeMin(tEoegLockChange.getApproveTime())).fontSize(9).bold().create()); } if (StringUtils.isNotEmpty(tEoegLockChange.getChangeConfirmer())) {//变更确认人人 SysUser sysUser = sysUserService.selectUserById(Long.parseLong(tEoegLockChange.getChangeConfirmer())); if (sysUser.getSignUrl() != null && new File(fileName(sysUser.getSignUrl())).exists()) { params.put("chconP", Pictures.ofLocal(fileName(sysUser.getSignUrl())).size(50, 20).create()); } else { params.put("chcon", Texts.of(sysUser.getNickName()).fontSize(10).bold().create()); } } if (tEoegLockChange.getChangeConfirmTime() != null) {//变更确认时间 params.put("chconT", Texts.of(DateUtils.dateTimeMin(tEoegLockChange.getChangeConfirmTime())).fontSize(9).bold().create()); } // if (StringUtils.isNotEmpty(tEoegLockChange.getMonitor())) {//班长 // SysUser sysUser = sysUserService.selectUserById(Long.parseLong(tEoegLockChange.getMonitor())); // if (sysUser.getSignUrl() != null && new File(fileName(sysUser.getSignUrl())).exists()) { // params.put("monP", Pictures.ofLocal(fileName(sysUser.getSignUrl())).size(50, 20).create()); // } else { // params.put("mon", Texts.of(sysUser.getNickName()).fontSize(10).bold().create()); // } // } // if (tEoegLockChange.getMonitorTime() != null) {//班长确认时间 // params.put("monT", Texts.of(DateUtils.dateTimeMin(tEoegLockChange.getMonitorTime())).fontSize(9).bold().create()); // } if (StringUtils.isNotEmpty(tEoegLockChange.getExecutor())) {//临时安全措施执行人 SysUser sysUser = sysUserService.selectUserById(Long.parseLong(tEoegLockChange.getExecutor())); if (sysUser.getSignUrl() != null && new File(fileName(sysUser.getSignUrl())).exists()) { params.put("exeP", Pictures.ofLocal(fileName(sysUser.getSignUrl())).size(50, 20).create()); } else { params.put("exe", Texts.of(sysUser.getNickName()).fontSize(10).bold().create()); } } if (tEoegLockChange.getExecutionTime() != null) {//临时安全措施执行(时间) params.put("exeT", Texts.of(DateUtils.dateTimeMin(tEoegLockChange.getExecutionTime())).fontSize(9).bold().create()); } if (StringUtils.isNotEmpty(tEoegLockChange.getConfirmer())) {//临时安全措施确认人 SysUser sysUser = sysUserService.selectUserById(Long.parseLong(tEoegLockChange.getConfirmer())); if (sysUser.getSignUrl() != null && new File(fileName(sysUser.getSignUrl())).exists()) { params.put("conP", Pictures.ofLocal(fileName(sysUser.getSignUrl())).size(50, 20).create()); } else { params.put("con", Texts.of(sysUser.getNickName()).fontSize(10).bold().create()); } } if (tEoegLockChange.getConfirmTime() != null) {//临时安全措施确认(时间) params.put("conT", Texts.of(DateUtils.dateTimeMin(tEoegLockChange.getConfirmTime())).fontSize(9).bold().create()); } params.put("changeExecution", Texts.of(tEoegLockChange.getChangeExecution()).fontSize(10).bold().create()); if (StringUtils.isNotEmpty(tEoegLockChange.getChangeExecutor())) {//执行人 SysUser sysUser = sysUserService.selectUserById(Long.parseLong(tEoegLockChange.getChangeExecutor())); if (sysUser.getSignUrl() != null && new File(fileName(sysUser.getSignUrl())).exists()) { params.put("cEP", Pictures.ofLocal(fileName(sysUser.getSignUrl())).size(50, 20).create()); } else { params.put("cE", Texts.of(sysUser.getNickName()).fontSize(10).bold().create()); } } if (tEoegLockChange.getChangeExecutorTime() != null) {//执行时间) params.put("cET", Texts.of(DateUtils.dateTimeMin(tEoegLockChange.getChangeExecutorTime())).fontSize(9).bold().create()); } getCheck(params, tEoegLockChange.getResetConfirm(), "resetConfirm1", "resetConfirm2"); if (StringUtils.isNotEmpty(tEoegLockChange.getResetConfirmer1())) {//状态恢复,确认人1 SysUser sysUser = sysUserService.selectUserById(Long.parseLong(tEoegLockChange.getResetConfirmer1())); if (sysUser.getSignUrl() != null && new File(fileName(sysUser.getSignUrl())).exists()) { params.put("resetConfirmer1P", Pictures.ofLocal(fileName(sysUser.getSignUrl())).size(50, 20).create()); } else { params.put("resetConfirmer1", Texts.of(sysUser.getNickName()).fontSize(10).bold().create()); } } if (tEoegLockChange.getResetConfirmTime1() != null) {//状态恢复,确认人1时间) params.put("resetConfirmTime1", Texts.of(DateUtils.dateTimeMin(tEoegLockChange.getResetConfirmTime1())).fontSize(9).bold().create()); } if (StringUtils.isNotEmpty(tEoegLockChange.getResetConfirmer2())) {//状态恢复,确认人2 SysUser sysUser = sysUserService.selectUserById(Long.parseLong(tEoegLockChange.getResetConfirmer2())); if (sysUser.getSignUrl() != null && new File(fileName(sysUser.getSignUrl())).exists()) { params.put("resetConfirmer2P", Pictures.ofLocal(fileName(sysUser.getSignUrl())).size(50, 20).create()); } else { params.put("resetConfirmer2", Texts.of(sysUser.getNickName()).fontSize(10).bold().create()); } } if (tEoegLockChange.getResetConfirmTime2() != null) {//状态恢复,确认人2时间) params.put("resetConfirmTime2", Texts.of(DateUtils.dateTimeMin(tEoegLockChange.getResetConfirmTime2())).fontSize(9).bold().create()); } getCheck(params, tEoegLockChange.getRevokeConfirm(), "revoke1", "revoke2"); getCheck(params, tEoegLockChange.getRevokeConfirm(), "revoke3"); params.put("remarks", Texts.of(tEoegLockChange.getRemarks()).fontSize(10).bold().create()); // 渲染文本 return params; } /** * @param templatePath word模板文件路径 * @param fileDir 生成的文件存放地址 * @param fileName 生成的文件名 * @param paramMap 参数集合 * @return 返回word生成的路径 */ public String createWord(String templatePath, String fileDir, String fileName, Map paramMap) throws IOException { Assert.notNull(templatePath, "word模板文件路径不能为空"); Assert.notNull(fileDir, "生成的文件存放地址不能为空"); Assert.notNull(fileName, "生成的文件名不能为空"); File dir = new File(fileDir); if (!dir.exists()) { logger.info("目录不存在,创建文件夹{}!", fileDir); dir.mkdirs(); } fileName = fileName.replaceAll("/", "_"); //替换文件中敏感字段 logger.info("目录文件{}!", fileName); String filePath = fileDir + "/" + fileName; logger.info("目录{}!", filePath); // 读取模板渲染参数 InputStream is = getClass().getClassLoader().getResourceAsStream(templatePath); XWPFTemplate template = XWPFTemplate.compile(is).render(paramMap); try { // 将模板参数写入路径 template.writeToFile(filePath); template.close(); } catch (Exception e) { logger.error("生成word异常{}", e.getMessage()); e.printStackTrace(); } return FileUploadUtils.getPathFileName(RuoYiConfig.getFilePath("/apply/eoegLockChange"), fileName); } // 勾选框判断渲染 public void getCheck(Map params, String value, String check1, String check2) { if ("是".equals(value)) { params.put(check1, new TextRenderData("\u00FE", new Style("Wingdings", 9))); params.put(check2, new TextRenderData("\u006F", new Style("Wingdings", 9))); } else if ("否".equals(value)) { params.put(check1, new TextRenderData("\u006F", new Style("Wingdings", 9))); params.put(check2, new TextRenderData("\u00FE", new Style("Wingdings", 9))); } else { params.put(check1, new TextRenderData("\u006F", new Style("Wingdings", 9))); params.put(check2, new TextRenderData("\u006F", new Style("Wingdings", 9))); } } // 勾选框判断渲染 public void getCheck(Map params, String value, String check1) { if ("NA".equals(value)) { params.put(check1, new TextRenderData("\u00FE", new Style("Wingdings", 9))); } else { params.put(check1, new TextRenderData("\u006F", new Style("Wingdings", 9))); } } /** * @param * @return 映射签名的文件名 * @throws IOException */ public String fileName(String filepath) { String newFilePath = filepath.replace("/profile", ""); String pathName = RuoYiConfig.getProfile() + newFilePath; return pathName; } }