资源服务代码提交

master
yqy 3 years ago
parent e8d45b648f
commit 48732e0232

@ -0,0 +1,64 @@
package com.baiye.model.dto;
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 ClueDto implements Serializable {
private Long id;
@ApiModelProperty(value = "姓名")
private String name;
@ApiModelProperty(value = "nid")
private String nid;
@ApiModelProperty(value = "微信")
private String wx;
@ApiModelProperty(value = "数据来源 0:自定义模板 1:UC 2:快手 3:抖音 4:百度")
private Integer origin;
@ApiModelProperty(value = "金额")
private String amount;
@ApiModelProperty(value = "数据收集日期")
private java.util.Date collectTime;
@ApiModelProperty(value = "线索归属地")
private String address;
@ApiModelProperty(value = "导入记录id")
private Long recordId;
@ApiModelProperty(value = "小组id")
private Long organizeId;
@ApiModelProperty(value = "所属组员id")
private Long memberId;
@ApiModelProperty(value = "组员跟进状态 0无状态 1进行中 2已完成")
private Integer memberStatus;
@ApiModelProperty(value = "创建人")
private Long createBy;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ApiModelProperty(value = "备注")
private String remark;
}

@ -0,0 +1,42 @@
package com.baiye.model.dto;
import com.baiye.annotation.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.data.domain.Pageable;
import javax.persistence.Column;
/**
* clue
*/
@Data
public class ClueQueryCriteria {
@Query
private Long id;
@ApiModelProperty(value = "小组id")
@Query
private Long organizeId;
@ApiModelProperty(value = "所属组员id")
@Query
private Long memberId;
@ApiModelProperty(value = "数据来源 0:自定义模板 1:UC 2:快手 3:抖音 4:百度")
@Query
private Integer origin;
@ApiModelProperty(value = "姓名")
@Query
private String name;
@ApiModelProperty(value = "组员跟进状态 0无状态 1进行中 2已完成")
@Query
private Integer memberStatus;
private Integer page;
private Integer size;
}

