UserArchivesServiceImpl.java 11 KB

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