UserArchivesServiceImpl.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. package com.goafanti.customer.service.impl;
  2. import com.goafanti.common.dao.*;
  3. import com.goafanti.common.model.*;
  4. import com.goafanti.core.mybatis.BaseMybatisDao;
  5. import com.goafanti.core.mybatis.page.Pagination;
  6. import com.goafanti.core.shiro.token.TokenManager;
  7. import com.goafanti.customer.bo.InputSelectUserArchives;
  8. import com.goafanti.customer.bo.MyUserDetailsBo;
  9. import com.goafanti.customer.bo.OutSelectUserArchives;
  10. import com.goafanti.customer.bo.UserArchivesDetails;
  11. import com.goafanti.customer.service.CustomerService;
  12. import com.goafanti.customer.service.UserArchivesService;
  13. import org.springframework.beans.BeanUtils;
  14. import org.springframework.stereotype.Service;
  15. import javax.annotation.Resource;
  16. import java.math.BigDecimal;
  17. import java.util.*;
  18. import java.util.function.Function;
  19. import java.util.stream.Collectors;
  20. /**
  21. * 客户档案表(UserArchives)表服务实现类
  22. *
  23. * @author makejava
  24. * @since 2024-07-12 11:52:01
  25. */
  26. @Service("userArchivesService")
  27. public class UserArchivesServiceImpl extends BaseMybatisDao< UserArchivesMapper> implements UserArchivesService {
  28. @Resource
  29. private UserArchivesMapper userArchivesMapper;
  30. @Resource
  31. private CustomerService customerService;
  32. @Resource
  33. private UserMapper userMapper;
  34. @Resource
  35. private UserMidMapper userMidMapper;
  36. @Resource
  37. private UserLimitCheckMapper userLimitCheckMapper;
  38. @Resource
  39. private AdminMapper adminMapper;
  40. @Resource
  41. private UserDataLogMapper userDataLogMapper;
  42. @Resource
  43. private PublicReleaseMapper publicReleaseMapper;
  44. @Override
  45. public Pagination<UserArchives> list(UserArchives userArchives, Integer pageNo, Integer pageSize) {
  46. Map<String, Object> params = new HashMap<>();
  47. params.put("in",userArchives);
  48. return (Pagination<UserArchives>) findPage("findUserArchivesList",
  49. "findUserArchivesCount", params, pageNo, pageSize);
  50. }
  51. @Override
  52. public UserArchives queryByUid(String id) {
  53. UserArchives userArchives =userArchivesMapper.queryByUid(id);
  54. if (userArchives==null)userArchives =new UserArchives();
  55. return userArchives;
  56. }
  57. @Override
  58. public Object queryByUidAll(String id) {
  59. UserArchivesDetails user = customerService.selectUserByUid(id);
  60. User u = userMapper.selectByPrimaryKey(id);
  61. if (u.getAid().equals(TokenManager.getAdminId())){
  62. user.setMyUser(1);
  63. }else {
  64. user.setMyUser(0);
  65. }
  66. user.setSignBills(u.getSignBills());
  67. UserArchives userArchives = queryByUid(id);
  68. List<OrganizationContactBook> customerContacts = userMapper.findCustomerContacts(id, TokenManager.getAdminId());
  69. if (!customerContacts.isEmpty()){
  70. List<OrganizationContactBook> collect = customerContacts.stream()
  71. .filter(e -> e.getMajor() == 1).collect(Collectors.toList());
  72. for (OrganizationContactBook ob : collect) {
  73. ob.setName("***");
  74. ob.setMobile("***");
  75. }
  76. user.setContactList(collect);
  77. }
  78. BeanUtils.copyProperties(userArchives, user);
  79. return user;
  80. }
  81. @Override
  82. public boolean checkPermission(String id) {
  83. User user = userMapper.selectByPrimaryKey(id);
  84. if (user.getAid().equals(TokenManager.getAdminId())){
  85. return false;
  86. }
  87. UserLimitCheck userLimitCheck = userLimitCheckMapper.selectByUid(id);
  88. //如果没有和大于时间则不能查看
  89. if (userLimitCheck==null||System.currentTimeMillis()>userLimitCheck.getCheckTime().getTime()) {
  90. return true;
  91. }
  92. return false;
  93. }
  94. /**
  95. * 通过ID查询单条数据
  96. *
  97. * @param id 主键
  98. * @return 实例对象
  99. */
  100. @Override
  101. public UserArchives queryById(Integer id) {
  102. return this.userArchivesMapper.queryById(id);
  103. }
  104. /**
  105. * 新增数据
  106. *
  107. * @param userArchives 实例对象
  108. * @return 实例对象
  109. */
  110. @Override
  111. public UserArchives insert(UserArchives userArchives) {
  112. UserArchives query = userArchivesMapper.queryByUid(userArchives.getUid());
  113. if (query != null){
  114. userArchives.setId(query.getId());
  115. return update(userArchives,null);
  116. }else {
  117. if (userArchives.getAppearancePatentCount()!=null||
  118. userArchives.getInventionPatentCount()!=null||
  119. userArchives.getUtilityModelCount() !=null||
  120. userArchives.getSoftwareWorksCount()!=null||
  121. userArchives.getOtherCount()!=null
  122. ){
  123. int count = getCount(userArchives);
  124. userArchives.setPatentCount(count);
  125. }
  126. if(userArchives.getPatentCount()==null)userArchives.setPatentCount(0);
  127. this.userArchivesMapper.insert(userArchives);
  128. }
  129. return userArchives;
  130. }
  131. /**
  132. * 修改数据
  133. *
  134. * @param userArchives 实例对象
  135. * @return 实例对象
  136. */
  137. @Override
  138. public UserArchives update(UserArchives userArchives,Integer channelType) {
  139. if (userArchives.getAppearancePatentCount()!=null||
  140. userArchives.getInventionPatentCount()!=null||
  141. userArchives.getUtilityModelCount() !=null||
  142. userArchives.getSoftwareWorksCount()!=null||
  143. userArchives.getOtherCount()!=null
  144. ){
  145. int count = getCount(userArchives);
  146. userArchives.setPatentCount(count);
  147. }
  148. if (channelType!=null){
  149. String uid=null;
  150. if (userArchives.getUid()==null){
  151. UserArchives useData = this.queryById(userArchives.getId());
  152. uid=useData.getUid();
  153. }else {
  154. uid=userArchives.getUid();
  155. }
  156. userMidMapper.updateByUid(new UserMid(uid,channelType));
  157. }
  158. if(userArchives.getId()==null){
  159. return insert(userArchives);
  160. }else {
  161. addUserLog(userArchives);
  162. this.userArchivesMapper.update(userArchives);
  163. return this.queryById(userArchives.getId());
  164. }
  165. }
  166. private void addUserLog(UserArchives userArchives) {
  167. UserArchives use = userArchivesMapper.queryById(userArchives.getId());
  168. Admin admin = adminMapper.selectByPrimaryKey(TokenManager.getAdminId());
  169. List<UserDataLog> list =new ArrayList<>();
  170. if(userArchives.getFinancialData()!=null&&!Objects.equals(use.getFinancialData(),userArchives.getFinancialData())){
  171. String builder = admin.getName() + "修改了财务数据: " + use.getFinancialData() + "=>" + userArchives.getFinancialData();
  172. UserDataLog userDataLog = new UserDataLog(userArchives.getUid(), builder,1);
  173. list.add(userDataLog);
  174. }
  175. if (userArchives.getEarlyCommunication()!=null&&!Objects.equals(use.getEarlyCommunication(),userArchives.getEarlyCommunication())){
  176. String builder = admin.getName() + "修改了前期沟通: " + use.getEarlyCommunication() + "=>" + userArchives.getEarlyCommunication();
  177. UserDataLog userDataLog = new UserDataLog(userArchives.getUid(), builder,2);
  178. list.add(userDataLog);
  179. }
  180. if (userArchives.getInterviewIdeas()!=null&&!Objects.equals(use.getInterviewIdeas(),userArchives.getInterviewIdeas())){
  181. String builder = admin.getName() + "修改了面谈思路: " + use.getInterviewIdeas() + "=>" + userArchives.getInterviewIdeas();
  182. UserDataLog userDataLog = new UserDataLog(userArchives.getUid(), builder,3);
  183. list.add(userDataLog);
  184. }
  185. if (!list.isEmpty())userDataLogMapper.insertBatch(list);
  186. }
  187. /**
  188. * 计算专利总数,必须5个都传,不然会导致计算漏掉
  189. * @param userArchives 用户档案参数
  190. * @return count
  191. */
  192. private int getCount(UserArchives userArchives) {
  193. int count = 0;
  194. if (userArchives.getAppearancePatentCount()!=null){
  195. count+= userArchives.getAppearancePatentCount();
  196. }
  197. if (userArchives.getInventionPatentCount()!=null){
  198. count+= userArchives.getInventionPatentCount();
  199. }
  200. if (userArchives.getUtilityModelCount() !=null){
  201. count+= userArchives.getUtilityModelCount();
  202. }
  203. if (userArchives.getSoftwareWorksCount() !=null){
  204. count+= userArchives.getSoftwareWorksCount();
  205. }
  206. if (userArchives.getOtherCount()!=null){
  207. count+= userArchives.getOtherCount();
  208. }
  209. return count;
  210. }
  211. /**
  212. * 通过主键删除数据
  213. *
  214. * @param id 主键
  215. * @return 是否成功
  216. */
  217. @Override
  218. public boolean deleteById(Integer id) {
  219. return this.userArchivesMapper.deleteById(id) > 0;
  220. }
  221. @Override
  222. public Object selectUserArchives(InputSelectUserArchives in) {
  223. Map<String, Object> params = new HashMap<>();
  224. if (in.getNewChannel() != null)params.put("newChannel", in.getNewChannel());
  225. if (in.getShareType() != null)params.put("shareType", in.getShareType());
  226. if (in.getChannelType() != null){
  227. String[] split = in.getChannelType().split(",");
  228. params.put("channelType", split);
  229. }
  230. if (in.getName() != null)params.put("name", in.getName());
  231. if (in.getAid() != null)params.put("aid", in.getAid());
  232. if (in.getBusinessScope() != null)params.put("businessScope", in.getBusinessScope());
  233. if (in.getIndustry() != null){
  234. String[] split = in.getIndustry().split(",");
  235. params.put("industry", split);
  236. }
  237. return pushPage(findPage("selectUserArchivesList", "selectUserArchivesCount", params, in.getPageNo(), in.getPageSize()));
  238. }
  239. @Override
  240. public Object addAwards(String uid,Integer status) {
  241. return updateAwards(uid,status);
  242. }
  243. @Override
  244. public Object updateAwards(String uid, Integer status) {
  245. UserArchives use = userArchivesMapper.queryByUid(uid);
  246. UserArchives userArchives = new UserArchives();
  247. userArchives.setId(use.getId());
  248. userArchives.setAwardsStatus(status);
  249. if (status==2)userArchives.setAwardsTime(new Date());
  250. userArchivesMapper.update(userArchives);
  251. if (status==2){
  252. userArchivesMapper.updateStatus();
  253. }
  254. return 1;
  255. }
  256. private Object pushPage(Pagination<?> page) {
  257. List<OutSelectUserArchives> list = (List<OutSelectUserArchives>) page.getList();
  258. list.forEach(e ->{
  259. List<MyUserDetailsBo> myUserDetailsBos = publicReleaseMapper.selectCountByUid(e.getId());
  260. List<MyUserDetailsBo> collect = new ArrayList<>(myUserDetailsBos.stream()
  261. .collect(Collectors.toMap(MyUserDetailsBo::getAid, Function.identity(), (e1, e2) -> e1))
  262. .values());
  263. List<BigDecimal> collect1 = myUserDetailsBos.stream().map(item -> BigDecimal.valueOf(item.getDuration())).collect(Collectors.toList());
  264. BigDecimal reduce = collect1.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
  265. e.setPublicContent("人次"+collect.size()+",公出次数"+myUserDetailsBos.size()+",工时"+reduce+"小时");
  266. });
  267. return page;
  268. }
  269. }