From 08db83852d3f00d1be9703e6adb4373395fe1466 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期四, 27 七月 2023 21:04:56 +0800
Subject: [PATCH] #售前规划申请单需求多选

---
 src/main/java/com/zy/crm/manager/controller/PlanController.java |  113 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 107 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/zy/crm/manager/controller/PlanController.java b/src/main/java/com/zy/crm/manager/controller/PlanController.java
index 95381bb..c3dc7a5 100644
--- a/src/main/java/com/zy/crm/manager/controller/PlanController.java
+++ b/src/main/java/com/zy/crm/manager/controller/PlanController.java
@@ -12,7 +12,9 @@
 import com.core.common.R;
 import com.core.domain.KeyValueVo;
 import com.core.exception.CoolException;
+import com.zy.crm.common.entity.RouteCollectCountType;
 import com.zy.crm.common.model.SettleDto;
+import com.zy.crm.common.utils.SetOfUtils;
 import com.zy.crm.common.web.BaseController;
 import com.zy.crm.manager.controller.result.FollowerTableVo;
 import com.zy.crm.manager.entity.Plan;
@@ -38,6 +40,8 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.*;
+
+import static java.util.stream.Collectors.toList;
 
 @RestController
 public class PlanController extends BaseController {
@@ -145,11 +149,43 @@
 	@RequestMapping(value = "/plan/update/auth")
 	@ManagerAuth
     public R update(@RequestParam Map<String, Object> param){
+        String planNeed = null;
+        Integer id = null;
+        for (Map.Entry<String, Object> entry : param.entrySet()){
+            String val = String.valueOf(entry.getValue());
+            if (Cools.isEmpty(val)){
+                continue;
+            }
+            if (entry.getKey().equals("planNeed")){
+                planNeed = val;
+            }
+            if (entry.getKey().equals("id")){
+                try{
+                    id = Integer.parseInt(val);
+                }catch (Exception e){
+                    return R.error();
+                }
+            }
+        }
         if (Cools.isEmpty(param) || Cools.isEmpty(param.get("id"))){
             return R.error();
         }
+        List<String> planNeedbs = new ArrayList<>(Arrays.asList(planNeed.split("-")));
+        if (planNeedbs.get(0).equals("[object Object]")){
+            planNeedbs.remove(0);
+            Plan plan1 = planService.selectById(id);
+            List<String> planNeedas = Arrays.asList(plan1.getPlanNeed().split("-"));
+            List<String> routeIntersectionString = SetOfUtils.getRouteIntersectionString(planNeedas, planNeedbs, RouteCollectCountType.DEDUPLICATIONUNION);
+            planNeed="";
+            for (String planNeedss:routeIntersectionString){
+                planNeed=planNeed==""? planNeedss:planNeed + "-" + planNeedss;
+            }
+        }
+
+
         // pre
         Plan plan = JSON.parseObject(JSON.toJSONString(param), Plan.class);
+        plan.setPlanNeed(planNeed);
         param.entrySet().removeIf(next -> this.fields.contains(next.getKey()));
         plan.setUpdateBy(getUserId());
         plan.setUpdateTime(new Date());
@@ -261,8 +297,6 @@
                             break;
                         case 3:
                             dto.setCurr(Boolean.TRUE);
-                            dto.setUserId(planLeader.getId());
-                            dto.setUsername(planLeader.getNickname());
                             dto.setMsg("鍞墠缁勯暱" + planLeader.getNickname() + "瀹℃壒閫氳繃");
                             dto.setTime(DateUtils.convert(new Date()));
                             break;
@@ -285,18 +319,85 @@
                     throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�");
                 }
 
-                // 娣诲姞瑙勫垝缁勯暱璺熻繘浜�
+                // 娣诲姞瑙勫垝鍛樿窡杩涗汉
                 PlanFoll planFoll = new PlanFoll();
-                planFoll.setPlanId(planner.getId());
-                planFoll.setUserId(planLeader.getId());
+                planFoll.setPlanId(plan.getId());
+                planFoll.setUserId(planner.getId());
                 if (!planFollService.insert(planFoll)) {
                     throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�");
                 }
-
                 break;
             case 3:
+                User plannerUser = userService.selectById(plan.getPlanner());
+                if (Cools.isEmpty(plannerUser)) {
+                    return R.error("鏈壘鍒拌鍒掑憳");
+                }
+                if (!getUserId().equals(plannerUser.getId())) {
+                    return R.error("鎶辨瓑锛屾偍娌℃湁瀹℃牳鐨勬潈闄�");
+                }
+                // 涓氬姟鍛�
+                User salesman = userService.selectById(plan.getUserId());
+                // 淇敼 settle 姝ラ鏁版嵁
+                List<SettleDto> list0 = JSON.parseArray(plan.getSettleMsg(), SettleDto.class);
+                for (SettleDto dto : list0) {
+                    switch (dto.getStep()) {
+                        case 3:
+                            dto.setCurr(Boolean.FALSE);
+                            break;
+                        case 4:
+                            dto.setCurr(Boolean.TRUE);
+                            dto.setMsg("瑙勫垝鍛�" + plannerUser.getNickname() + "瀹℃壒閫氳繃");
+                            dto.setTime(DateUtils.convert(new Date()));
+                            break;
+                        case 5:
+                            dto.setUserId(salesman.getId());
+                            dto.setUsername(salesman.getNickname());
+                            break;
+                        default:
+                            break;
+                    }
+                }
+                plan.setSettleMsg(JSON.toJSONString(list0));
+                // 淇敼瑙勫垝鍗曠姸鎬�
+                plan.setSettle(4);  // 瀹℃壒閫氳繃
+                plan.setUpdateBy(getUserId());
+                plan.setUpdateTime(new Date());
+
+                if (!planService.updateById(plan)) {
+                    throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�");
+                }
                 break;
             case 4:
+                // 涓氬姟鍛�
+                User salesman0 = userService.selectById(plan.getUserId());
+                if (!getUserId().equals(salesman0.getId())) {
+                    return R.error("鎶辨瓑锛屾偍娌℃湁瀹℃牳鐨勬潈闄�");
+                }
+                // 淇敼 settle 姝ラ鏁版嵁
+                List<SettleDto> list1 = JSON.parseArray(plan.getSettleMsg(), SettleDto.class);
+                for (SettleDto dto : list1) {
+                    switch (dto.getStep()) {
+                        case 4:
+                            dto.setCurr(Boolean.TRUE);
+                            break;
+                        case 5:
+                            dto.setCurr(Boolean.TRUE);
+                            dto.setMsg("涓氬姟鍛�" + salesman0.getNickname() + "瀹℃壒閫氳繃");
+                            dto.setTime(DateUtils.convert(new Date()));
+                            break;
+                        default:
+                            break;
+                    }
+                }
+                plan.setSettleMsg(JSON.toJSONString(list1));
+                // 淇敼瑙勫垝鍗曠姸鎬�
+                plan.setSettle(5);  // 瀹℃壒閫氳繃
+                plan.setUpdateBy(getUserId());
+                plan.setUpdateTime(new Date());
+
+                if (!planService.updateById(plan)) {
+                    throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�");
+                }
                 break;
             default:
                 return R.error();

--
Gitblit v1.9.1