资源服务代码提交

master
yqy 3 years ago
parent 2929b619fd
commit 9f20391994

@ -4,6 +4,8 @@ import com.baiye.annotation.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* clue
@ -35,6 +37,9 @@ public class ClueQueryCriteria {
@Query
private Integer memberStatus;
@ApiModelProperty(value = "选取的组员ID")
private List<Long> userIds;
private Integer page;
private Integer size;

@ -21,7 +21,7 @@ import java.util.List;
@Data
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class ClueBase implements Serializable {
public class BaseClue implements Serializable {
private static final long serialVersionUID = -5485885423091953188L;

@ -23,7 +23,7 @@ import java.util.List;
@Setter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class TaskBase implements Serializable {
public class BaseTask implements Serializable {
private static final long serialVersionUID = 8623354712013889005L;

@ -2,10 +2,8 @@ package com.baiye.feign;
import com.baiye.model.dto.ClueQueryCriteria;
import com.baiye.model.dto.DistributeResponseDTO;
import com.baiye.modules.system.domain.Clue;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@ -22,21 +20,17 @@ import java.util.Map;
public interface SourceClueClient {
String API_PREFIX = "/source/clue";
@ApiOperation("任务id查询资源列表")
@ApiOperation("任务id查询资源列表ID")
@GetMapping(API_PREFIX + "/queryList")
ResponseEntity<List<Clue>> queryList(@RequestParam("taskId") Long taskId);
ResponseEntity<List<Long>> queryList(@RequestParam("taskId") Long taskId);
@ApiOperation("批量更新组信息")
@PostMapping(API_PREFIX + "/batchUpdateOrganize")
ResponseEntity<Object> batchUpdateOrganize(@RequestBody DistributeResponseDTO distributeResponseDTO);
@ApiOperation("小组id查询")
@GetMapping(API_PREFIX + "/queryOrganizeIdList")
ResponseEntity<List<Clue>> queryOrganizeIdList(@RequestParam("organizeId") Long organizeId);
@ApiOperation("批量更新组员信息")
@PostMapping(API_PREFIX + "/batchUpdateUserId")
ResponseEntity<Object> batchUpdateUserId(@RequestBody List<Map<Long, List<Long>>> mapList);
@ApiOperation("小组id查询并分配组员资源")
@PostMapping(API_PREFIX + "/queryOrganizeIdList")
void queryOrganizeIdList(@RequestBody ClueQueryCriteria clueQueryCriteria);
@ApiOperation("(多条件)查询资源信息")
@PostMapping(API_PREFIX + "/queryAll")

@ -1,10 +1,7 @@
package com.baiye.feign;
import com.baiye.model.dto.ClueDto;
import com.baiye.model.dto.ClueQueryCriteria;
import com.baiye.model.dto.DistributeResponseDTO;
import com.baiye.modules.system.domain.Clue;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
@ -13,8 +10,9 @@ import java.util.Map;
@Component
public class SourceClueClientFallback implements SourceClueClient {
@Override
public ResponseEntity<List<Clue>> queryList(Long taskId) {
public ResponseEntity<List<Long>> queryList(Long taskId) {
return null;
}
@ -24,13 +22,8 @@ public class SourceClueClientFallback implements SourceClueClient {
}
@Override
public ResponseEntity<List<Clue>> queryOrganizeIdList(Long organizeId) {
return null;
}
public void queryOrganizeIdList(ClueQueryCriteria clueQueryCriteria) {
@Override
public ResponseEntity<Object> batchUpdateUserId(List<Map<Long, List<Long>>> mapList) {
return null;
}
@Override

@ -1,6 +1,6 @@
package com.baiye.modules.system.domain;
import com.baiye.model.entity.ClueBase;
import com.baiye.model.entity.BaseClue;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -18,7 +18,7 @@ import javax.persistence.*;
@Entity
@Table(name = "tb_clue")
@ApiModel(value = "Clue")
public class Clue extends ClueBase {
public class Clue extends BaseClue {
private static final long serialVersionUID = -3141323148265583553L;

@ -1,6 +1,6 @@
package com.baiye.modules.system.domain;
import com.baiye.model.entity.TaskBase;
import com.baiye.model.entity.BaseTask;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -15,7 +15,7 @@ import java.util.List;
@Entity
@Table(name = "tb_task")
@ApiModel(value = "Task")
public class Task extends TaskBase {
public class Task extends BaseTask {
private static final long serialVersionUID = 8403350605300756760L;

@ -3,7 +3,6 @@ package com.baiye.modules.system.rest;
import com.baiye.http.CommonResponse;
import com.baiye.http.ResponseCode;
import com.baiye.model.dto.ClueQueryCriteria;
import com.baiye.modules.system.domain.Organize;
import com.baiye.modules.system.service.dto.OrganizeMemberDistributionDTO;
import com.baiye.modules.system.service.dto.OrganizeSaveDTO;
import com.baiye.modules.system.service.OrganizeService;
@ -41,7 +40,7 @@ public class OrganizeController {
return new ResponseEntity<>(organizeService.queryAll(organizeQueryCriteria),HttpStatus.OK);
}
@ApiOperation("查询组长任务列表")
@ApiOperation("查询组长任务列表")
@GetMapping("/queryLeaderTaskList")
public ResponseEntity<Object> queryLeaderTaskList(OrganizeQueryCriteria organizeQueryCriteria, Pageable pageable){
return new ResponseEntity<>(organizeService.queryLeaderTaskList(organizeQueryCriteria,pageable), HttpStatus.OK);

@ -31,7 +31,7 @@ public interface OrganizeService {
List<OrganizeDto> queryAll(OrganizeQueryCriteria organizeQueryCriteria);
/**
*
*
* @return
*/
HashMap<String, Object> queryLeaderTaskList(OrganizeQueryCriteria organizeQueryCriteria, Pageable pageable);

@ -18,7 +18,6 @@ import com.baiye.modules.system.service.UserService;
import com.baiye.modules.system.service.dto.*;
import com.baiye.modules.system.service.mapstruct.OrganizeMapper;
import com.baiye.modules.system.service.mapstruct.OrganizeUserMapper;
import com.baiye.util.AverageDataUtil;
import com.baiye.util.QueryHelp;
import com.baiye.util.SecurityUtils;
import lombok.RequiredArgsConstructor;
@ -61,7 +60,7 @@ public class OrganizeServiceImpl implements OrganizeService {
Long userId = SecurityUtils.getCurrentUserId();
List<Organize> organizeList = organizeSaveDTO.getOrganizeList();
List<Long> deptIds = new ArrayList<>();
List<Long> resourceList = new ArrayList<>();
List<Long> clueList = new ArrayList<>();
List<Double> weights = new ArrayList<>();
for (Organize organize : organizeList) {
organize.setTaskId(organizeSaveDTO.getTaskId());
@ -76,10 +75,7 @@ public class OrganizeServiceImpl implements OrganizeService {
organizeUser.setCreateBy(saveOrganize.getCreateBy());
organizeUserRepository.save(organizeUser);
deptIds.add(saveOrganize.getId());
List<Clue> clueList = sourceClueClient.queryList(organizeSaveDTO.getTaskId()).getBody();
for (Clue clue : clueList) {
resourceList.add(clue.getId());
}
clueList = sourceClueClient.queryList(organizeSaveDTO.getTaskId()).getBody();
//任务状态更新
taskRepository.updateIsDistribution(1, organizeSaveDTO.getTaskId());
weights.add(saveOrganize.getRatio());
@ -87,7 +83,7 @@ public class OrganizeServiceImpl implements OrganizeService {
//总管理员给小组分配任务
DistributeDTO distributeDTO = new DistributeDTO();
distributeDTO.setDeptIds(deptIds);
distributeDTO.setResourceList(resourceList);
distributeDTO.setResourceList(clueList);
distributeDTO.setWeights(weights);
List<DistributeResponseDTO> data = assignDataClient.dataDistribution(distributeDTO).getData();
//线索更新
@ -109,14 +105,11 @@ public class OrganizeServiceImpl implements OrganizeService {
labelService.create(label);
}
}
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);
}
/**
*
* @param organizeQueryCriteria
* @return
*/
@Override
public List<OrganizeDto> queryAll(OrganizeQueryCriteria organizeQueryCriteria) {
@ -133,7 +126,7 @@ public class OrganizeServiceImpl implements OrganizeService {
}
/**
*
*
*/
@Override
public HashMap<String, Object> queryLeaderTaskList(OrganizeQueryCriteria organizeQueryCriteria, Pageable pageable) {
@ -141,7 +134,6 @@ public class OrganizeServiceImpl implements OrganizeService {
HashMap<String, Object> hashMap = new HashMap<>();
List<List<OrganizeDto>> organizeDtoList = new ArrayList<>();
Long userId = SecurityUtils.getCurrentUserId();
// Long userId = 5L;
OrganizeUserQueryCriteria organizeUserQueryCriteria = new OrganizeUserQueryCriteria();
organizeUserQueryCriteria.setUserId(userId);
Page<OrganizeUser> organizeUserRepositoryAll = organizeUserRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, organizeUserQueryCriteria, criteriaBuilder), pageable);
@ -189,16 +181,12 @@ public class OrganizeServiceImpl implements OrganizeService {
organizeUser.setOrganizeId(organizeId);
organizeUserRepository.save(organizeUser);
}
List<Long> clueIds = new ArrayList<>();
List<Clue> clueList = sourceClueClient.queryOrganizeIdList(organizeId).getBody();
for (Clue clue : clueList) {
clueIds.add(clue.getId());
}
//小组内资源分配
//Map<Long, List<Long>> 用户id -> 资源ID集合
List<Map<Long, List<Long>>> maps = AverageDataUtil.averageData(clueIds, userIds);
// TODO 修改资源标签 转为json JSONUtil.toJsonStr(organizeMemberDistributionDTO.getSourceLabel());
sourceClueClient.batchUpdateUserId(maps);
//分配组员资源
ClueQueryCriteria clueQueryCriteria = new ClueQueryCriteria();
clueQueryCriteria.setOrganizeId(organizeId);
clueQueryCriteria.setUserIds(userIds);
//调用资源服务
sourceClueClient.queryOrganizeIdList(clueQueryCriteria);
//更新小组任务信息
Organize updateOrganize = organizeRepository.findById(organizeMemberDistributionDTO.getOrganizeId()).orElseGet(Organize::new);
updateOrganize.setTaskStatus(1);

@ -17,6 +17,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
@ -29,9 +30,9 @@ public class ClueController {
private final ClueService clueService;
@ApiOperation("任务id查询资源列表")
@ApiOperation("任务id查询资源列表ID")
@GetMapping("/queryList")
public ResponseEntity<List<Clue>> queryList(@RequestParam("taskId") Long taskId){
public ResponseEntity<List<Long>> queryList(@RequestParam("taskId") Long taskId){
if (taskId != null){
return new ResponseEntity<>(clueService.queryList(taskId), HttpStatus.OK);
}
@ -53,22 +54,10 @@ public class ClueController {
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.EMPTY_ARGUMENT), HttpStatus.OK);
}
@ApiOperation("小组id查询")
@GetMapping("/queryOrganizeIdList")
public ResponseEntity<List<Clue>> queryOrganizeIdList(@RequestParam("organizeId") Long organizeId){
if (organizeId != null){
return new ResponseEntity<>(clueService.queryOrganizeIdList(organizeId), HttpStatus.OK);
}
return new ResponseEntity<>(HttpStatus.OK);
}
@ApiOperation("批量更新组员信息")
@PostMapping("/batchUpdateUserId")
public ResponseEntity<Object> batchUpdateUserId(@RequestBody List<Map<Long, List<Long>>> mapList){
if ( mapList.size() > 0){
clueService.batchUpdateUserId(mapList);
}
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.EMPTY_ARGUMENT), HttpStatus.OK);
@ApiOperation("小组id查询并分配组员资源")
@PostMapping("/queryOrganizeIdList")
public void queryOrganizeIdList(@RequestBody ClueQueryCriteria clueQueryCriteria){
clueService.queryOrganizeIdList(clueQueryCriteria);
}
@ApiOperation("分页查询资源信息")
@ -88,4 +77,16 @@ public class ClueController {
public ResponseEntity<Object> queryMemberNum(@RequestParam("memberId") Long memberId){
return new ResponseEntity<>(clueService.queryMemberNum(memberId), HttpStatus.OK);
}
@ApiOperation("导出资源记录")
@GetMapping("/exportRecordList")
public void exportRecordList(HttpServletResponse response,ClueRecordCriteria clueRecordCriteria){
clueService.exportRecordList(response,clueRecordCriteria);
}
@ApiOperation("导出资源(客户列表)")
@GetMapping("/exportClueList")
public void exportClueList(HttpServletResponse response, ClueQueryCriteria clueQueryCriteria){
clueService.exportClueList(response,clueQueryCriteria);
}
}

@ -1,6 +1,6 @@
package com.baiye.module.entity;
import com.baiye.model.entity.ClueBase;
import com.baiye.model.entity.BaseClue;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.persistence.*;
@ -17,7 +17,7 @@ import lombok.Data;
@Entity
@Table(name = "tb_clue")
@ApiModel(value = "Clue")
public class Clue extends ClueBase {
public class Clue extends BaseClue {
/**
* 线id

@ -1,6 +1,6 @@
package com.baiye.module.entity;
import com.baiye.model.entity.TaskBase;
import com.baiye.model.entity.BaseTask;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -11,7 +11,7 @@ import javax.persistence.*;
@Entity
@Table(name = "tb_task")
@ApiModel(value = "Task")
public class Task extends TaskBase {
public class Task extends BaseTask {
/**
* ID

@ -9,6 +9,7 @@ import com.baiye.module.service.dto.ClueRecordCriteria;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
@ -25,7 +26,7 @@ public interface ClueService {
* @param taskId
* @return
*/
List<Clue> queryList(Long taskId);
List<Long> queryList(Long taskId);
/**
* id
@ -40,19 +41,11 @@ public interface ClueService {
void batchUpdateOrganize(DistributeResponseDTO distributeResponseDTO);
/**
* id
* @param organizeId
* id
* @param clueQueryCriteria
* @return
*/
List<Clue> queryOrganizeIdList(Long organizeId);
/**
*
* Map<Long, List<Long>> ,id->
* @param mapList
*/
void batchUpdateUserId(List<Map<Long, List<Long>>> mapList);
void queryOrganizeIdList(ClueQueryCriteria clueQueryCriteria);
/**
*
@ -74,4 +67,18 @@ public interface ClueService {
* @return
*/
Long queryMemberNum(Long memberId);
/**
*
* @param response
* @param clueRecordCriteria
*/
void exportRecordList(HttpServletResponse response, ClueRecordCriteria clueRecordCriteria);
/**
* ()
* @param response
* @param clueQueryCriteria
*/
void exportClueList(HttpServletResponse response, ClueQueryCriteria clueQueryCriteria);
}

@ -0,0 +1,57 @@
package com.baiye.module.service.dto;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.NumberFormat;
import com.baiye.util.ExportOriginConverter;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class ClueRecordDto implements Serializable {
@ExcelIgnore
private Long id;
@ApiModelProperty(value = "上传状态 0:上传成功 1:上传失败 (默认0)")
@ExcelIgnore
private Boolean status;
@ApiModelProperty(value = "上传类型 0:自定义模板 1:UC 2:快手 3:抖音 4:百度")
@ExcelProperty(value = "渠道", index = 2 ,converter = ExportOriginConverter.class)
private Integer uploadType;
@ApiModelProperty(value = "任务id")
@ExcelProperty(value = "任务ID", index = 0)
@NumberFormat(value = "#")
private Long taskId;
@ApiModelProperty(value = "上传文件名")
@ExcelProperty(value = "任务名", index = 1)
private String oldFile;
@ApiModelProperty(value = "存入路径")
@ExcelIgnore
private String newFileUrl;
@ApiModelProperty(value = "创建人")
@ExcelIgnore
private Long createBy;
@ApiModelProperty(value = "创建时间")
@ExcelProperty(value = "创建日期", index = 3)
private Date createTime;
@ApiModelProperty(value = "备注")
@ExcelIgnore
private String remark;
}

@ -0,0 +1,87 @@
package com.baiye.module.service.dto;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baiye.util.ExportOriginConverter;
import com.baiye.util.ExportStatusConverter;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class ExcelClueDto implements Serializable {
@ExcelIgnore
private Long id;
@ExcelProperty(value = "姓名", index = 0)
@ApiModelProperty(value = "姓名")
private String name;
@ExcelProperty(value = "手机号", index = 1)
@ApiModelProperty(value = "nid")
private String nid;
@ExcelProperty(value = "微信", index = 2)
@ApiModelProperty(value = "微信")
private String wx;
@ExcelProperty(value = "渠道", index = 4 ,converter = ExportOriginConverter.class)
@ApiModelProperty(value = "数据来源 0:自定义模板 1:UC 2:快手 3:抖音 4:百度")
private Integer origin;
@ExcelProperty(value = "金额", index = 3)
@ApiModelProperty(value = "金额")
private String amount;
@ApiModelProperty(value = "数据收集日期")
@ExcelIgnore
private Date collectTime;
@ExcelProperty(value = "线索归属地", index = 5)
@ApiModelProperty(value = "线索归属地")
private String address;
@ExcelIgnore
@ApiModelProperty(value = "导入记录id")
private Long recordId;
@ExcelIgnore
@ApiModelProperty(value = "小组id")
private Long organizeId;
@ExcelIgnore
@ApiModelProperty(value = "所属组员id")
private Long memberId;
@ExcelProperty(value = "跟进状态", index = 6, converter = ExportStatusConverter.class)
@ApiModelProperty(value = "组员跟进状态 0无状态 1进行中 2已完成")
private Integer memberStatus;
@ApiModelProperty(value = "创建人")
@ExcelIgnore
private Long createBy;
@ExcelProperty(value = "创建时间", index = 8)
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ExcelIgnore
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ExcelProperty(value = "备注", index = 7)
@ApiModelProperty(value = "备注")
private String remark;
@ExcelIgnore
private Long taskId;
}

@ -10,11 +10,18 @@ import com.baiye.module.entity.Clue;
import com.baiye.module.entity.ClueRecord;
import com.baiye.module.service.ClueService;
import com.baiye.module.service.dto.ClueRecordCriteria;
import com.baiye.module.service.dto.ClueRecordDto;
import com.baiye.module.service.dto.ExcelClueDto;
import com.baiye.module.service.mapstruct.ClueMapper;
import com.baiye.module.service.mapstruct.ClueRecordMapper;
import com.baiye.util.AverageDataUtil;
import com.baiye.util.ExportExcelUtil;
import com.baiye.util.PageUtil;
import com.baiye.util.QueryHelp;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
@ -22,6 +29,7 @@ import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -34,6 +42,7 @@ public class ClueServiceImpl implements ClueService {
private final ClueRepository clueRepository;
private final ClueRecordRepository clueRecordRepository;
private final ClueMapper clueMapper;
private final ClueRecordMapper clueRecordMapper;
@Override
public void saveClue(List<Clue> clueList) {
@ -43,13 +52,15 @@ public class ClueServiceImpl implements ClueService {
}
@Override
public List<Clue> queryList(Long taskId) {
List<Clue> clueLists = new ArrayList<>();
public List<Long> queryList(Long taskId) {
List<Long> clueLists = new ArrayList<>();
List<ClueRecord> clueRecordList = clueRecordRepository.findByTaskId(taskId);
if (clueRecordList.size() > 0) {
for (ClueRecord clueRecord : clueRecordList) {
List<Clue> clueList = clueRepository.findByRecordId(clueRecord.getId());
clueLists.addAll(clueList);
for (Clue clue : clueList) {
clueLists.add(clue.getId());
}
}
return clueLists;
}
@ -72,16 +83,21 @@ public class ClueServiceImpl implements ClueService {
}
}
@Override
public List<Clue> queryOrganizeIdList(Long organizeId) {
return clueRepository.findByOrganizeId(organizeId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void batchUpdateUserId(List<Map<Long, List<Long>>> mapList) {
for (Map<Long, List<Long>> map : mapList) {
public void queryOrganizeIdList(ClueQueryCriteria clueQueryCriteria) {
//资源id集合
List<Long> clueIds = new ArrayList<>();
//查询此小组下的所有资源id
List<Clue> clueList = clueRepository.findByOrganizeId(clueQueryCriteria.getOrganizeId());
for (Clue clue : clueList) {
clueIds.add(clue.getId());
}
//小组内资源分配
//Map<Long, List<Long>>用户id -> 资源ID集合
List<Map<Long, List<Long>>> maps = AverageDataUtil.averageData(clueIds, clueQueryCriteria.getUserIds());
//批量更新组员信息
for (Map<Long, List<Long>> map : maps) {
for (Long userId : map.keySet()) {
List<Long> userIdList = map.get(userId);
for (Long clueId : userIdList) {
@ -126,4 +142,25 @@ public class ClueServiceImpl implements ClueService {
public Long queryMemberNum(Long memberId) {
return clueRepository.countByMemberId(memberId);
}
/**
*
*/
@Override
public void exportRecordList(HttpServletResponse response, ClueRecordCriteria clueRecordCriteria) {
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);
}
}
@Override
public void exportClueList(HttpServletResponse response, ClueQueryCriteria clueQueryCriteria) {
if (clueQueryCriteria.getMemberId() != null) {
Sort sort = Sort.by(Sort.Direction.ASC, "createTime");
List<ClueDto> clueDtos = clueMapper.toDto(clueRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, clueQueryCriteria, criteriaBuilder), sort));
ExportExcelUtil.downloadEasyExcel(response, ExcelClueDto.class,clueDtos);
}
}
}

@ -0,0 +1,11 @@
package com.baiye.module.service.mapstruct;
import com.baiye.model.base.BaseMapper;
import com.baiye.module.entity.ClueRecord;
import com.baiye.module.service.dto.ClueRecordDto;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface ClueRecordMapper extends BaseMapper<ClueRecordDto, ClueRecord> {
}

@ -7,13 +7,6 @@ import com.sun.istack.internal.NotNull;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
/**

@ -0,0 +1,48 @@
package com.baiye.util;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.metadata.style.WriteFont;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import lombok.SneakyThrows;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
import java.util.List;
public class ExportExcelUtil {
/**
* excel
*/
@SneakyThrows //处理异常try
public static void downloadEasyExcel(HttpServletResponse response, Object obj, List list){
String fileName = URLEncoder.encode("表单", "UTF-8");
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
// excel头策略
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
WriteFont headWriteFont = new WriteFont();
headWriteFont.setFontHeightInPoints((short) 11);
headWriteFont.setBold(false);
headWriteCellStyle.setWriteFont(headWriteFont);
// excel内容策略
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
WriteFont contentWriteFont = new WriteFont();
//内容水平对齐
contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.RIGHT);
contentWriteFont.setFontHeightInPoints((short)11);
contentWriteCellStyle.setWriteFont(contentWriteFont);
// 设置handler
HorizontalCellStyleStrategy styleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
//写出
EasyExcel.write(response.getOutputStream(), (Class) obj)
.sheet("sheet1")
.registerWriteHandler(styleStrategy)
//自动设置列的宽
// .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.doWrite(list);
}
}

@ -0,0 +1,43 @@
package com.baiye.util;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
public class ExportOriginConverter implements Converter<Integer> {
@Override
public Class supportJavaTypeKey() {
return null;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return null;
}
@Override
public Integer convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration){
return null;
}
@Override
public CellData convertToExcelData(Integer value, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration){
// 上传类型 0:自定义模板 1:UC 2:快手 3:抖音 4:百度
switch (value){
case 0:
return new CellData("自定义模板");
case 1:
return new CellData("UC");
case 2:
return new CellData("快手");
case 3:
return new CellData("抖音");
case 4:
return new CellData("百度");
default:
return new CellData("其它");
}
}
}

@ -0,0 +1,38 @@
package com.baiye.util;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import io.swagger.annotations.ApiModelProperty;
public class ExportStatusConverter implements Converter<Integer> {
@Override
public Class supportJavaTypeKey() {
return null;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return null;
}
@Override
public Integer convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration){
return null;
}
@Override
public CellData convertToExcelData(Integer value, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration){
// 组员跟进状态 0无状态 1进行中 2已完成
switch (value){
case 1:
return new CellData("进行中");
case 2:
return new CellData("已完成");
default:
return new CellData("");
}
}
}
Loading…
Cancel
Save