用户数量余额+录入类型代码提交

master
yqy 12 months ago
parent ef0a06b257
commit 2ef02b2cde

@ -20,7 +20,8 @@ public enum BaseResultCode implements ResultCode {
/** /**
* *
*/ */
LOGIC_CHECK_ERROR(90004, "Logic Check Error"), LOGIC_CHECK_ERROR(400, "Logic Check Error"),
// LOGIC_CHECK_ERROR(90004, "Logic Check Error"),
/** /**
* *

@ -16,6 +16,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* *
@ -207,9 +208,16 @@ public interface SysUserService extends ExtendService<SysUser> {
SysUser findById(Long id); SysUser findById(Long id);
/** /**
* * -
* @param map
* @param bool admin
* @return true false
*/ */
void updateDistributeNum(List<SysUser> updateSysUserList); boolean detectionAvailableNumUpdate(Map<Long, Integer> map, boolean bool);
/**
*
* @return nickname: null:
*/
String detectionAvailableNum(List<Long> userIds);
} }

@ -5,6 +5,7 @@ import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baiye.enums.SalesManEnum; import com.baiye.enums.SalesManEnum;
import com.baiye.exception.BadRequestException;
import com.baiye.system.checker.AdminUserChecker; import com.baiye.system.checker.AdminUserChecker;
import com.baiye.system.converter.SysUserConverter; import com.baiye.system.converter.SysUserConverter;
import com.baiye.system.event.UserCreatedEvent; import com.baiye.system.event.UserCreatedEvent;
@ -192,6 +193,8 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
// 保存用户 // 保存用户
sysUser.setWhichUserId(SecurityUtils.getCurrentUserId()); sysUser.setWhichUserId(SecurityUtils.getCurrentUserId());
sysUser.setResidueClueNum(0);
sysUser.setChargingStatus(0);
boolean insertSuccess = SqlHelper.retBool(baseMapper.insert(sysUser)); boolean insertSuccess = SqlHelper.retBool(baseMapper.insert(sysUser));
Assert.isTrue(insertSuccess, () -> { Assert.isTrue(insertSuccess, () -> {
log.error("[addSysUser] 数据插入系统用户表失败user{}", sysUserDto); log.error("[addSysUser] 数据插入系统用户表失败user{}", sysUserDto);
@ -463,17 +466,40 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
} }
@Override @Override
public void updateDistributeNum(List<SysUser> updateSysUserList) { @Transactional(rollbackFor = Exception.class)
if (CollUtil.isNotEmpty(updateSysUserList)) { public boolean detectionAvailableNumUpdate(Map<Long, Integer> map, boolean bool) {
List<SysUser> updateList = new ArrayList<>(); if (CollUtil.isNotEmpty(map)) throw new BadRequestException("用户不能为空");
for (SysUser sysUser : updateSysUserList) { List<SysUser> sysUserList = this.listByIds(map.keySet());
SysUser updateUser = new SysUser(); Long whichUserId = sysUserList.get(0).getWhichUserId();
updateUser.setUserId(sysUser.getUserId());
updateUser.setDistributeNum(sysUser.getDistributeNum()); SysUser sysUser = baseMapper.selectById(whichUserId);
updateList.add(updateUser); for (SysUser user : sysUserList) {
Integer clueNum = map.get(user.getUserId());
// 非admin下发时 并且 公司管理员账号开启了计费模式(检测余额数量是否充足)
if (!bool && sysUser.getChargingStatus() == 1) {
Integer residueClueNum = user.getResidueClueNum();
if (residueClueNum < clueNum) throw new BadRequestException(user.getNickname() + "用户余额不足!!");
user.setResidueClueNum(residueClueNum - clueNum);
}
user.setDistributeNum(user.getDistributeNum() + clueNum);
}
this.updateBatchById(sysUserList);
return true;
}
@Override
public String detectionAvailableNum(List<Long> userIds) {
if (CollUtil.isNotEmpty(userIds)) throw new BadRequestException("用户不能为空");
List<SysUser> sysUsers = this.listByUserIds(userIds);
Long whichUserId = sysUsers.get(0).getWhichUserId();
if (whichUserId != 1) {
SysUser whichUser = baseMapper.selectById(whichUserId);
for (SysUser sysUser : sysUsers) {
if (whichUser.getChargingStatus() == 1 && sysUser.getResidueClueNum() <= 0)
return sysUser.getNickname();
} }
this.updateBatchById(updateList);
} }
return null;
} }
} }

@ -19,7 +19,9 @@
su.create_time, su.create_time,
su.update_time, su.update_time,
su.which_user_id, su.which_user_id,
su.distribute_num su.distribute_num,
su.charging_status,
su.residue_clue_num
</sql> </sql>
<select id="selectByPage" resultType="com.baiye.system.model.vo.SysUserPageVO"> <select id="selectByPage" resultType="com.baiye.system.model.vo.SysUserPageVO">

@ -100,4 +100,10 @@ public class SysUserDTO {
@Schema(title = "角色标识列表") @Schema(title = "角色标识列表")
private List<String> roleCodes; private List<String> roleCodes;
@Schema(title = "计费状态 0不计费 1计费")
private Integer chargingStatus;
@Schema(title = "剩余线索数量")
private Integer residueClueNum;
} }

