合代码,未测试

master
wujingtao 2 years ago
parent ee713fcaaf
commit 35a82d11fc

@ -11,4 +11,5 @@ public class ClueTypeConstants {
public static final Integer[] SCREEN_TYPE = new Integer[]{0, 1, 2, 3, 6, 7};
public static final Integer[] TOKER_TYPE = new Integer[]{4, 5};
public static final Integer[] CLUE_POOL =new Integer[]{0,1,3};
}

@ -92,7 +92,6 @@ public class DefaultNumberConstants {
public static final int TWELVE_NUMBER = 12;
/**
* 14
*/
@ -135,7 +134,11 @@ public class DefaultNumberConstants {
*/
public static final int NINETY = 90;
/**
* 90
* 98
*/
public static final int NINETY_EIGHT = 98;
/**
* 99
*/
public static final int NINETY_NINE = 99;
/**

@ -1,5 +1,6 @@
package com.baiye.modules.platform.rest;
import com.baiye.annotation.Inner;
import com.baiye.modules.platform.domain.OceanEngineToken;
import com.baiye.modules.platform.service.dto.OceanEngineTokenDto;
import com.baiye.modules.platform.service.OceanEngineService;
@ -37,7 +38,7 @@ public class OceanEngineController {
@ApiOperation("获取投放请求")
@GetMapping(value = "/url")
public ResponseEntity<String> query(Long companyId,String authorizeName) {
public ResponseEntity<String> query(Long companyId, String authorizeName) {
return new ResponseEntity<>(oceanEngineService.buildAuthorizationUrl(companyId, authorizeName), HttpStatus.OK);
}
@ -51,18 +52,16 @@ public class OceanEngineController {
}
@ApiOperation("查询授权列表")
@GetMapping("/page")
public ResponseEntity<Object> query(OceanEngineQueryCriteria criteria, Pageable pageable){
return new ResponseEntity<>(oceanEngineService.queryAll(criteria, pageable),HttpStatus.OK);
public ResponseEntity<Object> query(OceanEngineQueryCriteria criteria, Pageable pageable) {
return new ResponseEntity<>(oceanEngineService.queryAll(criteria, pageable), HttpStatus.OK);
}
@ApiOperation("修改授权")
@GetMapping("update")
public ResponseEntity<Object> update(Integer status,Long id){
public ResponseEntity<Object> update(Integer status, Long id) {
oceanEngineService.updateAuthorizationStatus(status, id);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@ -81,13 +80,15 @@ public class OceanEngineController {
@ApiOperation("根据状态获取")
@GetMapping(value = "/select/status")
@Inner
public ResponseEntity<List<OceanEngineToken>> queryByStatus(@RequestParam("status") Integer status) {
return new ResponseEntity<>(oceanEngineService.findByStatus(status), HttpStatus.OK);
}
@ApiOperation("根据用户id和状态获取")
@GetMapping(value = "/select/userId")
public ResponseEntity<OceanEngineToken> queryByUserIdAndStatus(@RequestParam("userId") Long userId,@RequestParam("status") Integer status) {
return new ResponseEntity<>(oceanEngineService.getOceanEngineByUserIdAndStatus(userId,status), HttpStatus.OK);
@Inner
public ResponseEntity<OceanEngineToken> queryByUserIdAndStatus(@RequestParam("userId") Long userId, @RequestParam("status") Integer status) {
return new ResponseEntity<>(oceanEngineService.getOceanEngineByUserIdAndStatus(userId, status), HttpStatus.OK);
}
}

@ -1,5 +1,6 @@
package com.baiye.modules.platform.rest;
import com.baiye.annotation.Inner;
import com.baiye.http.CommonResponse;
import com.baiye.model.dto.DynamicTaskDistributionDTO;
import com.baiye.model.dto.TaskQueryCriteria;
@ -61,12 +62,14 @@ public class TaskController {
@ApiOperation("查询任务列表")
@GetMapping("/list")
@Inner
public ResponseEntity<Object> list(TaskQueryCriteria taskQueryCriteria) {
return new ResponseEntity<>(taskService.list(taskQueryCriteria), HttpStatus.OK);
}
@ApiOperation("查询任务详情")
@GetMapping("/queryDetails")
@Inner
public ResponseEntity<Task> queryDetails(@RequestParam("taskId") Long taskId) {
return new ResponseEntity<>(taskService.queryDetails(taskId), HttpStatus.OK);
}

@ -262,6 +262,11 @@ public class TaskServiceImpl implements TaskService {
if (taskQueryCriteria.getIsForm() == null) {
taskQueryCriteria.setIsForms(Arrays.asList(ClueTypeConstants.SCREEN_TYPE));
}
//isfrom为98 前后端约定,查 0,1,3类型任务
else if (taskQueryCriteria.getIsForm() == DefaultNumberConstants.NINETY_EIGHT) {
taskQueryCriteria.setIsForm(null);
taskQueryCriteria.setIsForms(Arrays.asList(ClueTypeConstants.CLUE_POOL));
}
//isfrom为99 前后端约定,为拓客 投流
else if (taskQueryCriteria.getIsForm() == DefaultNumberConstants.NINETY_NINE) {
taskQueryCriteria.setIsForm(null);
@ -370,7 +375,7 @@ public class TaskServiceImpl implements TaskService {
TaskOrganizeDto taskOrganizeDto = taskOrganizeList.get(0);
returnMap.put(KeyFieldConstants.TASK_ORGANIZE_LABEL, taskOrganizeDto.getOrganizeLabel());
}
if (userId != null){
if (userId != null) {
User user = userRepository.findById(userId).orElseGet(User::new);
LabelOrganizeQueryCriteria criteria = new LabelOrganizeQueryCriteria();
criteria.setCreateBy(user.getWhichUserId());

@ -55,7 +55,9 @@ security:
- /api/taskImei/**
- /pay/aliPay/pay-notify
- /api/oceanEngine/callback
- /api/back/cdrUrl
- /api/back/status
- /api/roll/cdrUrl
task:
pool:

@ -1,11 +1,13 @@
package com.baiye.feign;
import com.baiye.constant.SecurityConstants;
import com.baiye.feign.fallback.OrganizeClientFallback;
import com.baiye.module.entity.OceanEngineToken;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@ -20,9 +22,9 @@ public interface OceanEngineClient {
@ApiOperation("根据状态获取")
@GetMapping(PAY_PREFIX + "/select/status")
ResponseEntity<List<OceanEngineToken>> queryByStatus(@RequestParam("status") Integer status);
ResponseEntity<List<OceanEngineToken>> queryByStatus(@RequestParam("status") Integer status, @RequestHeader(SecurityConstants.FROM) String from);
@ApiOperation("根据用户id和状态获取")
@GetMapping(PAY_PREFIX + "/select/userId")
ResponseEntity<OceanEngineToken> queryByUserIdAndStatus(@RequestParam("userId") Long userId, @RequestParam("status") Integer status);
ResponseEntity<OceanEngineToken> queryByUserIdAndStatus(@RequestParam("userId") Long userId, @RequestParam("status") Integer status,@RequestHeader(SecurityConstants.FROM) String from);
}

@ -1,5 +1,6 @@
package com.baiye.feign;
import com.baiye.constant.SecurityConstants;
import com.baiye.feign.fallback.TaskClientFallback;
import com.baiye.http.CommonResponse;
import com.baiye.model.dto.DynamicTaskDistributionDTO;
@ -8,10 +9,7 @@ import com.baiye.module.entity.Task;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@ -40,7 +38,7 @@ public interface TaskClient {
@ApiOperation("查询任务详情")
@GetMapping(PAY_PREFIX + "/queryDetails")
ResponseEntity<Task> queryDetails(@RequestParam("taskId") Long taskId);
ResponseEntity<Task> queryDetails(@RequestParam("taskId") Long taskId,@RequestHeader(SecurityConstants.FROM) String from);
@ApiOperation("修改任务信息")
@PostMapping(PAY_PREFIX + "/update")
@ -54,7 +52,7 @@ public interface TaskClient {
@GetMapping(PAY_PREFIX + "/list")
ResponseEntity<Object> list(@RequestParam("isForms") List<Integer> isForms,
@RequestParam("createBy") Long createBy,
@RequestParam("isDistribution") Integer isDistribution);
@RequestParam("isDistribution") Integer isDistribution, @RequestHeader(SecurityConstants.FROM) String from);
/**
*

@ -11,12 +11,12 @@ import java.util.List;
*/
public class OceanEngineClientFallback implements OceanEngineClient {
@Override
public ResponseEntity<List<OceanEngineToken>> queryByStatus(Integer status) {
public ResponseEntity<List<OceanEngineToken>> queryByStatus(Integer status, String from) {
return null;
}
@Override
public ResponseEntity<OceanEngineToken> queryByUserIdAndStatus(Long userId, Integer status) {
public ResponseEntity<OceanEngineToken> queryByUserIdAndStatus(Long userId, Integer status, String from) {
return null;
}
}

@ -37,7 +37,7 @@ public class TaskClientFallback implements TaskClient {
}
@Override
public ResponseEntity<Task> queryDetails(Long taskId) {
public ResponseEntity<Task> queryDetails(Long taskId, String from) {
return null;
}
@ -52,10 +52,9 @@ public class TaskClientFallback implements TaskClient {
}
@Override
public ResponseEntity<Object> list(List<Integer> isForms, Long createBy, Integer isDistribution) {
public ResponseEntity<Object> list(List<Integer> isForms, Long createBy, Integer isDistribution, String from) {
return null;
}
@Override
public ResponseEntity<Map<String, Object>> findRedisTask(Long taskId, Integer type) {
return null;

@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
/**
* @author jt
*/
@ -36,7 +38,11 @@ public class ReportCrmController {
public CommonResponse<Object> reportCrmPie(@RequestBody ReportTokerDTO reportTokerDTO) {
return CommonResponse.createBySuccess(reportCrmService.reportCrmPie(reportTokerDTO));
}
@PostMapping("/crm/download")
@ApiOperation("crm统计导出")
public void downloadReportCrm(HttpServletResponse response, @RequestBody ReportTokerDTO reportTokerDTO) {
reportCrmService.downloadReportCrm(response, reportTokerDTO);
}
@PostMapping("/crm/stage")
@ApiOperation("人员跟进情况")
public CommonResponse<Object> reportClueStage(@RequestBody ReportStageAndTurnoverDto reportStageAndTurnoverDto) {

@ -1,5 +1,6 @@
package com.baiye.module.controller;
import com.baiye.annotation.Inner;
import com.baiye.http.CommonResponse;
import com.baiye.model.dto.HomePageReportDTO;
import com.baiye.model.dto.ReportStageAndTurnoverDto;

@ -23,7 +23,7 @@ public class TurnoverRecordController {
@ApiOperation("新增记录")
@PostMapping("/save")
public CommonResponse<Object> save(TurnoverRecord turnoverRecord) {
public CommonResponse<Object> save(@RequestBody TurnoverRecord turnoverRecord) {
turnoverRecordService.save(turnoverRecord);
return CommonResponse.createBySuccess();
}
@ -35,6 +35,13 @@ public class TurnoverRecordController {
return CommonResponse.createBySuccess();
}
@ApiOperation("修改记录")
@PostMapping("/update")
public CommonResponse<Object> update(@RequestBody TurnoverRecord turnoverRecord) {
turnoverRecordService.update(turnoverRecord);
return CommonResponse.createBySuccess();
}
@ApiOperation("查询记录")
@GetMapping("/query")
public CommonResponse<Object> query(@RequestParam(value = "clueId") Long clueId) {

@ -1,6 +1,7 @@
package com.baiye.module.entity;
import com.baiye.valid.AddGroup;
import com.baiye.valid.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -26,6 +27,7 @@ public class TurnoverRecord implements Serializable {
@ApiModelProperty(value = "跟进记录表主键ID")
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@NotNull(message = "记录id",groups = {UpdateGroup.class})
private Long id;
@ApiModelProperty(value = "线索id")
@ -45,36 +47,32 @@ public class TurnoverRecord implements Serializable {
@ApiModelProperty(value = "实付金额")
@Column(name = "actual_amount")
@NotNull(message = "实付金额不能为空", groups = {AddGroup.class})
@NotNull(message = "实付金额不能为空",groups = {UpdateGroup.class})
private Double actualAmount;
@ApiModelProperty(value = "实付日期")
@Column(name = "actual_time")
@NotNull(message = "实付时间不能为空", groups = {AddGroup.class})
private Date actualTime;
@ApiModelProperty(value = "款期备注")
@ApiModelProperty(value = "款期")
@Column(name = "turnover_info")
@NotNull(message = "款期备注不能为空", groups = {AddGroup.class})
@NotNull(message = "款期不能为空", groups = {AddGroup.class})
private String turnoverInfo;
@ApiModelProperty(value = "收款记录状态 0-预收款 ,1-收款中(预付期当天),2-逾期 3-已收款")
@ApiModelProperty(value = "收款记录状态 0-预收款 ,1-收款中(预付期当天),2-逾期 ,3-已收款")
@Column(name = "turnover_status")
private Integer turnoverStatus;
@ApiModelProperty(value = "跟进人名称")
@Column(name = "member_name")
@NotNull(message = "跟进人名不能为空", groups = {AddGroup.class})
private String memberName;
@ApiModelProperty(value = "跟进人id")
@Column(name = "member_id")
@NotNull(message = "跟进人id", groups = {AddGroup.class})
private Long memberId;
@ApiModelProperty(value = "管理员id")
@Column(name = "user_id")
@NotNull(message = "管理员id", groups = {AddGroup.class})
private Long userId;
@ApiModelProperty(value = "创建时间")

@ -0,0 +1,35 @@
package com.baiye.module.entity.dto;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
/**
* @author jt
*/
@Data
public class UploadCrmDTO {
@ExcelProperty(value = "任务", index = 0)
private String taskName;
@ExcelProperty(value = "开始时间", index = 1)
private String beginTime;
@ExcelProperty(value = "结束时间", index = 2)
private String endTime;
@ExcelProperty(value = "新线索", index = 3)
private Integer newClue;
@ExcelProperty(value = "待再次沟通", index = 4)
private Integer communicat;
@ExcelProperty(value = "有效", index = 5)
private Integer efficient;
@ExcelProperty(value = "已加微信", index = 6)
private Integer addWechat;
@ExcelProperty(value = "高意向", index = 7)
private Integer intention;
@ExcelProperty(value = "邀约中", index = 8)
private Integer inviting;
@ExcelProperty(value = "到场", index = 9)
private Integer interview;
@ExcelProperty(value = "已成交", index = 10)
private Integer deal;
@ExcelProperty(value = "无意向", index = 11)
private Integer noIntention;
}

@ -9,18 +9,16 @@ import lombok.Data;
@Data
public class UploadTokerDTO {
@ExcelProperty(value = "时间", index = 0)
private String createTime;
@ExcelProperty(value = "任务", index = 1)
@ExcelProperty(value = "任务", index = 0)
private String taskName;
@ExcelProperty(value = "业务员", index = 2)
private String userName;
@ExcelProperty(value = "开始时间", index = 1)
private String beginTime;
@ExcelProperty(value = "结束时间", index = 2)
private String endTime;
@ExcelProperty(value = "有意向", index = 3)
private Integer intention;
@ExcelProperty(value = "无意向", index = 4)
private Integer notIntention;
@ExcelProperty(value = "待再沟通", index = 5)
private Integer notTurnOn;
}

@ -4,6 +4,7 @@ import com.baiye.http.CommonResponse;
import com.baiye.model.dto.ReportStageAndTurnoverDto;
import com.baiye.module.entity.dto.ReportTokerDTO;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
@ -20,6 +21,7 @@ public interface ReportCrmService {
*/
CommonResponse<Object> reportClueStageAndTurnover(ReportStageAndTurnoverDto reportStageAndTurnoverDto);
List<Map<String,Object>> reportCrmTurnover(ReportTokerDTO reportTokerDTO);
List<Map<String, Object>> reportCrmTurnover(ReportTokerDTO reportTokerDTO);
void downloadReportCrm(HttpServletResponse response, ReportTokerDTO reportTokerDTO);
}

@ -22,6 +22,12 @@ public interface TurnoverRecordService {
*/
void delete(Long id);
/**
*
*
* @param turnoverRecord
*/
void update(TurnoverRecord turnoverRecord);
/**
*

@ -237,7 +237,7 @@ public class ClueServiceImpl implements ClueService {
// 列表中查询标签信息 和 axb请求字段
for (ClueDto clueDto : clueDtoList) {
String value = (String) redisUtils.get(KeyFieldConstants.TASK_NAME_KEY + clueDto.getTaskId());
if (StringUtils.isEmpty(value) || value.equals("null")) {
if (StringUtils.isEmpty(value) || "null".equals(value)) {
ResponseEntity<Map<String, Object>> response = taskClient.findRedisTask(clueDto.getTaskId(), 0);
if (response.getStatusCode().value() != 200) {
throw new BadRequestException("查询错误");
@ -276,7 +276,7 @@ public class ClueServiceImpl implements ClueService {
if (memberId != null && userNickNameMap.containsKey(memberId)) {
clueDto.setDistributeUserName(userNickNameMap.get(memberId));
}
ResponseEntity<Map<String, List<String>>> response = taskClient.findTaskLabel(clueDto.getTaskId(), clueDto.getOrganizeId(),clueQueryCriteria.getMemberId());
ResponseEntity<Map<String, List<String>>> response = taskClient.findTaskLabel(clueDto.getTaskId(), clueDto.getOrganizeId(), clueQueryCriteria.getMemberId());
if (response.getStatusCode().value() != 200) {
throw new BadRequestException("查询出错");
}
@ -307,7 +307,7 @@ public class ClueServiceImpl implements ClueService {
if (clueRecordCriteria.getCreateBy() != null) {
Sort sort = Sort.by(Sort.Direction.ASC, "createTime");
List<ClueRecordDto> clueRecordDtos = clueRecordMapper.toDto(clueRecordRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, clueRecordCriteria, criteriaBuilder), sort));
ExportExcelUtil.downloadEasyExcel(response, ClueRecordDto.class, clueRecordDtos);
ExportExcelUtil.downloadEasyExcel(response, ClueRecordDto.class, clueRecordDtos, "export-Record");
}
}
@ -315,7 +315,7 @@ public class ClueServiceImpl implements ClueService {
public void exportClueList(HttpServletResponse response, ClueQueryCriteria clueQueryCriteria) {
if (clueQueryCriteria.getMemberId() != null) {
List<ClueDto> clueDtoList = clueJpa.getClueList(clueQueryCriteria, null);
ExportExcelUtil.downloadEasyExcel(response, ExcelClueDto.class, clueDtoList);
ExportExcelUtil.downloadEasyExcel(response, ExcelClueDto.class, clueDtoList, "export-clue");
}
}
@ -368,10 +368,10 @@ public class ClueServiceImpl implements ClueService {
}
}
//修改微信字段
if (StringUtils.isNotEmpty(clueMiddle.getWx())){
if (StringUtils.isNotEmpty(clueMiddle.getWx())) {
clue.setWx(clueMiddle.getWx());
}
if (StringUtils.isNotEmpty(clueMiddle.getAddress())){
if (StringUtils.isNotEmpty(clueMiddle.getAddress())) {
clue.setAddress(clueMiddle.getAddress());
}
if (clueMiddle.getClueCallStatus() != null) {
@ -424,7 +424,7 @@ public class ClueServiceImpl implements ClueService {
OceanEngineClueId oceanEngineClue = oceanEngineClueIdRepository.findOceanEngineClueIdByLocalClueId(clueId);
String oceanEngineClueId = oceanEngineClue.getOceanEngineClueId();
Long userId = oceanEngineClue.getUserId();
OceanEngineToken oceanEngineToken = oceanEngineClient.queryByUserIdAndStatus(userId, 1).getBody();
OceanEngineToken oceanEngineToken = oceanEngineClient.queryByUserIdAndStatus(userId, 1, SecurityConstants.FROM_IN).getBody();
if (ObjectUtil.isNotEmpty(oceanEngineToken)) {
Boolean aBoolean = ReqOceanEngineApi.callbackOceanEngineClue(oceanEngineClueId, stage, oceanEngineToken.getAccessToken(), oceanEngineToken.getAdvertiserIds());
if (aBoolean) {
@ -586,6 +586,9 @@ public class ClueServiceImpl implements ClueService {
}
Set<Long> taskIds = findTaskId(taskQueryCriteria);
clueQueryCriteria.setTaskIds(taskIds);
if (clueQueryCriteria.getClueType() == null) {
clueQueryCriteria.setClueTypes(Arrays.asList(ClueTypeConstants.CLUE_POOL));
}
return findClueList(clueQueryCriteria, pageable);
} else {
log.info("========================用户id为空============================");
@ -648,6 +651,9 @@ public class ClueServiceImpl implements ClueService {
taskIds = findTaskId(taskQueryCriteria);
}
clueQueryCriteria.setTaskIds(taskIds);
if (clueQueryCriteria.getClueType() == null) {
clueQueryCriteria.setClueTypes(Arrays.asList(ClueTypeConstants.SCREEN_TYPE));
}
return findClueList(clueQueryCriteria, pageable);
}
@ -970,10 +976,6 @@ public class ClueServiceImpl implements ClueService {
return PageUtil.toPage(DefaultNumberConstants.ZERO_NUMBER, DefaultNumberConstants.ZERO_NUMBER);
}
clueQueryCriteria.setIsAdmin(true);
if (clueQueryCriteria.getClueType() == null) {
//4 dmp 5拓客 是特殊的任务,单独处理
clueQueryCriteria.setClueTypes(Arrays.asList(ClueTypeConstants.SCREEN_TYPE));
}
List<ClueDto> clueList = this.findClue(clueQueryCriteria, pageable);
Long count = this.findClueCount(clueQueryCriteria);
Set<Long> memberIds = clueList.stream().map(ClueDto::getMemberId).collect(Collectors.toSet());
@ -1007,9 +1009,9 @@ public class ClueServiceImpl implements ClueService {
private String findTaskName(Long taskId) {
String taskNameKey = KeyFieldConstants.TASK_NAME_KEY + taskId;
String str = (String) redisUtils.get(taskNameKey);
if (StringUtils.isEmpty(str) || str.equals("null") ) {
ResponseEntity<Task> response = taskClient.queryDetails(taskId);
if (response.getStatusCode().value() != 200){
if (StringUtils.isEmpty(str) || "null".equals(str)) {
ResponseEntity<Task> response = taskClient.queryDetails(taskId, SecurityConstants.FROM_IN);
if (response.getStatusCode().value() != 200) {
throw new BadRequestException("查询错误");
}
return Objects.requireNonNull(response.getBody()).getTaskName();

@ -12,6 +12,7 @@ import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baiye.constant.ClueTypeConstants;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.constant.SecurityConstants;
import com.baiye.enums.ClueStageEnum;
import com.baiye.exception.BadRequestException;
import com.baiye.feign.OrganizeClient;
@ -25,12 +26,16 @@ import com.baiye.module.entity.ClueMiddle;
import com.baiye.module.entity.Task;
import com.baiye.module.entity.TurnoverRecord;
import com.baiye.module.entity.dto.ReportTokerDTO;
import com.baiye.module.entity.dto.UploadCrmDTO;
import com.baiye.module.entity.dto.UploadTokerDTO;
import com.baiye.module.service.ReportCrmService;
import com.baiye.util.ExportExcelUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
import java.util.stream.Collectors;
@ -195,6 +200,44 @@ public class ReportCrmServiceImpl implements ReportCrmService {
return list;
}
@Override
public void downloadReportCrm(HttpServletResponse response, ReportTokerDTO reportTokerDTO) {
dealTime(reportTokerDTO, DefaultNumberConstants.ONE_NUMBER);
//如果任务id为空 ,默认查询5个任务
if (CollUtil.isEmpty(reportTokerDTO.getTaskIds())) {
List<Long> taskIds = getTaskIds(reportTokerDTO.getMemberId(), DefaultNumberConstants.THREE_NUMBER);
reportTokerDTO.setTaskIds(taskIds);
}
List<ClueMiddle> clueMiddles = clueMiddleRepository.reportClueByTaskIdAndStage(reportTokerDTO.getTaskIds(), reportTokerDTO.getBeginTime(), reportTokerDTO.getEndTime(), null);
List<UploadCrmDTO> list = new ArrayList<>();
if (CollUtil.isEmpty(clueMiddles)) {
throw new BadRequestException("无数据导出");
}
HashMap<Long, List<ClueMiddle>> map = new HashMap<>(clueMiddles.stream().collect(Collectors.groupingBy(ClueMiddle::getTaskId, Collectors.toList())));
for (Long taskId : reportTokerDTO.getTaskIds()) {
List<ClueMiddle> clueMiddles1 = map.get(taskId);
if (CollUtil.isEmpty(clueMiddles1)) {
break;
}
HashMap<String, Object> reportMap = getReportMap(clueMiddles1);
UploadCrmDTO uploadCrmDTO = new UploadCrmDTO();
uploadCrmDTO.setTaskName(findByTaskId(taskId));
uploadCrmDTO.setBeginTime(reportTokerDTO.getBeginTime());
uploadCrmDTO.setEndTime(reportTokerDTO.getEndTime());
uploadCrmDTO.setNewClue((int) reportMap.get("newClue"));
uploadCrmDTO.setCommunicat((int) reportMap.get("communicat"));
uploadCrmDTO.setIntention((int) reportMap.get("intention"));
uploadCrmDTO.setAddWechat((int) reportMap.get("addWechat"));
uploadCrmDTO.setNoIntention((int) reportMap.get("noIntention"));
uploadCrmDTO.setInviting((int) reportMap.get("inviting"));
uploadCrmDTO.setInterview((int) reportMap.get("interview"));
uploadCrmDTO.setDeal((int) reportMap.get("deal"));
uploadCrmDTO.setEfficient((int) reportMap.get("efficient"));
list.add(uploadCrmDTO);
}
ExportExcelUtil.downloadEasyExcel(response, UploadCrmDTO.class, list, "crm-task");
}
private List<HashMap<String, Object>> getOrganizeInfo(String startTime, String endTime, List<Long> organizeIds) {
//通过组id查询组员
Map<Long, Map<String, Object>> memberIdByOrganizeIds = organizeClient.findMemberIdByOrganizeIds(organizeIds);
@ -320,28 +363,6 @@ public class ReportCrmServiceImpl implements ReportCrmService {
return hashMap;
}
private List<Map<String, Object>> getTimeMap(String startTime, String endTime, List<ClueMiddle> clueMiddles) {
Date start = DateUtil.parseDate(startTime);
Date end = DateUtil.parseDate(endTime);
int between = (int) DateUtil.between(start, end, DateUnit.DAY);
List<Map<String, Object>> list = new ArrayList<>();
for (int i = 0; i <= between; i++) {
Date date = DateUtil.offsetDay(start, i);
double turnoverAmount = 0;
for (ClueMiddle clueMiddle : clueMiddles) {
Date clueStageTime = clueMiddle.getClueStageTime();
if (clueStageTime != null && clueMiddle.getTurnoverAmount() != null && Objects.equals(DateUtil.formatDate(date), DateUtil.formatDate(clueStageTime))) {
turnoverAmount += clueMiddle.getTurnoverAmount();
}
}
Map<String, Object> map = new HashMap<>(2);
map.put("time", DateUtil.formatDate(date));
map.put("turnoverAmount", turnoverAmount);
list.add(map);
}
return list;
}
/**
*
*/
@ -369,7 +390,10 @@ public class ReportCrmServiceImpl implements ReportCrmService {
* 5id
*/
private List<Long> getTaskIds(Long userId, Integer num) {
Object taskInfos = taskClient.list(Arrays.asList(ClueTypeConstants.SCREEN_TYPE), userId, DefaultNumberConstants.ONE_NUMBER).getBody();
if (userId == null) {
throw new BadRequestException("参数异常,缺失用户id");
}
Object taskInfos = taskClient.list(Arrays.asList(ClueTypeConstants.SCREEN_TYPE), userId, DefaultNumberConstants.ONE_NUMBER, SecurityConstants.FROM_IN).getBody();
List<Long> taskSet = new ArrayList<>();
JSONArray taskList = JSONUtil.parseArray(taskInfos);
if (CollUtil.isNotEmpty(taskList)) {
@ -386,7 +410,7 @@ public class ReportCrmServiceImpl implements ReportCrmService {
@Cacheable(value = "taskName", key = "'task:name:' + #p0")
public String findByTaskId(Long taskId) {
Task body = taskClient.queryDetails(taskId).getBody();
Task body = taskClient.queryDetails(taskId, SecurityConstants.FROM_IN).getBody();
if (body != null) {
return body.getTaskName();
}

@ -12,7 +12,9 @@ import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baiye.constant.ClueTypeConstants;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.constant.SecurityConstants;
import com.baiye.constant.SourceLabelConstants;
import com.baiye.exception.BadRequestException;
import com.baiye.feign.OrganizeClient;
import com.baiye.feign.TaskClient;
import com.baiye.feign.UserClient;
@ -27,8 +29,10 @@ import com.baiye.module.entity.ClueTalk;
import com.baiye.module.entity.ReportToker;
import com.baiye.module.entity.Task;
import com.baiye.module.entity.dto.ReportTokerDTO;
import com.baiye.module.entity.dto.UploadTokerDTO;
import com.baiye.module.service.ReportTokerService;
import com.baiye.task.ReportSync;
import com.baiye.util.ExportExcelUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.annotation.Cacheable;
@ -163,25 +167,42 @@ public class ReportTokerServiceImpl implements ReportTokerService {
@Override
public void downloadReportToker(HttpServletResponse response, ReportTokerDTO reportTokerDTO) {
// dealTime(reportTokerDTO);
// if (reportTokerDTO.getTaskId() == null) {
// throw new BadRequestException("请选择任务");
// }
// List<ReportToker> reportTokers = reportTokerRepository.queryAllByTimeAndTaskId(reportTokerDTO.getBeginTime(), reportTokerDTO.getEndTime(), reportTokerDTO.getTaskId(), null);
// List<ReportToker> todayData = getTodayData(reportTokerDTO.getEndTime(), reportTokerDTO.getTaskIds(), null);
// reportTokers.addAll(todayData);
// List<UploadTokerDTO> list = new ArrayList<>();
// for (ReportToker reportToker : reportTokers) {
// UploadTokerDTO uploadTokerDTO = new UploadTokerDTO();
// uploadTokerDTO.setIntention(reportToker.getIntention());
// uploadTokerDTO.setNotIntention(reportToker.getNotIntention());
// uploadTokerDTO.setNotTurnOn(reportToker.getNotTurnOn());
// uploadTokerDTO.setCreateTime(DateUtil.format(reportToker.getCreateTime(), "yyyy-MM-dd"));
// uploadTokerDTO.setTaskName(findByTaskId(reportToker.getTaskId()));
// uploadTokerDTO.setUserName(reportToker.getMemberName());
// list.add(uploadTokerDTO);
// }
// ExportExcelUtil.downloadEasyExcel(response, UploadTokerDTO.class, list);
dealTime(reportTokerDTO, DefaultNumberConstants.ONE_NUMBER);
if (CollUtil.isEmpty(reportTokerDTO.getTaskIds())) {
List<Long> taskIds = getTaskIds(reportTokerDTO.getMemberId(), DefaultNumberConstants.FIVE_NUMBER);
reportTokerDTO.setTaskIds(taskIds);
}
List<ReportToker> tokers = reportTokerRepository.queryAllByTimeAndTaskIds(reportTokerDTO.getBeginTime(), reportTokerDTO.getEndTime(), reportTokerDTO.getTaskIds());
List<ReportToker> todayData = getTodayData(reportTokerDTO.getEndTime(), reportTokerDTO.getTaskIds(), null);
tokers.addAll(todayData);
if (CollUtil.isEmpty(tokers)) {
throw new BadRequestException("无数据导出");
}
List<UploadTokerDTO> list = new ArrayList<>();
Map<Long, List<ReportToker>> tokerByTaskId = tokers.stream().collect(Collectors.groupingBy(ReportToker::getTaskId, Collectors.toList()));
for (Long taskId : tokerByTaskId.keySet()) {
List<ReportToker> tokerByTaskIdList = tokerByTaskId.get(taskId);
if (CollUtil.isEmpty(tokerByTaskIdList)) {
break;
}
int intention = 0;
int notIntention = 0;
int notTurnOn = 0;
for (ReportToker reportToker : tokerByTaskIdList) {
intention += reportToker.getIntention();
notIntention += reportToker.getNotIntention();
notTurnOn += reportToker.getNotTurnOn();
}
UploadTokerDTO uploadTokerDTO = new UploadTokerDTO();
uploadTokerDTO.setIntention(intention);
uploadTokerDTO.setNotIntention(notIntention);
uploadTokerDTO.setNotTurnOn(notTurnOn);
uploadTokerDTO.setBeginTime(reportTokerDTO.getBeginTime());
uploadTokerDTO.setEndTime(reportTokerDTO.getEndTime());
uploadTokerDTO.setTaskName(findByTaskId(taskId));
list.add(uploadTokerDTO);
}
ExportExcelUtil.downloadEasyExcel(response, UploadTokerDTO.class, list, "talk-task");
}
@Override
@ -328,7 +349,7 @@ public class ReportTokerServiceImpl implements ReportTokerService {
@Cacheable(value = "taskName", key = "'task:name:' + #p0")
public String findByTaskId(Long taskId) {
Task body = taskClient.queryDetails(taskId).getBody();
Task body = taskClient.queryDetails(taskId, SecurityConstants.FROM_IN).getBody();
if (body != null) {
return body.getTaskName();
}
@ -479,7 +500,10 @@ public class ReportTokerServiceImpl implements ReportTokerService {
* 5id
*/
private List<Long> getTaskIds(Long userId, Integer num) {
Object taskInfos = taskClient.list(Arrays.asList(ClueTypeConstants.TOKER_TYPE), userId, DefaultNumberConstants.ONE_NUMBER).getBody();
if (userId == null) {
throw new BadRequestException("参数异常,缺失用户id");
}
Object taskInfos = taskClient.list(Arrays.asList(ClueTypeConstants.TOKER_TYPE), userId, DefaultNumberConstants.ONE_NUMBER, SecurityConstants.FROM_IN).getBody();
List<Long> taskSet = new ArrayList<>();
JSONArray taskList = JSONUtil.parseArray(taskInfos);
if (CollUtil.isNotEmpty(taskList)) {

@ -1,11 +1,20 @@
package com.baiye.module.service.impl;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.json.JSONUtil;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.model.dto.UserDto;
import com.baiye.module.dao.ClueMiddleRepository;
import com.baiye.module.dao.TurnoverRecordRepository;
import com.baiye.module.entity.ClueMiddle;
import com.baiye.module.entity.TurnoverRecord;
import com.baiye.module.service.TurnoverRecordService;
import com.baiye.util.SecurityUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/**
@ -16,9 +25,15 @@ import java.util.List;
public class TurnoverRecordServiceImpl implements TurnoverRecordService {
private final TurnoverRecordRepository turnoverRecordRepository;
private final ClueMiddleRepository clueMiddleRepository;
@Override
public void save(TurnoverRecord turnoverRecord) {
UserDto userDto = JSONUtil.toBean(SecurityUtils.getUser(), UserDto.class);
turnoverRecord.setMemberId(userDto.getId());
turnoverRecord.setMemberName(userDto.getUsername());
turnoverRecord.setUserId(userDto.getWhichUserId());
turnoverRecord.setTurnoverStatus(DefaultNumberConstants.ZERO_NUMBER);
turnoverRecordRepository.save(turnoverRecord);
}
@ -27,6 +42,30 @@ public class TurnoverRecordServiceImpl implements TurnoverRecordService {
turnoverRecordRepository.deleteById(id);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(TurnoverRecord turnoverRecord) {
TurnoverRecord turnoverRecord1 = turnoverRecordRepository.findById(turnoverRecord.getId()).orElseGet(TurnoverRecord::new);
if (turnoverRecord.getActualAmount() != null) {
//如果小于预设金额,只收款部分,状态变为收款中
if (turnoverRecord.getActualAmount() < turnoverRecord1.getTurnoverAmount()) {
turnoverRecord1.setTurnoverStatus(DefaultNumberConstants.ONE_NUMBER);
} else {
turnoverRecord1.setTurnoverStatus(DefaultNumberConstants.THREE_NUMBER);
}
turnoverRecord1.setActualAmount(turnoverRecord.getActualAmount());
turnoverRecord1.setActualTime(new Date());
turnoverRecordRepository.save(turnoverRecord1);
//同步到线索金额
Long clueId = turnoverRecord1.getClueId();
ClueMiddle clueMiddle = clueMiddleRepository.findById(clueId).orElseGet(ClueMiddle::new);
Double turnoverAmount = clueMiddle.getTurnoverAmount();
double add = NumberUtil.add(turnoverAmount, turnoverRecord.getActualAmount());
clueMiddle.setTurnoverAmount(add);
clueMiddleRepository.save(clueMiddle);
}
}
@Override
public List<TurnoverRecord> query(Long clueId) {
return turnoverRecordRepository.findByClueId(clueId);

@ -2,19 +2,19 @@ package com.baiye.task;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.excel.EasyExcelFactory;
import com.baiye.constant.FileConstant;
import com.baiye.exception.BadRequestException;
import com.baiye.feign.TaskClient;
import com.baiye.model.dto.ClueDto;
import com.baiye.model.dto.ClueQueryCriteria;
import com.baiye.constant.FileConstant;
import com.baiye.module.dao.*;
import com.baiye.module.entity.Clue;
import com.baiye.module.entity.ClueRecord;
import com.baiye.module.entity.Task;
import com.baiye.module.listener.TokerListener;
import com.baiye.module.listener.dto.*;
import com.baiye.module.listener.DynamicTaskListener;
import com.baiye.module.listener.TokerListener;
import com.baiye.module.listener.ZdyListener;
import com.baiye.module.listener.dto.BaseExcelListenerDto;
import com.baiye.module.listener.dto.DynamicTaskListenerDto;
import com.baiye.module.listener.dto.TokerListenerDto;
import com.baiye.module.listener.dto.ZdyListenerDto;
import com.baiye.module.service.ClueService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
@ -25,8 +25,8 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.FileInputStream;
import java.util.*;
import java.util.stream.Collectors;
import java.util.List;
@Component
@Slf4j
@ -35,14 +35,10 @@ public class FileAnalysisTask {
@Resource
private ClueService clueService;
@Resource
private ClueJpa clueJpa;
@Resource
private ClueRepository clueRepository;
private TaskClient taskClient;
@Resource
private ClueMiddleRepository clueMiddleRepository;
@Resource
private TaskClient taskClient;
@Resource
private ClueRecordRepository clueRecordRepository;
@Resource
private ClueTalkRepository clueTalkRepository;
@ -109,7 +105,7 @@ public class FileAnalysisTask {
task.setIsDistribution(1);
taskClient.updateTask(task);
// 查看此任务是否开启自动分配,开启了就分配掉
clueService.dynamicTaskDistribution(taskId,uploadType);
clueService.dynamicTaskDistribution(taskId, uploadType);
return;
}
//创建任务

@ -6,6 +6,7 @@ import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.constant.SecurityConstants;
import com.baiye.feign.OceanEngineClient;
import com.baiye.feign.TaskClient;
import com.baiye.model.dto.TaskQueryCriteria;
@ -45,7 +46,7 @@ public class OceanEngineSync {
@Scheduled(cron = "0 0/15 * * * ?")
public void getFeiYuSource() {
List<OceanEngineToken> oceanEngineTokens = oceanEngineClient.queryByStatus(1).getBody();
List<OceanEngineToken> oceanEngineTokens = oceanEngineClient.queryByStatus(1, SecurityConstants.FROM_IN).getBody();
if (CollUtil.isEmpty(oceanEngineTokens)) {
return;
}

@ -16,9 +16,9 @@ public class ExportExcelUtil {
* excel
*/
@SneakyThrows //处理异常try
public static void downloadEasyExcel(HttpServletResponse response, Object obj, List list){
public static void downloadEasyExcel(HttpServletResponse response, Object obj, List list,String name){
// 不要用postman测试会出现乱码
String fileName = URLEncoder.encode("表单", "UTF-8");
String fileName = URLEncoder.encode(name, "UTF-8");
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");

@ -48,6 +48,11 @@ security:
- /operlog
- /logininfor
- /oauth/check_token
- /open/v1/form/add
- /source/report/toker/pie
- /source/report/toker/download
- /source/report/crm/download
- /source/turnoverRecord/save
#hutool雪花算法
snowflake:

Loading…
Cancel
Save