From 4d70d2fce0e3dd5f0842cb8161181107dca1d55a Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期二, 28 十一月 2023 13:55:18 +0800
Subject: [PATCH] #

---
 src/main/resources/mapper/PlanMapper.xml                              |    1 
 src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java |   80 -------
 src/main/java/com/zy/crm/manager/controller/PlanController.java       |  363 +++++++++++++-----------------------
 src/main/java/com/zy/crm/common/model/SettleDto.java                  |   26 ++
 src/main/webapp/static/js/plan/plan.js                                |    3 
 src/main/webapp/views/loginSuper.html                                 |    0 
 src/main/webapp/views/plan/plan.html                                  |   13 
 src/main/java/com/zy/crm/manager/entity/Plan.java                     |   23 +
 src/main/java/com/zy/crm/manager/controller/OrderController.java      |   55 ++---
 9 files changed, 221 insertions(+), 343 deletions(-)

diff --git a/src/main/java/com/zy/crm/common/model/SettleDto.java b/src/main/java/com/zy/crm/common/model/SettleDto.java
index c9c1066..38a4b32 100644
--- a/src/main/java/com/zy/crm/common/model/SettleDto.java
+++ b/src/main/java/com/zy/crm/common/model/SettleDto.java
@@ -30,6 +30,9 @@
 
     private Boolean curr;
 
