parent
9f5b37c7a2
commit
7d4f41d4a3
@ -0,0 +1,22 @@
|
||||
package com.baiye.model.dto;
|
||||
|
||||
import com.baiye.annotation.Query;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author wjt
|
||||
* @date 2022/08/04
|
||||
*/
|
||||
@Data
|
||||
public class PublicCluePoolQueryCriteria {
|
||||
|
||||
@Query
|
||||
@NotNull
|
||||
private Long companyId;
|
||||
|
||||
@Query
|
||||
private Long clueId;
|
||||
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
package com.baiye.module.controller;
|
||||
|
||||
import com.baiye.http.CommonResponse;
|
||||
import com.baiye.model.dto.PublicCluePoolQueryCriteria;
|
||||
import com.baiye.module.entity.PublicPoolConfigure;
|
||||
import com.baiye.module.service.PublicCluePoolService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
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 wjt
|
||||
* @date 2022/08/04
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@Api(tags = "资源管理")
|
||||
@RequestMapping("/source/clue")
|
||||
@Slf4j
|
||||
public class PublicCluePoolController {
|
||||
private final PublicCluePoolService publicCluePoolService;
|
||||
|
||||
@ApiOperation("查询公共的资源池")
|
||||
@GetMapping("/publicCluePool")
|
||||
public ResponseEntity<Object> queryPublicCluePool(@Validated PublicCluePoolQueryCriteria publicCluePoolQueryCriteria, Pageable pageable) {
|
||||
return new ResponseEntity<>(publicCluePoolService.queryPublicCluePool(publicCluePoolQueryCriteria, pageable), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@ApiOperation("手动回收线索到公海")
|
||||
@GetMapping("/recycle")
|
||||
public ResponseEntity<Object> recyclePublicPool(@RequestParam(value = "clueId") Long clueId,
|
||||
@RequestParam(value = "companyId") Long companyId) {
|
||||
publicCluePoolService.recyclePublicPool(clueId, companyId);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@ApiOperation("公海里领取线索")
|
||||
@GetMapping("/receive")
|
||||
public ResponseEntity<Object> receiveClue(@RequestParam(value = "clueId") Long clueId,
|
||||
@RequestParam(value = "memberId") Long memberId
|
||||
) {
|
||||
publicCluePoolService.receiveClue(clueId, memberId);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@ApiOperation("公海回收条件配置")
|
||||
@PostMapping("/pool/configure")
|
||||
public ResponseEntity<Object> publicPoolConfigure(@Validated @RequestBody PublicPoolConfigure publicPoolConfigure) {
|
||||
publicCluePoolService.publicPoolConfigure(publicPoolConfigure);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@ApiOperation("查询公海配置")
|
||||
@GetMapping("/pool/query")
|
||||
public CommonResponse<Object> queryPoolConfigure(@RequestParam("companyId") Long companyId) {
|
||||
return CommonResponse.createBySuccess(publicCluePoolService.queryPoolConfigure(companyId));
|
||||
}
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
package com.baiye.module.dao;
|
||||
|
||||
import com.baiye.module.entity.ConductRecord;
|
||||
import com.baiye.module.entity.PublicCluePool;
|
||||
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 wjt
|
||||
* @date 2022/08/04
|
||||
*/
|
||||
@Repository
|
||||
public interface PublicCluePoolRepository extends JpaRepository<PublicCluePool, Long>, JpaSpecificationExecutor<PublicCluePool> {
|
||||
/**
|
||||
* 根据状态获取公海线索
|
||||
* @param status
|
||||
* @return
|
||||
*/
|
||||
List<PublicCluePool> findAllByStatus(Boolean status);
|
||||
|
||||
/**
|
||||
* 修改状态
|
||||
* @param clueId
|
||||
*/
|
||||
@Modifying
|
||||
@Query(value = " update tb_public_clue_pool set status = 1 where clue_id = ?1 ", nativeQuery = true)
|
||||
void updateStatus(Long clueId);
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package com.baiye.module.dao;
|
||||
|
||||
import com.baiye.module.entity.PublicPoolConfigure;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* @author wjt
|
||||
* @date 2022/08/05
|
||||
*/
|
||||
@Repository
|
||||
public interface PublicPoolConfigureRepository extends JpaRepository<PublicPoolConfigure, Long>, JpaSpecificationExecutor<PublicPoolConfigure> {
|
||||
/**
|
||||
* 按公司查询公海配置
|
||||
* @param companyId
|
||||
* @return
|
||||
*/
|
||||
PublicPoolConfigure findPublicPoolConfigureByCompanyId(Long companyId);
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
package com.baiye.module.entity;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.hibernate.annotations.CreationTimestamp;
|
||||
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author wjt
|
||||
* @date 2022/08/04
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
@Entity
|
||||
@Table(name = "tb_public_clue_pool")
|
||||
@EntityListeners(AuditingEntityListener.class)
|
||||
public class PublicCluePool implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 6750014883996523348L;
|
||||
@Id
|
||||
@Column(name = "clue_id", nullable = false)
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long clueId;
|
||||
@ApiModelProperty(value = "状态 0-冷静期(不可用) 1-可用")
|
||||
@Column(name = "status")
|
||||
private Boolean status;
|
||||
|
||||
@ApiModelProperty(value = "最后操作人id")
|
||||
@Column(name = "member_id")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long memberId;
|
||||
|
||||
@ApiModelProperty(value = "最后操作人名称")
|
||||
@Column(name = "member_name")
|
||||
private String memberName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
@Column(name = "create_time")
|
||||
@CreationTimestamp
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "公司id")
|
||||
@Column(name = "company_id")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long companyId;
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.baiye.module.service;
|
||||
|
||||
import com.baiye.model.dto.PublicCluePoolQueryCriteria;
|
||||
import com.baiye.module.dao.ClueMiddleRepository;
|
||||
import com.baiye.module.entity.PublicCluePool;
|
||||
import com.baiye.module.entity.PublicPoolConfigure;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author wjt
|
||||
* @date 2022/08/04
|
||||
*/
|
||||
public interface PublicCluePoolService {
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询公用资源池
|
||||
*
|
||||
* @param publicCluePoolQueryCriteria
|
||||
* @param pageable
|
||||
* @return
|
||||
*/
|
||||
Map<String, Object> queryPublicCluePool(PublicCluePoolQueryCriteria publicCluePoolQueryCriteria, Pageable pageable);
|
||||
|
||||
/**
|
||||
* 手动回收资源
|
||||
*
|
||||
* @param clueId
|
||||
* @param companyId
|
||||
*/
|
||||
void recyclePublicPool(Long clueId, Long companyId);
|
||||
|
||||
void receiveClue(Long clueId, Long memberId);
|
||||
|
||||
void publicPoolConfigure(PublicPoolConfigure publicPoolConfigure);
|
||||
|
||||
PublicPoolConfigure queryPoolConfigure(Long companyId);
|
||||
}
|
@ -0,0 +1,135 @@
|
||||
package com.baiye.module.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baiye.exception.BadRequestException;
|
||||
import com.baiye.feign.UserClient;
|
||||
import com.baiye.model.dto.ClueDto;
|
||||
import com.baiye.model.dto.PublicCluePoolDto;
|
||||
import com.baiye.model.dto.PublicCluePoolQueryCriteria;
|
||||
import com.baiye.model.dto.UserDto;
|
||||
import com.baiye.module.dao.*;
|
||||
import com.baiye.module.entity.*;
|
||||
import com.baiye.module.service.PublicCluePoolService;
|
||||
import com.baiye.util.PageUtil;
|
||||
import com.baiye.util.QueryHelp;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author wjt
|
||||
* @date 2022/08/04
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public class PublicCluePoolServiceImpl implements PublicCluePoolService {
|
||||
private final PublicCluePoolRepository publicCluePoolRepository;
|
||||
private final ClueMiddleRepository clueMiddleRepository;
|
||||
private final ConductRecordRepository conductRecordRepository;
|
||||
private final ClueRepository clueRepository;
|
||||
private final UserClient userClient;
|
||||
private final ClueJpa clueJpa;
|
||||
private final PublicPoolConfigureRepository publicPoolConfigureRepository;
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryPublicCluePool(PublicCluePoolQueryCriteria publicCluePoolQueryCriteria, Pageable pageable) {
|
||||
|
||||
List<PublicCluePoolDto> cluePoolList = clueJpa.getCluePoolList(publicCluePoolQueryCriteria, pageable);
|
||||
Long poolCount = clueJpa.getPoolCount(publicCluePoolQueryCriteria);
|
||||
return PageUtil.toPage(cluePoolList, poolCount);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void recyclePublicPool(Long clueId, Long companyId) {
|
||||
ClueMiddle clueMiddle = clueMiddleRepository.findById(clueId).orElseGet(ClueMiddle::new);
|
||||
//加操作记录
|
||||
Set<Long> memberIds = new HashSet<>();
|
||||
memberIds.add(clueMiddle.getMemberId());
|
||||
Map<Long, String> userNickNameMap = userClient.findById(memberIds);
|
||||
|
||||
//放入公海
|
||||
PublicCluePool publicCluePool = new PublicCluePool();
|
||||
publicCluePool.setClueId(clueId);
|
||||
publicCluePool.setCompanyId(companyId);
|
||||
publicCluePool.setMemberId(clueMiddle.getMemberId());
|
||||
publicCluePool.setMemberName(userNickNameMap.get(clueMiddle.getMemberId()));
|
||||
publicCluePool.setStatus(false);
|
||||
publicCluePoolRepository.save(publicCluePool);
|
||||
|
||||
|
||||
ConductRecord conductRecord = new ConductRecord();
|
||||
conductRecord.setClueId(clueId);
|
||||
conductRecord.setRecordInfo("移入公海");
|
||||
conductRecord.setName(userNickNameMap.get(clueMiddle.getMemberId()));
|
||||
conductRecord.setCreateBy(clueMiddle.getMemberId());
|
||||
conductRecordRepository.save(conductRecord);
|
||||
|
||||
//重置线索的所属人
|
||||
clueMiddle.setMemberId(null);
|
||||
clueMiddle.setOrganizeId(null);
|
||||
clueMiddle.setPublicPoolStatus(1);
|
||||
clueMiddle.setOptimisticVersion(clueMiddle.getOptimisticVersion() + 1);
|
||||
clueMiddleRepository.save(clueMiddle);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void receiveClue(Long clueId, Long memberId) {
|
||||
List<ConductRecord> conductRecords = conductRecordRepository.findConductRecordByCreateBy(memberId);
|
||||
if (CollUtil.isNotEmpty(conductRecords)) {
|
||||
throw new BadRequestException("已经跟进过此线索,无法领取");
|
||||
}
|
||||
PublicCluePool publicCluePool = publicCluePoolRepository.findById(clueId).orElseGet(PublicCluePool::new);
|
||||
if (!publicCluePool.getStatus()) {
|
||||
throw new BadRequestException("未过公示期,无法领取");
|
||||
}
|
||||
UserDto userInfo = userClient.findUserInfo(memberId);
|
||||
//从公海移除
|
||||
publicCluePoolRepository.deleteById(clueId);
|
||||
|
||||
//增加记录
|
||||
ConductRecord conductRecord = new ConductRecord();
|
||||
conductRecord.setClueId(clueId);
|
||||
conductRecord.setRecordInfo("领取线索");
|
||||
conductRecord.setName(userInfo.getUsername());
|
||||
conductRecord.setCreateBy(memberId);
|
||||
conductRecordRepository.save(conductRecord);
|
||||
|
||||
//重置线索的所属人
|
||||
ClueMiddle clueMiddle = clueMiddleRepository.findById(clueId).orElseGet(ClueMiddle::new);
|
||||
clueMiddle.setMemberId(memberId);
|
||||
clueMiddle.setOrganizeId(userInfo.getOrganizeId());
|
||||
clueMiddle.setPublicPoolStatus(0);
|
||||
clueMiddle.setOptimisticVersion(clueMiddle.getOptimisticVersion() + 1);
|
||||
clueMiddleRepository.save(clueMiddle);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void publicPoolConfigure(PublicPoolConfigure publicPoolConfigure) {
|
||||
if (publicPoolConfigure.getId() != null) {
|
||||
PublicPoolConfigure publicPoolConfigure1 = publicPoolConfigureRepository.findById(publicPoolConfigure.getId()).orElseGet(PublicPoolConfigure::new);
|
||||
BeanUtil.copyProperties(publicPoolConfigure, publicPoolConfigure1);
|
||||
publicPoolConfigureRepository.save(publicPoolConfigure1);
|
||||
} else {
|
||||
publicPoolConfigureRepository.save(publicPoolConfigure);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PublicPoolConfigure queryPoolConfigure(Long companyId) {
|
||||
return publicPoolConfigureRepository.findPublicPoolConfigureByCompanyId(companyId);
|
||||
}
|
||||
}
|
@ -0,0 +1,155 @@
|
||||
package com.baiye.task;
|
||||
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baiye.feign.UserClient;
|
||||
import com.baiye.module.dao.ClueMiddleRepository;
|
||||
import com.baiye.module.dao.ConductRecordRepository;
|
||||
import com.baiye.module.dao.PublicCluePoolRepository;
|
||||
import com.baiye.module.dao.PublicPoolConfigureRepository;
|
||||
import com.baiye.module.entity.ClueMiddle;
|
||||
import com.baiye.module.entity.ConductRecord;
|
||||
import com.baiye.module.entity.PublicCluePool;
|
||||
import com.baiye.module.entity.PublicPoolConfigure;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
* @author wjt
|
||||
* @date 2022/08/05
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class PublicCluePoolSync {
|
||||
|
||||
// @Scheduled(cron = "0 0 23 * * ? ")
|
||||
|
||||
private final PublicCluePoolRepository publicCluePoolRepository;
|
||||
private final PublicPoolConfigureRepository publicPoolConfigureRepository;
|
||||
|
||||
private final ClueMiddleRepository clueMiddleRepository;
|
||||
private final ConductRecordRepository conductRecordRepository;
|
||||
private final UserClient userClient;
|
||||
|
||||
/**
|
||||
* 每小时检测公海里的线索是否过了冷静期
|
||||
*/
|
||||
@Scheduled(cron = "0 0 0/1 * * ?")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void publicPoolIdleClue() {
|
||||
List<PublicCluePool> allByStatus = publicCluePoolRepository.findAllByStatus(false);
|
||||
//按公司分组
|
||||
HashMap<Long, List<PublicCluePool>> map = new HashMap<>(allByStatus.stream().collect(Collectors.groupingBy(PublicCluePool::getCompanyId, Collectors.toList())));
|
||||
for (Long companyId : map.keySet()) {
|
||||
//获取该公司设置的冷静期
|
||||
PublicPoolConfigure config = publicPoolConfigureRepository.findPublicPoolConfigureByCompanyId(companyId);
|
||||
if (ObjectUtil.isNotNull(config)) {
|
||||
int idleUnit = Integer.parseInt(config.getIdleUnit());
|
||||
Integer idleNumber = config.getIdleNumber();
|
||||
if (idleUnit == 0) {
|
||||
//小时
|
||||
updateStatusByHour(map.get(companyId), idleNumber);
|
||||
} else {
|
||||
//天
|
||||
updateStatusByDay(map.get(companyId), idleNumber);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void updateStatusByHour(List<PublicCluePool> publicCluePools, Integer idleNumber) {
|
||||
for (PublicCluePool publicCluePool : publicCluePools) {
|
||||
Date createTime = publicCluePool.getCreateTime();
|
||||
DateTime dateTime = DateUtil.offsetHour(createTime, idleNumber);
|
||||
int compare = DateUtil.compare(DateUtil.date(), dateTime);
|
||||
if (compare > 0) {
|
||||
publicCluePoolRepository.updateStatus(publicCluePool.getClueId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void updateStatusByDay(List<PublicCluePool> publicCluePools, Integer idleNumber) {
|
||||
for (PublicCluePool publicCluePool : publicCluePools) {
|
||||
Date createTime = publicCluePool.getCreateTime();
|
||||
DateTime dateTime = DateUtil.offsetDay(createTime, idleNumber);
|
||||
int compare = DateUtil.compare(DateUtil.date(), dateTime);
|
||||
if (compare > 0) {
|
||||
publicCluePoolRepository.updateStatus(publicCluePool.getClueId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 每天检测一次线索是否满足自动加入公海
|
||||
*/
|
||||
// @Scheduled(cron = "0 0/1 * * * ? ")
|
||||
@Scheduled(cron = "0 0 23 * * ? ")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void publicPoolAutoExpired() {
|
||||
|
||||
List<Integer> clueStage = Arrays.asList(4, 7);
|
||||
List<PublicPoolConfigure> all = publicPoolConfigureRepository.findAll();
|
||||
for (PublicPoolConfigure configure : all) {
|
||||
Long companyId = configure.getCompanyId();
|
||||
int recycleNumber = configure.getRecycleNumber();
|
||||
int recycleUnit = Integer.parseInt(configure.getRecycleUnit());
|
||||
String time;
|
||||
if (recycleUnit == 0) {
|
||||
time = DateUtil.offsetDay(DateUtil.date(), -recycleNumber).toString();
|
||||
} else if (recycleUnit == 1) {
|
||||
time = DateUtil.offsetWeek(DateUtil.date(), -recycleNumber).toString();
|
||||
} else {
|
||||
time = DateUtil.offsetMonth(DateUtil.date(), -recycleNumber).toString();
|
||||
}
|
||||
List<ClueMiddle> clueMiddles = clueMiddleRepository.queryClueMiddleByClueStage(companyId, time, clueStage);
|
||||
if (clueMiddles != null && clueMiddles.size() > 0) {
|
||||
updateClueMiddle(clueMiddles, companyId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void updateClueMiddle(List<ClueMiddle> clueMiddles, Long companyId) {
|
||||
for (ClueMiddle clueMiddle : clueMiddles) {
|
||||
//加操作记录
|
||||
Set<Long> memberIds = new HashSet<>();
|
||||
memberIds.add(clueMiddle.getMemberId());
|
||||
Map<Long, String> userNickNameMap = userClient.findById(memberIds);
|
||||
|
||||
//放入公海
|
||||
PublicCluePool publicCluePool = new PublicCluePool();
|
||||
publicCluePool.setClueId(clueMiddle.getClueId());
|
||||
publicCluePool.setCompanyId(companyId);
|
||||
publicCluePool.setMemberId(clueMiddle.getMemberId());
|
||||
publicCluePool.setMemberName(userNickNameMap.get(clueMiddle.getMemberId()));
|
||||
publicCluePool.setStatus(false);
|
||||
publicCluePoolRepository.save(publicCluePool);
|
||||
|
||||
|
||||
ConductRecord conductRecord = new ConductRecord();
|
||||
conductRecord.setClueId(clueMiddle.getClueId());
|
||||
conductRecord.setRecordInfo("移入公海");
|
||||
conductRecord.setName(userNickNameMap.get(clueMiddle.getMemberId()));
|
||||
conductRecord.setCreateBy(clueMiddle.getMemberId());
|
||||
conductRecordRepository.save(conductRecord);
|
||||
|
||||
//重置线索的所属人
|
||||
clueMiddle.setMemberId(null);
|
||||
clueMiddle.setOrganizeId(null);
|
||||
clueMiddle.setPublicPoolStatus(1);
|
||||
clueMiddle.setOptimisticVersion(clueMiddle.getOptimisticVersion() + 1);
|
||||
clueMiddleRepository.save(clueMiddle);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue