OrganizationIdentityServiceImpl.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  1. package com.goafanti.user.service.impl;
  2. import java.util.ArrayList;
  3. import java.util.Calendar;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import java.util.TreeMap;
  8. import java.util.UUID;
  9. import org.apache.commons.lang3.StringUtils;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Service;
  12. import com.goafanti.common.bo.Result;
  13. import com.goafanti.common.constant.AFTConstants;
  14. import com.goafanti.common.dao.NoticeMapper;
  15. import com.goafanti.common.dao.OrgHumanResourceMapper;
  16. import com.goafanti.common.dao.OrgRatepayMapper;
  17. import com.goafanti.common.dao.OrganizationIdentityMapper;
  18. import com.goafanti.common.dao.UserMapper;
  19. import com.goafanti.common.dao.UserRoleMapper;
  20. import com.goafanti.common.enums.CertifySubmitType;
  21. import com.goafanti.common.enums.DeleteStatus;
  22. import com.goafanti.common.enums.IdentityAuditStatus;
  23. import com.goafanti.common.enums.NoticeReadStatus;
  24. import com.goafanti.common.enums.NoticeStatus;
  25. import com.goafanti.common.enums.UserLevel;
  26. import com.goafanti.common.model.Notice;
  27. import com.goafanti.common.model.OrgHumanResource;
  28. import com.goafanti.common.model.OrgRatepay;
  29. import com.goafanti.common.model.OrganizationIdentity;
  30. import com.goafanti.common.model.User;
  31. import com.goafanti.core.mybatis.BaseMybatisDao;
  32. import com.goafanti.core.mybatis.page.Pagination;
  33. import com.goafanti.core.shiro.token.TokenManager;
  34. import com.goafanti.portal.bo.OrgSubscriberListBo;
  35. import com.goafanti.user.bo.AuditorOrgIdentityDetailBo;
  36. import com.goafanti.user.bo.OrgBasicInfoBo;
  37. import com.goafanti.user.bo.OrgIdentityBo;
  38. import com.goafanti.user.bo.OrgIdentityDetailBo;
  39. import com.goafanti.user.bo.OrgUnitNames;
  40. import com.goafanti.user.service.OrganizationIdentityService;
  41. @Service
  42. public class OrganizationIdentityServiceImpl extends BaseMybatisDao<OrganizationIdentityMapper>
  43. implements OrganizationIdentityService {
  44. @Autowired
  45. private OrganizationIdentityMapper organizationIdentityMapper;
  46. @Autowired
  47. private OrgRatepayMapper orgRatepayMapper;
  48. @Autowired
  49. private UserMapper userMapper;
  50. @Autowired
  51. private OrgHumanResourceMapper orgHumanResourceMapper;
  52. @Autowired
  53. private NoticeMapper noticeMapper;
  54. @Autowired
  55. private UserRoleMapper userRoleMapper;
  56. @Override
  57. public OrganizationIdentity insert(OrganizationIdentity organizationIdentity) {
  58. organizationIdentityMapper.insert(organizationIdentity);
  59. return organizationIdentity;
  60. }
  61. @Override
  62. public OrganizationIdentity selectOrgIdentityByUserId(String userId) {
  63. return organizationIdentityMapper.selectOrgIdentityByUserId(userId);
  64. }
  65. @Override
  66. public int updateByPrimaryKeySelective(OrganizationIdentity organizationIdentity) {
  67. return organizationIdentityMapper.updateByPrimaryKeySelective(organizationIdentity);
  68. }
  69. @Override
  70. public OrgIdentityBo selectOrgIdentityBoByUserId(String uid) {
  71. return organizationIdentityMapper.selectOrgIdentityBoByUserId(uid);
  72. }
  73. @Override
  74. public List<OrgUnitNames> selectAllOrgIndentity() {
  75. String aid = null;
  76. if (!TokenManager.hasRole(AFTConstants.SUPERADMIN)) {
  77. aid = TokenManager.getAdminId();
  78. }
  79. return organizationIdentityMapper.selectAllOrgIndentity(aid);
  80. }
  81. @Override
  82. public int updateByPrimaryKey(OrganizationIdentity org) {
  83. return organizationIdentityMapper.updateByPrimaryKey(org);
  84. }
  85. @Override
  86. public Map<String, String> selectContactsByUserId(String uid) {
  87. OrganizationIdentity i = organizationIdentityMapper.selectOrgIdentityByUserId(uid);
  88. Map<String, String> map = new TreeMap<String, String>();
  89. if (null != i) {
  90. if (!StringUtils.isBlank(i.getFirstContacts()) && !StringUtils.isBlank(i.getFirstMobile())) {
  91. map.put("1", i.getFirstContacts() + " " + i.getFirstMobile());
  92. }
  93. if (!StringUtils.isBlank(i.getSecondContacts()) && !StringUtils.isBlank(i.getSecondMobile())) {
  94. map.put("2", i.getSecondContacts() + " " + i.getSecondMobile());
  95. }
  96. if (!StringUtils.isBlank(i.getThirdContacts()) && !StringUtils.isBlank(i.getThirdMobile())) {
  97. map.put("3", i.getThirdContacts() + " " + i.getThirdMobile());
  98. }
  99. }
  100. return map;
  101. }
  102. @Override
  103. public int saveOrgIndentityProcess(Result res, OrganizationIdentity o, String uid) {
  104. OrganizationIdentity org = organizationIdentityMapper.selectOrgIdentityByUserId(uid);
  105. if (null == org) {
  106. o.setId(UUID.randomUUID().toString());
  107. o.setUid(uid);
  108. return organizationIdentityMapper.insert(o);
  109. } else {
  110. o.setId(org.getId());
  111. if (null != o.getAuditStatus() && 5 == o.getAuditStatus()) {
  112. User u = new User();
  113. u.setId(uid);
  114. u.setLvl(1);
  115. userMapper.updateByPrimaryKeySelective(u);
  116. Calendar now = Calendar.getInstance();
  117. if (null != o.getLastYearTaxReportUrl()
  118. && null == orgRatepayMapper.selectRatepayByUidAndYear(uid, now.get(Calendar.YEAR) - 1)) {
  119. OrgRatepay r = new OrgRatepay();
  120. r.setId(UUID.randomUUID().toString());
  121. r.setUid(uid);
  122. r.setYear(now.get(Calendar.YEAR) - 1);
  123. r.setDeletedSign(DeleteStatus.UNDELETE.getCode());
  124. r.setTaxReturnUrl(o.getLastYearTaxReportUrl());
  125. orgRatepayMapper.insert(r);
  126. }
  127. }
  128. return organizationIdentityMapper.updateByPrimaryKeySelective(o);
  129. }
  130. }
  131. @Override
  132. public int updateOrgDetail(OrganizationIdentity orgIdentity, String saveSign, Integer level) {
  133. if (null != orgIdentity.getLastYearTaxReportUrl()) {
  134. Calendar cal = Calendar.getInstance();
  135. OrgRatepay rate = orgRatepayMapper.selectRatepayByUidAndYear(orgIdentity.getUid(), Calendar.YEAR - 1);
  136. if (null == rate) {
  137. OrgRatepay r = new OrgRatepay();
  138. r.setId(UUID.randomUUID().toString());
  139. r.setUid(orgIdentity.getUid());
  140. r.setYear(cal.get(Calendar.YEAR) - 1);
  141. r.setDeletedSign(DeleteStatus.UNDELETE.getCode());
  142. r.setTaxReturnUrl(orgIdentity.getLastYearTaxReportUrl());
  143. orgRatepayMapper.insert(r);
  144. } else {
  145. rate.setTaxReturnUrl(orgIdentity.getLastYearTaxReportUrl());
  146. orgRatepayMapper.updateByPrimaryKeySelective(rate);
  147. }
  148. }
  149. User user = userMapper.selectByPrimaryKey(orgIdentity.getUid());
  150. user.setLvl(level);
  151. userMapper.updateByPrimaryKeySelective(user);
  152. if (CertifySubmitType.SUBMIT.getCode().equals(saveSign)) {
  153. createAuditorNotice(user);
  154. }
  155. return organizationIdentityMapper.updateByPrimaryKeySelective(orgIdentity);
  156. }
  157. @Override
  158. public int updateOrgDetailByAuditAdmin(OrganizationIdentity oi, String aid, String mid, Integer level) {
  159. User user = userMapper.selectByPrimaryKey(oi.getUid());
  160. if (!IdentityAuditStatus.PASSED.getCode().equals(oi.getAuditStatus())) {
  161. user.setLvl(UserLevel.GENERAL.getCode());
  162. userMapper.updateByPrimaryKeySelective(user);
  163. createNotice(user, oi.getAuditStatus());
  164. }
  165. if (IdentityAuditStatus.PASSED.getCode().equals(oi.getAuditStatus())) {
  166. if (UserLevel.GENERAL.getCode().equals(level)) {
  167. user.setLvl(UserLevel.CERTIFIED.getCode());
  168. }
  169. user.setAid(aid);
  170. user.setMid(mid);
  171. userMapper.updateByPrimaryKeySelective(user);
  172. createNotice(user, oi.getAuditStatus());
  173. }
  174. return organizationIdentityMapper.updateByPrimaryKeySelective(oi);
  175. }
  176. @Override
  177. public OrgBasicInfoBo selectBasicInfo(String uid, int year) {
  178. return organizationIdentityMapper.selectBasicInfo(uid, year);
  179. }
  180. @Override
  181. public int saveBasicInfo(OrganizationIdentity oi, OrgHumanResource ohr) {
  182. if (StringUtils.isBlank(oi.getId())) {
  183. oi.setId(UUID.randomUUID().toString());
  184. organizationIdentityMapper.insert(oi);
  185. } else {
  186. organizationIdentityMapper.updateByPrimaryKeySelective(oi);
  187. }
  188. if (StringUtils.isBlank(ohr.getId())) {
  189. ohr.setId(UUID.randomUUID().toString());
  190. ohr.setDeletedSign(DeleteStatus.UNDELETE.getCode());
  191. Calendar now = Calendar.getInstance();
  192. ohr.setYear(now.get(Calendar.YEAR) - 1);
  193. orgHumanResourceMapper.insert(ohr);
  194. } else {
  195. orgHumanResourceMapper.updateByPrimaryKeySelective(ohr);
  196. }
  197. return 1;
  198. }
  199. @Override
  200. public OrgIdentityDetailBo selectOrgIdentityDetailByUserId(String uid) {
  201. return organizationIdentityMapper.selectOrgIdentityDetailByUserId(uid);
  202. }
  203. @Override
  204. public AuditorOrgIdentityDetailBo selectAuditorOrgIdentityDetailByUserId(String uid) {
  205. return organizationIdentityMapper.selectAuditorOrgIdentityDetailByUserId(uid);
  206. }
  207. @SuppressWarnings("unchecked")
  208. @Override
  209. public Pagination<OrgSubscriberListBo> listSubscriber(String name, Integer level, String field, Integer province, Integer city,
  210. Integer area, Integer pNo, Integer pSize) {
  211. Map<String, Object> params = new HashMap<>();
  212. if (StringUtils.isNotBlank(name)) {
  213. params.put("name", name);
  214. }
  215. if (null != level) {
  216. params.put("level", level);
  217. }
  218. if (StringUtils.isNotBlank(field)) {
  219. params.put("field", field);
  220. }
  221. if (null != province) {
  222. params.put("province", province);
  223. }
  224. if (null != city) {
  225. params.put("city", city);
  226. }
  227. if (null != area) {
  228. params.put("area", area);
  229. }
  230. if (pNo == null || pNo < 0) {
  231. pNo = 1;
  232. }
  233. if (pSize == null || pSize < 0 || pSize > 10) {
  234. pSize = 10;
  235. }
  236. return (Pagination<OrgSubscriberListBo>) findPage("findSearchSubscriberListByPage", "findSearchSubscriberCount",
  237. params, pNo, pSize);
  238. }
  239. // 给业务员及客户经理发送通知
  240. private void createNotice(User u, Integer status) {
  241. if (!StringUtils.isBlank(u.getAid())) {
  242. Notice n = new Notice();
  243. n.setPid(u.getAid());
  244. n.setAid(u.getAid());
  245. n.setUid(u.getId());
  246. notice(n, status);
  247. }
  248. if (!StringUtils.isBlank(u.getMid())) {
  249. Notice n = new Notice();
  250. n.setUid(u.getId());
  251. n.setAid(u.getMid());
  252. if (!StringUtils.isBlank(u.getAid())) {
  253. n.setPid(u.getAid());
  254. }
  255. notice(n, status);
  256. }
  257. }
  258. // 给所有审核员发送审核通知
  259. private void createAuditorNotice(User u) {
  260. List<String> ids = userRoleMapper.listAuditor();
  261. List<Notice> list = new ArrayList<>();
  262. if (ids.size() > 0 && null != ids) {
  263. for (String s : ids) {
  264. Notice n = new Notice();
  265. Calendar now = Calendar.getInstance();
  266. now.set(Calendar.MILLISECOND, 0);
  267. n.setId(UUID.randomUUID().toString());
  268. n.setCreateTime(now.getTime());
  269. n.setReaded(NoticeReadStatus.UNREAD.getCode());
  270. if (null != u) {
  271. n.setPid(u.getAid());
  272. }
  273. n.setUid(u.getId());
  274. n.setAid(s);
  275. n.setContent(
  276. NoticeStatus.ORGANIZATIONCERTIFY.getDesc() + " " + IdentityAuditStatus.COMMITTED.getDesc());
  277. n.setNoticeType(NoticeStatus.ORGANIZATIONCERTIFY.getCode());
  278. list.add(n);
  279. }
  280. noticeMapper.insertBatch(list);
  281. }
  282. }
  283. private void notice(Notice n, Integer status) {
  284. Calendar now = Calendar.getInstance();
  285. now.set(Calendar.MILLISECOND, 0);
  286. n.setId(UUID.randomUUID().toString());
  287. n.setCreateTime(now.getTime());
  288. n.setReaded(NoticeReadStatus.UNREAD.getCode());
  289. String content = NoticeStatus.ORGANIZATIONCERTIFY.getDesc();
  290. if (IdentityAuditStatus.UNCOMMITTED.getCode() == status) {
  291. content = content + " " + IdentityAuditStatus.UNCOMMITTED.getDesc();
  292. } else if (IdentityAuditStatus.COMMITTED.getCode() == status) {
  293. content = content + " " + IdentityAuditStatus.COMMITTED.getDesc();
  294. } else if (IdentityAuditStatus.UNPAID.getCode() == status) {
  295. content = content + " " + IdentityAuditStatus.UNPAID.getDesc();
  296. } else if (IdentityAuditStatus.PAID.getCode() == status) {
  297. content = content + " " + IdentityAuditStatus.PAID.getDesc();
  298. } else if (IdentityAuditStatus.PASSED.getCode() == status) {
  299. content = content + " " + IdentityAuditStatus.PASSED.getDesc();
  300. } else {
  301. content = content + " " + IdentityAuditStatus.NOTPASSED.getDesc();
  302. }
  303. n.setContent(content);
  304. n.setNoticeType(NoticeStatus.ORGANIZATIONCERTIFY.getCode());
  305. noticeMapper.insert(n);
  306. }
  307. }