Commit 95df3085922d985e68c5eb10550f55c1bc0aa7f4

Authored by 张志伟
1 parent 70fa45d7

:sparkles: feature(*): 新增查询续保成交的数据

- 升级sdk新增查询接口
- 新增查询续保成交的数据
fw-valhalla-dao/src/main/resources/mapper/ClueTaskMapper.xml
@@ -195,7 +195,8 @@ @@ -195,7 +195,8 @@
195 t2.vin, 195 t2.vin,
196 t1.follow_user user_id, 196 t1.follow_user user_id,
197 t1.follow_user_name user_name, 197 t1.follow_user_name user_name,
198 - t1.follow_shop shop_id 198 + t1.follow_shop shop_id,
  199 + t1.state state
199 from clue_task t1 200 from clue_task t1
200 inner join follow_clue t2 on t1.clue_id = t2.id 201 inner join follow_clue t2 on t1.clue_id = t2.id
201 <where> 202 <where>
fw-valhalla-domain/src/main/java/cn/fw/valhalla/domain/dto/ShouldBeCompletedDTO.java
@@ -29,4 +29,8 @@ public class ShouldBeCompletedDTO { @@ -29,4 +29,8 @@ public class ShouldBeCompletedDTO {
29 * 门店id 29 * 门店id
30 */ 30 */
31 private Long shopId; 31 private Long shopId;
  32 + /**
  33 + * 状态 1:进行中 2:已成交 3:战败
  34 + */
  35 + private Integer state;
32 } 36 }
fw-valhalla-domain/src/main/java/cn/fw/valhalla/domain/query/BeCompletedQuery.java
1 package cn.fw.valhalla.domain.query; 1 package cn.fw.valhalla.domain.query;
2 2
  3 +import lombok.AllArgsConstructor;
3 import lombok.Data; 4 import lombok.Data;
  5 +import lombok.NoArgsConstructor;
4 6
5 7
6 /** 8 /**
@@ -13,6 +15,8 @@ import lombok.Data; @@ -13,6 +15,8 @@ import lombok.Data;
13 * @date : 2022-10-20 14:53 15 * @date : 2022-10-20 14:53
14 */ 16 */
15 @Data 17 @Data
  18 +@AllArgsConstructor
  19 +@NoArgsConstructor