@ -22,7 +22,7 @@ public class DistributeDTO implements Serializable {
@NotEmpty(message = "资源不能为空")
@ApiModelProperty("分配资源")
private List<String> resourceList;
private List<Long> resourceList;
@ApiModelProperty("是否权重分配")
private Boolean isWeight;

@ -19,5 +19,5 @@ public class DistributeResponseDTO implements Serializable {
private Long deptId;
@ApiModelProperty("分配资源")
private List<String> responseList;
private List<Long> responseList;
}

@ -0,0 +1,85 @@
package com.baiye.model.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.annotations.CreationTimestamp;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.io.Serializable;
/**
* Clue
*
* @author yqy
* @date 2021-12-07 10:40:37
*/
@Data
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class ClueBase implements Serializable {
@ApiModelProperty(value = "姓名")
@Column(name = "name")
private String name;
@ApiModelProperty(value = "nid")
@Column(name = "nid")
private String nid;
@ApiModelProperty(value = "微信")
@Column(name = "wx")
private String wx;
@ApiModelProperty(value = "数据来源 0:自定义模板 1:UC 2:快手 3:抖音 4:百度")
@Column(name = "origin")
private Integer origin;
@ApiModelProperty(value = "金额")
@Column(name = "amount")
private String amount;
@ApiModelProperty(value = "数据收集日期")
@Column(name = "collect_time")
private java.util.Date collectTime;
@ApiModelProperty(value = "线索归属地")
@Column(name = "address")
private String address;
@ApiModelProperty(value = "导入记录id")
@Column(name = "record_id")
private Long recordId;
@ApiModelProperty(value = "小组id")
@Column(name = "organize_id")
private Long organizeId;
@ApiModelProperty(value = "所属组员id")
@Column(name = "member_id")
private Long memberId;
@ApiModelProperty(value = "组员跟进状态 0无状态 1进行中 2已完成")
@Column(name = "member_status")
private Integer memberStatus;
@ApiModelProperty(value = "创建人")
@Column(name = "create_by")
private Long createBy;
@ApiModelProperty(value = "创建时间")
@Column(name = "create_time")
@CreationTimestamp
private java.util.Date createTime;
@ApiModelProperty(value = "更新时间")
@Column(name = "update_time")
@LastModifiedDate
private java.util.Date updateTime;
@ApiModelProperty(value = "备注")
@Column(name = "remark")
private String remark;
}

@ -0,0 +1,87 @@
package com.baiye.model.entity;
import io.swagger.annotations.ApiModelProperty;
import javax.persistence.*;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.CreationTimestamp;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import java.io.Serializable;
/**
* Task
*
* @author yqy
* @date 2021-12-10 13:20:22
*/
@Getter
@Setter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class TaskBase implements Serializable {
private static final long serialVersionUID = 8623354712013889005L;
/**
*
* nullable : true
* default : null
*/
@ApiModelProperty(value = "任务名称")
@Column(name = "task_name", nullable = true, length = 255)
private String taskName;
/**
*
* nullable : true
* default : null
*/
@ApiModelProperty(value = "任务资源总条数")
@Column(name = "total_number", nullable = true)
private Integer totalNumber;
@ApiModelProperty(value = "分配状态 0未分配 1已分配")
@Column(name = "is_distribution", nullable = true)
private Integer isDistribution;
/**
*
* nullable : true
* default : null
*/
@ApiModelProperty(value = "创建人")
@Column(name = "create_by", nullable = true)
private Long createBy;
/**
*
* nullable : true
* default : null
*/
@ApiModelProperty(value = "更新人")
@Column(name = "update_by", nullable = true)
private Long updateBy;
/**
*
* nullable : true
* default : null
*/
@ApiModelProperty(value = "创建时间")
@Column(name = "create_time", nullable = true)
@CreationTimestamp
private java.util.Date createTime;
/**
*
* nullable : true
* default : null
*/
@ApiModelProperty(value = "更新时间")
@Column(name = "update_time", nullable = true)
@LastModifiedDate
private java.util.Date updateTime;
}

@ -0,0 +1,45 @@
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;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
/**
*
*/
@FeignClient(name = "ad-platform-source", fallback = SourceClueClientFallback.class)
public interface SourceClueClient {
String API_PREFIX = "/source/clue";
@ApiOperation("任务id查询资源列表")
@GetMapping(API_PREFIX + "/queryList")
ResponseEntity<List<Clue>> 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("(多条件)查询资源信息")
@PostMapping(API_PREFIX + "/queryAll")
ResponseEntity<Map<String,Object>> queryAll(@RequestBody ClueQueryCriteria clueQueryCriteria);
}

@ -0,0 +1,41 @@
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;
import java.util.List;
import java.util.Map;
@Component
public class SourceClueClientFallback implements SourceClueClient {
@Override
public ResponseEntity<List<Clue>> queryList(Long taskId) {
return null;
}
@Override
public ResponseEntity<Object> batchUpdateOrganize(DistributeResponseDTO distributeResponseDTO) {
return null;
}
@Override
public ResponseEntity<List<Clue>> queryOrganizeIdList(Long organizeId) {
return null;
}
@Override
public ResponseEntity<Object> batchUpdateUserId(List<Map<Long, List<Long>>> mapList) {
return null;
}
@Override
public ResponseEntity<Map<String, Object>> queryAll(ClueQueryCriteria clueQueryCriteria) {
return null;
}
}

@ -0,0 +1,28 @@
package com.baiye.modules.system.domain;
import com.baiye.model.entity.ClueBase;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.*;
/**
* Clue
*
* @author yqy
* @date 2021-12-07 10:40:37
*/
@Data
@Entity
@Table(name = "tb_clue")
@ApiModel(value = "Clue")
public class Clue extends ClueBase {
@Id
@ApiModelProperty(value = "线索表主键id自动递增")
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}

@ -0,0 +1,105 @@
package com.baiye.modules.system.domain;
import com.baiye.modules.system.service.dto.UserDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.persistence.*;
import lombok.Data;
import org.hibernate.annotations.CreationTimestamp;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.List;
/**
*
*
* @author yqy
* @date 2021-12-16 09:24:04
*/
@Data
@Entity
@Table(name = "tb_organize")
@ApiModel(value = "小组信息表")
@EntityListeners(AuditingEntityListener.class)
public class Organize implements Serializable {
private static final long serialVersionUID = 8623354712013889005L;
@Id
@ApiModelProperty(value = "ID")
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ApiModelProperty(value = "小组名称")
@Column(name = "organize_name")
private String organizeName;
@ApiModelProperty(value = "任务id")
@Column(name = "task_id")
private Long taskId;
@ApiModelProperty(value = "小组任务状态 0未开始 1进行中 2已完成 3已结束")
@Column(name = "task_status")
private Integer taskStatus;
@ApiModelProperty(value = "分配比例")
@Column(name = "ratio")
private Double ratio;
@ApiModelProperty(value = "任务开始时间")
@Column(name = "begin_time")
private Timestamp beginTime;
@ApiModelProperty(value = "任务结束时间")
@Column(name = "end_time")
private Timestamp endTime;
@ApiModelProperty(value = "此次任务分配名称")
@Column(name = "organize_task_name")
private String organizeTaskName;
@ApiModelProperty(value = "此次任务分配数量")
@Column(name = "organize_task_num")
private Integer organizeTaskNum;
@ApiModelProperty(value = "创建人")
@Column(name = "create_by")
private Long createBy;
@ApiModelProperty(value = "更新人")
@Column(name = "update_by")
private Long updateBy;
@ApiModelProperty(value = "创建时间")
@Column(name = "create_time")
@CreationTimestamp
private java.util.Date createTime;
@ApiModelProperty(value = "更新时间")
@Column(name = "update_time")
@LastModifiedDate
private java.util.Date updateTime;
@ApiModelProperty(value = "描述")
@Column(name = "remark")
private String remark;
@Transient
@ApiModelProperty(value = "用户id")
private Long userId;
@Transient
@ApiModelProperty(value = "用户列表")
private List<UserDto> userList;
@Transient
@ApiModelProperty(value = "小组下的任务信息")
private Task organizeTask;
}

@ -0,0 +1,67 @@
package com.baiye.modules.system.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.persistence.*;
import lombok.EqualsAndHashCode;
import lombok.Data;
import org.hibernate.annotations.CreationTimestamp;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import java.io.Serializable;
import java.util.List;
/**
* OrganizeUser
*
* @author yqy
* @date 2021-12-16 09:21:51
*/
@Data
@Entity
@Table(name = "tb_organize_user")
@ApiModel(value = "OrganizeUser")
@EntityListeners(AuditingEntityListener.class)
public class OrganizeUser implements Serializable {
private static final long serialVersionUID = 8623354712013889005L;
@Id
@ApiModelProperty(value = "小组用户表")
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ApiModelProperty(value = "小组id")
@Column(name = "organize_id")
private Long organizeId;
@ApiModelProperty(value = "用户id")
@Column(name = "user_id")
private Long userId;
@ApiModelProperty(value = "是否为组长 0false 1true")
@Column(name = "is_leader")
private Boolean isLeader = false;
@ApiModelProperty(value = "创建时间")
@Column(name = "create_time")
@CreationTimestamp
private java.util.Date createTime;
@ApiModelProperty(value = "更新时间")
@Column(name = "update_time")
@LastModifiedDate
private java.util.Date updateTime;
@ApiModelProperty(value = "创建人")
@Column(name = "create_by")
private Long createBy;
@ApiModelProperty(value = "更新人")
@Column(name = "update_by")
private Long updateBy;
}

@ -0,0 +1,25 @@
package com.baiye.modules.system.domain;
import com.baiye.model.entity.TaskBase;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.*;
import java.util.List;
@Data
@Entity
@Table(name = "tb_task")
@ApiModel(value = "Task")
public class Task extends TaskBase {
@Id
@ApiModelProperty(value = "任务表主键ID")
@Column(name = "id")
private Long id;
@Transient
@ApiModelProperty(value = "任务小组信息")
private List<Organize> organizeList;
}

@ -0,0 +1,34 @@
package com.baiye.modules.system.repository;
import com.baiye.modules.system.domain.Organize;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author YQY
* @date 2021-12-13
*/
@Repository
public interface OrganizeRepository extends JpaRepository<Organize, Long>, JpaSpecificationExecutor<Organize> {
/**
*
* @param taskId
* @return
*/
List<Organize> findByTaskId(Long taskId);
/**
*
* @param deptId
* @param organizeTaskNum
*/
@Modifying
@Query(value = "update tb_organize set organize_task_num = ?2 where id = ?1",nativeQuery = true)
void updateByOrganizeTaskNum(Long deptId, int organizeTaskNum);
}

@ -0,0 +1,12 @@
package com.baiye.modules.system.repository;
import com.baiye.modules.system.domain.OrganizeUser;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;
public interface OrganizeUserRepository extends JpaRepository<OrganizeUser, Long>, JpaSpecificationExecutor<OrganizeUser> {
List<OrganizeUser> findByOrganizeId(Long id);
}

@ -0,0 +1,22 @@
package com.baiye.modules.system.repository;
import com.baiye.modules.system.domain.Task;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author YQY
* @date 2021-12-10
*/
@Repository
public interface TaskRepository extends JpaRepository<Task, Long>, JpaSpecificationExecutor<Task> {
@Modifying
@Query(value = "update tb_task set is_distribution = ?1 where id = ?2",nativeQuery = true)
void updateIsDistribution(int isDistribution,Long taskId);
}

@ -0,0 +1,71 @@
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;
import com.baiye.modules.system.service.dto.OrganizeQueryCriteria;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* @author YQY
* @date 2021-12-13
*/
@Api(tags = "小组管理")
@RestController
@RequestMapping("/api/organize")
@RequiredArgsConstructor
public class OrganizeController {
private final OrganizeService organizeService;
@ApiOperation("管理员分配任务")
@PostMapping("/saveOrganizeDistribution")
public ResponseEntity<Object> saveOrganizeDistribution(@Validated @RequestBody OrganizeSaveDTO organizeSaveDTO){
return organizeService.saveOrganizeDistribution(organizeSaveDTO);
}
@ApiOperation("查询组")
@PostMapping("/queryAll")
public ResponseEntity<Object> queryAll(@RequestBody OrganizeQueryCriteria organizeQueryCriteria){
return new ResponseEntity<>(organizeService.queryAll(organizeQueryCriteria),HttpStatus.OK);
}
@ApiOperation("查询组长下任务列表")
@GetMapping("/queryLeaderTaskList")
public ResponseEntity<Object> queryLeaderTaskList(OrganizeQueryCriteria organizeQueryCriteria, Pageable pageable){
return new ResponseEntity<>(organizeService.queryLeaderTaskList(organizeQueryCriteria,pageable), HttpStatus.OK);
}
@ApiOperation("组长分配任务")
@PostMapping("/saveMemberDistribution")
public ResponseEntity<Object> saveMemberDistribution(@Validated @RequestBody OrganizeMemberDistributionDTO organizeMemberDistributionDTO){
if (organizeMemberDistributionDTO != null) {
return organizeService.saveMemberDistribution(organizeMemberDistributionDTO);
}
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.EMPTY_ARGUMENT), HttpStatus.OK);
}
@ApiOperation("查询任务外用户列表")
@GetMapping("/selectMemberList")
public ResponseEntity<Object> selectMemberList(OrganizeQueryCriteria organizeQueryCriteria){
return new ResponseEntity<>(organizeService.selectMemberList(organizeQueryCriteria), HttpStatus.OK);
}
@ApiOperation("查询客户列表")
@GetMapping("/queryMember")
public ResponseEntity<Object> queryMember(ClueQueryCriteria clueQueryCriteria,Pageable pageable){
return new ResponseEntity<>(organizeService.queryMember(clueQueryCriteria,pageable), HttpStatus.OK);
}
}

