TProjectPoolController.java 15 KB

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