16 public class BeCompletedQuery { 20 public class BeCompletedQuery {
17 /** 21 /**
18 * 跟进人员id 22 * 跟进人员id
fw-valhalla-sdk/pom.xml
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 <relativePath>../pom.xml</relativePath> 10 <relativePath>../pom.xml</relativePath>
11 </parent> 11 </parent>
12 <artifactId>fw-valhalla-sdk</artifactId> 12 <artifactId>fw-valhalla-sdk</artifactId>
13 - <version>1.2.4</version> 13 + <version>1.2.5</version>
14 <packaging>jar</packaging> 14 <packaging>jar</packaging>
15 <name>fw-valhalla-sdk</name> 15 <name>fw-valhalla-sdk</name>
16 16
@@ -46,6 +46,13 @@ @@ -46,6 +46,13 @@
46 <plugins> 46 <plugins>
47 <plugin> 47 <plugin>
48 <groupId>org.apache.maven.plugins</groupId> 48 <groupId>org.apache.maven.plugins</groupId>
  49 + <artifactId>maven-deploy-plugin</artifactId>
  50 + <configuration>
  51 + <skip>false</skip>
  52 + </configuration>
  53 + </plugin>
  54 + <plugin>
  55 + <groupId>org.apache.maven.plugins</groupId>
49 <artifactId>maven-source-plugin</artifactId> 56 <artifactId>maven-source-plugin</artifactId>
50 <version>${maven-source-plugin.version}</version> 57 <version>${maven-source-plugin.version}</version>
51 <executions> 58 <executions>
fw-valhalla-sdk/src/main/java/cn/fw/valhalla/sdk/api/FollowApiService.java
@@ -52,4 +52,13 @@ public interface FollowApiService { @@ -52,4 +52,13 @@ public interface FollowApiService {
52 */ 52 */
53 @GetMapping("/should/ins/completed") 53 @GetMapping("/should/ins/completed")
54 Message<List<ShouldBeCompletedResult>> queryInsShouldBeCompleted(@Validated @SpringQueryMap ShouldBeCompletedQuery query); 54 Message<List<ShouldBeCompletedResult>> queryInsShouldBeCompleted(@Validated @SpringQueryMap ShouldBeCompletedQuery query);
  55 +
  56 + /**
  57 + * 查询续保跟进成交数据
  58 + *
  59 + * @param query 查询参数
  60 + * @return 人员
  61 + */
  62 + @GetMapping("/ins/completed_arr")
  63 + Message<List<ShouldBeCompletedResult>> queryInsCompletedGuys(@Validated @SpringQueryMap ShouldBeCompletedQuery query);
55 } 64 }
56 \ No newline at end of file 65 \ No newline at end of file
fw-valhalla-sdk/src/main/java/cn/fw/valhalla/sdk/param/ShouldBeCompletedQuery.java
@@ -42,7 +42,7 @@ public class ShouldBeCompletedQuery { @@ -42,7 +42,7 @@ public class ShouldBeCompletedQuery {
42 return String.valueOf(second); 42 return String.valueOf(second);
43 } 43 }
44 String timeStr = String.valueOf(startTime); 44 String timeStr = String.valueOf(startTime);
45 - return timeStr.length() >= 9 ? timeStr.substring(0, 9) : timeStr; 45 + return timeStr.length() >= 10 ? timeStr.substring(0, 10) : timeStr;
46 } 46 }
47 47
48 public String getEndTime() { 48 public String getEndTime() {
@@ -51,6 +51,6 @@ public class ShouldBeCompletedQuery { @@ -51,6 +51,6 @@ public class ShouldBeCompletedQuery {
51 return String.valueOf(second); 51 return String.valueOf(second);
52 } 52 }
53 String timeStr = String.valueOf(endTime); 53 String timeStr = String.valueOf(endTime);
54 - return timeStr.length() >= 9 ? timeStr.substring(0, 9) : timeStr; 54 + return timeStr.length() >= 10 ? timeStr.substring(0, 10) : timeStr;
55 } 55 }
56 } 56 }
fw-valhalla-sdk/src/main/java/cn/fw/valhalla/sdk/result/ShouldBeCompletedResult.java
1 package cn.fw.valhalla.sdk.result; 1 package cn.fw.valhalla.sdk.result;
2 2
  3 +import lombok.AllArgsConstructor;
3 import lombok.Data; 4 import lombok.Data;
  5 +import lombok.NoArgsConstructor;
4 6
5 /** 7 /**
6 * 应成交数据 8 * 应成交数据
@@ -12,6 +14,8 @@ import lombok.Data; @@ -12,6 +14,8 @@ import lombok.Data;
12 * @date : 2022-10-20 11:35 14 * @date : 2022-10-20 11:35
13 */ 15 */
14 @Data 16 @Data
  17 +@AllArgsConstructor
  18 +@NoArgsConstructor
