Merge remote-tracking branch 'origin/master'

# Conflicts:
#	manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/FormUserServiceImpl.java
master
bynt 2 years ago
commit ef67f98309

@ -33,7 +33,7 @@ spring:
redis:
#数据库索引
database: 0
host: 118.178.137.129
host: 8.130.96.163
port: 6379
password:
#连接超时时间

@ -7,7 +7,7 @@ spring:
cloud:
nacos:
discovery:
server-addr: ${NACOS_HOST:118.178.137.129}:${NACOS_PORT:8848}
server-addr: ${NACOS_HOST:8.130.96.163}:${NACOS_PORT:8848}
#server-addr: ${NACOS_HOST:172.16.190.245}:${NACOS_PORT:8848}
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr}

@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* @author wjt
@ -76,4 +77,9 @@ public class ReportController {
queryReportService.downloadMemberReport(response, beginTime, endTime, memberId);
}
@PostMapping("/report/turnOn")
@ApiOperation("统计接通过的线索")
public CommonResponse<Object> getTurnOnIds(@RequestBody List<Long> clueIds) {
return queryReportService.getTurnOnIds(clueIds);
}
}

@ -4,6 +4,7 @@ import com.baiye.http.CommonResponse;
import com.baiye.modules.report.entity.dto.StatisticalReportDTO;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* @author wujingtao
@ -72,4 +73,11 @@ public interface QueryReportService {
* @return
*/
void downloadMemberReport(HttpServletResponse response, String beginTime, String endTime, Long memberId);
/**
* 线
* @param clueIds
* @return
*/
CommonResponse<Object> getTurnOnIds(List<Long> clueIds);
}