+    /*
+    * 娴撶缉
+    * */
     public static List<SettleDto> InItFlowPath(List<User> users, List<String> names, int nodes) {
         List<SettleDto> list = new ArrayList<>();
         for (int i = 0; i < nodes; i++) {
@@ -50,6 +53,29 @@
         return list;
     }
 
+    /*
+     * 娴撶缉
+     * */
+    public static List<SettleDto> InItFlowPathTwo(List<User> users, List<String> names, int nodes) {
+        List<SettleDto> list = new ArrayList<>();
+        for (int i = 1; i < nodes+1; i++) {
+            SettleDto dto = new SettleDto();
+            dto.setStep(i);
+            if (i == 1) {
+                dto.setTitle("寮�濮�");
+                dto.setMsg(users.get(i-1).getUsername() + names.get(i-1));
+                dto.setTime(DateUtils.convert(new Date()));
+                dto.setCurr(Boolean.TRUE);
+            } else {
+                dto.setTitle(names.get(i-1));
+            }
+            dto.setUserId(users.get(i-1).getId());
+            dto.setUsername(users.get(i-1).getUsername());
+            list.add(dto);
+        }
+        return list;
+    }
+
     public static List<SettleDto> init(Plan plan, User manager, User planLeader) {
         List<SettleDto> list = new ArrayList<>();
         for (int i = 1; i < 6; i++) {
diff --git a/src/main/java/com/zy/crm/manager/controller/OrderController.java b/src/main/java/com/zy/crm/manager/controller/OrderController.java
index 7c316c2..2e29762 100644
--- a/src/main/java/com/zy/crm/manager/controller/OrderController.java
+++ b/src/main/java/com/zy/crm/manager/controller/OrderController.java
@@ -141,6 +141,10 @@
                 followUp.setUpdateTime(now);
                 followUpService.insert(followUp);
             }
+        }else {
+            if (Cools.isEmpty(order.getMemoExperience())) {
+                order.setMemoExperience(null);
+            }
         }
 
         order.setMemoExperience(null);
@@ -195,23 +199,17 @@
                                 List<SettleDto> priQuoteDtos = JSON.parseArray(priQuote.getSettleMsg(), SettleDto.class);
                                 List<SettleDto> priQuoteDtoList = new ArrayList<>();
                                 for (SettleDto dto : priQuoteDtos) {
-                                    switch (dto.getStep()) {
-                                        case 1:
-                                            dto.setMsg(dto.getMsg()+" 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� "+DateUtils.convert(now)+" 璺熻釜椤圭洰淇敼璐熻矗浜轰负锛�"+priQuote.getUserId$());
-                                            dto.setUserId(priQuote.getUserId());
-                                            dto.setUsername(priQuote.getUserId$());
-                                            break;
-                                        case 2:
-                                            dto.setMsg(dto.getMsg()+" 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� "+DateUtils.convert(now)+" 璺熻釜椤圭洰淇敼璐熻矗浜烘椂鍚屾淇敼璐熻矗浜虹粡鐞嗕负锛�"+manager.getNickname());
-                                            dto.setUserId(manager.getId());
-                                            dto.setUsername(manager.getNickname());
-                                            break;
-                                        case 4:
-                                            dto.setUserId(priQuote.getUserId());
-                                            dto.setUsername(priQuote.getUserId$());
-                                            break;
-                                        default:
-                                            break;
+                                    if (priQuoteDtos.indexOf(dto) == 0) {
+                                        dto.setMsg(dto.getMsg() + " 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� " + DateUtils.convert(now) + " 璺熻釜椤圭洰淇敼璐熻矗浜轰负锛�" + priQuote.getUserId$());
+                                        dto.setUserId(priQuote.getUserId());
+                                        dto.setUsername(priQuote.getUserId$());
+                                    } else if (dto.getStep() == 2) {
+                                        dto.setMsg(dto.getMsg() + " 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� " + DateUtils.convert(now) + " 璺熻釜椤圭洰淇敼璐熻矗浜烘椂鍚屾淇敼璐熻矗浜虹粡鐞嗕负锛�" + manager.getNickname());
+                                        dto.setUserId(manager.getId());
+                                        dto.setUsername(manager.getNickname());
+                                    } else if (dto.getStep() == 4) {
+                                        dto.setUserId(priQuote.getUserId());
+                                        dto.setUsername(priQuote.getUserId$());
                                     }
                                     priQuoteDtoList.add(dto);
                                 }
@@ -235,9 +233,9 @@
                         List<SettleDto> priOnline2Dtos = JSON.parseArray(priOnline2.getSettleMsg(), SettleDto.class);
                         List<SettleDto> priOnline2DtoList = new ArrayList<>();
                         for (SettleDto dto : priOnline2Dtos) {
-                            if (dto.getStep() == 0) {
+                            if (priOnline2Dtos.indexOf(dto) == 0) {
                                 dto.setMsg(dto.getMsg() + " 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� " + DateUtils.convert(now) + " 璺熻釜椤圭洰淇敼璐熻矗浜轰负锛�" + priOnline2.getUser$());
-                            } else if (dto.getStep().equals(priOnline2.getSettleSize())) {
+                            } else if (priOnline2Dtos.indexOf(dto) == priOnline2Dtos.size()-1) {
                                 dto.setUserId(priOnline2.getUserId());
                                 dto.setUsername(priOnline2.getUser$());
                             }
@@ -265,18 +263,13 @@
                 List<SettleDto> planDtos = JSON.parseArray(plan.getSettleMsg(), SettleDto.class);
                 List<SettleDto> planDtoList = new ArrayList<>();
                 for (SettleDto dto : planDtos) {
-                    switch (dto.getStep()) {
-                        case 1:
-                            dto.setMsg(dto.getMsg()+" 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� "+DateUtils.convert(now)+" 璺熻釜椤圭洰淇敼璐熻矗浜轰负锛�"+plan.getUserId$());
-                            dto.setUserId(plan.getUserId());
-                            dto.setUsername(plan.getUserId$());
-                            break;
-                        case 4:
-                            dto.setUserId(plan.getUserId());
-                            dto.setUsername(plan.getUserId$());
-                            break;
-                        default:
-                            break;
+                    if (planDtos.indexOf(dto) == 0) {
+                        dto.setMsg(dto.getMsg() + " 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� " + DateUtils.convert(now) + " 璺熻釜椤圭洰淇敼璐熻矗浜轰负锛�" + plan.getUserId$());
+                        dto.setUserId(plan.getUserId());
+                        dto.setUsername(plan.getUserId$());
+                    } else if (dto.getStep().equals(plan.getSettleSize())) {
+                        dto.setUserId(plan.getUserId());
+                        dto.setUsername(plan.getUserId$());
                     }
                     planDtoList.add(dto);
                 }
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 aaa3922..5fe3109 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,6 @@
 import com.zy.crm.common.entity.PhoneCodeTypeParam;
 import com.zy.crm.common.model.SettleDto;
 import com.zy.crm.common.service.OssService;
-import com.zy.crm.common.utils.FileSaveExampleUtil;
 import com.zy.crm.common.web.BaseController;
 import com.zy.crm.manager.controller.result.FollowerTableVo;
 import com.zy.crm.manager.entity.*;
@@ -76,7 +75,7 @@
         }
         resultObj.put("formHtml", planType.getHtml());
         // 姝ラ鏉$浉鍏�
-        resultObj.put("step", plan.getSettle() == 4 ? 0 : plan.getSettle() + 1);
+        resultObj.put("step", plan.getSettle().equals(plan.getSettleSize()) ? 0 : plan.getSettle() + 1);
 
         return R.ok().add(resultObj);
     }
@@ -177,12 +176,12 @@
 
         plan.setForm(JSON.toJSONString(param));     // 鑷畾涔夎〃鍗曞唴瀹�
         plan.setSettle(1);  // 1.寮�濮�
-        User manager = new User();
-        try{
-            manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 鑾峰彇閮ㄩ棬棰嗗
-        }catch (Exception e){
-            manager = getUser();
-        }
+//        User manager = new User();
+//        try{
+//            manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 鑾峰彇閮ㄩ棬棰嗗
+//        }catch (Exception e){
+//            manager = getUser();
+//        }
         PlanType planType = planTypeService.selectById(plan.getPlanType());
         if (planType.getType().equals(2)) {
             plan.setStatus2(0);
@@ -190,9 +189,30 @@
             plan.setStatus2(10);
         }
         User planLeader = planTypeService.findPlanLeader(planType);
-        plan.setSettleMsg(JSON.toJSONString(SettleDto.init(plan, manager, planLeader)));
 
-        plan.setDirector(planLeader.getId());
+        // 鑾峰彇涓氬姟鍛�
+        List<String> initNames = new ArrayList<>();
+        initNames.add("鍒涘缓浜嗗鎵�");
+        if (!planType.getFlag().equals("澧炶ˉ")){
+            initNames.add("鍞墠瀹℃牳");
+            initNames.add("瑙勫垝鍛樺鏍�");
+        }
+        initNames.add("涓氬姟鍛樼‘璁�");
+        List<User> users = new ArrayList<>();
+        users.add(getUser());
+        if (!planType.getFlag().equals("澧炶ˉ")){
+            users.add(planLeader);
+            users.add(new User());
+        }
+        users.add(getUser());
+//        plan.setSettleMsg(JSON.toJSONString(SettleDto.init(plan, manager, planLeader)));
+        plan.setSettleMsg(JSON.toJSONString(SettleDto.InItFlowPathTwo(users, initNames, users.size())));
+        plan.setSettleSize(users.size());
+        if (users.size()>1){
+            plan.setDirector(users.get(1).getId());
+        }else {
+            plan.setDirector(getUserId());
+        }
 
         if (!planService.insert(plan)) {
             throw new CoolException("淇濇寔澶辫触锛岃閲嶈瘯");
@@ -218,6 +238,9 @@
     @Transactional
     public R assistantPlanAdd(@RequestParam Long hostPlanId) {
         Plan hostPlan = planService.selectById(hostPlanId);
+        if (!getUserId().equals(hostPlan.getUserId())){
+            return R.error("璇疯仈绯讳笟鍔″憳鎿嶄綔");
+        }
         if (hostPlan.getAssistantHostSign()!=0){
             return R.error("姝よ鍒掑崟涓嶉渶瑕佸垱寤哄壇娴佺▼");
         }
@@ -270,7 +293,25 @@
         }
         PlanType planType = new PlanType(hostPlan.getHostId(),1);//1:璐ф灦
         User planLeader = planTypeService.findPlanLeader(planType);
-        plan.setSettleMsg(JSON.toJSONString(SettleDto.init(plan, manager, planLeader)));
+        // 鑾峰彇涓氬姟鍛�
+        List<String> initNames = new ArrayList<>();
+        initNames.add("鍒涘缓浜嗗鎵�");
+        initNames.add("鍞墠瀹℃牳");
+        initNames.add("瑙勫垝鍛樺鏍�");
+        initNames.add("涓氬姟鍛樼‘璁�");
+        List<User> users = new ArrayList<>();
+        users.add(getUser());
+        users.add(planLeader);
+        users.add(new User());
+        users.add(getUser());
+//        plan.setSettleMsg(JSON.toJSONString(SettleDto.init(plan, manager, planLeader)));
+        plan.setSettleMsg(JSON.toJSONString(SettleDto.InItFlowPathTwo(users, initNames, users.size())));
+        plan.setSettleSize(users.size());
+        if (users.size()>1){
+            plan.setDirector(users.get(1).getId());
+        }else {
+            plan.setDirector(getUserId());
+        }
 
         plan.setDirector(planLeader.getId());
 
@@ -432,228 +473,88 @@
                       @RequestParam(required = false) Long plannerId){
         Plan plan = planService.selectById(planId);
         assert plan != null;
+        User plannerUser = new User();
+        Long nextUserId = getUserId();
+        User director = userService.selectById(plan.getDirector());
 
-        switch (plan.getSettle()) {
-//            case 1:
-//                // 鏈粍缁勯暱瀹℃牳
-//                User user = userService.selectById(plan.getUserId());
-//                User manager = new User();
-//                try{
-//                    manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 鑾峰彇閮ㄩ棬棰嗗
-//                }catch (Exception e){
-//                    manager = user;
-//                }
-//                if (manager.getId().equals(getUserId())) {
-//
-//                    // 鏌ユ壘瑙勫垝缁勯暱
-//                    PlanType planType = planTypeService.selectById(plan.getPlanType());
-//                    User planLeader = planTypeService.findPlanLeader(planType);
-//                    if (Cools.isEmpty(planLeader)) {
-//                        throw new CoolException("鏈煡鎵惧埌瑙勫垝缁勯暱锛岃鑱旂郴绠$悊鍛�");
-//                    }
-//
-//                    // 淇敼 settle 姝ラ鏁版嵁
-//                    List<SettleDto> list = JSON.parseArray(plan.getSettleMsg(), SettleDto.class);
-//                    for (SettleDto dto : list) {
-//                        switch (dto.getStep()) {
-//                            case 1:
-//                                dto.setCurr(Boolean.FALSE);
-//                                break;
-//                            case 2:
-//                                dto.setCurr(Boolean.TRUE);
-//                                dto.setMsg("鏈粍缁勯暱" + manager.getNickname() + "瀹℃壒閫氳繃");
-//                                dto.setTime(DateUtils.convert(new Date()));
-//                                break;
-//                            case 3:
-//                                dto.setUserId(planLeader.getId());
-//                                dto.setUsername(planLeader.getNickname());
-//                                break;
-//                            default:
-//                                break;
-//                        }
-//                    }
-//                    plan.setSettleMsg(JSON.toJSONString(list));
-//
-//                    // 淇敼瑙勫垝鍗曠姸鎬�
-//                    plan.setSettle(2);  // 瑙勫垝缁勯暱寰呭
-//                    plan.setUpdateBy(getUserId());
-//                    plan.setUpdateTime(new Date());
-//
-//                    if (!planService.updateById(plan)) {
-//                        throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�");
-//                    }
-//
-//                    // 娣诲姞瑙勫垝缁勯暱璺熻繘浜�
-//                    PlanFoll planFoll = new PlanFoll();
-//                    planFoll.setPlanId(plan.getId());
-//                    planFoll.setUserId(planLeader.getId());
-//                    if (!planFollService.insert(planFoll)) {
-//                        throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�");
-//                    }
-//
-//                } else {
-//                    return R.error("鎶辨瓑锛屾偍娌℃湁瀹℃牳鐨勬潈闄�");
-//                }
-//                break;
-            case 1:
-                // 鏌ユ壘瑙勫垝缁勯暱
-                User planLeader = userService.selectById(plan.getDirector());
-                if (Cools.isEmpty(planLeader)) {
-                    throw new CoolException("鏈煡鎵惧埌瑙勫垝缁勯暱锛岃鑱旂郴绠$悊鍛�");
-                }
-                if (Cools.isEmpty(planLeader)) {
-                    throw new CoolException("鏈煡鎵惧埌瑙勫垝缁勯暱锛岃鑱旂郴绠$悊鍛�");
-                }
-                if (!getUserId().equals(planLeader.getId())) {
-                    return R.error("鎶辨瓑锛屾偍娌℃湁瀹℃牳鐨勬潈闄�");
-                }
-                if (Cools.isEmpty(plannerId)) {
-                    return R.error("鎸囧畾瑙勫垝鍛樹笉鑳戒负绌�");
-                }
-                plan.setDirector(plannerId);
-                User planner = userService.selectById(plannerId);
-                // 淇敼 settle 姝ラ鏁版嵁
-                List<SettleDto> list = JSON.parseArray(plan.getSettleMsg(), SettleDto.class);
-                for (SettleDto dto : list) {
-                    switch (dto.getStep()) {
-                        case 1:
-                            dto.setCurr(Boolean.FALSE);
-                            break;
-                        case 2:
-                            dto.setCurr(Boolean.TRUE);
-                            if (Cools.isEmpty(dto.getMsg())){
-                                dto.setMsg("鍞墠缁勯暱" + planLeader.getNickname() + "瀹℃壒閫氳繃");
-                            }else {
-                                dto.setMsg(dto.getMsg()+PZH+DateUtils.convert(new Date())+" "+"鍞墠缁勯暱" + planLeader.getNickname() + "瀹℃壒閫氳繃");
-                            }
-                            dto.setTime(DateUtils.convert(new Date()));
-                            break;
-                        case 3:
-                            dto.setUserId(planner.getId());
-                            dto.setUsername(planner.getNickname());
-                            break;
-                        default:
-                            break;
-                    }
-                }
-                plan.setSettleMsg(JSON.toJSONString(list));
-                // 淇敼瑙勫垝鍗曠姸鎬�
-                plan.setSettle(2);  // 瑙勫垝鍛樺緟瀹�
-                plan.setPlanner(planner.getId());
-                plan.setUpdateBy(getUserId());
-                plan.setUpdateTime(new Date());
-
-                if (!planService.updateById(plan)) {
-                    throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�");
-                }
-
-                // 娣诲姞瑙勫垝鍛樿窡杩涗汉
-                PlanFoll planFoll = new PlanFoll();
-                planFoll.setPlanId(plan.getId());
-                planFoll.setUserId(planner.getId());
-                if (!planFollService.insert(planFoll)) {
-                    throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�");
-                }
-
-                if (!smsCodeService.sendSmsCodeText(planner.getMobile(), PhoneCodeTypeParam.ALIYUN_M6F3C81FE3)) {
-                    return R.ok("瀹℃牳鎴愬姛浣嗙煭淇″彂閫佸け璐�!");
-                }
-                break;
-            case 2:
-                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());
-                plan.setDirector(salesman.getId());
-
-                // 淇敼 settle 姝ラ鏁版嵁
-                List<SettleDto> list0 = JSON.parseArray(plan.getSettleMsg(), SettleDto.class);
-                for (SettleDto dto : list0) {
-                    switch (dto.getStep()) {
-                        case 2:
-                            dto.setCurr(Boolean.FALSE);
-                            break;
-                        case 3:
-                            dto.setCurr(Boolean.TRUE);
-                            if (Cools.isEmpty(dto.getMsg())){
-                                dto.setMsg("瑙勫垝鍛�" + plannerUser.getNickname() + "瀹℃壒閫氳繃");
-                            }else {
-                                dto.setMsg(dto.getMsg()+PZH+DateUtils.convert(new Date())+" "+"瑙勫垝鍛�" + plannerUser.getNickname() + "瀹℃壒閫氳繃");
-                            }
-                            dto.setTime(DateUtils.convert(new Date()));
-                            break;
-                        case 4:
-                            dto.setUserId(salesman.getId());
-                            dto.setUsername(salesman.getNickname());
-                            break;
-                        default:
-                            break;
-                    }
-                }
-                plan.setSettleMsg(JSON.toJSONString(list0));
-                // 淇敼瑙勫垝鍗曠姸鎬�
-                plan.setSettle(3);  // 瀹℃壒閫氳繃
-                plan.setUpdateBy(getUserId());
-                plan.setUpdateTime(new Date());
-
-                if (!planService.updateById(plan)) {
-                    throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�");
-                }
-                if (!smsCodeService.sendSmsCodeText(salesman.getMobile(), PhoneCodeTypeParam.ALIYUN_M1ABAC630E)) {
-                    return R.ok("瀹℃牳鎴愬姛浣嗙煭淇″彂閫佸け璐�!");
-                }
-                break;
-            case 3:
-                // 涓氬姟鍛�
-                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 3:
-                            dto.setCurr(Boolean.TRUE);
-                            break;
-                        case 4:
-                            dto.setCurr(Boolean.TRUE);
-                            if (Cools.isEmpty(dto.getMsg())){
-                                dto.setMsg("涓氬姟鍛�" + salesman0.getNickname() + "瀹℃壒閫氳繃");
-                            }else {
-                                dto.setMsg(dto.getMsg()+PZH+DateUtils.convert(new Date())+" "+"涓氬姟鍛�" + salesman0.getNickname() + "瀹℃壒閫氳繃");
-                            }
-                            dto.setTime(DateUtils.convert(new Date()));
-                            break;
-                        default:
-                            break;
-                    }
-                }
-                plan.setSettleMsg(JSON.toJSONString(list1));
-                // 淇敼瑙勫垝鍗曠姸鎬�
-                plan.setSettle(4);  // 瀹℃壒閫氳繃
-                plan.setStatus(1);  // 瀹℃壒閫氳繃
-                plan.setUpdateBy(getUserId());
-                plan.setUpdateTime(new Date());
-
-                if (plan.getAssistantHostSign()==1){
-                    Plan planHost = planService.selectById(plan.getHostPlanId());
-                    planHost.setStatus2(1);
-                    planService.updateById(planHost);
-                }
-
-                if (!planService.updateById(plan)) {
-                    throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�");
-                }
-                break;
-            default:
-                return R.error();
+        if (Cools.isEmpty(getUser()) || Cools.isEmpty(director)){
+            return R.error("鎶辨瓑锛屾偍鏃犻渶纭锛侊紒锛�");
         }
+
+        if (!getUserId().equals(director.getId())) {
+            return R.error("鎶辨瓑锛屾偍鏃犻渶纭锛侊紒锛�");
+        }
+
+        // 淇敼 settle 姝ラ鏁版嵁
+        List<SettleDto> list = JSON.parseArray(plan.getSettleMsg(), SettleDto.class);
+        // 淇敼 settle 姝ラ鏁版嵁
+        for (SettleDto dto : list) {
+            if (dto.getStep().equals(plan.getSettle())) {
+                dto.setCurr(Boolean.TRUE);
+            } else if (dto.getStep().equals(plan.getSettle()+1)) {
+                dto.setCurr(Boolean.TRUE);
+                if (Cools.isEmpty(dto.getMsg())) {
+                    dto.setMsg(director.getNickname() + "瀹℃壒閫氳繃");
+                } else {
+                    dto.setMsg(dto.getMsg() + PZH + DateUtils.convert(new Date()) + " " + director.getNickname() + "瀹℃壒閫氳繃");
+                }
+                dto.setTime(DateUtils.convert(new Date()));
+            } else if (dto.getStep().equals(plan.getSettle() + 2)) {
+                if (Cools.isEmpty(dto.getUserId())){
+                    if (Cools.isEmpty(plannerId)) {
+                        return R.error("鎸囧畾瑙勫垝鍛樹笉鑳戒负绌�");
+                    }
+                    plannerUser = userService.selectById(plannerId);
+                    if (Cools.isEmpty(plannerUser)){
+                        return R.error("鏈煡鍒版寚瀹氳鍒掑憳璐﹀彿");
+                    }
+                    nextUserId= plannerId;
+                    plan.setPlanner(plannerId);
+                    dto.setUserId(plannerId);
+                    dto.setUsername(plannerUser.getNickname());
+                    // 娣诲姞瑙勫垝鍛樿窡杩涗汉
+                    PlanFoll planFoll = new PlanFoll();
+                    planFoll.setPlanId(plan.getId());
+                    planFoll.setUserId(nextUserId);
+                    if (!planFollService.insert(planFoll)) {
+                        throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�");
+                    }
+                }else {
+                    nextUserId=dto.getUserId();
+                }
+            }
+        }
+        plan.setSettleMsg(JSON.toJSONString(list));
+        // 淇敼瑙勫垝鍗曠姸鎬�
+        plan.setSettle(plan.getSettle()+1);  // 瀹℃壒閫氳繃
+        if (plan.getSettle().equals(plan.getSettleSize())){
+            plan.setStatus(1);
+            if (plan.getAssistantHostSign()==1){
+                Plan planHost = planService.selectById(plan.getHostPlanId());
+                planHost.setStatus2(1);
+                planService.updateById(planHost);
+            }
+        }
+        plan.setUpdateBy(getUserId());
+        plan.setUpdateTime(new Date());
+        plan.setDirector(nextUserId);
+
+        if (!planService.updateById(plan)) {
+            throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�");
+        }
+        if (!plan.getSettle().equals(plan.getSettleSize())){
+            if (!Cools.isEmpty(plannerId) && nextUserId.equals(plannerId)){
+                if (!smsCodeService.sendSmsCodeText(plannerUser.getMobile(), PhoneCodeTypeParam.ALIYUN_M6F3C81FE3)) {
+                    return R.ok("瀹℃牳鎴愬姛浣嗙煭淇″彂閫佸け璐�!");
+                }
+            }else {
+                User phoneUser = userService.selectById(nextUserId);
+                if (!smsCodeService.sendSmsCodeText(phoneUser.getMobile(), PhoneCodeTypeParam.ALIYUN_M1ABAC630E)) {
+                    return R.ok("瀹℃牳鎴愬姛浣嗙煭淇″彂閫佸け璐�!");
+                }
+            }
+        }
+
         return R.ok("瀹℃壒鎴愬姛");
     }
 
diff --git a/src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java b/src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java
index f7ba377..9838888 100644
--- a/src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java
+++ b/src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java
@@ -168,69 +168,6 @@
             wrapper.or().eq("host_id", 1);
         }
     }