@ -0,0 +1,45 @@
package com.baiye.modules.system.rest;
import com.baiye.modules.system.domain.Task;
import com.baiye.modules.system.service.TaskService;
import com.baiye.modules.system.service.dto.OrganizeQueryCriteria;
import com.baiye.modules.system.service.dto.TaskQueryCriteria;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
/**
* @author YQY
* @date 2021-12-10
*/
@Api(tags = "任务管理")
@RestController
@RequestMapping("/api/task")
@RequiredArgsConstructor
public class TaskController {
private final TaskService taskService;
@ApiOperation("新建任务")
@PostMapping("/saveTask")
public ResponseEntity<Object> saveTask(@RequestBody Task task){
return new ResponseEntity<>(taskService.saveTask(task),HttpStatus.CREATED);
}
@ApiOperation("查询任务(分页)")
@GetMapping("/queryAll")
public ResponseEntity<Object> queryAll(TaskQueryCriteria taskQueryCriteria, Pageable pageable){
return new ResponseEntity<>(taskService.queryAll(taskQueryCriteria,pageable),HttpStatus.OK);
}
@ApiOperation("查询任务")
@PostMapping("/query")
public ResponseEntity<Object> query(@RequestBody TaskQueryCriteria taskQueryCriteria){
return new ResponseEntity<>(taskService.query(taskQueryCriteria),HttpStatus.OK);
}
}

