From 59292e68b11c383948b436e755a4aad8abf1ce24 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期五, 19 四月 2024 15:32:06 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/crm/manager/controller/WeeklyController.java |  492 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 443 insertions(+), 49 deletions(-)

diff --git a/src/main/java/com/zy/crm/manager/controller/WeeklyController.java b/src/main/java/com/zy/crm/manager/controller/WeeklyController.java
index 5226b02..487c42a 100644
--- a/src/main/java/com/zy/crm/manager/controller/WeeklyController.java
+++ b/src/main/java/com/zy/crm/manager/controller/WeeklyController.java
@@ -1,19 +1,18 @@
 package com.zy.crm.manager.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.core.common.DateUtils;
 import com.core.exception.CoolException;
-import com.zy.crm.manager.entity.Weekly;
-import com.zy.crm.manager.entity.WeeklyDailyPlan;
-import com.zy.crm.manager.entity.WeeklyDailyReality;
+import com.zy.crm.common.entity.PhoneCodeTypeParam;
+import com.zy.crm.common.model.SettleDto;
+import com.zy.crm.manager.entity.*;
 import com.zy.crm.manager.entity.param.CstmrUtilsParam;
 import com.zy.crm.manager.entity.param.WeeklyDomainParam;
-import com.zy.crm.manager.service.WeeklyDailyPlanService;
-import com.zy.crm.manager.service.WeeklyDailyRealityService;
-import com.zy.crm.manager.service.WeeklyService;
+import com.zy.crm.manager.service.*;
 import com.core.annotations.ManagerAuth;
 import com.core.common.BaseRes;
 import com.core.common.Cools;
@@ -21,6 +20,8 @@
 import com.core.domain.KeyValueVo;
 import com.zy.crm.common.web.BaseController;
 import com.zy.crm.manager.utils.TimeCalculatorUtils;
+import com.zy.crm.system.entity.User;
+import com.zy.crm.system.service.UserService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
@@ -38,11 +39,34 @@
     private WeeklyDailyPlanService weeklyDailyPlanService;
     @Autowired
     private WeeklyDailyRealityService weeklyDailyRealityService;
+    @Autowired
+    private UserService userService;
+    @Autowired
+    private WeeklyFollService weeklyFollService;
+    @Autowired
+    private SmsCodeService smsCodeService;
+    @Autowired
+    private CstmrService cstmrService;
+
+    String PZH = " 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� ";
+    Integer PBN = 3;
 
     @RequestMapping(value = "/weekly/{id}/auth")
     @ManagerAuth
     public R get(@PathVariable("id") String id) {
-        return R.ok(weeklyService.selectById(String.valueOf(id)));
+        Weekly weekly = weeklyService.selectById(String.valueOf(id));
+        assert weekly != null;
+        JSONObject resultObj = JSON.parseObject(JSON.toJSONString(weekly));
+        if (!Cools.isEmpty(weekly.getForm())) {
+            JSONObject formObj = JSON.parseObject(weekly.getForm());
+            formObj.forEach(resultObj::putIfAbsent);
+        }
+
+        // 姝ラ鏉$浉鍏�
+        resultObj.put("step", weekly.getSettle().equals(weekly.getSettleSize()) ? 0 : weekly.getSettle() + 1);
+
+        return R.ok().add(resultObj);
+//        return R.ok(weeklyService.selectById(String.valueOf(id)));
     }
 
     @RequestMapping(value = "/weekly/list/auth")
@@ -61,16 +85,76 @@
         return R.ok(weeklyService.selectPage(new Page<>(curr, limit), wrapper));
     }
 