@ -105,4 +105,10 @@ public class SysUser extends LogicDeletedBaseEntity {
@Schema(title = "分发线索总量") @Schema(title = "分发线索总量")
private Integer distributeNum; private Integer distributeNum;
@Schema(title = "计费状态 0不计费 1计费")
private Integer chargingStatus;
@Schema(title = "剩余线索数量")
private Integer residueClueNum;
} }

@ -105,4 +105,10 @@ public class SysUserPageVO implements Serializable {
private List<SysUserPageVO> children; private List<SysUserPageVO> children;
@Schema(title = "计费状态 0不计费 1计费")
private Integer chargingStatus;
@Schema(title = "剩余线索数量")
private Integer residueClueNum;
} }

@ -6,6 +6,8 @@ import com.baiye.validation.group.UpdateGroup;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.List; import java.util.List;
@ -18,33 +20,29 @@ public class CustomDTO {
private Long customId; private Long customId;
@Schema(title = "客户名称") @Schema(title = "客户名称")
@NotNull(message = "客户名称不能为空", groups = { CreateGroup.class }) @NotBlank(message = "客户名称不能为空", groups = { CreateGroup.class, UpdateGroup.class })
private String customName; private String customName;
@Schema(title = "客户联系方式") @Schema(title = "客户联系方式")
@NotNull(message = "客户联系方式不能为空", groups = { CreateGroup.class }) @NotBlank(message = "客户联系方式不能为空", groups = { CreateGroup.class, UpdateGroup.class })
private String customNid; private String customNid;
@Schema(title = "省") @Schema(title = "省")
@NotNull(message = "地址不能为空", groups = { CreateGroup.class })
private String economize; private String economize;
@Schema(title = "市") @Schema(title = "市")
@NotNull(message = "地址不能为空", groups = { CreateGroup.class })
private String market; private String market;
@Schema(title = "区") @Schema(title = "区")
private String distinguish; private String distinguish;
@Schema(title = "详细地址") @Schema(title = "详细地址")
@NotNull(message = "详细地址不能为空", groups = { CreateGroup.class })
private String detailAddress; private String detailAddress;
@Schema(title = "其它地址信息-定位使用") @Schema(title = "其它地址信息-定位使用")
private String otherAddressesInfo; private String otherAddressesInfo;
@Schema(title = "半径") @Schema(title = "半径")
@NotNull(message = "半径不能为空", groups = { CreateGroup.class })
private String radius; private String radius;
@Schema(title = "报名状态 0:待提交 1:已报名") @Schema(title = "报名状态 0:待提交 1:已报名")
@ -54,7 +52,10 @@ public class CustomDTO {
@Schema(title = "备注") @Schema(title = "备注")
private String remark; private String remark;
@Schema(title = "客户类型 0:A型 1:B型")
@NotNull(message = "客户类型不能为空")
private Integer customType;
@Schema(title = "门店信息") @Schema(title = "门店信息")
@NotEmpty(message = "门店信息不能为空", groups = { CreateGroup.class })
private List<CustomStoreEntity> customStoreEntities; private List<CustomStoreEntity> customStoreEntities;
} }

@ -83,4 +83,7 @@ public class CustomEntity extends BaseEntity {
@Schema(title = "备注") @Schema(title = "备注")
private String remark; private String remark;
@Schema(title = "客户类型 0:A型 1:B型")
private Integer customType;
} }

@ -1,7 +1,6 @@
package com.baiye.modules.distribute.entity; package com.baiye.modules.distribute.entity;
import com.baiye.entity.BaseEntity; import com.baiye.entity.BaseEntity;
import com.baiye.validation.group.CreateGroup;
import com.baiye.validation.group.UpdateGroup; import com.baiye.validation.group.UpdateGroup;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
@ -10,6 +9,7 @@ import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -28,20 +28,19 @@ public class CustomStoreEntity extends BaseEntity {
private Long customStoreId; private Long customStoreId;
@Schema(title = "门店ID") @Schema(title = "门店ID")
@NotNull(message = "门店不能为空")
private Long storeId; private Long storeId;
@Schema(title = "客户ID") @Schema(title = "客户ID")
private Long customId; private Long customId;
@Schema(title = "门店名称") @Schema(title = "门店名称")
@NotNull(message = "门店名称不能为空", groups = { CreateGroup.class }) @NotBlank(message = "门店名称不能为空")
private String storeName; private String storeName;
@Schema(title = "预约日期") @Schema(title = "预约日期")
@NotNull(message = "预约日期不能为空", groups = { CreateGroup.class })
private LocalDateTime reservationDate; private LocalDateTime reservationDate;
@Schema(title = "预约时间") @Schema(title = "预约时间")
@NotNull(message = "预约时间不能为空", groups = { CreateGroup.class })
private String reservationTime; private String reservationTime;
} }