@ -0,0 +1,66 @@
package com.baiye.modules.system.service;
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.dto.OrganizeDto;
import com.baiye.modules.system.service.dto.OrganizeQueryCriteria;
import com.baiye.modules.system.service.dto.UserDto;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public interface OrganizeService {
/**
*
* @param organizeSaveDTO
* @return
*/
ResponseEntity<Object> saveOrganizeDistribution(OrganizeSaveDTO organizeSaveDTO);
/**
*
* @param organizeQueryCriteria
* @return
*/
List<OrganizeDto> queryAll(OrganizeQueryCriteria organizeQueryCriteria);
/**
*
* @return
*/
HashMap<String, Object> queryLeaderTaskList(OrganizeQueryCriteria organizeQueryCriteria, Pageable pageable);
/**
*
* @param organize
* @return
*/
ResponseEntity<Object> updateOrganize(Organize organize);
/**
*
* @param organizeMemberDistributionDTO
* @return
*/
ResponseEntity<Object> saveMemberDistribution(OrganizeMemberDistributionDTO organizeMemberDistributionDTO);
/**
* ,
* @param organizeQueryCriteria
* @return
*/
List<UserDto> selectMemberList(OrganizeQueryCriteria organizeQueryCriteria);
/**
*
* @param clueQueryCriteria
* @return
*/
Map<String,Object> queryMember(ClueQueryCriteria clueQueryCriteria,Pageable pageable);
}

@ -0,0 +1,35 @@
package com.baiye.modules.system.service;
import com.baiye.modules.system.domain.Task;
import com.baiye.modules.system.service.dto.OrganizeDto;
import com.baiye.modules.system.service.dto.TaskDto;
import com.baiye.modules.system.service.dto.TaskQueryCriteria;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import java.util.List;
public interface TaskService {
/**
*
* @param task
* @return
*/
ResponseEntity<Object> saveTask(Task task);
/**
*()
* @param taskQueryCriteria
* @param pageable
* @return
*/
Object queryAll(TaskQueryCriteria taskQueryCriteria, Pageable pageable);
/**
* (
* @param taskQueryCriteria
* @return
*/
List<TaskDto> query(TaskQueryCriteria taskQueryCriteria);
}

