CognizanceApiController.java 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119
  1. package com.goafanti.cognizance.controller;
  2. import java.io.IOException;
  3. import java.text.ParseException;
  4. import java.util.ArrayList;
  5. import java.util.Calendar;
  6. import java.util.List;
  7. import java.util.UUID;
  8. import javax.annotation.Resource;
  9. import javax.servlet.http.HttpServletRequest;
  10. import org.springframework.stereotype.Controller;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RequestMethod;
  13. import org.springframework.web.bind.annotation.RequestParam;
  14. import org.springframework.web.multipart.MultipartFile;
  15. import com.goafanti.cognizance.bo.ActivityNumberBo;
  16. import com.goafanti.cognizance.bo.AnnualReportBo;
  17. import com.goafanti.cognizance.bo.CognizanceDetailBo;
  18. import com.goafanti.cognizance.service.OrgActivityCostService;
  19. import com.goafanti.cognizance.service.OrgActivityService;
  20. import com.goafanti.cognizance.service.OrgAnnualReportService;
  21. import com.goafanti.cognizance.service.OrgCognizanceLogService;
  22. import com.goafanti.cognizance.service.OrgCognizanceService;
  23. import com.goafanti.cognizance.service.OrgFinanceService;
  24. import com.goafanti.cognizance.service.OrgHonorDatumService;
  25. import com.goafanti.cognizance.service.OrgIntellectualPropertyService;
  26. import com.goafanti.cognizance.service.OrgRatepayService;
  27. import com.goafanti.cognizance.service.OrgStandardService;
  28. import com.goafanti.cognizance.service.OrgTechAchievementService;
  29. import com.goafanti.cognizance.service.OrgTechCenterDetailService;
  30. import com.goafanti.cognizance.service.OrgTechCenterService;
  31. import com.goafanti.cognizance.service.OrgTechProductService;
  32. import com.goafanti.common.bo.Result;
  33. import com.goafanti.common.constant.ErrorConstants;
  34. import com.goafanti.common.controller.BaseApiController;
  35. import com.goafanti.common.model.OrgActivity;
  36. import com.goafanti.common.model.OrgActivityCost;
  37. import com.goafanti.common.model.OrgAnnualReport;
  38. import com.goafanti.common.model.OrgCognizance;
  39. import com.goafanti.common.model.OrgCognizanceLog;
  40. import com.goafanti.common.model.OrgFinance;
  41. import com.goafanti.common.model.OrgHonorDatum;
  42. import com.goafanti.common.model.OrgIntellectualProperty;
  43. import com.goafanti.common.model.OrgRatepay;
  44. import com.goafanti.common.model.OrgStandard;
  45. import com.goafanti.common.model.OrgTechAchievement;
  46. import com.goafanti.common.model.OrgTechCenter;
  47. import com.goafanti.common.model.OrgTechCenterDetail;
  48. import com.goafanti.common.model.OrgTechProduct;
  49. import com.goafanti.common.model.OrganizationIdentity;
  50. import com.goafanti.common.utils.DateUtils;
  51. import com.goafanti.common.utils.FileUtils;
  52. import com.goafanti.common.utils.LoggerUtils;
  53. import com.goafanti.common.utils.StringUtils;
  54. import com.goafanti.core.shiro.token.TokenManager;
  55. import com.goafanti.user.service.OrganizationIdentityService;
  56. import com.goafanti.user.service.UserService;
  57. @Controller
  58. @RequestMapping(value = "/techservice/cognizance")
  59. public class CognizanceApiController extends BaseApiController {
  60. @Resource
  61. private UserService userService;
  62. @Resource
  63. private OrgStandardService orgStandardService;
  64. @Resource
  65. private OrgActivityService orgActivityService;
  66. @Resource
  67. private OrgIntellectualPropertyService orgIntellectualPropertyService;
  68. @Resource
  69. private OrganizationIdentityService organizationIdentityService;
  70. @Resource
  71. private OrgTechProductService orgTechProductService;
  72. @Resource
  73. private OrgActivityCostService orgActivityCostService;
  74. @Resource
  75. private OrgRatepayService orgRatepayService;
  76. @Resource
  77. private OrgFinanceService orgFinanceService;
  78. @Resource
  79. private OrgTechAchievementService orgTechAchievementService;
  80. @Resource
  81. private OrgHonorDatumService orgHonorDatumService;
  82. @Resource
  83. private OrgTechCenterService orgTechCenterService;
  84. @Resource
  85. private OrgTechCenterDetailService orgTechCenterDetailService;
  86. @Resource
  87. private OrgCognizanceService orgCognizanceService;
  88. @Resource
  89. private OrgAnnualReportService orgAnnualReportService;
  90. @Resource
  91. private OrgCognizanceLogService orgCognizanceLogService;
  92. /**
  93. * 企业研究开发活动情况表入口
  94. *
  95. * @param activityNumber
  96. * @param activityName
  97. * @param startDate
  98. * @param endDate
  99. * @param pageNo
  100. * @param pageSize
  101. * @return
  102. * @throws ParseException
  103. */
  104. @RequestMapping(value = "/activityList", method = RequestMethod.POST)
  105. public Result activityList(String activityNumber, String activityName, String startDateFormattedDate,
  106. String endDateFormattedDate, String pageNo, String pageSize) throws ParseException {
  107. Result res = new Result();
  108. res = checkCertify(res);
  109. if (res.getError().isEmpty()) {
  110. Integer pNo = 1;
  111. Integer pSize = 10;
  112. if (StringUtils.isNumeric(pageSize)) {
  113. pSize = Integer.parseInt(pageSize);
  114. }
  115. if (StringUtils.isNumeric(pageNo)) {
  116. pNo = Integer.parseInt(pageNo);
  117. }
  118. res.setData(orgActivityService.listOrgActivity(activityNumber, activityName, startDateFormattedDate,
  119. endDateFormattedDate, pNo, pSize, TokenManager.getUserId()));
  120. }
  121. return res;
  122. }
  123. /**
  124. * 企业研究开发活动情况新增、修改
  125. *
  126. * @param orgActivity
  127. * @return
  128. * @throws ParseException
  129. */
  130. @RequestMapping(value = "/activity", method = RequestMethod.POST)
  131. public Result activity(OrgActivity orgActivity, String startDateFormattedDate, String endDateFormattedDate)
  132. throws ParseException {
  133. Result res = new Result();
  134. res = checkCertify(res);
  135. if (res.getError().isEmpty()) {
  136. orgActivity.setDeletedSign(0);
  137. if (!StringUtils.isBlank(startDateFormattedDate)) {
  138. orgActivity.setStartDate(DateUtils.parseDate(startDateFormattedDate, "yyyy-MM-dd"));
  139. }
  140. if (!StringUtils.isBlank(endDateFormattedDate)) {
  141. orgActivity.setEndDate(DateUtils.parseDate(endDateFormattedDate, "yyyy-MM-dd"));
  142. }
  143. if (StringUtils.isBlank(orgActivity.getId())) {
  144. orgActivity.setId(UUID.randomUUID().toString());
  145. orgActivity.setUid(TokenManager.getUserId());
  146. orgActivityService.insert(orgActivity);
  147. } else {
  148. orgActivityService.updateOrgActivity(orgActivity);
  149. }
  150. res.setData(orgActivity);
  151. }
  152. return res;
  153. }
  154. /**
  155. * 删除企业研究开发活动情况
  156. *
  157. * @param ids
  158. * @return
  159. */
  160. @RequestMapping(value = "/deleteActivity", method = RequestMethod.POST)
  161. public Result deleteActivity(@RequestParam(name = "ids[]", required = true) String[] ids) {
  162. Result res = new Result();
  163. List<String> id = new ArrayList<String>();
  164. for (String s : ids) {
  165. id.add(s);
  166. }
  167. orgActivityService.deleteByPrimaryKey(id);
  168. orgActivityCostService.deleteByAid(id);
  169. return res;
  170. }
  171. /**
  172. * 企业年度研究开发费用结构明细表列表入口
  173. *
  174. * @return
  175. * @throws ParseException
  176. */
  177. @RequestMapping(value = "/activityCostList", method = RequestMethod.POST)
  178. public Result activityCostList(String activityNumber, String startDateFormattedDate, String endDateFormattedDate,
  179. String pageNo, String pageSize) throws ParseException {
  180. Result res = new Result();
  181. res = checkCertify(res);
  182. if (res.getError().isEmpty()) {
  183. Integer pNo = 1;
  184. Integer pSize = 10;
  185. if (StringUtils.isNumeric(pageSize)) {
  186. pSize = Integer.parseInt(pageSize);
  187. }
  188. if (StringUtils.isNumeric(pageNo)) {
  189. pNo = Integer.parseInt(pageNo);
  190. }
  191. res.setData(orgActivityCostService.listOrgActivityCost(activityNumber, startDateFormattedDate,
  192. endDateFormattedDate, pNo, pSize, TokenManager.getUserId()));
  193. }
  194. return res;
  195. }
  196. /**
  197. * 企业年度研究开发费用结构明细表(新增+修改)
  198. *
  199. * @return
  200. * @throws ParseException
  201. */
  202. @RequestMapping(value = "/activityCost", method = RequestMethod.POST)
  203. public Result activityCost(OrgActivityCost orgActivityCost, String signDateFormattedDate) throws ParseException {
  204. Result res = new Result();
  205. res = checkCertify(res);
  206. if (res.getError().isEmpty()) {
  207. if (!StringUtils.isBlank(signDateFormattedDate)) {
  208. orgActivityCost.setSignDate(DateUtils.parseDate(signDateFormattedDate, "yyyy-MM-dd"));
  209. }
  210. if (StringUtils.isBlank(orgActivityCost.getId())) {
  211. if (null != orgActivityCostService.selectOrgActivityCostByUidAndAid(orgActivityCost.getAid(),
  212. TokenManager.getUserId())){
  213. res.getError().add(buildError(ErrorConstants.DUPLICATE_DATA_ERROR, "该研究项目费用详情已录入!"));
  214. return res;
  215. }
  216. OrgActivity ac = orgActivityService.selectOrgActivityByPrimaryKey(orgActivityCost.getAid());
  217. orgActivityCost.setStartDate(ac.getStartDate());
  218. orgActivityCost.setEndDate(ac.getEndDate());
  219. orgActivityCost.setId(UUID.randomUUID().toString());
  220. orgActivityCost.setUid(TokenManager.getUserId());
  221. orgActivityCost.setDeletedSign(0);
  222. orgActivityCostService.insert(orgActivityCost);
  223. } else {
  224. orgActivityCostService.updateByPrimaryKeySelective(orgActivityCost);
  225. }
  226. }
  227. return res;
  228. }
  229. /**
  230. * 删除企业年度研究开发费用结构明细表
  231. *
  232. * @param ids
  233. * @return
  234. */
  235. @RequestMapping(value = "/deleteActivityCost", method = RequestMethod.POST)
  236. public Result deleteActivityCost(@RequestParam(name = "ids[]", required = true) String[] ids) {
  237. Result res = new Result();
  238. List<String> id = new ArrayList<String>();
  239. for (String s : ids) {
  240. id.add(s);
  241. }
  242. res.setData(orgActivityCostService.batchDeleteByPrimaryKey(id));
  243. return res;
  244. }
  245. /**
  246. * 企业参与国家标准或行业标准制定情况明细入口
  247. *
  248. * @return
  249. */
  250. @RequestMapping(value = "/standard", method = RequestMethod.POST)
  251. public Result standard(String standardName, String standardNumber, Integer standardLevel, Integer participateWay,
  252. String pageNo, String pageSize) {
  253. Result res = new Result();
  254. res = checkCertify(res);
  255. if (res.getError().isEmpty()) {
  256. Integer pNo = 1;
  257. Integer pSize = 10;
  258. if (StringUtils.isNumeric(pageSize)) {
  259. pSize = Integer.parseInt(pageSize);
  260. }
  261. if (StringUtils.isNumeric(pageNo)) {
  262. pNo = Integer.parseInt(pageNo);
  263. }
  264. res.setData(orgStandardService.listOrgStandard(standardName, standardNumber, standardLevel, participateWay,
  265. pNo, pSize, TokenManager.getUserId()));
  266. }
  267. return res;
  268. }
  269. /**
  270. * 企业参与国家标准或行业标准制定情况明细修改保存
  271. *
  272. * @return
  273. */
  274. @RequestMapping(value = "/developStandard", method = RequestMethod.POST)
  275. public Result developStandard(OrgStandard orgStandard) {
  276. Result res = new Result();
  277. res = checkCertify(res);
  278. if (res.getError().isEmpty()) {
  279. if (StringUtils.isBlank(orgStandard.getId())) {
  280. orgStandard.setId(UUID.randomUUID().toString());
  281. orgStandard.setUid(TokenManager.getUserId());
  282. orgStandard.setDeletedSign(0);
  283. Calendar now = Calendar.getInstance();
  284. now.set(Calendar.MILLISECOND, 0);
  285. orgStandard.setCreateTime(now.getTime());
  286. orgStandardService.insert(orgStandard);
  287. } else {
  288. orgStandardService.updateByPrimaryKeySelective(orgStandard);
  289. }
  290. res.setData(orgStandard);
  291. }
  292. return res;
  293. }
  294. /**
  295. * 删除选中标准制定情况记录
  296. *
  297. * @param id
  298. * 记录id
  299. * @return
  300. */
  301. @RequestMapping(value = "/deleteStandard", method = RequestMethod.POST)
  302. public Result deleteStandard(@RequestParam(name = "ids[]", required = true) String[] ids) {
  303. Result res = new Result();
  304. List<String> id = new ArrayList<String>();
  305. for (String s : ids) {
  306. id.add(s);
  307. }
  308. res.setData(orgStandardService.deleteByPrimaryKey(id));
  309. return res;
  310. }
  311. /**
  312. * 用户端录入+修改知识产权信息(专利+软著)
  313. *
  314. * @return
  315. * @throws ParseException
  316. */
  317. @RequestMapping(value = "/intellectual", method = RequestMethod.POST)
  318. public Result intellectual(OrgIntellectualProperty orgIntellectualProperty, String authorizationDateFormattedDate)
  319. throws ParseException {
  320. Result res = new Result();
  321. res = checkCertify(res);
  322. if (res.getError().isEmpty()) {
  323. if (!StringUtils.isBlank(authorizationDateFormattedDate)) {
  324. orgIntellectualProperty
  325. .setAuthorizationDate(DateUtils.parseDate(authorizationDateFormattedDate, "yyyy-MM-dd"));
  326. }
  327. if (StringUtils.isBlank(orgIntellectualProperty.getId())) {
  328. orgIntellectualProperty.setId(UUID.randomUUID().toString());
  329. orgIntellectualProperty.setUid(TokenManager.getUserId());
  330. orgIntellectualProperty.setEvaluationCategory(
  331. (orgIntellectualProperty.getCatagory() >= 2 && orgIntellectualProperty.getCatagory() <= 4) ? 1 : 0);
  332. orgIntellectualProperty.setDeletedSign(0);
  333. res.setData(orgIntellectualPropertyService.insert(orgIntellectualProperty));
  334. } else {
  335. orgIntellectualProperty.setEvaluationCategory(orgIntellectualProperty.getCatagory() <= 2 ? 1 : 0);
  336. res.setData(orgIntellectualPropertyService.updateByPrimaryKeySelective(orgIntellectualProperty));
  337. }
  338. }
  339. return res;
  340. }
  341. /**
  342. * 用户知识产权列表
  343. *
  344. * @param pageNo
  345. * @param pageSize
  346. * @return
  347. */
  348. @RequestMapping(value = "/intellectualList", method = RequestMethod.GET)
  349. public Result intellectualList(String pageNo, String pageSize) {
  350. Result res = new Result();
  351. res = checkCertify(res);
  352. if (res.getError().isEmpty()) {
  353. Integer pNo = 1;
  354. Integer pSize = 10;
  355. if (StringUtils.isNumeric(pageSize)) {
  356. pSize = Integer.parseInt(pageSize);
  357. }
  358. if (StringUtils.isNumeric(pageNo)) {
  359. pNo = Integer.parseInt(pageNo);
  360. }
  361. res.setData(orgIntellectualPropertyService.listIntellectual(pNo, pSize, TokenManager.getUserId()));
  362. }
  363. return res;
  364. }
  365. /**
  366. * 删除选中知识产权记录
  367. *
  368. * @param id
  369. * @return
  370. */
  371. @RequestMapping(value = "/deleteIntellectual", method = RequestMethod.POST)
  372. public Result deleteIntellectual(@RequestParam(name = "ids[]", required = true) String[] ids) {
  373. Result res = new Result();
  374. List<String> id = new ArrayList<String>();
  375. for (String s : ids) {
  376. id.add(s);
  377. }
  378. res.setData(orgIntellectualPropertyService.deleteByPrimaryKey(id));
  379. return res;
  380. }
  381. /**
  382. * 上年度高新技术产品(服务)情况列表
  383. *
  384. * @param pageNo
  385. * @param pageSize
  386. * @return
  387. */
  388. @RequestMapping(value = "/techProductList", method = RequestMethod.GET)
  389. public Result techProductList(String pageNo, String pageSize) {
  390. Result res = new Result();
  391. res = checkCertify(res);
  392. if (res.getError().isEmpty()) {
  393. Integer pNo = 1;
  394. Integer pSize = 10;
  395. if (StringUtils.isNumeric(pageSize)) {
  396. pSize = Integer.parseInt(pageSize);
  397. }
  398. if (StringUtils.isNumeric(pageNo)) {
  399. pNo = Integer.parseInt(pageNo);
  400. }
  401. res.setData(orgTechProductService.listTechProduct(pNo, pSize, TokenManager.getUserId()));
  402. }
  403. return res;
  404. }
  405. /**
  406. * 上年度高新技术产品(服务)情况(新增+修改)
  407. *
  408. * @param orgTechProduct
  409. * @return
  410. */
  411. @RequestMapping(value = "/techProduct", method = RequestMethod.POST)
  412. public Result techProduct(OrgTechProduct orgTechProduct) {
  413. Result res = new Result();
  414. res = checkCertify(res);
  415. if (res.getError().isEmpty()) {
  416. if (StringUtils.isBlank(orgTechProduct.getId())) {
  417. orgTechProduct.setId(UUID.randomUUID().toString());
  418. orgTechProduct.setUid(TokenManager.getUserId());
  419. orgTechProduct.setDeletedSign(0);
  420. Calendar now = Calendar.getInstance();
  421. now.set(Calendar.MILLISECOND, 0);
  422. orgTechProduct.setCreateTime(now.getTime());
  423. orgTechProduct.setYear(Calendar.getInstance().get(Calendar.YEAR) - 1);
  424. orgTechProductService.insert(orgTechProduct);
  425. } else {
  426. orgTechProductService.updateByPrimaryKeySelective(orgTechProduct);
  427. }
  428. res.setData(orgTechProduct);
  429. }
  430. return res;
  431. }
  432. /**
  433. * 删除选中上年度高新技术产品(服务)情况记录
  434. *
  435. * @param ids
  436. * @return
  437. */
  438. @RequestMapping(value = "/deleteTechProduct", method = RequestMethod.POST)
  439. public Result deleteTechProduct(@RequestParam(name = "ids[]", required = true) String[] ids) {
  440. Result res = new Result();
  441. List<String> id = new ArrayList<String>();
  442. for (String s : ids) {
  443. id.add(s);
  444. }
  445. res.setData(orgTechProductService.deleteByPrimaryKey(id));
  446. return res;
  447. }
  448. /**
  449. * 企业纳税申报信息入口
  450. *
  451. * @return
  452. */
  453. @RequestMapping(value = "/ratepay", method = RequestMethod.GET)
  454. public Result ratepay(Integer year, String pageNo, String pageSize) {
  455. Result res = new Result();
  456. res = checkCertify(res);
  457. if (res.getError().isEmpty()) {
  458. Integer pNo = 1;
  459. Integer pSize = 10;
  460. if (StringUtils.isNumeric(pageSize)) {
  461. pSize = Integer.parseInt(pageSize);
  462. }
  463. if (StringUtils.isNumeric(pageNo)) {
  464. pNo = Integer.parseInt(pageNo);
  465. }
  466. res.setData(orgRatepayService.listOrgRatepay(year, pNo, pSize, TokenManager.getUserId()));
  467. }
  468. return res;
  469. }
  470. /**
  471. * 企业纳税申报信息录入+修改
  472. */
  473. @RequestMapping(value = "/disposeRatepay", method = RequestMethod.POST)
  474. public Result disposeRatepay(OrgRatepay orgRatepay) {
  475. Result res = new Result();
  476. res = checkCertify(res);
  477. if (res.getError().isEmpty()) {
  478. if (StringUtils.isBlank(orgRatepay.getId())) {
  479. if (null == orgRatepayService.selectRatepayByUidAndYear(TokenManager.getUserId(), orgRatepay.getYear())) {
  480. orgRatepay.setId(UUID.randomUUID().toString());
  481. orgRatepay.setUid(TokenManager.getUserId());
  482. orgRatepay.setDeletedSign(0);
  483. orgRatepayService.insert(orgRatepay);
  484. } else {
  485. res.getError().add(buildError(ErrorConstants.DUPLICATE_DATA_ERROR, "当年度纳税申报表已录入!"));
  486. return res;
  487. }
  488. } else {
  489. orgRatepayService.updateByPrimaryKeySelective(orgRatepay);
  490. }
  491. }
  492. return res;
  493. }
  494. /**
  495. * 刪除企业纳税申报信息
  496. *
  497. * @param ids
  498. * @return
  499. */
  500. @RequestMapping(value = "/deleteRatepay", method = RequestMethod.POST)
  501. public Result deleteRatepay(@RequestParam(name = "ids[]", required = true) String[] ids) {
  502. Result res = new Result();
  503. List<String> id = new ArrayList<String>();
  504. for (String s : ids) {
  505. id.add(s);
  506. }
  507. res.setData(orgRatepayService.deleteByPrimaryKey(id));
  508. return res;
  509. }
  510. /**
  511. * 财务报表信息入口
  512. *
  513. * @return
  514. */
  515. @RequestMapping(value = "/finance", method = RequestMethod.GET)
  516. public Result finance(Integer year, String pageNo, String pageSize) {
  517. Result res = new Result();
  518. res = checkCertify(res);
  519. if (res.getError().isEmpty()) {
  520. Integer pNo = 1;
  521. Integer pSize = 10;
  522. if (StringUtils.isNumeric(pageSize)) {
  523. pSize = Integer.parseInt(pageSize);
  524. }
  525. if (StringUtils.isNumeric(pageNo)) {
  526. pNo = Integer.parseInt(pageNo);
  527. }
  528. res.setData(orgFinanceService.listFinance(year, pNo, pSize, TokenManager.getUserId()));
  529. }
  530. return res;
  531. }
  532. /**
  533. * 财务报表录入+修改
  534. *
  535. * @param orgFinance
  536. * @return
  537. */
  538. @RequestMapping(value = "/disposeFinance", method = RequestMethod.POST)
  539. public Result disposeFinance(OrgFinance orgFinance) {
  540. Result res = new Result();
  541. res = checkCertify(res);
  542. if (res.getError().isEmpty()) {
  543. if (StringUtils.isBlank(orgFinance.getId())) {
  544. if (null == orgFinanceService.selectFinanceByUidAndYear(TokenManager.getUserId(), orgFinance.getYear())) {
  545. orgFinance.setId(UUID.randomUUID().toString());
  546. orgFinance.setUid(TokenManager.getUserId());
  547. orgFinance.setDeletedSign(0);
  548. orgFinanceService.insert(orgFinance);
  549. } else {
  550. res.getError().add(buildError(ErrorConstants.DUPLICATE_DATA_ERROR, "当年度财务报表已录入!"));
  551. return res;
  552. }
  553. } else {
  554. orgFinanceService.updateByPrimaryKeySelective(orgFinance);
  555. }
  556. }
  557. return res;
  558. }
  559. /**
  560. * 删除财务报表
  561. *
  562. * @param ids
  563. * @return
  564. */
  565. @RequestMapping(value = "/deleteFinance", method = RequestMethod.POST)
  566. public Result deleteFinance(@RequestParam(name = "ids[]", required = true) String[] ids) {
  567. Result res = new Result();
  568. List<String> id = new ArrayList<String>();
  569. for (String s : ids) {
  570. id.add(s);
  571. }
  572. res.setData(orgFinanceService.deleteByPrimaryKey(id));
  573. return res;
  574. }
  575. /**
  576. * 获取当前用户已录入项目标号列表
  577. *
  578. * @param uid
  579. * @return
  580. */
  581. @RequestMapping(value = "/activityNumber", method = RequestMethod.GET)
  582. public Result listActivityNumber() {
  583. Result res = new Result();
  584. List<ActivityNumberBo> activityNumberBo = orgActivityService
  585. .selectOrgActivityNumberBoByUid(TokenManager.getUserId());
  586. res.setData(activityNumberBo);
  587. return res;
  588. }
  589. /**
  590. * 高企相关材料上传
  591. *
  592. * @param req
  593. * @param sign
  594. * @return
  595. */
  596. @RequestMapping(value = "/upload", method = RequestMethod.POST)
  597. public Result cognizanceFile(HttpServletRequest req, String sign, String uid) {
  598. Result res = new Result();
  599. res.setData(handleFile(res, "/cognizance/", true, req, sign, uid));
  600. return res;
  601. }
  602. /**
  603. * 科技成果转化情况列表入口
  604. *
  605. * @param pageNo
  606. * @param pageSize
  607. * @return
  608. */
  609. @RequestMapping(value = "/achievementList", method = RequestMethod.GET)
  610. public Result achievementList(String pageNo, String pageSize) {
  611. Result res = new Result();
  612. res = checkCertify(res);
  613. if (res.getError().isEmpty()) {
  614. Integer pNo = 1;
  615. Integer pSize = 10;
  616. if (StringUtils.isNumeric(pageSize)) {
  617. pSize = Integer.parseInt(pageSize);
  618. }
  619. if (StringUtils.isNumeric(pageNo)) {
  620. pNo = Integer.parseInt(pageNo);
  621. }
  622. res.setData(orgTechAchievementService.listOrgTechAchievement(pNo, pSize, TokenManager.getUserId()));
  623. }
  624. return res;
  625. }
  626. /**
  627. * 科技成果转化情况新增+修改
  628. *
  629. * @param achievement
  630. * @return
  631. * @throws ParseException
  632. */
  633. @RequestMapping(value = "/disposeAchievement", method = RequestMethod.POST)
  634. public Result disposeAchievement(OrgTechAchievement achievement) throws ParseException {
  635. Result res = new Result();
  636. res = checkCertify(res);
  637. if (res.getError().isEmpty()) {
  638. if (StringUtils.isBlank(achievement.getId())) {
  639. achievement.setId(UUID.randomUUID().toString());
  640. achievement.setUid(TokenManager.getUserId());
  641. achievement.setDeletedSign(0);
  642. orgTechAchievementService.insert(achievement);
  643. } else {
  644. orgTechAchievementService.updateByPrimaryKeySelective(achievement);
  645. }
  646. }
  647. return res;
  648. }
  649. /**
  650. * 删除科技成果转化情况
  651. *
  652. * @param ids
  653. * @return
  654. */
  655. @RequestMapping(value = "/deleteAchievement", method = RequestMethod.POST)
  656. public Result deleteAchievement(@RequestParam(name = "ids[]", required = true) String[] ids) {
  657. Result res = new Result();
  658. List<String> id = new ArrayList<String>();
  659. for (String s : ids) {
  660. id.add(s);
  661. }
  662. res.setData(orgTechAchievementService.deleteByPrimaryKey(id));
  663. return res;
  664. }
  665. /**
  666. * 企业荣誉及其他证明材料列表入口
  667. *
  668. * @return
  669. */
  670. @RequestMapping(value = "/honorList", method = RequestMethod.GET)
  671. public Result honorList(String pageNo, String pageSize) {
  672. Result res = new Result();
  673. res = checkCertify(res);
  674. if (res.getError().isEmpty()) {
  675. Integer pNo = 1;
  676. Integer pSize = 10;
  677. if (StringUtils.isNumeric(pageSize)) {
  678. pSize = Integer.parseInt(pageSize);
  679. }
  680. if (StringUtils.isNumeric(pageNo)) {
  681. pNo = Integer.parseInt(pageNo);
  682. }
  683. res.setData(orgHonorDatumService.listOrgHonorDatum(pNo, pSize, TokenManager.getUserId()));
  684. }
  685. return res;
  686. }
  687. /**
  688. * 企业荣誉及其他证明材料新增+修改
  689. *
  690. * @param achievement
  691. * @return
  692. * @throws ParseException
  693. */
  694. @RequestMapping(value = "/disposeHonor", method = RequestMethod.POST)
  695. public Result disposeHonor(OrgHonorDatum honor, String issuingTimeFormattedDate) throws ParseException {
  696. Result res = new Result();
  697. res = checkCertify(res);
  698. if (res.getError().isEmpty()) {
  699. if (!StringUtils.isBlank(issuingTimeFormattedDate)) {
  700. honor.setIssuingTime(DateUtils.parseDate(issuingTimeFormattedDate, "yyyy-MM-dd"));
  701. }
  702. if (StringUtils.isBlank(honor.getId())) {
  703. honor.setId(UUID.randomUUID().toString());
  704. honor.setUid(TokenManager.getUserId());
  705. honor.setDeletedSign(0);
  706. orgHonorDatumService.insert(honor);
  707. } else {
  708. orgHonorDatumService.updateByPrimaryKeySelective(honor);
  709. }
  710. }
  711. return res;
  712. }
  713. /**
  714. * 删除企业荣誉及其他证明材料
  715. *
  716. * @param ids
  717. * @return
  718. */
  719. @RequestMapping(value = "/deleteHonor", method = RequestMethod.POST)
  720. public Result deleteHonor(@RequestParam(name = "ids[]", required = true) String[] ids) {
  721. Result res = new Result();
  722. List<String> id = new ArrayList<String>();
  723. for (String s : ids) {
  724. id.add(s);
  725. }
  726. res.setData(orgHonorDatumService.deleteByPrimaryKey(id));
  727. return res;
  728. }
  729. /**
  730. * 技术中心入口
  731. *
  732. * @return
  733. */
  734. @RequestMapping(value = "/center", method = RequestMethod.GET)
  735. public Result center() {
  736. Result res = new Result();
  737. res = checkCertify(res);
  738. if (res.getError().isEmpty()) {
  739. res.setData(orgTechCenterService.selectOrgTechCenterByUid(TokenManager.getUserId()));
  740. }
  741. return res;
  742. }
  743. /**
  744. * 技术中心新增+修改
  745. *
  746. * @return
  747. * @throws ParseException
  748. */
  749. @RequestMapping(value = "/disposeCenter", method = RequestMethod.POST)
  750. public Result disposeCenter(OrgTechCenter orgTechCenter, String foundingTimeFormattedDate) throws ParseException {
  751. Result res = new Result();
  752. res = checkCertify(res);
  753. if (res.getError().isEmpty()) {
  754. if (!StringUtils.isBlank(foundingTimeFormattedDate)) {
  755. orgTechCenter.setFoundingTime(DateUtils.parseDate(foundingTimeFormattedDate, "yyyy-MM-dd"));
  756. }
  757. if (StringUtils.isBlank(orgTechCenter.getId())) {
  758. orgTechCenter.setId(UUID.randomUUID().toString());
  759. orgTechCenter.setUid(TokenManager.getUserId());
  760. orgTechCenter.setDeletedSign(0);
  761. orgTechCenterService.insert(orgTechCenter);
  762. } else {
  763. orgTechCenterService.updateByPrimaryKeySelective(orgTechCenter);
  764. }
  765. }
  766. return res;
  767. }
  768. /**
  769. * 技术中心明细列表入口(管理+用户)
  770. *
  771. * @return
  772. */
  773. @RequestMapping(value = "/centerDetail", method = RequestMethod.POST)
  774. public Result centerDetail(String pageNo, String pageSize, String cid) {
  775. Result res = new Result();
  776. Integer pNo = 1;
  777. Integer pSize = 10;
  778. if (StringUtils.isNumeric(pageSize)) {
  779. pSize = Integer.parseInt(pageSize);
  780. }
  781. if (StringUtils.isNumeric(pageNo)) {
  782. pNo = Integer.parseInt(pageNo);
  783. }
  784. res.setData(orgTechCenterDetailService.listOrgTechCenterDetail(pNo, pSize, cid));
  785. return res;
  786. }
  787. /**
  788. * 技术中心明细新增+修改(管理+用户)
  789. *
  790. * @param orgTechCenterDetail
  791. * @param projectTimeFormattedDate
  792. * @param termTimeFormattedDate
  793. * @return
  794. * @throws ParseException
  795. */
  796. @RequestMapping(value = "/disposeCenterDetail", method = RequestMethod.POST)
  797. public Result disposeCenterDetail(OrgTechCenterDetail orgTechCenterDetail, String projectTimeFormattedDate,
  798. String termTimeFormattedDate) throws ParseException {
  799. Result res = new Result();
  800. if (!StringUtils.isBlank(projectTimeFormattedDate)) {
  801. orgTechCenterDetail.setProjectTime(DateUtils.parseDate(projectTimeFormattedDate, "yyyy-MM-dd"));
  802. }
  803. if (!StringUtils.isBlank(termTimeFormattedDate)) {
  804. orgTechCenterDetail.setTermTime(DateUtils.parseDate(termTimeFormattedDate, "yyyy-MM-dd"));
  805. }
  806. if (StringUtils.isBlank(orgTechCenterDetail.getId())) {
  807. orgTechCenterDetail.setId(UUID.randomUUID().toString());
  808. orgTechCenterDetail.setDeletedSign(0);
  809. orgTechCenterDetailService.insert(orgTechCenterDetail);
  810. } else {
  811. orgTechCenterDetailService.updateByPrimaryKeySelective(orgTechCenterDetail);
  812. }
  813. return res;
  814. }
  815. /**
  816. * 删除技术中心明细
  817. *
  818. * @param ids
  819. * @return
  820. */
  821. @RequestMapping(value = "/deleteOrgTechCenterDetail", method = RequestMethod.POST)
  822. public Result deleteOrgTechCenterDetail(@RequestParam(name = "ids[]", required = true) String[] ids) {
  823. Result res = new Result();
  824. List<String> id = new ArrayList<String>();
  825. for (String s : ids) {
  826. id.add(s);
  827. }
  828. res.setData(orgTechCenterDetailService.deleteByPrimaryKey(id));
  829. return res;
  830. }
  831. /**
  832. * 获取公司联系人
  833. *
  834. * @return
  835. */
  836. @RequestMapping(value = "/getContacts", method = RequestMethod.GET)
  837. public Result getContacts() {
  838. Result res = new Result();
  839. res.setData(organizationIdentityService.selectContactsByUserId(TokenManager.getUserId()));
  840. return res;
  841. }
  842. /**
  843. * 高企认定列表入口
  844. *
  845. * @param locationProvince
  846. * @param unitName
  847. * @return
  848. */
  849. @RequestMapping(value = "/listCognizance", method = RequestMethod.POST)
  850. public Result listCognizance(String locationProvince, String pageNo, String pageSize) {
  851. Result res = new Result();
  852. res = checkCertify(res);
  853. if (res.getError().isEmpty()) {
  854. Integer pNo = 1;
  855. Integer pSize = 10;
  856. if (StringUtils.isNumeric(pageSize)) {
  857. pSize = Integer.parseInt(pageSize);
  858. }
  859. if (StringUtils.isNumeric(pageNo)) {
  860. pNo = Integer.parseInt(pageNo);
  861. }
  862. res.setData(orgCognizanceService.listCognizance(TokenManager.getUserId(), null, locationProvince, pNo, pSize));
  863. }
  864. return res;
  865. }
  866. /**
  867. * 申请高企认定
  868. *
  869. * @return
  870. */
  871. @RequestMapping(value = "/applyCognizance", method = RequestMethod.POST)
  872. public Result applyCognizance(Integer contacts, String comment, Integer year, Integer state) {
  873. Result res = new Result();
  874. res = checkCertify(res);
  875. if (res.getError().isEmpty()) {
  876. if (null != orgCognizanceService.selectCognizanceByUidAndYear(year, TokenManager.getUserId())){
  877. res.getError().add(buildError(ErrorConstants.DUPLICATE_DATA_ERROR, "当年度高企认定已申请!"));
  878. return res;
  879. }
  880. String aid = TokenManager.getToken().getAid();
  881. orgCognizanceService.insertCognizance(contacts, comment, year, state, aid, TokenManager.getUserId());
  882. }
  883. return res;
  884. }
  885. /**
  886. * 高企认定详情入口
  887. *
  888. * @param uid
  889. * @param cid
  890. * @return
  891. */
  892. @RequestMapping(value = "/cognizanceDetail", method = RequestMethod.POST)
  893. public Result cognizanceDetail(String cid, Integer year) {
  894. Result res = new Result();
  895. res = checkCertify(res);
  896. if (res.getError().isEmpty()) {
  897. res.setData(handleCognizanceDetail(TokenManager.getUserId(), cid, year));
  898. }
  899. return res;
  900. }
  901. /**
  902. * 高企认定流转状态
  903. *
  904. * @param cid
  905. * @return
  906. */
  907. @RequestMapping(value = "/cognizanceLog", method = RequestMethod.POST)
  908. public Result cognizanceLog(String cid) {
  909. Result res = new Result();
  910. res = checkCertify(res);
  911. if (res.getError().isEmpty()) {
  912. List<OrgCognizanceLog> list = orgCognizanceLogService.selectOrgCognizanceLogByCid(cid);
  913. res.setData(list);
  914. }
  915. return res;
  916. }
  917. /**
  918. * 保存高企认定详情
  919. */
  920. @RequestMapping(value = "/disposeCognizanceDetail", method = RequestMethod.POST)
  921. public Result disposeCognizanceDetail(OrgCognizance cog){
  922. Result res = new Result();
  923. res = checkCertify(res);
  924. if (res.getError().isEmpty()) {
  925. orgCognizanceService.updateByPrimaryKeySelective(cog);
  926. }
  927. return res;
  928. }
  929. /**
  930. * 年报列表
  931. *
  932. * @return
  933. */
  934. @RequestMapping(value = "/annualReport", method = RequestMethod.POST)
  935. public Result annualReport(Integer year, Integer state, String pageSize, String pageNo) {
  936. Result res = new Result();
  937. res = checkCertify(res);
  938. if (res.getError().isEmpty()) {
  939. Integer pNo = 1;
  940. Integer pSize = 10;
  941. if (StringUtils.isNumeric(pageSize)) {
  942. pSize = Integer.parseInt(pageSize);
  943. }
  944. if (StringUtils.isNumeric(pageNo)) {
  945. pNo = Integer.parseInt(pageNo);
  946. }
  947. res.setData(orgAnnualReportService.listOrgAnnualReport(year, state, pNo, pSize, TokenManager.getUserId()));
  948. }
  949. return res;
  950. }
  951. /**
  952. * 企业年报详情
  953. *
  954. * @param uid
  955. * @param year
  956. * @return
  957. */
  958. @RequestMapping(value = "/annualReportDetail", method = RequestMethod.POST)
  959. public Result annualReportDetail(Integer year) {
  960. Result res = new Result();
  961. res = checkCertify(res);
  962. if (res.getError().isEmpty()) {
  963. res.setData(handleAnnualReport(TokenManager.getUserId(), year));
  964. }
  965. return res;
  966. }
  967. /**
  968. * 高企年报新增+修改
  969. *
  970. * @param orgAnnualReport
  971. * @return
  972. */
  973. @RequestMapping(value = "/disposeAnnualReport", method = RequestMethod.POST)
  974. public Result disposeAnnualReport(OrgAnnualReport orgAnnualReport) {
  975. Result res = new Result();
  976. res = checkCertify(res);
  977. if (res.getError().isEmpty()) {
  978. if (StringUtils.isBlank(orgAnnualReport.getId())) {
  979. if (null != orgAnnualReportService.selectAnnualReportByYearAndUid(orgAnnualReport.getYear(),
  980. TokenManager.getUserId())) {
  981. res.getError().add(buildError(ErrorConstants.DUPLICATE_DATA_ERROR, "当年企业年报已录入!"));
  982. return res;
  983. }
  984. orgAnnualReport.setId(UUID.randomUUID().toString());
  985. orgAnnualReport.setUid(TokenManager.getUserId());
  986. Calendar now = Calendar.getInstance();
  987. now.set(Calendar.MILLISECOND, 0);
  988. orgAnnualReport.setCreateTime(now.getTime());
  989. orgAnnualReport.setLastUpdateTime(orgAnnualReport.getCreateTime());
  990. orgAnnualReport.setDeletedSign(0);
  991. orgAnnualReportService.insert(orgAnnualReport);
  992. } else {
  993. Calendar now = Calendar.getInstance();
  994. now.set(Calendar.MILLISECOND, 0);
  995. orgAnnualReport.setLastUpdateTime(now.getTime());
  996. orgAnnualReportService.updateByPrimaryKeySelective(orgAnnualReport);
  997. }
  998. }
  999. return res;
  1000. }
  1001. /**
  1002. * 删除企业年报记录
  1003. *
  1004. * @param ids
  1005. * @return
  1006. */
  1007. @RequestMapping(value = "/deleteAnnualReport", method = RequestMethod.POST)
  1008. public Result deleteAnnualReport(@RequestParam(name = "ids[]", required = true) String[] ids) {
  1009. Result res = new Result();
  1010. List<String> id = new ArrayList<String>();
  1011. for (String s : ids) {
  1012. id.add(s);
  1013. }
  1014. res.setData(orgAnnualReportService.deleteByPrimaryKey(id));
  1015. return res;
  1016. }
  1017. private String handleFile(Result res, String path, boolean isPrivate, HttpServletRequest req, String sign,
  1018. String uid) {
  1019. List<MultipartFile> files = getFiles(req);
  1020. MultipartFile mf = files.get(0);
  1021. String fileName = FileUtils.mosaicFileName(mf, isPrivate, sign, path,
  1022. StringUtils.isBlank(uid) ? TokenManager.getUserId() : uid);
  1023. if (!files.isEmpty()) {
  1024. try {
  1025. mf.transferTo(toPrivateFile(fileName));
  1026. LoggerUtils.debug(getClass(), fileName + " 文件上传成功");
  1027. } catch (IllegalStateException | IOException e) {
  1028. LoggerUtils.error(getClass(), "文件上传失败", e);
  1029. res.getError().add(buildError("", "文件上传失败!"));
  1030. return "";
  1031. }
  1032. } else {
  1033. res.getError().add(buildError("", "文件上传失败!"));
  1034. return "";
  1035. }
  1036. return fileName;
  1037. }
  1038. // 判断用户是否通过认证
  1039. private Result checkCertify(Result res) {
  1040. OrganizationIdentity o = organizationIdentityService.selectOrgIdentityByUserId(TokenManager.getUserId());
  1041. if (null == o || 5 != o.getAuditStatus()) {
  1042. res.getError().add(buildError(ErrorConstants.NON_CERTIFIED, "未通过实名认证,无法操作!"));
  1043. }
  1044. return res;
  1045. }
  1046. //高企认定
  1047. private CognizanceDetailBo handleCognizanceDetail(String uid, String cid, Integer year) {
  1048. return orgCognizanceService.selectCognizanceDetailBo(uid, cid, year);
  1049. }
  1050. //年报详情
  1051. private AnnualReportBo handleAnnualReport(String uid, Integer year) {
  1052. return orgAnnualReportService.selectAnnualReportBo(uid, year);
  1053. }
  1054. }