TApproveReserveInvoiceController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. package com.ruoyi.project.invoice.controller;
  2. import com.ruoyi.common.utils.DateUtils;
  3. import com.ruoyi.common.utils.poi.ExcelUtil;
  4. import com.ruoyi.framework.aspectj.lang.annotation.Log;
  5. import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
  6. import com.ruoyi.framework.web.controller.BaseController;
  7. import com.ruoyi.framework.web.domain.AjaxResult;
  8. import com.ruoyi.framework.web.page.TableDataInfo;
  9. import com.ruoyi.project.approve.damain.DevTask;
  10. import com.ruoyi.project.invoice.domain.TApproveReserveInvoice;
  11. import com.ruoyi.project.invoice.domain.TInvoiceBookingworkticket;
  12. import com.ruoyi.project.invoice.domain.TInvoiceWorkcontent;
  13. import com.ruoyi.project.invoice.mapper.TInvoiceWorkcontentMapper;
  14. import com.ruoyi.project.invoice.service.ITApproveReserveInvoiceService;
  15. import com.ruoyi.project.invoice.service.ITInvoiceBookingworkticketService;
  16. import com.ruoyi.project.listener.invoiceApprove.*;
  17. import org.activiti.engine.ProcessEngine;
  18. import org.activiti.engine.ProcessEngines;
  19. import org.activiti.engine.RuntimeService;
  20. import org.activiti.engine.TaskService;
  21. import org.activiti.engine.impl.identity.Authentication;
  22. import org.activiti.engine.runtime.ProcessInstance;
  23. import org.activiti.engine.task.Task;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.web.bind.annotation.*;
  26. import java.util.*;
  27. /**
  28. * 预约开票申请Controller
  29. *
  30. * @author ruoyi
  31. * @date 2022-08-29
  32. */
  33. @RestController
  34. @RequestMapping("/approve/invoice")
  35. public class TApproveReserveInvoiceController extends BaseController {
  36. @Autowired
  37. private ITApproveReserveInvoiceService tApproveReserveInvoiceService;
  38. @Autowired
  39. private ITInvoiceBookingworkticketService workService;
  40. @Autowired
  41. private TaskService taskService;
  42. @Autowired
  43. private RuntimeService runtimeService;
  44. @Autowired
  45. private TInvoiceWorkcontentMapper invoiceWorkcontentMapper;
  46. /**
  47. * 查询预约开票申请列表
  48. */
  49. @GetMapping("/list")
  50. public TableDataInfo list(TApproveReserveInvoice tApproveReserveInvoice) {
  51. startPage();
  52. List<TApproveReserveInvoice> list = tApproveReserveInvoiceService.selectTApproveReserveInvoiceList(tApproveReserveInvoice);
  53. for (TApproveReserveInvoice tApprove : list) {
  54. String[] ids;
  55. ids = tApprove.getInvoiceId().split(",");
  56. List<Object> devList = new ArrayList<>();
  57. for (String id : ids) {
  58. TInvoiceBookingworkticket book = workService.getById(id);
  59. devList.add(book);
  60. }
  61. tApprove.setDevList(devList);
  62. }
  63. return getDataTable(list);
  64. }
  65. /**
  66. * 导出预约开票申请列表
  67. */
  68. @Log(title = "预约开票申请", businessType = BusinessType.EXPORT)
  69. @GetMapping("/export")
  70. public AjaxResult export(TApproveReserveInvoice tApproveReserveInvoice) {
  71. List<TApproveReserveInvoice> list = tApproveReserveInvoiceService.selectTApproveReserveInvoiceList(tApproveReserveInvoice);
  72. ExcelUtil<TApproveReserveInvoice> util = new ExcelUtil<TApproveReserveInvoice>(TApproveReserveInvoice.class);
  73. return util.exportExcel(list, "invoice");
  74. }
  75. /**
  76. * 获取预约开票申请详细信息
  77. */
  78. @GetMapping(value = "/{id}")
  79. public AjaxResult getInfo(@PathVariable("id") Long id) {
  80. TApproveReserveInvoice tApprove = tApproveReserveInvoiceService.selectTApproveReserveInvoiceById(id);
  81. String[] ids;
  82. ids = tApprove.getInvoiceId().split(",");
  83. List<Object> devList = new ArrayList<>();
  84. for (String inId : ids) {
  85. TInvoiceBookingworkticket book = workService.getById(inId);
  86. devList.add(book);
  87. }
  88. tApprove.setDevList(devList);
  89. return AjaxResult.success(tApprove);
  90. }
  91. /**
  92. * 新增预约开票申请
  93. */
  94. @Log(title = "预约开票申请", businessType = BusinessType.INSERT)
  95. @PostMapping
  96. public AjaxResult add(@RequestBody TApproveReserveInvoice tApproveReserveInvoice) {
  97. Long userid = getUserId();
  98. tApproveReserveInvoice.setUserId(userid);
  99. tApproveReserveInvoice.setApNo(DateUtils.dateTimeNow() + userid);
  100. Authentication.setAuthenticatedUserId(userid.toString());
  101. tApproveReserveInvoiceService.insertTApproveReserveInvoice(tApproveReserveInvoice);
  102. long bussniseeKey = tApproveReserveInvoice.getId();
  103. String[] ids;
  104. ids = tApproveReserveInvoice.getInvoiceId().split(",");
  105. String devSupId = "";
  106. for (String id : ids) {
  107. TInvoiceBookingworkticket invoice = workService.getById(id);
  108. invoice.setStatus(1L);
  109. workService.updateById(invoice);
  110. switch (invoice.getWorkArea()) {
  111. case "310裂解区":
  112. case "700开关锅炉":
  113. case "320裂解区":
  114. case "250管廊-700":
  115. // devSupId="20253,20257";
  116. // break;
  117. case "330压缩区":
  118. case "废水处理":
  119. case "600废碱":
  120. case "250管廊-600":
  121. // devSupId="20249,20317";
  122. // break;
  123. case "380分离区":
  124. case "360分离区":
  125. case "350分离区":
  126. case "340分离区":
  127. // devSupId="20252";
  128. // break;
  129. case "400汽油加氢":
  130. case "250管廊-400":
  131. // devSupId="20248";
  132. // break;
  133. case "500芳烃抽提":
  134. case "250管廊-500":
  135. // devSupId="20244";
  136. // break;
  137. case "D301控制楼":
  138. case " D201变电所":
  139. case " 维修厂房":
  140. case "危废车库":
  141. // devSupId="20332,20250,20276";
  142. devSupId = "10081,10082";
  143. break;
  144. }
  145. }
  146. //开始工作流、监听
  147. Map<String, Object> variables = new HashMap<>();
  148. variables.put("applyUser", userid.toString());
  149. variables.put("yhzgusers", tApproveReserveInvoice.getUserSupId().toString());//用户主管
  150. variables.put("zzzgusers", devSupId);//装置主管
  151. if ("1".equals(tApproveReserveInvoice.getIsToday())) {
  152. variables.put("zzgcsusers", tApproveReserveInvoice.getDevEngineerId().toString());//装置工程师
  153. }
  154. if ("1".equals(tApproveReserveInvoice.getIsSpecial())) {
  155. variables.put("zzjlusers", tApproveReserveInvoice.getManagerconId().toString());//装置经理
  156. }
  157. variables.put("yhzgTaskCreateListener", new YhzgTaskCreateListener());//用户主管监听发送邮件
  158. variables.put("zzzgTaskCreateListener", new ZzzgTaskCreateListener());//装置主管监听发送邮件
  159. variables.put("zzgcsTaskCreateListener", new ZzgcsTaskCreateListener());//装置工程师监听发送邮件
  160. variables.put("zzjlTaskCreateListener", new ZzjlTaskCreateListener());//装置经理监听发送邮件
  161. variables.put("invoiceEndSuccessListener", new InvoiceEndSuccessListener());//流程结束监听发送邮件
  162. //采用key来启动流程定义并设置流程变量,返回流程实例
  163. ProcessInstance pi = runtimeService.startProcessInstanceByKey("reserveInvoice", String.valueOf(bussniseeKey), variables);
  164. logger.info("流程部署id:" + pi.getDeploymentId());
  165. logger.info("流程定义id:" + pi.getProcessDefinitionId());
  166. logger.info("流程实例id:" + pi.getProcessInstanceId());
  167. tApproveReserveInvoice.setProcessId(pi.getProcessInstanceId());
  168. tApproveReserveInvoiceService.updateTApproveReserveInvoice(tApproveReserveInvoice);
  169. return AjaxResult.success();
  170. }
  171. @Log(title = "预约开票审核处理", businessType = BusinessType.UPDATE)
  172. @PutMapping("/handle")
  173. public AjaxResult handle(@RequestBody DevTask devTask) {
  174. //流程审批意见
  175. String symbol = "";
  176. if (devTask.getComment() != "") {
  177. symbol = ",";
  178. }
  179. //使用任务服务完成任务(提交任务)
  180. String taskId = devTask.getTaskId();
  181. // 使用任务id,获取任务对象,获取流程实例id
  182. Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
  183. //利用任务对象,获取流程实例id
  184. String processInstancesId = task.getProcessInstanceId();
  185. TApproveReserveInvoice invoice = tApproveReserveInvoiceService.selectTApproveReserveInvoiceById(Long.parseLong(devTask.getBusinessKey()));
  186. if (devTask.getCondition().equals("1")) {
  187. devTask.setComment("通过" + symbol + devTask.getComment());
  188. invoice.setStatus(2L);
  189. invoice.setEnddate(new Date());
  190. } else if (devTask.getCondition().equals("0")) {
  191. devTask.setComment("未通过" + symbol + devTask.getComment());
  192. invoice.setStatus(3L);
  193. invoice.setEnddate(new Date());
  194. }
  195. Map<String, Object> param = new HashMap<>();
  196. TInvoiceBookingworkticket invoiceBook = workService.getById(invoice.getInvoiceId());
  197. // if (devTask.getCondition().equals("1") && task.getName().equals("装置经理签字确认")) {
  198. // invoiceBook.setStatus(3L);
  199. // } else if (devTask.getCondition().equals("0")) {
  200. // invoiceBook.setStatus(5L);
  201. // }
  202. // workService.updateById(invoiceBook);
  203. if (DateUtils.dateTime(invoiceBook.getCreatedate()).equals(DateUtils.dateTime(invoiceBook.getWorkStartTime()))) {
  204. param.put("istoday", "1");
  205. } else {
  206. param.put("istoday", "0");
  207. }
  208. List<TInvoiceWorkcontent> workcontents = invoiceWorkcontentMapper.selectTInvoiceWorkcontentBybookingticketId(Long.valueOf(invoice.getInvoiceId()));
  209. for (TInvoiceWorkcontent workcontent : workcontents) {
  210. if (workcontent.getWorkType() == 1 || workcontent.getWorkType() == 2 || workcontent.getWorkType() == 3 || workcontent.getWorkType() == 15) {
  211. param.put("isspecial", "1");
  212. break;
  213. } else {
  214. param.put("isspecial", "0");
  215. }
  216. }
  217. param.put("condition", devTask.getCondition());
  218. ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
  219. TaskService taskService = processEngine.getTaskService();
  220. //认领任务
  221. processEngine.getTaskService()
  222. .claim(taskId, getUserId().toString());
  223. taskService.addComment(taskId, processInstancesId, devTask.getComment());
  224. taskService.complete(taskId, param);
  225. tApproveReserveInvoiceService.updateTApproveReserveInvoice(invoice);
  226. return AjaxResult.success();
  227. }
  228. /**
  229. * 修改预约开票申请
  230. */
  231. @Log(title = "预约开票申请", businessType = BusinessType.UPDATE)
  232. @PutMapping
  233. public AjaxResult edit(@RequestBody TApproveReserveInvoice tApproveReserveInvoice) {
  234. return toAjax(tApproveReserveInvoiceService.updateTApproveReserveInvoice(tApproveReserveInvoice));
  235. }
  236. /**
  237. * 删除预约开票申请
  238. */
  239. @Log(title = "预约开票申请", businessType = BusinessType.DELETE)
  240. @DeleteMapping("/{ids}")
  241. public AjaxResult remove(@PathVariable Long[] ids) {
  242. return toAjax(tApproveReserveInvoiceService.deleteTApproveReserveInvoiceByIds(ids));
  243. }
  244. }