@ -32,7 +32,7 @@ public class LabelDto implements Serializable {
private Integer level;
/** 是否启用 */
private Integer isEnable;
private Boolean isEnable;
/** 创建者 */
private String createBy;

@ -0,0 +1,59 @@
package com.baiye.modules.system.service.dto;
import com.baiye.modules.system.domain.Task;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Column;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Getter
@Setter
public class OrganizeDto implements Serializable {
@JsonSerialize(using= ToStringSerializer.class)
private Long id;
private String organizeName;
@JsonSerialize(using= ToStringSerializer.class)
private Long taskId;
private Integer taskStatus;
private Double ratio;
private java.util.Date beginTime;
private java.util.Date endTime;
private Long createBy;
private Date createTime;
private Date updateTime;
private String remark;
@ApiModelProperty(value = "此次任务分配名称")
private String organizeTaskName;
@ApiModelProperty(value = "此次任务分配数量")
private Integer organizeTaskNum;
@ApiModelProperty(value = "用户id")
private Long userId;
@ApiModelProperty(value = "用户列表")
private List<UserDto> userList;
@ApiModelProperty(value = "小组下的任务信息")
private Task organizeTask;
}

@ -0,0 +1,37 @@
package com.baiye.modules.system.service.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import java.util.Set;
@Data
public class OrganizeMemberDistributionDTO {
@NotEmpty(message = "小组成员id集合")
@ApiModelProperty("小组成员id集合")
private List<Long> userIds;
@NotEmpty(message = "小组id")
@ApiModelProperty("小组id")
private Long organizeId;
@NotEmpty(message = "任务开始时间")
@ApiModelProperty("任务开始时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Timestamp beginTime;
@NotEmpty(message = "任务结束时间")
@ApiModelProperty("任务结束时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Timestamp endTime;
@NotEmpty(message = "任务id")
@ApiModelProperty("任务id")
private Long taskId;
}

@ -0,0 +1,41 @@
package com.baiye.modules.system.service.dto;
import com.baiye.annotation.Query;
import com.baiye.modules.system.domain.Organize;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import java.sql.Timestamp;
import java.util.List;
/**
*
*/
@Data
public class OrganizeQueryCriteria {
@Query
private Long id;
@Query
private Integer taskStatus;
@Query
private Long createBy;
@Query
private Long taskId;
@ApiModelProperty(value = "此次任务分配名称")
@Query
private String organizeTaskName;
@Query(type = Query.Type.BETWEEN)
private List<Timestamp> createTime;
@ApiModelProperty(value = "标签名称")
private List<String> labelNameList;
private List<Organize> organizeList;
}

@ -0,0 +1,29 @@
package com.baiye.modules.system.service.dto;
import com.baiye.modules.system.domain.Organize;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
public class OrganizeSaveDTO {
@ApiModelProperty("小组集合")
@NotNull
private List<Organize> organizeList;
@ApiModelProperty("任务id")
@NotNull
private Long taskId;
@ApiModelProperty(value = "此次任务分配名称")
@NotNull
private String organizeTaskName;
@ApiModelProperty(value = "标签名称")
private List<String> labelNameList;
}

@ -0,0 +1,49 @@
package com.baiye.modules.system.service.dto;
import com.baiye.modules.system.domain.Organize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.CreationTimestamp;
import org.springframework.data.annotation.LastModifiedDate;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Getter
@Setter
public class OrganizeUserDto implements Serializable {
@ApiModelProperty(value = "小组用户表")
private Long id;
@ApiModelProperty(value = "小组id")
private Long organizeId;
@ApiModelProperty(value = "用户id")
private Long userId;
@ApiModelProperty(value = "是否为组长 0false 1true")
private Boolean isLeader = false;
@ApiModelProperty(value = "创建时间")
private java.util.Date createTime;
@ApiModelProperty(value = "更新时间")
private java.util.Date updateTime;
@ApiModelProperty(value = "创建人")
private Long createBy;
@ApiModelProperty(value = "更新人")
private Long updateBy;
private List<OrganizeDto> organizeList;
}

@ -0,0 +1,28 @@
package com.baiye.modules.system.service.dto;
import com.baiye.annotation.Query;
import com.baiye.modules.system.domain.Organize;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import java.sql.Timestamp;
import java.util.List;
/**
*
*/
@Data
public class OrganizeUserQueryCriteria {
@Query
private Long userId;
@ApiModelProperty(value = "小组id")
@Query
private Long organizeId;
@ApiModelProperty(value = "是否为组长 0false 1true")
@Query
private Boolean isLeader;
}

@ -0,0 +1,36 @@
package com.baiye.modules.system.service.dto;
import com.baiye.modules.system.domain.Organize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Getter
@Setter
public class TaskDto implements Serializable {
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
private String taskName;
private Integer totalNumber;
private Integer isDistribution;
private Long createBy;
private Long updateBy;
private Date createTime;
private Date updateTime;
private List<Organize> organizeList;
}

@ -0,0 +1,34 @@
package com.baiye.modules.system.service.dto;
import com.baiye.annotation.Query;
import com.baiye.modules.system.domain.Organize;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import java.sql.Timestamp;
import java.util.List;
/**
*
*/
@Data
public class TaskQueryCriteria {
@Query
private Long id;
@Query
@ApiModelProperty(value = "分配状态 0未分配 1已分配")
private Integer isDistribution;
@Query
private Long createBy;
@Query
private Long taskName;
@Query(type = Query.Type.BETWEEN)
private List<Timestamp> createTime;
}

@ -0,0 +1,266 @@
package com.baiye.modules.system.service.impl;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.feign.AssignDataClient;
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.DistributeDTO;
import com.baiye.model.dto.DistributeResponseDTO;
import com.baiye.modules.system.domain.*;
import com.baiye.modules.system.service.dto.OrganizeMemberDistributionDTO;
import com.baiye.modules.system.service.dto.OrganizeSaveDTO;
import com.baiye.modules.system.repository.OrganizeRepository;
import com.baiye.modules.system.repository.OrganizeUserRepository;
import com.baiye.modules.system.repository.TaskRepository;
import com.baiye.modules.system.service.LabelService;
import com.baiye.modules.system.service.OrganizeService;
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;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
@RequiredArgsConstructor
@Slf4j
public class OrganizeServiceImpl implements OrganizeService {
private final OrganizeRepository organizeRepository;
private final OrganizeMapper organizeMapper;
private final OrganizeUserMapper organizeUserMapper;
private final OrganizeUserRepository organizeUserRepository;
private final AssignDataClient assignDataClient;
private final SourceClueClient sourceClueClient;
private final TaskRepository taskRepository;
private final UserService userService;
private final LabelService labelService;
/**
*
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ResponseEntity<Object> saveOrganizeDistribution(OrganizeSaveDTO organizeSaveDTO) {
Long userId = SecurityUtils.getCurrentUserId();
List<Organize> organizeList = organizeSaveDTO.getOrganizeList();
List<Long> deptIds = new ArrayList<>();
List<Long> resourceList = new ArrayList<>();
List<Double> weights = new ArrayList<>();
for (Organize organize : organizeList) {
organize.setTaskId(organizeSaveDTO.getTaskId());
organize.setTaskStatus(0);
organize.setCreateBy(userId);
organize.setOrganizeTaskName(organizeSaveDTO.getOrganizeTaskName());
Organize saveOrganize = organizeRepository.save(organize);
OrganizeUser organizeUser = new OrganizeUser();
organizeUser.setOrganizeId(saveOrganize.getId());
organizeUser.setUserId(saveOrganize.getUserId());
organizeUser.setIsLeader(true);
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());
}
//任务状态更新
taskRepository.updateIsDistribution(1, organizeSaveDTO.getTaskId());
weights.add(saveOrganize.getRatio());
}
//总管理员给小组分配任务
DistributeDTO distributeDTO = new DistributeDTO();
distributeDTO.setDeptIds(deptIds);
distributeDTO.setResourceList(resourceList);
distributeDTO.setWeights(weights);
List<DistributeResponseDTO> data = assignDataClient.dataDistribution(distributeDTO).getData();
//线索更新
if (data.size() > 0){
for (DistributeResponseDTO distributeResponseDTO : data) {
sourceClueClient.batchUpdateOrganize(distributeResponseDTO);
//获取小组此次获取的数据
int organizeTaskNum = distributeResponseDTO.getResponseList().size();
organizeRepository.updateByOrganizeTaskNum(distributeResponseDTO.getDeptId(),organizeTaskNum);
}
}
//创建标签
List<String> labelNameList = organizeSaveDTO.getLabelNameList();
if (labelNameList.size() > 0) {
for (String labelName : labelNameList) {
Label label = new Label();
label.setLabelName(labelName);
label.setLevel(DefaultNumberConstants.ONE_NUMBER);
labelService.create(label);
}
}
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);
}
/**
*
* @param organizeQueryCriteria
* @return
*/
@Override
public List<OrganizeDto> queryAll(OrganizeQueryCriteria organizeQueryCriteria) {
List<OrganizeDto> organizeDtos = organizeMapper.toDto(organizeRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, organizeQueryCriteria, criteriaBuilder)));
for (OrganizeDto organizeDto : organizeDtos) {
//小组下的成员信息
List<UserDto> userDtoList = selectOrganizeUser(organizeDto.getId());
organizeDto.setUserList(userDtoList);
// 小组的任务信息
Task task = taskRepository.findById(organizeDto.getTaskId()).orElseGet(Task::new);
organizeDto.setOrganizeTask(task);
}
return organizeDtos;
}
/**
*
*/
@Override
public HashMap<String, Object> queryLeaderTaskList(OrganizeQueryCriteria organizeQueryCriteria, Pageable pageable) {
Sort sort = Sort.by(Sort.Direction.ASC, "createTime");
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);
Page<OrganizeUserDto> map = organizeUserRepositoryAll.map(organizeUserMapper::toDto);
if (!map.isEmpty()) {
for (OrganizeUserDto organizeUserDto : map) {
if (organizeUserDto.getIsLeader()) {
organizeQueryCriteria.setId(organizeUserDto.getOrganizeId());
// 查询组长的组
List<OrganizeDto> organizeDtos = organizeMapper.toDto(organizeRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, organizeQueryCriteria, criteriaBuilder),sort));
//查询小组的进度
if (organizeDtos.size() > 0) {
organizeDtoList.add(organizeDtos);
}
}
}
hashMap.put("content", organizeDtoList);
hashMap.put("totalElements", organizeDtoList.size());
return hashMap;
}
return null;
}
/**
*
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ResponseEntity<Object> updateOrganize(Organize organize) {
organizeRepository.save(organize);
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);
}
/**
*
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ResponseEntity<Object> saveMemberDistribution(OrganizeMemberDistributionDTO organizeMemberDistributionDTO) {
List<Long> userIds = organizeMemberDistributionDTO.getUserIds();
Long organizeId = organizeMemberDistributionDTO.getOrganizeId();
// 新增小组成员
for (Long userId : userIds) {
OrganizeUser organizeUser = new OrganizeUser();
organizeUser.setUserId(userId);
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);
sourceClueClient.batchUpdateUserId(maps);
//更新小组任务信息
Organize updateOrganize = organizeRepository.findById(organizeMemberDistributionDTO.getOrganizeId()).orElseGet(Organize::new);
updateOrganize.setTaskStatus(1);
updateOrganize.setBeginTime(organizeMemberDistributionDTO.getBeginTime());
updateOrganize.setEndTime(organizeMemberDistributionDTO.getEndTime());
organizeRepository.save(updateOrganize);
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);
}
/**
* ,
*/
@Override
public List<UserDto> selectMemberList(OrganizeQueryCriteria organizeQueryCriteria) {
//查询所有用户
List<UserDto> userDtoList = userService.queryAll(new UserQueryCriteria());
// 任务内组员用户ID集合
List<Long> userList = new ArrayList<>();
//查询任务下的所有组员用户
List<OrganizeDto> organizeDtos = organizeMapper.toDto(organizeRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, organizeQueryCriteria, criteriaBuilder)));
for (OrganizeDto organizeDto : organizeDtos) {
List<OrganizeUser> OrganizeUserList = organizeUserRepository.findByOrganizeId(organizeDto.getId());
for (OrganizeUser organizeUser : OrganizeUserList) {
userList.add(organizeUser.getUserId());
}
}
// 去除任务内重复的用户
for (int i = 0; i < userDtoList.size(); i++) {
for (Long userId : userList) {
if (userId == userDtoList.get(i).getId()){
userDtoList.remove(i);
}
}
}
return userDtoList;
}
/**
*
*/
@Override
public Map<String,Object> queryMember(ClueQueryCriteria clueQueryCriteria,Pageable pageable) {
Long userId = SecurityUtils.getCurrentUserId();
clueQueryCriteria.setMemberId(userId);
clueQueryCriteria.setPage(pageable.getPageNumber());
clueQueryCriteria.setSize(pageable.getPageSize());
return sourceClueClient.queryAll(clueQueryCriteria).getBody();
}
/**
* id
*/
public List<UserDto> selectOrganizeUser(Long organizeId){
List<UserDto> list = new ArrayList<>();
List<OrganizeUser> userIdList = organizeUserRepository.findByOrganizeId(organizeId);
for (OrganizeUser userIds : userIdList) {
UserDto user = userService.findById(userIds.getUserId());
list.add(user);
}
return list;
}
}

