Преглед на файлове

销售线索任务跟进

yangzian преди 3 години
родител
ревизия
9a83aa8b45

+ 24 - 4
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/controller/SaleClueInfoController.java

@@ -9,13 +9,13 @@ import com.ruixuan.common.utils.StringUtils;
 import com.ruixuan.common.utils.file.FileTypeUtils;
 import com.ruixuan.salesLeads.listener.ImportExcelListener;
 import com.ruixuan.salesLeads.pojo.SaleClueInfoPojo;
+import com.ruixuan.salesLeads.pojo.SaleClueRecordInfoPojo;
 import com.ruixuan.salesLeads.pojo.TestPojo;
+import com.ruixuan.salesLeads.pojo.vo.SaleRecordVo;
+import com.ruixuan.salesLeads.pojo.vo.SaleTaskInfoVo;
 import com.ruixuan.salesLeads.service.ISaleClueInfoService;
 import com.ruixuan.salesLeads.service.ITestService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -138,6 +138,26 @@ public class SaleClueInfoController extends BaseController {
 
 
 
+    @ApiOperation(value = "销售线索任务-回显线索详情",notes = "回显线索详情")
+    @GetMapping(value = "/getSaleTaskInfoBySellerId")
+    public ResultResponse<SaleTaskInfoVo> getSaleTaskInfoBySellerId(@ApiParam("卖家id") @RequestParam(value = "sellerId") Long sellerId){
+
+        return saleClueInfoServiceImpl.getSaleTaskInfoBySellerId(sellerId);
+
+    }
+
+
+
+    @ApiOperation(value = "销售线索任务-新增跟进记录",notes = "销售线索任务-新增跟进记录")
+    @PostMapping(value = "/insertSaleTaskRecord")
+    public ResultResponse insertSaleTaskRecord(SaleClueRecordInfoPojo recordInfoPojo){
+
+        return saleClueInfoServiceImpl.insertSaleTaskRecord(recordInfoPojo);
+
+    }
+
+
+
 
 
 

+ 9 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/mapper/SaleClueInfoMapper.java

@@ -2,6 +2,7 @@ package com.ruixuan.salesLeads.mapper;
 
 import com.ruixuan.salesLeads.pojo.SaleClueInfoPojo;
 import com.ruixuan.salesLeads.pojo.TestPojo;
+import com.ruixuan.salesLeads.pojo.vo.SaleRecordVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -85,6 +86,14 @@ public interface SaleClueInfoMapper {
      int selectSaleClueComplete(@Param(value = "saleId") Long saleId);
 
 
+    /**
+     * 卖家id 查询线索信息
+     * @param sellerId
+     * @return
+     */
+     SaleRecordVo selectSaleClueInfoBySellerId(@Param(value = "sellerId") Long sellerId);
+
+
 
 
 

+ 14 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/mapper/SaleClueRecordInfoMapper.java

@@ -31,4 +31,18 @@ public interface SaleClueRecordInfoMapper {
      * @return
      */
     int selectSaleClueIntention(@Param(value = "saleId") Long saleId, @Param(value = "startTime")String startTime,@Param(value = "endTime")String endTime);
+
+
+    /**
+     *  卖家id 查询销售记录
+     * @param sellerId 卖家id
+     * @return
+     */
+    List<SaleClueRecordInfoPojo> selectDistributionList(@Param(value = "sellerId") Long sellerId);
+
+    /**
+     * 添加销售记录
+     * @param recordInfoPojo
+     */
+    void insertSaleRedord(SaleClueRecordInfoPojo recordInfoPojo);
 }

+ 0 - 34
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/pojo/TestPojo.java

@@ -1,34 +0,0 @@
-package com.ruixuan.salesLeads.pojo;
-
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.List;
-
-/**
- * ***************************************************
- *
- * @Auther: zianY
- * @Descipion: demo测试
- * @CreateDate: 2022-05-19
- * ****************************************************
- */
-
-@Data
-@ApiModel(value = "testPojo", description = "测试demo")
-public class TestPojo {
-
-
-    @ApiModelProperty("用户ID")
-    private Long userId;
-
-    @ApiModelProperty("角色ID")
-    private Long roleId;
-
-    @ApiModelProperty("实体中的文件")
-    private MultipartFile file;
-
-}

+ 39 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/pojo/vo/SaleTaskInfoVo.java

@@ -0,0 +1,39 @@
+package com.ruixuan.salesLeads.pojo.vo;
+
+import com.ruixuan.salesLeads.pojo.SaleClueRecordInfoPojo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: 销售线索信息表
+ * @CreateDate: 2022-05-24
+ * ****************************************************
+ */
+
+
+@Data
+@ApiModel(value = "saleTaskInfoVo", description = "销售线索详情")
+public class SaleTaskInfoVo {
+
+
+    private int id;
+
+    @ApiModelProperty("销售线索详情")
+    private SaleRecordVo saleRecordVo;
+
+    @ApiModelProperty("跟进记录信息")
+    private List<SaleClueRecordInfoPojo> recordList;
+
+    @ApiModelProperty("下次跟进次数")
+    private int nextNum;
+
+
+
+
+}

+ 5 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/service/ISaleClueInfoService.java

@@ -2,6 +2,7 @@ package com.ruixuan.salesLeads.service;
 
 import com.ruixuan.common.core.domain.ResultResponse;
 import com.ruixuan.salesLeads.pojo.SaleClueInfoPojo;
+import com.ruixuan.salesLeads.pojo.SaleClueRecordInfoPojo;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -32,4 +33,8 @@ public interface ISaleClueInfoService {
 
     ResultResponse getTaskNumber(Long userId);
 
+    ResultResponse getSaleTaskInfoBySellerId(Long sellerId);
+
+    ResultResponse insertSaleTaskRecord(SaleClueRecordInfoPojo recordInfoPojo);
+
 }

+ 58 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/service/impl/SaleClueInfoServiceImpl.java

@@ -15,7 +15,10 @@ import com.ruixuan.salesLeads.mapper.SaleClueRecordInfoMapper;
 import com.ruixuan.salesLeads.mapper.SaleQuotaInfoMapper;
 import com.ruixuan.salesLeads.pojo.SaleClueDistributionInfoPojo;
 import com.ruixuan.salesLeads.pojo.SaleClueInfoPojo;
+import com.ruixuan.salesLeads.pojo.SaleClueRecordInfoPojo;
 import com.ruixuan.salesLeads.pojo.SaleQuotaInfoPojo;
+import com.ruixuan.salesLeads.pojo.vo.SaleRecordVo;
+import com.ruixuan.salesLeads.pojo.vo.SaleTaskInfoVo;
 import com.ruixuan.salesLeads.service.ISaleClueInfoService;
 import com.ruixuan.salesLeads.utils.CsvImportUtil;
 import com.ruixuan.system.domain.SysAreaInfo;
@@ -314,6 +317,61 @@ public class SaleClueInfoServiceImpl implements ISaleClueInfoService {
     }
 
 
+    /**
+     * 销售线索任务-回显线索详情
+     * @param sellerId
+     * @return
+     */
+    @Override
+    public ResultResponse getSaleTaskInfoBySellerId(Long sellerId){
+
+        SaleTaskInfoVo saleTaskInfoVo = new SaleTaskInfoVo();
+          //线索详情
+        SaleRecordVo saleInfo = saleClueInfoMapper.selectSaleClueInfoBySellerId(sellerId);
+         //记录信息
+        List<SaleClueRecordInfoPojo> recordList = saleClueRecordInfoMapper.selectDistributionList(sellerId);
+
+        saleTaskInfoVo.setSaleRecordVo(saleInfo);
+        saleTaskInfoVo.setRecordList(recordList);
+        saleTaskInfoVo.setNextNum(StringUtils.isEmpty(recordList) ? 1 : recordList.size()+1);
+
+        return ResultResponse.successMsg("查询成功。",saleTaskInfoVo);
+    }
+
+
+    /**
+     * 销售线索任务-新增跟进记录
+     * @param recordInfoPojo
+     * @return
+     */
+    @Override
+    public ResultResponse insertSaleTaskRecord(SaleClueRecordInfoPojo recordInfoPojo){
+
+        //新增跟进记录
+        saleClueRecordInfoMapper.insertSaleRedord(recordInfoPojo);
+
+        //修改线索状态
+        //是否继续跟进 1-继续跟进 2-意向合作 3-跟进完成无合作
+        if (recordInfoPojo.getContinueFlag() == 1){
+            //线索状态 1-未开始 2-进行中 3-已结束
+            saleClueInfoMapper.updateSaleClueState(recordInfoPojo.getSellerId(),2);
+        }
+
+        if (recordInfoPojo.getContinueFlag() == 2){
+            //意向合作 1-不合作可跟进 2-添加微信 3-操盘合作 4-服务商合作 5-金牛合作 6-无法添加微信
+            if (recordInfoPojo.getIntendedCooperation() == 1){
+                saleClueInfoMapper.updateSaleClueState(recordInfoPojo.getSellerId(),2);
+            }
+            saleClueInfoMapper.updateSaleClueState(recordInfoPojo.getSellerId(),3);
+        }
+
+        if (recordInfoPojo.getContinueFlag() == 3){
+            saleClueInfoMapper.updateSaleClueState(recordInfoPojo.getSellerId(),3);
+        }
+        return ResultResponse.successMsg("新增跟进记录成功。",null);
+    }
+
+
 
 
 

+ 0 - 113
ruixuan-salesLeads/src/main/java/com/ruixuan/salesLeads/listener/ImportExcelListener.java

@@ -1,113 +0,0 @@
-package com.ruixuan.salesLeads.listener;
-
-import com.alibaba.excel.context.AnalysisContext;
-import com.alibaba.excel.event.AnalysisEventListener;
-import com.alibaba.fastjson.JSON;
-import com.ruixuan.common.utils.StringUtils;
-import org.apache.poi.ss.formula.functions.T;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * ***************************************************
- *
- * @Auther: zianY
- * @Descipion: TODO
- * @CreateDate: 2022-05-24
- * ****************************************************
- */
-
-public class ImportExcelListener extends AnalysisEventListener<Map<Integer, String>> {
-
-
-    private static final Logger log = LoggerFactory.getLogger(ImportExcelListener.class);
-
-    public static List<Map<String,String>> importDataList = new ArrayList<>();
-
-    public static Map<Integer, String> importHeadList = new HashMap<>();
-
-
-
-    @Override
-    public void invoke(Map<Integer, String> data, AnalysisContext analysisContext) {
-
-        Map<String, String> ObjectMap = new HashMap<>();
-
-
-
-        log.info("解析到的一条数据=====excelRow = {}", JSON.toJSONString(data));
-
-        data.forEach((key,vlue) ->{
-            Object mapKey = importHeadList.get(key);
-            if (StringUtils.isNotNull(mapKey)){
-
-                String keyStr = (String)mapKey;
-
-                if (keyStr.contains("家ID")){
-                    ObjectMap.put("sellerId",vlue);
-                }
-                 if (keyStr.contains("昵称")){
-                    ObjectMap.put("sellerName",vlue);
-                }
-                if (keyStr.contains("粉丝")){
-                    ObjectMap.put("fans",vlue);
-                }
-                if (keyStr.contains("行业")){
-                    ObjectMap.put("industryId",vlue);
-                }
-                if (keyStr.contains("省份")){
-                    ObjectMap.put("provinceId",vlue);
-                }
-                if (keyStr.contains("城市")){
-                    ObjectMap.put("cityId",vlue);
-                }
-                if (keyStr.contains("联系")){
-                    ObjectMap.put("telephone",vlue);
-                }
-                if (keyStr.contains("服务商")){
-                    ObjectMap.put("providerFlag",StringUtils.isEmpty(vlue) ? "否" : vlue);
-                }
-                if (keyStr.contains("跃迁")){
-                    ObjectMap.put("transitionFlag",StringUtils.isEmpty(vlue) ? "否" : vlue);
-                }
-                if ((keyStr).contains("30天")){
-                    ObjectMap.put("NearlyThirtyDays",vlue);
-                }
-
-                if ((keyStr).contains("gmv")){
-                    ObjectMap.put("gmvMonth",keyStr.substring(0,keyStr.indexOf("gmv")));
-                    ObjectMap.put("gmv",vlue);
-                }
-
-                if (keyStr.contains("mtd")){
-                    ObjectMap.put("mtdDate",keyStr.substring(0,keyStr.indexOf("mtd")));
-                    ObjectMap.put("mtd",vlue);
-                }
-
-            }
-        });
-
-        importDataList.add(ObjectMap);
-
-
-    }
-
-    @Override
-    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
-        log.info("解析完所有数据===={}",importDataList);
-
-    }
-
-    @Override
-    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
-        log.info("表头数据===excelHead-->>>{}", headMap);
-        importHeadList.putAll(headMap);
-    }
-
-
-}