-//    @RequestMapping(value = "/priOnline2/HJ/add/auth")
-//    @ManagerAuth(memo = "鎺ュ彇闆嗘垚鏍镐环浠诲姟")
-//    public R addHJ(PriOnline2 priOnline2) {
-//        PriOnline2 priOnline21 = priOnline2Service.selectById(priOnline2.getId());
-//        if (priOnline21.getSettle()!=1 || !priOnline21.getMemberId().equals(0L)){
-//            return R.error("姝ら泦鎴愭牳浠峰崟鐘舵�佸凡鏀瑰彉锛岃鍒锋柊椤甸潰閲嶆柊閫夋嫨锛�");
-//        }
-//        Date now = new Date();
-//        priOnline21.setMemberId(getUserId());
-//
-//
-//        List<SettleDto> planDtos = JSON.parseArray(priOnline21.getSettleMsg(), SettleDto.class);
-//        List<SettleDto> planDtoList = new ArrayList<>();
-//        for (SettleDto dto : planDtos) {
-//            if (dto.getStep().equals(2)) {
-//                dto.setUserId(getUserId());
-//                dto.setUsername(getUser().getNickname());
-//                if (Cools.isEmpty(dto.getMsg())) {
-//                    dto.setMsg(getUser().getNickname() + "鎺ュ彇鏍镐环");
-//                } else {
-//                    dto.setMsg(dto.getMsg() + PZH + DateUtils.convert(now) + " " + getUser().getNickname() + "鎺ュ彇鏍镐环");
-//                }
-//                dto.setTime(DateUtils.convert(new Date()));
-//            }
-//            planDtoList.add(dto);
-//        }
-//        priOnline21.setSettleMsg(JSON.toJSONString(planDtoList));
-//        priOnline21.setUpdateUserId(getUserId());
-//        priOnline21.setUpdateTime(now);
-//        priOnline2Service.updateById(priOnline21);
-//        return R.ok("鎺ュ彇鎴愬姛");
-//    }
-
-//    @RequestMapping(value = "/priOnline2/HJ/search/auth")
-//    @ManagerAuth
-//    public R priOnline2Search(String condition) {
-//        EntityWrapper<PriOnline2> wrapper = new EntityWrapper<>();
-//        wrapper.like("template_name", condition);
-//        wrapper.eq("member_id",0L);
-//
-//        List<ProcessPermissions> processPermissionsList = processPermissionsService.selectList(new EntityWrapper<ProcessPermissions>().eq("process_memo", 5));//2锛氭牳浠锋祦绋�
-//        int type =0;
-//        for (ProcessPermissions processPermissions:processPermissionsList){
-//            if (getUserId().equals(processPermissions.getUserId())){
-//                type=1;
-//                break;
-//            }
-//        }
-//        if (type==0){
-//            return R.error("浣犱笉鏄牳浠峰憳,鏃犳潈鎺ヤ换鍔�");
-//        }
-//        List<Map<String, Object>> result = new ArrayList<>();
-//
-//        List<PriOnline2> priOnline2s = priOnline2Service.selectList(wrapper);
-//        for (PriOnline2 priOnline2 : priOnline2s){
-//            Map<String, Object> map = new HashMap<>();
-//            map.put("id", priOnline2.getId());
-//            map.put("name", priOnline2.getTemplateName()+" - ID:"+priOnline2.getId());
-//            result.add(map);
-//        }
-//        return R.ok(result);
-//    }
-
 
     @RequestMapping(value = "/priOnline2/add/auth")
     @ManagerAuth(memo = "娣诲姞鏍镐环绠$悊")