@ -0,0 +1,117 @@
package com.baiye.modules.system.service.impl;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.http.CommonResponse;
import com.baiye.http.ResponseCode;
import com.baiye.modules.system.domain.Organize;
import com.baiye.modules.system.domain.OrganizeUser;
import com.baiye.modules.system.domain.Task;
import com.baiye.modules.system.repository.OrganizeRepository;
import com.baiye.modules.system.repository.OrganizeUserRepository;
import com.baiye.modules.system.repository.TaskRepository;
import com.baiye.modules.system.service.OrganizeService;
import com.baiye.modules.system.service.TaskService;
import com.baiye.modules.system.service.UserService;
import com.baiye.modules.system.service.dto.TaskDto;
import com.baiye.modules.system.service.dto.TaskQueryCriteria;
import com.baiye.modules.system.service.dto.UserDto;
import com.baiye.modules.system.service.mapstruct.TaskMapper;
import com.baiye.util.PageUtil;
import com.baiye.util.QueryHelp;
import com.baiye.util.SecurityUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import javax.swing.*;
import java.util.ArrayList;
import java.util.List;
@Service
@RequiredArgsConstructor
public class TaskServiceImpl implements TaskService {
private final TaskRepository taskRepository;
private final TaskMapper taskMapper;
private final OrganizeRepository organizeRepository;
private final OrganizeUserRepository organizeUserRepository;
private final UserService userService;
@Override
public ResponseEntity<Object> saveTask(Task task) {
task.setIsDistribution(DefaultNumberConstants.ZERO_NUMBER);
taskRepository.save(task);
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);
}
/**
*()()
*/
@Override
public Object queryAll(TaskQueryCriteria taskQueryCriteria, Pageable pageable) {
Sort sort = Sort.by(Sort.Direction.ASC, "createTime");
Long userId = SecurityUtils.getCurrentUserId();
taskQueryCriteria.setCreateBy(userId);
Page<Task> taskRepositoryAll = taskRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, taskQueryCriteria, criteriaBuilder), pageable);
Page<TaskDto> map = taskRepositoryAll.map(taskMapper::toDto);
for (TaskDto taskDto : map) {
selectOrganizeUser(taskDto);
// List<Organize> organizeList = organizeRepository.findByTaskId(taskDto.getId());
// for (Organize organize : organizeList) {
// List<UserDto> userDtoList = selectOrganizeUser(organize.getId());
// organize.setUserList(userDtoList);
// }
// taskDto.setOrganizeList(organizeList);
}
return PageUtil.toPage(map);
}
/**
*
*/
@Override
public List<TaskDto> query(TaskQueryCriteria taskQueryCriteria) {
Sort sort = Sort.by(Sort.Direction.ASC, "createTime");
List<TaskDto> taskDtos = taskMapper.toDto(taskRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, taskQueryCriteria, criteriaBuilder),sort));
for (TaskDto taskDto : taskDtos) {
// //任务下的小组信息加入
selectOrganizeUser(taskDto);
// List<Organize> organizeList = organizeRepository.findByTaskId(taskDto.getId());
// for (Organize organize : organizeList) {
// List<UserDto> userDtoList = selectOrganizeUser(organize.getId());
// organize.setUserList(userDtoList);
// }
// taskDto.setOrganizeList(organizeList);
}
return taskDtos;
}
/**
* id
* @return
*/
public void selectOrganizeUser(TaskDto taskDto){
//任务下的小组信息加入
List<Organize> organizeList = organizeRepository.findByTaskId(taskDto.getId());
for (Organize organize : organizeList) {
List<UserDto> list = new ArrayList<>();
List<OrganizeUser> userIdList = organizeUserRepository.findByOrganizeId(organize.getId());
for (OrganizeUser userIds : userIdList) {
//判断是否为组长
if (userIds.getIsLeader()) {
UserDto user = userService.findById(userIds.getUserId());
list.add(user);
}
}
organize.setUserList(list);
}
taskDto.setOrganizeList(organizeList);
}
}

