TProjectPoolController.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  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.ITProjectCirculationService;
  17. import com.ruoyi.invest.service.ITProjectCompanyService;
  18. import com.ruoyi.invest.service.ITProjectContactsService;
  19. import com.ruoyi.invest.service.ITProjectPoolService;
  20. import com.ruoyi.system.service.ISysDictDataService;
  21. import com.ruoyi.tool.domain.TUnifyFile;
  22. import com.ruoyi.tool.service.ITUnifyFileService;
  23. import io.swagger.annotations.Api;
  24. import io.swagger.annotations.ApiOperation;
  25. import org.springframework.security.access.prepost.PreAuthorize;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.web.bind.annotation.GetMapping;
  28. import org.springframework.web.bind.annotation.PostMapping;
  29. import org.springframework.web.bind.annotation.PutMapping;
  30. import org.springframework.web.bind.annotation.DeleteMapping;
  31. import org.springframework.web.bind.annotation.PathVariable;
  32. import org.springframework.web.bind.annotation.RequestBody;
  33. import org.springframework.web.bind.annotation.RequestMapping;
  34. import org.springframework.web.bind.annotation.RestController;
  35. import com.ruoyi.common.annotation.Log;
  36. import com.ruoyi.common.core.controller.BaseController;
  37. import com.ruoyi.common.core.domain.AjaxResult;
  38. import com.ruoyi.common.enums.BusinessType;
  39. import com.ruoyi.common.utils.poi.ExcelUtil;
  40. import com.ruoyi.common.core.page.TableDataInfo;
  41. import org.springframework.web.multipart.MultipartFile;
  42. /**
  43. * 项目池Controller
  44. *
  45. * @author ruoyi
  46. * @date 2024-02-21
  47. */
  48. @Api(tags = "项目池")
  49. @RestController
  50. @RequestMapping("/invest/pool")
  51. public class TProjectPoolController extends BaseController
  52. {
  53. @Autowired
  54. private ITProjectPoolService tProjectPoolService;
  55. @Autowired
  56. private ITProjectCompanyService tProjectCompanyService;
  57. @Autowired
  58. private ITProjectContactsService tProjectContactsService;
  59. @Autowired
  60. private ITProjectCirculationService tProjectCirculationService;
  61. @Autowired
  62. private ITUnifyFileService tUnifyFileService;
  63. @Autowired
  64. private ISysDictDataService dictDataService;
  65. /**
  66. * 查询项目池列表
  67. */
  68. @ApiOperation("查询项目池列表")
  69. @PreAuthorize("@ss.hasPermi('invest:pool:list')")
  70. @GetMapping("/list")
  71. public TableDataInfo list(TProjectPool tProjectPool)
  72. {
  73. startPage();
  74. List<TProjectPool> list = tProjectPoolService.selectTProjectPoolList(tProjectPool);
  75. return getDataTable(list);
  76. }
  77. /**
  78. * 导出项目池列表
  79. */
  80. @ApiOperation("导出项目池列表")
  81. @PreAuthorize("@ss.hasPermi('invest:pool:export')")
  82. @Log(title = "项目池", businessType = BusinessType.EXPORT)
  83. @PostMapping("/export")
  84. public void export(HttpServletResponse response, TProjectPool tProjectPool)
  85. {
  86. List<TProjectPool> list = tProjectPoolService.selectTProjectPoolList(tProjectPool)
  87. .stream().map(n -> {
  88. n.setChannel(n.gettProjectChannel().getChannelName());
  89. n.setIndustry(dictDataService.selectDictLabel("CUSTOMER_TRADE",n.getIndustry()));
  90. n.setCompany(n.gettProjectCompany().getCompanyName());
  91. n.setProjectContacts(n.gettProjectContacts().getName());
  92. n.setInvestType(dictDataService.selectDictLabel("INVEST_TYPE",n.getInvestType()));
  93. n.setInvestPloy(dictDataService.selectDictLabel("INVEST_PLOY",n.getInvestPloy()));
  94. n.setInvestWorth(dictDataService.selectDictLabel("INVEST_WORTH",n.getInvestWorth()));
  95. n.setProjectStage(dictDataService.selectDictLabel("PROJECT_STAGE",n.getProjectStage()));
  96. n.setProjectState(dictDataService.selectDictLabel("PROJECT_STATE",n.getProjectState()));
  97. return n;
  98. })
  99. .collect(Collectors.toList());
  100. ExcelUtil<TProjectPool> util = new ExcelUtil<TProjectPool>(TProjectPool.class);
  101. util.exportExcel(response, list, "项目池数据");
  102. }
  103. /**
  104. * 获取项目池详细信息
  105. */
  106. @ApiOperation("获取项目池详细信息")
  107. @PreAuthorize("@ss.hasPermi('invest:pool:query')")
  108. @GetMapping(value = "/{id}")
  109. public AjaxResult getInfo(@PathVariable("id") String id)
  110. {
  111. return success(tProjectPoolService.selectTProjectPoolById(id));
  112. }
  113. /**
  114. * 新增项目池
  115. */
  116. @ApiOperation("新增项目池")
  117. @PreAuthorize("@ss.hasPermi('invest:pool:add')")
  118. @Log(title = "项目池", businessType = BusinessType.INSERT)
  119. @PostMapping
  120. public AjaxResult add(@RequestBody TProjectPool tProjectPool)
  121. {
  122. // todo 设置主键及创建人
  123. tProjectPool.setCreateBy(getNickName());
  124. tProjectPool.setId(IdUtils.fastSimpleUUID());
  125. int number = tProjectPoolService.selectTProjectPoolCode(DateUtils.lastTwoDigits()+"-");
  126. tProjectPool.setProjectCode(tProjectPool.getProjectGroup() + "-" + DateUtils.lastTwoDigits() + "-" + String.format("%03d",number+1));
  127. TProjectCompany tProjectCompany = tProjectPool.gettProjectCompany();
  128. tProjectCompany.setCreateBy(getNickName());
  129. tProjectCompany.setId(IdUtils.fastSimpleUUID());
  130. TProjectContacts tProjectContacts = tProjectPool.gettProjectContacts();
  131. tProjectContacts.setCreateBy(getNickName());
  132. tProjectContacts.setId(IdUtils.fastSimpleUUID());
  133. // todo 设置项目联系人
  134. tProjectPool.setProjectContacts(tProjectContacts.getId());
  135. // todo 设置公司信息关联关系
  136. tProjectCompany.setProjectPoolId(tProjectPool.getId());
  137. // todo 保存附件信息
  138. List<TUnifyFile> tUnifyFileList = tProjectPool.getListFile();
  139. if(!tUnifyFileList.isEmpty()){
  140. for (TUnifyFile tUnifyFile:
  141. tUnifyFileList) {
  142. tUnifyFile.setFileId(tProjectPool.getId());
  143. tUnifyFile.setFileBusinessId(tProjectCompany.getId());//公司ID
  144. tUnifyFile.setUploadType(String.valueOf(FileType.COMPANY.ordinal()));//文件类型:公司信息
  145. tUnifyFile.setCreateBy(getNickName());
  146. tUnifyFileService.insertTUnifyFile(tUnifyFile);
  147. }
  148. }
  149. tProjectCompanyService.insertTProjectCompany(tProjectCompany);
  150. tProjectContactsService.insertTProjectContacts(tProjectContacts);
  151. // todo 增加项目创建记录
  152. TProjectCirculation tProjectCirculation = new TProjectCirculation();
  153. tProjectCirculation.setProjectPoolId(tProjectPool.getId());
  154. tProjectCirculation.setStageName("项目报备");
  155. tProjectCirculation.setCreateBy(getNickName());
  156. tProjectCirculationService.insertTProjectCirculation(tProjectCirculation);
  157. return toAjax(tProjectPoolService.insertTProjectPool(tProjectPool));
  158. }
  159. /**
  160. * 修改项目池
  161. */
  162. @ApiOperation("修改项目池")
  163. @PreAuthorize("@ss.hasPermi('invest:pool:edit')")
  164. @Log(title = "项目池", businessType = BusinessType.UPDATE)
  165. @PutMapping
  166. public AjaxResult edit(@RequestBody TProjectPool tProjectPool)
  167. {
  168. tProjectPool.setUpdateBy(getNickName());
  169. TProjectCompany tProjectCompany = tProjectPool.gettProjectCompany();
  170. tProjectCompany.setUpdateBy(getNickName());
  171. TProjectContacts tProjectContacts = tProjectPool.gettProjectContacts();
  172. tProjectContacts.setUpdateBy(getNickName());
  173. tProjectContacts.setId(tProjectPool.getProjectContacts());
  174. // 上传并返回新文件名称
  175. // todo 保存附件信息
  176. List<TUnifyFile> tUnifyFileList = tProjectPool.getListFile();
  177. if(!tUnifyFileList.isEmpty()){
  178. for (TUnifyFile tUnifyFile:tUnifyFileList) {
  179. if(tUnifyFile.getId() == null){
  180. tUnifyFile.setFileId(tProjectPool.getId());
  181. tUnifyFile.setFileBusinessId(tProjectCompany.getId());//公司ID
  182. tUnifyFile.setUploadType(String.valueOf(FileType.COMPANY.ordinal()));//文件类型:公司信息
  183. tUnifyFile.setCreateBy(getNickName());
  184. tUnifyFileService.insertTUnifyFile(tUnifyFile);
  185. }
  186. }
  187. }
  188. tProjectCompanyService.updateTProjectCompany(tProjectCompany);
  189. tProjectContactsService.updateTProjectContacts(tProjectContacts);
  190. return toAjax(tProjectPoolService.updateTProjectPool(tProjectPool));
  191. }
  192. /**
  193. * 删除项目池
  194. */
  195. @ApiOperation("删除项目池")
  196. @PreAuthorize("@ss.hasPermi('invest:pool:remove')")
  197. @Log(title = "项目池", businessType = BusinessType.DELETE)
  198. @DeleteMapping("/{ids}")
  199. public AjaxResult remove(@PathVariable String[] ids)
  200. {
  201. return toAjax(tProjectPoolService.updateTProjectPoolByIds(ids));
  202. }
  203. /**
  204. * 修改项目池状态
  205. */
  206. @ApiOperation("修改项目池状态")
  207. @PreAuthorize("@ss.hasPermi('invest:pool:edit')")
  208. @Log(title = "项目池", businessType = BusinessType.UPDATE)
  209. @PutMapping("/editStage")
  210. public AjaxResult editStage(@RequestBody TProjectPool tProjectPool)
  211. {
  212. tProjectPool.setUpdateBy(getNickName());
  213. // todo 增加项目创建记录
  214. TProjectCirculation tProjectCirculation = new TProjectCirculation();
  215. tProjectCirculation.setProjectPoolId(tProjectPool.getId());
  216. tProjectCirculation.setStageName(tProjectPool.getStageName() + "-" + tProjectPool.getStateName());
  217. tProjectCirculation.setCreateBy(getNickName());
  218. tProjectCirculationService.insertTProjectCirculation(tProjectCirculation);
  219. return toAjax(tProjectPoolService.updateTProjectPool(tProjectPool));
  220. }
  221. }