TApplyOfflinevalveController.java 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514
  1. package com.ruoyi.project.apply.controller;
  2. import com.deepoove.poi.XWPFTemplate;
  3. import com.deepoove.poi.data.Pictures;
  4. import com.deepoove.poi.data.TextRenderData;
  5. import com.deepoove.poi.data.Texts;
  6. import com.deepoove.poi.data.style.Style;
  7. import com.ruoyi.common.utils.DateUtils;
  8. import com.ruoyi.common.utils.StringUtils;
  9. import com.ruoyi.common.utils.file.FileUploadUtils;
  10. import com.ruoyi.common.utils.poi.ExcelUtil;
  11. import com.ruoyi.framework.aspectj.lang.annotation.Log;
  12. import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
  13. import com.ruoyi.framework.config.RuoYiConfig;
  14. import com.ruoyi.framework.interceptor.annotation.RepeatSubmit;
  15. import com.ruoyi.framework.web.controller.BaseController;
  16. import com.ruoyi.framework.web.domain.AjaxResult;
  17. import com.ruoyi.framework.web.page.TableDataInfo;
  18. import com.ruoyi.project.apply.domain.TApplyOfflinevalve;
  19. import com.ruoyi.project.apply.service.ITApplyOfflinevalveService;
  20. import com.ruoyi.project.approve.damain.DevTask;
  21. import com.ruoyi.project.listener.apply.valve.EndFailListener;
  22. import com.ruoyi.project.listener.apply.valve.EndSuccessListener;
  23. import com.ruoyi.project.listener.apply.valve.FlowListener;
  24. import com.ruoyi.project.listener.apply.valve.NextTaskListener;
  25. import com.ruoyi.project.plant.domain.TStaffmgr;
  26. import com.ruoyi.project.system.domain.SysUser;
  27. import com.ruoyi.project.system.service.ISysUserService;
  28. import io.jsonwebtoken.lang.Assert;
  29. import org.activiti.engine.ProcessEngine;
  30. import org.activiti.engine.ProcessEngines;
  31. import org.activiti.engine.RuntimeService;
  32. import org.activiti.engine.TaskService;
  33. import org.activiti.engine.impl.identity.Authentication;
  34. import org.activiti.engine.runtime.ProcessInstance;
  35. import org.activiti.engine.task.Task;
  36. import org.springframework.beans.factory.annotation.Autowired;
  37. import org.springframework.security.access.prepost.PreAuthorize;
  38. import org.springframework.web.bind.annotation.*;
  39. import java.io.File;
  40. import java.io.IOException;
  41. import java.io.InputStream;
  42. import java.util.Date;
  43. import java.util.HashMap;
  44. import java.util.List;
  45. import java.util.Map;
  46. /**
  47. * 安全阀离线切出申请Controller
  48. *
  49. * @author ruoyi
  50. * @date 2023-02-08
  51. */
  52. @RestController
  53. @RequestMapping("/apply/offlinevalve")
  54. public class TApplyOfflinevalveController extends BaseController {
  55. @Autowired
  56. private ITApplyOfflinevalveService tApplyOfflinevalveService;
  57. @Autowired
  58. private RuntimeService runtimeService;
  59. @Autowired
  60. private ISysUserService userService;
  61. @Autowired
  62. private TaskService taskService;
  63. /**
  64. * 查询安全阀离线切出申请列表
  65. */
  66. @PreAuthorize("@ss.hasPermi('apply:offlinevalve:list')")
  67. @GetMapping("/list")
  68. public TableDataInfo list(TApplyOfflinevalve tApplyOfflinevalve) {
  69. startPage();
  70. List<TApplyOfflinevalve> list = tApplyOfflinevalveService.selectTApplyOfflinevalveList(tApplyOfflinevalve);
  71. return getDataTable(list);
  72. }
  73. /**
  74. * 导出安全阀离线切出申请列表
  75. */
  76. @PreAuthorize("@ss.hasPermi('apply:offlinevalve:export')")
  77. @Log(title = "安全阀离线切出申请", businessType = BusinessType.EXPORT)
  78. @GetMapping("/export")
  79. public AjaxResult export(TApplyOfflinevalve tApplyOfflinevalve) {
  80. List<TApplyOfflinevalve> list = tApplyOfflinevalveService.selectTApplyOfflinevalveList(tApplyOfflinevalve);
  81. ExcelUtil<TApplyOfflinevalve> util = new ExcelUtil<TApplyOfflinevalve>(TApplyOfflinevalve.class);
  82. return util.exportExcel(list, "offlinevalve");
  83. }
  84. /**
  85. * 获取安全阀离线切出申请详细信息
  86. */
  87. // @PreAuthorize("@ss.hasPermi('apply:offlinevalve:query')")
  88. @GetMapping(value = "/{id}")
  89. public AjaxResult getInfo(@PathVariable("id") Long id) {
  90. return AjaxResult.success(tApplyOfflinevalveService.selectTApplyOfflinevalveById(id));
  91. }
  92. /**
  93. * 新增安全阀离线切出申请
  94. */
  95. @PreAuthorize("@ss.hasPermi('apply:offlinevalve:add')")
  96. @Log(title = "安全阀离线切出申请", businessType = BusinessType.INSERT)
  97. @RepeatSubmit
  98. @PostMapping
  99. public AjaxResult add(@RequestBody TApplyOfflinevalve tApplyOfflinevalve) {
  100. Long userId = getUserId();
  101. // 新增申请数据
  102. tApplyOfflinevalve.setApplicant(userId.toString());
  103. tApplyOfflinevalve.setApplicantName(getNickName());
  104. tApplyOfflinevalve.setApplicationTime(new Date());
  105. tApplyOfflinevalve.setCreatedate(new Date());
  106. tApplyOfflinevalve.setCreaterCode(userId.toString());
  107. if (StringUtils.isNotEmpty(tApplyOfflinevalve.getRemarks()) && (!tApplyOfflinevalve.getRemarks().endsWith(";") || !tApplyOfflinevalve.getRemarks().endsWith(";")))
  108. tApplyOfflinevalve.setRemarks("申请人-" + getNickName() + ":" + tApplyOfflinevalve.getRemarks() + ";");
  109. tApplyOfflinevalveService.insertTApplyOfflinevalve(tApplyOfflinevalve);
  110. // 开始申请流程
  111. tApplyOfflinevalve.setApNo(DateUtils.dateTimeNow() + userId);
  112. long businessKey = tApplyOfflinevalve.getId();
  113. String applyUser = userId.toString();
  114. //开始工作流、监听
  115. Authentication.setAuthenticatedUserId(applyUser);//设置当前申请人
  116. Map<String, Object> variables = new HashMap<>();
  117. variables.put("applyuser", applyUser);
  118. String confirmers = tApplyOfflinevalve.getConfirmer();
  119. StringBuilder confirmer = new StringBuilder();
  120. for (String staffId : confirmers.split(",")) {
  121. SysUser user = userService.selectUserByStaffId(staffId);
  122. confirmer.append(user.getUserId()).append(",");
  123. }
  124. if (StringUtils.isNotEmpty(confirmer.toString())) {
  125. confirmer = new StringBuilder(confirmer.substring(0, confirmer.length() - 1));
  126. }
  127. variables.put("confirmer", confirmer.toString());
  128. TStaffmgr tStaffmgr = new TStaffmgr();
  129. tStaffmgr.setActualposts("12");
  130. StringBuilder executor = new StringBuilder();
  131. for (SysUser user : userService.selectUserPost(tStaffmgr)) {
  132. executor.append(user.getUserId().toString()).append(",");
  133. }
  134. if (StringUtils.isNotEmpty(executor.toString())) {
  135. executor = new StringBuilder(executor.substring(0, executor.length() - 1));
  136. }
  137. variables.put("executor", executor.toString());
  138. variables.put("nextTaskListener", new NextTaskListener());
  139. variables.put("flowListener", new FlowListener());
  140. variables.put("endSuccessListener", new EndSuccessListener());
  141. variables.put("endFailListener", new EndFailListener());
  142. tApplyOfflinevalveService.updateTApplyOfflinevalve(tApplyOfflinevalve);
  143. //采用key来启动流程定义并设置流程变量,返回流程实例
  144. ProcessInstance pi = runtimeService.startProcessInstanceByKey("offlinevalve", String.valueOf(businessKey), variables);
  145. logger.info("流程定义id:" + pi.getProcessDefinitionId());
  146. logger.info("流程实例id:" + pi.getProcessInstanceId());
  147. tApplyOfflinevalve.setProcessId(pi.getProcessInstanceId());
  148. // 申请人申请直接通过
  149. ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
  150. TaskService taskService = processEngine.getTaskService();
  151. Task task = taskService.createTaskQuery().processInstanceId(pi.getProcessInstanceId()).active().singleResult();
  152. String taskId = task.getId();
  153. processEngine.getTaskService().claim(taskId, getUserId().toString());
  154. taskService.addComment(taskId, pi.getProcessInstanceId(), "");
  155. Map<String, Object> param = new HashMap<>();
  156. param.put("condition", "1");
  157. taskService.complete(taskId, param);
  158. return AjaxResult.success();
  159. }
  160. @Log(title = "安全阀离线切出申请审核处理", businessType = BusinessType.UPDATE)
  161. @RepeatSubmit
  162. @PutMapping("/handle")
  163. public AjaxResult handle(@RequestBody DevTask devTask) {
  164. //更新数据
  165. TApplyOfflinevalve form = devTask.getOfflinevalve();
  166. //使用任务服务完成任务(提交任务)
  167. String taskId = devTask.getTaskId();
  168. // 使用任务id,获取任务对象,获取流程实例id
  169. Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
  170. //利用任务对象,获取流程实例id
  171. String processInstancesId = task.getProcessInstanceId();
  172. // 旧数据
  173. TApplyOfflinevalve tApplyOfflinevalve = tApplyOfflinevalveService.selectTApplyOfflinevalveById(form.getId());
  174. String taskName = task.getName();//实例名
  175. // 添加备注
  176. String remarks = StringUtils.isEmpty(tApplyOfflinevalve.getRemarks()) ? "" : tApplyOfflinevalve.getRemarks();
  177. if (taskName.contains("信息确认人")) {
  178. taskName = "信息确认人";
  179. }
  180. //流程审批意见
  181. String symbol = "";
  182. String text = "";
  183. if (StringUtils.isNotEmpty(form.getRemarks())) {
  184. text = form.getRemarks();
  185. symbol = ",";
  186. form.setRemarks(remarks + taskName + "-" + getNickName() + ":" + form.getRemarks() + ";");
  187. } else
  188. form.setRemarks("");
  189. // 判断流程
  190. if ("1".equals(devTask.getCondition())) {
  191. devTask.setComment("通过" + symbol + text);
  192. } else if ("0".equals(devTask.getCondition())) {
  193. devTask.setComment("拒绝" + symbol + text);
  194. form.setStatus(1L);
  195. form.setApproveStatus("3");
  196. } else if ("2".equals(devTask.getCondition())) {
  197. devTask.setComment("驳回" + symbol + text);
  198. }
  199. // 根据实例名判断当前流程节点
  200. Map<String, Object> param = new HashMap<>();
  201. switch (task.getName()) {
  202. case "临时措施制定人":
  203. form.setConfirmer(getUserId().toString());
  204. form.setConfirmerName(getNickName());
  205. break;
  206. case "临时措施确认人":
  207. form.setConfirmer(getUserId().toString());
  208. form.setConfirmerName(getNickName());
  209. form.setTemporaryTime(new Date());
  210. //查询经理
  211. TStaffmgr tStaffmgr = new TStaffmgr();
  212. tStaffmgr.setActualposts("24,26");
  213. StringBuilder approvers = new StringBuilder();
  214. for (SysUser user : userService.selectUserPost(tStaffmgr)) {
  215. approvers.append(user.getUserId().toString()).append(",");
  216. }
  217. if (StringUtils.isNotEmpty(approvers.toString())) {
  218. approvers = new StringBuilder(approvers.substring(0, approvers.length() - 1));
  219. }
  220. param.put("approver", approvers.toString());
  221. break;
  222. case "临时措施执行人":
  223. form.setExecutor(getUserId().toString());
  224. form.setExecutorName(getNickName());
  225. form.setExecutionTime(new Date());
  226. break;
  227. case "批准人":
  228. form.setApprover(getUserId().toString());
  229. form.setApproverName(getNickName());
  230. form.setApproveTime(new Date());
  231. if ("1".equals(devTask.getCondition()))//只有通过时审批状态才会变为已通过
  232. form.setApproveStatus("2");
  233. param.put("infoconfirmer", tApplyOfflinevalve.getConfirmer());
  234. break;
  235. case "信息确认人":
  236. param.put("lockConfirmer", form.getLockConfirmer1());//设置上锁确认人
  237. form.setLockConfirmer1(null);
  238. break;
  239. case "确认人":
  240. // 如果上锁确认人1不为空上锁确认人2即信息确认人2
  241. form.setInfoConfirmer(getUserId().toString());
  242. form.setInfoConfirmerName(getNickName());
  243. form.setStatus(1L);//信息确认人2确认后申请单状态为已完成
  244. form.setConfirmTime(new Date());
  245. if (StringUtils.isNotEmpty(tApplyOfflinevalve.getLockConfirmer1())) {
  246. form.setLockConfirmer2(getUserId().toString());
  247. form.setLockConfirmer2Name(getNickName());
  248. } else {
  249. form.setLockConfirm("NA");//否则确认是否已上锁为NA
  250. }
  251. break;
  252. case "上锁人":
  253. form.setLockConfirmer1(getUserId().toString());
  254. form.setLockConfirmer1Name(getNickName());
  255. break;
  256. }
  257. //网关判断
  258. if (StringUtils.isNotEmpty(tApplyOfflinevalve.getDisassembly()) && "是".equals(tApplyOfflinevalve.getDisassembly())) {
  259. param.put("is_unlock", "1");
  260. } else if (StringUtils.isNotEmpty(tApplyOfflinevalve.getDisassembly()) && !"是".equals(tApplyOfflinevalve.getDisassembly())) {
  261. param.put("is_unlock", "0");
  262. }
  263. param.put("condition", devTask.getCondition());
  264. ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
  265. TaskService taskService = processEngine.getTaskService();
  266. //认领任务
  267. processEngine.getTaskService()
  268. .claim(taskId, getUserId().toString());
  269. taskService.addComment(taskId, processInstancesId, devTask.getComment());
  270. taskService.complete(taskId, param);
  271. //任务完成更新数据
  272. tApplyOfflinevalveService.updateTApplyOfflinevalve(form);
  273. return AjaxResult.success();
  274. }
  275. /**
  276. * 修改安全阀离线切出申请
  277. */
  278. @PreAuthorize("@ss.hasPermi('apply:offlinevalve:edit')")
  279. @Log(title = "安全阀离线切出申请", businessType = BusinessType.UPDATE)
  280. @PutMapping
  281. public AjaxResult edit(@RequestBody TApplyOfflinevalve tApplyOfflinevalve) {
  282. tApplyOfflinevalve.setUpdatedate(new Date());
  283. tApplyOfflinevalve.setUpdaterCode(getUserId());
  284. return toAjax(tApplyOfflinevalveService.updateTApplyOfflinevalve(tApplyOfflinevalve));
  285. }
  286. /**
  287. * 删除安全阀离线切出申请
  288. */
  289. @PreAuthorize("@ss.hasPermi('apply:offlinevalve:remove')")
  290. @Log(title = "安全阀离线切出申请", businessType = BusinessType.DELETE)
  291. @DeleteMapping("/{ids}")
  292. public AjaxResult remove(@PathVariable Long[] ids) {
  293. return toAjax(tApplyOfflinevalveService.deleteTApplyOfflinevalveByIds(ids));
  294. }
  295. /**
  296. * @param id
  297. * @return
  298. * @throws IOException
  299. */
  300. @GetMapping("/wordView/{id}")
  301. public AjaxResult wordView(@PathVariable Long id) throws IOException {
  302. //根据ID查询并生成
  303. String url = PreView(id);
  304. return AjaxResult.success(url);
  305. }
  306. /**
  307. * @param id 生成文件名
  308. * @return
  309. * @throws IOException
  310. */
  311. public String PreView(Long id) throws IOException {
  312. //根据ID查询并生成
  313. TApplyOfflinevalve tApplyOfflinevalve = tApplyOfflinevalveService.selectTApplyOfflinevalveById(id);
  314. String url = this.createApplyOfflinevalveWord(tApplyOfflinevalve);
  315. return url;
  316. }
  317. /**
  318. * 生成word
  319. */
  320. public String createApplyOfflinevalveWord(TApplyOfflinevalve tApplyOfflinevalve) throws IOException {
  321. //生成word
  322. //渲染文本
  323. Map<String, Object> params = getWordData(tApplyOfflinevalve);
  324. // 模板路径
  325. String templatePath = "static/word/apply/applyOfflinevalve.docx";
  326. // 生成word的路径
  327. String fileDir = RuoYiConfig.getProfile() + "/" + "apply/applyOfflinevalve";
  328. // 生成word的文件名称
  329. String fileName = tApplyOfflinevalve.getId() + ".docx";
  330. String wordPath = this.createWord(templatePath, fileDir, fileName, params);
  331. return wordPath;
  332. }
  333. /**
  334. * 获取word数据
  335. */
  336. public Map<String, Object> getWordData(TApplyOfflinevalve tApplyOfflinevalve) {
  337. Map<String, Object> params = new HashMap<>();
  338. params.put("devNo", Texts.of(tApplyOfflinevalve.getDevNo()).fontSize(10).bold().create());
  339. params.put("unit", Texts.of(tApplyOfflinevalve.getUnit()).fontSize(10).bold().create());
  340. params.put("offlineReason", Texts.of(tApplyOfflinevalve.getOfflineReason()).fontSize(10).bold().create());
  341. params.put("safa", Texts.of(tApplyOfflinevalve.getSafa()).fontSize(10).bold().create());
  342. if (StringUtils.isNotEmpty(tApplyOfflinevalve.getExecutor())) {
  343. SysUser sysUser = userService.selectUserById(Long.parseLong(tApplyOfflinevalve.getExecutor()));
  344. if (sysUser.getSignUrl() != null && new File(fileName(sysUser.getSignUrl())).exists()) {
  345. params.put("execP", Pictures.ofLocal(fileName(sysUser.getSignUrl())).size(50, 20).create());
  346. } else {
  347. params.put("executor", Texts.of(sysUser.getNickName()).fontSize(10).bold().create());
  348. }
  349. }
  350. if (tApplyOfflinevalve.getExecutionTime() != null) {//临时措施执行时间
  351. params.put("execT", Texts.of(DateUtils.dateTimeMin(tApplyOfflinevalve.getExecutionTime())).fontSize(9).bold().create());
  352. }
  353. if (StringUtils.isNotEmpty(tApplyOfflinevalve.getConfirmer())) {
  354. SysUser sysUser = userService.selectUserById(Long.parseLong(tApplyOfflinevalve.getConfirmer()));
  355. if (sysUser.getSignUrl() != null && new File(fileName(sysUser.getSignUrl())).exists()) {
  356. params.put("tpP", Pictures.ofLocal(fileName(sysUser.getSignUrl())).size(50, 20).create());
  357. } else {
  358. params.put("confirmer", Texts.of(sysUser.getNickName()).fontSize(10).bold().create());
  359. }
  360. }
  361. if (tApplyOfflinevalve.getTemporaryTime() != null) {//临时措施确认时间
  362. params.put("tpT", Texts.of(DateUtils.dateTimeMin(tApplyOfflinevalve.getTemporaryTime())).fontSize(9).bold().create());
  363. }
  364. if (StringUtils.isNotEmpty(tApplyOfflinevalve.getApplicant())) {
  365. SysUser sysUser = userService.selectUserById(Long.parseLong(tApplyOfflinevalve.getApplicant()));
  366. if (sysUser.getSignUrl() != null && new File(fileName(sysUser.getSignUrl())).exists()) {
  367. params.put("applicantP", Pictures.ofLocal(fileName(sysUser.getSignUrl())).size(50, 20).create());
  368. } else {
  369. params.put("applicant", Texts.of(sysUser.getNickName()).fontSize(10).bold().create());
  370. }
  371. }
  372. if (tApplyOfflinevalve.getApplicationTime() != null) {//申请时间
  373. params.put("applicationTime", Texts.of(DateUtils.dateTimeMin(tApplyOfflinevalve.getApplicationTime())).fontSize(9).bold().create());
  374. }
  375. if (StringUtils.isNotEmpty(tApplyOfflinevalve.getApprover())) {
  376. SysUser sysUser = userService.selectUserById(Long.parseLong(tApplyOfflinevalve.getApprover()));
  377. if (sysUser.getSignUrl() != null && new File(fileName(sysUser.getSignUrl())).exists()) {
  378. params.put("approverP", Pictures.ofLocal(fileName(sysUser.getSignUrl())).size(50, 20).create());
  379. } else {
  380. params.put("approver", Texts.of(sysUser.getNickName()).fontSize(10).bold().create());
  381. }
  382. }
  383. if (tApplyOfflinevalve.getApproveTime() != null) {//批准时间
  384. params.put("approveTime", Texts.of(DateUtils.dateTimeMin(tApplyOfflinevalve.getApproveTime())).fontSize(9).bold().create());
  385. }
  386. if (StringUtils.isNotEmpty(tApplyOfflinevalve.getLockConfirmer1())) {
  387. SysUser sysUser = userService.selectUserById(Long.parseLong(tApplyOfflinevalve.getLockConfirmer1()));
  388. if (sysUser.getSignUrl() != null && new File(fileName(sysUser.getSignUrl())).exists()) {
  389. params.put("lockConfirmer1P", Pictures.ofLocal(fileName(sysUser.getSignUrl())).size(50, 20).create());
  390. } else {
  391. params.put("lockConfirmer1", Texts.of(sysUser.getNickName()).fontSize(10).bold().create());
  392. }
  393. }
  394. if (StringUtils.isNotEmpty(tApplyOfflinevalve.getLockConfirmer2())) {
  395. SysUser sysUser = userService.selectUserById(Long.parseLong(tApplyOfflinevalve.getLockConfirmer2()));
  396. if (sysUser.getSignUrl() != null && new File(fileName(sysUser.getSignUrl())).exists()) {
  397. params.put("lockConfirmer2P", Pictures.ofLocal(fileName(sysUser.getSignUrl())).size(50, 20).create());
  398. } else {
  399. params.put("lockConfirmer2", Texts.of(sysUser.getNickName()).fontSize(10).bold().create());
  400. }
  401. }
  402. if (StringUtils.isNotEmpty(tApplyOfflinevalve.getInfoConfirmer())) {
  403. SysUser sysUser = userService.selectUserById(Long.parseLong(tApplyOfflinevalve.getInfoConfirmer()));
  404. if (sysUser.getSignUrl() != null && new File(fileName(sysUser.getSignUrl())).exists()) {
  405. params.put("infoConfirmerP", Pictures.ofLocal(fileName(sysUser.getSignUrl())).size(50, 20).create());
  406. } else {
  407. params.put("infoConfirmer", Texts.of(sysUser.getNickName()).fontSize(10).bold().create());
  408. }
  409. }
  410. if (tApplyOfflinevalve.getConfirmTime() != null) {//确认时间
  411. params.put("confirmTime", Texts.of(DateUtils.dateTimeMin(tApplyOfflinevalve.getConfirmTime())).fontSize(9).bold().create());
  412. }
  413. params.put("remarks", Texts.of(tApplyOfflinevalve.getRemarks()).fontSize(10).bold().create());
  414. getCheck(params, tApplyOfflinevalve.getDisassembly(), "d1", "d2");
  415. getCheck(params, tApplyOfflinevalve.getDisassembly(), "d3");
  416. getCheck(params, tApplyOfflinevalve.getResetConfirm(), "reset1", "reset2");
  417. getCheck(params, tApplyOfflinevalve.getLeakConfirm(), "leak1", "leak2");
  418. getCheck(params, tApplyOfflinevalve.getRevokeConfirm(), "revoke1", "revoke2");
  419. getCheck(params, tApplyOfflinevalve.getLockConfirm(), "lock1", "lock2");
  420. getCheck(params, tApplyOfflinevalve.getLockConfirm(), "lock3");
  421. // 渲染文本
  422. return params;
  423. }
  424. /**
  425. * @param templatePath word模板文件路径
  426. * @param fileDir 生成的文件存放地址
  427. * @param fileName 生成的文件名
  428. * @param paramMap 参数集合
  429. * @return 返回word生成的路径
  430. */
  431. public String createWord(String templatePath, String fileDir, String fileName, Map<String, Object> paramMap) throws IOException {
  432. Assert.notNull(templatePath, "word模板文件路径不能为空");
  433. Assert.notNull(fileDir, "生成的文件存放地址不能为空");
  434. Assert.notNull(fileName, "生成的文件名不能为空");
  435. File dir = new File(fileDir);
  436. if (!dir.exists()) {
  437. logger.info("目录不存在,创建文件夹{}!", fileDir);
  438. dir.mkdirs();
  439. }
  440. fileName = fileName.replaceAll("/", "_"); //替换文件中敏感字段
  441. logger.info("目录文件{}!", fileName);
  442. String filePath = fileDir + "/" + fileName;
  443. logger.info("目录{}!", filePath);
  444. // 读取模板渲染参数
  445. InputStream is = getClass().getClassLoader().getResourceAsStream(templatePath);
  446. XWPFTemplate template = XWPFTemplate.compile(is).render(paramMap);
  447. try {
  448. // 将模板参数写入路径
  449. template.writeToFile(filePath);
  450. template.close();
  451. } catch (Exception e) {
  452. logger.error("生成word异常{}", e.getMessage());
  453. e.printStackTrace();
  454. }
  455. String pathFileName = FileUploadUtils.getPathFileName(RuoYiConfig.getFilePath("/" + "apply/applyOfflinevalve"), fileName);
  456. return pathFileName;
  457. }
  458. // 勾选框判断渲染
  459. public void getCheck(Map<String, Object> params, String value, String check1, String check2) {
  460. if ("是".equals(value)) {
  461. params.put(check1, new TextRenderData("\u00FE", new Style("Wingdings", 9)));
  462. params.put(check2, new TextRenderData("\u006F", new Style("Wingdings", 9)));
  463. } else if ("否".equals(value)) {
  464. params.put(check1, new TextRenderData("\u006F", new Style("Wingdings", 9)));
  465. params.put(check2, new TextRenderData("\u00FE", new Style("Wingdings", 9)));
  466. } else {
  467. params.put(check1, new TextRenderData("\u006F", new Style("Wingdings", 9)));
  468. params.put(check2, new TextRenderData("\u006F", new Style("Wingdings", 9)));
  469. }
  470. }
  471. // 勾选框判断渲染
  472. public void getCheck(Map<String, Object> params, String value, String check1) {
  473. if ("NA".equals(value)) {
  474. params.put(check1, new TextRenderData("\u00FE", new Style("Wingdings", 9)));
  475. } else {
  476. params.put(check1, new TextRenderData("\u006F", new Style("Wingdings", 9)));
  477. }
  478. }
  479. /**
  480. * @param
  481. * @return 映射签名的文件名
  482. * @throws IOException
  483. */
  484. public String fileName(String filepath) {
  485. String newFilePath = filepath.replace("/profile", "");
  486. String pathName = RuoYiConfig.getProfile() + newFilePath;
  487. return pathName;
  488. }
  489. }