@ -30,7 +30,10 @@ import com.baiye.modules.system.repository.TaskRepository;
import com.baiye.modules.system.repository.UserRepository;
import com.baiye.modules.system.service.CompanyService;
import com.baiye.modules.telemarkting.dao.AllCallInfoRepository;
import com.baiye.modules.telemarkting.dao.CallClueRepository;
import com.baiye.modules.telemarkting.entity.AllCallInfo;
import com.baiye.modules.telemarkting.entity.CallClueInfo;
import com.baiye.timed.ReportSync;
import com.baiye.util.DateTimeUtil;
import com.baiye.util.ExportExcelUtil;
import com.baiye.util.SecurityUtils;
@ -60,6 +63,8 @@ public class QueryReportServiceImpl implements QueryReportService {
private final UserReportRepository userReportRepository;
private final SourceClueClient sourceClueClient;
private final UserRepository userRepository;
private final CallClueRepository callClueRepository;
private final ReportSync reportSync;
/**
*
@ -69,14 +74,13 @@ public class QueryReportServiceImpl implements QueryReportService {
@Override
public CommonResponse<Object> getReportByAll() {
Long companyId = SecurityUtils.getCompanyId();
String beginOfDay = DateUtil.beginOfDay(DateUtil.yesterday()).toString();
String endOfDay = DateUtil.endOfDay(DateUtil.yesterday()).toString();
List<TaskReport> list = taskReportRepository.queryAllByTimeAndCompanyId(beginOfDay, endOfDay, companyId);
String beginOfDay = DateUtil.beginOfDay(DateUtil.date()).toString();
String endOfDay = DateUtil.date().toString();
List<CallClueInfo> callClueInfos = callClueRepository.queryAllByTimeAndCompanyId(beginOfDay, endOfDay, companyId);
//对查询的数据进行处理
MemberInfoVO messageInfo = getAllTaskInfo(list);
MemberInfoVO messageInfo = getMessageInfo(beginOfDay, endOfDay, callClueInfos);
return CommonResponse.createBySuccess(messageInfo);
}
/**
* id
*
@ -89,6 +93,19 @@ public class QueryReportServiceImpl implements QueryReportService {
//对参数进行处理
StatisticalReportDTO condition = getStatisticalReportDTO(s);
List<TaskReport> taskReports = getTaskReport(condition.getBeginTime(), condition.getEndTime(), condition.getType(), condition.getIds());
// TODO: 2022/5/6 0006 这里将统计今日的数据
boolean betweenDays = DateTimeUtil.betweenByDay(DateUtil.date(), DateUtil.parseDate(condition.getEndTime()));
if (betweenDays) {
List<CallClueInfo> callClueInfos = callClueRepository.queryAllByTimeAndTaskId(DateUtil.beginOfDay(DateUtil.date()).toString(), DateUtil.date().toString(), condition.getIds());
List<TaskReport> list = reportSync.autoCountReportByTask(DateUtil.beginOfDay(DateUtil.date()).toString(), DateUtil.date().toString(), callClueInfos);
if (CollUtil.isEmpty(taskReports)) {
taskReports = list;
} else {
taskReports.addAll(list);
}
}
if (taskReports == null) {
return CommonResponse.createByErrorMessage("请检查时间类型是否错误");
}
@ -97,6 +114,8 @@ public class QueryReportServiceImpl implements QueryReportService {
taskReports.stream().collect(Collectors.groupingBy(TaskReport::getTaskId, Collectors.toList())).forEach(map::put);
Date begin = DateUtil.parseDate(condition.getBeginTime());
Date end = DateUtil.parseDate(condition.getEndTime());
//按月统计
if (s.getType() == DefaultNumberConstants.THREE_NUMBER) {
for (Long key : map.keySet()) {
@ -148,6 +167,19 @@ public class QueryReportServiceImpl implements QueryReportService {
StatisticalReportDTO condition = getStatisticalReportDTO(s);
List<TaskReport> taskReports = getTaskReport(condition.getBeginTime(), condition.getEndTime(), condition.getType(), condition.getIds());
List<TaskReport> list = new ArrayList<>();
// TODO: 2022/5/6 0006 这里将统计今日的数据
boolean betweenDays = DateTimeUtil.betweenByDay(DateUtil.date(), DateUtil.parseDate(condition.getEndTime()));
if (betweenDays) {
List<CallClueInfo> callClueInfos = callClueRepository.queryAllByTimeAndTaskId(DateUtil.beginOfDay(DateUtil.date()).toString(), DateUtil.date().toString(), condition.getIds());
List<TaskReport> lists = reportSync.autoCountReportByTask(DateUtil.beginOfDay(DateUtil.date()).toString(), DateUtil.date().toString(), callClueInfos);
if (CollUtil.isEmpty(taskReports)) {
taskReports = lists;
} else {
taskReports.addAll(lists);
}
}
if (taskReports != null && taskReports.size() > 0) {
//根据任务id合并
// TODO: 2022/3/18 0018 如果是动态任务,任务的总数是变动的。可能会有影响
@ -171,7 +203,7 @@ public class QueryReportServiceImpl implements QueryReportService {
}
/**
* 线
* 线
*
* @param response
* @param id
@ -260,6 +292,19 @@ public class QueryReportServiceImpl implements QueryReportService {
return CommonResponse.createByErrorMessage("未找到组信息");
}
List<UserReport> userReports = userReportRepository.queryAllByTimeAndTeamIds(beginTime, endTime, ids);
// TODO: 2022/5/6 0006 这里将统计今日的数据
boolean betweenDays = DateTimeUtil.betweenByDay(DateUtil.date(), DateUtil.parseDate(endTime));
if (betweenDays) {
List<CallClueInfo> callClueInfos = callClueRepository.queryAllByTimeAndTeamId(DateUtil.beginOfDay(DateUtil.date()).toString(), DateUtil.date().toString(), ids);
List<UserReport> list = reportSync.autoCountReportByUser(DateUtil.beginOfDay(DateUtil.date()).toString(), DateUtil.date().toString(), callClueInfos);
if (CollUtil.isEmpty(userReports)) {
userReports = list;
} else {
userReports.addAll(list);
}
}
Map<Long, UserReport> map = new HashMap<>();
//将一个组的数据合并
for (UserReport info : userReports) {
@ -297,6 +342,19 @@ public class QueryReportServiceImpl implements QueryReportService {
throw new BadRequestException(ResponseCode.USER_INFORMATION_ERROR.getDesc());
}
List<UserReport> userReports = userReportRepository.queryAllByTimeAndTeamIds(beginTime, endTime, ids);
// TODO: 2022/5/6 0006 这里将统计今日的数据
boolean betweenDays = DateTimeUtil.betweenByDay(DateUtil.date(), DateUtil.parseDate(endTime));
if (betweenDays) {
List<CallClueInfo> callClueInfos = callClueRepository.queryAllByTimeAndTeamId(DateUtil.beginOfDay(DateUtil.date()).toString(), DateUtil.date().toString(), ids);
List<UserReport> list = reportSync.autoCountReportByUser(DateUtil.beginOfDay(DateUtil.date()).toString(), DateUtil.date().toString(), callClueInfos);
if (CollUtil.isEmpty(userReports)) {
userReports = list;
} else {
userReports.addAll(list);
}
}
Map<Long, UserReport> map = new HashMap<>();
for (UserReport info : userReports) {
if (map.containsKey(info.getMemberId())) {
@ -324,20 +382,28 @@ public class QueryReportServiceImpl implements QueryReportService {
@Override
public CommonResponse<Object> getMemberReport(String beginTime, String endTime, Long memberId) {
String begin;
String end;
if (StrUtil.isBlank(beginTime) || StrUtil.isBlank(endTime)) {
begin = DateUtil.format(DateUtil.yesterday(), "yyyy-MM-dd");
end = DateUtil.format(DateUtil.yesterday(), "yyyy-MM-dd");
} else {
begin = DateUtil.format(DateUtil.parse(beginTime), "yyyy-MM-dd");
end = DateUtil.format(DateUtil.parse(endTime), "yyyy-MM-dd");
beginTime = DateUtil.today();
endTime = DateUtil.today();
}
if (memberId == null) {
log.error("成员id为空");
return CommonResponse.createByErrorMessage("成员id为空");
}
List<UserReport> userReports = userReportRepository.queryAllByTimeAndId(begin, end, memberId);
List<UserReport> userReports = userReportRepository.queryAllByTimeAndId(beginTime, endTime, memberId);
// TODO: 2022/5/6 0006 这里将统计今日的数据
boolean betweenDays = DateTimeUtil.betweenByDay(DateUtil.date(), DateUtil.parseDate(endTime));
if (betweenDays) {
List<CallClueInfo> callClueInfos = callClueRepository.queryAllByTimeAndMemberId(DateUtil.beginOfDay(DateUtil.date()).toString(), DateUtil.date().toString(), memberId);
List<UserReport> list = reportSync.autoCountReportByUser(DateUtil.beginOfDay(DateUtil.date()).toString(), DateUtil.date().toString(), callClueInfos);
if (CollUtil.isEmpty(userReports)) {
userReports = list;
} else {
userReports.addAll(list);
}
}
Map<Long, UserReport> map = new HashMap<>();
//合并同一个人的线索数据
for (UserReport info : userReports) {
@ -365,16 +431,24 @@ public class QueryReportServiceImpl implements QueryReportService {
@Override
public void downloadMemberReport(HttpServletResponse response, String beginTime, String endTime, Long memberId) {
String begin;
String end;
if (StrUtil.isBlank(beginTime) || StrUtil.isBlank(endTime)) {
begin = DateUtil.today();
end = DateUtil.today();
} else {
begin = DateUtil.format(DateUtil.parse(beginTime), "yyyy-MM-dd");
end = DateUtil.format(DateUtil.parse(endTime), "yyyy-MM-dd");
beginTime = DateUtil.today();
endTime = DateUtil.today();
}
List<UserReport> userReports = userReportRepository.queryAllByTimeAndId(beginTime, endTime, memberId);
// TODO: 2022/5/6 0006 这里将统计今日的数据
boolean betweenDays = DateTimeUtil.betweenByDay(DateUtil.date(), DateUtil.parseDate(endTime));
if (betweenDays) {
List<CallClueInfo> callClueInfos = callClueRepository.queryAllByTimeAndMemberId(DateUtil.beginOfDay(DateUtil.date()).toString(), DateUtil.date().toString(), memberId);
List<UserReport> list = reportSync.autoCountReportByUser(DateUtil.beginOfDay(DateUtil.date()).toString(), DateUtil.date().toString(), callClueInfos);
if (CollUtil.isEmpty(userReports)) {
userReports = list;
} else {
userReports.addAll(list);
}
}
List<UserReport> userReports = userReportRepository.queryAllByTimeAndId(begin, end, memberId);
List<MemberInfoVO> listResult = new ArrayList<>();
for (UserReport info : userReports) {
MemberInfoVO memberInfoVO = new MemberInfoVO();
@ -384,6 +458,15 @@ public class QueryReportServiceImpl implements QueryReportService {
ExportExcelUtil.downloadEasyExcel(response, MemberInfoVO.class, listResult);
}
@Override
public CommonResponse<Object> getTurnOnIds(List<Long> clueIds) {
List<Long> list = allCallInfoRepository.queryIdsByStatusAndClueId(clueIds, 2);
if (CollUtil.isNotEmpty(list)) {
list = list.stream().distinct().collect(Collectors.toList());
}
return CommonResponse.createBySuccess(list);
}
/**
*
*/
@ -566,6 +649,49 @@ public class QueryReportServiceImpl implements QueryReportService {
return memberInfoVO;
}
/**
* 线
*/
private MemberInfoVO getMessageInfo(String begin, String end, List<CallClueInfo> callClueInfos) {
int usrNum = 0;
int turnOnNum = 0;
double turnOnRate = 0.00;
long breatheTotalDuration = 0;
double breatheAverageDuration = 0;
if (CollUtil.isNotEmpty(callClueInfos)) {
//使用数
usrNum = callClueInfos.size();
for (CallClueInfo info : callClueInfos) {
//接通时才会有通话时长
long clueId = info.getClueId();
List<AllCallInfo> doubleCallInfo = allCallInfoRepository.queryAllByTime(begin, end, clueId);
//统计通话时长
int doubleClueTime = 0;
if (CollUtil.isNotEmpty(doubleCallInfo)) {
doubleClueTime = doubleCallInfo.stream().filter(item -> item.getStatus() == DefaultNumberConstants.TWO_NUMBER).collect(Collectors.toList()).stream().mapToInt(AllCallInfo::getDuration).sum();
if (doubleClueTime > 0) {
//有通话时长 说明电话打通
turnOnNum++;
}
}
breatheTotalDuration += doubleClueTime;
}
breatheAverageDuration = NumberUtil.div(breatheTotalDuration, callClueInfos.size(), 2);
}
if (usrNum != 0) {
//接通率=接通数/使用数
turnOnRate = NumberUtil.div(turnOnNum, usrNum, 2);
}
MemberInfoVO memberInfoVO = new MemberInfoVO();
memberInfoVO.setTurnOnNum(turnOnNum);
memberInfoVO.setTurnOnRate(turnOnRate);
memberInfoVO.setUsrNum(usrNum);
memberInfoVO.setBreatheAverageDuration(breatheAverageDuration);
memberInfoVO.setBreatheTotalDuration(breatheTotalDuration);
return memberInfoVO;
}
/**
*
*/

@ -2,12 +2,16 @@ package com.baiye.modules.system.rest;
import com.baiye.http.CommonResponse;
import com.baiye.http.ResponseCode;
import com.baiye.model.dto.TaskQueryCriteria;
import com.baiye.modules.system.domain.Debt;
import com.baiye.modules.system.service.DebtFormService;
import com.baiye.modules.system.service.dto.DebtQueryCriteria;
import com.baiye.modules.system.service.dto.DebtQueryResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
@ -32,4 +36,10 @@ public class DebtFormController {
debtFormService.saveDebtForm(debt);
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);
}
@ApiOperation("查询(分页)")
@GetMapping("/queryAll")
public ResponseEntity<Object> queryAll(DebtQueryCriteria debtQueryResult, Pageable pageable){
return new ResponseEntity<>(debtFormService.queryAll(debtQueryResult,pageable),HttpStatus.OK);
}
}

