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