@@ -271,7 +208,6 @@
         if (plan.getStatus() != 1) {
             return R.error("姝よ鍒掑崟鐘舵�佹敼鍙橈紝璇峰埛鏂伴〉闈㈤噸鏂伴�夋嫨锛�");
         }
-        priOnline2.setMemberId(getUserId());
 
         Cstmr cstmr = cstmrService.selectById(plan.getCstmrId());
         priOnline2.setTemplateName(cstmr.getName());  //瀹㈡埛淇℃伅鍚嶇О
@@ -286,7 +222,7 @@
 //        }
 
 //        String node="2-";
-        PlanType planType = planTypeService.selectById(plan.getPlanType());
+//        PlanType planType = planTypeService.selectById(plan.getPlanType());
 //        node = node+planType.getType();
 //        ProcessPermissions processPermissions = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 5).eq("process", "2-1"));//2锛氭牳浠锋祦绋�
 //        User manager = userService.selectById(processPermissions.getUserId());       // 鑾峰彇鏍镐环娴佺▼鑺傜偣2纭浜�
@@ -300,11 +236,16 @@
         List<User> users = new ArrayList<>();
         users.add(getUser());
         users.add(getUser());
+//        users.add(new User());
         users.add(userUp);
         priOnline2.setSettleMsg(JSON.toJSONString(SettleDto.InItFlowPath(users, initNames, users.size())));
         priOnline2.setSettleSize(users.size());
         priOnline2.setPlanId(plan.getId());
