AdminAchievementApiController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. package com.goafanti.admin.controller;
  2. import java.util.Arrays;
  3. import javax.annotation.Resource;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. import javax.validation.Valid;
  7. import org.springframework.beans.BeanUtils;
  8. import org.springframework.validation.BindingResult;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import org.springframework.web.bind.annotation.RequestMethod;
  11. import org.springframework.web.bind.annotation.RequestParam;
  12. import org.springframework.web.bind.annotation.RestController;
  13. import com.goafanti.achievement.bo.InputAchievement;
  14. import com.goafanti.achievement.service.AchievementService;
  15. import com.goafanti.common.bo.Result;
  16. import com.goafanti.common.constant.ErrorConstants;
  17. import com.goafanti.common.controller.CertifyApiController;
  18. import com.goafanti.common.enums.AchievementAuditStatus;
  19. import com.goafanti.common.enums.AchievementFields;
  20. import com.goafanti.common.enums.AttachmentType;
  21. import com.goafanti.common.model.Achievement;
  22. import com.goafanti.common.utils.StringUtils;
  23. @RestController
  24. @RequestMapping(value = "/api/admin/achievement")
  25. public class AdminAchievementApiController extends CertifyApiController {
  26. @Resource
  27. private AchievementService achievementService;
  28. /**
  29. * 成果撤消发布(下架)
  30. */
  31. @RequestMapping(value = "/offShelf", method = RequestMethod.POST)
  32. public Result offShelf(String id) {
  33. Result res = new Result();
  34. if (StringUtils.isBlank(id)) {
  35. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果ID", "成果ID"));
  36. return res;
  37. }
  38. Achievement a = achievementService.selectByPrimaryKey(id);
  39. if (null == a) {
  40. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "需求ID"));
  41. return res;
  42. }
  43. res.setData(achievementService.updateReleaseStatus(a));
  44. return res;
  45. }
  46. /**
  47. * 下载文本文件
  48. */
  49. @RequestMapping(value = "/download", method = RequestMethod.GET)
  50. public Result download(HttpServletResponse response, String id, String sign) {
  51. Result res = new Result();
  52. if (StringUtils.isEmpty(id)) {
  53. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "科技成果ID"));
  54. return res;
  55. }
  56. Achievement a = achievementService.selectByPrimaryKey(id);
  57. if (null == a) {
  58. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "科技成果ID"));
  59. return res;
  60. }
  61. AttachmentType attachmentType = AttachmentType.getField(sign);
  62. if (attachmentType == AttachmentType.ACHIEVEMENT_MATURITY_TEXT_FILE) {
  63. downloadUnPrivateFile(response, a.getMaturityTextFileDownloadFileName(), a.getMaturityTextFileUrl());
  64. } else if (attachmentType == AttachmentType.ACHIEVEMENT_TECH_PLAN) {
  65. downloadUnPrivateFile(response, a.getTechPlanDownloadFileName(), a.getTechPlanUrl());
  66. } else if (attachmentType == AttachmentType.ACHIEVEMENT_BUSINESS_PLAN) {
  67. downloadUnPrivateFile(response, a.getBusinessPlanDownloadFileName(), a.getBusinessPlanUrl());
  68. } else {
  69. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
  70. }
  71. return res;
  72. }
  73. /**
  74. * 文本文件上传
  75. */
  76. @RequestMapping(value = "/uploadTextFile", method = RequestMethod.POST)
  77. public Result uploadTextFile(HttpServletRequest req, String sign) {
  78. Result res = new Result();
  79. AttachmentType attachmentType = AttachmentType.getField(sign);
  80. if (attachmentType == AttachmentType.ACHIEVEMENT_MATURITY_TEXT_FILE
  81. || attachmentType == AttachmentType.ACHIEVEMENT_TECH_PLAN
  82. || attachmentType == AttachmentType.ACHIEVEMENT_BUSINESS_PLAN) {
  83. res.setData(handleFiles(res, "/achievement/", false, req, sign, "achievement"));
  84. } else {
  85. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
  86. }
  87. return res;
  88. }
  89. /**
  90. * 图片上传
  91. */
  92. @RequestMapping(value = "/uploadPicture", method = RequestMethod.POST)
  93. public Result uploadPicture(HttpServletRequest req, String sign) {
  94. Result res = new Result();
  95. AttachmentType attachmentType = AttachmentType.getField(sign);
  96. if (attachmentType == AttachmentType.ACHIEVEMENT_TECHNICAL_PICTURE
  97. || attachmentType == AttachmentType.ACHIEVEMENT_MATURITY_PICTURE) {
  98. res.setData(handleFiles(res, "/achievement/", false, req, sign, "achievement"));
  99. } else {
  100. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
  101. }
  102. return res;
  103. }
  104. /**
  105. * 删除
  106. */
  107. @RequestMapping(value = "/delete", method = RequestMethod.POST)
  108. private Result delete(@RequestParam(name = "ids[]", required = false) String[] ids) {
  109. Result res = new Result();
  110. if (ids == null || ids.length < 1) {
  111. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", ""));
  112. } else {
  113. res.setData(achievementService.deleteByPrimaryKey(Arrays.asList(ids)));
  114. }
  115. return res;
  116. }
  117. /**
  118. * 个人成果详情详情
  119. */
  120. @RequestMapping(value = "/userDetail", method = RequestMethod.GET)
  121. private Result detail(String id) {
  122. Result res = new Result();
  123. if (StringUtils.isBlank(id)) {
  124. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果ID", "成果ID"));
  125. return res;
  126. }
  127. res.setData(achievementService.selectUserOwnerDetail(id));
  128. return res;
  129. }
  130. /**
  131. * 个人成果列表
  132. */
  133. @RequestMapping(value = "/userList", method = RequestMethod.GET)
  134. private Result userList(String ownerId, Integer auditStatus, Integer serialNumber, String name, String keyword,
  135. Integer category, Integer status, String releaseDateStartDate, String releaseDateEndDate,
  136. Integer releaseStatus, String pageNo, String pageSize) {
  137. Result res = new Result();
  138. Integer pNo = 1;
  139. Integer pSize = 10;
  140. if (StringUtils.isNumeric(pageSize)) {
  141. pSize = Integer.parseInt(pageSize);
  142. }
  143. if (StringUtils.isNumeric(pageNo)) {
  144. pNo = Integer.parseInt(pageNo);
  145. }
  146. res.setData(achievementService.listUserOwnerAchievement(ownerId, auditStatus, serialNumber, name, keyword,
  147. category, status, releaseDateStartDate, releaseDateEndDate, releaseStatus, pNo, pSize));
  148. return res;
  149. }
  150. /**
  151. * 组织用户成果列表
  152. */
  153. @RequestMapping(value = "/orgList", method = RequestMethod.GET)
  154. private Result orgList(String ownerId, Integer auditStatus, Integer serialNumber, String name, String keyword,
  155. Integer category, Integer status, String releaseDateStartDate, String releaseDateEndDate,
  156. Integer releaseStatus, String pageNo, String pageSize) {
  157. Result res = new Result();
  158. Integer pNo = 1;
  159. Integer pSize = 10;
  160. if (StringUtils.isNumeric(pageSize)) {
  161. pSize = Integer.parseInt(pageSize);
  162. }
  163. if (StringUtils.isNumeric(pageNo)) {
  164. pNo = Integer.parseInt(pageNo);
  165. }
  166. res.setData(achievementService.listOrgOwnerAchievement(ownerId, auditStatus, serialNumber, name, keyword,
  167. category, status, releaseDateStartDate, releaseDateEndDate, releaseStatus, pNo, pSize));
  168. return res;
  169. }
  170. /**
  171. * 新增成果
  172. */
  173. @RequestMapping(value = "/apply", method = RequestMethod.POST)
  174. private Result apply(@Valid InputAchievement ia, BindingResult bindingResult,
  175. @RequestParam(name = "keywords[]", required = false) String[] keywords) {
  176. Result res = new Result();
  177. if (bindingResult.hasErrors()) {
  178. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  179. AchievementFields.getFieldDesc(bindingResult.getFieldError().getField())));
  180. return res;
  181. }
  182. res = disposeInputAchievement(res, ia, keywords);
  183. if (!res.getError().isEmpty()) {
  184. return res;
  185. }
  186. Achievement a = new Achievement();
  187. BeanUtils.copyProperties(ia, a);
  188. achievementService.saveAchievement(a,keywords);
  189. return res;
  190. }
  191. /**
  192. * 修改成果
  193. */
  194. @RequestMapping(value = "/update", method = RequestMethod.POST)
  195. public Result update(@Valid InputAchievement ia, BindingResult bindingResult,
  196. @RequestParam(name = "keywords[]", required = false) String[] keywords) {
  197. Result res = new Result();
  198. if (bindingResult.hasErrors()) {
  199. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  200. AchievementFields.getFieldDesc(bindingResult.getFieldError().getField())));
  201. return res;
  202. }
  203. if (StringUtils.isBlank(ia.getId())) {
  204. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果ID", "成果ID"));
  205. return res;
  206. }
  207. if (!AchievementAuditStatus.CREATE.getCode().equals(ia.getAuditStatus())
  208. && !AchievementAuditStatus.SUBMIT.getCode().equals(ia.getAuditStatus())
  209. && !AchievementAuditStatus.UNAUDITED.getCode().equals(ia.getAuditStatus())) {
  210. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "当前状态无法提交审核!"));
  211. return res;
  212. }
  213. res = disposeInputAchievement(res, ia, keywords);
  214. if (!res.getError().isEmpty()) {
  215. return res;
  216. }
  217. Achievement a = new Achievement();
  218. BeanUtils.copyProperties(ia, a);
  219. achievementService.updateAchievement(a, keywords);
  220. return res;
  221. }
  222. private Result disposeInputAchievement(Result res, InputAchievement ia, String[] keywords) {
  223. if (StringUtils.isBlank(ia.getName())) {
  224. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果名称", "成果名称"));
  225. return res;
  226. }
  227. if (null == ia.getCategory()) {
  228. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到数据类别", "数据类别"));
  229. return res;
  230. }
  231. if (StringUtils.isBlank(ia.getKeyword())) {
  232. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到关键词", "关键词"));
  233. return res;
  234. }
  235. if (null == keywords || keywords.length < 1) {
  236. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到关键词", "关键词"));
  237. return res;
  238. }
  239. if (StringUtils.isBlank(ia.getOwnerName())) {
  240. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果所有人名称", "成果所有人名称"));
  241. return res;
  242. }
  243. if (null == ia.getOwnerType()) {
  244. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到所有人类型", "所有人类型"));
  245. return res;
  246. }
  247. if (StringUtils.isBlank(ia.getOwnerIdNumber())) {
  248. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到所有人证件号", "所有人证件号"));
  249. return res;
  250. }
  251. if (StringUtils.isBlank(ia.getOwnerMobile())) {
  252. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到所有人联系电话", "所有人联系电话"));
  253. return res;
  254. }
  255. if (StringUtils.isBlank(ia.getOwnerEmail())) {
  256. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到所有人电子邮箱", "所有人电子邮箱"));
  257. return res;
  258. }
  259. if (StringUtils.isBlank(ia.getOwnerPostalAddress())) {
  260. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到所有人通讯地址", "所有人通讯地址"));
  261. return res;
  262. }
  263. if (null == ia.getCooperationMode()) {
  264. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到合作方式", "合作方式"));
  265. return res;
  266. }
  267. return res;
  268. }
  269. }