15 public class ShouldBeCompletedResult { 19 public class ShouldBeCompletedResult {
16 /** 20 /**
17 * 车架号 21 * 车架号
@@ -29,4 +33,8 @@ public class ShouldBeCompletedResult { @@ -29,4 +33,8 @@ public class ShouldBeCompletedResult {
29 * 门店id 33 * 门店id
30 */ 34 */
31 private Long shopId; 35 private Long shopId;
  36 + /**
  37 + * 状态 1:进行中 2:已成交 3:战败
  38 + */
  39 + private Integer state;
32 } 40 }
fw-valhalla-server/src/main/java/cn/fw/valhalla/controller/api/FollowApiServiceImpl.java
@@ -79,4 +79,11 @@ public class FollowApiServiceImpl implements FollowApiService { @@ -79,4 +79,11 @@ public class FollowApiServiceImpl implements FollowApiService {
79 public Message<List<ShouldBeCompletedResult>> queryInsShouldBeCompleted(@Validated @SpringQueryMap ShouldBeCompletedQuery query) { 79 public Message<List<ShouldBeCompletedResult>> queryInsShouldBeCompleted(@Validated @SpringQueryMap ShouldBeCompletedQuery query) {
80 return success(followApiBizService.queryShouldBeCompleted(query, FollowTypeEnum.IR)); 80 return success(followApiBizService.queryShouldBeCompleted(query, FollowTypeEnum.IR));
81 } 81 }
  82 +
  83 + @Override
  84 + @GetMapping("/ins/completed_arr")
  85 + @ControllerMethod("查询续保跟进应成交台数")
  86 + public Message<List<ShouldBeCompletedResult>> queryInsCompletedGuys(@Validated @SpringQueryMap ShouldBeCompletedQuery query) {
  87 + return success(followApiBizService.queryCompletedGuys(query, FollowTypeEnum.IR));
  88 + }
82 } 89 }
fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/FollowApiBizService.java deleted
1 -package cn.fw.valhalla.service.bus.follow;  
2 -  
3 -import cn.fw.valhalla.domain.db.customer.AccidentPool;  
4 -import cn.fw.valhalla.domain.db.follow.ClueTask;  
5 -import cn.fw.valhalla.domain.db.follow.FollowClue;  
6 -import cn.fw.valhalla.domain.dto.ShouldBeCompletedDTO;  
7 -import cn.fw.valhalla.domain.enums.ClueStatusEnum;  
8 -import cn.fw.valhalla.domain.enums.FollowTypeEnum;  
9 -import cn.fw.valhalla.domain.query.BeCompletedQuery;  
10 -import cn.fw.valhalla.sdk.param.ShouldBeCompletedQuery;  
11 -import cn.fw.valhalla.sdk.result.ShouldBeCompletedResult;  
12 -import cn.fw.valhalla.service.data.AccidentPoolService;  
13 -import cn.fw.valhalla.service.data.ClueTaskService;  
14 -import cn.fw.valhalla.service.data.FollowClueService;  
15 -import com.baomidou.mybatisplus.core.toolkit.Wrappers;  
16 -import org.springframework.beans.factory.annotation.Autowired;  
17 -import org.springframework.stereotype.Service;  
18 -  
19 -import java.util.ArrayList;  
20 -import java.util.List;  
21 -import java.util.Objects;  
22 -  
23 -/**  
24 - * 跟进api接口业务实现  
25 - *  
26 - * @author : kurisu  
27 - * @version : 1.0  
28 - * @className : FollowApiBizService  
29 - * @description : 跟进api接口业务实现  
30 - * @date : 2022-10-20 14:35  
31 - */  
32 -@Service  
33 -public class FollowApiBizService {  
34 - private final ClueTaskService clueTaskService;  
35 - private final AccidentPoolService accidentPoolService;  
36 - private final FollowClueService followClueService;  
37 -  
38 - @Autowired  
39 - public FollowApiBizService(final ClueTaskService clueTaskService,  
40 - final AccidentPoolService accidentPoolService,  
41 - final FollowClueService followClueService) {  
42 - this.clueTaskService = clueTaskService;  
43 - this.accidentPoolService = accidentPoolService;  
44 - this.followClueService = followClueService;  
45 - }  
46 -  
47 - /**  
48 - * 查询应成交台数  
49 - *  
50 - * @param query  
51 - * @param followTypeEnum  
52 - * @return  
53 - */  
54 - public List<ShouldBeCompletedResult> queryShouldBeCompleted(ShouldBeCompletedQuery query, FollowTypeEnum followTypeEnum) {  
55 - BeCompletedQuery search = new BeCompletedQuery();  
56 - search.setType(followTypeEnum.getValue());  
57 - search.setShopId(query.getShopId());  
58 - search.setUserId(query.getUserId());  
59 - search.setStartTime(query.getStartTime());  
60 - search.setEndTime(query.getEndTime());  
61 - List<ShouldBeCompletedDTO> dtoList = clueTaskService.queryShouldBeCompleted(search);  
62 - List<ShouldBeCompletedResult> results = new ArrayList<>();  
63 - for (ShouldBeCompletedDTO dto : dtoList) {  
64 - ShouldBeCompletedResult result = new ShouldBeCompletedResult();  
65 - result.setVin(dto.getVin());  
66 - result.setUserId(dto.getUserId());  
67 - result.setUserName(dto.getUserName());  
68 - result.setShopId(dto.getShopId());  
69 - results.add(result);  
70 - }  
71 - return results;  
72 - }  
73 -  
74 - public ClueTask queryAccidentFollowerByPlate(String plateNo, Long groupId) {  
75 - AccidentPool lastOne = accidentPoolService.getOne(Wrappers.<AccidentPool>lambdaQuery()  
76 - .eq(AccidentPool::getPlateNo, plateNo)  
77 - .eq(AccidentPool::getGroupId, groupId)  
78 - .orderByDesc(AccidentPool::getCreateTime)  
79 - .last(" limit 1 ")  
80 - );  
81 -  
82 - if (Objects.isNull(lastOne)) {  
83 - return null;  
84 - }  
85 - FollowClue lastOngoingClue = followClueService.getOne(Wrappers.<FollowClue>lambdaQuery()  
86 - .eq(FollowClue::getPlateNo, plateNo)  
87 - .eq(FollowClue::getClueType, FollowTypeEnum.AC)  
88 - .eq(FollowClue::getClueState, ClueStatusEnum.ONGOING)  
89 - .eq(FollowClue::getGroupId, groupId)  
90 - .last(" limit 1 ")  
91 - );  
92 -  
93 - if (Objects.isNull(lastOngoingClue)) {  
94 - return null;  
95 - }  
96 - return clueTaskService.queryOngoingTaskByClueId(lastOngoingClue.getId());  
97 - }  
98 -}  
fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/FollowApiBizService.kt 0 → 100644
  1 +package cn.fw.valhalla.service.bus.follow;
  2 +
  3 +import cn.fw.valhalla.domain.db.customer.AccidentPool
  4 +import cn.fw.valhalla.domain.db.follow.ClueTask
  5 +import cn.fw.valhalla.domain.db.follow.FollowClue
  6 +import cn.fw.valhalla.domain.enums.ClueStatusEnum
  7 +import cn.fw.valhalla.domain.enums.FollowTypeEnum
  8 +import cn.fw.valhalla.domain.enums.TaskStateEnum
  9 +import cn.fw.valhalla.domain.query.BeCompletedQuery
  10 +import cn.fw.valhalla.sdk.param.ShouldBeCompletedQuery
  11 +import cn.fw.valhalla.sdk.result.ShouldBeCompletedResult
  12 +import cn.fw.valhalla.service.data.AccidentPoolService
  13 +import cn.fw.valhalla.service.data.ClueTaskService
  14 +import cn.fw.valhalla.service.data.FollowClueService
  15 +import com.baomidou.mybatisplus.core.toolkit.Wrappers
  16 +import org.springframework.stereotype.Service
  17 +import java.util.*
  18 +
  19 +/**
  20 + * 跟进api接口业务实现
  21 + *
  22 + * @author : kurisu
  23 + * @version : 1.0
  24 + * @className : FollowApiBizService
  25 + * @description : 跟进api接口业务实现
  26 + * @date : 2022-10-20 14:35
  27 + */
  28 +@Service
  29 +class FollowApiBizService(
  30 + val clueTaskService: ClueTaskService,
  31 + val accidentPoolService: AccidentPoolService,
  32 + val followClueService: FollowClueService
  33 +) {
  34 +
  35 +
  36 + /**
  37 + * 查询已成交续保数据
  38 + *
  39 + * @param query
  40 + * @param followTypeEnum
  41 + * @return
  42 + */
  43 + fun queryCompletedGuys(
  44 + query: ShouldBeCompletedQuery,
  45 + followTypeEnum: FollowTypeEnum
  46 + ): List<ShouldBeCompletedResult> {
  47 + val search = BeCompletedQuery()
  48 + search.type = followTypeEnum.value
  49 + search.shopId = query.shopId
  50 + search.userId = query.userId
  51 + search.startTime = query.startTime
  52 + search.endTime = query.endTime
  53 + val dtoList = clueTaskService.queryShouldBeCompleted(search)
  54 + return dtoList
  55 + .filter { TaskStateEnum.COMPLETE.value.equals(it.state) }
  56 + .map {
  57 + ShouldBeCompletedResult(
  58 + it.vin,
  59 + it.userId,
  60 + it.userName,
  61 + it.shopId,
  62 + it.state
  63 + )
  64 + }
  65 + }
  66 +
  67 + /**
  68 + * 查询应成交台数
  69 + *
  70 + * @param query
  71 + * @param followTypeEnum
  72 + * @return
  73 + */
  74 + fun queryShouldBeCompleted(
  75 + query: ShouldBeCompletedQuery,
  76 + followTypeEnum: FollowTypeEnum
  77 + ): List<ShouldBeCompletedResult> {
  78 + val search = BeCompletedQuery(
  79 + query.userId,
  80 + query.shopId,
  81 + query.startTime,
  82 + query.endTime,
  83 + followTypeEnum.value
  84 + )
  85 + val dtoList = clueTaskService.queryShouldBeCompleted(search)
  86 + return dtoList.map {
  87 + ShouldBeCompletedResult(
  88 + it.vin,
  89 + it.userId,
  90 + it.userName,
  91 + it.shopId,
  92 + it.state
  93 + )
  94 + }
  95 + }
  96 +
  97 + fun queryAccidentFollowerByPlate(plateNo: String, groupId: Long): ClueTask? {
  98 + val lastOne = accidentPoolService.getOne(
  99 + Wrappers.lambdaQuery<AccidentPool>()
  100 + .eq(AccidentPool::getPlateNo, plateNo)
  101 + .eq(AccidentPool::getGroupId, groupId)
  102 + .orderByDesc(AccidentPool::getCreateTime)
  103 + .last(" limit 1 ")
  104 + )
  105 +
  106 + if (Objects.isNull(lastOne)) {
  107 + return null
  108 + }
  109 + val lastOngoingClue = followClueService.getOne(
  110 + Wrappers.lambdaQuery<FollowClue>()
  111 + .eq(FollowClue::getPlateNo, plateNo)
  112 + .eq(FollowClue::getClueType, FollowTypeEnum.AC)
  113 + .eq(FollowClue::getClueState, ClueStatusEnum.ONGOING)
  114 + .eq(FollowClue::getGroupId, groupId)
  115 + .last(" limit 1 ")
  116 + );
  117 +
  118 + if (Objects.isNull(lastOngoingClue)) {
  119 + return null;
  120 + }
  121 + return clueTaskService.queryOngoingTaskByClueId(lastOngoingClue.id);
  122 + }
  123 +}
