新增统计未分配的资源

master
wujingtao 2 years ago
parent 569a9d2e16
commit 573f009f43

@ -24,7 +24,7 @@ public class ClueQueryCriteria {
@ApiModelProperty(value = "任务id")
private Long taskId;
private Set<Long> taskIds;
@ApiModelProperty(value = "所属组员id")
private Long memberId;

@ -18,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
@ -83,9 +84,13 @@ public interface SourceClueClient {
CommonResponse<Integer> queryClueByAdmin(@RequestParam(value = "memberId") Long memberId);
@ApiOperation("按任务获取当日所有意向数据")
@GetMapping("/countClueByTaskId")
@GetMapping(API_PREFIX+"/countClueByTaskId")
CommonResponse<Integer> countClueByTaskId(@RequestParam(value = "taskId") Long taskId,
@RequestParam(value = "beginTime") String beginTime,
@RequestParam(value = "endTime") String endTime);
@PostMapping(API_PREFIX+"/count/memberStatus")
@ApiOperation("未分配线索的总条数")
CommonResponse<Map<Long, Integer>> countClueByMemberStatus(@RequestBody ClueQueryCriteria clueQueryCriteria);
}

@ -88,4 +88,9 @@ public class SourceClueClientFallback implements SourceClueClient {
return null;
}
@Override
public CommonResponse<Map<Long, Integer>> countClueByMemberStatus(ClueQueryCriteria clueQueryCriteria) {
return null;
}
}

@ -47,4 +47,8 @@ public class TaskDto implements Serializable {
private String remark;
private Integer isForm;
/**
*
*/
private Integer unassigned;
}