+//    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+//        for (Map.Entry<String, Object> entry : map.entrySet()){
+//            String val = String.valueOf(entry.getValue());
+//            if (val.contains(RANGE_TIME_LINK)){
+//                String[] dates = val.split(RANGE_TIME_LINK);
+//                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+//                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+//            } else {
+//                wrapper.like(entry.getKey(), val);
+//            }
+//        }
+//    }
+
+    @RequestMapping(value = "/weekly/list/auth2")
+    @ManagerAuth
+    public R list2(@RequestParam(defaultValue = "1")Integer curr,
+                  @RequestParam(defaultValue = "10")Integer limit,
+                  @RequestParam(required = false)String orderByField,
+                  @RequestParam(required = false)String orderByType,
+                  @RequestParam(required = false)String condition,
+                  @RequestParam Map<String, Object> param) {
+        EntityWrapper<Weekly> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        allLike(Weekly.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        return R.ok(weeklyService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
     private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+        Long deptId = getDeptId();
+        boolean signUserId = false;
+        boolean signDeptId = false;
+        boolean signHostId = false;
+        for (Map.Entry<String, Object> entry : map.entrySet()){
+            if (entry.getKey().equals("dept_id")){
+                signDeptId = true;
+                if (String.valueOf(entry.getValue()).equals("19")){
+                    signHostId = true;
+                }
+            }
+        }
         for (Map.Entry<String, Object> entry : map.entrySet()){
             String val = String.valueOf(entry.getValue());
             if (val.contains(RANGE_TIME_LINK)){
                 String[] dates = val.split(RANGE_TIME_LINK);
                 wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
                 wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+            } else if (entry.getKey().equals("dept_id")){
+                if (!val.equals("19")){
+                    wrapper.eq(entry.getKey(), val);
+                }
+            } else if (entry.getKey().equals("user_id") && !signDeptId){
+                signUserId = true;
+                wrapper.eq(entry.getKey(), val);
             } else {
                 wrapper.like(entry.getKey(), val);
             }
+        }
+        if (!signUserId && !signDeptId){
+            if (getRole().getId()==1){
+                wrapper.or().eq("host_id",getHostId());
+            }else if (getRole().getId()==2){
+                wrapper.eq("dept_id",getDeptId());
+            }else {
+                wrapper.eq("user_id", getUserId());
+            }
+        }
+        if (signHostId){
+            wrapper.or().eq("host_id",getHostId());
         }
     }
 
@@ -93,11 +177,27 @@
 
     @RequestMapping(value = "/weekly/delete/auth")
     @ManagerAuth
-    public R delete(@RequestParam(value="ids[]") Long[] ids){
-         for (Long id : ids){
-            weeklyService.deleteById(id);
-        }
-        return R.ok();
+    public R delete(@RequestParam() Long[] ids){
+         try{
+             for (Long id : ids){
+                 List<WeeklyDailyReality> weeklyDailyRealities = weeklyDailyRealityService.selectList(new EntityWrapper<WeeklyDailyReality>().eq("weekly_id", id));
+                 for (WeeklyDailyReality weeklyDailyReality:weeklyDailyRealities){
+                     weeklyDailyRealityService.deleteById(weeklyDailyReality);
+                 }
+                 List<WeeklyDailyPlan> weeklyDailyPlans = weeklyDailyPlanService.selectList(new EntityWrapper<WeeklyDailyPlan>().eq("weekly_id", id));
+                 for (WeeklyDailyPlan weeklyDailyPlan:weeklyDailyPlans){
+                     weeklyDailyPlanService.deleteById(weeklyDailyPlan);
+                 }
+                 List<WeeklyFoll> weeklyFolls = weeklyFollService.selectList(new EntityWrapper<WeeklyFoll>().eq("weekly_id", id));
+                 for (WeeklyFoll weeklyFoll:weeklyFolls){
+                     weeklyFollService.deleteById(weeklyFoll);
+                 }
+                 weeklyService.deleteById(id);
+             }
+         }catch (Exception e){
+             throw new CoolException("鍒犻櫎澶辫触锛屽紓甯镐俊鎭細"+e);
+         }
+         return R.ok();
     }
 
     @RequestMapping(value = "/weekly/export/auth")
@@ -168,8 +268,6 @@
             weekly.setDeptId(getDeptId());               // 鎵�灞為儴闂�
             weekly.setUserId(getUserId());               // 鎵�灞炰汉鍛�
 
-            weekly.setDirector(getUserId());               // 鎵�灞炰汉鍛�
-
             weekly.setCreateBy(getUserId());
             weekly.setCreateTime(now);
             weekly.setUpdateBy(getUserId());
@@ -212,6 +310,34 @@
             weekly.setWeeklyNowMonth(TimeCalculatorUtils.WeeklyNowMonthDay(weekly.getStartTime()));
             weekly.setWeeklyDayMonth(weekly.getWeeklyMonth()+"鏈堢"+weekly.getWeeklyNowMonth()+"鍛�");
 
+            User manager = new User();
+            try {
+                manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 鑾峰彇閮ㄩ棬棰嗗
+            } catch (Exception e) {
+                manager = getUser();
+            }
+            // 鑾峰彇涓氬姟鍛�
+            List<String> initNames = new ArrayList<>();
+            initNames.add("鍒涘缓浜嗗鎵�");
+            initNames.add("涓氬姟鍛樻彁浜�");
+            initNames.add("閮ㄩ棬棰嗗瀹℃牳");
+            List<User> users = new ArrayList<>();
+            users.add(getUser());
+            users.add(getUser());
+            users.add(manager);
+//            users.add(getUser());
+            weekly.setSettleMsg(JSON.toJSONString(SettleDto.InItFlowPathTwo(users, initNames, users.size())));
+            weekly.setSettleSize(users.size());
+            weekly.setSettleCurrent(1);
+            if (users.size() > 1) {
+                weekly.setDirector(users.get(1).getId());
+            } else {
+                weekly.setDirector(getUserId());
+            }
+
+
+            weekly.setSettleSize(users.size());
+
             List<Date> dates = TimeCalculatorUtils.WeeklyListDays(dateList);//鑾峰彇鍛ㄤ竴鍒板懆鏃ユ棩鏈�
 
             try{
@@ -228,7 +354,7 @@
                 weeklyDailyPlan.setDeptId(getDeptId());               // 鎵�灞為儴闂�
                 weeklyDailyPlan.setUserId(getUserId());               // 鎵�灞炰汉鍛�
 
-                weeklyDailyPlan.setDirector(getUserId());               // 鎵�灞炰汉鍛�
+                weeklyDailyPlan.setDirector(manager.getId());               // 鎵�灞炰汉鍛�
 
                 weeklyDailyPlan.setCreateBy(getUserId());
                 weeklyDailyPlan.setCreateTime(now);
@@ -242,18 +368,47 @@
 
                 try{
                     weeklyDailyPlanService.insert(weeklyDailyPlan);
+                    WeeklyDailyReality weeklyDailyReality = new WeeklyDailyReality();
+                    weeklyDailyReality.sync(weeklyDailyPlan);
+                    weeklyDailyRealityService.insert(weeklyDailyReality);
+
                 } catch (Exception e){
                     log.error("鏂板鏃ヨ鍒掑け璐�"+e);
                     throw new CoolException("鏂板鏃ヨ鍒掑け璐�");
                 }
             }
 
+            try{
+                insertWeeklyFoll(users,weekly.getId());                // 鑷姩娣诲姞璺熻繘浜�
+            }catch (Exception e){
+                log.error("鍛ㄦ姤娣诲姞璺熻繘浜哄紓甯革紝寮傚父淇℃伅1锛�"+e);
+            }
+
         } catch (Exception e){
             log.error("鍒涘缓鍛ㄨ鍒掑紓甯革紝寮傚父淇℃伅锛�"+e);
-            throw new CoolException("鍒涘缓鍛ㄨ鍒掑け璐�==>"+e);
+            return R.error("鍒涘缓鍛ㄨ鍒掑け璐�==>"+e);
+//            throw new CoolException("鍒涘缓鍛ㄨ鍒掑け璐�==>"+e);
         }
 
         return R.ok("鍒涘缓鎴愬姛");
+    }
+
+    public void insertWeeklyFoll(List<User> userList,Long weeklyId){
+        for (User user:userList){
+            try{
+                // 鑷姩娣诲姞璺熻繘浜�
+                List<WeeklyFoll> weeklyFolls = weeklyFollService.selectList(new EntityWrapper<WeeklyFoll>().eq("weekly_id", weeklyId).eq("user_id", user.getId()));
+                if (weeklyFolls.size()==0){
+                    WeeklyFoll weeklyFoll = new WeeklyFoll();
+                    weeklyFoll.setUserId(user.getId());
+                    weeklyFoll.setWeeklyId(weeklyId);
+                    weeklyFollService.insert(weeklyFoll);
+                }
+            }catch (Exception e){
+                log.error("鍛ㄦ姤娣诲姞璺熻繘浜哄紓甯革紝寮傚父淇℃伅2锛�"+e);
+                continue;
+            }
+        }
     }
 
     @RequestMapping(value = "/weekly/from/add/auth2")
@@ -278,12 +433,37 @@
             weekly.setDeptId(getDeptId());               // 鎵�灞為儴闂�
             weekly.setUserId(getUserId());               // 鎵�灞炰汉鍛�
 
-            weekly.setDirector(getUserId());               // 鎵�灞炰汉鍛�
-
             weekly.setCreateBy(getUserId());
             weekly.setCreateTime(now);
             weekly.setUpdateBy(getUserId());
             weekly.setUpdateTime(now);
+
+            User manager = new User();
+            try {
+                manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 鑾峰彇閮ㄩ棬棰嗗
+            } catch (Exception e) {
+                manager = getUser();
+            }
+            weekly.setDirector(manager.getId());
+
+            // 鑾峰彇涓氬姟鍛�
+            List<String> initNames = new ArrayList<>();
+            initNames.add("鍒涘缓浜嗗鎵�");
+            initNames.add("涓氬姟鍛樻彁浜�");
+            initNames.add("閮ㄩ棬棰嗗瀹℃牳");
+            List<User> users = new ArrayList<>();
+            users.add(getUser());
+            users.add(getUser());
+            users.add(manager);
+//            users.add(getUser());
+            weekly.setSettleMsg(JSON.toJSONString(SettleDto.InItFlowPathTwo(users, initNames, users.size())));
+            weekly.setSettleSize(users.size());
+            weekly.setSettleCurrent(1);
+            if (users.size() > 1) {
+                weekly.setDirector(users.get(1).getId());
+            } else {
+                weekly.setDirector(getUserId());
+            }
 
 
             List<Date> dateList = new ArrayList<>();//鑾峰彇鍛ㄤ竴涓庡懆鏃ユ棩鏈�
@@ -328,7 +508,8 @@
                 weeklyService.insert(weekly);
             } catch (Exception e) {
                 log.error("鏂板鍛ㄨ鍒掍富琛ㄥけ璐ワ紝寮傚父淇℃伅锛�"+e);
-                throw new CoolException("鏂板鍛ㄨ鍒掍富琛ㄥけ璐�");
+                return R.error("鏂板鍛ㄨ鍒掍富琛ㄥけ璐�");
+//                throw new CoolException("鏂板鍛ㄨ鍒掍富琛ㄥけ璐�");
             }
 
             List<CstmrUtilsParam> cstmrUtilsParamList = new ArrayList<>();
