InvestigateController.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. package com.ruoyi.web.controller.project;
  2. import com.ruoyi.common.annotation.Log;
  3. import com.ruoyi.common.core.controller.BaseController;
  4. import com.ruoyi.common.core.domain.AjaxResult;
  5. import com.ruoyi.common.core.page.TableDataInfo;
  6. import com.ruoyi.common.enums.BusinessType;
  7. import com.ruoyi.common.utils.StringUtils;
  8. import com.ruoyi.common.utils.poi.ExcelUtil;
  9. import com.ruoyi.flowable.service.IInvestigateService;
  10. import com.ruoyi.flowable.service.IInvestmentOpportunityService;
  11. import com.ruoyi.invest.domain.*;
  12. import com.ruoyi.invest.domain.dto.InvestigateDto;
  13. import com.ruoyi.invest.domain.vo.ProjectInvestigateVo;
  14. import com.ruoyi.invest.domain.vo.TProjectPoolVo;
  15. import com.ruoyi.invest.service.*;
  16. import com.ruoyi.system.service.ISysDictDataService;
  17. import io.swagger.annotations.Api;
  18. import io.swagger.annotations.ApiOperation;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.security.access.prepost.PreAuthorize;
  21. import org.springframework.web.bind.annotation.*;
  22. import javax.servlet.http.HttpServletRequest;
  23. import javax.servlet.http.HttpServletResponse;
  24. import java.util.List;
  25. import java.util.stream.Collectors;
  26. /**
  27. * 尽职背调Controller
  28. *
  29. * @author ruoyi
  30. * @date 2025-08-08
  31. */
  32. @Api(tags = "尽职背调")
  33. @RestController
  34. @RequestMapping("/project/investigate")
  35. public class InvestigateController extends BaseController {
  36. @Autowired
  37. private IInvestigateService investigateService;
  38. @Autowired
  39. private IInvestmentOpportunityService investmentOpportunityService;
  40. @Autowired
  41. private ITProjectInvestigateService tProjectInvestigateService;
  42. @Autowired
  43. private ITProjectInvestigatePersonService tProjectInvestigatePersonService;
  44. @Autowired
  45. private ISysDictDataService dictDataService;
  46. //所有尽职背调流程列表
  47. @ApiOperation("所有尽职背调流程列表")
  48. @GetMapping("/listAll")
  49. public TableDataInfo listAll(TProjectInvestigate tProjectInvestigate)
  50. {
  51. startPage();
  52. List<ProjectInvestigateVo> list=investigateService.selectAllInvestigateList(tProjectInvestigate);
  53. return getDataTable(list);
  54. }
  55. /**
  56. * 导出所有项目背调流程列表
  57. */
  58. @ApiOperation("导出所有项目背调流程列表")
  59. @Log(title = "所有项目背调流程列表", businessType = BusinessType.EXPORT)
  60. @PostMapping("/export")
  61. public void export(HttpServletResponse response, TProjectInvestigate tProjectInvestigate)
  62. {
  63. List<ProjectInvestigateVo> list=investigateService.selectAllInvestigateList(tProjectInvestigate)
  64. .stream().map(n -> {
  65. if(StringUtils.isNotEmpty(n.getIndustry()))n.setIndustry(dictDataService.selectDictLabel("CUSTOMER_TRADE",n.getIndustry()));
  66. if(StringUtils.isNotEmpty(n.getProjectStage()))n.setProjectStage(dictDataService.selectDictLabel("PROJECT_STAGE",n.getProjectStage()));
  67. if(StringUtils.isNotEmpty(n.getProjectState()))n.setProjectState(dictDataService.selectDictLabel("PROJECT_STATE",n.getProjectState()));
  68. if(StringUtils.isNotEmpty(n.getProjectStatus())){
  69. if("0".equals(n.getProjectStatus())){
  70. n.setProjectStatus("正常");
  71. }else if("1".equals(n.getProjectStatus())){
  72. n.setProjectStatus("终止");
  73. }else if("2".equals(n.getProjectStatus())){
  74. n.setProjectStatus("观望");
  75. }
  76. }
  77. return n;
  78. })
  79. .collect(Collectors.toList());
  80. ExcelUtil<ProjectInvestigateVo> util = new ExcelUtil<ProjectInvestigateVo>(ProjectInvestigateVo.class);
  81. util.exportExcel(response, list, "所有项目背调流程数据");
  82. }
  83. /**
  84. * 查询可申请尽职背调列表
  85. */
  86. @ApiOperation("查询可申请尽职背调列表")
  87. @GetMapping("/applicableList")
  88. public TableDataInfo applicableList(TProjectPool tProjectPool)
  89. {
  90. startPage();
  91. tProjectPool.setProjectStage("4");
  92. tProjectPool.setDelFlag("0");
  93. tProjectPool.setInvestigateFlag("0");//未发起背调的
  94. tProjectPool.setStatus(3);//项目机会流程状态为审批通过
  95. tProjectPool.setProjectStatus(tProjectPool.getProjectStatus());
  96. List<TProjectPool> list = investmentOpportunityService.selectApplicableProjectList(tProjectPool)
  97. .stream().map(n -> {
  98. n.settProjectInvestigate(tProjectInvestigateService.listProjectPoolIdNew(n.getId()));
  99. if(null != n.gettProjectInvestigate()){
  100. n.settProjectInvestigatePerson(tProjectInvestigatePersonService.selectByProjectInvestigateId(n.gettProjectInvestigate().getId(),getUserId()));
  101. }
  102. return n;
  103. }).collect(Collectors.toList());
  104. return getDataTable(list);
  105. }
  106. //我的待办任务
  107. @ApiOperation("我的待办任务列表")
  108. @GetMapping("/getMyTaskList")
  109. public TableDataInfo getMyTaskList(TProjectInvestigate tProjectInvestigate)
  110. {
  111. startPage();
  112. //tProjectPool.setProjectStage("1");
  113. List<ProjectInvestigateVo> list=investigateService.getMyTaskList(getUserId().toString(),tProjectInvestigate);
  114. return getDataTable(list);
  115. }
  116. //我的已办任务
  117. @ApiOperation("我的已办任务列表")
  118. @GetMapping("/getMyDoneTaskList")
  119. public TableDataInfo getMyDoneTaskList(TProjectInvestigate tProjectInvestigate)
  120. {
  121. startPage();
  122. //tProjectPool.setProjectStage("1");
  123. List<ProjectInvestigateVo> list=investigateService.getMyDoneTaskList(getUserId().toString(),tProjectInvestigate);
  124. return getDataTable(list);
  125. }
  126. //我的待办任务
  127. @ApiOperation("我的单据列表")
  128. @GetMapping("/getMyList")
  129. public TableDataInfo getMyList(TProjectInvestigate tProjectInvestigate)
  130. {
  131. startPage();
  132. //tProjectPool.setProjectStage("1");
  133. List<ProjectInvestigateVo> list=investigateService.getMyList(getUserId().toString(),tProjectInvestigate);
  134. return getDataTable(list);
  135. }
  136. /**
  137. * 导出我的已办任务列表
  138. */
  139. @ApiOperation("导出我的待办任务列表")
  140. @Log(title = "我的待办任务列表", businessType = BusinessType.EXPORT)
  141. @PostMapping("/exportMyTask")
  142. public void exportMyTask(HttpServletResponse response, TProjectPool tProjectPool)
  143. {
  144. List<TProjectPoolVo> list=investmentOpportunityService.getMyTaskList(getUserId().toString(),tProjectPool)
  145. .stream().map(n -> {
  146. if(null != n.gettProjectChannel()){
  147. n.setChannel(n.gettProjectChannel().getChannelName());
  148. }
  149. if(StringUtils.isNotEmpty(n.getIndustry()))n.setIndustry(dictDataService.selectDictLabel("CUSTOMER_TRADE",n.getIndustry()));
  150. if(null != n.gettProjectCompany()){
  151. n.setCompany(n.gettProjectCompany().getCompanyName());
  152. }
  153. if(null != n.gettProjectContacts()){
  154. n.setProjectContacts(n.gettProjectContacts().getName());
  155. }
  156. if(StringUtils.isNotEmpty(n.getInvestType()))n.setInvestType(dictDataService.selectDictLabel("INVEST_TYPE",n.getInvestType()));
  157. if(StringUtils.isNotEmpty(n.getInvestPloy()))n.setInvestPloy(dictDataService.selectDictLabel("INVEST_PLOY",n.getInvestPloy()));
  158. if(StringUtils.isNotEmpty(n.getInvestWorth()))n.setInvestWorth(dictDataService.selectDictLabel("INVEST_WORTH",n.getInvestWorth()));
  159. if(StringUtils.isNotEmpty(n.getProjectStage()))n.setProjectStage(dictDataService.selectDictLabel("PROJECT_STAGE",n.getProjectStage()));
  160. if(StringUtils.isNotEmpty(n.getProjectState()))n.setProjectState(dictDataService.selectDictLabel("PROJECT_STATE",n.getProjectState()));
  161. if(StringUtils.isNotEmpty(n.getProjectStatus())){
  162. if("0".equals(n.getProjectStatus())){
  163. n.setProjectStatus("正常");
  164. }else if("1".equals(n.getProjectStatus())){
  165. n.setProjectStatus("终止");
  166. }else if("2".equals(n.getProjectStatus())){
  167. n.setProjectStatus("观望");
  168. }
  169. }
  170. return n;
  171. })
  172. .collect(Collectors.toList());
  173. ExcelUtil<TProjectPoolVo> util = new ExcelUtil<TProjectPoolVo>(TProjectPoolVo.class);
  174. util.exportExcel(response, list, "我的待办任务数据");
  175. }
  176. /**
  177. * 导出我的已办任务列表
  178. */
  179. @ApiOperation("导出我的已办任务列表")
  180. @Log(title = "我的已办任务列表", businessType = BusinessType.EXPORT)
  181. @PostMapping("/exportMyDoneTask")
  182. public void exportMyDoneTask(HttpServletResponse response, TProjectPool tProjectPool)
  183. {
  184. List<TProjectPoolVo> list=investmentOpportunityService.getMyDoneTaskList(getUserId().toString(),tProjectPool)
  185. .stream().map(n -> {
  186. if(null != n.gettProjectChannel()){
  187. n.setChannel(n.gettProjectChannel().getChannelName());
  188. }
  189. if(StringUtils.isNotEmpty(n.getIndustry()))n.setIndustry(dictDataService.selectDictLabel("CUSTOMER_TRADE",n.getIndustry()));
  190. if(null != n.gettProjectCompany()){
  191. n.setCompany(n.gettProjectCompany().getCompanyName());
  192. }
  193. if(null != n.gettProjectContacts()){
  194. n.setProjectContacts(n.gettProjectContacts().getName());
  195. }
  196. if(StringUtils.isNotEmpty(n.getInvestType()))n.setInvestType(dictDataService.selectDictLabel("INVEST_TYPE",n.getInvestType()));
  197. if(StringUtils.isNotEmpty(n.getInvestPloy()))n.setInvestPloy(dictDataService.selectDictLabel("INVEST_PLOY",n.getInvestPloy()));
  198. if(StringUtils.isNotEmpty(n.getInvestWorth()))n.setInvestWorth(dictDataService.selectDictLabel("INVEST_WORTH",n.getInvestWorth()));
  199. if(StringUtils.isNotEmpty(n.getProjectStage()))n.setProjectStage(dictDataService.selectDictLabel("PROJECT_STAGE",n.getProjectStage()));
  200. if(StringUtils.isNotEmpty(n.getProjectState()))n.setProjectState(dictDataService.selectDictLabel("PROJECT_STATE",n.getProjectState()));
  201. if(StringUtils.isNotEmpty(n.getProjectStatus())){
  202. if("0".equals(n.getProjectStatus())){
  203. n.setProjectStatus("正常");
  204. }else if("1".equals(n.getProjectStatus())){
  205. n.setProjectStatus("终止");
  206. }else if("2".equals(n.getProjectStatus())){
  207. n.setProjectStatus("观望");
  208. }
  209. }
  210. return n;
  211. })
  212. .collect(Collectors.toList());
  213. ExcelUtil<TProjectPoolVo> util = new ExcelUtil<TProjectPoolVo>(TProjectPoolVo.class);
  214. util.exportExcel(response, list, "我的已办任务数据");
  215. }
  216. /**
  217. * 导出我的单据列表
  218. */
  219. @ApiOperation("导出我的单据列表")
  220. @Log(title = "我的单据列表", businessType = BusinessType.EXPORT)
  221. @PostMapping("/exportMy")
  222. public void exportMy(HttpServletResponse response, TProjectPool tProjectPool)
  223. {
  224. List<TProjectPoolVo> list=investmentOpportunityService.getMyList(getUserId().toString(),tProjectPool)
  225. .stream().map(n -> {
  226. if(null != n.gettProjectChannel()){
  227. n.setChannel(n.gettProjectChannel().getChannelName());
  228. }
  229. if(StringUtils.isNotEmpty(n.getIndustry()))n.setIndustry(dictDataService.selectDictLabel("CUSTOMER_TRADE",n.getIndustry()));
  230. if(null != n.gettProjectCompany()){
  231. n.setCompany(n.gettProjectCompany().getCompanyName());
  232. }
  233. if(null != n.gettProjectContacts()){
  234. n.setProjectContacts(n.gettProjectContacts().getName());
  235. }
  236. if(StringUtils.isNotEmpty(n.getInvestType()))n.setInvestType(dictDataService.selectDictLabel("INVEST_TYPE",n.getInvestType()));
  237. if(StringUtils.isNotEmpty(n.getInvestPloy()))n.setInvestPloy(dictDataService.selectDictLabel("INVEST_PLOY",n.getInvestPloy()));
  238. if(StringUtils.isNotEmpty(n.getInvestWorth()))n.setInvestWorth(dictDataService.selectDictLabel("INVEST_WORTH",n.getInvestWorth()));
  239. if(StringUtils.isNotEmpty(n.getProjectStage()))n.setProjectStage(dictDataService.selectDictLabel("PROJECT_STAGE",n.getProjectStage()));
  240. if(StringUtils.isNotEmpty(n.getProjectState()))n.setProjectState(dictDataService.selectDictLabel("PROJECT_STATE",n.getProjectState()));
  241. if(StringUtils.isNotEmpty(n.getProjectStatus())){
  242. if("0".equals(n.getProjectStatus())){
  243. n.setProjectStatus("正常");
  244. }else if("1".equals(n.getProjectStatus())){
  245. n.setProjectStatus("终止");
  246. }else if("2".equals(n.getProjectStatus())){
  247. n.setProjectStatus("观望");
  248. }
  249. }
  250. return n;
  251. })
  252. .collect(Collectors.toList());
  253. ExcelUtil<TProjectPoolVo> util = new ExcelUtil<TProjectPoolVo>(TProjectPoolVo.class);
  254. util.exportExcel(response, list, "我的单据数据");
  255. }
  256. /**
  257. * 获取项目池详细信息
  258. */
  259. @ApiOperation("获取项目池详细信息")
  260. @GetMapping(value = "/{pInstId}")
  261. public AjaxResult getInfo(@PathVariable("pInstId") String pInstId)
  262. {
  263. return success(investigateService.selectTProjectInvestigateByProcInstId(pInstId));
  264. }
  265. //发起流程
  266. @ApiOperation(value = "投资机会申请发起流程")
  267. @Log(title = "发起流程", businessType = BusinessType.INSERT)
  268. @PostMapping("/start")
  269. public AjaxResult start(@RequestBody TProjectInvestigate tProjectInvestigate) {
  270. //return InvestigateService.set
  271. return investigateService.start(tProjectInvestigate);
  272. }
  273. @ApiOperation(value = "审批任务")
  274. @PutMapping(value = "/complete")
  275. public AjaxResult complete(@RequestBody InvestigateDto dto, HttpServletRequest request) {
  276. // 从 DTO 中拆分参数
  277. TProjectInvestigate tProjectInvestigate= dto.getProjectInvestigate();
  278. TProjectInvestigatePerson tProjectInvestigatePerson = dto.getProjectInvestigatePerson();
  279. FlowBaseInfo flowBaseInfo= dto.getFlowBaseInfo();
  280. return investigateService.complete(tProjectInvestigate,tProjectInvestigatePerson,flowBaseInfo,request);
  281. }
  282. /**
  283. * 获取通过流程id会议记录详细信息 (会议投决)
  284. */
  285. @ApiOperation("获取会议记录详细信息")
  286. @GetMapping(value = "/getMeetingInfo/{pInstId}")
  287. public AjaxResult getMeetingInfo(@PathVariable("pInstId") String pInstId) {
  288. return success(investigateService.selectTProjectMeetingByProcInstId(pInstId));
  289. }
  290. /**
  291. * 根据流程Id查询汇总分数和平均分数 (总裁室)
  292. */
  293. @ApiOperation("根据会议ID查询汇总分数和平均分数")
  294. @GetMapping(value = "/getSumScore/{pInstId}")
  295. public AjaxResult getSumScore(@PathVariable("pInstId") String pInstId)
  296. {
  297. if (StringUtils.isEmpty(pInstId))
  298. {
  299. return error("查询打分数据'" + getNickName() + "'失败,请选择会议!");
  300. }
  301. return success(investigateService.selectSumScore(pInstId));
  302. }
  303. }