成交金额

master
wujingtao 2 years ago
parent d5ac175898
commit 8e4cd5a2b5

@ -8,10 +8,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
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; import javax.servlet.http.HttpServletResponse;
@ -38,11 +35,13 @@ public class ReportCrmController {
public CommonResponse<Object> reportCrmPie(@RequestBody ReportTokerDTO reportTokerDTO) { public CommonResponse<Object> reportCrmPie(@RequestBody ReportTokerDTO reportTokerDTO) {
return CommonResponse.createBySuccess(reportCrmService.reportCrmPie(reportTokerDTO)); return CommonResponse.createBySuccess(reportCrmService.reportCrmPie(reportTokerDTO));
} }
@PostMapping("/crm/download") @PostMapping("/crm/download")
@ApiOperation("crm统计导出") @ApiOperation("crm统计导出")
public void downloadReportCrm(HttpServletResponse response, @RequestBody ReportTokerDTO reportTokerDTO) { public void downloadReportCrm(HttpServletResponse response, @RequestBody ReportTokerDTO reportTokerDTO) {
reportCrmService.downloadReportCrm(response, reportTokerDTO); reportCrmService.downloadReportCrm(response, reportTokerDTO);
} }
@PostMapping("/crm/stage") @PostMapping("/crm/stage")
@ApiOperation("人员跟进情况") @ApiOperation("人员跟进情况")
public CommonResponse<Object> reportClueStage(@RequestBody ReportStageAndTurnoverDto reportStageAndTurnoverDto) { public CommonResponse<Object> reportClueStage(@RequestBody ReportStageAndTurnoverDto reportStageAndTurnoverDto) {
@ -54,4 +53,10 @@ public class ReportCrmController {
public CommonResponse<Object> reportCrmTurnover(@RequestBody ReportTokerDTO reportTokerDTO) { public CommonResponse<Object> reportCrmTurnover(@RequestBody ReportTokerDTO reportTokerDTO) {
return CommonResponse.createBySuccess(reportCrmService.reportCrmTurnover(reportTokerDTO)); return CommonResponse.createBySuccess(reportCrmService.reportCrmTurnover(reportTokerDTO));
} }
@ApiOperation("下载金额记录")
@PostMapping("/turnover/download")
public void downLoadCrmTurnover(HttpServletResponse response, @RequestBody ReportTokerDTO reportTokerDTO) {
reportCrmService.downLoadCrmTurnover(response, reportTokerDTO);
}
} }

@ -35,10 +35,10 @@ public class TurnoverRecordController {
return CommonResponse.createBySuccess(); return CommonResponse.createBySuccess();
} }
@ApiOperation("修改记录") @ApiOperation("确认收款")
@PostMapping("/update") @GetMapping("/update")
public CommonResponse<Object> update(@RequestBody TurnoverRecord turnoverRecord) { public CommonResponse<Object> update(@RequestParam(value = "id") Long id, @RequestParam(value = "actualAmount") Double actualAmount) {
turnoverRecordService.update(turnoverRecord); turnoverRecordService.update(id, actualAmount);
return CommonResponse.createBySuccess(); return CommonResponse.createBySuccess();
} }
@ -47,4 +47,5 @@ public class TurnoverRecordController {
public CommonResponse<Object> query(@RequestParam(value = "clueId") Long clueId) { public CommonResponse<Object> query(@RequestParam(value = "clueId") Long clueId) {
return CommonResponse.createBySuccess(turnoverRecordService.query(clueId)); return CommonResponse.createBySuccess(turnoverRecordService.query(clueId));
} }
} }