@@ -338,7 +519,7 @@
                 weeklyDailyReality.setDeptId(getDeptId());               // 鎵�灞為儴闂�
                 weeklyDailyReality.setUserId(getUserId());               // 鎵�灞炰汉鍛�
 
-                weeklyDailyReality.setDirector(getUserId());               // 鎵�灞炰汉鍛�
+                weeklyDailyReality.setDirector(manager.getId());               // 鎵�灞炰汉鍛�
 
                 weeklyDailyReality.setCreateBy(getUserId());
                 weeklyDailyReality.setCreateTime(now);
@@ -354,13 +535,21 @@
                     weeklyDailyRealityService.insert(weeklyDailyReality);
                 } catch (Exception e){
                     log.error("鏂板鏃ヨ鍒掑け璐�"+e);
-                    throw new CoolException("鏂板鏃ヨ鍒掑け璐�");
+//                    throw new CoolException("鏂板鏃ヨ鍒掑け璐�");
+                    return R.error("鏂板鏃ヨ鍒掑け璐�");
                 }
+            }
+
+            try{
+                insertWeeklyFoll(users,weekly.getId());                // 鑷姩娣诲姞璺熻繘浜�
+            }catch (Exception e){
+                log.error("鍛ㄦ姤娣诲姞璺熻繘浜哄紓甯革紝寮傚父淇℃伅1锛�"+e);
             }
 
         } catch (Exception e){
             log.error("鍒涘缓鍛ㄨ鍒掑紓甯革紝寮傚父淇℃伅锛�"+e);
-            throw new CoolException("鍒涘缓鍛ㄨ鍒掑け璐�==>"+e);
+//            throw new CoolException("鍒涘缓鍛ㄨ鍒掑け璐�==>"+e);
+            return R.error("鍒涘缓鍛ㄨ鍒掑け璐�==>"+e);
         }
 
         return R.ok("鍒涘缓鎴愬姛");
