package com.ydtech.modules.admin.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydtech.core.page.HttpResult; import com.ydtech.modules.admin.dao.SysDeptInternalAgentMapper; import com.ydtech.modules.admin.dao.SysTelemarketingWechatDataMapper; import com.ydtech.modules.admin.model.dto.DxDataDto; import com.ydtech.modules.admin.model.dto.DxReportDataDto; import com.ydtech.modules.admin.model.dto.GroupDto; import com.ydtech.modules.admin.model.dto.KhglDataDto; import com.ydtech.modules.admin.model.vo.DxDataVo; import com.ydtech.modules.admin.model.vo.DxQueryVo; import com.ydtech.modules.admin.model.vo.KhglDataVo; import com.ydtech.modules.admin.service.DxDataService; import com.ydtech.modules.admin.service.KhglZgdDataService; import com.ydtech.modules.admin.service.KhglZzbDataService; import com.ydtech.modules.admin.utils.DxApiConfigurationProperties; import com.ydtech.modules.order.entity.BasePageResult; import com.ydtech.modules.order.entity.api.pingan.response.TokenResponse; import io.swagger.annotations.ApiModelProperty; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.*; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import java.util.ArrayList; import java.util.List; /** * @version * @author: hxl * @Date: 2024/6/28 9:27 * @Description: 战略合作单位报表 */ @Service public class DxDataServiceImpl implements DxDataService { @Autowired private SysTelemarketingWechatDataMapper sysTelemarketingWechatDataMapper; @Autowired private RestTemplate restTemplate; @Autowired private DxApiConfigurationProperties dxApiConfigurationProperties; @Autowired private KhglZzbDataService khglZzbDataService; @Autowired private KhglZgdDataService khglZgdDataService; @Autowired private SysDeptInternalAgentMapper sysDeptInternalAgentMapper; /** * @version * @author: hxl * @Date: 2024/9/9 11:02 * @Description: 查询用户所有的数据 */ @Override public BasePageResult queryPage(DxQueryVo dxQueryVo) { Page page = new Page<>(dxQueryVo.getPageNum(), dxQueryVo.getPageSize()); Page result = sysTelemarketingWechatDataMapper.queryUserDataPage(page, dxQueryVo); List records = result.getRecords(); List newRecords =new ArrayList(); if (records != null && records.size() > 0) { for (DxReportDataDto dxReportDataDto : records) { //通过用户id查询电销数据 if(dxReportDataDto.getDxUserId()==null){ dxReportDataDto.setExhaleDuration("0"); dxReportDataDto.setOutgoingCallsNumber("0"); dxReportDataDto.setConnectionsNumber("0"); dxReportDataDto.setCallSuccessRate("-"); }else{ DxDataVo dxDataVo = new DxDataVo(dxQueryVo.getBeginDate(), dxQueryVo.getEndDate(), dxReportDataDto.getDxUserId()); DxDataDto dxData = getDataByPost(dxDataVo, dxApiConfigurationProperties.getFindDataUserIdUrl()); if (dxData != null) { dxReportDataDto.setExhaleDuration(dxData.getExhaleDuration()); dxReportDataDto.setOutgoingCallsNumber(dxData.getOutgoingCallsNumber()); dxReportDataDto.setConnectionsNumber(dxData.getConnectionsNumber()); dxReportDataDto.setCallSuccessRate(dxData.getCallSuccessRate()); } else { dxReportDataDto.setExhaleDuration("0"); dxReportDataDto.setOutgoingCallsNumber("0"); dxReportDataDto.setConnectionsNumber("0"); dxReportDataDto.setCallSuccessRate("-"); } } int qywx_zgd = 0; int qywx_zzb = 0; //查询掌柜鼎 + 掌中保的数据的企业微信数据 String zgdUserId = dxReportDataDto.getZgdUserId(); String zzdUserId = dxReportDataDto.getZzdUserId(); if (StringUtils.isNotBlank(zzdUserId)) { KhglDataDto zzbDto = khglZzbDataService.findByUserId(new KhglDataVo(zzdUserId, dxQueryVo.getBeginDate(), dxQueryVo.getEndDate())); if (zzbDto != null && zzbDto.getWxCount() != null) { qywx_zzb += zzbDto.getWxCount(); } } if (StringUtils.isNotBlank(zgdUserId)) { KhglDataDto zgdDto = khglZgdDataService.findByUserId(new KhglDataVo(zgdUserId, dxQueryVo.getBeginDate(), dxQueryVo.getEndDate())); if (zgdDto != null && zgdDto.getWxCount() != null) { qywx_zgd += zgdDto.getWxCount(); } } dxReportDataDto.setQywxCount(qywx_zgd + qywx_zzb); //查询微信添加数量 Integer count = sysTelemarketingWechatDataMapper.queryCountByUserId(new DxDataVo(dxQueryVo.getBeginDate(), dxQueryVo.getEndDate(), dxReportDataDto.getUserId())); dxReportDataDto.setWxCount(count == null ? 0 : count); newRecords.add(dxReportDataDto); result.setRecords(newRecords); } } return new BasePageResult<>(dxQueryVo.getPageNum(), page.getSize(), result.getTotal(), page.getPages(), result.getRecords()); } /** * @version * @author: hxl * @Date: 2024/9/9 11:01 * @Description: 查询每天的数据 */ public BasePageResult queryDxDataDayPage(DxQueryVo dxQueryVo) { Page page = new Page<>(dxQueryVo.getPageNum(), dxQueryVo.getPageSize()); Page result = sysTelemarketingWechatDataMapper.queryDataPage(page,dxQueryVo); List newRecords =new ArrayList(); List records = result.getRecords(); DxReportDataDto user = sysTelemarketingWechatDataMapper.findDataByUserId(dxQueryVo.getUserId()); if (records != null && records.size() > 0) { for (DxReportDataDto dxReportDataDto : records) { dxReportDataDto.setQywxCount(dxReportDataDto.getQywxCount() ==null? 0:dxReportDataDto.getQywxCount()); dxReportDataDto.setDeptId(user.getDeptId()); dxReportDataDto.setDeptName(user.getDeptName()); dxReportDataDto.setGroupId(user.getGroupId()); dxReportDataDto.setGroupName(user.getGroupName()); dxReportDataDto.setUserId(user.getUserId()); dxReportDataDto.setUserName(user.getUserName()); if(dxReportDataDto.getDxUserId()==null){ dxReportDataDto.setExhaleDuration("0"); dxReportDataDto.setOutgoingCallsNumber("0"); dxReportDataDto.setConnectionsNumber("0"); dxReportDataDto.setCallSuccessRate("-"); }else{ //通过用户id查询电销数据 DxDataDto dxData = getDataByPost(new DxDataVo(dxReportDataDto.getDxUserId(),dxReportDataDto.getDateTime()), dxApiConfigurationProperties.getFindDataUserIdAndDayUrl()); if (dxData != null) { dxReportDataDto.setExhaleDuration(dxData.getExhaleDuration()); dxReportDataDto.setOutgoingCallsNumber(dxData.getOutgoingCallsNumber()); dxReportDataDto.setConnectionsNumber(dxData.getConnectionsNumber()); dxReportDataDto.setCallSuccessRate(dxData.getCallSuccessRate()); } else { dxReportDataDto.setExhaleDuration("0"); dxReportDataDto.setOutgoingCallsNumber("0"); dxReportDataDto.setConnectionsNumber("0"); dxReportDataDto.setCallSuccessRate("-"); } } int qywx_zgd = 0; int qywx_zzb = 0; //查询掌柜鼎 + 掌中保的数据的企业微信数据 String zgdUserId = dxReportDataDto.getZgdUserId(); String zzdUserId = dxReportDataDto.getZzdUserId(); if (StringUtils.isNotBlank(zzdUserId)) { KhglDataDto zzbDto = khglZzbDataService.findByUserId(new KhglDataVo(zzdUserId, dxReportDataDto.getDateTime())); if (zzbDto != null && zzbDto.getWxCount() != null) { qywx_zzb += zzbDto.getWxCount(); } } if (StringUtils.isNotBlank(zgdUserId)) { KhglDataDto zgdDto = khglZgdDataService.findByUserId(new KhglDataVo(zgdUserId, dxReportDataDto.getDateTime())); if (zgdDto != null && zgdDto.getWxCount() != null) { qywx_zgd += zgdDto.getWxCount(); } } dxReportDataDto.setQywxCount(qywx_zgd + qywx_zzb); //查询微信添加数量 newRecords.add(dxReportDataDto); } result.setRecords(newRecords); } return new BasePageResult<>(dxQueryVo.getPageNum(), page.getSize(), result.getTotal(), page.getPages(), result.getRecords()); } /** * @version * @author: hxl * @Date: 2024/9/9 14:43 * @Description: 获取电销数据 */ public DxDataDto getDataByPost(DxDataVo dxDataVo,String url){ HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.setContentType(MediaType.APPLICATION_JSON); HttpEntity requestEntity = new HttpEntity<>(dxDataVo,httpHeaders); ResponseEntity> response =null; ParameterizedTypeReference> typeRef = new ParameterizedTypeReference>() {}; try{ response = restTemplate.exchange(url, HttpMethod.POST, requestEntity, typeRef); }catch(Exception e){ } if(response!=null) { HttpResult body = response.getBody(); if (body.getCode() == 200) { DxDataDto data = body.getData(); return new DxDataDto(dxDataVo.getDateTime(),data.getExhaleDuration(), data.getOutgoingCallsNumber(), data.getConnectionsNumber(), data.getCallSuccessRate()); } } return new DxDataDto(dxDataVo.getDateTime(),"-", "-", "-", "-"); } /** * @version * @author: hxl * @Date: 2024/9/9 19:35 * @Description: 通过用户id查询组别数据 */ @Override public List queryGroupListByDeptId(String deptId,String comtype) { return sysDeptInternalAgentMapper.queryGroupListByDeptId(deptId,comtype); } }