ContractServiceImpl.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398
  1. package com.goafanti.contract.service.impl;
  2. import java.text.ParseException;
  3. import java.util.ArrayList;
  4. import java.util.Calendar;
  5. import java.util.Date;
  6. import java.util.HashMap;
  7. import java.util.List;
  8. import java.util.Map;
  9. import java.util.UUID;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Service;
  12. import com.goafanti.common.constant.AFTConstants;
  13. import com.goafanti.common.dao.ContractLogMapper;
  14. import com.goafanti.common.dao.ContractMapper;
  15. import com.goafanti.common.dao.CopyrightInfoMapper;
  16. import com.goafanti.common.dao.NoticeMapper;
  17. import com.goafanti.common.dao.OrgCognizanceMapper;
  18. import com.goafanti.common.dao.PatentInfoMapper;
  19. import com.goafanti.common.dao.TechProjectMapper;
  20. import com.goafanti.common.dao.UserMapper;
  21. import com.goafanti.common.enums.ContractBusinessStatus;
  22. import com.goafanti.common.enums.ContractStatus;
  23. import com.goafanti.common.enums.DeleteStatus;
  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.Contract;
  28. import com.goafanti.common.model.ContractLog;
  29. import com.goafanti.common.model.Notice;
  30. import com.goafanti.common.model.User;
  31. import com.goafanti.common.utils.DateUtils;
  32. import com.goafanti.common.utils.StringUtils;
  33. import com.goafanti.contract.bo.ContractClientListBo;
  34. import com.goafanti.contract.bo.ContractDetail;
  35. import com.goafanti.contract.bo.ContractManageListBo;
  36. import com.goafanti.contract.bo.ContractSerialNumber;
  37. import com.goafanti.contract.service.ContractService;
  38. import com.goafanti.core.mybatis.BaseMybatisDao;
  39. import com.goafanti.core.mybatis.page.Pagination;
  40. import com.goafanti.core.shiro.token.TokenManager;
  41. @Service
  42. public class ContractServiceImpl extends BaseMybatisDao<ContractMapper> implements ContractService {
  43. @Autowired
  44. private ContractMapper contractMapper;
  45. @Autowired
  46. private ContractLogMapper contractLogMapper;
  47. @Autowired
  48. private UserMapper userMapper;
  49. @Autowired
  50. private NoticeMapper noticeMapper;
  51. @Autowired
  52. private PatentInfoMapper patentInfoMapper;
  53. @Autowired
  54. private CopyrightInfoMapper copyrightInfoMapper;
  55. @Autowired
  56. private OrgCognizanceMapper orgCognizanceMapper;
  57. @Autowired
  58. private TechProjectMapper techProjectMapper;
  59. @SuppressWarnings("unchecked")
  60. @Override
  61. public Pagination<ContractManageListBo> getManageList(String contractId, Integer serialNumber, Integer type,
  62. Integer status, String startDateFormattedDate, String endDateFormattedDate, Integer province,
  63. String unitName, String uid, Integer pNo, Integer pSize) {
  64. Map<String, Object> params = disposeParams(contractId, serialNumber, type, status, startDateFormattedDate,
  65. endDateFormattedDate, province, unitName, uid);
  66. if (!TokenManager.hasRole(AFTConstants.SUPERADMIN)) {
  67. params.put("principal", TokenManager.getAdminId());
  68. }
  69. if (pNo == null || pNo < 0) {
  70. pNo = 1;
  71. }
  72. if (pSize == null || pSize < 0 || pSize > 10) {
  73. pSize = 10;
  74. }
  75. return (Pagination<ContractManageListBo>) findPage("findManageContractListByPage", "findManageContractCount",
  76. params, pNo, pSize);
  77. }
  78. @SuppressWarnings("unchecked")
  79. @Override
  80. public Pagination<ContractClientListBo> getClientList(String contractId, Integer serialNumber, Integer type,
  81. Integer status, String startDateFormattedDate, String endDateFormattedDate, String completeStartDate,
  82. String completeEndDate, Integer pNo, Integer pSize) {
  83. Map<String, Object> params = disposeParams(contractId, serialNumber, type, status, startDateFormattedDate,
  84. endDateFormattedDate, null, null, TokenManager.getUserId());
  85. Date lStart = null;
  86. Date lEnd = null;
  87. if (!StringUtils.isBlank(completeStartDate)) {
  88. try {
  89. lStart = DateUtils.parseDate(startDateFormattedDate, AFTConstants.YYYYMMDD);
  90. } catch (ParseException e) {
  91. }
  92. }
  93. if (null != lStart) {
  94. params.put("lStart", lStart);
  95. }
  96. if (!StringUtils.isBlank(completeEndDate)) {
  97. try {
  98. lEnd = DateUtils.addDays(DateUtils.parseDate(endDateFormattedDate, AFTConstants.YYYYMMDD), 1);
  99. } catch (ParseException e) {
  100. }
  101. }
  102. if (null != lEnd) {
  103. params.put("lEnd", lEnd);
  104. }
  105. if (pNo == null || pNo < 0) {
  106. pNo = 1;
  107. }
  108. if (pSize == null || pSize < 0) {
  109. pSize = 10;
  110. }
  111. return (Pagination<ContractClientListBo>) findPage("findClientContractListByPage", "findClientContractCount",
  112. params, pNo, pSize);
  113. }
  114. @Override
  115. public Contract saveManageContract(Contract c) {
  116. c.setStatus(ContractStatus.CREATE.getCode());
  117. c = disposeContract(c);
  118. contractMapper.insert(c);
  119. contractLogMapper.insert(disposeContractLog(c));
  120. return c;
  121. }
  122. @Override
  123. public int updateContractByManage(Contract contract) {
  124. return contractMapper.updateByPrimaryKeySelective(contract);
  125. }
  126. @Override
  127. public void insertManageSubmit(Contract c, String[] principals, String signDateFormattedDate) {
  128. Date signDate = null;
  129. if (!StringUtils.isBlank(signDateFormattedDate)) {
  130. try {
  131. signDate = DateUtils.parseDate(signDateFormattedDate, AFTConstants.YYYYMMDDHHMMSS);
  132. } catch (ParseException e) {
  133. }
  134. }
  135. c.setStatus(ContractStatus.SIGN.getCode());
  136. c.setSignDate(signDate);
  137. c = disposeContract(c);
  138. contractMapper.insert(c);
  139. ContractLog clog = disposeContractLog(c);
  140. clog.setStatus(ContractStatus.SIGN.getCode());
  141. clog.setRecordTime(signDate);
  142. /*
  143. * ContractLog log = new ContractLog(); log.setCid(c.getId());
  144. * log.setComment(c.getComment()); log.set
  145. */
  146. List<ContractLog> logs = new ArrayList<>();
  147. List<Notice> notice = new ArrayList<>();
  148. logs.add(clog);
  149. for (int i = 0; i < principals.length; i++) {
  150. ContractLog log = disposeContractLog(c);
  151. log.setPrincipal(principals[i]);
  152. log.setStatus(ContractStatus.CIRCULATION.getCode());
  153. logs.add(log);
  154. notice.add(createNotice(c, log));
  155. }
  156. contractLogMapper.insertBatch(logs);
  157. noticeMapper.insertBatch(notice);
  158. }
  159. @Override
  160. public ContractDetail selectContractDetail(String id) {
  161. return contractMapper.selectContractDetail(id);
  162. }
  163. @Override
  164. public Contract selectByPrimaryKey(String id) {
  165. return contractMapper.selectByPrimaryKey(id);
  166. }
  167. @Override
  168. public int updateByPrimaryKeySelective(Contract contract) {
  169. return contractMapper.updateByPrimaryKeySelective(contract);
  170. }
  171. @Override
  172. public void updateSubmit(Contract c, String[] principals, String signDateFormattedDate) {
  173. Date signDate = null;
  174. if (!StringUtils.isBlank(signDateFormattedDate)) {
  175. try {
  176. signDate = DateUtils.parseDate(signDateFormattedDate, AFTConstants.YYYYMMDDHHMMSS);
  177. } catch (ParseException e) {
  178. }
  179. }
  180. c.setStatus(ContractStatus.SIGN.getCode());
  181. c.setSignDate(signDate);
  182. contractMapper.updateByPrimaryKeySelective(c);
  183. ContractLog l = new ContractLog();
  184. l.setId(UUID.randomUUID().toString());
  185. l.setCid(c.getId());
  186. l.setComment(c.getComment());
  187. l.setOperator(TokenManager.getAdminId());
  188. l.setPrincipal(TokenManager.getAdminId());
  189. l.setRecordTime(signDate);
  190. l.setStatus(ContractStatus.SIGN.getCode());
  191. List<ContractLog> logs = new ArrayList<>();
  192. List<Notice> notice = new ArrayList<>();
  193. logs.add(l);
  194. for (int i = 0; i < principals.length; i++) {
  195. ContractLog log = disposeContractLog(c);
  196. log.setStatus(ContractStatus.CIRCULATION.getCode());
  197. log.setPrincipal(principals[i]);
  198. log.setOperator(TokenManager.getAdminId());
  199. logs.add(log);
  200. notice.add(createNotice(c, log));
  201. }
  202. contractLogMapper.insertBatch(logs);
  203. noticeMapper.insertBatch(notice);
  204. }
  205. @Override
  206. public List<ContractSerialNumber> selectContractSerialNumber() {
  207. String principal = null;
  208. if (!TokenManager.hasRole(AFTConstants.SUPERADMIN)) {
  209. principal = TokenManager.getAdminId();
  210. }
  211. return contractMapper.selectContractSerialNumber(principal);
  212. }
  213. @Override
  214. public int deleteByPrimaryKey(List<String> id) {
  215. patentInfoMapper.batchDeleteByContractId(id);
  216. copyrightInfoMapper.batchDeleteByContractId(id);
  217. orgCognizanceMapper.batchDeleteByContractId(id);
  218. techProjectMapper.batchDeleteByContractId(id);
  219. return contractMapper.batchDeleteByPrimaryKey(id);
  220. }
  221. @Override
  222. public Contract saveContract(Contract c) {
  223. c.setStatus(ContractStatus.CREATE.getCode());
  224. c.setUid(TokenManager.getUserId());
  225. c = disposeContract(c);
  226. contractMapper.insert(c);
  227. contractLogMapper.insert(disposeContractLog(c));
  228. return c;
  229. }
  230. private ContractLog disposeContractLog(Contract c) {
  231. ContractLog cl = new ContractLog();
  232. cl.setId(UUID.randomUUID().toString());
  233. cl.setComment(c.getComment());
  234. if (TokenManager.getToken() instanceof Admin) {
  235. cl.setOperator(c.getFounder());
  236. cl.setPrincipal(c.getFounder());
  237. }
  238. Calendar now = Calendar.getInstance();
  239. now.set(Calendar.MILLISECOND, 0);
  240. cl.setRecordTime(now.getTime());
  241. cl.setStatus(c.getStatus());
  242. cl.setCid(c.getId());
  243. return cl;
  244. }
  245. private Notice createNotice(Contract c, ContractLog l) {
  246. Contract info = contractMapper.selectByPrimaryKey(c.getId());
  247. Notice n = new Notice();
  248. Calendar now = Calendar.getInstance();
  249. now.set(Calendar.MILLISECOND, 0);
  250. n.setId(UUID.randomUUID().toString());
  251. n.setCreateTime(now.getTime());
  252. n.setReaded(NoticeReadStatus.UNREAD.getCode());
  253. User u = userMapper.selectByPrimaryKey(c.getUid());
  254. if (null != u) {
  255. n.setPid(u.getAid());
  256. }
  257. n.setUid(c.getUid());
  258. n.setRid(c.getId());
  259. n.setAid(l.getPrincipal());
  260. n.setContent("编号" + info.getSerialNumber() + " " + ContractStatus.getStatus(c.getStatus()).getDesc());
  261. n.setNoticeType(NoticeStatus.CONTRACT.getCode());
  262. n.setYear(info.getCognizanceYear());
  263. return n;
  264. }
  265. private Contract disposeContract(Contract c) {
  266. c.setId(UUID.randomUUID().toString());
  267. Calendar now = Calendar.getInstance();
  268. now.set(Calendar.MILLISECOND, 0);
  269. c.setCreateTime(now.getTime());
  270. if (TokenManager.getToken() instanceof Admin) {
  271. c.setFounder(TokenManager.getAdminId());
  272. }
  273. c.setPatentStatus(ContractBusinessStatus.UNCREATE.getCode());
  274. c.setCopyrightStatus(ContractBusinessStatus.UNCREATE.getCode());
  275. c.setTechProjectStatus(ContractBusinessStatus.UNCREATE.getCode());
  276. c.setCognizanceStatus(ContractBusinessStatus.UNCREATE.getCode());
  277. c.setDeletedSign(DeleteStatus.UNDELETE.getCode());
  278. return c;
  279. }
  280. private Map<String, Object> disposeParams(String contractId, Integer serialNumber, Integer type, Integer status,
  281. String startDateFormattedDate, String endDateFormattedDate, Integer province, String unitName, String uid) {
  282. Date cStart = null;
  283. Date cEnd = null;
  284. Map<String, Object> params = new HashMap<>();
  285. if (null != serialNumber) {
  286. params.put("serialNumber", serialNumber);
  287. }
  288. if (null != type) {
  289. params.put("type", type);
  290. }
  291. if (null != status) {
  292. params.put("status", status);
  293. }
  294. if (!StringUtils.isBlank(uid)) {
  295. params.put("uid", uid);
  296. }
  297. if (!StringUtils.isBlank(contractId)) {
  298. params.put("id", contractId);
  299. }
  300. if (!StringUtils.isBlank(startDateFormattedDate)) {
  301. try {
  302. cStart = DateUtils.parseDate(startDateFormattedDate, AFTConstants.YYYYMMDD);
  303. } catch (ParseException e) {
  304. }
  305. }
  306. if (null != cStart) {
  307. params.put("cStart", cStart);
  308. }
  309. if (!StringUtils.isBlank(endDateFormattedDate)) {
  310. try {
  311. cEnd = DateUtils.addDays(DateUtils.parseDate(endDateFormattedDate, AFTConstants.YYYYMMDD), 1);
  312. } catch (ParseException e) {
  313. }
  314. }
  315. if (null != cEnd) {
  316. params.put("cEnd", cEnd);
  317. }
  318. if (null != province) {
  319. params.put("province", province);
  320. }
  321. if (!StringUtils.isBlank(unitName)) {
  322. params.put("unitName", unitName);
  323. }
  324. return params;
  325. }
  326. @Override
  327. public Contract findByUidAndYear(String uid, Integer year) {
  328. return contractMapper.findByUidAndYear(uid, year);
  329. }
  330. @Override
  331. public Contract findLatelyRecordByUid(String uid) {
  332. return contractMapper.findLatelyRecordByUid(uid);
  333. }
  334. }