ProjectController.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402
  1. package com.uas.console.donate.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.uas.console.donate.model.*;
  4. import com.uas.console.donate.service.AttachService;
  5. import com.uas.console.donate.service.ProjectRecodeService;
  6. import com.uas.console.donate.service.ProjectService;
  7. import com.uas.dfs.service.FileClient;
  8. import com.uas.platform.core.logging.BufferedLoggerManager;
  9. import com.uas.platform.core.model.PageInfo;
  10. import com.uas.platform.core.model.PageParams;
  11. import com.uas.platform.core.web.bind.RequestState;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.data.domain.Page;
  14. import org.springframework.stereotype.Controller;
  15. import org.springframework.ui.ModelMap;
  16. import org.springframework.web.bind.annotation.*;
  17. import org.springframework.web.multipart.MultipartFile;
  18. import javax.servlet.http.HttpServletRequest;
  19. import javax.servlet.http.HttpServletResponse;
  20. import java.io.IOException;
  21. import java.text.SimpleDateFormat;
  22. import java.util.Date;
  23. import java.util.List;
  24. @Controller
  25. @RequestMapping("/project")
  26. public class ProjectController {
  27. private static final SimpleDateFormat codesdf=new SimpleDateFormat("yyyyMMddhhmmsssss");
  28. @Autowired
  29. private ProjectService projectService ;
  30. @Autowired
  31. private ProjectRecodeService projectRecodeService;
  32. @Autowired
  33. private FileClient fileClient;
  34. @Autowired
  35. private AttachService attachService;
  36. private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
  37. /**
  38. * 审核通过项目
  39. */
  40. @RequestMapping(value = "/approve",method = RequestMethod.POST)
  41. @ResponseBody
  42. public ModelMap approve(Long id){
  43. logger.log("项目", "审核通过项目", null, null, id);
  44. return projectService.approve(id);
  45. }
  46. /**
  47. * 审核驳回项目
  48. */
  49. @RequestMapping(value = "/unapprove",method = RequestMethod.POST)
  50. @ResponseBody
  51. public ModelMap unapprove(Long id,String refuse){
  52. logger.log("项目", "审核驳回项目", "原因:" + refuse, null, id);
  53. return projectService.unapprove(id,refuse);
  54. }
  55. /**
  56. * 重新申请项目
  57. */
  58. @RequestMapping(value = "/reapply", method = RequestMethod.POST)
  59. @ResponseBody
  60. public ModelMap reapply(Long id){
  61. logger.log("项目", "重新申请项目", null, null, id);
  62. return projectService.reapply(id);
  63. }
  64. /**
  65. * 获取所有未被活动关联到的项目
  66. */
  67. @RequestMapping(value = "/getProjectQualification",method = RequestMethod.GET)
  68. @ResponseBody
  69. public List<Project> getProjectQualification(){
  70. logger.log("项目", "获取所有未被活动关联到的项目");
  71. return projectService.getProjects();
  72. }
  73. /**
  74. * 保存项目草稿
  75. */
  76. @ResponseBody
  77. @RequestMapping(value = "/save",method = RequestMethod.POST)
  78. public Project save(@RequestParam(required = false) MultipartFile logo,
  79. @RequestParam(required = false) MultipartFile pcImg,
  80. @RequestParam(required = false) MultipartFile mobileImg,
  81. @RequestParam (required = false) MultipartFile mobileListImg,
  82. @RequestParam String jsonStr, HttpServletRequest request, HttpServletResponse response) throws IOException{
  83. Project project=JSONObject.parseObject(jsonStr,Project.class);
  84. if(logo!=null){
  85. String file1=fileClient.upload(logo.getBytes(),logo.getSize(),"jpg",null);
  86. project.setLogo(file1);
  87. }
  88. if(pcImg!=null){
  89. String file2=fileClient.upload(pcImg.getBytes(),pcImg.getSize(),"jpg",null);
  90. project.setPcImg(file2);
  91. }
  92. if(mobileImg!=null){
  93. String file3=fileClient.upload(mobileImg.getBytes(),mobileImg.getSize(),"jpg",null);
  94. project.setMobileImg(file3);
  95. }
  96. if(mobileListImg!=null){
  97. String file4=fileClient.upload(mobileListImg.getBytes(),mobileListImg.getSize(),"jpg",null);
  98. project.setListImg(file4);
  99. }
  100. Project pro = projectService.save(project);
  101. logger.log("项目", "保存项目", null, pro.getCode(), pro.getId());
  102. return pro;
  103. }
  104. /**
  105. * 上传图片
  106. */
  107. @ResponseBody
  108. @RequestMapping(value = "/upload",method = RequestMethod.POST)
  109. public String ueditorUpload(MultipartFile file) throws IOException {
  110. //上传图片
  111. String path=fileClient.upload(file.getBytes(),file.getSize(),"jpg",null);
  112. logger.log("项目", "上传项目相关图片", path);
  113. return path;
  114. }
  115. /**
  116. * 正式提交项目
  117. */
  118. @ResponseBody
  119. @RequestMapping(value = "/submit",method = RequestMethod.POST)
  120. public Project submit(@RequestParam(required = false) MultipartFile logo,
  121. @RequestParam(required = false) MultipartFile pcImg,
  122. @RequestParam(required = false) MultipartFile mobileImg,
  123. @RequestParam (required = false) MultipartFile mobileListImg,
  124. @RequestParam String jsonStr, HttpServletRequest request, HttpServletResponse response)throws IOException{
  125. Project project = JSONObject.parseObject(jsonStr, Project.class);
  126. if(logo!=null){
  127. String file1=fileClient.upload(logo.getBytes(),logo.getSize(),"jpg",null);
  128. project.setLogo(file1);
  129. }
  130. if(pcImg!=null){
  131. String file2=fileClient.upload(pcImg.getBytes(),pcImg.getSize(),"jpg",null);
  132. project.setPcImg(file2);
  133. }
  134. if(mobileImg!=null){
  135. String file3=fileClient.upload(mobileImg.getBytes(),mobileImg.getSize(),"jpg",null);
  136. project.setMobileImg(file3);
  137. }
  138. if(mobileListImg!=null){
  139. String file4=fileClient.upload(mobileListImg.getBytes(),mobileListImg.getSize(),"jpg",null);
  140. project.setListImg(file4);
  141. }
  142. Date date=new Date();
  143. //设置项目提交时间
  144. project.setSubmitTime(date);
  145. //设置项目编号
  146. project.setCode(codesdf.format(date));
  147. //设置项目默认参与人数
  148. project.setJoinAmount(0L);
  149. //设置默认项目已筹集总金额
  150. project.setTotalAmount(0.00);
  151. Project pro = projectService.submit(project);
  152. logger.log("项目", "提交项目", null, pro.getCode(), pro.getId());
  153. return pro;
  154. }
  155. // /**
  156. // * 取出某项目的,以及该项目对应机构的具体信息
  157. // * @param id
  158. // * @return
  159. // */
  160. // @ResponseBody
  161. // @RequestMapping("/detail/{id}")
  162. // public List<Object> detail(@PathVariable("id") Long id){
  163. // Org org=projectService.findOrgInfo(id);
  164. // Project project=projectService.findOne(id);
  165. // //项目进度
  166. //
  167. // //捐款信息
  168. // List<ProjectRecode> projectRecodeList=projectRecodeService.findProjectDetail(id);
  169. // //财务披露
  170. //
  171. // List<Object> list=new ArrayList<>();
  172. // list.add(org);
  173. // list.add(project);
  174. // list.add(projectRecodeList);
  175. // return list;
  176. // }
  177. /**
  178. * 获取项目列表 (全部)
  179. * @return
  180. */
  181. @RequestMapping(method = RequestMethod.GET)
  182. @ResponseBody
  183. public Page<Project> getAllProjects(PageParams params, String searchFilter){
  184. PageInfo pageInfo = new PageInfo(params);
  185. SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
  186. logger.log("项目", "获取项目列表(全部)");
  187. return projectService.getAllProjects(pageInfo, filter);
  188. }
  189. /**
  190. * 获取项目列表 (已审核)
  191. * @return
  192. */
  193. @RequestMapping(params = RequestState.DONE, method = RequestMethod.GET)
  194. @ResponseBody
  195. public Page<Project> getAuditedProjects(PageParams params, String searchFilter){
  196. PageInfo pageInfo = new PageInfo(params);
  197. SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
  198. logger.log("项目", "获取项目列表(已审核)");
  199. return projectService.getAuditedProjects(pageInfo, filter);
  200. }
  201. /**
  202. * 获取项目列表 (未审核)
  203. * @return
  204. */
  205. @RequestMapping(params = RequestState.TODO, method = RequestMethod.GET)
  206. @ResponseBody
  207. public Page<Project> getUnauditedProjects(PageParams params, String searchFilter){
  208. PageInfo pageInfo = new PageInfo(params);
  209. SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
  210. logger.log("项目", "获取项目列表(未审核)");
  211. return projectService.getUnauditedProjects(pageInfo, filter);
  212. }
  213. /**
  214. * 获取项目列表 (未通过)
  215. * @return
  216. */
  217. @RequestMapping(params = RequestState.REFUSED, method = RequestMethod.GET)
  218. @ResponseBody
  219. public Page<Project> getDisagreedProjects(PageParams params, String searchFilter){
  220. PageInfo pageInfo = new PageInfo(params);
  221. SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
  222. logger.log("项目", "获取项目列表(未通过)");
  223. return projectService.getDisagreedProjects(pageInfo, filter);
  224. }
  225. /**
  226. * 获取项目列表 (未结项)
  227. * @return
  228. */
  229. @RequestMapping(params = RequestState.WAITING, method = RequestMethod.GET)
  230. @ResponseBody
  231. public Page<Project> getNotEndProjects(PageParams params, String searchFilter){
  232. PageInfo pageInfo = new PageInfo(params);
  233. SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
  234. logger.log("项目", "获取项目列表(未结项)");
  235. return projectService.getNotEndProjects(pageInfo, filter);
  236. }
  237. /**
  238. * 获取项目详情
  239. * @param id 项目id
  240. * @return
  241. */
  242. @RequestMapping(value = "/detail/{id}", method = RequestMethod.GET)
  243. @ResponseBody
  244. public Project getProjectDetail(@PathVariable("id") Long id) {
  245. logger.log("项目", "获取项目详情", null, null, id);
  246. return projectService.findOne(id);
  247. }
  248. /**
  249. * 保存基本信息
  250. * @param json
  251. * @return
  252. */
  253. @RequestMapping(value = "/save/baseInfo", method = RequestMethod.POST)
  254. @ResponseBody
  255. public Project saveBaseInfo(@RequestBody String json) {
  256. Project project = JSONObject.parseObject(json, Project.class);
  257. Project pro = projectService.saveBaseInfo(project);
  258. logger.log("项目", "保存项目基本信息", null, null, pro.getId());
  259. return pro;
  260. }
  261. /**
  262. * 保存财务信息
  263. * @param json
  264. * @return
  265. */
  266. @RequestMapping(value = "/save/finance/{id}", method = RequestMethod.POST)
  267. @ResponseBody
  268. public ModelMap saveFinance(String json, @PathVariable("id") Long id ,MultipartFile img) throws IOException {
  269. ProjectFinance finance = JSONObject.parseObject(json, ProjectFinance.class);
  270. if (img != null) {
  271. String path = fileClient.upload(img.getBytes(), img.getSize(), "jpg", null);
  272. if (null != path) {
  273. finance.setPath(path);
  274. }
  275. }
  276. logger.log("项目", "保存财务信息", null, null, id);
  277. return projectService.saveFinance(finance, id);
  278. }
  279. /**
  280. * 保存进度报告
  281. * @param json
  282. * @return
  283. */
  284. @RequestMapping(value = "/save/report/{id}", method = RequestMethod.POST)
  285. @ResponseBody
  286. public ModelMap saveReport(String json, @PathVariable("id") Long id ,MultipartFile img) throws IOException {
  287. ProjectReport report = JSONObject.parseObject(json, ProjectReport.class);
  288. if (img != null) {
  289. String path = fileClient.upload(img.getBytes(), img.getSize(), "jpg", null);
  290. if (null != path) {
  291. report.setPath(path);
  292. }
  293. }
  294. logger.log("项目", "保存进度报告", null, null, id);
  295. return projectService.saveReport(report, id);
  296. }
  297. /**
  298. * 获取项目执行日期和更新次数
  299. * @param id
  300. * @return
  301. */
  302. @RequestMapping(value = "/getConclude/{id}", method = RequestMethod.GET)
  303. @ResponseBody
  304. public ModelMap getConcludeData(@PathVariable("id") Long id) {
  305. ModelMap map = new ModelMap();
  306. map.put("executeDays", projectService.getExecuteDaysById(id));
  307. map.put("updateTimes", projectService.getUpdateTimesById(id));
  308. logger.log("项目", "获取项目执行日期和更新次数");
  309. return map;
  310. }
  311. /**
  312. * 保存结项报告
  313. * @param json
  314. * @return
  315. */
  316. @RequestMapping(value = "/save/conclude/{id}", method = RequestMethod.POST)
  317. @ResponseBody
  318. public ModelMap saveConclude(String json, @PathVariable("id") Long id ,MultipartFile img) throws IOException {
  319. ProjectConclude conclude = JSONObject.parseObject(json, ProjectConclude.class);
  320. if (img != null) {
  321. String path = fileClient.upload(img.getBytes(), img.getSize(), "jpg", null);
  322. if (null != path) {
  323. conclude.setPath(path);
  324. }
  325. }
  326. logger.log("项目", "保存结项报告", null, null, id);
  327. return projectService.saveConclude(conclude, id);
  328. }
  329. /**
  330. * 获取已保存的项目草稿
  331. * @return
  332. */
  333. @RequestMapping(value = "/getSavedProject", method = RequestMethod.GET)
  334. @ResponseBody
  335. public Project getSavedProject() {
  336. logger.log("项目", "获取已保存草稿");
  337. return projectService.getSavedProject();
  338. }
  339. /**
  340. * 获取各类项目数量
  341. * @return
  342. */
  343. @RequestMapping(value="/getProjectsNum", method = RequestMethod.GET)
  344. @ResponseBody
  345. public ModelMap getProjectsNum(){
  346. logger.log("项目", "获取各类项目数量");
  347. return projectService.getProjectsNum();
  348. }
  349. /**
  350. * 编辑器删除图片
  351. */
  352. @RequestMapping(value = "/delete", method = RequestMethod.DELETE)
  353. @ResponseBody
  354. public void deletePrizeImg(@RequestParam String path) {
  355. try {
  356. fileClient.delete(path);
  357. logger.log("项目", "编辑器删除图片成功");
  358. } catch (RuntimeException e) {
  359. logger.log("项目", "编辑器删除图片失败", path);
  360. e.printStackTrace();
  361. }
  362. }
  363. }