@@ -378,13 +567,12 @@
                 throw new CoolException("鍙傛暟涓虹┖锛歐eeklyDailyPlanList");
             } else if (Cools.isEmpty(param.getWeeklyId())){
                 throw new CoolException("鍙傛暟涓虹┖锛歐eeklyId");
-            } else if (Cools.isEmpty(param.getWeeklyType())){
-                throw new CoolException("鍙傛暟涓虹┖锛歐eeklyDailyPlanList");
             } else if (Cools.isEmpty(param.getType())){
                 throw new CoolException("鍙傛暟涓虹┖锛歍ype");
-            } else if (Cools.isEmpty(param.getWeeklyType())){
-                throw new CoolException("鍙傛暟涓虹┖锛歐eekly");
             }
+//            if (Cools.isEmpty(param.getWeeklyType())){
+//                throw new CoolException("鍙傛暟涓虹┖锛歐eekly");
+//            }
             Date now = new Date();
             Weekly weekly = weeklyService.selectById(param.getWeeklyId());
             weekly.setUpdateBy(getUserId());
@@ -405,28 +593,40 @@
                 throw new CoolException("鏇存柊鍛ㄨ鍒掍富琛ㄥけ璐�");
             }
 
-            List<CstmrUtilsParam> cstmrUtilsParamList = new ArrayList<>();
+            List<WeeklyDailyPlan> weeklyDailyPlanList = weeklyDailyPlanService.selectList(new EntityWrapper<WeeklyDailyPlan>().eq("weekly_id", weekly.getId()));
+            List<Long> ids = new ArrayList<>();
+            for (WeeklyDailyPlan  weeklyDailyPlan: param.getWeeklyDailyPlanList()) {
+                if (!Cools.isEmpty(weeklyDailyPlan.getId())) {
+                    ids.add(weeklyDailyPlan.getId());
+                }
+            }
+            try{
+                for (WeeklyDailyPlan weeklyDailyPlan2:weeklyDailyPlanList){
+                    if (!ids.contains(weeklyDailyPlan2.getId())){
+                        weeklyDailyPlanService.deleteById(weeklyDailyPlan2.getId());
+                    }
+                }
+            }catch (Exception e){
+
+            }
             for (WeeklyDailyPlan  weeklyDailyPlan: param.getWeeklyDailyPlanList()){
                 WeeklyDailyPlan weeklyDailyPlan1 = new WeeklyDailyPlan();
                 if (!Cools.isEmpty(weeklyDailyPlan.getId())){
                     Long weeklyDailyPlanId = weeklyDailyPlan.getId();
                     weeklyDailyPlan1 = weeklyDailyPlanService.selectById(weeklyDailyPlan.getId());
-                    if (Cools.isEmpty(weeklyDailyPlan)){
+                    if (Cools.isEmpty(weeklyDailyPlan1)){
                         throw new CoolException("鏇存柊澶辫触锛歩d:"+weeklyDailyPlanId);
                     }
-                    if (!Cools.isEmpty(weeklyDailyPlan1.getComment())){
-//                        weeklyDailyPlan1.setComment(weeklyDailyPlan1.getComment()+";"+weeklyDailyPlan.getComment());
-                        weeklyDailyPlan1.setComment(weeklyDailyPlan.getComment());
-                    }else {
-                        weeklyDailyPlan1.setComment(weeklyDailyPlan.getComment());
-                    }
+                    weeklyDailyPlan1.setComment(weeklyDailyPlan.getComment());
                     weeklyDailyPlan1.setWorkContent(weeklyDailyPlan.getWorkContent());
                     weeklyDailyPlan1.setWorkPurpose(weeklyDailyPlan.getWorkPurpose());
+                    weeklyDailyPlan1.setWeeklyMatter(weeklyDailyPlan.getWeeklyMatter());
+                    weeklyDailyPlan1.setAddr(weeklyDailyPlan.getAddr());
                     weeklyDailyPlan1.setMemo(weeklyDailyPlan.getMemo());
                     weeklyDailyPlan1.setUpdateBy(getUserId());
                     weeklyDailyPlan1.setUpdateTime(now);
                     if (!Cools.isEmpty(weeklyDailyPlan.getCstmrId())){
-                        weeklyDailyPlan1.setCstmrId(weeklyDailyPlan1.getCstmrId());
+                        weeklyDailyPlan1.setCstmrId(weeklyDailyPlan.getCstmrId());
                     }
                     weeklyDailyPlanService.updateById(weeklyDailyPlan1);
 
@@ -476,13 +676,12 @@
                 throw new CoolException("鍙傛暟涓虹┖锛歐eeklyDailyRealityList");
             } else if (Cools.isEmpty(param.getWeeklyId())){
                 throw new CoolException("鍙傛暟涓虹┖锛歐eeklyId");
-            } else if (Cools.isEmpty(param.getWeeklyType())){
-                throw new CoolException("鍙傛暟涓虹┖锛歐eeklyDailyPlanList");
             } else if (Cools.isEmpty(param.getType())){
                 throw new CoolException("鍙傛暟涓虹┖锛歍ype");
-            } else if (Cools.isEmpty(param.getWeeklyType())){
-                throw new CoolException("鍙傛暟涓虹┖锛歐eekly");
             }
+//            else if (Cools.isEmpty(param.getWeeklyType())){
+//                throw new CoolException("鍙傛暟涓虹┖锛歐eekly");
+//            }
             Date now = new Date();
             Weekly weekly = weeklyService.selectById(param.getWeeklyId());
             weekly.setUpdateBy(getUserId());
@@ -503,23 +702,35 @@
                 throw new CoolException("鏇存柊鍛ㄨ鍒掍富琛ㄥけ璐�");
             }
 
-            List<CstmrUtilsParam> cstmrUtilsParamList = new ArrayList<>();
+            List<WeeklyDailyReality> weeklyDailyRealitieList = weeklyDailyRealityService.selectList(new EntityWrapper<WeeklyDailyReality>().eq("weekly_id", weekly.getId()));
+            List<Long> ids = new ArrayList<>();
+            for (WeeklyDailyReality weeklyDailyReality: param.getWeeklyDailyRealityList()) {
+                if (!Cools.isEmpty(weeklyDailyReality.getId())) {
+                    ids.add(weeklyDailyReality.getId());
+                }
+            }
+            try{
+                for (WeeklyDailyReality weeklyDailyReality2:weeklyDailyRealitieList){
+                    if (!ids.contains(weeklyDailyReality2.getId())){
+                        weeklyDailyRealityService.deleteById(weeklyDailyReality2.getId());
+                    }
+                }
+            }catch (Exception e){
+
+            }
             for (WeeklyDailyReality  weeklyDailyReality: param.getWeeklyDailyRealityList()){
                 WeeklyDailyReality weeklyDailyReality1 = new WeeklyDailyReality();
                 if (!Cools.isEmpty(weeklyDailyReality.getId())){
-                    Long weeklyDailyPlanId = weeklyDailyReality.getId();
+                    Long weeklyDailyRealityId = weeklyDailyReality.getId();
                     weeklyDailyReality1 = weeklyDailyRealityService.selectById(weeklyDailyReality.getId());
-                    if (Cools.isEmpty(weeklyDailyReality)){
-                        throw new CoolException("鏇存柊澶辫触锛歩d:"+weeklyDailyPlanId);
+                    if (Cools.isEmpty(weeklyDailyReality1)){
+                        throw new CoolException("鏇存柊澶辫触锛歩d:"+weeklyDailyRealityId);
                     }
-                    if (!Cools.isEmpty(weeklyDailyReality1.getComment())){
-//                        weeklyDailyReality1.setComment(weeklyDailyReality1.getComment()+";"+weeklyDailyReality.getComment());
-                        weeklyDailyReality1.setComment(weeklyDailyReality.getComment());
-                    }else {
-                        weeklyDailyReality1.setComment(weeklyDailyReality.getComment());
-                    }
+                    weeklyDailyReality1.setComment(weeklyDailyReality.getComment());
                     weeklyDailyReality1.setWorkContent(weeklyDailyReality.getWorkContent());
                     weeklyDailyReality1.setWorkPurpose(weeklyDailyReality.getWorkPurpose());
+                    weeklyDailyReality1.setWeeklyMatter(weeklyDailyReality.getWeeklyMatter());
+                    weeklyDailyReality1.setAddr(weeklyDailyReality.getAddr());
                     weeklyDailyReality1.setMemo(weeklyDailyReality.getMemo());
                     weeklyDailyReality1.setUpdateBy(getUserId());
                     weeklyDailyReality1.setUpdateTime(now);
@@ -576,4 +787,187 @@
         List<WeeklyDailyReality> weeklyDailyRealities = weeklyDailyRealityService.selectList(new EntityWrapper<WeeklyDailyReality>().eq("weekly_id", weeklyId));
         return R.ok().add(weeklyDailyRealities);
     }
+
+    @PostMapping(value = "/weekly/approval/auth")
+    @ManagerAuth(memo = "瀹℃壒鐢宠鍗�")
+    public R approval(@RequestParam Long weeklyId,
+                      @RequestParam(required = false) Long plannerId) {
+        Weekly weekly = weeklyService.selectById(weeklyId);
+        assert weekly != null;
+        Long nextUserId = getUserId();
+        User director = userService.selectById(weekly.getDirector());
+
+        if (Cools.isEmpty(getUser()) || Cools.isEmpty(director)) {
+            return R.error("鎶辨瓑锛屾偍鏃犻渶纭锛侊紒锛�");
+        }
+
+        if (!getUserId().equals(director.getId())) {
+            return R.error("鎶辨瓑锛屾偍鏃犻渶纭锛侊紒锛�");
+        }
+
+        // 淇敼 settle 姝ラ鏁版嵁
+        List<SettleDto> list = JSON.parseArray(weekly.getSettleMsg(), SettleDto.class);
+        // 淇敼 settle 姝ラ鏁版嵁
+        for (SettleDto dto : list) {
+            if (dto.getStep().equals(weekly.getSettle())) {
+                dto.setCurr(Boolean.TRUE);
+            } else if (dto.getStep().equals(weekly.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(weekly.getSettle() + 2)) {
+                nextUserId = dto.getUserId();
+            }
+        }
+        weekly.setSettleMsg(JSON.toJSONString(list));
+        // 淇敼瑙勫垝鍗曠姸鎬�
+        weekly.setSettle(weekly.getSettle() + 1);  // 瀹℃壒閫氳繃
+
+        weekly.setUpdateBy(getUserId());
+        weekly.setUpdateTime(new Date());
+        weekly.setDirector(nextUserId);
+
+        if (!weeklyService.updateById(weekly)) {
+            throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�");
+        }
+        if (!weekly.getSettle().equals(weekly.getSettleSize())) {
+            User phoneUser = userService.selectById(nextUserId);
+            if (!smsCodeService.sendSmsCodeText(phoneUser.getMobile(), PhoneCodeTypeParam.ALIYUN_M1ABAC630E, getUserId())) {
+                return R.ok("瀹℃牳鎴愬姛浣嗙煭淇″彂閫佸け璐�!");
+            }
+        }
+
+        return R.ok("瀹℃壒鎴愬姛");
+    }
+
+    @PostMapping(value = "/weekly/approvalEnd/auth")
+    @ManagerAuth(memo = "鎷掔粷鐢宠鍗�")
+    public R approvalEnd(@RequestParam Long weeklyId,
+                         @RequestParam(required = false) Long plannerId) {
+        Weekly weekly = weeklyService.selectById(weeklyId);
+        Date now = new Date();
+        Long nextUserId = getUserId();
+        Long directorId = weekly.getDirector();
+        User director = userService.selectById(directorId);
+        if (!director.getId().equals(getUserId())) {
+            return R.error("鎶辨瓑锛屾偍娌℃湁瀹℃牳鐨勬潈闄�");
+        }
+        List<SettleDto> planDtos = JSON.parseArray(weekly.getSettleMsg(), SettleDto.class);
+        List<SettleDto> planDtoList = new ArrayList<>();
+        boolean sign = true;
+        for (SettleDto dto : planDtos) {
+            if (dto.getStep().equals(2)) {
+                nextUserId = dto.getUserId();
+                weekly.setDirector(dto.getUserId());
+            }
+            if (sign && dto.getUserId().equals(directorId) && weekly.getSettle() + 1 == dto.getStep()) {
+                if (Cools.isEmpty(dto.getMsg())) {
+                    dto.setMsg(DateUtils.convert(now) + " " + director.getNickname() + "鍥為��瀹℃壒");
+                } else {
+                    dto.setMsg(dto.getMsg() + PZH + DateUtils.convert(now) + " " + director.getNickname() + "鍥為��瀹℃壒");
+                }
+                sign = false;
+            }
+            if (sign) {
+                dto.setMsg(dto.getMsg() + PZH + DateUtils.convert(now) + " " + director.getNickname() + "鍥為��瀹℃壒");
+            }
+
+            planDtoList.add(dto);
+        }
+        weekly.setStatus(0);
+        weekly.setSettle(1);
+        weekly.setSettleMsg(JSON.toJSONString(planDtoList));
+        weekly.setUpdateBy(getUserId());
+        weekly.setUpdateTime(now);
+        weeklyService.updateById(weekly);
+        if (!weekly.getSettle().equals(weekly.getSettleSize())) {
+            User phoneUser = userService.selectById(nextUserId);
+            if (!smsCodeService.sendSmsCodeText(phoneUser.getMobile(), PhoneCodeTypeParam.ALIYUN_M1ABAC630E, getUserId())) {
+                return R.ok("瀹℃牳鎴愬姛浣嗙煭淇″彂閫佸け璐�!");
+            }
+        }
+        return R.ok("鍥為��鎴愬姛");
+    }
+
+    @RequestMapping(value = "/weekly/from/add/phone/auth")
+    @ManagerAuth(memo = "鍛ㄨ鍒�/鏃ヨ鍒�/鏃ュ疄闄�")
+    @Transactional
+    public R formAddModifyPhone(@RequestBody WeeklyDomainParam param){
+        try{
+            if (Cools.isEmpty(param)){
+                throw new CoolException("鍙傛暟涓虹┖锛歐eeklyDomainParam");
+            } else if (Cools.isEmpty(param.getWeeklyDailyRealityList()) || param.getWeeklyDailyRealityList().size()==0){
+                throw new CoolException("鍙傛暟涓虹┖锛歐eeklyDailyRealityList");
+            } else if (Cools.isEmpty(param.getWeeklyId())){
+                throw new CoolException("鍙傛暟涓虹┖锛歐eeklyId");
+//            } else if (Cools.isEmpty(param.getType())){
+//                throw new CoolException("鍙傛暟涓虹┖锛歍ype");
+//            } else if (Cools.isEmpty(param.getWeeklyType())){
+//                throw new CoolException("鍙傛暟涓虹┖锛歐eekly");
+            }
+            Date now = new Date();
+            Weekly weekly = weeklyService.selectById(param.getWeeklyId());
+            weekly.setUpdateBy(getUserId());
+            weekly.setUpdateTime(now);
+
+
+            List<Date> dateList = new ArrayList<>();//鑾峰彇鍛ㄤ竴涓庡懆鏃ユ棩鏈�
+            dateList = TimeCalculatorUtils.WeeklyMondayAndSundayNow(weekly.getStartTime());
+
+            List<Date> dates = TimeCalculatorUtils.WeeklyListDays(dateList);//鑾峰彇鍛ㄤ竴鍒板懆鏃ユ棩鏈�
+
+            try{
+                weeklyService.updateById(weekly);
+            } catch (Exception e) {
+                log.error("鏇存柊鍛ㄨ鍒掍富琛ㄥけ璐ワ紝寮傚父淇℃伅锛�"+e);
+                throw new CoolException("鏇存柊鍛ㄨ鍒掍富琛ㄥけ璐�");
+            }
+
+            List<CstmrUtilsParam> cstmrUtilsParamList = new ArrayList<>();
+            for (WeeklyDailyReality  weeklyDailyReality: param.getWeeklyDailyRealityList()){
+                Cstmr cstmr = null;
+                if (!Cools.isEmpty(weeklyDailyReality.getCstmrName())){
+                    cstmr = cstmrService.selectByName(getHostId(), weeklyDailyReality.getCstmrName());
+                    if(Cools.isEmpty(cstmr)){
+                        throw new CoolException("鏈煡璇㈠埌鐢叉柟鍗曚綅锛�");
+                    }else {
+                        weeklyDailyReality.setCstmrId(cstmr.getId());
+                    }
+                }
+                weeklyDailyReality.setHostId(getHostId());
+                weeklyDailyReality.setDeptId(getDeptId());               // 鎵�灞為儴闂�
+                weeklyDailyReality.setUserId(getUserId());               // 鎵�灞炰汉鍛�
+
+                weeklyDailyReality.setDirector(getUserId());               // 鎵�灞炰汉鍛�
+
+                weeklyDailyReality.setCreateBy(getUserId());
+                weeklyDailyReality.setCreateTime(now);
+                weeklyDailyReality.setUpdateBy(getUserId());
+                weeklyDailyReality.setUpdateTime(now);
+
+                weeklyDailyReality.setStatus(weekly.getStatus());
+
+                weeklyDailyReality.setDailyTime(dates.get(weeklyDailyReality.getWeeklyDay()-1));
+                weeklyDailyReality.setWeeklyId(weekly.getId());
+
+                try{
+                    weeklyDailyRealityService.insert(weeklyDailyReality);
+                } catch (Exception e){
+                    log.error("鏂板鏃ヨ鍒掑け璐�"+e);
+                    throw new CoolException("鏂板鏃ヨ鍒掑け璐�");
+                }
+
+            }
+
+        } catch (Exception e){
+            log.error("鏇存柊鍛ㄨ鍒掑紓甯革紝寮傚父淇℃伅锛�"+e);
+            throw new CoolException("鏇存柊鍛ㄨ鍒掑け璐�==>"+e);
+        }
+
+        return R.ok("鏇存柊鎴愬姛");
+    }
 }

--
Gitblit v1.9.1