@ -0,0 +1,11 @@
package com.baiye.modules.system.service.mapstruct;
import com.baiye.model.base.BaseMapper;
import com.baiye.modules.system.domain.Organize;
import com.baiye.modules.system.service.dto.OrganizeDto;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface OrganizeMapper extends BaseMapper<OrganizeDto, Organize> {
}

@ -0,0 +1,13 @@
package com.baiye.modules.system.service.mapstruct;
import com.baiye.model.base.BaseMapper;
import com.baiye.modules.system.domain.Organize;
import com.baiye.modules.system.domain.OrganizeUser;
import com.baiye.modules.system.service.dto.OrganizeDto;
import com.baiye.modules.system.service.dto.OrganizeUserDto;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface OrganizeUserMapper extends BaseMapper<OrganizeUserDto, OrganizeUser> {
}

@ -0,0 +1,31 @@
/*
* Copyright 2019-2020 Zheng Jie
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.baiye.modules.system.service.mapstruct;
import com.baiye.model.base.BaseMapper;
import com.baiye.modules.system.domain.Dept;
import com.baiye.modules.system.domain.Task;
import com.baiye.modules.system.service.dto.DeptDto;
import com.baiye.modules.system.service.dto.TaskDto;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
/**
* @author YQY
*/
@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface TaskMapper extends BaseMapper<TaskDto, Task> {
}