@@ -122,7 +122,7 @@ @@ -122,7 +122,7 @@
122 <dependency> 122 <dependency>
123 <groupId>cn.fw</groupId> 123 <groupId>cn.fw</groupId>
124 <artifactId>fw-valhalla-sdk</artifactId> 124 <artifactId>fw-valhalla-sdk</artifactId>
125 - <version>1.2.4</version> 125 + <version>1.2.5</version>
126 </dependency> 126 </dependency>
127 <dependency> 127 <dependency>
128 <groupId>cn.fw</groupId> 128 <groupId>cn.fw</groupId>
@@ -300,14 +300,17 @@ @@ -300,14 +300,17 @@
300 <dependency> 300 <dependency>
301 <groupId>org.jetbrains.kotlin</groupId> 301 <groupId>org.jetbrains.kotlin</groupId>
302 <artifactId>kotlin-stdlib</artifactId> 302 <artifactId>kotlin-stdlib</artifactId>
  303 + <version>${kotlin.version}</version>
303 </dependency> 304 </dependency>
304 <dependency> 305 <dependency>
305 <groupId>org.jetbrains.kotlin</groupId> 306 <groupId>org.jetbrains.kotlin</groupId>
306 <artifactId>kotlin-reflect</artifactId> 307 <artifactId>kotlin-reflect</artifactId>
  308 + <version>${kotlin.version}</version>
