From 9f20391994f5d8d931e6144bb9d989dede43f4a5 Mon Sep 17 00:00:00 2001 From: yqy Date: Tue, 28 Dec 2021 16:34:08 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B5=84=E6=BA=90=E6=9C=8D=E5=8A=A1=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../baiye/model/dto/ClueQueryCriteria.java | 5 ++ .../entity/{ClueBase.java => BaseClue.java} | 2 +- .../entity/{TaskBase.java => BaseTask.java} | 2 +- .../com/baiye/feign/SourceClueClient.java | 16 ++-- .../baiye/feign/SourceClueClientFallback.java | 13 +-- .../com/baiye/modules/system/domain/Clue.java | 4 +- .../com/baiye/modules/system/domain/Task.java | 4 +- .../system/rest/OrganizeController.java | 3 +- .../system/service/OrganizeService.java | 2 +- .../service/impl/OrganizeServiceImpl.java | 32 +++---- .../module/controller/ClueController.java | 37 ++++---- .../java/com/baiye/module/entity/Clue.java | 4 +- .../java/com/baiye/module/entity/Task.java | 4 +- .../com/baiye/module/service/ClueService.java | 31 ++++--- .../module/service/dto/ClueRecordDto.java | 57 ++++++++++++ .../module/service/dto/ExcelClueDto.java | 87 +++++++++++++++++++ .../module/service/impl/ClueServiceImpl.java | 59 ++++++++++--- .../service/mapstruct/ClueRecordMapper.java | 11 +++ .../java/com/baiye/util/AverageDataUtil.java | 7 -- .../java/com/baiye/util/ExportExcelUtil.java | 48 ++++++++++ .../com/baiye/util/ExportOriginConverter.java | 43 +++++++++ .../com/baiye/util/ExportStatusConverter.java | 38 ++++++++ 22 files changed, 405 insertions(+), 104 deletions(-) rename ad-platform-pojo/src/main/java/com/baiye/model/entity/{ClueBase.java => BaseClue.java} (97%) rename ad-platform-pojo/src/main/java/com/baiye/model/entity/{TaskBase.java => BaseTask.java} (97%) create mode 100644 services/ad-platform-source/src/main/java/com/baiye/module/service/dto/ClueRecordDto.java create mode 100644 services/ad-platform-source/src/main/java/com/baiye/module/service/dto/ExcelClueDto.java create mode 100644 services/ad-platform-source/src/main/java/com/baiye/module/service/mapstruct/ClueRecordMapper.java rename {manage/ad-platform-management => services/ad-platform-source}/src/main/java/com/baiye/util/AverageDataUtil.java (96%) create mode 100644 services/ad-platform-source/src/main/java/com/baiye/util/ExportExcelUtil.java create mode 100644 services/ad-platform-source/src/main/java/com/baiye/util/ExportOriginConverter.java create mode 100644 services/ad-platform-source/src/main/java/com/baiye/util/ExportStatusConverter.java diff --git a/ad-platform-pojo/src/main/java/com/baiye/model/dto/ClueQueryCriteria.java b/ad-platform-pojo/src/main/java/com/baiye/model/dto/ClueQueryCriteria.java index bb16a0df..64812f8a 100644 --- a/ad-platform-pojo/src/main/java/com/baiye/model/dto/ClueQueryCriteria.java +++ b/ad-platform-pojo/src/main/java/com/baiye/model/dto/ClueQueryCriteria.java @@ -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 userIds; + private Integer page; private Integer size; diff --git a/ad-platform-pojo/src/main/java/com/baiye/model/entity/ClueBase.java b/ad-platform-pojo/src/main/java/com/baiye/model/entity/BaseClue.java similarity index 97% rename from ad-platform-pojo/src/main/java/com/baiye/model/entity/ClueBase.java rename to ad-platform-pojo/src/main/java/com/baiye/model/entity/BaseClue.java index 0ccebfad..5ae4bc4b 100644 --- a/ad-platform-pojo/src/main/java/com/baiye/model/entity/ClueBase.java +++ b/ad-platform-pojo/src/main/java/com/baiye/model/entity/BaseClue.java @@ -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; diff --git a/ad-platform-pojo/src/main/java/com/baiye/model/entity/TaskBase.java b/ad-platform-pojo/src/main/java/com/baiye/model/entity/BaseTask.java similarity index 97% rename from ad-platform-pojo/src/main/java/com/baiye/model/entity/TaskBase.java rename to ad-platform-pojo/src/main/java/com/baiye/model/entity/BaseTask.java index a63a463c..1f4bcf8b 100644 --- a/ad-platform-pojo/src/main/java/com/baiye/model/entity/TaskBase.java +++ b/ad-platform-pojo/src/main/java/com/baiye/model/entity/BaseTask.java @@ -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; diff --git a/manage/ad-platform-management/src/main/java/com/baiye/feign/SourceClueClient.java b/manage/ad-platform-management/src/main/java/com/baiye/feign/SourceClueClient.java index 63b4b982..6d57f420 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/feign/SourceClueClient.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/feign/SourceClueClient.java @@ -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> queryList(@RequestParam("taskId") Long taskId); + ResponseEntity> queryList(@RequestParam("taskId") Long taskId); @ApiOperation("批量更新组信息") @PostMapping(API_PREFIX + "/batchUpdateOrganize") ResponseEntity batchUpdateOrganize(@RequestBody DistributeResponseDTO distributeResponseDTO); - @ApiOperation("小组id查询") - @GetMapping(API_PREFIX + "/queryOrganizeIdList") - ResponseEntity> queryOrganizeIdList(@RequestParam("organizeId") Long organizeId); - - @ApiOperation("批量更新组员信息") - @PostMapping(API_PREFIX + "/batchUpdateUserId") - ResponseEntity batchUpdateUserId(@RequestBody List>> mapList); + @ApiOperation("小组id查询并分配组员资源") + @PostMapping(API_PREFIX + "/queryOrganizeIdList") + void queryOrganizeIdList(@RequestBody ClueQueryCriteria clueQueryCriteria); @ApiOperation("(多条件)查询资源信息") @PostMapping(API_PREFIX + "/queryAll") diff --git a/manage/ad-platform-management/src/main/java/com/baiye/feign/SourceClueClientFallback.java b/manage/ad-platform-management/src/main/java/com/baiye/feign/SourceClueClientFallback.java index 4876d059..761e2f2b 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/feign/SourceClueClientFallback.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/feign/SourceClueClientFallback.java @@ -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> queryList(Long taskId) { + public ResponseEntity> queryList(Long taskId) { return null; } @@ -24,13 +22,8 @@ public class SourceClueClientFallback implements SourceClueClient { } @Override - public ResponseEntity> queryOrganizeIdList(Long organizeId) { - return null; - } + public void queryOrganizeIdList(ClueQueryCriteria clueQueryCriteria) { - @Override - public ResponseEntity batchUpdateUserId(List>> mapList) { - return null; } @Override diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/Clue.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/Clue.java index 7357e445..f90b9498 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/Clue.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/Clue.java @@ -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; diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/Task.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/Task.java index e4e3bf08..86c3de73 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/Task.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/Task.java @@ -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; diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/OrganizeController.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/OrganizeController.java index dba87c0e..fd636ab6 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/OrganizeController.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/OrganizeController.java @@ -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 queryLeaderTaskList(OrganizeQueryCriteria organizeQueryCriteria, Pageable pageable){ return new ResponseEntity<>(organizeService.queryLeaderTaskList(organizeQueryCriteria,pageable), HttpStatus.OK); diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/OrganizeService.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/OrganizeService.java index c4a469ef..af360585 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/OrganizeService.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/OrganizeService.java @@ -31,7 +31,7 @@ public interface OrganizeService { List queryAll(OrganizeQueryCriteria organizeQueryCriteria); /** - * 查询组长下任务列表 + * 查询组长任务列表 * @return */ HashMap queryLeaderTaskList(OrganizeQueryCriteria organizeQueryCriteria, Pageable pageable); diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/OrganizeServiceImpl.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/OrganizeServiceImpl.java index 1086d42a..71ee5720 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/OrganizeServiceImpl.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/OrganizeServiceImpl.java @@ -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 organizeList = organizeSaveDTO.getOrganizeList(); List deptIds = new ArrayList<>(); - List resourceList = new ArrayList<>(); + List clueList = new ArrayList<>(); List 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 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 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 queryAll(OrganizeQueryCriteria organizeQueryCriteria) { @@ -133,7 +126,7 @@ public class OrganizeServiceImpl implements OrganizeService { } /** - * 查询组长下任务列表 + * 查询组长任务列表 */ @Override public HashMap queryLeaderTaskList(OrganizeQueryCriteria organizeQueryCriteria, Pageable pageable) { @@ -141,7 +134,6 @@ public class OrganizeServiceImpl implements OrganizeService { HashMap hashMap = new HashMap<>(); List> organizeDtoList = new ArrayList<>(); Long userId = SecurityUtils.getCurrentUserId(); -// Long userId = 5L; OrganizeUserQueryCriteria organizeUserQueryCriteria = new OrganizeUserQueryCriteria(); organizeUserQueryCriteria.setUserId(userId); Page 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 clueIds = new ArrayList<>(); - List clueList = sourceClueClient.queryOrganizeIdList(organizeId).getBody(); - for (Clue clue : clueList) { - clueIds.add(clue.getId()); - } - //小组内资源分配 - //Map> : 用户id -> 资源ID集合 - List>> 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); diff --git a/services/ad-platform-source/src/main/java/com/baiye/module/controller/ClueController.java b/services/ad-platform-source/src/main/java/com/baiye/module/controller/ClueController.java index 2b764900..ea3e002f 100644 --- a/services/ad-platform-source/src/main/java/com/baiye/module/controller/ClueController.java +++ b/services/ad-platform-source/src/main/java/com/baiye/module/controller/ClueController.java @@ -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> queryList(@RequestParam("taskId") Long taskId){ + public ResponseEntity> 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> 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 batchUpdateUserId(@RequestBody List>> 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 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); + } } diff --git a/services/ad-platform-source/src/main/java/com/baiye/module/entity/Clue.java b/services/ad-platform-source/src/main/java/com/baiye/module/entity/Clue.java index 679b28ca..7a5cf390 100644 --- a/services/ad-platform-source/src/main/java/com/baiye/module/entity/Clue.java +++ b/services/ad-platform-source/src/main/java/com/baiye/module/entity/Clue.java @@ -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(自动递增) diff --git a/services/ad-platform-source/src/main/java/com/baiye/module/entity/Task.java b/services/ad-platform-source/src/main/java/com/baiye/module/entity/Task.java index b8423b01..a67426f6 100644 --- a/services/ad-platform-source/src/main/java/com/baiye/module/entity/Task.java +++ b/services/ad-platform-source/src/main/java/com/baiye/module/entity/Task.java @@ -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 diff --git a/services/ad-platform-source/src/main/java/com/baiye/module/service/ClueService.java b/services/ad-platform-source/src/main/java/com/baiye/module/service/ClueService.java index 8563f5fe..f276012f 100644 --- a/services/ad-platform-source/src/main/java/com/baiye/module/service/ClueService.java +++ b/services/ad-platform-source/src/main/java/com/baiye/module/service/ClueService.java @@ -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 queryList(Long taskId); + List queryList(Long taskId); /** * 用户id查询资源记录列表 @@ -40,19 +41,11 @@ public interface ClueService { void batchUpdateOrganize(DistributeResponseDTO distributeResponseDTO); /** - * 小组id查询 - * @param organizeId + * 小组id查询并分配组员资源 + * @param clueQueryCriteria * @return */ - List queryOrganizeIdList(Long organizeId); - - - /** - * 批量更新组员信息 - * Map> ,用户id->所属资源集合 - * @param mapList - */ - void batchUpdateUserId(List>> 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); } diff --git a/services/ad-platform-source/src/main/java/com/baiye/module/service/dto/ClueRecordDto.java b/services/ad-platform-source/src/main/java/com/baiye/module/service/dto/ClueRecordDto.java new file mode 100644 index 00000000..866538e4 --- /dev/null +++ b/services/ad-platform-source/src/main/java/com/baiye/module/service/dto/ClueRecordDto.java @@ -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; +} diff --git a/services/ad-platform-source/src/main/java/com/baiye/module/service/dto/ExcelClueDto.java b/services/ad-platform-source/src/main/java/com/baiye/module/service/dto/ExcelClueDto.java new file mode 100644 index 00000000..27716624 --- /dev/null +++ b/services/ad-platform-source/src/main/java/com/baiye/module/service/dto/ExcelClueDto.java @@ -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; +} diff --git a/services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java b/services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java index 3bf69fea..558145f9 100644 --- a/services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java +++ b/services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java @@ -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 clueList) { @@ -43,13 +52,15 @@ public class ClueServiceImpl implements ClueService { } @Override - public List queryList(Long taskId) { - List clueLists = new ArrayList<>(); + public List queryList(Long taskId) { + List clueLists = new ArrayList<>(); List clueRecordList = clueRecordRepository.findByTaskId(taskId); if (clueRecordList.size() > 0) { for (ClueRecord clueRecord : clueRecordList) { List 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 queryOrganizeIdList(Long organizeId) { - - return clueRepository.findByOrganizeId(organizeId); - } - @Override @Transactional(rollbackFor = Exception.class) - public void batchUpdateUserId(List>> mapList) { - for (Map> map : mapList) { + public void queryOrganizeIdList(ClueQueryCriteria clueQueryCriteria) { + //资源id集合 + List clueIds = new ArrayList<>(); + //查询此小组下的所有资源id + List clueList = clueRepository.findByOrganizeId(clueQueryCriteria.getOrganizeId()); + for (Clue clue : clueList) { + clueIds.add(clue.getId()); + } + //小组内资源分配 + //Map>:用户id -> 资源ID集合 + List>> maps = AverageDataUtil.averageData(clueIds, clueQueryCriteria.getUserIds()); + //批量更新组员信息 + for (Map> map : maps) { for (Long userId : map.keySet()) { List 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 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 clueDtos = clueMapper.toDto(clueRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, clueQueryCriteria, criteriaBuilder), sort)); + ExportExcelUtil.downloadEasyExcel(response, ExcelClueDto.class,clueDtos); + } + } } diff --git a/services/ad-platform-source/src/main/java/com/baiye/module/service/mapstruct/ClueRecordMapper.java b/services/ad-platform-source/src/main/java/com/baiye/module/service/mapstruct/ClueRecordMapper.java new file mode 100644 index 00000000..93f299c8 --- /dev/null +++ b/services/ad-platform-source/src/main/java/com/baiye/module/service/mapstruct/ClueRecordMapper.java @@ -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 { +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/util/AverageDataUtil.java b/services/ad-platform-source/src/main/java/com/baiye/util/AverageDataUtil.java similarity index 96% rename from manage/ad-platform-management/src/main/java/com/baiye/util/AverageDataUtil.java rename to services/ad-platform-source/src/main/java/com/baiye/util/AverageDataUtil.java index 9b3ed2a7..b4df19ac 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/util/AverageDataUtil.java +++ b/services/ad-platform-source/src/main/java/com/baiye/util/AverageDataUtil.java @@ -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.*; /** diff --git a/services/ad-platform-source/src/main/java/com/baiye/util/ExportExcelUtil.java b/services/ad-platform-source/src/main/java/com/baiye/util/ExportExcelUtil.java new file mode 100644 index 00000000..7aec74d6 --- /dev/null +++ b/services/ad-platform-source/src/main/java/com/baiye/util/ExportExcelUtil.java @@ -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); + } +} diff --git a/services/ad-platform-source/src/main/java/com/baiye/util/ExportOriginConverter.java b/services/ad-platform-source/src/main/java/com/baiye/util/ExportOriginConverter.java new file mode 100644 index 00000000..55750d86 --- /dev/null +++ b/services/ad-platform-source/src/main/java/com/baiye/util/ExportOriginConverter.java @@ -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 { + @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("其它"); + } + } +} diff --git a/services/ad-platform-source/src/main/java/com/baiye/util/ExportStatusConverter.java b/services/ad-platform-source/src/main/java/com/baiye/util/ExportStatusConverter.java new file mode 100644 index 00000000..84706a70 --- /dev/null +++ b/services/ad-platform-source/src/main/java/com/baiye/util/ExportStatusConverter.java @@ -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 { + @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(""); + } + } +}