From dda5c81dbf88549ade7aaaf352a261c7d638f045 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期二, 10 十月 2023 10:23:11 +0800
Subject: [PATCH] #回退流程相关
---
src/main/resources/mapper/PlanMapper.xml | 1
src/main/webapp/static/js/businessTrip/businessTripOther.js | 2
src/main/java/com/zy/crm/manager/controller/PlanController.java | 65 ++++++++++++++++++++-
src/main/webapp/static/js/plan/plan.js | 40 +++++++++++++
src/main/webapp/views/plan/plan.html | 1
src/main/java/com/zy/crm/manager/entity/Plan.java | 16 +++++
6 files changed, 120 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/zy/crm/manager/controller/PlanController.java b/src/main/java/com/zy/crm/manager/controller/PlanController.java
index b0e1c83..30617da 100644
--- a/src/main/java/com/zy/crm/manager/controller/PlanController.java
+++ b/src/main/java/com/zy/crm/manager/controller/PlanController.java
@@ -33,6 +33,7 @@
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
+import javax.xml.crypto.Data;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
@@ -152,6 +153,8 @@
PlanType planType = planTypeService.selectById(plan.getPlanType());
User planLeader = planTypeService.findPlanLeader(planType);
plan.setSettleMsg(JSON.toJSONString(SettleDto.init(plan, manager, planLeader)));
+
+ plan.setDirector(planLeader.getId());
if (!planService.insert(plan)) {
throw new CoolException("淇濇寔澶辫触锛岃閲嶈瘯");
@@ -417,6 +420,7 @@
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);
@@ -427,7 +431,11 @@
break;
case 2:
dto.setCurr(Boolean.TRUE);
- dto.setMsg("鍞墠缁勯暱" + planLeader.getNickname() + "瀹℃壒閫氳繃");
+ if (Cools.isEmpty(dto.getMsg())){
+ dto.setMsg("鍞墠缁勯暱" + planLeader.getNickname() + "瀹℃壒閫氳繃");
+ }else {
+ dto.setMsg(dto.getMsg()+" 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� "+DateUtils.convert(new Date())+" "+"鍞墠缁勯暱" + planLeader.getNickname() + "瀹℃壒閫氳繃");
+ }
dto.setTime(DateUtils.convert(new Date()));
break;
case 3:
@@ -472,6 +480,8 @@
}
// 涓氬姟鍛�
User salesman = userService.selectById(plan.getUserId());
+ plan.setDirector(salesman.getId());
+
// 淇敼 settle 姝ラ鏁版嵁
List<SettleDto> list0 = JSON.parseArray(plan.getSettleMsg(), SettleDto.class);
for (SettleDto dto : list0) {
@@ -481,7 +491,11 @@
break;
case 3:
dto.setCurr(Boolean.TRUE);
- dto.setMsg("瑙勫垝鍛�" + plannerUser.getNickname() + "瀹℃壒閫氳繃");
+ if (Cools.isEmpty(dto.getMsg())){
+ dto.setMsg("瑙勫垝鍛�" + plannerUser.getNickname() + "瀹℃壒閫氳繃");
+ }else {
+ dto.setMsg(dto.getMsg()+" 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� "+DateUtils.convert(new Date())+" "+"瑙勫垝鍛�" + plannerUser.getNickname() + "瀹℃壒閫氳繃");
+ }
dto.setTime(DateUtils.convert(new Date()));
break;
case 4:
@@ -517,7 +531,11 @@
break;
case 4:
dto.setCurr(Boolean.TRUE);
- dto.setMsg("涓氬姟鍛�" + salesman0.getNickname() + "瀹℃壒閫氳繃");
+ if (Cools.isEmpty(dto.getMsg())){
+ dto.setMsg("涓氬姟鍛�" + salesman0.getNickname() + "瀹℃壒閫氳繃");
+ }else {
+ dto.setMsg(dto.getMsg()+" 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� "+DateUtils.convert(new Date())+" "+"涓氬姟鍛�" + salesman0.getNickname() + "瀹℃壒閫氳繃");
+ }
dto.setTime(DateUtils.convert(new Date()));
break;
default:
@@ -541,6 +559,47 @@
return R.ok("瀹℃壒鎴愬姛");
}
+ @PostMapping(value = "/plan/approvalEnd/auth")
+ @ManagerAuth(memo = "鎷掔粷鐢宠鍗�")
+ public R approvalEnd(@RequestParam Long planId,
+ @RequestParam(required = false) Long plannerId) {
+ Plan plan = planService.selectById(planId);
+ Date now = new Date();
+ Long directorId = plan.getDirector();
+ User director = userService.selectById(directorId);
+ if (!director.getId().equals(getUserId())){
+ return R.error("鎶辨瓑锛屾偍娌℃湁瀹℃牳鐨勬潈闄�");
+ }
+ List<SettleDto> planDtos = JSON.parseArray(plan.getSettleMsg(), SettleDto.class);
+ List<SettleDto> planDtoList = new ArrayList<>();
+ boolean sign = true;
+ for (SettleDto dto : planDtos) {
+ if (sign && dto.getUserId().equals(directorId) && plan.getSettle()+1==dto.getStep()){
+ if (Cools.isEmpty(dto.getMsg())){
+ dto.setMsg(DateUtils.convert(now)+" "+director.getNickname()+"鍥為��瀹℃壒");
+ }else {
+ dto.setMsg(dto.getMsg()+" 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� "+DateUtils.convert(now)+" "+director.getNickname()+"鍥為��瀹℃壒");
+ }
+ sign = false;
+ }
+ if (sign){
+ dto.setMsg(dto.getMsg()+" 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� "+DateUtils.convert(now)+" "+director.getNickname()+"鍥為��瀹℃壒");
+ }
+
+ planDtoList.add(dto);
+ }
+ plan.setStatus(0);
+ plan.setStep(1);
+ plan.setSettle(1);
+
+ PlanType planType = planTypeService.selectById(plan.getPlanType());
+ User planLeader = planTypeService.findPlanLeader(planType);
+ plan.setDirector(planLeader.getId());
+ plan.setSettleMsg(JSON.toJSONString(planDtoList));
+ planService.updateById(plan);
+ return R.ok("鍥為��鎴愬姛");
+ }
+
@PostMapping(value = "/plan/planner/list/auth")
@ManagerAuth
public R plannerList(@RequestParam Long planId){
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 bf02e74..6516775 100644
--- a/src/main/java/com/zy/crm/manager/entity/Plan.java
+++ b/src/main/java/com/zy/crm/manager/entity/Plan.java
@@ -246,6 +246,12 @@
@ApiModelProperty(value= "涓氬姟鍛樿仈绯绘柟寮�")
private String userXmlSelPhone;
+ /**
+ * 鑺傜偣璐熻矗浜�
+ */
+ @ApiModelProperty(value= "鑺傜偣璐熻矗浜�")
+ private Long director;
+
public Plan() {}
public String getHostId$(){
@@ -257,6 +263,16 @@
return null;
}
+ public String getDirector$(){
+ if (this.director==null) return "";
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.selectById(this.director);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getNickname());
+ }
+ return null;
+ }
+
public String getDeptId$(){
DeptService service = SpringUtils.getBean(DeptService.class);
Dept dept = service.selectById(this.deptId);
diff --git a/src/main/resources/mapper/PlanMapper.xml b/src/main/resources/mapper/PlanMapper.xml
index f5e7141..628eed5 100644
--- a/src/main/resources/mapper/PlanMapper.xml
+++ b/src/main/resources/mapper/PlanMapper.xml
@@ -35,6 +35,7 @@
<result column="update_time" property="updateTime" />
<result column="memo" property="memo" />
<result column="user_xml_sel_phone" property="userXmlSelPhone" />
+ <result column="director" property="director" />
</resultMap>
diff --git a/src/main/webapp/static/js/businessTrip/businessTripOther.js b/src/main/webapp/static/js/businessTrip/businessTripOther.js
index 95fe613..ae22229 100644
--- a/src/main/webapp/static/js/businessTrip/businessTripOther.js
+++ b/src/main/webapp/static/js/businessTrip/businessTripOther.js
@@ -99,7 +99,7 @@
,{field: 'updateTime$', align: 'center',title: '鏇存柊鏃堕棿',hide: false,width: 125}
,{field: 'updateId$', align: 'center',title: '鏇存柊浜哄憳',hide: false}
- ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:240}
+ ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:280}
]],
request: {
pageName: 'curr',
diff --git a/src/main/webapp/static/js/plan/plan.js b/src/main/webapp/static/js/plan/plan.js
index 8549e12..3af7f75 100644
--- a/src/main/webapp/static/js/plan/plan.js
+++ b/src/main/webapp/static/js/plan/plan.js
@@ -171,7 +171,7 @@
,{field: 'updateTime$', align: 'left',title: '淇敼鏃堕棿', hide: true}
,{field: 'memo', align: 'left',title: '娉ㄩ噴', hide: true}
- ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 280}
+ ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 340}
]],
request: {
pageName: 'curr',
@@ -531,6 +531,17 @@
}
});
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;
case 'edit':
showEditModel(data);
break;
@@ -657,6 +668,33 @@
})
}
+ function approvalEnd(planId, plannerId, dIdx) {
+ let loadIndex = layer.load(2);
+ $.ajax({
+ url: baseUrl+"/plan/approvalEnd/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: {
+ planId: planId,
+ 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 showEditModel(mData) {
let loadIndex = layer.load(2);
diff --git a/src/main/webapp/views/plan/plan.html b/src/main/webapp/views/plan/plan.html
index 89e3e6b..91f4b2c 100644
--- a/src/main/webapp/views/plan/plan.html
+++ b/src/main/webapp/views/plan/plan.html
@@ -135,6 +135,7 @@
<script type="text/html" id="operate">
{{# if (d.settle == 1 || d.settle == 2 || d.settle == 3) { }}
<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="uploadLink">闄勪欢</a>
{{# if (d.settle == 1) { }}
--
Gitblit v1.9.1