@ -1,6 +1,9 @@
package com.baiye.modules.system.service;
import com.baiye.modules.system.domain.Debt;
import com.baiye.modules.system.service.dto.DebtQueryCriteria;
import com.baiye.modules.system.service.dto.DebtQueryResult;
import org.springframework.data.domain.Pageable;
public interface DebtFormService {
@ -10,4 +13,6 @@ public interface DebtFormService {
* @return
*/
void saveDebtForm(Debt debt);
Object queryAll(DebtQueryCriteria debtQueryCriteria, Pageable pageable);
}

@ -0,0 +1,28 @@
package com.baiye.modules.system.service.dto;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
public class DebtDto implements Serializable {
private Long id;
private Long userId;
private String name;
private String nid;
private Integer debtType;
private Integer quota;
private Long createBy;
private java.util.Date createTime;
private java.util.Date updateTime;
}

@ -0,0 +1,20 @@
package com.baiye.modules.system.service.dto;
import com.baiye.annotation.Query;
import lombok.Data;
import java.sql.Timestamp;
import java.util.List;
/**
*
*/
@Data
public class DebtQueryCriteria {
@Query
private Long userId;
@Query(type = Query.Type.BETWEEN)
private List<Timestamp> createTime;
}

@ -7,8 +7,17 @@ import com.baiye.modules.system.domain.FormUser;
import com.baiye.modules.system.repository.DebtFormRepository;
import com.baiye.modules.system.repository.FormUserRepository;
import com.baiye.modules.system.service.DebtFormService;
import com.baiye.modules.system.service.dto.DebtDto;
import com.baiye.modules.system.service.dto.DebtQueryCriteria;
import com.baiye.modules.system.service.dto.DebtQueryResult;
import com.baiye.modules.system.service.dto.TaskDto;
import com.baiye.modules.system.service.mapstruct.DebtMapper;
import com.baiye.util.PageUtil;
import com.baiye.util.QueryHelp;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
@ -26,6 +35,8 @@ public class DebtFormServiceImpl implements DebtFormService {
private final RedisTemplate<String, String> redisTemplate;
private final DebtMapper debtMapper;
@Override
@Transactional(rollbackOn = Exception.class)
public void saveDebtForm(Debt debt) {
@ -43,10 +54,11 @@ public class DebtFormServiceImpl implements DebtFormService {
if (formUser.getId() == null){
throw new BadRequestException("提交失败,错误的邀请人");
}
//插入表单
debtFormRepository.save(debt);
//拉取人数+1,本人不能拉取本人
if (formUser.getId() != debt.getUserId()){
if (!formUser.getPhone().equals(debt.getNid())){
//插入表单
debtFormRepository.save(debt);
//拉取人数+1
formUser.setInvitationNums(formUser.getInvitationNums() + 1);
formUserRepository.save(formUser);
}
@ -54,4 +66,11 @@ public class DebtFormServiceImpl implements DebtFormService {
throw new BadRequestException("单个号码只能提交一次");
}
}
@Override
public Object queryAll(DebtQueryCriteria debtQueryCriteria, Pageable pageable) {
Page<Debt> taskRepositoryAll = debtFormRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, debtQueryCriteria, criteriaBuilder), pageable);
Page<DebtDto> map = taskRepositoryAll.map(debtMapper::toDto);
return PageUtil.toPage(map);
}
}

@ -0,0 +1,11 @@
package com.baiye.modules.system.service.mapstruct;
import com.baiye.model.base.BaseMapper;
import com.baiye.modules.system.domain.Debt;
import com.baiye.modules.system.service.dto.DebtDto;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface DebtMapper extends BaseMapper<DebtDto, Debt> {
}

@ -30,6 +30,9 @@ public class ExtensionNumberController {
@RequestParam("display") Long display,
@RequestParam("companyId") Long companyId
) {
if (file == null || display == null || companyId == null) {
return CommonResponse.createByErrorMessage("文件,外显号不能为空,请检查");
}
return extensionNumberService.addNumbers(file, display, companyId);
}

@ -71,4 +71,14 @@ public interface AllCallInfoRepository extends JpaRepository<AllCallInfo, Long>,
@Modifying
@Query(value = "delete from tb_call_info where member_id in ?1", nativeQuery = true)
int deleteByMemberId(List<Long> userIds);
/**
* 线idid
*
* @param clueIds
* @param status
* @return
*/
@Query(value = "select clue_id from tb_call_info where clue_id in ?1 and status = ?2", nativeQuery = true)
List<Long> queryIdsByStatusAndClueId(List<Long> clueIds, Integer status);
}

