From a4deee805df11b122b2fe1524112b498c21a2164 Mon Sep 17 00:00:00 2001 From: LSH Date: 星期二, 02 四月 2024 09:37:09 +0800 Subject: [PATCH] #周计划 --- src/main/java/com/zy/crm/manager/controller/WeeklyController.java | 202 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 190 insertions(+), 12 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..5a13521 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,6 +39,15 @@ private WeeklyDailyPlanService weeklyDailyPlanService; @Autowired private WeeklyDailyRealityService weeklyDailyRealityService; + @Autowired + private UserService userService; + @Autowired + private WeeklyFollService weeklyFollService; + @Autowired + private SmsCodeService smsCodeService; + + String PZH = " 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� "; + Integer PBN = 6; @RequestMapping(value = "/weekly/{id}/auth") @ManagerAuth @@ -168,8 +178,6 @@ weekly.setDeptId(getDeptId()); // 鎵�灞為儴闂� weekly.setUserId(getUserId()); // 鎵�灞炰汉鍛� - weekly.setDirector(getUserId()); // 鎵�灞炰汉鍛� - weekly.setCreateBy(getUserId()); weekly.setCreateTime(now); weekly.setUpdateBy(getUserId()); @@ -212,6 +220,17 @@ weekly.setWeeklyNowMonth(TimeCalculatorUtils.WeeklyNowMonthDay(weekly.getStartTime())); weekly.setWeeklyDayMonth(weekly.getWeeklyMonth()+"鏈堢"+weekly.getWeeklyNowMonth()+"鍛�"); + List<User> userList = new ArrayList<>(); + userList.add(getUser()); + User manager = new User(); + try { + manager = userService.getDeptManager(getHostId(), getUser().getDeptId()); // 鑾峰彇閮ㄩ棬棰嗗 + } catch (Exception e) { + manager = getUser(); + } + userList.add(manager); + weekly.setDirector(manager.getId()); + List<Date> dates = TimeCalculatorUtils.WeeklyListDays(dateList);//鑾峰彇鍛ㄤ竴鍒板懆鏃ユ棩鏈� try{ @@ -228,7 +247,7 @@ weeklyDailyPlan.setDeptId(getDeptId()); // 鎵�灞為儴闂� weeklyDailyPlan.setUserId(getUserId()); // 鎵�灞炰汉鍛� - weeklyDailyPlan.setDirector(getUserId()); // 鎵�灞炰汉鍛� + weeklyDailyPlan.setDirector(manager.getId()); // 鎵�灞炰汉鍛� weeklyDailyPlan.setCreateBy(getUserId()); weeklyDailyPlan.setCreateTime(now); @@ -248,12 +267,33 @@ } } + try{ + insertWeeklyFoll(userList,weekly.getId()); // 鑷姩娣诲姞璺熻繘浜� + }catch (Exception e){ + log.error("鍛ㄦ姤娣诲姞璺熻繘浜哄紓甯革紝寮傚父淇℃伅1锛�"+e); + } + } catch (Exception e){ log.error("鍒涘缓鍛ㄨ鍒掑紓甯革紝寮傚父淇℃伅锛�"+e); throw new CoolException("鍒涘缓鍛ㄨ鍒掑け璐�==>"+e); } return R.ok("鍒涘缓鎴愬姛"); + } + + public void insertWeeklyFoll(List<User> userList,Long weeklyId){ + for (User user:userList){ + try{ + // 鑷姩娣诲姞璺熻繘浜� + 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 +318,39 @@ weekly.setDeptId(getDeptId()); // 鎵�灞為儴闂� weekly.setUserId(getUserId()); // 鎵�灞炰汉鍛� - weekly.setDirector(getUserId()); // 鎵�灞炰汉鍛� - weekly.setCreateBy(getUserId()); weekly.setCreateTime(now); weekly.setUpdateBy(getUserId()); weekly.setUpdateTime(now); + + List<User> userList = new ArrayList<>(); + userList.add(getUser()); + User manager = new User(); + try { + manager = userService.getDeptManager(getHostId(), getUser().getDeptId()); // 鑾峰彇閮ㄩ棬棰嗗 + } catch (Exception e) { + manager = getUser(); + } + userList.add(manager); + 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(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<>();//鑾峰彇鍛ㄤ竴涓庡懆鏃ユ棩鏈� @@ -338,7 +405,7 @@ weeklyDailyReality.setDeptId(getDeptId()); // 鎵�灞為儴闂� weeklyDailyReality.setUserId(getUserId()); // 鎵�灞炰汉鍛� - weeklyDailyReality.setDirector(getUserId()); // 鎵�灞炰汉鍛� + weeklyDailyReality.setDirector(manager.getId()); // 鎵�灞炰汉鍛� weeklyDailyReality.setCreateBy(getUserId()); weeklyDailyReality.setCreateTime(now); @@ -356,6 +423,12 @@ log.error("鏂板鏃ヨ鍒掑け璐�"+e); throw new CoolException("鏂板鏃ヨ鍒掑け璐�"); } + } + + try{ + insertWeeklyFoll(userList,weekly.getId()); // 鑷姩娣诲姞璺熻繘浜� + }catch (Exception e){ + log.error("鍛ㄦ姤娣诲姞璺熻繘浜哄紓甯革紝寮傚父淇℃伅1锛�"+e); } } catch (Exception e){ @@ -576,4 +649,109 @@ 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("鍥為��鎴愬姛"); + } } -- Gitblit v1.9.1