CopyrightInfoServiceImpl.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. package com.goafanti.copyright.service.impl;
  2. import java.text.ParseException;
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.Calendar;
  6. import java.util.Date;
  7. import java.util.HashMap;
  8. import java.util.List;
  9. import java.util.Map;
  10. import java.util.UUID;
  11. import org.apache.commons.lang3.StringUtils;
  12. import org.apache.commons.lang3.time.DateUtils;
  13. import org.springframework.beans.BeanUtils;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Service;
  16. import com.goafanti.common.constant.AFTConstants;
  17. import com.goafanti.common.dao.CopyrightInfoMapper;
  18. import com.goafanti.common.dao.CopyrightLogMapper;
  19. import com.goafanti.common.dao.NoticeMapper;
  20. import com.goafanti.common.dao.OrgIntellectualPropertyMapper;
  21. import com.goafanti.common.dao.UserMapper;
  22. import com.goafanti.common.enums.CopyrightStatus;
  23. import com.goafanti.common.enums.IntellectualPropertyType;
  24. import com.goafanti.common.enums.NoticeReadStatus;
  25. import com.goafanti.common.enums.NoticeStatus;
  26. import com.goafanti.common.model.Admin;
  27. import com.goafanti.common.model.CopyrightInfo;
  28. import com.goafanti.common.model.CopyrightLog;
  29. import com.goafanti.common.model.Notice;
  30. import com.goafanti.common.model.OrgIntellectualProperty;
  31. import com.goafanti.common.model.User;
  32. import com.goafanti.copyright.bo.CopyrightInfoDetail;
  33. import com.goafanti.copyright.bo.CopyrightInfoSummary;
  34. import com.goafanti.copyright.bo.CopyrightLogBO;
  35. import com.goafanti.copyright.service.CopyrightInfoService;
  36. import com.goafanti.core.mybatis.BaseMybatisDao;
  37. import com.goafanti.core.mybatis.page.Pagination;
  38. import com.goafanti.core.shiro.token.TokenManager;
  39. @Service
  40. public class CopyrightInfoServiceImpl extends BaseMybatisDao<CopyrightInfoMapper> implements CopyrightInfoService {
  41. @Autowired
  42. private CopyrightInfoMapper copyrightInfoMapper;
  43. @Autowired
  44. private CopyrightLogMapper copyrightLogMapper;
  45. @Autowired
  46. private OrgIntellectualPropertyMapper orgIntellectualPropertyMapper;
  47. @Autowired
  48. private NoticeMapper noticeMapper;
  49. @Autowired
  50. private UserMapper userMapper;
  51. @Override
  52. public CopyrightInfo insert(CopyrightInfo copyrightInfo, String aid) {
  53. Calendar now = Calendar.getInstance();
  54. now.set(Calendar.MILLISECOND, 0);
  55. copyrightInfo.setCreateTime(now.getTime());
  56. if (TokenManager.getToken() instanceof Admin) {
  57. copyrightInfo.setFounder(TokenManager.getAdminId());
  58. }
  59. CopyrightLog log = new CopyrightLog();
  60. log.setCid(copyrightInfo.getId());
  61. log.setRecordTime(copyrightInfo.getCreateTime());
  62. log.setComment(copyrightInfo.getComment());
  63. if (TokenManager.getToken() instanceof Admin) {
  64. log.setOperator(TokenManager.getAdminId());
  65. }
  66. if (TokenManager.getToken() instanceof Admin) {
  67. log.setPrincipal(TokenManager.getAdminId());
  68. } else {
  69. log.setPrincipal(aid);
  70. }
  71. log.setStatus(copyrightInfo.getStatus());
  72. copyrightInfoMapper.insertSelective(copyrightInfo);
  73. copyrightLogMapper.insertSelective(log);
  74. createNotice(copyrightInfo, log);
  75. return copyrightInfo;
  76. }
  77. @Override
  78. public void updateByPrimaryKeySelective(CopyrightInfo copyrightInfo, CopyrightLog copyrightLog) {
  79. if (copyrightLog.getRecordTime() != null && copyrightLog.getStatus() != null
  80. && copyrightLog.getPrincipal() != null) {
  81. copyrightLogMapper.insertSelective(copyrightLog);
  82. createNotice(copyrightInfo, copyrightLog);
  83. if (CopyrightStatus.getStatus(copyrightLog.getStatus()) == CopyrightStatus.ACCEPT) {
  84. copyrightInfo.setAcceptTime(copyrightLog.getRecordTime());
  85. } else if (CopyrightStatus.getStatus(copyrightLog.getStatus()) == CopyrightStatus.DELIVERD) {
  86. copyrightInfo.setCreateTime(copyrightLog.getRecordTime());
  87. } else if (CopyrightStatus.getStatus(copyrightLog.getStatus()) == CopyrightStatus.AUTHORIZED) {
  88. copyrightInfo.setAuthorizedDate(copyrightLog.getRecordTime());
  89. OrgIntellectualProperty o = new OrgIntellectualProperty();
  90. o.setId(UUID.randomUUID().toString());
  91. o.setUid(copyrightInfo.getUid());
  92. o.setPid(copyrightInfo.getId());
  93. o.setDeletedSign(0);
  94. o.setIntellectualPropertyNumber(copyrightInfo.getCopyrightNumber());
  95. o.setIntellectualPropertyName(copyrightInfo.getCopyrightName());
  96. o.setCatagory(4);
  97. o.setObtainWay(1);
  98. o.setAuthorizationNumber(copyrightInfo.getCopyrightNumber());
  99. o.setAuthorizationDate(copyrightInfo.getAuthorizedDate());
  100. o.setEvaluationCategory(1);
  101. o.setType(IntellectualPropertyType.COPYRIGHT.getCode());
  102. o.setPropertyRightUrl(copyrightInfo.getCertificateUrl());
  103. orgIntellectualPropertyMapper.insert(o);
  104. } else if (CopyrightStatus.getStatus(copyrightLog.getStatus()) == CopyrightStatus.CIRCULATION) {
  105. copyrightInfo.setStatus(CopyrightStatus.DELIVERD.getCode());
  106. }
  107. }
  108. copyrightInfoMapper.updateByPrimaryKeySelective(copyrightInfo);
  109. }
  110. @Override
  111. public int batchDeleteByPrimaryKey(List<String> id) {
  112. return copyrightInfoMapper.deleteByPrimaryKeys(id);
  113. }
  114. @SuppressWarnings("unchecked")
  115. @Override
  116. public Pagination<CopyrightInfo> listCopyrightInfo(String province, String unitName, String copyrightName,
  117. CopyrightStatus status, String[] createTime, String[] acceptTime, String[] authTime, Integer pageNo,
  118. Integer pageSize) {
  119. return (Pagination<CopyrightInfo>) findPage("findListByPage", "findListCount", buildListParams(province,
  120. unitName, copyrightName, status, createTime, acceptTime, authTime, pageNo, pageSize, null), pageNo,
  121. pageSize);
  122. }
  123. @SuppressWarnings("unchecked")
  124. @Override
  125. public Pagination<CopyrightInfoSummary> listMyCopyrightInfo(String province, String unitName, String copyrightName,
  126. CopyrightStatus status, String[] createTime, String[] acceptTime, String[] authTime, Integer pageNo,
  127. Integer pageSize, String uid) {
  128. return (Pagination<CopyrightInfoSummary>) findPage("findListByPage", "findListCount", buildListParams(province,
  129. unitName, copyrightName, status, createTime, acceptTime, authTime, pageNo, pageSize, uid), pageNo,
  130. pageSize);
  131. }
  132. private Map<String, Object> buildListParams(String province, String unitName, String copyrightName,
  133. CopyrightStatus status, String[] createTime, String[] acceptTime, String[] authTime, Integer pageNo,
  134. Integer pageSize, String uid) {
  135. Map<String, Object> params = new HashMap<>();
  136. if (TokenManager.getAdminToken() != null && !TokenManager.hasRole(AFTConstants.SUPERADMIN)) {
  137. params.put("principal", TokenManager.getAdminId());
  138. }
  139. if (StringUtils.isNotBlank(province)) {
  140. params.put("province", province);
  141. }
  142. if (StringUtils.isNotBlank(unitName)) {
  143. params.put("unitName", unitName);
  144. }
  145. if (StringUtils.isNotBlank(uid)) {
  146. params.put("unitId", uid);
  147. }
  148. if (StringUtils.isNotBlank(copyrightName)) {
  149. params.put("copyrightName", copyrightName);
  150. }
  151. if (status != CopyrightStatus.OTHER) {
  152. params.put("status", status.getCode());
  153. }
  154. if (createTime != null) {
  155. try {
  156. if (createTime.length > 0 && StringUtils.isNotBlank(createTime[0])) {
  157. params.put("createStartTime", DateUtils.parseDate(createTime[0], AFTConstants.YYYYMMDDHHMMSS));
  158. }
  159. if (createTime.length > 1 && StringUtils.isNotBlank(createTime[1])) {
  160. params.put("createEndTime",
  161. DateUtils.addDays(DateUtils.parseDate(createTime[1], AFTConstants.YYYYMMDDHHMMSS), 1));
  162. }
  163. } catch (ParseException e) {
  164. }
  165. }
  166. if (acceptTime != null) {
  167. try {
  168. if (acceptTime.length > 0 && StringUtils.isNotBlank(acceptTime[0])) {
  169. params.put("acceptStartTime", DateUtils.parseDate(acceptTime[0], AFTConstants.YYYYMMDDHHMMSS));
  170. }
  171. if (acceptTime.length > 1 && StringUtils.isNotBlank(acceptTime[1])) {
  172. params.put("acceptEndTime",
  173. DateUtils.addDays(DateUtils.parseDate(acceptTime[1], AFTConstants.YYYYMMDDHHMMSS), 1));
  174. }
  175. } catch (ParseException e) {
  176. }
  177. }
  178. if (authTime != null) {
  179. try {
  180. if (authTime.length > 0 && StringUtils.isNotBlank(authTime[0])) {
  181. params.put("authStartTime", DateUtils.parseDate(authTime[0], AFTConstants.YYYYMMDDHHMMSS));
  182. }
  183. if (authTime.length > 1 && StringUtils.isNotBlank(authTime[1])) {
  184. params.put("authEndTime",
  185. DateUtils.addDays(DateUtils.parseDate(authTime[1], AFTConstants.YYYYMMDDHHMMSS), 1));
  186. }
  187. } catch (ParseException e) {
  188. }
  189. }
  190. return params;
  191. }
  192. @Override
  193. public CopyrightInfo selectByPrimaryKey(String id) {
  194. return copyrightInfoMapper.selectByPrimaryKey(id);
  195. }
  196. @Override
  197. public CopyrightInfoDetail findByPrimaryKey(String id) {
  198. return copyrightInfoMapper.findByPrimaryKey(id);
  199. }
  200. @Override
  201. public List<CopyrightLogBO> findLogsByPrimaryKey(String id) {
  202. return copyrightLogMapper.findByCopyrightId(id);
  203. }
  204. @Override
  205. public void updateByPrimaryKey(CopyrightInfo copyrightInfo) {
  206. copyrightInfoMapper.updateByPrimaryKey(copyrightInfo);
  207. }
  208. @Override
  209. public int batchCirculation(String[] ids, String recordTimeFormattedDate, CopyrightLog cl) {
  210. Date recordTime = null;
  211. try {
  212. recordTime = DateUtils.parseDate(recordTimeFormattedDate, AFTConstants.YYYYMMDDHHMMSS);
  213. } catch (ParseException e) {
  214. }
  215. cl.setRecordTime(recordTime);
  216. List<CopyrightLog> log = new ArrayList<CopyrightLog>();
  217. List<CopyrightInfo> list = copyrightInfoMapper.selectByPrimaryKeys(Arrays.asList(ids));
  218. if (null != list && list.size() > 0) {
  219. for (CopyrightInfo copyrightInfo : list) {
  220. CopyrightLog copyrightLog = new CopyrightLog();
  221. BeanUtils.copyProperties(cl, copyrightLog);
  222. copyrightLog.getId();
  223. copyrightLog.setCid(copyrightInfo.getId());
  224. copyrightLog.setOperator(TokenManager.getAdminId());
  225. log.add(copyrightLog);
  226. if (CopyrightStatus.CIRCULATION.getCode() != copyrightLog.getStatus()) {
  227. copyrightInfo.setStatus(copyrightLog.getStatus());
  228. copyrightInfoMapper.updateByPrimaryKeySelective(copyrightInfo);
  229. }
  230. createNotice(copyrightInfo, copyrightLog);
  231. }
  232. return copyrightLogMapper.batchInsert(log);
  233. }
  234. return 0;
  235. }
  236. private void createNotice(CopyrightInfo c, CopyrightLog l) {
  237. CopyrightInfo info = copyrightInfoMapper.selectByPrimaryKey(c.getId());
  238. Notice n = new Notice();
  239. Calendar now = Calendar.getInstance();
  240. now.set(Calendar.MILLISECOND, 0);
  241. n.setId(UUID.randomUUID().toString());
  242. n.setCreateTime(now.getTime());
  243. n.setReaded(NoticeReadStatus.UNREAD.getCode());
  244. User u = userMapper.selectByPrimaryKey(c.getUid());
  245. if (null != u) {
  246. n.setPid(u.getAid());
  247. }
  248. n.setUid(c.getUid());
  249. n.setRid(c.getId());
  250. n.setAid(l.getPrincipal());
  251. n.setContent("编号" + info.getSerialNumber() + " " + CopyrightStatus.getStatus(l.getStatus()).getDesc());
  252. n.setNoticeType(NoticeStatus.COPYRIGHT.getCode());
  253. noticeMapper.insert(n);
  254. }
  255. }