@ -0,0 +1,145 @@
package com.baiye.util;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
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.*;
/**
*
*/
@Slf4j
public class AverageDataUtil {
/**
*
*/
private static List<Long> list = Lists.newArrayList();
/**
* Map使
*/
private static List<Map<Long,List<Long>>> los = Lists.newArrayList();
/**
*
*
* @param visitorIds
* @param sellerIds
* @return List<Map>
*/
public static List<Map<Long,List<Long>>> averageData(List<Long> visitorIds, List<Long> sellerIds) {
initCollections(visitorIds, sellerIds);
if (visitorIds.size() >= sellerIds.size()) {
groupByData(los.size());
return getMaps();
} else {
groupByData(list.size());
return getMaps();
}
}
/**
*
*
* @return List<Map>
*/
@NotNull
private static List<Map<Long,List<Long>>> getMaps() {
List<Map<Long,List<Long>>> listMap = Lists.newArrayList();
listMap.addAll(los);
//清空静态数据
los = Lists.newArrayList();
list = Lists.newArrayList();
return listMap;
}
/**
*
*
* @param size
*/
private static void groupByData(int size) {
List<Long> augmented = list;
List<List<Long>> lists = chunk2(augmented, size);
for (int i = 0; i < size; i++) {
Map map = los.get(i);
Iterator iterator = map.keySet().iterator();
if (iterator.hasNext()) {
Long next = (Long) iterator.next();
map.put(next, lists.get(i));
}
}
}
/**
*
*
* @param visitorIds
* @param sellerIds
*/
private static void initCollections(List<Long> visitorIds, List<Long> sellerIds) {
//每次调用前清空数据
if (list.size() > 0) {
list = Lists.newArrayList();
}
if (los.size() > 0) {
los = Lists.newArrayList();
}
list.addAll(visitorIds);
List<Map<Long, List<Long>>> list1 = new ArrayList<>();
for (Long sellerId : sellerIds) {
Map<Long, List<Long>> map = new HashMap<>(16);
List<Long> list = new ArrayList<>();
map.put(sellerId, list);
list1.add(map);
}
los.addAll(list1);
}
/**
* -
*
* @param list
* @param group
* @param <T>
* @return
*/
private static <T> List<List<T>> chunk2(List<T> list, int group) {
if (CollectionUtils.isEmpty(list)) {
return Lists.newArrayList();
}
List<List<T>> result = Lists.newArrayList();
Map<Integer, Set<T>> temp = Maps.newHashMap();
for (int i = 0; i < list.size(); i++) {
if (temp.containsKey(i % group)) {
Set<T> ts = temp.get(i % group);
ts.add(list.get(i));
temp.put(i % group, ts);
} else {
Set<T> ts = Sets.newHashSet();
ts.add(list.get(i));
temp.put(i % group, ts);
}
}
for (Set<T> ts : temp.values()) {
result.add(Lists.newArrayList(ts));
}
return result;
}
}

@ -17,6 +17,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;
/**
@ -31,11 +32,11 @@ public class AssignDataService {
int size = distribution.getDeptIds().size();
List<Long> deptIds = distribution.getDeptIds();
List<Double> weights = distribution.getWeights();
List<String> resourceList = distribution.getResourceList();
List<Long> resourceList = distribution.getResourceList();
// 数据打乱
Collections.shuffle(resourceList);
// 去除重复数据
List<String> arrayList =
List<Long> arrayList =
Lists.newArrayList(Sets.newHashSet(resourceList));
int resourceSize = arrayList.size();
// 集合求和
@ -47,7 +48,7 @@ public class AssignDataService {
Map<Long, Double> deptMap =
deptIds.stream().collect(Collectors.toMap(key -> key, key -> weights.get(deptIds.indexOf(key))));
Map<Long, Double> longDoubleMap = MapUtil.sortByValue(deptMap, Boolean.FALSE);
List<String> value;
List<Long> value;
List<DistributeResponseDTO> list = new ArrayList<>();
DistributeResponseDTO distributeResponseDTO;
int num = DefaultNumberConstants.ZERO_NUMBER;

Loading…
Cancel
Save