TProjectPoolController.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460
  1. package com.ruoyi.web.controller.invest;
  2. import java.util.List;
  3. import java.util.stream.Collectors;
  4. import javax.servlet.http.HttpServletResponse;
  5. import com.ruoyi.common.config.RuoYiConfig;
  6. import com.ruoyi.common.enums.FileType;
  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.file.FileUtils;
  11. import com.ruoyi.common.utils.uuid.IdUtils;
  12. import com.ruoyi.framework.config.ServerConfig;
  13. import com.ruoyi.invest.domain.TProjectCirculation;
  14. import com.ruoyi.invest.domain.TProjectCompany;
  15. import com.ruoyi.invest.domain.TProjectContacts;
  16. import com.ruoyi.invest.domain.TProjectPool;
  17. import com.ruoyi.invest.service.*;
  18. import com.ruoyi.system.service.ISysDictDataService;
  19. import com.ruoyi.tool.domain.TUnifyFile;
  20. import com.ruoyi.tool.service.ITUnifyFileService;
  21. import io.swagger.annotations.Api;
  22. import io.swagger.annotations.ApiOperation;
  23. import org.springframework.security.access.prepost.PreAuthorize;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.web.bind.annotation.GetMapping;
  26. import org.springframework.web.bind.annotation.PostMapping;
  27. import org.springframework.web.bind.annotation.PutMapping;
  28. import org.springframework.web.bind.annotation.DeleteMapping;
  29. import org.springframework.web.bind.annotation.PathVariable;
  30. import org.springframework.web.bind.annotation.RequestBody;
  31. import org.springframework.web.bind.annotation.RequestMapping;
  32. import org.springframework.web.bind.annotation.RestController;
  33. import com.ruoyi.common.annotation.Log;
  34. import com.ruoyi.common.core.controller.BaseController;
  35. import com.ruoyi.common.core.domain.AjaxResult;
  36. import com.ruoyi.common.enums.BusinessType;
  37. import com.ruoyi.common.utils.poi.ExcelUtil;
  38. import com.ruoyi.common.core.page.TableDataInfo;
  39. import org.springframework.web.multipart.MultipartFile;
  40. /**
  41. * 项目池Controller
  42. *
  43. * @author ruoyi
  44. * @date 2024-02-21
  45. */
  46. @Api(tags = "项目池")
  47. @RestController
  48. @RequestMapping("/invest/pool")
  49. public class TProjectPoolController extends BaseController
  50. {
  51. @Autowired
  52. private ITProjectPoolService tProjectPoolService;
  53. @Autowired
  54. private ITProjectCompanyService tProjectCompanyService;
  55. @Autowired
  56. private ITProjectContactsService tProjectContactsService;
  57. @Autowired
  58. private ITProjectCirculationService tProjectCirculationService;
  59. @Autowired
  60. private ITUnifyFileService tUnifyFileService;
  61. @Autowired
  62. private ISysDictDataService dictDataService;
  63. @Autowired
  64. private ITProjectInvestigateService tProjectInvestigateService;
  65. @Autowired
  66. private ITProjectInvestigatePersonService tProjectInvestigatePersonService;
  67. @Autowired
  68. private ITProjectMeetingService tProjectMeetingService;
  69. @Autowired
  70. private ITProjectScoringService tProjectScoringService;
  71. /**
  72. * 查询项目池列表
  73. */
  74. @ApiOperation("查询项目池列表")
  75. @PreAuthorize("@ss.hasPermi('invest:pool:list')")
  76. @GetMapping("/list")
  77. public TableDataInfo list(TProjectPool tProjectPool)
  78. {
  79. startPage();
  80. List<TProjectPool> list = tProjectPoolService.selectTProjectPoolList(tProjectPool);
  81. return getDataTable(list);
  82. }
  83. /**
  84. * 查询评估考察列表
  85. */
  86. @ApiOperation("查询评估考察列表")
  87. @PreAuthorize("@ss.hasPermi('invest:pool:list')")
  88. @GetMapping("/listReview")
  89. public TableDataInfo listReview(TProjectPool tProjectPool)
  90. {
  91. startPage();
  92. tProjectPool.setDelFlag("0");
  93. tProjectPool.setProjectStage("2");
  94. tProjectPool.setCreateBy(getUserId().toString());
  95. List<TProjectPool> list = tProjectPoolService.selectTProjectPoolReviewList(tProjectPool);
  96. return getDataTable(list);
  97. }
  98. /**
  99. * 查询项目立项列表
  100. */
  101. @ApiOperation("查询项目立项列表")
  102. @PreAuthorize("@ss.hasPermi('invest:pool:list')")
  103. @GetMapping("/listApproval")
  104. public TableDataInfo listApproval(TProjectPool tProjectPool)
  105. {
  106. startPage();
  107. tProjectPool.setProjectStage("3");
  108. tProjectPool.setDelFlag("0");
  109. List<TProjectPool> list = tProjectPoolService.selectTProjectPoolList(tProjectPool)
  110. .stream().map(n -> {
  111. n.settProjectMeeting(tProjectMeetingService.listProjectPoolIdNew(n.getId(),"LX"));
  112. if(null != n.gettProjectMeeting()){
  113. n.settProjectScoring(tProjectScoringService.getCanScoringMeetingId(n.gettProjectMeeting().getId(),getUserId()));
  114. }
  115. return n;
  116. }).collect(Collectors.toList());
  117. return getDataTable(list);
  118. }
  119. /**
  120. * 查询尽职背调列表
  121. */
  122. @ApiOperation("查询尽职背调列表")
  123. @PreAuthorize("@ss.hasPermi('invest:pool:list')")
  124. @GetMapping("/listInvestigate")
  125. public TableDataInfo listInvestigate(TProjectPool tProjectPool)
  126. {
  127. startPage();
  128. tProjectPool.setProjectStage("4");
  129. tProjectPool.setDelFlag("0");
  130. List<TProjectPool> list = tProjectPoolService.selectTProjectPoolList(tProjectPool)
  131. .stream().map(n -> {
  132. n.settProjectInvestigate(tProjectInvestigateService.listProjectPoolIdNew(n.getId()));
  133. if(null != n.gettProjectInvestigate()){
  134. n.settProjectInvestigatePerson(tProjectInvestigatePersonService.selectByProjectInvestigateId(n.gettProjectInvestigate().getId(),getUserId()));
  135. }
  136. return n;
  137. }).collect(Collectors.toList());
  138. return getDataTable(list);
  139. }
  140. /**
  141. * 查询项目投决列表
  142. */
  143. @ApiOperation("查询项目投决列表")
  144. @PreAuthorize("@ss.hasPermi('invest:pool:list')")
  145. @GetMapping("/listDecision")
  146. public TableDataInfo listDecision(TProjectPool tProjectPool)
  147. {
  148. startPage();
  149. tProjectPool.setProjectStage("5");
  150. tProjectPool.setDelFlag("0");
  151. List<TProjectPool> list = tProjectPoolService.selectTProjectPoolList(tProjectPool).stream().map(n -> {
  152. n.settProjectMeeting(tProjectMeetingService.listProjectPoolIdNew(n.getId(),"TJ"));
  153. if(null != n.gettProjectMeeting()){
  154. n.settProjectScoring(tProjectScoringService.getCanScoringMeetingId(n.gettProjectMeeting().getId(),getUserId()));
  155. }
  156. return n;
  157. }).collect(Collectors.toList());
  158. return getDataTable(list);
  159. }
  160. /**
  161. * 导出项目池列表
  162. */
  163. @ApiOperation("导出项目池列表")
  164. @PreAuthorize("@ss.hasPermi('invest:pool:export')")
  165. @Log(title = "项目池", businessType = BusinessType.EXPORT)
  166. @PostMapping("/export")
  167. public void export(HttpServletResponse response, TProjectPool tProjectPool)
  168. {
  169. List<TProjectPool> list = tProjectPoolService.selectTProjectPoolList(tProjectPool)
  170. .stream().map(n -> {
  171. if(null != n.gettProjectChannel()){
  172. n.setChannel(n.gettProjectChannel().getChannelName());
  173. }
  174. if(StringUtils.isNotEmpty(n.getIndustry()))n.setIndustry(dictDataService.selectDictLabel("CUSTOMER_TRADE",n.getIndustry()));
  175. if(null != n.gettProjectCompany()){
  176. n.setCompany(n.gettProjectCompany().getCompanyName());
  177. }
  178. if(null != n.gettProjectContacts()){
  179. n.setProjectContacts(n.gettProjectContacts().getName());
  180. }
  181. if(StringUtils.isNotEmpty(n.getInvestType()))n.setInvestType(dictDataService.selectDictLabel("INVEST_TYPE",n.getInvestType()));
  182. if(StringUtils.isNotEmpty(n.getInvestPloy()))n.setInvestPloy(dictDataService.selectDictLabel("INVEST_PLOY",n.getInvestPloy()));
  183. if(StringUtils.isNotEmpty(n.getInvestWorth()))n.setInvestWorth(dictDataService.selectDictLabel("INVEST_WORTH",n.getInvestWorth()));
  184. if(StringUtils.isNotEmpty(n.getProjectStage()))n.setProjectStage(dictDataService.selectDictLabel("PROJECT_STAGE",n.getProjectStage()));
  185. if(StringUtils.isNotEmpty(n.getProjectState()))n.setProjectState(dictDataService.selectDictLabel("PROJECT_STATE",n.getProjectState()));
  186. return n;
  187. })
  188. .collect(Collectors.toList());
  189. ExcelUtil<TProjectPool> util = new ExcelUtil<TProjectPool>(TProjectPool.class);
  190. util.exportExcel(response, list, "项目池数据");
  191. }
  192. /**
  193. * 获取项目池详细信息
  194. */
  195. @ApiOperation("获取项目池详细信息")
  196. @PreAuthorize("@ss.hasPermi('invest:pool:query')")
  197. @GetMapping(value = "/{id}")
  198. public AjaxResult getInfo(@PathVariable("id") String id)
  199. {
  200. return success(tProjectPoolService.selectTProjectPoolById(id));
  201. }
  202. /**
  203. * 新增项目池
  204. */
  205. @ApiOperation("新增项目池")
  206. @PreAuthorize("@ss.hasPermi('invest:pool:add')")
  207. @Log(title = "项目池", businessType = BusinessType.INSERT)
  208. @PostMapping
  209. public AjaxResult add(@RequestBody TProjectPool tProjectPool)
  210. {
  211. // todo 设置主键及创建人
  212. tProjectPool.setCreateBy(getNickName());
  213. tProjectPool.setId(IdUtils.fastSimpleUUID());
  214. int number = tProjectPoolService.selectTProjectPoolCode(DateUtils.lastTwoDigits()+"-");
  215. tProjectPool.setProjectCode(tProjectPool.getProjectGroup() + "-" + DateUtils.lastTwoDigits() + "-" + String.format("%03d",number+1));
  216. TProjectCompany tProjectCompany = tProjectPool.gettProjectCompany();
  217. tProjectCompany.setCreateBy(getNickName());
  218. tProjectCompany.setId(IdUtils.fastSimpleUUID());
  219. TProjectContacts tProjectContacts = tProjectPool.gettProjectContacts();
  220. tProjectContacts.setCreateBy(getNickName());
  221. tProjectContacts.setId(IdUtils.fastSimpleUUID());
  222. // todo 设置项目联系人
  223. tProjectPool.setProjectContacts(tProjectContacts.getId());
  224. // todo 设置公司信息关联关系
  225. tProjectCompany.setProjectPoolId(tProjectPool.getId());
  226. // todo 保存公司附件信息
  227. tUnifyFileService.insertTUnifyFileList(tProjectPool.getListFile(),
  228. tProjectPool.getId(),
  229. tProjectCompany.getId(),
  230. String.valueOf(FileType.COMPANY.ordinal()),
  231. getNickName());
  232. // todo 保存BP附件信息
  233. tUnifyFileService.insertTUnifyFileList(tProjectPool.getBpFile(),
  234. tProjectPool.getId(),
  235. tProjectPool.getId(),
  236. String.valueOf(FileType.BP.ordinal()),
  237. getNickName());
  238. // todo 保存其他附件信息
  239. tUnifyFileService.insertTUnifyFileList(tProjectPool.getOtherFile(),
  240. tProjectPool.getId(),
  241. tProjectPool.getId(),
  242. String.valueOf(FileType.OTHER.ordinal()),
  243. getNickName());
  244. tProjectCompanyService.insertTProjectCompany(tProjectCompany);
  245. tProjectContactsService.insertTProjectContacts(tProjectContacts);
  246. // todo 增加项目创建记录
  247. TProjectCirculation tProjectCirculation = new TProjectCirculation();
  248. tProjectCirculation.setProjectPoolId(tProjectPool.getId());
  249. tProjectCirculation.setStageName("项目报备");
  250. tProjectCirculation.setCreateBy(getNickName());
  251. tProjectCirculationService.insertTProjectCirculation(tProjectCirculation);
  252. return toAjax(tProjectPoolService.insertTProjectPool(tProjectPool));
  253. }
  254. /**
  255. * 修改项目池
  256. */
  257. @ApiOperation("修改项目池")
  258. @PreAuthorize("@ss.hasPermi('invest:pool:edit')")
  259. @Log(title = "项目池", businessType = BusinessType.UPDATE)
  260. @PutMapping
  261. public AjaxResult edit(@RequestBody TProjectPool tProjectPool)
  262. {
  263. tProjectPool.setUpdateBy(getNickName());
  264. TProjectCompany tProjectCompany = tProjectPool.gettProjectCompany();
  265. tProjectCompany.setUpdateBy(getNickName());
  266. TProjectContacts tProjectContacts = tProjectPool.gettProjectContacts();
  267. tProjectContacts.setUpdateBy(getNickName());
  268. tProjectContacts.setId(tProjectPool.getProjectContacts());
  269. // 上传并返回新文件名称
  270. // todo 保存公司附件信息
  271. tUnifyFileService.insertTUnifyFileList(tProjectPool.getListFile(),
  272. tProjectPool.getId(),
  273. tProjectCompany.getCompanyId(),
  274. String.valueOf(FileType.COMPANY.ordinal()),
  275. getNickName());
  276. // todo 保存BP附件信息
  277. tUnifyFileService.insertTUnifyFileList(tProjectPool.getBpFile(),
  278. tProjectPool.getId(),
  279. tProjectPool.getId(),
  280. String.valueOf(FileType.BP.ordinal()),
  281. getNickName());
  282. // todo 保存其他附件信息
  283. tUnifyFileService.insertTUnifyFileList(tProjectPool.getOtherFile(),
  284. tProjectPool.getId(),
  285. tProjectPool.getId(),
  286. String.valueOf(FileType.OTHER.ordinal()),
  287. getNickName());
  288. tProjectCompanyService.updateTProjectCompany(tProjectCompany);
  289. tProjectContactsService.updateTProjectContacts(tProjectContacts);
  290. return toAjax(tProjectPoolService.updateTProjectPool(tProjectPool));
  291. }
  292. /**
  293. * 删除项目池
  294. */
  295. @ApiOperation("删除项目池")
  296. @PreAuthorize("@ss.hasPermi('invest:pool:remove')")
  297. @Log(title = "项目池", businessType = BusinessType.DELETE)
  298. @DeleteMapping("/{ids}")
  299. public AjaxResult remove(@PathVariable String[] ids)
  300. {
  301. return toAjax(tProjectPoolService.updateTProjectPoolByIds(ids));
  302. }
  303. /**
  304. * 修改项目池状态
  305. */
  306. @ApiOperation("修改项目池状态")
  307. @PreAuthorize("@ss.hasPermi('invest:pool:edit')")
  308. @Log(title = "项目池", businessType = BusinessType.UPDATE)
  309. @PutMapping("/editStage")
  310. public AjaxResult editStage(@RequestBody TProjectPool tProjectPool)
  311. {
  312. tProjectPool.setUpdateBy(getNickName());
  313. // todo 增加项目创建记录
  314. TProjectCirculation tProjectCirculation = new TProjectCirculation();
  315. tProjectCirculation.setProjectPoolId(tProjectPool.getId());
  316. tProjectCirculation.setStageName(tProjectPool.getStageName() + "-" + tProjectPool.getStateName());
  317. tProjectCirculation.setCreateBy(getNickName());
  318. tProjectCirculationService.insertTProjectCirculation(tProjectCirculation);
  319. return toAjax(tProjectPoolService.updateTProjectPool(tProjectPool));
  320. }
  321. /**
  322. * 查询评估考察列表数量
  323. */
  324. @ApiOperation("查询评估考察列表数量")
  325. @PreAuthorize("@ss.hasPermi('invest:pool:list')")
  326. @GetMapping(value = "/getReviewNumber")
  327. public AjaxResult getReviewNumber()
  328. {
  329. TProjectPool tProjectPool = new TProjectPool();
  330. tProjectPool.setProjectStage("2");
  331. tProjectPool.setCreateBy(getUserId().toString());
  332. tProjectPool.setDelFlag("0");
  333. Long number = tProjectPoolService.selectTProjectPoolReviewList(tProjectPool).stream().filter(n -> null == n.gettProjectReview()).count();
  334. return success(number);
  335. }
  336. /**
  337. * 查询项目立项列表数量
  338. */
  339. @ApiOperation("查询项目立项列表数量")
  340. @PreAuthorize("@ss.hasPermi('invest:pool:list')")
  341. @GetMapping(value = "/getApprovalNumber")
  342. public AjaxResult getApprovalNumber()
  343. {
  344. TProjectPool tProjectPool = new TProjectPool();
  345. tProjectPool.setProjectStage("3");
  346. tProjectPool.setDelFlag("0");
  347. List<TProjectPool> list = tProjectPoolService.selectTProjectPoolList(tProjectPool).stream().map(n -> {
  348. n.settProjectMeeting(tProjectMeetingService.listProjectPoolIdNew(n.getId(),"LX"));
  349. if(null != n.gettProjectMeeting()){
  350. n.settProjectScoring(tProjectScoringService.getCanScoringMeetingId(n.gettProjectMeeting().getId(),getUserId()));
  351. }
  352. return n;
  353. }).collect(Collectors.toList());
  354. //逻辑验证数量
  355. Long number = list.stream().filter(n ->
  356. getNickName().equals(n.getInvestHead()) ||
  357. (
  358. null != n.gettProjectMeeting() &&
  359. n.gettProjectMeeting().getParticipants().contains(getNickName()) &&
  360. null == n.gettProjectScoring()
  361. )).count();
  362. return success(number);
  363. }
  364. /**
  365. * 查询项目立项列表数量
  366. */
  367. @ApiOperation("查询项目投决列表数量")
  368. @PreAuthorize("@ss.hasPermi('invest:pool:list')")
  369. @GetMapping(value = "/getDecisionNumber")
  370. public AjaxResult getDecisionNumber()
  371. {
  372. TProjectPool tProjectPool = new TProjectPool();
  373. tProjectPool.setProjectStage("5");
  374. tProjectPool.setDelFlag("0");
  375. List<TProjectPool> list = tProjectPoolService.selectTProjectPoolList(tProjectPool).stream().map(n -> {
  376. n.settProjectMeeting(tProjectMeetingService.listProjectPoolIdNew(n.getId(),"TJ"));
  377. if(null != n.gettProjectMeeting()){
  378. n.settProjectScoring(tProjectScoringService.getCanScoringMeetingId(n.gettProjectMeeting().getId(),getUserId()));
  379. }
  380. return n;
  381. }).collect(Collectors.toList());
  382. // 逻辑验证数量
  383. Long number = list.stream().filter(n ->
  384. getNickName().equals(n.getInvestHead()) ||
  385. (null != n.gettProjectMeeting() &&
  386. n.gettProjectMeeting().getParticipants().contains(getNickName()) &&
  387. null == n.gettProjectScoring()
  388. )).count();
  389. return success(number);
  390. }
  391. /**
  392. * 查询项目立项列表数量
  393. */
  394. @ApiOperation("查询尽职背调列表数量")
  395. @PreAuthorize("@ss.hasPermi('invest:pool:list')")
  396. @GetMapping(value = "/getInvestigateNumber")
  397. public AjaxResult getInvestigateNumber()
  398. {
  399. TProjectPool tProjectPool = new TProjectPool();
  400. tProjectPool.setProjectStage("4");
  401. tProjectPool.setDelFlag("0");
  402. List<TProjectPool> list = tProjectPoolService.selectTProjectPoolList(tProjectPool)
  403. .stream().map(n -> {
  404. n.settProjectInvestigate(tProjectInvestigateService.listProjectPoolIdNew(n.getId()));
  405. if(null != n.gettProjectInvestigate()){
  406. n.settProjectInvestigatePerson(tProjectInvestigatePersonService.selectByProjectInvestigateId(n.gettProjectInvestigate().getId(),getUserId()));
  407. }
  408. return n;
  409. }).collect(Collectors.toList());
  410. // 逻辑验证数量
  411. Long number = list.stream().filter(n ->
  412. getNickName().equals(n.getInvestHead()) ||
  413. (null != n.gettProjectInvestigate() &&
  414. n.gettProjectInvestigate().getInvestigatePerson().contains(getNickName()) &&
  415. null == n.gettProjectInvestigatePerson()
  416. )).count();
  417. return success(number);
  418. }
  419. }