AdminAchievementApiController.java 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771
  1. package com.goafanti.achievement.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.AchievementPublishPageService;
  24. import com.goafanti.achievement.service.AchievementPublishService;
  25. import com.goafanti.achievement.service.AchievementService;
  26. import com.goafanti.admin.service.AftFileService;
  27. import com.goafanti.common.bo.Result;
  28. import com.goafanti.common.constant.AFTConstants;
  29. import com.goafanti.common.constant.ErrorConstants;
  30. import com.goafanti.common.controller.CertifyApiController;
  31. import com.goafanti.common.dao.AdminMapper;
  32. import com.goafanti.common.enums.AchievementAuditStatus;
  33. import com.goafanti.common.enums.AchievementFields;
  34. import com.goafanti.common.enums.AchievementImportFields;
  35. import com.goafanti.common.enums.AchievementOrderStatus;
  36. import com.goafanti.common.enums.AttachmentType;
  37. import com.goafanti.common.enums.DeleteStatus;
  38. import com.goafanti.common.enums.MarketingPage;
  39. import com.goafanti.common.model.Achievement;
  40. import com.goafanti.common.model.AchievementOrder;
  41. import com.goafanti.common.model.AchievementPublish;
  42. import com.goafanti.common.model.AftFile;
  43. import com.goafanti.common.model.MarketingManagement;
  44. import com.goafanti.common.service.BranchInformationService;
  45. import com.goafanti.common.utils.LoggerUtils;
  46. import com.goafanti.common.utils.StringUtils;
  47. import com.goafanti.core.shiro.token.TokenManager;
  48. import com.goafanti.marketing.service.MarketingManagementService;
  49. import com.goafanti.user.service.UserService;
  50. @RestController
  51. @RequestMapping(value = "/api/admin/achievement")
  52. public class AdminAchievementApiController extends CertifyApiController {
  53. @Resource
  54. private AchievementService achievementService;
  55. @Resource
  56. private UserService userService;
  57. @Resource
  58. private AftFileService aftFileService;
  59. @Resource
  60. private AchievementOrderService achievementOrderService;
  61. @Resource
  62. private MarketingManagementService marketingManagementService;
  63. @Resource
  64. private AdminMapper adminMapper;
  65. @Resource
  66. AchievementPublishService achievementPublishService;
  67. @Resource
  68. BranchInformationService branchInformationService;
  69. /**
  70. * 个人成果列表
  71. */
  72. @RequestMapping(value = "/userList", method = RequestMethod.GET)
  73. private Result userList(Integer ownerType,String username, String ownerName, String ownerId, Integer auditStatus,
  74. Integer serialNumber, String name, String keyword, Integer category, Integer status,
  75. String releaseDateStartDate, String releaseDateEndDate,String createDateStartDate, String createDateEndDate, Integer releaseStatus, String pageNo,
  76. String pageSize,Integer boutique,Integer hot) {
  77. Result res = new Result();
  78. Integer pNo = 1;
  79. Integer pSize = 10;
  80. if (StringUtils.isNumeric(pageSize)) {
  81. pSize = Integer.parseInt(pageSize);
  82. }
  83. if (StringUtils.isNumeric(pageNo)) {
  84. pNo = Integer.parseInt(pageNo);
  85. }
  86. res.setData(achievementService.listUserOwnerAchievement(ownerType,username, ownerName, ownerId, auditStatus, serialNumber, name,
  87. keyword, category, status, releaseDateStartDate, releaseDateEndDate,createDateStartDate,createDateEndDate, releaseStatus, pNo, pSize,boutique,hot));
  88. return res;
  89. }
  90. /**
  91. * 组织用户成果列表(个人组织合并)
  92. */
  93. @RequestMapping(value = "/orgList", method = RequestMethod.GET)
  94. private Result orgList(Integer ownerType,String unitName, String ownerName, String ownerId, Integer auditStatus, Integer serialNumber, String name,
  95. String keyword, Integer category, Integer status, String releaseDateStartDate, String releaseDateEndDate,String createDateStartDate, String createDateEndDate,
  96. Integer releaseStatus,String internationalFlag, String pageNo, String pageSize,Integer boutique,Integer hot,String recordPerson) {
  97. Result res = new Result();
  98. Integer pNo = 1;
  99. Integer pSize = 10;
  100. if (StringUtils.isNumeric(pageSize)) {
  101. pSize = Integer.parseInt(pageSize);
  102. }
  103. if (StringUtils.isNumeric(pageNo)) {
  104. pNo = Integer.parseInt(pageNo);
  105. }
  106. Object o = achievementService.listOrgOwnerAchievement(ownerType,unitName, ownerName, ownerId, auditStatus, serialNumber, name,
  107. keyword, category, status, releaseDateStartDate, releaseDateEndDate, createDateStartDate, createDateEndDate, releaseStatus,internationalFlag, pNo, pSize,boutique,hot, recordPerson);
  108. res.setData(o);
  109. return res;
  110. }
  111. /**
  112. * 个人成果所有人列表
  113. */
  114. @RequestMapping(value = "/userOwner", method = RequestMethod.GET)
  115. public Result getAchievementUserOwner(String name) {
  116. Result res = new Result();
  117. if (StringUtils.isBlank(name)) {
  118. return res;
  119. }
  120. res.setData(userService.selectAchievementUserOwner(name));
  121. return res;
  122. }
  123. /**
  124. * 组织成果所有人列表
  125. */
  126. @RequestMapping(value = "/orgOwner", method = RequestMethod.GET)
  127. public Result getAchievementOrgOwner(String name) {
  128. Result res = new Result();
  129. if (StringUtils.isBlank(name)) {
  130. return res;
  131. }
  132. res.setData(userService.selectAchievementOrgOwner(name));
  133. return res;
  134. }
  135. /**
  136. * 个人成果详情详情
  137. */
  138. @RequestMapping(value = "/userDetail", method = RequestMethod.GET)
  139. private Result userDetail(String id) {
  140. Result res = new Result();
  141. if (StringUtils.isBlank(id)) {
  142. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果ID", "成果ID"));
  143. return res;
  144. }
  145. res.setData(achievementService.selectUserOwnerDetail(id));
  146. return res;
  147. }
  148. /**
  149. * 组织用户成果详情详情(个人组织合并)
  150. */
  151. @RequestMapping(value = "/orgDetail", method = RequestMethod.GET)
  152. private Result orgDetail(String id,int ownerType) {
  153. Result res = new Result();
  154. if (StringUtils.isBlank(id)) {
  155. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果ID", "成果ID"));
  156. return res;
  157. }
  158. if(ownerType==0){
  159. res.setData(achievementService.selectUserOwnerDetail(id));
  160. }else if(ownerType==1){
  161. res.setData(achievementService.selectOrgOwnerDetail(id));
  162. }
  163. return res;
  164. }
  165. /**
  166. * 新增成果
  167. */
  168. @RequestMapping(value = "/apply", method = RequestMethod.POST)
  169. private Result apply(@Valid InputAchievement ia, BindingResult bindingResult,
  170. @RequestParam(name = "keywords[]", required = false) String[] keywords,String coverImg,Integer hot) {
  171. Result res = new Result();
  172. if (bindingResult.hasErrors()) {
  173. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  174. AchievementFields.getFieldDesc(bindingResult.getFieldError().getField())));
  175. return res;
  176. }
  177. if (StringUtils.isBlank(ia.getOwnerId()) && StringUtils.isBlank(ia.getOwnerName())) {
  178. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果所有人", "成果所有人"));
  179. return res;
  180. }
  181. res = disposeInputAchievement(res, ia, keywords);
  182. if (!res.getError().isEmpty()) {
  183. return res;
  184. }
  185. Achievement a = new Achievement();
  186. BeanUtils.copyProperties(ia, a);
  187. achievementService.saveAchievement(a, keywords);
  188. if(null != hot && hot == 1){ //属于营销活动
  189. int marketHisCount = marketingManagementService.getMarketingCount(
  190. MarketingPage.mainAchievement.getPageUrl(), MarketingPage.mainAchievement.getBoothType(),1);
  191. if(marketHisCount >= MarketingPage.mainAchievement.getBoothSize()) { //展位已满
  192. res.getError().add(buildError(ErrorConstants.MARKET_BOOTH_MAX, "",marketHisCount));
  193. return res;
  194. }else{ //保存营销记录
  195. MarketingManagement mm = new MarketingManagement();
  196. mm.setShowPage(MarketingPage.mainAchievement.getPageUrl()); //营销页面
  197. mm.setCategory(MarketingPage.mainAchievement.getBoothType()); //营销分类
  198. if(StringUtils.isNotBlank(coverImg)) mm.setCoverImg(coverImg);
  199. mm.setProductId(a.getId());
  200. mm.setEffective(1);
  201. marketingManagementService.save(mm);
  202. }
  203. }
  204. return res;
  205. }
  206. /**
  207. * 修改成果
  208. */
  209. @RequestMapping(value = "/update", method = RequestMethod.POST)
  210. public Result update(@Valid InputAchievement ia, BindingResult bindingResult, Integer switchSign,
  211. @RequestParam(name = "keywords[]", required = false) String[] keywords,String coverImg,Integer hot) {
  212. Result res = new Result();
  213. if (bindingResult.hasErrors()) {
  214. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  215. AchievementFields.getFieldDesc(bindingResult.getFieldError().getField())));
  216. return res;
  217. }
  218. /* if (null == switchSign) {
  219. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到开关标记", "开关标记"));
  220. return res;
  221. }
  222. if (!AchievementSwitchSign.CLOSE.getCode().equals(switchSign)
  223. && !AchievementSwitchSign.OPEN.getCode().equals(switchSign)) {
  224. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "开关标记"));
  225. return res;
  226. }*/
  227. if (StringUtils.isBlank(ia.getId())) {
  228. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果ID", "成果ID"));
  229. return res;
  230. }
  231. if (StringUtils.isBlank(ia.getOwnerId()) && StringUtils.isBlank(ia.getOwnerName())) {
  232. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果所有人", "成果所有人"));
  233. return res;
  234. }
  235. if (!AchievementAuditStatus.CREATE.getCode().equals(ia.getAuditStatus())
  236. && !AchievementAuditStatus.SUBMIT.getCode().equals(ia.getAuditStatus())
  237. && !AchievementAuditStatus.UNAUDITED.getCode().equals(ia.getAuditStatus())) {
  238. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "当前状态无法提交审核!"));
  239. return res;
  240. }
  241. res = disposeInputAchievement(res, ia, keywords);
  242. if (!res.getError().isEmpty()) {
  243. return res;
  244. }
  245. Achievement a = new Achievement();
  246. BeanUtils.copyProperties(ia, a);
  247. achievementService.updateAchievement(a, keywords, switchSign);
  248. //更新营销活动
  249. MarketingManagement mm = marketingManagementService.selectMarket(
  250. MarketingPage.mainAchievement.getPageUrl(), MarketingPage.mainAchievement.getBoothType(), a.getId());
  251. if (null != mm) {
  252. if(mm.getEffective() == 1){ //原本属于营销有效
  253. if (null != coverImg) mm.setCoverImg(coverImg);
  254. if (null != hot) mm.setEffective(hot);
  255. marketingManagementService.update(mm);
  256. }else if(mm.getEffective() == 0){ //原本属于营销无效
  257. int marketHisCount = marketingManagementService.getMarketingCount(
  258. MarketingPage.mainAchievement.getPageUrl(), MarketingPage.mainAchievement.getBoothType(), 1);
  259. if (marketHisCount >= MarketingPage.mainAchievement.getBoothSize()) { // 展位已满
  260. res.getError().add(buildError(ErrorConstants.MARKET_BOOTH_MAX,"", marketHisCount));
  261. return res;
  262. }else{
  263. if (null != hot) mm.setEffective(hot);
  264. if (null != coverImg) mm.setCoverImg(coverImg);
  265. marketingManagementService.update(mm);
  266. }
  267. }
  268. }else{
  269. if(null != hot && hot == 1){ //属于营销活动
  270. int marketHisCount = marketingManagementService.getMarketingCount(
  271. MarketingPage.mainAchievement.getPageUrl(), MarketingPage.mainAchievement.getBoothType(),1);
  272. if(marketHisCount >= MarketingPage.mainAchievement.getBoothSize()) { //展位已满
  273. res.getError().add(buildError(ErrorConstants.MARKET_BOOTH_MAX, "",marketHisCount));
  274. return res;
  275. }else{ //保存营销记录
  276. mm = new MarketingManagement();
  277. mm.setShowPage(MarketingPage.mainAchievement.getPageUrl()); //营销页面
  278. mm.setCategory(MarketingPage.mainAchievement.getBoothType()); //营销分类
  279. if(StringUtils.isNotBlank(coverImg)) mm.setCoverImg(coverImg);
  280. mm.setProductId(a.getId());
  281. mm.setEffective(1);
  282. marketingManagementService.save(mm);
  283. }
  284. }
  285. }
  286. return res;
  287. }
  288. /**
  289. * 科技成果匹配科技需求
  290. */
  291. @RequestMapping(value = "/matchDemand", method = RequestMethod.POST)
  292. public Result matchDemand(String id) {
  293. Result res = new Result();
  294. if (StringUtils.isBlank(id)) {
  295. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果ID", "成果ID"));
  296. return res;
  297. }
  298. Achievement a = achievementService.selectByPrimaryKey(id);
  299. if (null == a || !AchievementAuditStatus.AUDITED.getCode().equals(a.getAuditStatus())
  300. || !DeleteStatus.UNDELETE.getCode().equals(a.getDeletedSign())
  301. ) {
  302. res.getError().add(buildError("", "当前状态无法匹配!"));
  303. return res;
  304. }
  305. res.setData(achievementService.updateMatchDemand(a));
  306. return res;
  307. }
  308. /**
  309. * 批量导入科技成果
  310. */
  311. @SuppressWarnings("unchecked")
  312. @RequestMapping(value = "/importAchievement", method = RequestMethod.POST)
  313. public Result importAchievement(@RequestParam(name = "data", required = false) String d) {
  314. Result res = new Result();
  315. List<AchievementImportBo> data = JSON.parseArray(d, AchievementImportBo.class);
  316. if (data == null || data.isEmpty()) {
  317. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "导入数据"));
  318. return res;
  319. }
  320. if (data.size() > AFTConstants.IMPORTMAXLENTH) {
  321. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "导入数据量"));
  322. return res;
  323. }
  324. res = disposeImportAchievement(res, data);
  325. if (!res.getError().isEmpty()) {
  326. return res;
  327. }
  328. data = (List<AchievementImportBo>) res.getData();
  329. achievementService.insertImport(data);
  330. return res;
  331. }
  332. /**
  333. * 成果需求匹配列表
  334. */
  335. @RequestMapping(value = "/achievementDemand", method = RequestMethod.GET)
  336. public Result achievementDemand(String id) {
  337. Result res = new Result();
  338. res.setData(achievementService.selectAchievementDemandListByAchievementId(id));
  339. return res;
  340. }
  341. /**
  342. * 上传技术成果批量导入Excel模板
  343. *
  344. * @param req
  345. * @return
  346. */
  347. @RequestMapping(value = "/uploadTemplate", method = RequestMethod.POST)
  348. public Result uploadPatentTemplate(HttpServletRequest req, String sign) {
  349. Result res = new Result();
  350. String fileName = "";
  351. List<MultipartFile> files = getFiles(req);
  352. MultipartFile mf = files.get(0);
  353. String suffix = mf.getOriginalFilename().substring(mf.getOriginalFilename().lastIndexOf("."));
  354. if (suffix.equals(".xls") || suffix.equals(".xlsx")) {
  355. AttachmentType attachmentType = AttachmentType.getField(sign);
  356. if (attachmentType == AttachmentType.ACHIEVEMENT_TEMPLATE) {
  357. fileName = sign + suffix;
  358. } else {
  359. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
  360. return res;
  361. }
  362. String name = handleFile(res, req, fileName, files, mf);
  363. res.setData(name);
  364. if (!StringUtils.isBlank(name) && null == aftFileService.selectAftFileBySign(sign)) {
  365. AftFile f = new AftFile();
  366. f.setId(UUID.randomUUID().toString());
  367. f.setFileName(AttachmentType.ACHIEVEMENT_TEMPLATE.getDesc());
  368. f.setUid(TokenManager.getAdminId());
  369. f.setComment(AttachmentType.ACHIEVEMENT_TEMPLATE.getDesc());
  370. f.setSign(sign);
  371. f.setFilePath("/admin/" + fileName);
  372. f.setDeleletedSign(DeleteStatus.UNDELETE.getCode());
  373. aftFileService.insert(f);
  374. }
  375. } else {
  376. res.getError().add(buildError(ErrorConstants.FILE_PATTERN_ERROR, "文件格式错误,请重新上传!"));
  377. }
  378. return res;
  379. }
  380. /**
  381. * 下载技术成果批量导入Excel模板
  382. *
  383. * @param response
  384. * @return
  385. */
  386. @RequestMapping(value = "/downloadTemplate", method = RequestMethod.GET)
  387. public Result downloadTemplateFile(HttpServletResponse response, String sign) {
  388. Result res = new Result();
  389. AttachmentType attachmentType = AttachmentType.getField(sign);
  390. if (attachmentType == AttachmentType.ACHIEVEMENT_TEMPLATE) {
  391. String fileName = "";
  392. AftFile af = aftFileService.selectAftFileBySign(sign);
  393. if (null == af) {
  394. res.getError().add(buildError(ErrorConstants.FILE_NON_EXISTENT, "", "找不到文件!"));
  395. } else {
  396. String path = af.getFilePath();
  397. String suffix = path.substring(path.lastIndexOf("."));
  398. fileName = AttachmentType.ACHIEVEMENT_TEMPLATE.getDesc() + suffix;
  399. downloadFile(response, fileName, path);
  400. }
  401. } else {
  402. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
  403. }
  404. return res;
  405. }
  406. /**
  407. * 成果撤消发布(下架)
  408. */
  409. @RequestMapping(value = "/offShelf", method = RequestMethod.POST)
  410. public Result offShelf(String id,Integer releaseStatus) {
  411. Result res = new Result();
  412. if (StringUtils.isBlank(id)) {
  413. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果ID", "成果ID"));
  414. return res;
  415. }
  416. Achievement a = achievementService.selectByPrimaryKey(id);
  417. if (null == a) {
  418. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "需求ID"));
  419. return res;
  420. }
  421. a.setReleaseStatus(releaseStatus);
  422. res.setData(achievementService.updateReleaseStatus(a));
  423. return res;
  424. }
  425. /**
  426. * 下载文本文件
  427. */
  428. @RequestMapping(value = "/download", method = RequestMethod.GET)
  429. public Result download(HttpServletResponse response, String id, String sign) {
  430. Result res = new Result();
  431. if (StringUtils.isEmpty(id)) {
  432. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "科技成果ID"));
  433. return res;
  434. }
  435. Achievement a = achievementService.selectByPrimaryKey(id);
  436. if (null == a) {
  437. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "科技成果ID"));
  438. return res;
  439. }
  440. AttachmentType attachmentType = AttachmentType.getField(sign);
  441. if (attachmentType == AttachmentType.ACHIEVEMENT_MATURITY_TEXT_FILE) {
  442. downloadUnPrivateFile(response, a.getMaturityTextFileDownloadFileName(), a.getMaturityTextFileUrl());
  443. } else if (attachmentType == AttachmentType.ACHIEVEMENT_TECH_PLAN) {
  444. downloadUnPrivateFile(response, a.getTechPlanDownloadFileName(), a.getTechPlanUrl());
  445. } else if (attachmentType == AttachmentType.ACHIEVEMENT_BUSINESS_PLAN) {
  446. downloadUnPrivateFile(response, a.getBusinessPlanDownloadFileName(), a.getBusinessPlanUrl());
  447. } else {
  448. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
  449. }
  450. return res;
  451. }
  452. /**
  453. * 文本文件上传
  454. */
  455. @RequestMapping(value = "/uploadTextFile", method = RequestMethod.POST)
  456. public Result uploadTextFile(HttpServletRequest req, String sign) {
  457. Result res = new Result();
  458. AttachmentType attachmentType = AttachmentType.getField(sign);
  459. if (attachmentType == AttachmentType.ACHIEVEMENT_MATURITY_TEXT_FILE
  460. || attachmentType == AttachmentType.ACHIEVEMENT_TECH_PLAN
  461. || attachmentType == AttachmentType.ACHIEVEMENT_BUSINESS_PLAN) {
  462. res.setData(handleFiles(res, "/achievement/", false, req, sign, "achievement"));
  463. } else {
  464. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
  465. }
  466. return res;
  467. }
  468. /**
  469. * 图片上传
  470. */
  471. @RequestMapping(value = "/uploadPicture", method = RequestMethod.POST)
  472. public Result uploadPicture(HttpServletRequest req, String sign) {
  473. Result res = new Result();
  474. AttachmentType attachmentType = AttachmentType.getField(sign);
  475. if (attachmentType == AttachmentType.ACHIEVEMENT_TECHNICAL_PICTURE
  476. || attachmentType == AttachmentType.ACHIEVEMENT_MATURITY_PICTURE
  477. || attachmentType == AttachmentType.ACHIEVEMENT_COVER_PICTURE) {
  478. res.setData(handleFiles(res, "/achievement/", false, req, sign, "achievement"));
  479. } else {
  480. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
  481. }
  482. return res;
  483. }
  484. /**
  485. * 删除
  486. */
  487. @RequestMapping(value = "/delete", method = RequestMethod.POST)
  488. private Result delete(@RequestParam(name = "ids[]", required = false) String[] ids) {
  489. Result res = new Result();
  490. if (ids == null || ids.length != 1) {
  491. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", ""));
  492. } else {
  493. List<AchievementOrder> list = achievementOrderService.selectAchievementOrderByAchievementId(ids[0]);
  494. for (AchievementOrder order : list) {
  495. if (!AchievementOrderStatus.UNPAYED.getCode().equals(order.getStatus())) {
  496. res.getError().add(buildError("", "当前科技成果有订单,无法删除!"));
  497. return res;
  498. }
  499. }
  500. marketingManagementService.deleteByProductId(Arrays.asList(ids));
  501. res.setData(achievementService.deleteByPrimaryKey(Arrays.asList(ids)));
  502. }
  503. return res;
  504. }
  505. private Result disposeInputAchievement(Result res, InputAchievement ia, String[] keywords) {
  506. if (StringUtils.isBlank(ia.getName())) {
  507. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果名称", "成果名称"));
  508. return res;
  509. }
  510. if (null == ia.getCategory()) {
  511. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到数据类别", "数据类别"));
  512. return res;
  513. }
  514. if (StringUtils.isBlank(ia.getKeyword())) {
  515. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到关键词", "关键词"));
  516. return res;
  517. }
  518. if (null == keywords || keywords.length < 1) {
  519. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到关键词", "关键词"));
  520. return res;
  521. }
  522. if (null == ia.getOwnerType()) {
  523. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到所有人类型", "成果类别"));
  524. return res;
  525. }
  526. if (null == ia.getCooperationMode()) {
  527. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到合作方式", "合作方式"));
  528. return res;
  529. }
  530. for (int i = 0; i < keywords.length; i++) {
  531. if (AFTConstants.KEYWORDLENTH < keywords[i].length()) {
  532. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "关键词长度"));
  533. return res;
  534. }
  535. }
  536. return res;
  537. }
  538. private String handleFile(Result res, HttpServletRequest req, String fileName, List<MultipartFile> files,
  539. MultipartFile mf) {
  540. if (!files.isEmpty()) {
  541. try {
  542. mf.transferTo(toAdminPrivateFile(fileName));
  543. LoggerUtils.debug(getClass(), fileName + " 文件上传成功");
  544. } catch (IllegalStateException | IOException e) {
  545. LoggerUtils.error(getClass(), "文件上传失败", e);
  546. res.getError().add(buildError("", "文件上传失败!"));
  547. return "";
  548. }
  549. } else {
  550. res.getError().add(buildError("", "文件上传失败!"));
  551. return "";
  552. }
  553. return fileName;
  554. }
  555. private Result disposeImportAchievement(Result res, List<AchievementImportBo> data) {
  556. Field[] field = AchievementImportBo.class.getDeclaredFields();
  557. for (AchievementImportBo bo : data) {
  558. for (Field f : field) {
  559. f.setAccessible(true);
  560. try {
  561. if (!f.getName().equals("keywords") && (f.get(bo) == null || "".equals(f.get(bo)))) {
  562. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "",
  563. AchievementImportFields.getFieldDesc(f.getName())));
  564. return res;
  565. }
  566. } catch (IllegalArgumentException | IllegalAccessException e) {
  567. }
  568. }
  569. if (bo.getDataCategory().toString().length() > 1) {
  570. res.getError().add(buildError(ErrorConstants.PARAM_SIZE_ERROR, "",
  571. AchievementImportFields.DATACATEGORY.getDesc()));
  572. return res;
  573. }
  574. if (bo.getName().length() > 31) {
  575. res.getError()
  576. .add(buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.NAME.getDesc()));
  577. return res;
  578. }
  579. if (bo.getCategory().toString().length() > 1) {
  580. res.getError().add(
  581. buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.CATEGORY.getDesc()));
  582. return res;
  583. }
  584. if (bo.getOwnerName().length() > 31) {
  585. res.getError().add(
  586. buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.OWNERNAME.getDesc()));
  587. return res;
  588. }
  589. if (bo.getOwnerType().toString().length() > 1) {
  590. res.getError().add(
  591. buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.OWNERTYPE.getDesc()));
  592. return res;
  593. }
  594. if (bo.getOwnerIdNumber().length() > 35) {
  595. res.getError().add(buildError(ErrorConstants.PARAM_SIZE_ERROR, "",
  596. AchievementImportFields.OWNERIDNUMBER.getDesc()));
  597. return res;
  598. }
  599. if (bo.getOwnerMobile().length() > 11) {
  600. res.getError().add(
  601. buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.OWNERMOBILE.getDesc()));
  602. return res;
  603. }
  604. if (bo.getOwnerEmail().length() > 254) {
  605. res.getError().add(
  606. buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.OWNERMOBILE.getDesc()));
  607. return res;
  608. }
  609. if (bo.getOwnerPostalAddress().length() > 254) {
  610. res.getError().add(buildError(ErrorConstants.PARAM_SIZE_ERROR, "",
  611. AchievementImportFields.OWNERPOSTALADDRESS.getDesc()));
  612. return res;
  613. }
  614. if (bo.getCooperationMode().toString().length() > 1) {
  615. res.getError().add(buildError(ErrorConstants.PARAM_SIZE_ERROR, "",
  616. AchievementImportFields.COOPERATIONMODE.getDesc()));
  617. return res;
  618. }
  619. if (bo.getKeyword().length() > 44) {
  620. res.getError().add(
  621. buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.KEYWORD.getDesc()));
  622. return res;
  623. }
  624. String[] keywords = bo.getKeyword().trim().split(",|,");
  625. if (null == keywords || keywords.length < 1) {
  626. res.getError()
  627. .add(buildError(ErrorConstants.PARAM_ERROR, "", AchievementImportFields.KEYWORD.getDesc()));
  628. return res;
  629. }
  630. List<String> list = new ArrayList<>();
  631. for (String s : keywords) {
  632. if (!StringUtils.isBlank(s)) {
  633. list.add(s);
  634. }
  635. }
  636. bo.setKeywords(list);
  637. }
  638. res.setData(data);
  639. return res;
  640. }
  641. /**
  642. * 我的成果列表
  643. */
  644. @RequestMapping(value = "/myList", method = RequestMethod.GET)
  645. private Result myList(Integer ownerType,String unitName, String ownerName, String ownerId, Integer auditStatus, Integer serialNumber, String name,
  646. String keyword, Integer category, Integer status, String releaseDateStartDate, String releaseDateEndDate,String createDateStartDate, String createDateEndDate,
  647. Integer releaseStatus,String internationalFlag, String pageNo, String pageSize,Integer boutique,Integer hot) {
  648. Result res = new Result();
  649. Integer pNo = 1;
  650. Integer pSize = 10;
  651. if (StringUtils.isNumeric(pageSize)) {
  652. pSize = Integer.parseInt(pageSize);
  653. }
  654. if (StringUtils.isNumeric(pageNo)) {
  655. pNo = Integer.parseInt(pageNo);
  656. }
  657. String techBrokerId=TokenManager.getAdminId();
  658. Object o = achievementService.listMyAchievement(techBrokerId,ownerType,unitName, ownerName, ownerId, auditStatus, serialNumber, name,
  659. keyword, category, status, releaseDateStartDate, releaseDateEndDate, createDateStartDate, createDateEndDate, releaseStatus,internationalFlag, pNo, pSize,boutique,hot);
  660. res.setData(o);
  661. return res;
  662. }
  663. /**
  664. * 科技成果管理列表
  665. */
  666. @RequestMapping(value = "/manageList", method = RequestMethod.GET)
  667. private Result manageList(Integer ownerType,String unitName, String ownerName, String ownerId, Integer auditStatus, Integer serialNumber, String name,
  668. String keyword, Integer category, Integer status, String releaseDateStartDate, String releaseDateEndDate,String createDateStartDate, String createDateEndDate,
  669. Integer releaseStatus,String internationalFlag, String pageNo, String pageSize,Integer boutique,Integer hot,String recordPerson) {
  670. Result res = new Result();
  671. Integer pNo = 1;
  672. Integer pSize = 10;
  673. if (StringUtils.isNumeric(pageSize)) {
  674. pSize = Integer.parseInt(pageSize);
  675. }
  676. if (StringUtils.isNumeric(pageNo)) {
  677. pNo = Integer.parseInt(pageNo);
  678. }
  679. String techBrokerId=TokenManager.getAdminId();
  680. Object o = achievementService.listManageAchievement(techBrokerId,ownerType,unitName, ownerName, ownerId, auditStatus, serialNumber, name,
  681. keyword, category, status, releaseDateStartDate, releaseDateEndDate, createDateStartDate, createDateEndDate, releaseStatus,internationalFlag, pNo, pSize,boutique,hot,recordPerson);
  682. res.setData(o);
  683. return res;
  684. }
  685. /**
  686. * 成果发布
  687. */
  688. @RequestMapping(value = "/addAchievementPublish", method = RequestMethod.POST)
  689. private Result addAchievementPublish(AchievementPublish a) {
  690. Result res = new Result();
  691. if (StringUtils.isBlank(a.getAchievementId())) {
  692. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果", "成果"));
  693. return res;
  694. }
  695. res.setData(achievementPublishService.insertachievementPublish(a));
  696. return res;
  697. }
  698. /**
  699. * 撤销发布
  700. */
  701. @RequestMapping(value = "/deletePublish", method = RequestMethod.GET)
  702. private Result deletePublish(String id) {
  703. Result res = new Result();
  704. res.setData(achievementPublishService.deletePublish(id));
  705. return res;
  706. }
  707. /**
  708. * 修改发布
  709. */
  710. @RequestMapping(value = "/updatePublish", method = RequestMethod.GET)
  711. private Result updatePublish(AchievementPublish a) {
  712. Result res = new Result();
  713. res.setData(achievementPublishService.updatePublish(a));
  714. return res;
  715. }
  716. /**
  717. * 发布列表
  718. */
  719. @RequestMapping(value = "/listPublish", method = RequestMethod.GET)
  720. private Result listPublish(String name,String publishPlatform,Integer publishClient,String publishPage,
  721. Integer ifTop, Integer pageNo, Integer pageSize,String ownerName) {
  722. Result res = new Result();
  723. if (null==pageNo) {
  724. pageNo=1;
  725. }
  726. if (null==pageSize) {
  727. pageSize=10;
  728. }
  729. res.setData(achievementPublishService.listPublish( name, publishPlatform, publishClient, publishPage,
  730. ifTop, pageNo, pageSize,ownerName));
  731. return res;
  732. }
  733. /**
  734. * 获取分公司信息
  735. */
  736. @RequestMapping(value="/getBranchInformation",method = RequestMethod.GET)
  737. private Result getBranchInformation(){
  738. Result res=new Result();
  739. return res.data(branchInformationService.getBranchInformation());
  740. }
  741. /**
  742. * 获取成果页面位置
  743. */
  744. @RequestMapping(value="/getPublishPage",method = RequestMethod.GET)
  745. private Result getPublishPage(){
  746. Result res=new Result();
  747. return res.data(AchievementPublishPageService.getBranchInformation());
  748. }
  749. /**
  750. * 客户知识产权列表(成果)
  751. * @return
  752. */
  753. @RequestMapping(value="/listUserAchievement",method = RequestMethod.GET)
  754. private Result listUserAchievement(String uid,Integer pageNo, Integer pageSize){
  755. Result res=new Result();
  756. if (StringUtils.isBlank(uid)) {
  757. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到用户", "用户"));
  758. return res;
  759. }
  760. return res.data(achievementService.listUserAchievement(uid,pageNo,pageSize));
  761. }
  762. }