@ -20,9 +20,34 @@ public interface TurnoverRecordRepository extends JpaRepository<TurnoverRecord,
*/ */
List<TurnoverRecord> findByClueId(Long clueId); List<TurnoverRecord> findByClueId(Long clueId);
@Query(value = "select * from tb_clue_turnover_record d where d.actual_time >= ?1 and d.actual_time< ?2 and d.user_id = ?3", nativeQuery = true) /**
*
*
* @param beginTime
* @param endTime
* @param userId
* @return
*/
@Query(value = "select * from tb_clue_turnover_record d where d.actual_time between ?1 and ?2 and d.user_id = ?3", nativeQuery = true)
List<TurnoverRecord> findByUserIdAndTime(String beginTime, String endTime, Long userId); List<TurnoverRecord> findByUserIdAndTime(String beginTime, String endTime, Long userId);
@Query(value = "select * from tb_clue_turnover_record d where d.actual_time >= ?1 and d.actual_time< ?2 and d.member_id = ?3", nativeQuery = true) @Query(value = "select * from tb_clue_turnover_record d where d.actual_time between ?1 and ?2 and d.member_id = ?3", nativeQuery = true)
List<TurnoverRecord> findByMemberIdAndTime(String beginTime, String endTime, Long memberId); List<TurnoverRecord> findByMemberIdAndTime(String beginTime, String endTime, Long memberId);
/**
*
*
* @param beginTime
* @param endTime
* @param userId
* @return
*/
@Query(value = "select * from tb_clue_turnover_record d where d.turnover_time between DATE_FORMAT( ?1, '%Y-%m-%d') and DATE_FORMAT( ?2, '%Y-%m-%d') and d.user_id = ?3", nativeQuery = true)
List<TurnoverRecord> findByUserIdAndTurnoverTime(String beginTime, String endTime, Long userId);
@Query(value = "select * from tb_clue_turnover_record d where d.turnover_time= ?1 and d.turnover_status = ?2", nativeQuery = true)
List<TurnoverRecord> findByAndTurnoverTimeAndStatus(String beninTime, Integer status);
@Query(value = "select * from tb_clue_turnover_record d where d.turnover_time< ?1 and d.turnover_status = ?2", nativeQuery = true)
List<TurnoverRecord> findTimeOutByAndTurnoverTimeAndStatus(String beninTime, Integer status);
} }

@ -0,0 +1,19 @@
package com.baiye.module.entity.dto;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class UploadCrmTurnoverDTO {
@ExcelProperty(value = "人员名称", index = 0)
private String memberName;
@ExcelProperty(value = "开始时间", index = 1)
private String beginTime;
@ExcelProperty(value = "结束时间", index = 2)
private String endTime;
@ExcelProperty(value = "预成交金额", index = 3)
private Double turnoverAmount;
@ExcelProperty(value = "实际成交金额", index = 4)
private Double actualAmount;
}

@ -24,4 +24,6 @@ public interface ReportCrmService {
List<Map<String, Object>> reportCrmTurnover(ReportTokerDTO reportTokerDTO); List<Map<String, Object>> reportCrmTurnover(ReportTokerDTO reportTokerDTO);
void downloadReportCrm(HttpServletResponse response, ReportTokerDTO reportTokerDTO); void downloadReportCrm(HttpServletResponse response, ReportTokerDTO reportTokerDTO);
void downLoadCrmTurnover(HttpServletResponse response, ReportTokerDTO reportTokerDTO);
} }