-
+        if (users.size()>1){
+            priOnline2.setMemberId(users.get(1).getId());
+        } else {
+            priOnline2.setMemberId(getUserId());
+        }
         //璁剧疆椤圭洰娴佺▼
         plan.setStep(2);
         plan.setStatus(2);
@@ -623,10 +564,7 @@
         assert priOnline2 != null;
         Date now = new Date();
         Long nextUserId = getUserId();
-        User user = new User();
-        List<SettleDto> list = new ArrayList<>();
-
-        user = userService.selectById(priOnline2.getMemberId());
+        User user = userService.selectById(priOnline2.getMemberId());
 
         if (Cools.isEmpty(getUser()) || Cools.isEmpty(user)){
             return R.error("鎶辨瓑锛屾偍鏃犻渶纭锛侊紒锛�");
@@ -636,7 +574,7 @@
             return R.error("鎶辨瓑锛屾偍鏃犻渶纭锛侊紒锛�");
         }
         // 淇敼 settle 姝ラ鏁版嵁
-        list = JSON.parseArray(priOnline2.getSettleMsg(), SettleDto.class);
+        List<SettleDto> list = JSON.parseArray(priOnline2.getSettleMsg(), SettleDto.class);
         for (SettleDto dto : list) {
             if (dto.getStep().equals(priOnline2.getSettle())) {
                 dto.setCurr(Boolean.TRUE);
diff --git a/src/main/java/com/zy/crm/manager/entity/Plan.java b/src/main/java/com/zy/crm/manager/entity/Plan.java
index 4f1a728..dfb4da1 100644
--- a/src/main/java/com/zy/crm/manager/entity/Plan.java
+++ b/src/main/java/com/zy/crm/manager/entity/Plan.java
@@ -174,9 +174,9 @@
     private String files;
 
     /**
-     * 杩涘害 1: 寮�濮�  2: 缁勯暱瀹℃牳  3: 鍞墠缁勯暱瀹℃牳  4: 瑙勫垝鍛樺鏍�  5: 瀹℃壒閫氳繃
+     * 杩涘害 1: 寮�濮�  2: 鍞墠瀹℃牳  3: 瑙勫垝鍛樺鏍�  4: 瀹℃壒閫氳繃
      */
-    @ApiModelProperty(value = "杩涘害 1: 寮�濮�  2: 缁勯暱瀹℃牳  3: 鍞墠瀹℃牳  4: 瑙勫垝鍛樺鏍�  5: 瀹℃壒閫氳繃  ")
+    @ApiModelProperty(value = "杩涘害 1: 寮�濮�  2: 鍞墠瀹℃牳  3: 瑙勫垝鍛樺鏍�  4: 瀹℃壒閫氳繃  ")
     private Integer settle;
 
     /**
@@ -278,6 +278,13 @@
     @ApiModelProperty(value = "涓籶lanId")
     @TableField("assistant_host_sign")
     private Integer assistantHostSign;
+
+    /**
+     * 娴佺▼闀垮害
+     */
+    @ApiModelProperty(value= "娴佺▼闀垮害")
+    @TableField("settle_size")
+    private Integer settleSize;
 
     public Plan() {
     }
@@ -496,9 +503,17 @@
         if (null == this.settle) {
             return null;
         }
+        if (this.getSettleSize()==2){
+            switch (this.settle) {
+                case 1:
+                    return "绛夊緟纭";
+                case 2:
+                    return "瀹℃壒閫氳繃";
+                default:
+                    return String.valueOf(this.settle);
+            }
+        }
         switch (this.settle) {
-//            case 1:
-//                return "绛夊緟缁勯暱瀹℃牳";
             case 1:
                 return "绛夊緟鍞墠鍒嗛厤瑙勫垝鍛�";
             case 2:
diff --git a/src/main/resources/mapper/PlanMapper.xml b/src/main/resources/mapper/PlanMapper.xml
index 8d53aaf..0a8ea01 100644
--- a/src/main/resources/mapper/PlanMapper.xml
+++ b/src/main/resources/mapper/PlanMapper.xml
@@ -40,6 +40,7 @@
         <result column="assistant_plan_id" property="assistantPlanId" />
         <result column="host_plan_id" property="hostPlanId" />
         <result column="assistant_host_sign" property="assistantHostSign" />
+        <result column="settle_size" property="settleSize" />
 
     </resultMap>
 
diff --git a/src/main/webapp/static/js/plan/plan.js b/src/main/webapp/static/js/plan/plan.js
index b7a17b3..cd665f2 100644
--- a/src/main/webapp/static/js/plan/plan.js
+++ b/src/main/webapp/static/js/plan/plan.js
@@ -173,6 +173,7 @@
                 },
                 hide: false
             }
+            , {field: 'settleSize', align: 'center', title: '娴佺▼闀垮害', hide: true}
             ,{field: 'deptId$', align: 'left',title: '鎵�灞為儴闂�',hide: true}
             ,{field: 'planner$', align: 'left',title: '瑙勫垝鍛�',hide: false, width: 100, sort:true}
             // ,{field: 'nowHeadman$', align: 'left',title: '瑙勫垝缁勯暱',hide: true}
@@ -555,7 +556,7 @@
                 }, function (i) {
                     layer.close(i);
                     // 鎸囧畾瑙勫垝鍛�
-                    if (data.settle === 1) {
+                    if (data.settle === 1 && data.settleSize === 4) {
                         admin.open({
                             type: 1,
                             area: '300px',
diff --git a/src/main/webapp/views/login2.html b/src/main/webapp/views/loginSuper.html
similarity index 100%
rename from src/main/webapp/views/login2.html
rename to src/main/webapp/views/loginSuper.html
diff --git a/src/main/webapp/views/plan/plan.html b/src/main/webapp/views/plan/plan.html
index e721ca3..328d7b3 100644
--- a/src/main/webapp/views/plan/plan.html
+++ b/src/main/webapp/views/plan/plan.html
@@ -143,18 +143,21 @@
 </div>
 
 <script type="text/html" id="operate">
-    {{# if (d.settle == 1 || d.settle == 2 || d.settle == 3) { }}
+    {{# if (d.settle == 1) { }}
         <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">瀹℃壒</a>
     {{# } }}
-    {{# if (d.settle == 2 || d.settle == 3) { }}
-    <a class="layui-btn layui-btn-xs btn-edit" lay-event="approvalEnd">鍥為��瀹℃壒</a>
+    {{# if ((d.settle == 2 || d.settle == 3) && d.settleSize==4) { }}
+        <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">瀹℃壒</a>
     {{# } }}
-    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="uploadLink">闄勪欢</a>
+    {{# if ((d.settle == 2 || d.settle == 3)&& d.settleSize==4) { }}
+        <a class="layui-btn layui-btn-xs btn-edit" lay-event="approvalEnd">鍥為��瀹℃壒</a>
+    {{# } }}
+        <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="uploadLink">闄勪欢</a>
     {{# if (d.settle == 1) { }}
         <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
         <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
     {{# } }}
-    {{# if (d.assistantHostSign == 0 && d.assistantPlanId==0) { }}
+    {{# if ((d.assistantHostSign == 0 && d.assistantPlanId==0)&& d.settleSize==4) { }}
         <a class="layui-btn layui-btn-xs btn-edit" lay-event="assistantPlan">鍒涘缓璐ф灦瑙勫垝浠诲姟</a>
     {{# } }}
 

--
Gitblit v1.9.1