diff --git a/fw-shirasawa-domain/src/main/java/cn/fw/shirasawa/domain/enums/FollowTypeEnum.java b/fw-shirasawa-domain/src/main/java/cn/fw/shirasawa/domain/enums/FollowTypeEnum.java index 3b6732b..3082678 100644 --- a/fw-shirasawa-domain/src/main/java/cn/fw/shirasawa/domain/enums/FollowTypeEnum.java +++ b/fw-shirasawa-domain/src/main/java/cn/fw/shirasawa/domain/enums/FollowTypeEnum.java @@ -25,6 +25,7 @@ public enum FollowTypeEnum implements IEnum { FA(8, "急救跟进"), RV(9, "回访跟进"), PL(10, "公共池跟进"), + SF(11, "补贴跟进"), /** * 其他 * 目前只用于设置,并不参与具体跟进业务 diff --git a/fw-shirasawa-sdk/pom.xml b/fw-shirasawa-sdk/pom.xml index 6e5e58e..58c75db 100644 --- a/fw-shirasawa-sdk/pom.xml +++ b/fw-shirasawa-sdk/pom.xml @@ -10,7 +10,7 @@ ../pom.xml fw-shirasawa-sdk - 1.0.2 + 1.0.3 jar fw-shirasawa-sdk diff --git a/fw-shirasawa-sdk/src/main/java/cn/fw/shirasawa/sdk/enums/DataTypeEnum.java b/fw-shirasawa-sdk/src/main/java/cn/fw/shirasawa/sdk/enums/DataTypeEnum.java index b66db7d..a155810 100644 --- a/fw-shirasawa-sdk/src/main/java/cn/fw/shirasawa/sdk/enums/DataTypeEnum.java +++ b/fw-shirasawa-sdk/src/main/java/cn/fw/shirasawa/sdk/enums/DataTypeEnum.java @@ -25,6 +25,7 @@ public enum DataTypeEnum implements IEnum { FA(8, "急救"), RV(9, "回访"), PL(10, "公共池跟进"), + SF(11, "补贴跟进"), ; /** diff --git a/fw-shirasawa-sdk/src/main/java/cn/fw/shirasawa/sdk/param/FollowGenerateDTO.java b/fw-shirasawa-sdk/src/main/java/cn/fw/shirasawa/sdk/param/FollowGenerateDTO.java index 18b3d92..eac5c7f 100644 --- a/fw-shirasawa-sdk/src/main/java/cn/fw/shirasawa/sdk/param/FollowGenerateDTO.java +++ b/fw-shirasawa-sdk/src/main/java/cn/fw/shirasawa/sdk/param/FollowGenerateDTO.java @@ -4,6 +4,7 @@ import cn.fw.shirasawa.sdk.enums.BusinessTypeEnum; import cn.fw.shirasawa.sdk.enums.DataTypeEnum; import lombok.*; +import javax.validation.constraints.Future; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; @@ -76,6 +77,7 @@ public class FollowGenerateDTO { /** * 截止时间 */ + @Future(message = "截止时间必须是未来时间") private Date deadline; /** * 首次跟进待办截止时间 diff --git a/fw-shirasawa-server/src/main/resources/application-gray.yml b/fw-shirasawa-server/src/main/resources/application-gray.yml index 920310b..a89e408 100644 --- a/fw-shirasawa-server/src/main/resources/application-gray.yml +++ b/fw-shirasawa-server/src/main/resources/application-gray.yml @@ -56,6 +56,7 @@ follow: PFCode: 'O6zZjZ17st' FACode: '' RVCode: '' + SFCode: '' FmTemplateCode: 'SMS_215116996' RmTemplateCode: 'SMS_215072079' IrTemplateCode: '' diff --git a/fw-shirasawa-server/src/main/resources/application-prd.yml b/fw-shirasawa-server/src/main/resources/application-prd.yml index 68c005e..b5e1857 100644 --- a/fw-shirasawa-server/src/main/resources/application-prd.yml +++ b/fw-shirasawa-server/src/main/resources/application-prd.yml @@ -55,6 +55,7 @@ follow: PFCode: 'O6zZjZ17st' FACode: '' RVCode: '' + SFCode: '' FmTemplateCode: 'SMS_215116996' RmTemplateCode: 'SMS_215072079' IrTemplateCode: '' diff --git a/fw-shirasawa-server/src/main/resources/application-test.yml b/fw-shirasawa-server/src/main/resources/application-test.yml index b94a358..1bd89d8 100644 --- a/fw-shirasawa-server/src/main/resources/application-test.yml +++ b/fw-shirasawa-server/src/main/resources/application-test.yml @@ -66,6 +66,7 @@ follow: PFCode: 'O6zZjZ17st' FACode: '' RVCode: '' + SFCode: '' FmTemplateCode: '' RmTemplateCode: '' IrTemplateCode: '' \ No newline at end of file diff --git a/fw-shirasawa-server/src/main/resources/application.yml b/fw-shirasawa-server/src/main/resources/application.yml index 0e0f5b5..fe3175a 100644 --- a/fw-shirasawa-server/src/main/resources/application.yml +++ b/fw-shirasawa-server/src/main/resources/application.yml @@ -145,6 +145,7 @@ follow: FACode: '' RVCode: '' PLCode: '' + SFCode: '' FmTemplateCode: '' RmTemplateCode: '' IrTemplateCode: '' diff --git a/fw-shirasawa-service/src/main/java/cn/fw/shirasawa/service/bus/follow/strategy/AbstractFollowStrategy.java b/fw-shirasawa-service/src/main/java/cn/fw/shirasawa/service/bus/follow/strategy/AbstractFollowStrategy.java index 1ad9463..e04cce3 100644 --- a/fw-shirasawa-service/src/main/java/cn/fw/shirasawa/service/bus/follow/strategy/AbstractFollowStrategy.java +++ b/fw-shirasawa-service/src/main/java/cn/fw/shirasawa/service/bus/follow/strategy/AbstractFollowStrategy.java @@ -695,7 +695,7 @@ public abstract class AbstractFollowStrategy implements FollowStrategy { */ protected boolean dealRepeatClue(CluePool cluePool, FollowStrategy strategy) { //判断是否可以去重 - if (null == cluePool.getCoverFlag() || Boolean.FALSE.equals(cluePool.getCoverFlag())) { + if (!Boolean.TRUE.equals(cluePool.getCoverFlag())) { return false; } boolean isContainAF = false; diff --git a/fw-shirasawa-service/src/main/java/cn/fw/shirasawa/service/bus/follow/strategy/impl/SFFollowStrategy.java b/fw-shirasawa-service/src/main/java/cn/fw/shirasawa/service/bus/follow/strategy/impl/SFFollowStrategy.java new file mode 100644 index 0000000..ef741b1 --- /dev/null +++ b/fw-shirasawa-service/src/main/java/cn/fw/shirasawa/service/bus/follow/strategy/impl/SFFollowStrategy.java @@ -0,0 +1,92 @@ +package cn.fw.shirasawa.service.bus.follow.strategy.impl; + +import cn.fw.shirasawa.domain.db.OriginalData; +import cn.fw.shirasawa.domain.db.follow.FollowRecord; +import cn.fw.shirasawa.domain.db.follow.FollowTask; +import cn.fw.shirasawa.domain.db.pool.CluePool; +import cn.fw.shirasawa.domain.enums.ClueStatusEnum; +import cn.fw.shirasawa.domain.enums.FollowTypeEnum; +import cn.fw.shirasawa.service.bus.follow.strategy.AbstractFollowStrategy; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Objects; +import java.util.Optional; + +import static cn.fw.common.businessvalidator.Validator.BV; + +/** + * 补贴跟进 + * + * @author : kurisu + * @version : 1.0 + * @className : SFFollowStrategy + * @description : 补贴跟进 + * @date : 2023-03-13 15:16 + */ +@Slf4j +@Component +@SuppressWarnings("Duplicates") +public class SFFollowStrategy extends AbstractFollowStrategy { + @Value("${follow.todo.SFCode}") + @Getter + private String SFCode; + + @Override + public FollowTypeEnum getFollowType() { + return FollowTypeEnum.SF; + } + + @Override + public String getTodoCode() { + return getSFCode(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean origin2task(OriginalData originalData) throws Exception { + List list = cluePoolService.list(Wrappers.lambdaQuery() + .eq(CluePool::getClueType, getFollowType()) + .eq(CluePool::getCustomerId, originalData.getCustomerId()) + .eq(CluePool::getRefererId, originalData.getDetailId()) + .eq(CluePool::getGroupId, originalData.getGroupId()) + .in(CluePool::getClueStatus, ClueStatusEnum.ONGOING, ClueStatusEnum.WAITING) + ); + if (!CollectionUtils.isEmpty(list)) { + return true; + } + CluePool cluePool = transformClue(originalData); + cluePool.setStartTime(originalData.getGenerateTime()); + LocalDateTime deadLine = Optional.ofNullable(originalData.getDeadline()).orElse(LocalDate.now().plusYears(10L).atStartOfDay()); + cluePool.setDeadline(deadLine.minusSeconds(1L)); + return cluePoolService.save(cluePool); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void startClue(CluePool cluePool) throws Exception { + dealRepeatClue(cluePool, this); + FollowTask task = this.createTask(cluePool); + boolean saveTask = followTaskService.save(task); + BV.isTrue(saveTask, () -> "生成跟进任务失败"); + FollowRecord record = createRecord(task); + record.setTodoCode(getTodoCode()); + record.setNote(cluePool.getNote()); + record.setContacts(cluePool.getContacts()); + if (Objects.nonNull(cluePool.getFirstDeadline())) { + record.setDeadline(cluePool.getFirstDeadline()); + } + followRecordService.save(record); + + cluePool.setClueStatus(ClueStatusEnum.ONGOING); + cluePoolService.updateById(cluePool); + } +} diff --git a/pom.xml b/pom.xml index c388d2c..279740f 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ UTF-8 1.8 - 1.0.2 + 1.0.3 1.2.4.RELEASE