+ 3 - 0
ruixuan-salesLeads/src/main/resources/mapper/salesLeads/SaleClueDistributionInfoMapper.xml

@@ -22,4 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 
 
+
+
+
 </mapper> 

+ 48 - 0
ruixuan-salesLeads/src/main/resources/mapper/salesLeads/SaleClueInfoMapper.xml

@@ -228,4 +228,52 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 
 
+	<!-- 卖家id 查询销售记录信息  -->
+	<select id="selectSaleClueInfoBySellerId" resultType="com.ruixuan.salesLeads.pojo.vo.SaleRecordVo">
+		SELECT
+		s.id,
+		s.sales_leads_type,
+		s.seller_id,
+		s.seller_name,
+		s.fans,
+		s.industry_id,
+		(SELECT name from sys_industry_info i where i.id = s.industry_id) industryName,
+		s.province_id,
+		(SELECT name from sys_area_info a WHERE a.`code` = s.province_id) provinceName,
+		s.city_id,
+		(SELECT name from sys_area_info a WHERE a.`code` = s.city_id) cityName,
+		s.telephone,
+		s.provider_flag,
+		s.transition_flag,
+		s.upload_date,
+		s.distribution_sale_flag,
+		s.sale_id,
+		(SELECT u.nick_name FROM sys_user u WHERE u.user_id = s.sale_id ) saleName,
+		s.state,
+		s.offline_sale_flag,
+		s.create_user_id,
+		s.create_time,
+		q.nearly_thirty_days,
+		q.gmv_month,
+		q.gmv,
+		q.mtd_date,
+		q.mtd
+		FROM
+		sale_clue_info s
+		LEFT JOIN sale_quota_info q on s.seller_id = q.seller_id
+		<where>
+			<if test="sellerId !=null and sellerId != ''">
+				and s.seller_id = #{sellerId}
+			</if>
+		</where>
+		ORDER BY q.create_time DESC
+		limit 1
+
+	</select>
+
+
+
+
+
+
 </mapper> 