@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil;
import com.baiye.domain.PageParam; import com.baiye.domain.PageParam;
import com.baiye.domain.PageResult; import com.baiye.domain.PageResult;
import com.baiye.enums.ClueSourceEnum; import com.baiye.enums.ClueSourceEnum;
import com.baiye.exception.BadRequestException;
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl; import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
import com.baiye.modules.distribute.converter.CustomConverter; import com.baiye.modules.distribute.converter.CustomConverter;
import com.baiye.modules.distribute.dto.ChangeCustomDTO; import com.baiye.modules.distribute.dto.ChangeCustomDTO;
@ -77,6 +78,7 @@ public class CustomServiceImpl extends ExtendServiceImpl<CustomMapper, CustomEnt
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean add(CustomDTO customDTO) { public boolean add(CustomDTO customDTO) {
this.validDate(customDTO);
User user = SecurityUtils.getUser(); User user = SecurityUtils.getUser();
Long companyId = user.getWhichUserId(); Long companyId = user.getWhichUserId();
CustomEntity customEntity = CustomConverter.INSTANCE.dtoToPo(customDTO); CustomEntity customEntity = CustomConverter.INSTANCE.dtoToPo(customDTO);
@ -100,6 +102,7 @@ public class CustomServiceImpl extends ExtendServiceImpl<CustomMapper, CustomEnt
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean update(CustomDTO customDTO) { public boolean update(CustomDTO customDTO) {
this.validDate(customDTO);
CustomEntity customEntity = CustomConverter.INSTANCE.dtoToPo(customDTO); CustomEntity customEntity = CustomConverter.INSTANCE.dtoToPo(customDTO);
// 修改预约信息 // 修改预约信息
customStoreService.updateCustomStoreInfo(customDTO.getCustomStoreEntities(), customDTO.getCustomId()); customStoreService.updateCustomStoreInfo(customDTO.getCustomStoreEntities(), customDTO.getCustomId());
@ -181,4 +184,21 @@ public class CustomServiceImpl extends ExtendServiceImpl<CustomMapper, CustomEnt
} }
return Boolean.FALSE; return Boolean.FALSE;
} }
/**
*
*/
public void validDate(CustomDTO customDTO){
if (customDTO.getEnrollStatus() == 1 && customDTO.getCustomType() == 0){
String economize = customDTO.getEconomize();
String market = customDTO.getMarket();
String detailAddress = customDTO.getDetailAddress();
String radius = customDTO.getRadius();
List<CustomStoreEntity> customStoreEntities = customDTO.getCustomStoreEntities();
if (StringUtils.isBlank(economize) || StringUtils.isBlank(market)) throw new BadRequestException("省市不能为空");
if (StringUtils.isBlank(detailAddress)) throw new BadRequestException("详细地址不能为空");
if (StringUtils.isBlank(radius)) throw new BadRequestException("半径不能为空");
if (CollUtil.isEmpty(customStoreEntities)) throw new BadRequestException("门店信息不能为空");
}
}
} }