@ -42,4 +42,48 @@ public interface CallClueRepository extends JpaRepository<CallClueInfo, Long>, J
@Modifying
@Query(value = "delete from CallClueInfo where companyId = ?1")
int deleteByCompanyId(Long companyId);
/**
*
*
* @param beginTime
* @param endTime
* @param companyId
* @return
*/
@Query(value = "select * from tb_call_clue where (create_time between ?1 and ?2) and company_id =?3", nativeQuery = true)
List<CallClueInfo> queryAllByTimeAndCompanyId(String beginTime, String endTime, Long companyId);
/**
* id线
*
* @param beginTime
* @param endTime
* @param ids
* @return
*/
@Query(value = "select * from tb_call_clue d where d.create_time >= ?1 and d.create_time< ?2 AND d.task_id in ?3", nativeQuery = true)
List<CallClueInfo> queryAllByTimeAndTaskId(String beginTime, String endTime, List<Long> ids);
/**
* id线
*
* @param beginTime
* @param endTime
* @param ids
* @return
*/
@Query(value = "select * from tb_call_clue d where d.create_time >= ?1 and d.create_time< ?2 AND d.team_id in ?3", nativeQuery = true)
List<CallClueInfo> queryAllByTimeAndTeamId(String beginTime, String endTime, List<Long> ids);
/**
* id线
*
* @param beginTime
* @param endTime
* @param id
* @return
*/
@Query(value = "select * from tb_call_clue d where d.create_time >= ?1 and d.create_time< ?2 AND d.member.id = ?3", nativeQuery = true)
List<CallClueInfo> queryAllByTimeAndMemberId(String beginTime, String endTime, Long id);
}