@ -7,6 +7,7 @@ import com.baiye.exception.BadRequestException;
import com.baiye.feign.SourceClueClient;
import com.baiye.http.CommonResponse;
import com.baiye.http.ResponseCode;
import com.baiye.model.dto.ClueQueryCriteria;
import com.baiye.model.dto.TaskQueryCriteria;
import com.baiye.model.dto.UserDto;
import com.baiye.modules.system.domain.Label;
@ -150,13 +151,27 @@ public class TaskServiceImpl implements TaskService {
//查询所有标签
Set<Long> labelOrganizeIds = taskDtoMap.stream().map(TaskDto::getLabelOrganizeId).collect(Collectors.toSet());
Map<Long, List<Label>> collect = labelOrganizeService.organizeIdGroup(labelOrganizeIds);
Map<Long, Integer> taskIdCount = new HashMap<>();
//未分配数
if (taskDtoMap.getTotalPages() > 0) {
ClueQueryCriteria clueQueryCriteria = new ClueQueryCriteria();
clueQueryCriteria.setTaskIds(taskDtoMap.stream().map(TaskDto::getId).collect(Collectors.toSet()));
clueQueryCriteria.setMemberStatus(DefaultNumberConstants.ZERO_NUMBER);
taskIdCount = sourceClueClient.countClueByMemberStatus(clueQueryCriteria).getData();
}
for (TaskDto taskDto : taskDtoMap) {
//任务下的小组信息查询
selectOrganizeUser(taskDto);
//插入标签信息
List<String> labels = labelService.findAccordLabel(taskDto.getLabelOrganizeId(), collect);
taskDto.setTotalNumber(taskDto.getTotalNumber()==null?DefaultNumberConstants.ZERO_NUMBER:taskDto.getTotalNumber());
taskDto.getBaseLabel().addAll(labels);
if (taskIdCount != null) {
taskDto.setUnassigned(taskIdCount.getOrDefault(taskDto.getId(), DefaultNumberConstants.ZERO_NUMBER));
} else {
taskDto.setUnassigned(taskDto.getTotalNumber());
}
}
return PageUtil.toPage(taskDtoMap);
}
@ -194,6 +209,9 @@ public class TaskServiceImpl implements TaskService {
if (task.getIsDistribution() != null) {
updateTask.setIsDistribution(task.getIsDistribution());
}
if(task.getLabelOrganizeId()!=null){
updateTask.setLabelOrganizeId(task.getLabelOrganizeId());
}
taskRepository.save(updateTask);
} else {
throw new BadRequestException("任务id不能为空");

@ -209,7 +209,7 @@ public class UserServiceImpl implements UserService {
if (flag) {
if (userDTO.getCompanyType() == 1) {
//抖音(飞鱼)
createTask(userCreateResult.getId(), "动态任务", DefaultNumberConstants.THREE_NUMBER);
createTask(userCreateResult.getId(), "飞鱼任务", DefaultNumberConstants.THREE_NUMBER);
} else {
createTask(userCreateResult.getId(), userCreateResult.getUsername(), DefaultNumberConstants.ONE_NUMBER);
createTask(userCreateResult.getId(), userCreateResult.getUsername() + "-员工上传", DefaultNumberConstants.TWO_NUMBER);

@ -207,4 +207,10 @@ public class ClueController {
public CommonResponse<Object> dmpClueExchange() {
return clueService.dmpClueExchange();
}
@PostMapping("/count/memberStatus")
@ApiOperation("未分配线索的总条数")
public CommonResponse<Map<Long, Integer>> countClueByMemberStatus(@RequestBody ClueQueryCriteria clueQueryCriteria) {
return CommonResponse.createBySuccess(clueService.countClueByMemberStatus(clueQueryCriteria));
}
}

@ -300,6 +300,7 @@ public class ClueJpa {
Integer clueStage = clueQueryCriteria.getClueStage();
List<Long> userIdList = clueQueryCriteria.getUserIdList();
Integer clueType = clueQueryCriteria.getClueType();
Integer clueCallStatus = clueQueryCriteria.getClueCallStatus();
StringBuilder sql = new StringBuilder();
sql.append("SELECT tc.id as id,tc.nid as nid,tc.audio_url as audioUrl,tc.create_time as createTime,tc.name as name,tc.origin as origin,tc.cast_info as castInfo , tcm.task_id as taskId,tcm.member_status as memberStatus," +
@ -336,6 +337,9 @@ public class ClueJpa {
} else {
sql.append("AND tcm.clue_type < :clueType ");
}
if(clueCallStatus !=null){
sql.append("AND tcm.clue_call_status = :clueCallStatus ");
}
//拼接最后加入时间排序,没加id排序出现数据重复问题(注意空格)
sql.append("ORDER BY tc.create_time desc ,tc.id ");
sql.append("LIMIT :number,:size ");
@ -368,6 +372,9 @@ public class ClueJpa {
} else {
query.setParameter("clueType", DefaultNumberConstants.FOUR_NUMBER);
}
if(clueCallStatus!=null){
query.setParameter("clueCallStatus", clueCallStatus);
}
query.setParameter("number", pageable.getPageNumber() * pageable.getPageSize());
query.setParameter("size", pageable.getPageSize());
}

@ -164,6 +164,7 @@ public interface ClueMiddleRepository extends JpaRepository<ClueMiddle, Long>, J
/**
*
*
* @param taskId
* @param beginTime
* @param endTime
@ -175,6 +176,7 @@ public interface ClueMiddleRepository extends JpaRepository<ClueMiddle, Long>, J
/**
* 线
*
* @param companyId
* @param time
* @param clueStage
@ -187,10 +189,12 @@ public interface ClueMiddleRepository extends JpaRepository<ClueMiddle, Long>, J
List<ClueMiddle> queryClueMiddleByClueStage(Long companyId, String time, List<Integer> clueStage);
@Query(value = "select * from tb_clue_middle d where d.clue_stage_time >= ?1 and d.clue_stage_time< ?2 and d.member_id in ?3", nativeQuery = true)
List<ClueMiddle> queryAllByTimeAndMemberIds(String beginTime, String endTime,List<Long> memberIds);
List<ClueMiddle> queryAllByTimeAndMemberIds(String beginTime, String endTime, List<Long> memberIds);
@Query(value = "select * from tb_clue_middle d where d.clue_stage_time >= ?1 and d.clue_stage_time< ?2 and d.organize_id in ?3", nativeQuery = true)
List<ClueMiddle> queryAllByTimeAndorganizeIds(String beginTime, String endTime,List<Long> organizeIds);
List<ClueMiddle> queryAllByTimeAndorganizeIds(String beginTime, String endTime, List<Long> organizeIds);
@Query(value = "select d.task_id from tb_clue_middle d where d.member_status = ?1 and d.task_id in ?2", nativeQuery = true)
List<Long> selectClueMiddleByMember(Integer memberStatus, Set<Long> taskIds);
}

@ -27,9 +27,9 @@ public interface ClueService {
*
* @param clueList
* @param taskId
* @param clueType
* @param clueType
*/
void saveClue(List<Clue> clueList, Long taskId,Integer clueType);
void saveClue(List<Clue> clueList, Long taskId, Integer clueType);
/**
* id
@ -234,7 +234,16 @@ public interface ClueService {
/**
* dmp
*
* @return
*/
CommonResponse<Object> dmpClueExchange();
/**
* 线
*
* @param clueQueryCriteria
* @return
*/
CommonResponse<Object> dmpClueExchange();
Map<Long, Integer> countClueByMemberStatus(ClueQueryCriteria clueQueryCriteria);
}

@ -709,6 +709,21 @@ public class ClueServiceImpl implements ClueService {
return null;
}
@Override
public Map<Long, Integer> countClueByMemberStatus(ClueQueryCriteria clueQueryCriteria) {
List<Long> longs = clueMiddleRepository.selectClueMiddleByMember(clueQueryCriteria.getMemberStatus(), clueQueryCriteria.getTaskIds());
Map<Long, Integer> map = new HashMap<>();
for (Long key : longs) {
if (map.containsKey(key)) {
int value = map.get(key);
map.put(key, value + 1);
} else {
map.put(key, 1);
}
}
return map;
}
private List<HashMap<String, Object>> getOrganizeInfo(String startTime, String endTime, List<Long> organizeIds) {
List<ClueMiddle> clueMiddles = clueMiddleRepository.queryAllByTimeAndorganizeIds(startTime, endTime, organizeIds);
Set<Long> ids = clueMiddles.stream().map(ClueMiddle::getOrganizeId).collect(Collectors.toSet());

@ -83,6 +83,7 @@ public class PublicCluePoolServiceImpl implements PublicCluePoolService {
clueMiddle.setMemberId(null);
clueMiddle.setOrganizeId(null);
clueMiddle.setPublicPoolStatus(1);
clueMiddle.setMemberStatus(0);
clueMiddle.setOptimisticVersion(clueMiddle.getOptimisticVersion() + 1);
clueMiddleRepository.save(clueMiddle);
}

Loading…
Cancel
Save