307 </dependency> 309 </dependency>
308 <dependency> 310 <dependency>
309 <groupId>org.jetbrains.kotlin</groupId> 311 <groupId>org.jetbrains.kotlin</groupId>
310 <artifactId>kotlin-stdlib-jdk8</artifactId> 312 <artifactId>kotlin-stdlib-jdk8</artifactId>
  313 + <version>${kotlin.version}</version>
311 </dependency> 314 </dependency>
312 <dependency> 315 <dependency>
313 <groupId>com.fasterxml.jackson.module</groupId> 316 <groupId>com.fasterxml.jackson.module</groupId>
@@ -343,22 +346,6 @@ @@ -343,22 +346,6 @@
343 </plugins> 346 </plugins>
344 </build> 347 </build>
345 348
346 - <repositories>  
347 - <repository>  
348 - <id>aliyun</id>  
349 - <name>aliyun</name>  
350 - <url>https://maven.aliyun.com/nexus/content/groups/public/</url>  
351 - </repository>  
352 - </repositories>  
353 -  
354 - <pluginRepositories>  
355 - <pluginRepository>  
356 - <id>aliyun</id>  
357 - <name>aliyun</name>  
358 - <url>https://maven.aliyun.com/nexus/content/groups/public/</url>  
359 - </pluginRepository>  
360 - </pluginRepositories>  
361 -  
362 <distributionManagement> 349 <distributionManagement>
363 <repository> 350 <repository>
364 <id>feewee-maven-releases</id> 351 <id>feewee-maven-releases</id>