@ -23,11 +23,11 @@ public interface TurnoverRecordService {
void delete(Long id); void delete(Long id);
/** /**
* *
* * @param id
* @param turnoverRecord * @param actualAmount
*/ */
void update(TurnoverRecord turnoverRecord); void update(Long id, Double actualAmount);
/** /**
* *

@ -27,9 +27,11 @@ import com.baiye.module.entity.Task;
import com.baiye.module.entity.TurnoverRecord; import com.baiye.module.entity.TurnoverRecord;
import com.baiye.module.entity.dto.ReportTokerDTO; import com.baiye.module.entity.dto.ReportTokerDTO;
import com.baiye.module.entity.dto.UploadCrmDTO; import com.baiye.module.entity.dto.UploadCrmDTO;
import com.baiye.module.entity.dto.UploadCrmTurnoverDTO;
import com.baiye.module.entity.dto.UploadTokerDTO; import com.baiye.module.entity.dto.UploadTokerDTO;
import com.baiye.module.service.ReportCrmService; import com.baiye.module.service.ReportCrmService;
import com.baiye.util.ExportExcelUtil; import com.baiye.util.ExportExcelUtil;
import com.baiye.util.SecurityUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
@ -205,7 +207,7 @@ public class ReportCrmServiceImpl implements ReportCrmService {
dealTime(reportTokerDTO, DefaultNumberConstants.ONE_NUMBER); dealTime(reportTokerDTO, DefaultNumberConstants.ONE_NUMBER);
//如果任务id为空 ,默认查询5个任务 //如果任务id为空 ,默认查询5个任务
if (CollUtil.isEmpty(reportTokerDTO.getTaskIds())) { if (CollUtil.isEmpty(reportTokerDTO.getTaskIds())) {
List<Long> taskIds = getTaskIds(reportTokerDTO.getMemberId(), DefaultNumberConstants.THREE_NUMBER); List<Long> taskIds = getTaskIds(SecurityUtils.getCurrentUserId(), DefaultNumberConstants.THREE_NUMBER);
reportTokerDTO.setTaskIds(taskIds); reportTokerDTO.setTaskIds(taskIds);
} }
List<ClueMiddle> clueMiddles = clueMiddleRepository.reportClueByTaskIdAndStage(reportTokerDTO.getTaskIds(), reportTokerDTO.getBeginTime(), reportTokerDTO.getEndTime(), null); List<ClueMiddle> clueMiddles = clueMiddleRepository.reportClueByTaskIdAndStage(reportTokerDTO.getTaskIds(), reportTokerDTO.getBeginTime(), reportTokerDTO.getEndTime(), null);
@ -238,6 +240,37 @@ public class ReportCrmServiceImpl implements ReportCrmService {
ExportExcelUtil.downloadEasyExcel(response, UploadCrmDTO.class, list, "crm-task"); ExportExcelUtil.downloadEasyExcel(response, UploadCrmDTO.class, list, "crm-task");
} }
@Override
public void downLoadCrmTurnover(HttpServletResponse response, ReportTokerDTO reportTokerDTO) {
dealTime(reportTokerDTO, DefaultNumberConstants.ONE_NUMBER);
List<TurnoverRecord> byUserIdAndTime = turnoverRecordRepository.findByUserIdAndTime(reportTokerDTO.getBeginTime(), reportTokerDTO.getEndTime(), SecurityUtils.getCurrentUserId());
if (CollUtil.isEmpty(byUserIdAndTime)) {
throw new BadRequestException("无数据导出");
}
//按人员分组
Map<Long, List<TurnoverRecord>> collect = byUserIdAndTime.stream().collect(Collectors.groupingBy(TurnoverRecord::getMemberId, Collectors.toList()));
List<UploadCrmTurnoverDTO> uploadCrmTurnoverDTOS = new ArrayList<>();
for (Long key : collect.keySet()) {
List<TurnoverRecord> turnoverRecords = collect.get(key);
//人员名称
String memberName = turnoverRecords.get(0).getMemberName();
Double turnoverAmount = 0.00;
Double actualAmount = 0.00;
for (TurnoverRecord turnoverRecord : turnoverRecords) {
NumberUtil.add(turnoverAmount, turnoverRecord.getTurnoverAmount());
NumberUtil.add(actualAmount, turnoverRecord.getActualAmount());
}
UploadCrmTurnoverDTO uploadCrmTurnoverDTO = new UploadCrmTurnoverDTO();
uploadCrmTurnoverDTO.setMemberName(memberName);
uploadCrmTurnoverDTO.setBeginTime(reportTokerDTO.getBeginTime());
uploadCrmTurnoverDTO.setEndTime(reportTokerDTO.getEndTime());
uploadCrmTurnoverDTO.setTurnoverAmount(turnoverAmount);
uploadCrmTurnoverDTO.setActualAmount(actualAmount);
uploadCrmTurnoverDTOS.add(uploadCrmTurnoverDTO);
}
ExportExcelUtil.downloadEasyExcel(response, UploadCrmTurnoverDTO.class, uploadCrmTurnoverDTOS, "crm-turnover");
}
private List<HashMap<String, Object>> getOrganizeInfo(String startTime, String endTime, List<Long> organizeIds) { private List<HashMap<String, Object>> getOrganizeInfo(String startTime, String endTime, List<Long> organizeIds) {
//通过组id查询组员 //通过组id查询组员
Map<Long, Map<String, Object>> memberIdByOrganizeIds = organizeClient.findMemberIdByOrganizeIds(organizeIds); Map<Long, Map<String, Object>> memberIdByOrganizeIds = organizeClient.findMemberIdByOrganizeIds(organizeIds);

@ -33,6 +33,7 @@ import com.baiye.module.entity.dto.UploadTokerDTO;
import com.baiye.module.service.ReportTokerService; import com.baiye.module.service.ReportTokerService;
import com.baiye.task.ReportSync; import com.baiye.task.ReportSync;
import com.baiye.util.ExportExcelUtil; import com.baiye.util.ExportExcelUtil;
import com.baiye.util.SecurityUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
@ -169,7 +170,7 @@ public class ReportTokerServiceImpl implements ReportTokerService {
public void downloadReportToker(HttpServletResponse response, ReportTokerDTO reportTokerDTO) { public void downloadReportToker(HttpServletResponse response, ReportTokerDTO reportTokerDTO) {
dealTime(reportTokerDTO, DefaultNumberConstants.ONE_NUMBER); dealTime(reportTokerDTO, DefaultNumberConstants.ONE_NUMBER);
if (CollUtil.isEmpty(reportTokerDTO.getTaskIds())) { if (CollUtil.isEmpty(reportTokerDTO.getTaskIds())) {
List<Long> taskIds = getTaskIds(reportTokerDTO.getMemberId(), DefaultNumberConstants.FIVE_NUMBER); List<Long> taskIds = getTaskIds(SecurityUtils.getCurrentUserId(), DefaultNumberConstants.FIVE_NUMBER);
reportTokerDTO.setTaskIds(taskIds); reportTokerDTO.setTaskIds(taskIds);
} }
List<ReportToker> tokers = reportTokerRepository.queryAllByTimeAndTaskIds(reportTokerDTO.getBeginTime(), reportTokerDTO.getEndTime(), reportTokerDTO.getTaskIds()); List<ReportToker> tokers = reportTokerRepository.queryAllByTimeAndTaskIds(reportTokerDTO.getBeginTime(), reportTokerDTO.getEndTime(), reportTokerDTO.getTaskIds());

@ -46,26 +46,21 @@ public class TurnoverRecordServiceImpl implements TurnoverRecordService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(TurnoverRecord turnoverRecord) { public void update(Long id, Double actualAmount) {
TurnoverRecord turnoverRecord1 = turnoverRecordRepository.findById(turnoverRecord.getId()).orElseGet(TurnoverRecord::new); TurnoverRecord turnoverRecord1 = turnoverRecordRepository.findById(id).orElseGet(TurnoverRecord::new);
if (turnoverRecord.getActualAmount() != null) { turnoverRecord1.setTurnoverStatus(DefaultNumberConstants.THREE_NUMBER);
//如果小于预设金额,只收款部分,状态变为收款中 turnoverRecord1.setActualAmount(actualAmount);
if (turnoverRecord.getActualAmount() < turnoverRecord1.getTurnoverAmount()) { turnoverRecord1.setActualTime(new Date());
turnoverRecord1.setTurnoverStatus(DefaultNumberConstants.ONE_NUMBER); turnoverRecordRepository.save(turnoverRecord1);
} else {
turnoverRecord1.setTurnoverStatus(DefaultNumberConstants.THREE_NUMBER); //同步到线索金额
} Long clueId = turnoverRecord1.getClueId();
turnoverRecord1.setActualAmount(turnoverRecord.getActualAmount()); ClueMiddle clueMiddle = clueMiddleRepository.findById(clueId).orElseGet(ClueMiddle::new);
turnoverRecord1.setActualTime(new Date()); Double turnoverAmount = clueMiddle.getTurnoverAmount();
turnoverRecordRepository.save(turnoverRecord1); double add = NumberUtil.add(turnoverAmount, turnoverRecord1.getActualAmount());
//同步到线索金额 clueMiddle.setTurnoverAmount(add);
Long clueId = turnoverRecord1.getClueId(); clueMiddleRepository.save(clueMiddle);
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 @Override

@ -0,0 +1,41 @@
package com.baiye.task;
import cn.hutool.core.date.DateUtil;
import com.baiye.module.dao.TurnoverRecordRepository;
import com.baiye.module.entity.TurnoverRecord;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author
*/
@Component
@Slf4j
@RequiredArgsConstructor
public class CrmTurnoverSync {
private final TurnoverRecordRepository turnoverRecordRepository;
/**
* 0
*/
// @Scheduled(cron = "0 0/5 * * * ? ")
@Scheduled(cron = "0 30 0 * * ? ")
public void dealTurnover() {
log.info("-------------------检测成交金额记录-------------");
String today = DateUtil.today();
List<TurnoverRecord> byAndTurnoverTimeAndStatus = turnoverRecordRepository.findByAndTurnoverTimeAndStatus(today, 0);
List<TurnoverRecord> timeOutByAndTurnoverTimeAndStatus = turnoverRecordRepository.findTimeOutByAndTurnoverTimeAndStatus(today, 1);
byAndTurnoverTimeAndStatus.forEach(item -> item.setTurnoverStatus(1));
timeOutByAndTurnoverTimeAndStatus.forEach(item -> item.setTurnoverStatus(2));
byAndTurnoverTimeAndStatus.addAll(timeOutByAndTurnoverTimeAndStatus);
turnoverRecordRepository.saveAll(byAndTurnoverTimeAndStatus);
}
}

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

Loading…
Cancel
Save