@ -60,13 +60,13 @@ public class CustomStoreServiceImpl extends ExtendServiceImpl<CustomStoreMapper,
return map; return map;
} }
/**
* (使,)
*/
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateCustomStoreInfo(List<CustomStoreEntity> customStoreEntities, Long customId) { public void updateCustomStoreInfo(List<CustomStoreEntity> customStoreEntities, Long customId) {
if (CollUtil.isEmpty(customStoreEntities)) throw new BadRequestException("预约门店不能为空"); if (CollUtil.isEmpty(customStoreEntities)){
baseMapper.delete(new LambdaQueryWrapper<CustomStoreEntity>().eq(CustomStoreEntity::getCustomId, customId));
return;
}
// 修改时,预约门店关联的客户ID是确定的(编辑客户时新增门店,关联客户ID) // 修改时,预约门店关联的客户ID是确定的(编辑客户时新增门店,关联客户ID)
customStoreEntities.forEach(c -> c.setCustomId(customId)); customStoreEntities.forEach(c -> c.setCustomId(customId));
List<CustomStoreEntity> entities = baseMapper.selectList(new LambdaQueryWrapper<CustomStoreEntity>().eq(CustomStoreEntity::getCustomId, customId)); List<CustomStoreEntity> entities = baseMapper.selectList(new LambdaQueryWrapper<CustomStoreEntity>().eq(CustomStoreEntity::getCustomId, customId));

@ -43,8 +43,7 @@ import java.util.stream.Collectors;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskMapper, DistributeTaskEntity> public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskMapper, DistributeTaskEntity> implements DistributeTaskService {
implements DistributeTaskService {
private final DistributeTaskUserMapper distributeTaskUserMapper; private final DistributeTaskUserMapper distributeTaskUserMapper;
@ -103,9 +102,7 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
if (CollUtil.isNotEmpty(userList)) { if (CollUtil.isNotEmpty(userList)) {
// 验证数据 // 验证数据
List<Long> userIdList = userList.stream() List<Long> userIdList = userList.stream().map(DistributeTaskUserDTO::getUserId).collect(Collectors.toList());
.map(DistributeTaskUserDTO::getUserId)
.collect(Collectors.toList());
this.inspectUserTask(userIdList); this.inspectUserTask(userIdList);
} }
this.verifyData(distributeTaskDTO); this.verifyData(distributeTaskDTO);
@ -144,7 +141,7 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
// 修改任务用户关系映射 // 修改任务用户关系映射
if (CollUtil.isNotEmpty(distributeTaskDTO.getUsers())) { if (CollUtil.isNotEmpty(distributeTaskDTO.getUsers())) {
distributeTaskUserMapper.delete(new LambdaQueryWrapper<DistributeTaskUserEntity>() distributeTaskUserMapper.delete(new LambdaQueryWrapper<DistributeTaskUserEntity>()
.eq(DistributeTaskUserEntity::getDistributeTaskId, distributeTaskId)); .eq(DistributeTaskUserEntity::getDistributeTaskId, distributeTaskId));
this.insertUser(distributeTaskDTO.getUsers(), taskEntity.getDistributeTaskId()); this.insertUser(distributeTaskDTO.getUsers(), taskEntity.getDistributeTaskId());
} }
@ -159,15 +156,13 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
DistributeTaskEntity entity = baseMapper.selectById(taskId); DistributeTaskEntity entity = baseMapper.selectById(taskId);
if (entity.getExecuteStatus() == 0) { if (entity.getExecuteStatus() == 0) {
String fileRecordId = entity.getFileRecordId(); String fileRecordId = entity.getFileRecordId();
List<Long> recordIdList = Arrays.stream(fileRecordId.split(",")) List<Long> recordIdList = Arrays.stream(fileRecordId.split(",")).map(Long::parseLong).collect(Collectors.toList());
.map(Long::parseLong)
.collect(Collectors.toList());
clueRecordMapper.updateDistributeStatus(recordIdList, 0); clueRecordMapper.updateDistributeStatus(recordIdList, 0);
} }
// 删除 // 删除
int taskBool = baseMapper.deleteById(taskId); int taskBool = baseMapper.deleteById(taskId);
int userBool = distributeTaskUserMapper.delete(new LambdaQueryWrapper<DistributeTaskUserEntity>() int userBool = distributeTaskUserMapper.delete(new LambdaQueryWrapper<DistributeTaskUserEntity>()
.eq(DistributeTaskUserEntity::getDistributeTaskId, taskId)); .eq(DistributeTaskUserEntity::getDistributeTaskId, taskId));
// 删除定时任务 // 删除定时任务
jobService.removeJob(PrefixKeyConstant.JOB_KEY + taskId); jobService.removeJob(PrefixKeyConstant.JOB_KEY + taskId);
return taskBool > 0 && userBool > 0; return taskBool > 0 && userBool > 0;
@ -177,10 +172,8 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean executeTask(Long taskId) { public Boolean executeTask(Long taskId) {
DistributeTaskEntity taskEntity = baseMapper.selectById(taskId); DistributeTaskEntity taskEntity = baseMapper.selectById(taskId);
DistributeTaskEntity updateEntity = new DistributeTaskEntity(); DistributeTaskEntity updateEntity = new DistributeTaskEntity();
updateEntity.setDistributeTaskId(taskId); updateEntity.setDistributeTaskId(taskId);
if (taskEntity != null) { if (taskEntity != null) {
// 执行手动任务(立即执行分发) // 执行手动任务(立即执行分发)
Integer timeStatus = taskEntity.getTimeStatus(); Integer timeStatus = taskEntity.getTimeStatus();
@ -193,8 +186,7 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
Job jobDetail = jobService.getJobDetail(PrefixKeyConstant.JOB_KEY + taskId); Job jobDetail = jobService.getJobDetail(PrefixKeyConstant.JOB_KEY + taskId);
if (jobDetail != null && jobDetail.getJobName() != null) { if (jobDetail != null && jobDetail.getJobName() != null) {
jobService.resumeJob(PrefixKeyConstant.JOB_KEY + taskId);// 开启定时任务 jobService.resumeJob(PrefixKeyConstant.JOB_KEY + taskId);// 开启定时任务
} } else {
else {
this.addJob(taskId, taskEntity.getStartTime(), true);// 添加定时任务 this.addJob(taskId, taskEntity.getStartTime(), true);// 添加定时任务
} }
updateEntity.setExecuteStatus(1); updateEntity.setExecuteStatus(1);
@ -212,13 +204,12 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
BeanUtils.copyProperties(distributeTaskEntity, distributeTaskVO); BeanUtils.copyProperties(distributeTaskEntity, distributeTaskVO);
List<DistributeTaskUserEntity> userEntities = distributeTaskUserMapper List<DistributeTaskUserEntity> userEntities = distributeTaskUserMapper
.selectList(new LambdaQueryWrapper<DistributeTaskUserEntity>() .selectList(new LambdaQueryWrapper<DistributeTaskUserEntity>()
.eq(DistributeTaskUserEntity::getDistributeTaskId, id)); .eq(DistributeTaskUserEntity::getDistributeTaskId, id));
// 返回用户权重任务关联信息 // 返回用户权重任务关联信息
if (CollUtil.isNotEmpty(userEntities)) { if (CollUtil.isNotEmpty(userEntities)) {
Map<Long, List<DistributeTaskUserEntity>> map = userEntities.stream() Map<Long, List<DistributeTaskUserEntity>> map = userEntities.stream().collect(Collectors.groupingBy(DistributeTaskUserEntity::getUserId));
.collect(Collectors.groupingBy(DistributeTaskUserEntity::getUserId));
List<SysUser> sysUsers = sysUserService.listByUserIds(map.keySet()); List<SysUser> sysUsers = sysUserService.listByUserIds(map.keySet());
List<Map<String, Object>> list = new ArrayList<>(); List<Map<String, Object>> list = new ArrayList<>();
for (SysUser sysUser : sysUsers) { for (SysUser sysUser : sysUsers) {
@ -231,15 +222,13 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
userMap.put("weight", distributeTaskUserEntity.getWeight()); userMap.put("weight", distributeTaskUserEntity.getWeight());
} }
list.add(userMap); list.add(userMap);
distributeTaskVO.setUserList(list);
} }
distributeTaskVO.setUserList(list);
} }
// 返回任务和文件记录信息 // 返回任务和文件记录信息
if (distributeTaskEntity.getDistributeTaskType() == DefaultNumberConstants.ZERO_NUMBER) { if (distributeTaskEntity.getDistributeTaskType() == DefaultNumberConstants.ZERO_NUMBER) {
String fileRecordId = distributeTaskEntity.getFileRecordId(); String fileRecordId = distributeTaskEntity.getFileRecordId();
List<Long> recordIdList = Arrays.stream(fileRecordId.split(",")) List<Long> recordIdList = Arrays.stream(fileRecordId.split(",")).map(Long::parseLong).collect(Collectors.toList());
.map(Long::parseLong)
.collect(Collectors.toList());
List<ClueRecordEntity> clueRecordEntities = clueRecordMapper.selectBatchIds(recordIdList); List<ClueRecordEntity> clueRecordEntities = clueRecordMapper.selectBatchIds(recordIdList);
List<Map<String, Object>> list = new ArrayList<>(); List<Map<String, Object>> list = new ArrayList<>();
for (ClueRecordEntity clueRecordEntity : clueRecordEntities) { for (ClueRecordEntity clueRecordEntity : clueRecordEntities) {
@ -247,8 +236,8 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
recordMap.put("recordId", clueRecordEntity.getClueRecordId()); recordMap.put("recordId", clueRecordEntity.getClueRecordId());
recordMap.put("fileName", clueRecordEntity.getOldFileName()); recordMap.put("fileName", clueRecordEntity.getOldFileName());
list.add(recordMap); list.add(recordMap);
distributeTaskVO.setRecordList(list);
} }
distributeTaskVO.setRecordList(list);
} }
return distributeTaskVO; return distributeTaskVO;
} }
@ -264,39 +253,30 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
Long createBy = taskEntity.getCreateBy(); Long createBy = taskEntity.getCreateBy();
// 任务中指定的分配人 // 任务中指定的分配人
List<DistributeTaskUserEntity> userEntities = distributeTaskUserMapper List<DistributeTaskUserEntity> userEntities = distributeTaskUserMapper
.selectList(new LambdaQueryWrapper<DistributeTaskUserEntity>() .selectList(new LambdaQueryWrapper<DistributeTaskUserEntity>()
.eq(DistributeTaskUserEntity::getDistributeTaskId, taskEntity.getDistributeTaskId())); .eq(DistributeTaskUserEntity::getDistributeTaskId, taskEntity.getDistributeTaskId()));
if (CollUtil.isEmpty(userEntities)) if (CollUtil.isEmpty(userEntities)) throw new BadRequestException("任务无分配人");
throw new BadRequestException("任务无分配人"); List<Long> userIdList = userEntities.stream().map(DistributeTaskUserEntity::getUserId).collect(Collectors.toList());
List<Long> userIdList = userEntities.stream()
.map(DistributeTaskUserEntity::getUserId)
.collect(Collectors.toList());
// 查看任务类型 获取文件记录ID // 查看任务类型 获取文件记录ID
List<Long> recordIdList = new ArrayList<>(); List<Long> recordIdList = new ArrayList<>();
if (StringUtils.isNotBlank(fileRecordId) if (StringUtils.isNotBlank(fileRecordId) && (taskEntity.getDistributeTaskType() == 0 || taskEntity.getDefaultType() == 0)) {
&& (taskEntity.getDistributeTaskType() == 0 || taskEntity.getDefaultType() == 0)) {
recordIdList = Arrays.stream(fileRecordId.split(",")).map(Long::parseLong).collect(Collectors.toList()); recordIdList = Arrays.stream(fileRecordId.split(",")).map(Long::parseLong).collect(Collectors.toList());
} } else {
else {
String fileRulePrefix = taskEntity.getFileRulePrefix(); String fileRulePrefix = taskEntity.getFileRulePrefix();
List<ClueRecordEntity> recordEntities = clueRecordMapper List<ClueRecordEntity> recordEntities = clueRecordMapper.selectList(new LambdaQueryWrapper<ClueRecordEntity>()
.selectList(new LambdaQueryWrapper<ClueRecordEntity>()
.likeRight(ClueRecordEntity::getOldFileName, fileRulePrefix) .likeRight(ClueRecordEntity::getOldFileName, fileRulePrefix)
.eq(ClueRecordEntity::getCreateBy, taskEntity.getCreateBy()) .eq(ClueRecordEntity::getCreateBy, taskEntity.getCreateBy())
.eq(ClueRecordEntity::getAllocationStatus, 0)); .eq(ClueRecordEntity::getAllocationStatus, 0));
if (CollUtil.isNotEmpty(recordEntities)) { if (CollUtil.isNotEmpty(recordEntities)) {
recordIdList = recordEntities.stream() recordIdList = recordEntities.stream().map(ClueRecordEntity::getClueRecordId).collect(Collectors.toList());
.map(ClueRecordEntity::getClueRecordId)
.collect(Collectors.toList());
} }
} }
if (CollUtil.isNotEmpty(recordIdList)) { if (CollUtil.isNotEmpty(recordIdList)) {
// 查询分配人用户信息 // 查询分配人用户信息
List<SysUser> updateSysUserList = new ArrayList<>();
List<SysUser> sysUsers = sysUserService.listByUserIds(userIdList); List<SysUser> sysUsers = sysUserService.listByUserIds(userIdList);
Map<Long, List<SysUser>> userIdMap = sysUsers.stream() Map<Long, List<SysUser>> userIdMap = sysUsers.stream()
.collect(Collectors.groupingBy(SysUser::getUserId)); .collect(Collectors.groupingBy(SysUser::getUserId));
// 获取文件中未分配的资源 // 获取文件中未分配的资源
List<Long> clueIds = clueService.findUndistributedClueIds(recordIdList); List<Long> clueIds = clueService.findUndistributedClueIds(recordIdList);
// 分配 // 分配
@ -306,9 +286,7 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
distributeDTO.setResourceList(clueIds); distributeDTO.setResourceList(clueIds);
if (taskEntity.getRuleStatus() == DefaultNumberConstants.ONE_NUMBER) { if (taskEntity.getRuleStatus() == DefaultNumberConstants.ONE_NUMBER) {
distributeDTO.setIsWeight(true); distributeDTO.setIsWeight(true);
List<Integer> weightList = userEntities.stream() List<Integer> weightList = userEntities.stream().map(DistributeTaskUserEntity::getWeight).collect(Collectors.toList());
.map(DistributeTaskUserEntity::getWeight)
.collect(Collectors.toList());
List<Double> weights = weightList.stream().map(i -> i * 10.0).collect(Collectors.toList()); List<Double> weights = weightList.stream().map(i -> i * 10.0).collect(Collectors.toList());
distributeDTO.setWeights(weights); distributeDTO.setWeights(weights);
} }
@ -318,19 +296,16 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
if (createBy == 1) { if (createBy == 1) {
List<ClueRecordEntity> recordEntities = clueRecordMapper.selectList( List<ClueRecordEntity> recordEntities = clueRecordMapper.selectList(
new LambdaQueryWrapper<ClueRecordEntity>().in(ClueRecordEntity::getCreateBy, userIdList) new LambdaQueryWrapper<ClueRecordEntity>().in(ClueRecordEntity::getCreateBy, userIdList)
.eq(ClueRecordEntity::getRecordType, DefaultNumberConstants.ONE_NUMBER)); .eq(ClueRecordEntity::getRecordType, DefaultNumberConstants.ONE_NUMBER));
map = recordEntities.stream().collect(Collectors.groupingBy(ClueRecordEntity::getCreateBy)); map = recordEntities.stream().collect(Collectors.groupingBy(ClueRecordEntity::getCreateBy));
} }
List<ClueEntity> clueEntityList = new ArrayList<>(); List<ClueEntity> clueEntityList = new ArrayList<>();
Map<Long, Integer> updateUserNumMap = new HashMap<>();
// 更新分配信息 // 更新分配信息
for (DistributeResponseDTO responseDTO : responseDTOS) { for (DistributeResponseDTO responseDTO : responseDTOS) {
// 用户分发量修改
if (userIdMap.containsKey(responseDTO.getDeptId())) {
SysUser sysUser = userIdMap.get(responseDTO.getDeptId()).get(0);
sysUser.setDistributeNum(sysUser.getDistributeNum() + responseDTO.getResponseList().size());
updateSysUserList.add(sysUser);
}
Long assignedBy = responseDTO.getDeptId(); Long assignedBy = responseDTO.getDeptId();
updateUserNumMap.put(assignedBy, responseDTO.getResponseList().size());
for (Long clueId : responseDTO.getResponseList()) { for (Long clueId : responseDTO.getResponseList()) {
ClueEntity clueEntity = new ClueEntity(); ClueEntity clueEntity = new ClueEntity();
clueEntity.setClueId(clueId); clueEntity.setClueId(clueId);
@ -358,11 +333,9 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
} }
} }
// 批量修改数据 // 批量修改数据
if (CollUtil.isNotEmpty(clueEntityList)) { if (CollUtil.isNotEmpty(clueEntityList)) clueService.updateBatchById(clueEntityList);
clueService.updateBatchById(clueEntityList); // 用户分发量检测-扣减-修改
} sysUserService.detectionAvailableNumUpdate(updateUserNumMap, createBy == 1);
// 用户分发量修改
sysUserService.updateDistributeNum(updateSysUserList);
// 修改任务执行次数+1 // 修改任务执行次数+1
baseMapper.updateByExecuteNumAddOne(taskEntity.getDistributeTaskId()); baseMapper.updateByExecuteNumAddOne(taskEntity.getDistributeTaskId());
// 修改记录分配状态 // 修改记录分配状态
@ -370,9 +343,7 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
clueRecordMapper.updateAllocationStatusAndDistributeStatus(recordIdList, 1, 1); clueRecordMapper.updateAllocationStatusAndDistributeStatus(recordIdList, 1, 1);
} }
// 分发下级任务 // 分发下级任务
if (taskEntity.getCreateBy() == 1) { if (taskEntity.getCreateBy() == 1) this.syncExecuteTask(userIdList);
this.syncExecuteTask(userIdList);
}
} }
} }
} }
@ -380,13 +351,12 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
@Override @Override
public boolean updateData(DistributeTaskEntity distributeTaskEntity) { public boolean updateData(DistributeTaskEntity distributeTaskEntity) {
baseMapper.updateById(distributeTaskEntity); return SqlHelper.retBool(baseMapper.updateById(distributeTaskEntity));
return false;
} }
@Override @Override
public void addDefaultTask(String taskName, String prefixName, String recordId, Long createUserId, public void addDefaultTask(String taskName, String prefixName, String recordId, Long createUserId,
Long allocationBy) { Long allocationBy) {
// 创建默认任务 // 创建默认任务
DistributeTaskEntity taskEntity = new DistributeTaskEntity(); DistributeTaskEntity taskEntity = new DistributeTaskEntity();
taskEntity.setDistributeTaskType(1); taskEntity.setDistributeTaskType(1);
@ -411,29 +381,14 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
taskUserEntity.setDistributeTaskId(taskEntity.getDistributeTaskId()); taskUserEntity.setDistributeTaskId(taskEntity.getDistributeTaskId());
distributeTaskUserMapper.insert(taskUserEntity); distributeTaskUserMapper.insert(taskUserEntity);
} }
// 任务默认下级用户平均分配
// BaseMapper<SysUser> sysUserBaseMapper = sysUserService.getBaseMapper();
// List<SysUser> sysUserList = sysUserBaseMapper
// .selectList(new LambdaQueryWrapper<SysUser>().eq(SysUser::getWhichUserId,
// userId));
// if (CollUtil.isNotEmpty(sysUserList)) {
// List<DistributeTaskUserEntity> list = new ArrayList<>();
// for (SysUser sysUser : sysUserList) {
// DistributeTaskUserEntity taskUserEntity = new DistributeTaskUserEntity();
// taskUserEntity.setUserId(sysUser.getUserId());
// taskUserEntity.setDistributeTaskId(taskEntity.getDistributeTaskId());
// list.add(taskUserEntity);
// }
// if (CollUtil.isNotEmpty(list))
// distributeTaskUserMapper.insertBatchSomeColumn(list);
// }
} }
/** /**
* *
* @param taskId ID *
* @param taskId ID
* @param startTime * @param startTime
* @param bool true: false: * @param bool true: false:
*/ */
private void addJob(Long taskId, LocalDateTime startTime, Boolean bool) { private void addJob(Long taskId, LocalDateTime startTime, Boolean bool) {
Job job = new Job(); Job job = new Job();
@ -443,8 +398,7 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
job.setJobClass("com.baiye.job.LinkWatchJob"); job.setJobClass("com.baiye.job.LinkWatchJob");
if (bool) { if (bool) {
jobService.addJob(job); jobService.addJob(job);
} } else {
else {
jobService.updateJob(job); jobService.updateJob(job);
} }
} }
@ -478,6 +432,9 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
if (sum != DefaultNumberConstants.TEN_NUMBER) if (sum != DefaultNumberConstants.TEN_NUMBER)
throw new BadRequestException("权重分配不符合10份制"); throw new BadRequestException("权重分配不符合10份制");
} }
List<Long> userIds = userList.stream().map(DistributeTaskUserDTO::getUserId).collect(Collectors.toList());
String nickName = sysUserService.detectionAvailableNum(userIds);
if (StringUtils.isNotBlank(nickName)) throw new BadRequestException(nickName + "余额不足");
} }
} }
@ -503,37 +460,35 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
if (SecurityUtils.getCurrentUserId() == 1 && CollUtil.isNotEmpty(userIdList)) { if (SecurityUtils.getCurrentUserId() == 1 && CollUtil.isNotEmpty(userIdList)) {
List<DistributeTaskEntity> taskEntities = baseMapper.selectList( List<DistributeTaskEntity> taskEntities = baseMapper.selectList(
new LambdaQueryWrapper<DistributeTaskEntity>().in(DistributeTaskEntity::getCreateBy, userIdList) new LambdaQueryWrapper<DistributeTaskEntity>().in(DistributeTaskEntity::getCreateBy, userIdList)
.eq(DistributeTaskEntity::getDefaultType, 0) .eq(DistributeTaskEntity::getDefaultType, 0)
.ne(DistributeTaskEntity::getExecuteStatus, 0)); .ne(DistributeTaskEntity::getExecuteStatus, 0));
if (CollUtil.isNotEmpty(taskEntities)) { if (CollUtil.isNotEmpty(taskEntities)) {
List<Long> taskIds = taskEntities.stream() List<Long> taskIds = taskEntities.stream()
.map(DistributeTaskEntity::getDistributeTaskId) .map(DistributeTaskEntity::getDistributeTaskId)
.collect(Collectors.toList()); .collect(Collectors.toList());
if (taskIds.size() < userIdList.size()) { if (taskIds.size() < userIdList.size()) {
throw new BadRequestException("用户默认分发任务无分配用户,请检查用户的分配任务"); throw new BadRequestException("用户默认分发任务无分配用户,请检查用户的分配任务");
} }
List<DistributeTaskUserEntity> taskUserEntities = distributeTaskUserMapper List<DistributeTaskUserEntity> taskUserEntities = distributeTaskUserMapper
.selectList(new LambdaQueryWrapper<DistributeTaskUserEntity>() .selectList(new LambdaQueryWrapper<DistributeTaskUserEntity>()
.in(DistributeTaskUserEntity::getDistributeTaskId, taskIds)); .in(DistributeTaskUserEntity::getDistributeTaskId, taskIds));
if (CollUtil.isNotEmpty(taskUserEntities)) { if (CollUtil.isNotEmpty(taskUserEntities)) {
Map<Long, List<DistributeTaskUserEntity>> map = taskUserEntities.stream() Map<Long, List<DistributeTaskUserEntity>> map = taskUserEntities.stream()
.collect(Collectors.groupingBy(DistributeTaskUserEntity::getDistributeTaskId)); .collect(Collectors.groupingBy(DistributeTaskUserEntity::getDistributeTaskId));
for (Long taskId : taskIds) { for (Long taskId : taskIds) {
if (!map.containsKey(taskId)) { if (!map.containsKey(taskId)) {
Map<Long, List<DistributeTaskEntity>> listMap = taskEntities.stream() Map<Long, List<DistributeTaskEntity>> listMap = taskEntities.stream()
.collect(Collectors.groupingBy(DistributeTaskEntity::getDistributeTaskId)); .collect(Collectors.groupingBy(DistributeTaskEntity::getDistributeTaskId));
Long createBy = listMap.get(taskId).get(0).getCreateBy(); Long createBy = listMap.get(taskId).get(0).getCreateBy();
SysUser sysUser = sysUserService.getById(createBy); SysUser sysUser = sysUserService.getById(createBy);
throw new BadRequestException("用户:" + sysUser.getUsername() + " 默认分发任务中无分配人,请通知整改后操作该用户"); throw new BadRequestException("用户:" + sysUser.getUsername() + " 默认分发任务中无分配人,请通知整改后操作该用户");
} }
} }
} } else {
else {
throw new BadRequestException("用户默认分发任务无分配用户,请检查用户的分配任务"); throw new BadRequestException("用户默认分发任务无分配用户,请检查用户的分配任务");
} }
} } else {
else {
throw new BadRequestException("用户无默认分发任务,请检查用户的分配任务"); throw new BadRequestException("用户无默认分发任务,请检查用户的分配任务");
} }
} }
@ -544,8 +499,8 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
*/ */
private void syncExecuteTask(List<Long> userIdList) { private void syncExecuteTask(List<Long> userIdList) {
List<DistributeTaskEntity> taskEntities = baseMapper List<DistributeTaskEntity> taskEntities = baseMapper
.selectList(new LambdaQueryWrapper<DistributeTaskEntity>().eq(DistributeTaskEntity::getDefaultType, 0) .selectList(new LambdaQueryWrapper<DistributeTaskEntity>().eq(DistributeTaskEntity::getDefaultType, 0)
.in(DistributeTaskEntity::getCreateBy, userIdList)); .in(DistributeTaskEntity::getCreateBy, userIdList));
if (CollUtil.isNotEmpty(taskEntities)) { if (CollUtil.isNotEmpty(taskEntities)) {
for (DistributeTaskEntity distributeTaskEntity : taskEntities) { for (DistributeTaskEntity distributeTaskEntity : taskEntities) {
Integer executeStatus = distributeTaskEntity.getExecuteStatus(); Integer executeStatus = distributeTaskEntity.getExecuteStatus();

@ -12,16 +12,12 @@ import java.util.List;
@Data @Data
public class CustomVO { public class CustomVO {
@Schema(description = "编号") @Schema(description = "编号")
private String batchNo; private String batchNo;
@Schema(title = "ID") @Schema(title = "ID")
private Long customId; private Long customId;
@Schema(title = "门店名称")
private String storeName;
@Schema(title = "客户名称") @Schema(title = "客户名称")
private String customName; private String customName;
@ -68,7 +64,9 @@ public class CustomVO {
@Schema(description = "公司id") @Schema(description = "公司id")
private Long companyId; private Long companyId;
@Schema(title = "备注") @Schema(title = "备注")
private String remark; private String remark;
@Schema(title = "客户类型 0:A型 1:B型")
private Integer customType;
} }

@ -18,7 +18,7 @@ business:
#门店专员 #门店专员
storeCode: ROLE_STORE_SALESMAN storeCode: ROLE_STORE_SALESMAN
urls: urls:
dbPushUrl: https://baiyea.net/api/outside/pushClue/ dbPushUrl: https://byffp.top/api/outside/pushClue/
# 生产环境关闭文档 # 生产环境关闭文档
ballcat: ballcat:

@ -2,7 +2,6 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.baiye.modules.distribute.mapper.CustomMapper"> <mapper namespace="com.baiye.modules.distribute.mapper.CustomMapper">
<sql id="Base_Alias_Column_List"> <sql id="Base_Alias_Column_List">
s.store_name,
cm.enter_name, cm.enter_name,
cm.custom_id, cm.custom_id,
cm.custom_name, cm.custom_name,
@ -16,6 +15,7 @@
cm.enroll_status, cm.enroll_status,
cm.remark, cm.remark,
cm.create_time, cm.create_time,
cm.custom_type,
cm.distribute_time cm.distribute_time
</sql> </sql>
@ -24,12 +24,8 @@
DISTINCT DISTINCT
<include refid="Base_Alias_Column_List"/> <include refid="Base_Alias_Column_List"/>
FROM FROM
tb_custom cm JOIN tb_custom_store s on cm.custom_id = s.custom_id tb_custom cm
${ew.customSqlSegment} ${ew.customSqlSegment}
<if test="storeId != null">
and s.store_id = #{storeId,jdbcType=BIGINT}
</if>
order by cm.create_time desc, cm.custom_id desc order by cm.create_time desc, cm.custom_id desc
</select> </select>

Loading…
Cancel
Save