@ -64,8 +64,6 @@ public class TelephoneCallServiceImpl implements TelephoneCallService {
private SourceClueClient sourceClueClient;
@Resource
private ExtensionNumberRepository extensionNumberRepository;
@Resource
private WebSocketServer webSocketServer;
@Override
public CommonResponse<String> doubleCallReq(TelephoneCallReqDTO doubleCallReq, Long companyId) {

@ -61,13 +61,15 @@ public class ReportSync {
return;
}
//按任务统计
autoCountReportByTask(beginOfDay, endOfDay, callClueInfos);
List<TaskReport> taskList = autoCountReportByTask(beginOfDay, endOfDay, callClueInfos);
taskReportRepository.saveAll(taskList);
//按人员统计
autoCountReportByUser(beginOfDay, endOfDay, callClueInfos);
List<UserReport> userList = autoCountReportByUser(beginOfDay, endOfDay, callClueInfos);
userReportRepository.saveAll(userList);
log.info("++++++++++++++++++++++countReport Sync end time {} ++++++++++++++++", DateUtil.now());
}
private void autoCountReportByTask(String beginOfDay, String endOfDay, List<CallClueInfo> callClueInfos) {
public List<TaskReport> autoCountReportByTask(String beginOfDay, String endOfDay, List<CallClueInfo> callClueInfos) {
HashMap<Long, List<CallClueInfo>> map = new HashMap<>();
//根据任务id分组
callClueInfos.stream().collect(Collectors.groupingBy(CallClueInfo::getTaskId, Collectors.toList())).forEach(map::put);
@ -75,7 +77,7 @@ public class ReportSync {
for (Long key : map.keySet()) {
Task taskInfo = taskRepository.findByIsDistributionAndId(DefaultNumberConstants.ONE_NUMBER, key);
if (ObjectUtil.isNull(taskInfo)) {
log.info("任务定时统计时,未找到该任务 id:{}", key);
log.info("任务统计时,未找到该任务 id:{}", key);
continue;
}
int totalNum = taskInfo.getTotalNumber();
@ -93,6 +95,7 @@ public class ReportSync {
}
//计算
TaskReport countInfo = JSONUtil.toBean(getCountInfo(beginOfDay, endOfDay, map.get(key)), TaskReport.class);
//如果
countInfo.setTaskId(key);
countInfo.setTaskName(taskName);
countInfo.setTotalNum(totalNum);
@ -101,10 +104,10 @@ public class ReportSync {
countInfo.setCompanyId(map.get(key).get(0).getCompanyId());
list.add(countInfo);
}
taskReportRepository.saveAll(list);
return list;
}
private void autoCountReportByUser(String beginOfDay, String endOfDay, List<CallClueInfo> callClueInfos) {
public List<UserReport> autoCountReportByUser(String beginOfDay, String endOfDay, List<CallClueInfo> callClueInfos) {
HashMap<Long, List<CallClueInfo>> map = new HashMap<>();
//根据人员id分组
callClueInfos.stream().collect(Collectors.groupingBy(CallClueInfo::getMemberId, Collectors.toList())).forEach(map::put);
@ -131,7 +134,7 @@ public class ReportSync {
userReport.setCreateTime(DateUtil.date());
list.add(userReport);
}
userReportRepository.saveAll(list);
return list;
}
private JSONObject getCountInfo(String beginOfDay, String endOfDay, List<CallClueInfo> callClueInfos) {

@ -6,12 +6,14 @@ import com.google.zxing.*;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import lombok.extern.slf4j.Slf4j;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Hashtable;
import java.util.Random;
@ -22,6 +24,7 @@ import java.util.Random;
* @author YQY
* @date 2022-04-18
*/
@Slf4j
public class QRCodeUtil {
private static final String CHARSET = "utf-8";
private static final String FORMAT = "JPG";
@ -247,4 +250,21 @@ public class QRCodeUtil {
return QRCodeUtil.decode(new File(path));
}
/**
*
* @param fileUrl
*/
public static void fileJurisdiction(String fileUrl){
//放开文件权限
String os = System.getProperty("os.name");
if(!os.toLowerCase().startsWith("win")){
try {
Runtime.getRuntime().exec(fileUrl);
}catch (IOException e){
log.info("==================文件权限放开失败====================");
throw new BadRequestException("失败");
}
}
}
}

@ -3,18 +3,18 @@ spring:
cloud:
nacos:
discovery:
server-addr: ${NACOS_HOST:118.178.137.129}:${NACOS_PORT:8848}
server-addr: ${NACOS_HOST:8.130.96.163}:${NACOS_PORT:8848}
redis:
database: 2
host: 118.178.137.129
host: 8.130.96.163
timeout: 5000
datasource:
druid:
db-type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://118.178.137.129:3306/ad_platform?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull
url: jdbc:mysql://8.130.96.163:3306/ad_platform?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull
username: root
password: root
password: y7z7noq2
# 初始连接数
initial-size: 5
# 最小连接数
@ -116,16 +116,16 @@ double:
call:
reqUrl: http://ax.hzdaba.cn/callback/Accounts/dbby_hangzhoubaiyehl/Hw/CallBack
appid: app1
cdrUrl: http://118.178.137.129:8866/api/back/cdrUrl
statusUrl: http://118.178.137.129:8866/api/back/status
cdrUrl: http://8.130.96.163:8866/api/back/cdrUrl
statusUrl: http://8.130.96.163:8866/api/back/status
stopUrl: http://ax.hzdaba.cn/callback/Accounts/dbby_hangzhoubaiyehl/Hw/CallBackStop
#axb地址
axb:
call:
appid: app1
cdrUrl: http://118.178.137.129:8866/api/back/cdrUrl
statusUrl: http://118.178.137.129:8866/api/back/status
cdrUrl: http://8.130.96.163:8866/api/back/cdrUrl
statusUrl: http://8.130.96.163:8866/api/back/status
bingUrl: http://ax.hzdaba.cn/callback/Accounts/dbby_hangzhoubaiyehl/Calls/AxbBinding
unBingUrl: http://ax.hzdaba.cn/callback/Accounts/dbby_hangzhoubaiyehl/Calls/AxbUnBinding
@ -134,7 +134,7 @@ roll:
reqUrl: http://api.hzdaba.cn/v3/Accounts/dbby_hangzhoubaiyehl/Calls/ClickCall
accountSid: dbby_hangzhoubaiyehl
appId: app1
cdrUrl: http://118.178.137.129:8866/api/roll/cdrUrl
cdrUrl: http://8.130.96.163:8866/api/roll/cdrUrl
#cdrUrl: https://baiyee.vip/api/roll/cdrUrl
#cdrUrl: http://localhost:8866/api/roll/cdrUrl
@ -151,7 +151,7 @@ alipay:
# 填支付宝公钥,注意不是生成的应用公钥
aliPayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyvegkGCrz1i5/K7VzQxvoZm4G73pSPNu9R5ET8YonIuDVoHkHaYvQQizLdRkTyBsYIik8FXsSDmVsw5MLMQ7OAlZ97nQBkz5TxOX6Px766nUpSVoWXoAz6cpIlWnwgir4t1ph88Ph56l+qmqW3gUj/U6MIuzjxBJlijTMHl96its95Nd4cEFx4j+sFuRYob6D0kcemC7xEFuty7bdupda51Z56GYI1YjuUTryTlFOHZbOSThc2ZMzNC1gPG25bn2Lx6sDuPByk4KW4rQ2v7mSfeUuZZRdjtVSC0WV2M2Cv5L8eLFvZRgNYnXrUJYhnRpT+OBAvJZXaWU2nv/bNe/UQIDAQAB
# 回调地址
notifyUrl: http://118.178.137.129:8866/pay/aliPay/pay-notify
notifyUrl: http://8.130.96.163:8866/pay/aliPay/pay-notify
# 可设置AES密钥调用AES加解密相关接口时需要可选
encryptKey:
@ -165,7 +165,7 @@ template:
#债务表单二维码扫描地址及二维码存放路径
debt:
visitUrl: http://118.178.137.129:8800/pages/login#/pages/statisticsForm/index?userId=
visitUrl: http://8.130.96.163:8800/pages/login#/pages/statisticsForm/index?userId=
qrcodeUrl: /home/eladmin/qrcode/
qrcodeLogo: /home/eladmin/qrcode/qrcode.jpg
reqUrl: /qrcode/

@ -88,8 +88,8 @@ public class FileAnalysisTask {
}
}
} catch (Exception e) {
log.info("=========读取资源错误============{}",e);
taskClient.sendErrMessage("导入资源错误,请检查数据格式后重新导入", clueRecords.get(0).getCreateBy());
e.printStackTrace();
throw new BadRequestException("=========读取资源错误============");
}
//动态任务不需要创建任务,更新后结束方法

Loading…
Cancel
Save