AdminAchievementApiController.java 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565
  1. package com.goafanti.admin.controller;
  2. import java.io.IOException;
  3. import java.lang.reflect.Field;
  4. import java.util.ArrayList;
  5. import java.util.Arrays;
  6. import java.util.List;
  7. import java.util.UUID;
  8. import javax.annotation.Resource;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. import javax.validation.Valid;
  12. import org.springframework.beans.BeanUtils;
  13. import org.springframework.validation.BindingResult;
  14. import org.springframework.web.bind.annotation.RequestMapping;
  15. import org.springframework.web.bind.annotation.RequestMethod;
  16. import org.springframework.web.bind.annotation.RequestParam;
  17. import org.springframework.web.bind.annotation.RestController;
  18. import org.springframework.web.multipart.MultipartFile;
  19. import com.alibaba.fastjson.JSON;
  20. import com.goafanti.achievement.bo.AchievementImportBo;
  21. import com.goafanti.achievement.bo.InputAchievement;
  22. import com.goafanti.achievement.service.AchievementOrderService;
  23. import com.goafanti.achievement.service.AchievementService;
  24. import com.goafanti.admin.service.AftFileService;
  25. import com.goafanti.common.bo.Result;
  26. import com.goafanti.common.constant.AFTConstants;
  27. import com.goafanti.common.constant.ErrorConstants;
  28. import com.goafanti.common.controller.CertifyApiController;
  29. import com.goafanti.common.enums.AchievementAuditStatus;
  30. import com.goafanti.common.enums.AchievementFields;
  31. import com.goafanti.common.enums.AchievementImportFields;
  32. import com.goafanti.common.enums.AchievementOrderStatus;
  33. import com.goafanti.common.enums.AchievementReleaseStatus;
  34. import com.goafanti.common.enums.AchievementSwitchSign;
  35. import com.goafanti.common.enums.AttachmentType;
  36. import com.goafanti.common.enums.DeleteStatus;
  37. import com.goafanti.common.model.Achievement;
  38. import com.goafanti.common.model.AchievementOrder;
  39. import com.goafanti.common.model.AftFile;
  40. import com.goafanti.common.utils.LoggerUtils;
  41. import com.goafanti.common.utils.StringUtils;
  42. import com.goafanti.core.shiro.token.TokenManager;
  43. import com.goafanti.user.service.UserService;
  44. @RestController
  45. @RequestMapping(value = "/api/admin/achievement")
  46. public class AdminAchievementApiController extends CertifyApiController {
  47. @Resource
  48. private AchievementService achievementService;
  49. @Resource
  50. private UserService userService;
  51. @Resource
  52. private AftFileService aftFileService;
  53. @Resource
  54. private AchievementOrderService achievementOrderService;
  55. /**
  56. * 个人成果列表
  57. */
  58. @RequestMapping(value = "/userList", method = RequestMethod.GET)
  59. private Result userList(String username, String ownerName, String ownerId, Integer auditStatus,
  60. Integer serialNumber, String name, String keyword, Integer category, Integer status,
  61. String releaseDateStartDate, String releaseDateEndDate, Integer releaseStatus, String pageNo,
  62. String pageSize) {
  63. Result res = new Result();
  64. Integer pNo = 1;
  65. Integer pSize = 10;
  66. if (StringUtils.isNumeric(pageSize)) {
  67. pSize = Integer.parseInt(pageSize);
  68. }
  69. if (StringUtils.isNumeric(pageNo)) {
  70. pNo = Integer.parseInt(pageNo);
  71. }
  72. res.setData(achievementService.listUserOwnerAchievement(username, ownerName, ownerId, auditStatus, serialNumber, name,
  73. keyword, category, status, releaseDateStartDate, releaseDateEndDate, releaseStatus, pNo, pSize));
  74. return res;
  75. }
  76. /**
  77. * 组织用户成果列表
  78. */
  79. @RequestMapping(value = "/orgList", method = RequestMethod.GET)
  80. private Result orgList(String unitName, String ownerName, String ownerId, Integer auditStatus, Integer serialNumber, String name,
  81. String keyword, Integer category, Integer status, String releaseDateStartDate, String releaseDateEndDate,
  82. Integer releaseStatus, String pageNo, String pageSize) {
  83. Result res = new Result();
  84. Integer pNo = 1;
  85. Integer pSize = 10;
  86. if (StringUtils.isNumeric(pageSize)) {
  87. pSize = Integer.parseInt(pageSize);
  88. }
  89. if (StringUtils.isNumeric(pageNo)) {
  90. pNo = Integer.parseInt(pageNo);
  91. }
  92. res.setData(achievementService.listOrgOwnerAchievement(unitName, ownerName, ownerId, auditStatus, serialNumber, name,
  93. keyword, category, status, releaseDateStartDate, releaseDateEndDate, releaseStatus, pNo, pSize));
  94. return res;
  95. }
  96. /**
  97. * 个人成果所有人列表
  98. */
  99. @RequestMapping(value = "/userOwner", method = RequestMethod.GET)
  100. public Result getAchievementUserOwner(String name) {
  101. Result res = new Result();
  102. if (StringUtils.isBlank(name)) {
  103. return res;
  104. }
  105. res.setData(userService.selectAchievementUserOwner(name));
  106. return res;
  107. }
  108. /**
  109. * 组织成果所有人列表
  110. */
  111. @RequestMapping(value = "/orgOwner", method = RequestMethod.GET)
  112. public Result getAchievementOrgOwner(String name) {
  113. Result res = new Result();
  114. if (StringUtils.isBlank(name)) {
  115. return res;
  116. }
  117. res.setData(userService.selectAchievementOrgOwner(name));
  118. return res;
  119. }
  120. /**
  121. * 个人成果详情详情
  122. */
  123. @RequestMapping(value = "/userDetail", method = RequestMethod.GET)
  124. private Result userDetail(String id) {
  125. Result res = new Result();
  126. if (StringUtils.isBlank(id)) {
  127. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果ID", "成果ID"));
  128. return res;
  129. }
  130. res.setData(achievementService.selectUserOwnerDetail(id));
  131. return res;
  132. }
  133. /**
  134. * 组织用户成果详情详情
  135. */
  136. @RequestMapping(value = "/orgDetail", method = RequestMethod.GET)
  137. private Result orgDetail(String id) {
  138. Result res = new Result();
  139. if (StringUtils.isBlank(id)) {
  140. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果ID", "成果ID"));
  141. return res;
  142. }
  143. res.setData(achievementService.selectOrgOwnerDetail(id));
  144. return res;
  145. }
  146. /**
  147. * 新增成果
  148. */
  149. @RequestMapping(value = "/apply", method = RequestMethod.POST)
  150. private Result apply(@Valid InputAchievement ia, BindingResult bindingResult,
  151. @RequestParam(name = "keywords[]", required = false) String[] keywords) {
  152. Result res = new Result();
  153. if (bindingResult.hasErrors()) {
  154. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  155. AchievementFields.getFieldDesc(bindingResult.getFieldError().getField())));
  156. return res;
  157. }
  158. if (StringUtils.isBlank(ia.getOwnerId()) && StringUtils.isBlank(ia.getOwnerName())) {
  159. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果所有人", "成果所有人"));
  160. return res;
  161. }
  162. res = disposeInputAchievement(res, ia, keywords);
  163. if (!res.getError().isEmpty()) {
  164. return res;
  165. }
  166. Achievement a = new Achievement();
  167. BeanUtils.copyProperties(ia, a);
  168. achievementService.saveAchievement(a, keywords);
  169. return res;
  170. }
  171. /**
  172. * 修改成果
  173. */
  174. @RequestMapping(value = "/update", method = RequestMethod.POST)
  175. public Result update(@Valid InputAchievement ia, BindingResult bindingResult, Integer switchSign,
  176. @RequestParam(name = "keywords[]", required = false) String[] keywords) {
  177. Result res = new Result();
  178. if (bindingResult.hasErrors()) {
  179. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  180. AchievementFields.getFieldDesc(bindingResult.getFieldError().getField())));
  181. return res;
  182. }
  183. if (null == switchSign) {
  184. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到开关标记", "开关标记"));
  185. return res;
  186. }
  187. if (!AchievementSwitchSign.CLOSE.getCode().equals(switchSign)
  188. && !AchievementSwitchSign.OPEN.getCode().equals(switchSign)) {
  189. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "开关标记"));
  190. return res;
  191. }
  192. if (StringUtils.isBlank(ia.getId())) {
  193. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果ID", "成果ID"));
  194. return res;
  195. }
  196. if (StringUtils.isBlank(ia.getOwnerId()) && StringUtils.isBlank(ia.getOwnerName())) {
  197. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果所有人", "成果所有人"));
  198. return res;
  199. }
  200. if (!AchievementAuditStatus.CREATE.getCode().equals(ia.getAuditStatus())
  201. && !AchievementAuditStatus.SUBMIT.getCode().equals(ia.getAuditStatus())
  202. && !AchievementAuditStatus.UNAUDITED.getCode().equals(ia.getAuditStatus())) {
  203. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "当前状态无法提交审核!"));
  204. return res;
  205. }
  206. res = disposeInputAchievement(res, ia, keywords);
  207. if (!res.getError().isEmpty()) {
  208. return res;
  209. }
  210. Achievement a = new Achievement();
  211. BeanUtils.copyProperties(ia, a);
  212. achievementService.updateAchievement(a, keywords, switchSign);
  213. return res;
  214. }
  215. /**
  216. * 科技成果匹配科技需求
  217. */
  218. @RequestMapping(value = "/matchDemand", method = RequestMethod.POST)
  219. public Result matchDemand(String id) {
  220. Result res = new Result();
  221. if (StringUtils.isBlank(id)) {
  222. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果ID", "成果ID"));
  223. return res;
  224. }
  225. Achievement a = achievementService.selectByPrimaryKey(id);
  226. if (null == a || !AchievementAuditStatus.AUDITED.getCode().equals(a.getAuditStatus())
  227. || !DeleteStatus.UNDELETE.getCode().equals(a.getDeletedSign())
  228. || !AchievementReleaseStatus.RELEASED.getCode().equals(a.getReleaseStatus())) {
  229. res.getError().add(buildError("", "当前状态无法匹配!"));
  230. return res;
  231. }
  232. res.setData(achievementService.updateMatchDemand(a));
  233. return res;
  234. }
  235. /**
  236. * 批量导入科技成果
  237. */
  238. @SuppressWarnings("unchecked")
  239. @RequestMapping(value = "/importAchievement", method = RequestMethod.POST)
  240. public Result importAchievement(@RequestParam(name = "data", required = false) String d) {
  241. Result res = new Result();
  242. List<AchievementImportBo> data = JSON.parseArray(d, AchievementImportBo.class);
  243. if (data == null || data.isEmpty()) {
  244. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "导入数据"));
  245. return res;
  246. }
  247. if (data.size() > AFTConstants.IMPORTMAXLENTH) {
  248. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "导入数据量"));
  249. return res;
  250. }
  251. res = disposeImportAchievement(res, data);
  252. if (!res.getError().isEmpty()) {
  253. return res;
  254. }
  255. data = (List<AchievementImportBo>) res.getData();
  256. achievementService.insertImport(data);
  257. return res;
  258. }
  259. /**
  260. * 成果需求匹配列表
  261. */
  262. @RequestMapping(value = "/achievementDemand", method = RequestMethod.GET)
  263. public Result achievementDemand(String id) {
  264. Result res = new Result();
  265. res.setData(achievementService.selectAchievementDemandListByAchievementId(id));
  266. return res;
  267. }
  268. /**
  269. * 上传技术成果批量导入Excel模板
  270. *
  271. * @param req
  272. * @return
  273. */
  274. @RequestMapping(value = "/uploadTemplate", method = RequestMethod.POST)
  275. public Result uploadPatentTemplate(HttpServletRequest req, String sign) {
  276. Result res = new Result();
  277. String fileName = "";
  278. List<MultipartFile> files = getFiles(req);
  279. MultipartFile mf = files.get(0);
  280. String suffix = mf.getOriginalFilename().substring(mf.getOriginalFilename().lastIndexOf("."));
  281. if (suffix.equals(".xls") || suffix.equals(".xlsx")) {
  282. AttachmentType attachmentType = AttachmentType.getField(sign);
  283. if (attachmentType == AttachmentType.ACHIEVEMENT_TEMPLATE) {
  284. fileName = sign + suffix;
  285. } else {
  286. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
  287. return res;
  288. }
  289. String name = handleFile(res, req, fileName, files, mf);
  290. res.setData(name);
  291. if (!StringUtils.isBlank(name) && null == aftFileService.selectAftFileBySign(sign)) {
  292. AftFile f = new AftFile();
  293. f.setId(UUID.randomUUID().toString());
  294. f.setFileName(AttachmentType.ACHIEVEMENT_TEMPLATE.getDesc());
  295. f.setUid(TokenManager.getAdminId());
  296. f.setComment(AttachmentType.ACHIEVEMENT_TEMPLATE.getDesc());
  297. f.setSign(sign);
  298. f.setFilePath("/admin/" + fileName);
  299. f.setDeleletedSign(DeleteStatus.UNDELETE.getCode());
  300. aftFileService.insert(f);
  301. }
  302. } else {
  303. res.getError().add(buildError(ErrorConstants.FILE_PATTERN_ERROR, "文件格式错误,请重新上传!"));
  304. }
  305. return res;
  306. }
  307. /**
  308. * 下载技术成果批量导入Excel模板
  309. *
  310. * @param response
  311. * @return
  312. */
  313. @RequestMapping(value = "/downloadTemplate", method = RequestMethod.GET)
  314. public Result downloadTemplateFile(HttpServletResponse response, String sign) {
  315. Result res = new Result();
  316. AttachmentType attachmentType = AttachmentType.getField(sign);
  317. if (attachmentType == AttachmentType.ACHIEVEMENT_TEMPLATE) {
  318. String fileName = "";
  319. AftFile af = aftFileService.selectAftFileBySign(sign);
  320. if (null == af) {
  321. res.getError().add(buildError(ErrorConstants.FILE_NON_EXISTENT, "", "找不到文件!"));
  322. } else {
  323. String path = af.getFilePath();
  324. String suffix = path.substring(path.lastIndexOf("."));
  325. fileName = AttachmentType.ACHIEVEMENT_TEMPLATE.getDesc() + suffix;
  326. downloadFile(response, fileName, path);
  327. }
  328. } else {
  329. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
  330. }
  331. return res;
  332. }
  333. /**
  334. * 成果撤消发布(下架)
  335. */
  336. @RequestMapping(value = "/offShelf", method = RequestMethod.POST)
  337. public Result offShelf(String id) {
  338. Result res = new Result();
  339. if (StringUtils.isBlank(id)) {
  340. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果ID", "成果ID"));
  341. return res;
  342. }
  343. Achievement a = achievementService.selectByPrimaryKey(id);
  344. if (null == a) {
  345. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "需求ID"));
  346. return res;
  347. }
  348. res.setData(achievementService.updateReleaseStatus(a));
  349. return res;
  350. }
  351. /**
  352. * 下载文本文件
  353. */
  354. @RequestMapping(value = "/download", method = RequestMethod.GET)
  355. public Result download(HttpServletResponse response, String id, String sign) {
  356. Result res = new Result();
  357. if (StringUtils.isEmpty(id)) {
  358. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "科技成果ID"));
  359. return res;
  360. }
  361. Achievement a = achievementService.selectByPrimaryKey(id);
  362. if (null == a) {
  363. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "科技成果ID"));
  364. return res;
  365. }
  366. AttachmentType attachmentType = AttachmentType.getField(sign);
  367. if (attachmentType == AttachmentType.ACHIEVEMENT_MATURITY_TEXT_FILE) {
  368. downloadUnPrivateFile(response, a.getMaturityTextFileDownloadFileName(), a.getMaturityTextFileUrl());
  369. } else if (attachmentType == AttachmentType.ACHIEVEMENT_TECH_PLAN) {
  370. downloadUnPrivateFile(response, a.getTechPlanDownloadFileName(), a.getTechPlanUrl());
  371. } else if (attachmentType == AttachmentType.ACHIEVEMENT_BUSINESS_PLAN) {
  372. downloadUnPrivateFile(response, a.getBusinessPlanDownloadFileName(), a.getBusinessPlanUrl());
  373. } else {
  374. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
  375. }
  376. return res;
  377. }
  378. /**
  379. * 文本文件上传
  380. */
  381. @RequestMapping(value = "/uploadTextFile", method = RequestMethod.POST)
  382. public Result uploadTextFile(HttpServletRequest req, String sign) {
  383. Result res = new Result();
  384. AttachmentType attachmentType = AttachmentType.getField(sign);
  385. if (attachmentType == AttachmentType.ACHIEVEMENT_MATURITY_TEXT_FILE
  386. || attachmentType == AttachmentType.ACHIEVEMENT_TECH_PLAN
  387. || attachmentType == AttachmentType.ACHIEVEMENT_BUSINESS_PLAN) {
  388. res.setData(handleFiles(res, "/achievement/", false, req, sign, "achievement"));
  389. } else {
  390. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
  391. }
  392. return res;
  393. }
  394. /**
  395. * 图片上传
  396. */
  397. @RequestMapping(value = "/uploadPicture", method = RequestMethod.POST)
  398. public Result uploadPicture(HttpServletRequest req, String sign) {
  399. Result res = new Result();
  400. AttachmentType attachmentType = AttachmentType.getField(sign);
  401. if (attachmentType == AttachmentType.ACHIEVEMENT_TECHNICAL_PICTURE
  402. || attachmentType == AttachmentType.ACHIEVEMENT_MATURITY_PICTURE) {
  403. res.setData(handleFiles(res, "/achievement/", false, req, sign, "achievement"));
  404. } else {
  405. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
  406. }
  407. return res;
  408. }
  409. /**
  410. * 删除
  411. */
  412. @RequestMapping(value = "/delete", method = RequestMethod.POST)
  413. private Result delete(@RequestParam(name = "ids[]", required = false) String[] ids) {
  414. Result res = new Result();
  415. if (ids == null || ids.length != 1) {
  416. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", ""));
  417. } else {
  418. List<AchievementOrder> list = achievementOrderService.selectAchievementOrderByAchievementId(ids[0]);
  419. for (AchievementOrder order : list) {
  420. if (!AchievementOrderStatus.UNPAYED.getCode().equals(order.getStatus())) {
  421. res.getError().add(buildError("", "当前科技成果有订单,无法删除!"));
  422. return res;
  423. }
  424. }
  425. res.setData(achievementService.deleteByPrimaryKey(Arrays.asList(ids)));
  426. }
  427. return res;
  428. }
  429. private Result disposeInputAchievement(Result res, InputAchievement ia, String[] keywords) {
  430. if (StringUtils.isBlank(ia.getName())) {
  431. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果名称", "成果名称"));
  432. return res;
  433. }
  434. if (null == ia.getCategory()) {
  435. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到数据类别", "数据类别"));
  436. return res;
  437. }
  438. if (StringUtils.isBlank(ia.getKeyword())) {
  439. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到关键词", "关键词"));
  440. return res;
  441. }
  442. if (null == keywords || keywords.length < 1) {
  443. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到关键词", "关键词"));
  444. return res;
  445. }
  446. if (null == ia.getOwnerType()) {
  447. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到所有人类型", "所有人类型"));
  448. return res;
  449. }
  450. if (null == ia.getCooperationMode()) {
  451. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到合作方式", "合作方式"));
  452. return res;
  453. }
  454. for (int i = 0; i < keywords.length; i++) {
  455. if (AFTConstants.KEYWORDLENTH < keywords[i].length()) {
  456. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "关键词长度"));
  457. return res;
  458. }
  459. }
  460. return res;
  461. }
  462. private String handleFile(Result res, HttpServletRequest req, String fileName, List<MultipartFile> files,
  463. MultipartFile mf) {
  464. if (!files.isEmpty()) {
  465. try {
  466. mf.transferTo(toAdminPrivateFile(fileName));
  467. LoggerUtils.debug(getClass(), fileName + " 文件上传成功");
  468. } catch (IllegalStateException | IOException e) {
  469. LoggerUtils.error(getClass(), "文件上传失败", e);
  470. res.getError().add(buildError("", "文件上传失败!"));
  471. return "";
  472. }
  473. } else {
  474. res.getError().add(buildError("", "文件上传失败!"));
  475. return "";
  476. }
  477. return fileName;
  478. }
  479. private Result disposeImportAchievement(Result res, List<AchievementImportBo> data) {
  480. Field[] field = AchievementImportBo.class.getDeclaredFields();
  481. for (AchievementImportBo bo : data) {
  482. for (Field f : field) {
  483. f.setAccessible(true);
  484. try {
  485. if (!f.getName().equals("keywords") && (f.get(bo) == null || "".equals(f.get(bo)))) {
  486. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "",
  487. AchievementImportFields.getFieldDesc(f.getName())));
  488. return res;
  489. }
  490. } catch (IllegalArgumentException | IllegalAccessException e) {
  491. }
  492. }
  493. if (bo.getDataCategory().toString().length() > 1) {
  494. res.getError().add(buildError(ErrorConstants.PARAM_SIZE_ERROR, "",
  495. AchievementImportFields.DATACATEGORY.getDesc()));
  496. return res;
  497. }
  498. if (bo.getName().length() > 31) {
  499. res.getError()
  500. .add(buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.NAME.getDesc()));
  501. return res;
  502. }
  503. if (bo.getCategory().toString().length() > 1) {
  504. res.getError().add(
  505. buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.CATEGORY.getDesc()));
  506. return res;
  507. }
  508. if (bo.getOwnerName().length() > 31) {
  509. res.getError().add(
  510. buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.OWNERNAME.getDesc()));
  511. return res;
  512. }
  513. if (bo.getOwnerType().toString().length() > 1) {
  514. res.getError().add(
  515. buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.OWNERTYPE.getDesc()));
  516. return res;
  517. }
  518. if (bo.getOwnerIdNumber().length() > 35) {
  519. res.getError().add(buildError(ErrorConstants.PARAM_SIZE_ERROR, "",
  520. AchievementImportFields.OWNERIDNUMBER.getDesc()));
  521. return res;
  522. }
  523. if (bo.getOwnerMobile().length() > 11) {
  524. res.getError().add(
  525. buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.OWNERMOBILE.getDesc()));
  526. return res;
  527. }
  528. if (bo.getOwnerEmail().length() > 254) {
  529. res.getError().add(
  530. buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.OWNERMOBILE.getDesc()));
  531. return res;
  532. }
  533. if (bo.getOwnerPostalAddress().length() > 254) {
  534. res.getError().add(buildError(ErrorConstants.PARAM_SIZE_ERROR, "",
  535. AchievementImportFields.OWNERPOSTALADDRESS.getDesc()));
  536. return res;
  537. }
  538. if (bo.getCooperationMode().toString().length() > 1) {
  539. res.getError().add(buildError(ErrorConstants.PARAM_SIZE_ERROR, "",
  540. AchievementImportFields.COOPERATIONMODE.getDesc()));
  541. return res;
  542. }
  543. if (bo.getKeyword().length() > 44) {
  544. res.getError().add(
  545. buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.KEYWORD.getDesc()));
  546. return res;
  547. }
  548. String[] keywords = bo.getKeyword().trim().split(",|,");
  549. if (null == keywords || keywords.length < 1) {
  550. res.getError()
  551. .add(buildError(ErrorConstants.PARAM_ERROR, "", AchievementImportFields.KEYWORD.getDesc()));
  552. return res;
  553. }
  554. List<String> list = new ArrayList<>();
  555. for (String s : keywords) {
  556. if (!StringUtils.isBlank(s)) {
  557. list.add(s);
  558. }
  559. }
  560. bo.setKeywords(list);
  561. }
  562. res.setData(data);
  563. return res;
  564. }
  565. }