|
@@ -1,19 +1,27 @@
|
|
|
package com.ruoyi.project.apply.controller;
|
|
|
|
|
|
+import com.deepoove.poi.XWPFTemplate;
|
|
|
+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.web.controller.BaseController;
|
|
|
import com.ruoyi.framework.web.domain.AjaxResult;
|
|
|
import com.ruoyi.framework.web.page.TableDataInfo;
|
|
|
+import com.ruoyi.project.apply.domain.TApplyOfflinevalve;
|
|
|
import com.ruoyi.project.apply.domain.TApplySafetychange;
|
|
|
import com.ruoyi.project.apply.service.ITApplySafetychangeService;
|
|
|
import com.ruoyi.project.approve.damain.DevTask;
|
|
|
import com.ruoyi.project.plant.domain.TStaffmgr;
|
|
|
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;
|
|
@@ -25,6 +33,9 @@ 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;
|
|
@@ -252,4 +263,179 @@ public class TApplySafetychangeController extends BaseController {
|
|
|
public AjaxResult remove(@PathVariable Long[] ids) {
|
|
|
return toAjax(tApplySafetychangeService.deleteTApplySafetychangeByIds(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查询并生成
|
|
|
+ TApplySafetychange tApplySafetychange = tApplySafetychangeService.selectTApplySafetychangeById(id);
|
|
|
+ String url = this.createApplySafetychangeWord(tApplySafetychange);
|
|
|
+ return url;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成word
|
|
|
+ */
|
|
|
+ public String createApplySafetychangeWord(TApplySafetychange tApplySafetychange) throws IOException {
|
|
|
+ //生成word
|
|
|
+ //渲染文本
|
|
|
+ Map<String, Object> params = getWordData(tApplySafetychange);
|
|
|
+ // 模板路径
|
|
|
+ String templatePath = "static/word/apply/applySafetychange.docx";
|
|
|
+ // 生成word的路径
|
|
|
+ String fileDir = RuoYiConfig.getProfile() + "/" + "apply/applySafetychange";
|
|
|
+ // 生成word的文件名称
|
|
|
+ String fileName = tApplySafetychange.getId() + ".docx";
|
|
|
+ String wordPath = this.createWord(templatePath, fileDir, fileName, params);
|
|
|
+ return wordPath;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取word数据
|
|
|
+ */
|
|
|
+ public Map<String, Object> getWordData(TApplySafetychange tApplySafetychange) {
|
|
|
+ Map<String, Object> params = new HashMap<>();
|
|
|
+ params.put("changeDescribe", Texts.of(tApplySafetychange.getChangeDescribe()).fontSize(10).bold().create());
|
|
|
+ params.put("changeReason", Texts.of(tApplySafetychange.getChangeReason()).fontSize(10).bold().create());
|
|
|
+ if (StringUtils.isNotEmpty(tApplySafetychange.getApplicant())) {//申请人
|
|
|
+ SysUser sysUser = userService.selectUserById(Long.parseLong(tApplySafetychange.getApplicant()));
|
|
|
+ params.put("applicant", Texts.of(sysUser.getNickName()).fontSize(10).bold().create());
|
|
|
+ }
|
|
|
+ if (tApplySafetychange.getApplicationTime() != null) {//申请时间
|
|
|
+ params.put("applicationTime", Texts.of(DateUtils.dateTimeMin(tApplySafetychange.getApplicationTime())).fontSize(9).bold().create());
|
|
|
+ }
|
|
|
+ params.put("safa", Texts.of(tApplySafetychange.getSafa()).fontSize(10).bold().create());
|
|
|
+ if (StringUtils.isNotEmpty(tApplySafetychange.getSafaer())) {//安全评估人
|
|
|
+ SysUser sysUser = userService.selectUserById(Long.parseLong(tApplySafetychange.getSafaer()));
|
|
|
+ params.put("safaer", Texts.of(sysUser.getNickName()).fontSize(10).bold().create());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (tApplySafetychange.getSafaTime() != null) {//安全评估时间
|
|
|
+ params.put("safaTime", Texts.of(DateUtils.dateTimeMin(tApplySafetychange.getSafaTime())).fontSize(9).bold().create());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(tApplySafetychange.getApprover())) {//批准人
|
|
|
+ SysUser sysUser = userService.selectUserById(Long.parseLong(tApplySafetychange.getApprover()));
|
|
|
+ params.put("approver", Texts.of(sysUser.getNickName()).fontSize(10).bold().create());
|
|
|
+ }
|
|
|
+ if (tApplySafetychange.getApplicationTime() != null) {//批准时间
|
|
|
+ params.put("approveTime", Texts.of(DateUtils.dateTimeMin(tApplySafetychange.getApplicationTime())).fontSize(9).bold().create());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(tApplySafetychange.getExecutor())) {//临时安全措施执行人
|
|
|
+ SysUser sysUser = userService.selectUserById(Long.parseLong(tApplySafetychange.getExecutor()));
|
|
|
+ params.put("exe", Texts.of(sysUser.getNickName()).fontSize(10).bold().create());
|
|
|
+ }
|
|
|
+ if (tApplySafetychange.getExecutionTime() != null) {//临时安全措施执行(时间)
|
|
|
+ params.put("exeT", Texts.of(DateUtils.dateTimeMin(tApplySafetychange.getExecutionTime())).fontSize(9).bold().create());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(tApplySafetychange.getConfirmer())) {//临时安全措施确认人
|
|
|
+ SysUser sysUser = userService.selectUserById(Long.parseLong(tApplySafetychange.getConfirmer()));
|
|
|
+ params.put("con", Texts.of(sysUser.getNickName()).fontSize(10).bold().create());
|
|
|
+ }
|
|
|
+ if (tApplySafetychange.getConfirmTime() != null) {//临时安全措施确认(时间)
|
|
|
+ params.put("conT", Texts.of(DateUtils.dateTimeMin(tApplySafetychange.getConfirmTime())).fontSize(9).bold().create());
|
|
|
+ }
|
|
|
+ params.put("changeExecution", Texts.of(tApplySafetychange.getChangeExecution()).fontSize(10).bold().create());
|
|
|
+
|
|
|
+ if (StringUtils.isNotEmpty(tApplySafetychange.getChangeExecutor())) {//执行人
|
|
|
+ SysUser sysUser = userService.selectUserById(Long.parseLong(tApplySafetychange.getChangeExecutor()));
|
|
|
+ params.put("changeExecutor", Texts.of(sysUser.getNickName()).fontSize(10).bold().create());
|
|
|
+ }
|
|
|
+ if (tApplySafetychange.getChangeExecutorTime() != null) {//执行时间)
|
|
|
+ params.put("changeExecutorTime", Texts.of(DateUtils.dateTimeMin(tApplySafetychange.getChangeExecutorTime())).fontSize(9).bold().create());
|
|
|
+ }
|
|
|
+ getCheck(params,tApplySafetychange.getResetConfirm(),"resetConfirm1" ,"resetConfirm2");
|
|
|
+
|
|
|
+ if (StringUtils.isNotEmpty(tApplySafetychange.getResetConfirmer1())) {//状态恢复,确认人1
|
|
|
+ SysUser sysUser = userService.selectUserById(Long.parseLong(tApplySafetychange.getResetConfirmer1()));
|
|
|
+ params.put("resetConfirmer1", Texts.of(sysUser.getNickName()).fontSize(10).bold().create());
|
|
|
+ }
|
|
|
+ if (tApplySafetychange.getResetConfirmTime1() != null) {//状态恢复,确认人1时间)
|
|
|
+ params.put("resetConfirmTime1", Texts.of(DateUtils.dateTimeMin(tApplySafetychange.getResetConfirmTime1())).fontSize(9).bold().create());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(tApplySafetychange.getResetConfirmer2())) {//状态恢复,确认人2
|
|
|
+ SysUser sysUser = userService.selectUserById(Long.parseLong(tApplySafetychange.getResetConfirmer2()));
|
|
|
+ params.put("resetConfirmer2", Texts.of(sysUser.getNickName()).fontSize(10).bold().create());
|
|
|
+ }
|
|
|
+ if (tApplySafetychange.getResetConfirmTime2() != null) {//状态恢复,确认人2时间)
|
|
|
+ params.put("resetConfirmTime2", Texts.of(DateUtils.dateTimeMin(tApplySafetychange.getResetConfirmTime2())).fontSize(9).bold().create());
|
|
|
+ }
|
|
|
+
|
|
|
+ getCheck(params,tApplySafetychange.getRevokeConfirm(),"revoke1" ,"revoke2");
|
|
|
+ getCheck(params,tApplySafetychange.getRevokeConfirm(),"revoke3" );
|
|
|
+ params.put("remarks", Texts.of(tApplySafetychange.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<String, Object> 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();
|
|
|
+ }
|
|
|
+ String pathFileName = FileUploadUtils.getPathFileName(RuoYiConfig.getFilePath("/" + "apply/applySafetychange"), fileName);
|
|
|
+ return pathFileName;
|
|
|
+ }
|
|
|
+ // 勾选框判断渲染
|
|
|
+ public void getCheck (Map<String, Object> 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<String, Object> 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)));
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|