DxDataServiceImpl.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. package com.ydtech.modules.admin.service.impl;
  2. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  3. import com.ydtech.core.page.HttpResult;
  4. import com.ydtech.modules.admin.dao.SysDeptInternalAgentMapper;
  5. import com.ydtech.modules.admin.dao.SysTelemarketingWechatDataMapper;
  6. import com.ydtech.modules.admin.model.dto.DxDataDto;
  7. import com.ydtech.modules.admin.model.dto.DxReportDataDto;
  8. import com.ydtech.modules.admin.model.dto.GroupDto;
  9. import com.ydtech.modules.admin.model.dto.KhglDataDto;
  10. import com.ydtech.modules.admin.model.vo.DxDataVo;
  11. import com.ydtech.modules.admin.model.vo.DxQueryVo;
  12. import com.ydtech.modules.admin.model.vo.KhglDataVo;
  13. import com.ydtech.modules.admin.service.DxDataService;
  14. import com.ydtech.modules.admin.service.KhglZgdDataService;
  15. import com.ydtech.modules.admin.service.KhglZzbDataService;
  16. import com.ydtech.modules.admin.utils.DxApiConfigurationProperties;
  17. import com.ydtech.modules.order.entity.BasePageResult;
  18. import org.apache.commons.lang3.StringUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.core.ParameterizedTypeReference;
  21. import org.springframework.http.*;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.web.client.RestTemplate;
  24. import java.util.ArrayList;
  25. import java.util.List;
  26. /**
  27. * @version
  28. * @author: hxl
  29. * @Date: 2024/6/28 9:27
  30. * @Description: 战略合作单位报表
  31. */
  32. @Service
  33. public class DxDataServiceImpl implements DxDataService {
  34. @Autowired
  35. private SysTelemarketingWechatDataMapper sysTelemarketingWechatDataMapper;
  36. @Autowired
  37. private RestTemplate restTemplate;
  38. @Autowired
  39. private DxApiConfigurationProperties dxApiConfigurationProperties;
  40. @Autowired
  41. private KhglZzbDataService khglZzbDataService;
  42. @Autowired
  43. private KhglZgdDataService khglZgdDataService;
  44. @Autowired
  45. private SysDeptInternalAgentMapper sysDeptInternalAgentMapper;
  46. /**
  47. * @version
  48. * @author: hxl
  49. * @Date: 2024/9/9 11:02
  50. * @Description: 查询用户所有的数据
  51. */
  52. @Override
  53. public BasePageResult<DxReportDataDto> queryPage(DxQueryVo dxQueryVo) {
  54. Page<DxReportDataDto> page = new Page<>(dxQueryVo.getPageNum(), dxQueryVo.getPageSize());
  55. Page<DxReportDataDto> result = sysTelemarketingWechatDataMapper.queryUserDataPage(page, dxQueryVo);
  56. List<DxReportDataDto> records = result.getRecords();
  57. List<DxReportDataDto> newRecords =new ArrayList<DxReportDataDto>();
  58. if (records != null && records.size() > 0) {
  59. for (DxReportDataDto dxReportDataDto : records) {
  60. //通过用户id查询电销数据
  61. if(dxReportDataDto.getDxUserId()==null){
  62. dxReportDataDto.setExhaleDuration("0");
  63. dxReportDataDto.setOutgoingCallsNumber("0");
  64. dxReportDataDto.setConnectionsNumber("0");
  65. dxReportDataDto.setCallSuccessRate("-");
  66. }else{
  67. DxDataVo dxDataVo = new DxDataVo(dxQueryVo.getBeginDate(), dxQueryVo.getEndDate(), dxReportDataDto.getDxUserId());
  68. DxDataDto dxData = getDataByPost(dxDataVo, dxApiConfigurationProperties.getFindDataUserIdUrl());
  69. if (dxData != null) {
  70. dxReportDataDto.setExhaleDuration(dxData.getExhaleDuration());
  71. dxReportDataDto.setOutgoingCallsNumber(dxData.getOutgoingCallsNumber());
  72. dxReportDataDto.setConnectionsNumber(dxData.getConnectionsNumber());
  73. dxReportDataDto.setCallSuccessRate(dxData.getCallSuccessRate());
  74. } else {
  75. dxReportDataDto.setExhaleDuration("0");
  76. dxReportDataDto.setOutgoingCallsNumber("0");
  77. dxReportDataDto.setConnectionsNumber("0");
  78. dxReportDataDto.setCallSuccessRate("-");
  79. }
  80. }
  81. int qywx_zgd = 0;
  82. int qywx_zzb = 0;
  83. //查询掌柜鼎 + 掌中保的数据的企业微信数据
  84. String zgdUserId = dxReportDataDto.getZgdUserId();
  85. String zzdUserId = dxReportDataDto.getZzdUserId();
  86. if (StringUtils.isNotBlank(zzdUserId)) {
  87. KhglDataDto zzbDto = khglZzbDataService.findByUserId(new KhglDataVo(zzdUserId, dxQueryVo.getBeginDate(), dxQueryVo.getEndDate()));
  88. if (zzbDto != null && zzbDto.getWxCount() != null) {
  89. qywx_zzb += zzbDto.getWxCount();
  90. }
  91. }
  92. if (StringUtils.isNotBlank(zgdUserId)) {
  93. KhglDataDto zgdDto = khglZgdDataService.findByUserId(new KhglDataVo(zgdUserId, dxQueryVo.getBeginDate(), dxQueryVo.getEndDate()));
  94. if (zgdDto != null && zgdDto.getWxCount() != null) {
  95. qywx_zgd += zgdDto.getWxCount();
  96. }
  97. }
  98. dxReportDataDto.setQywxCount(qywx_zgd + qywx_zzb);
  99. //查询微信添加数量
  100. Integer count = sysTelemarketingWechatDataMapper.queryCountByUserId(new DxDataVo(dxQueryVo.getBeginDate(), dxQueryVo.getEndDate(), dxReportDataDto.getUserId()));
  101. dxReportDataDto.setWxCount(count == null ? 0 : count);
  102. newRecords.add(dxReportDataDto);
  103. result.setRecords(newRecords);
  104. }
  105. }
  106. return new BasePageResult<>(dxQueryVo.getPageNum(), page.getSize(), result.getTotal(), page.getPages(),
  107. result.getRecords());
  108. }
  109. /**
  110. * @version
  111. * @author: hxl
  112. * @Date: 2024/9/9 11:01
  113. * @Description: 查询每天的数据
  114. */
  115. public BasePageResult<DxReportDataDto> queryDxDataDayPage(DxQueryVo dxQueryVo) {
  116. Page<DxReportDataDto> page = new Page<>(dxQueryVo.getPageNum(), dxQueryVo.getPageSize());
  117. //查看开始
  118. Page<DxReportDataDto> result = sysTelemarketingWechatDataMapper.findDataList(page,dxQueryVo);
  119. //Page<DxReportDataDto> result = sysTelemarketingWechatDataMapper.queryDataPage(page,dxQueryVo);
  120. List<DxReportDataDto> newRecords =new ArrayList<DxReportDataDto>();
  121. List<DxReportDataDto> records = result.getRecords();
  122. if (records != null && records.size() > 0) {
  123. for (DxReportDataDto dxReportDataDto : records) {
  124. DxReportDataDto users = sysTelemarketingWechatDataMapper.queryDxUserByUserId(dxQueryVo.getUserId());
  125. DxReportDataDto wxUser = sysTelemarketingWechatDataMapper.findDataByUserId(dxQueryVo.getUserId());
  126. dxReportDataDto.setQywxCount(wxUser.getQywxCount() ==null? 0:wxUser.getQywxCount());
  127. dxReportDataDto.setDeptId(users.getDeptId());
  128. dxReportDataDto.setDeptName(users.getDeptName());
  129. dxReportDataDto.setGroupId(users.getGroupId());
  130. dxReportDataDto.setGroupName(users.getGroupName());
  131. dxReportDataDto.setUserId(users.getUserId());
  132. dxReportDataDto.setUserName(users.getUserName());
  133. dxReportDataDto.setUserName(users.getUserName());
  134. dxReportDataDto.setZgdUserId(users.getZgdUserId());
  135. dxReportDataDto.setZzdUserId(users.getZzdUserId());
  136. dxReportDataDto.setDxUserId(users.getDxUserId());
  137. dxReportDataDto.setDateTime(dxReportDataDto.getDateTime());
  138. if(dxReportDataDto.getDxUserId()==null){
  139. dxReportDataDto.setExhaleDuration("0");
  140. dxReportDataDto.setOutgoingCallsNumber("0");
  141. dxReportDataDto.setConnectionsNumber("0");
  142. dxReportDataDto.setCallSuccessRate("-");
  143. }else{
  144. //通过用户id查询电销数据
  145. DxDataDto dxData = getDataByPost(new DxDataVo(dxReportDataDto.getDxUserId(),dxReportDataDto.getDateTime()), dxApiConfigurationProperties.getFindDataUserIdAndDayUrl());
  146. if (dxData != null) {
  147. dxReportDataDto.setExhaleDuration(dxData.getExhaleDuration());
  148. dxReportDataDto.setOutgoingCallsNumber(dxData.getOutgoingCallsNumber());
  149. dxReportDataDto.setConnectionsNumber(dxData.getConnectionsNumber());
  150. dxReportDataDto.setCallSuccessRate(dxData.getCallSuccessRate());
  151. } else {
  152. dxReportDataDto.setExhaleDuration("0");
  153. dxReportDataDto.setOutgoingCallsNumber("0");
  154. dxReportDataDto.setConnectionsNumber("0");
  155. dxReportDataDto.setCallSuccessRate("-");
  156. }
  157. }
  158. int qywx_zgd = 0;
  159. int qywx_zzb = 0;
  160. //查询掌柜鼎 + 掌中保的数据的企业微信数据
  161. String zgdUserId = dxReportDataDto.getZgdUserId();
  162. String zzdUserId = dxReportDataDto.getZzdUserId();
  163. if (StringUtils.isNotBlank(zzdUserId)) {
  164. KhglDataDto zzbDto = khglZzbDataService.findByUserId(new KhglDataVo(zzdUserId, dxReportDataDto.getDateTime()));
  165. if (zzbDto != null && zzbDto.getWxCount() != null) {
  166. qywx_zzb += zzbDto.getWxCount();
  167. }
  168. }
  169. if (StringUtils.isNotBlank(zgdUserId)) {
  170. KhglDataDto zgdDto = khglZgdDataService.findByUserId(new KhglDataVo(zgdUserId, dxReportDataDto.getDateTime()));
  171. if (zgdDto != null && zgdDto.getWxCount() != null) {
  172. qywx_zgd += zgdDto.getWxCount();
  173. }
  174. }
  175. dxReportDataDto.setQywxCount(qywx_zgd + qywx_zzb);
  176. //查询微信添加数量
  177. newRecords.add(dxReportDataDto);
  178. }
  179. result.setRecords(newRecords);
  180. }
  181. return new BasePageResult<>(dxQueryVo.getPageNum(), page.getSize(), result.getTotal(), page.getPages(),
  182. result.getRecords());
  183. }
  184. /**
  185. * @version
  186. * @author: hxl
  187. * @Date: 2024/9/9 14:43
  188. * @Description: 获取电销数据
  189. */
  190. public DxDataDto getDataByPost(DxDataVo dxDataVo,String url){
  191. HttpHeaders httpHeaders = new HttpHeaders();
  192. httpHeaders.setContentType(MediaType.APPLICATION_JSON);
  193. HttpEntity<DxDataVo> requestEntity = new HttpEntity<>(dxDataVo,httpHeaders);
  194. ResponseEntity<HttpResult<DxDataDto>> response =null;
  195. ParameterizedTypeReference<HttpResult<DxDataDto>> typeRef = new ParameterizedTypeReference<HttpResult<DxDataDto>>() {};
  196. try{
  197. response = restTemplate.exchange(url, HttpMethod.POST, requestEntity, typeRef);
  198. }catch(Exception e){
  199. }
  200. if(response!=null) {
  201. HttpResult<DxDataDto> body = response.getBody();
  202. if (body.getCode() == 200) {
  203. DxDataDto data = body.getData();
  204. return new DxDataDto(dxDataVo.getDateTime(),data.getExhaleDuration(), data.getOutgoingCallsNumber(), data.getConnectionsNumber(), data.getCallSuccessRate());
  205. }
  206. }
  207. return new DxDataDto(dxDataVo.getDateTime(),"-", "-", "-", "-");
  208. }
  209. /**
  210. * @version
  211. * @author: hxl
  212. * @Date: 2024/9/9 19:35
  213. * @Description: 通过用户id查询组别数据
  214. */
  215. @Override
  216. public List<GroupDto> queryGroupListByDeptId(String deptId,String comtype) {
  217. return sysDeptInternalAgentMapper.queryGroupListByDeptId(deptId,comtype);
  218. }
  219. }