+ 61 - 0
ruixuan-salesLeads/src/main/resources/mapper/salesLeads/SaleClueRecordInfoMapper.xml

@@ -58,5 +58,66 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 
 
+	<!-- 卖家id 查询销售记录  -->
+	<select id="selectDistributionList" resultType="com.ruixuan.salesLeads.pojo.SaleClueRecordInfoPojo">
+		SELECT
+		r.id,
+		r.seller_id,
+		r.record_times,
+		r.record_script,
+		r.continue_flag,
+		r.intended_cooperation,
+		r.record_info,
+		r.remarks,
+		r.create_user_id,
+		r.create_time
+		FROM
+		sale_clue_record_info r
+		<where>
+			<if test="sellerId !=null and sellerId != ''">
+				and r.seller_id = #{sellerId}
+			</if>
+		</where>
+		ORDER BY r.record_times
+
+	</select>
+
+
+
+
+
+	<!-- 添加销售记录  -->
+	<insert id="insertSaleRedord">
+		insert into sale_clue_record_info (
+		r.seller_id,
+		r.record_times,
+		r.record_script,
+		r.continue_flag,
+		r.intended_cooperation,
+		r.record_info,
+		r.remarks,
+		r.create_user_id,
+		r.create_time)
+		values
+		(
+		 #{sellerId},
+		 #{recordTimes},
+		 #{recordScript},
+		 #{continueFlag},
+		 #{intendedCooperation},
+		 #{recordInfo},
+		 #{remarks},
+		 #{createUserId},
+		 NOW()
+		)
+
+
+	</insert>
+
+
+
+
+
+
 
 </mapper>