TPssrPipeController.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339
  1. package com.ruoyi.project.pssr.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.ruoyi.common.utils.StringUtils;
  4. import com.ruoyi.common.utils.poi.ExcelUtil;
  5. import com.ruoyi.framework.aspectj.lang.annotation.Log;
  6. import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
  7. import com.ruoyi.framework.web.controller.BaseController;
  8. import com.ruoyi.framework.web.domain.AjaxResult;
  9. import com.ruoyi.framework.web.page.TableDataInfo;
  10. import com.ruoyi.project.pssr.domain.TPssrApprove;
  11. import com.ruoyi.project.pssr.domain.TPssrPipe;
  12. import com.ruoyi.project.pssr.domain.TPssrSubcontent;
  13. import com.ruoyi.project.pssr.mapper.TPssrPipeMapper;
  14. import com.ruoyi.project.pssr.service.ITPssrApproveService;
  15. import com.ruoyi.project.pssr.service.ITPssrFileService;
  16. import com.ruoyi.project.pssr.service.ITPssrPipeService;
  17. import com.ruoyi.project.pssr.service.ITPssrSubcontentService;
  18. import com.ruoyi.project.sems.domain.TSpecdevYlgd;
  19. import com.ruoyi.project.sems.mapper.TSpecdevYlgdMapper;
  20. import org.activiti.engine.HistoryService;
  21. import org.activiti.engine.RuntimeService;
  22. import org.activiti.engine.impl.identity.Authentication;
  23. import org.activiti.engine.runtime.ProcessInstance;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.security.access.prepost.PreAuthorize;
  26. import org.springframework.web.bind.annotation.*;
  27. import javax.annotation.Resource;
  28. import java.util.*;
  29. /**
  30. * 管道Controller
  31. *
  32. * @author ssy
  33. * @date 2024-09-18
  34. */
  35. @RestController
  36. @RequestMapping("/pssr/pipe")
  37. public class TPssrPipeController extends BaseController {
  38. @Autowired
  39. private ITPssrFileService tPssrFileService;
  40. @Autowired
  41. private ITPssrPipeService tPssrPipeService;
  42. @Resource
  43. private TSpecdevYlgdMapper tSpecdevYlgdMapper;
  44. @Resource
  45. private TPssrPipeMapper tPssrPipeMapper;
  46. @Autowired
  47. private ITPssrApproveService tPssrApproveService;
  48. @Autowired
  49. private RuntimeService runtimeService;
  50. @Autowired
  51. private HistoryService historyService;
  52. @Autowired
  53. private ITPssrSubcontentService tPssrSubcontentService;
  54. /**
  55. * 查询管道列表
  56. */
  57. @PreAuthorize("@ss.hasPermi('pssr:pipe:list')")
  58. @GetMapping("/list")
  59. public TableDataInfo list(TPssrPipe tPssrPipe) {
  60. startPage();
  61. List<TPssrPipe> list = tPssrPipeService.selectTPssrPipeList(tPssrPipe);
  62. list.forEach(item -> {
  63. item.setFileList(tPssrFileService.selectTPssrFileListByItem(item.getSubId(), item.getId(), "ylgd"));
  64. });
  65. return getDataTable(list);
  66. }
  67. /**
  68. * 查询管道列表
  69. */
  70. @PreAuthorize("@ss.hasPermi('pssr:pipe:add')")
  71. @GetMapping("/syncPipe")
  72. public AjaxResult syncPipe(TPssrPipe tPssrPipe) {
  73. TSpecdevYlgd tSpecdevYlgd = new TSpecdevYlgd();
  74. TPssrSubcontent subcontent = tPssrSubcontentService.selectTPssrSubcontentById(tPssrPipe.getSubId());
  75. List<TSpecdevYlgd> list = new ArrayList<>();
  76. //删除老数据
  77. tPssrPipeMapper.deleteTPssrPipeBySubId(tPssrPipe.getSubId());
  78. if (StringUtils.isNotEmpty(subcontent.getUnit())) {
  79. for (String unit : subcontent.getUnit().split(",")) {
  80. tSpecdevYlgd.setPlantCode("BCC");
  81. tSpecdevYlgd.setDevno("-" + unit);
  82. for (TSpecdevYlgd t : tSpecdevYlgdMapper.selectTSpecdevYlgdListForPssr(tSpecdevYlgd)) {
  83. TPssrPipe pipe = new TPssrPipe();
  84. pipe.setUnit(unit);
  85. pipe.setPipelineName(t.getDevname());
  86. pipe.setPipelineNo(t.getDevno());
  87. pipe.setSubId(tPssrPipe.getSubId());
  88. pipe.setChecked("√");
  89. pipe.setRequire("√");
  90. pipe.setValidity("√");
  91. pipe.setApproveStatus(0L);
  92. pipe.setCreatedate(new Date());
  93. pipe.setCreaterCode(getUserId().toString());
  94. tPssrPipeService.insertTPssrPipe(pipe);
  95. }
  96. }
  97. }
  98. return AjaxResult.success();
  99. }
  100. /**
  101. * 导出管道列表
  102. */
  103. @PreAuthorize("@ss.hasPermi('pssr:pipe:export')")
  104. @Log(title = "管道", businessType = BusinessType.EXPORT)
  105. @GetMapping("/export")
  106. public AjaxResult export(TPssrPipe tPssrPipe) {
  107. List<TPssrPipe> list = tPssrPipeService.selectTPssrPipeList(tPssrPipe);
  108. ExcelUtil<TPssrPipe> util = new ExcelUtil<TPssrPipe>(TPssrPipe.class);
  109. return util.exportExcel(list, "pipe");
  110. }
  111. /**
  112. * 获取管道详细信息
  113. */
  114. @PreAuthorize("@ss.hasPermi('pssr:pipe:query')")
  115. @GetMapping(value = "/{id}")
  116. public AjaxResult getInfo(@PathVariable("id") Long id) {
  117. TPssrPipe item = tPssrPipeService.selectTPssrPipeById(id);
  118. item.setFileList(tPssrFileService.selectTPssrFileListByItem(item.getSubId(), item.getId(), "ylgd"));
  119. return AjaxResult.success(item);
  120. }
  121. /**
  122. * 新增管道
  123. */
  124. @PreAuthorize("@ss.hasPermi('pssr:pipe:add')")
  125. @Log(title = "管道", businessType = BusinessType.INSERT)
  126. @PostMapping
  127. public AjaxResult add(@RequestBody TPssrPipe tPssrPipe) {
  128. tPssrPipe.setApproveStatus(0L);
  129. tPssrPipe.setCreatedate(new Date());
  130. tPssrPipe.setCreaterCode(getUserId().toString());
  131. return toAjax(tPssrPipeService.insertTPssrPipe(tPssrPipe));
  132. }
  133. /**
  134. * 修改管道
  135. */
  136. @PreAuthorize("@ss.hasPermi('pssr:pipe:edit')")
  137. @Log(title = "管道", businessType = BusinessType.UPDATE)
  138. @PutMapping
  139. public AjaxResult edit(@RequestBody TPssrPipe tPssrPipe) {
  140. tPssrFileService.updateFileRelevance(tPssrPipe.getFileIds(), "ylgd", tPssrPipe.getId(), tPssrPipe.getSubId());
  141. return toAjax(tPssrPipeService.updateTPssrPipe(tPssrPipe));
  142. }
  143. /**
  144. * 修改管道
  145. */
  146. @PreAuthorize("@ss.hasPermi('pssr:pipe:edit')")
  147. @Log(title = "管道批量修改", businessType = BusinessType.UPDATE)
  148. @PutMapping("/editBatch")
  149. public AjaxResult editBatch(@RequestBody TPssrPipe tPssrPipe) {
  150. logger.info(JSON.toJSONString(tPssrPipe));
  151. return toAjax(tPssrPipeMapper.updateTPssrPipeByIds(tPssrPipe));
  152. }
  153. /**
  154. * 删除管道
  155. */
  156. @PreAuthorize("@ss.hasPermi('pssr:pipe:remove')")
  157. @Log(title = "管道", businessType = BusinessType.DELETE)
  158. @DeleteMapping("/{ids}")
  159. public AjaxResult remove(@PathVariable Long[] ids) {
  160. return toAjax(tPssrPipeService.deleteTPssrPipeByIds(ids));
  161. }
  162. /**
  163. * 确认压力管道
  164. */
  165. @PreAuthorize("@ss.hasPermi('pssr:pipe:edit')")
  166. @Log(title = "确认压力管道", businessType = BusinessType.UPDATE)
  167. @PutMapping("/confirmPipe")
  168. public AjaxResult confirmPipe(@RequestBody TPssrPipe tPssrPipe) {
  169. long queryStatus = 0;
  170. long approveStatus = 0;
  171. Date date = null;
  172. TPssrPipe pipe = new TPssrPipe();
  173. if (tPssrPipe.getTaskType() == 4) {
  174. //确认人1确认
  175. queryStatus = 1;
  176. approveStatus = 3;
  177. pipe.setConfirmer1(getUserId().toString());
  178. date = new Date();
  179. } else if (tPssrPipe.getTaskType() == 5) {
  180. //确认人2确认
  181. queryStatus = 3;
  182. approveStatus = 2;
  183. pipe.setConfirmer2(getUserId().toString());
  184. date = new Date();
  185. }
  186. if (tPssrPipe.getIds() != null && tPssrPipe.getIds().length > 0) {
  187. for (Long id : tPssrPipe.getIds()) {
  188. pipe = tPssrPipeService.selectTPssrPipeById(id);
  189. if (pipe.getConfirmationDate() == null) {
  190. pipe.setConfirmationDate(new Date());
  191. }
  192. pipe.setApproveStatus(approveStatus);
  193. pipe.setUpdatedate(new Date());
  194. pipe.setUpdaterCode(String.valueOf(getUserId()));
  195. tPssrPipeService.updateTPssrPipe(pipe);
  196. }
  197. } else {
  198. pipe.setSubId(tPssrPipe.getSubId());
  199. pipe.setApproveStatus(queryStatus);
  200. for (TPssrPipe item : tPssrPipeService.selectTPssrPipeList(pipe)) {
  201. if (item.getConfirmationDate() == null) {
  202. item.setConfirmationDate(new Date());
  203. }
  204. item.setApproveStatus(approveStatus);
  205. item.setUpdatedate(new Date());
  206. item.setUpdaterCode(String.valueOf(getUserId()));
  207. tPssrPipeService.updateTPssrPipe(item);
  208. }
  209. }
  210. //查询当前待审批的确认人
  211. TPssrPipe entity = new TPssrPipe();
  212. entity.setSubId(tPssrPipe.getSubId());
  213. entity.setApproveStatus(queryStatus);
  214. TPssrPipe pssrPipe = tPssrPipeService.selectAllConfirmedPersonBySubId(entity);
  215. if (pssrPipe != null) {
  216. //如果当前用户还有待审批任务
  217. if (tPssrPipe.getTaskType() == 4 && StringUtils.isNotEmpty(pssrPipe.getConfirmer1())) {
  218. if (pssrPipe.getConfirmer1().contains(getUserId().toString())) {
  219. return AjaxResult.success();
  220. }
  221. }
  222. if (tPssrPipe.getTaskType() == 5 && StringUtils.isNotEmpty(pssrPipe.getConfirmer2())) {
  223. if (pssrPipe.getConfirmer2().contains(getUserId().toString())) {
  224. return AjaxResult.success();
  225. }
  226. }
  227. }
  228. //无待审批任务结束当前用户流程
  229. // 因为流程关系所以approve一定会有且只有一条数据
  230. TPssrApprove tPssrApprove = tPssrApproveService.selectTPssrApproveBySubId(tPssrPipe.getSubId());
  231. TPssrApproveController.handleConfirmApprove(tPssrApprove, getUserId().toString());
  232. return AjaxResult.success();
  233. }
  234. /**
  235. * 驳回压力管道
  236. */
  237. @PutMapping("/turnDownPipe")
  238. public AjaxResult turnDownPipe(@RequestBody TPssrPipe tPssrPipe) {
  239. if (tPssrPipe.getIds() != null) {
  240. String userId = getUserId().toString();
  241. // 修改已选择数据的状态
  242. for (Long id : tPssrPipe.getIds()) {
  243. TPssrPipe blind = new TPssrPipe();
  244. blind.setId(id);
  245. blind.setApproveStatus(1L);
  246. blind.setUpdatedate(new Date());
  247. blind.setUpdaterCode(getUserId().toString());
  248. tPssrPipeService.updateTPssrPipe(blind);
  249. }
  250. // 查询当前流程
  251. TPssrApprove approve = tPssrApproveService.selectTPssrApproveBySubId(tPssrPipe.getSubId());
  252. try {
  253. runtimeService.deleteProcessInstance(approve.getProcessId(), "pssr2confirm");
  254. historyService.deleteHistoricProcessInstance(approve.getProcessId());
  255. } catch (Exception e) {
  256. logger.info("无运行时流程");
  257. }
  258. // 驳回 查询所有待审批的人员
  259. //查询确认人
  260. TPssrPipe entity = new TPssrPipe();
  261. entity.setSubId(tPssrPipe.getSubId());
  262. entity.setApproveStatus(1L);
  263. TPssrPipe pssrPipe = tPssrPipeService.selectAllConfirmedPersonBySubId(entity);
  264. String confirmer1s = null;
  265. String confirmer2s = null;
  266. if (pssrPipe != null) {
  267. confirmer1s = pssrPipe.getConfirmer1();
  268. confirmer2s = pssrPipe.getConfirmer2();
  269. }
  270. logger.info("=======================confirmer1s:{}", confirmer1s);
  271. logger.info("=======================confirmer2s:{}", confirmer2s);
  272. Set<String> confirmerUsers1 = new HashSet<>();
  273. Set<String> confirmerUsers2 = new HashSet<>();
  274. if (StringUtils.isNotEmpty(confirmer1s)) {
  275. confirmerUsers1.addAll(Arrays.asList(confirmer1s.split(",")));
  276. }
  277. if (StringUtils.isNotEmpty(confirmer2s)) {
  278. confirmerUsers2.addAll(Arrays.asList(confirmer2s.split(",")));
  279. }
  280. // 开始申请流程
  281. long businessKey = approve.getApproveId();
  282. //开始工作流、监听
  283. Authentication.setAuthenticatedUserId(userId);//设置当前申请人
  284. Map<String, Object> variables = new HashMap<>();
  285. variables.put("applyUser", userId);
  286. variables.put("confirmUsers1", new ArrayList<>(confirmerUsers1));
  287. variables.put("confirmUsers2", new ArrayList<>(confirmerUsers2));
  288. variables.put("chargePerson", approve.getSubCharge());
  289. //采用key来启动流程定义并设置流程变量,返回流程实例
  290. ProcessInstance pi = runtimeService.startProcessInstanceByKey("pssr2confirm", String.valueOf(businessKey), variables);
  291. // 修改审批表和sub表
  292. approve.setProcessId(pi.getProcessInstanceId());
  293. approve.setApproveStatus(1L);
  294. approve.setUpdatedate(new Date());
  295. approve.setUpdaterCode(getUserId().toString());
  296. tPssrApproveService.updateTPssrApprove(approve);
  297. TPssrSubcontent subcontent = new TPssrSubcontent();
  298. subcontent.setId(approve.getSubId());
  299. subcontent.setApproveStatus(1L);
  300. subcontent.setUpdatedate(new Date());
  301. subcontent.setUpdaterCode(getUserId().toString());
  302. tPssrSubcontentService.updateTPssrSubcontent(subcontent);
  303. return AjaxResult.success();
  304. }
  305. return AjaxResult.error();
  306. }
  307. }