From a4deee805df11b122b2fe1524112b498c21a2164 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期二, 02 四月 2024 09:37:09 +0800
Subject: [PATCH] #周计划
---
src/main/webapp/views/weekly/weekly.html | 24 ++-
src/main/webapp/static/js/weekly/weekly.js | 80 +++++++++++++
src/main/java/com/zy/crm/manager/controller/WeeklyController.java | 202 +++++++++++++++++++++++++++++++--
3 files changed, 284 insertions(+), 22 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("鍥為��鎴愬姛");
+ }
}
diff --git a/src/main/webapp/static/js/weekly/weekly.js b/src/main/webapp/static/js/weekly/weekly.js
index 0a9c16d..dbf955c 100644
--- a/src/main/webapp/static/js/weekly/weekly.js
+++ b/src/main/webapp/static/js/weekly/weekly.js
@@ -21,6 +21,8 @@
admin = layui.admin;
$('#organization').html(localStorage.getItem('nickname') + ' <i class="layui-icon"></i>');
+ $(".laytable-cell-2-0-7").css('color', 'rgba(0, 0, 0, 0)');
+
// 閮ㄩ棬浜哄憳 绛涢��
dropdown.render({
@@ -435,8 +437,84 @@
}
});
break;
+ case 'approval':
+ layer.confirm('瀹℃壒閫氳繃锛�', {
+ skin: 'layui-layer-admin',
+ shade: .1,
+ offset: '200px',
+ title: data.name
+ }, function (i) {
+ layer.close(i);
+ approval(data.id);
+ });
+ break;
+ case 'approvalEnd':
+ layer.confirm('瀹℃壒鎷掔粷锛�', {
+ skin: 'layui-layer-admin',
+ shade: .1,
+ offset: '200px',
+ title: data.name
+ }, function (i) {
+ layer.close(i);
+ approvalEnd(data.id);
+ });
+ break;
}
});
+
+ function approvalEnd(weeklyId, plannerId, dIdx) {
+ let loadIndex = layer.load(2);
+ $.ajax({
+ url: baseUrl+"/weekly/approvalEnd/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: {
+ weeklyId: weeklyId,
+ plannerId: plannerId
+ },
+ method: 'POST',
+ success: function (res) {
+ if (dIdx) {
+ layer.close(dIdx);
+ }
+ layer.close(loadIndex);
+ if (res.code === 200){
+ layer.msg(res.msg, {icon: 1});
+ tableReload();
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg, {icon: 2});
+ }
+ }
+ })
+ }
+
+ function approval(weeklyId, plannerId, dIdx) {
+ let loadIndex = layer.load(2);
+ $.ajax({
+ url: baseUrl+"/weekly/approval/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: {
+ weeklyId: weeklyId,
+ plannerId: plannerId
+ },
+ method: 'POST',
+ success: function (res) {
+ if (dIdx) {
+ layer.close(dIdx);
+ }
+ layer.close(loadIndex);
+ if (res.code === 200){
+ layer.msg(res.msg, {icon: 1});
+ tableReload();
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg, {icon: 2});
+ }
+ }
+ })
+ }
// 鎼滅储
form.on('submit(search)', function (data) {
@@ -542,7 +620,7 @@
},
done: function (res, curr, count) {
$(".layui-table-cell").css('overflow', 'visible');//瑙e喅layui鏁版嵁琛ㄦ牸涓祵濂椾笅鎷夋鏄剧ず闂
- $(".laytable-cell-2-0-6").css('color', 'rgba(0, 0, 0, 0)');
+ $(".laytable-cell-2-0-7").css('color', 'rgba(0, 0, 0, 0)');
$(layero).find('.layui-table-view').css('margin', '0');
var options = this;
diff --git a/src/main/webapp/views/weekly/weekly.html b/src/main/webapp/views/weekly/weekly.html
index c370e37..7578251 100644
--- a/src/main/webapp/views/weekly/weekly.html
+++ b/src/main/webapp/views/weekly/weekly.html
@@ -101,18 +101,24 @@
<input type="button" onclick="upload()" value="涓婁紶"/>
</form>
-
+<!-- {{# if (d.settle == 1 || d.settle == 2 || d.settle == 3 || d.settle == 4 || d.settle == 5) { }}-->
+<!-- <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval2">瀹℃壒</a>-->
+<!-- {{# } }}-->
+<!-- {{# if ((((d.settle == 2 || d.settle == 3) && d.settleSize==4) || d.settle == 1) && d.nowUserId==d.director) { }}-->
+<!-- {{# } }}-->
+<!-- {{# if (((d.settle == 2 || d.settle == 3)&& d.settleSize==4) && d.nowUserId==d.director) { }}-->
+<!-- {{# } }}-->
+<!-- <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">鎻愪氦</a>-->
<script type="text/html" id="operate">
- {{# if (d.settle == 1 || d.settle == 2 || d.settle == 3 || d.settle == 4 || d.settle == 5) { }}
- <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval2">瀹℃壒</a>
- {{# } }}
- {{# if (d.settle == 0) { }}
-<!-- <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval2">鎻愪氦</a>-->
- {{# } }}
- <!-- <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">鎻愪氦</a>-->
+
+ <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">瀹℃壒</a>
+
+ <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="edit">璁″垝</a>
<a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="editReality">琛岀▼</a>
-<!-- <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>-->
+ <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
+
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
--
Gitblit v1.9.1