From baa98c7a04e13ac1630696b532add9c3e7f0d907 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 10 十一月 2023 15:30:56 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/crm/manager/controller/PlanController.java | 317 ++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 279 insertions(+), 38 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 b980ec9..4e77bb0 100644
--- a/src/main/java/com/zy/crm/manager/controller/PlanController.java
+++ b/src/main/java/com/zy/crm/manager/controller/PlanController.java
@@ -6,10 +6,7 @@
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.annotations.ManagerAuth;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.R;
+import com.core.common.*;
import com.core.domain.KeyValueVo;
import com.core.exception.CoolException;
import com.zy.crm.common.model.SettleDto;
@@ -33,6 +30,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.*;
@@ -54,6 +52,12 @@
private OrderService orderService;
@Autowired
private SmsCodeService smsCodeService;
+ @Autowired
+ private ProcessPermissionsService processPermissionsService;
+
+ String PZH=" 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� ";
+ Integer PBN = 6;
+
@GetMapping(value = "/plan/{id}/auth")
@ManagerAuth
@@ -83,10 +87,22 @@
@RequestParam(required = false) String condition,
@RequestParam(required = false, value = "dept_id") Long deptId,
@RequestParam(required = false, value = "user_id") Long userId) {
+ Long director = null;
+ if (deptId==null && userId == null){
+ if (getRole().getId()==3){
+ userId = getUserId();
+ }else if (getRole().getId()==2){
+ deptId = getDeptId();
+ userId = null;
+ }
+ director = getUserId();
+ }
+
return R.ok(planService.getPage(new Page<>(curr, limit)
, getHostId()
, deptId == null ? null : String.valueOf(deptId)
- , userId == null ? getUserId() : userId
+ , userId
+ , director
, condition)
);
}
@@ -97,6 +113,23 @@
Arrays.asList(Cools.getAllFields(Plan.class)).forEach(item -> {
fields.add(item.getName());
});
+ }
+
+ @RequestMapping(value = "/plan/assistantPlan/view/auth")
+ @ManagerAuth(memo = "鏌ョ湅鍓鍒掔敵璇峰崟")
+ @Transactional
+ public R assistantPlanView(@RequestParam Long hostPlanId) {
+ Plan plan = planService.selectById(hostPlanId);
+ if (plan.getAssistantHostSign()==1){
+ EntityWrapper<Plan> wrapper = new EntityWrapper<>();
+ wrapper.eq("id",plan.getHostPlanId());
+ Page<Plan> planPage = planService.selectPage(new Page<>(1, 1), wrapper);
+ return R.ok(planPage);
+ }
+ EntityWrapper<Plan> wrapper = new EntityWrapper<>();
+ wrapper.eq("id",plan.getAssistantPlanId());
+ Page<Plan> planPage = planService.selectPage(new Page<>(1, 1), wrapper);
+ return R.ok(planPage);
}
@RequestMapping(value = "/plan/add/auth")
@@ -139,13 +172,26 @@
plan.setUpdateBy(getUserId());
plan.setUpdateTime(now);
plan.setStatus(0);
+ plan.setStep(1);
plan.setForm(JSON.toJSONString(param)); // 鑷畾涔夎〃鍗曞唴瀹�
plan.setSettle(1); // 1.寮�濮�
- User manager = userService.getDeptManager(hostId, getUser().getDeptId()); // 鑾峰彇閮ㄩ棬棰嗗
+ User manager = new User();
+ try{
+ manager = userService.getDeptManager(getHostId(), getUser().getDeptId()); // 鑾峰彇閮ㄩ棬棰嗗
+ }catch (Exception e){
+ manager = getUser();
+ }
PlanType planType = planTypeService.selectById(plan.getPlanType());
+ if (planType.getType().equals(2)) {
+ plan.setStatus2(0);
+ }else {
+ plan.setStatus2(10);
+ }
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("淇濇寔澶辫触锛岃閲嶈瘯");
@@ -160,6 +206,91 @@
}
return R.ok();
+ }
+
+ @RequestMapping(value = "/plan/assistantPlan/add/auth")
+ @ManagerAuth(memo = "娣诲姞鍓鍒掔敵璇峰崟")
+ @Transactional
+ public R assistantPlanAdd(@RequestParam Long hostPlanId) {
+ Plan hostPlan = planService.selectById(hostPlanId);
+ if (hostPlan.getAssistantHostSign()!=0){
+ return R.error("姝よ鍒掑崟涓嶉渶瑕佸垱寤哄壇娴佺▼");
+ }
+ PlanType planType2 = planTypeService.selectById(hostPlan.getPlanType());
+ if (planType2.getType()!=2){
+ return R.error("姝よ鍒掑崟涓嶉渶瑕佸垱寤哄壇娴佺▼");
+ }
+ if (!Cools.isEmpty(hostPlan.getAssistantPlanId()) && hostPlan.getAssistantPlanId()!=0){
+ return R.error("姝よ鍒掑崟宸插瓨鍦ㄥ壇瑙勫垝鍗曪紝id涓�"+hostPlan.getAssistantPlanId());
+ }
+ // pre
+ Plan plan = new Plan(hostPlan);
+ // begin
+ Long hostId = getHostId();
+ if (planService.selectByUuid(hostId, plan.getUuid()) != null) {
+ throw new CoolException("瑙勫垝鍗曞凡瀛樺湪");
+ }
+
+ Order order = orderService.selectById(plan.getOrderId());
+ if (Cools.isEmpty(order)) {
+ throw new CoolException("璺熻釜椤圭洰涓嶅瓨鍦�");
+ }
+
+ if (!order.getDirector().equals(getUserId())){
+ throw new CoolException("鍙厑璁歌窡韪」鐩礋璐d汉娣诲姞鎵�閫夐」鐩鍒掔敵璇峰崟");
+ }
+
+ Date now = new Date();
+ plan.setHostId(hostId);
+ plan.setUuid(planService.getUuid(hostId)); // 瑙勫垝鍗曚唬鍙�
+ plan.setDeptId(getDeptId()); // 鎵�灞為儴闂�
+ plan.setUserId(getUserId()); // 鎵�灞炰汉鍛�
+
+ plan.setAppleTime(now);
+ plan.setCreateBy(getUserId());
+ plan.setCreateTime(now);
+ plan.setUpdateBy(getUserId());
+ plan.setUpdateTime(now);
+ plan.setStatus(0);
+ plan.setStatus2(0);
+ plan.setStep(1);
+ plan.setSettle(1); // 1.寮�濮�
+ plan.setAssistantHostSign(1);//鍓鍒掑崟
+
+ User manager = new User();
+ try{
+ manager = userService.getDeptManager(getHostId(), getUser().getDeptId()); // 鑾峰彇閮ㄩ棬棰嗗
+ }catch (Exception e){
+ manager = getUser();
+ }
+ PlanType planType = new PlanType(hostPlan.getHostId(),1);//1:璐ф灦
+ 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("淇濆瓨澶辫触锛岃閲嶈瘯");
+ }
+ plan.setAssistantPlanId(plan.getId());
+ plan.setHostPlanId(hostPlanId);
+ if (!planService.updateById(plan)) {
+ throw new CoolException("鏇存柊澶辫触锛岃閲嶈瘯");
+ }
+ // 鑷姩娣诲姞璺熻繘浜�
+ PlanFoll planFoll = new PlanFoll();
+ planFoll.setPlanId(plan.getId());
+ planFoll.setUserId(planLeader.getId());
+ if (!planFollService.insert(planFoll)) {
+ throw new CoolException("淇濆瓨澶辫触锛岃閲嶈瘯");
+ }
+
+ hostPlan.setAssistantPlanId(plan.getId());
+ hostPlan.setHostPlanId(hostPlanId);
+ if (!planService.updateById(hostPlan)) {
+ throw new CoolException("鏇存柊澶辫触锛岃閲嶈瘯");
+ }
+ return R.ok("淇濆瓨鎴愬姛");
}
@RequestMapping(value = "/plan/update/auth")
@@ -223,6 +354,21 @@
if (priOnline2!=0){
return R.error("瀛樺湪鍏宠仈鐨勬牳浠峰崟锛岀姝㈠垹闄わ紒锛侊紒");
}
+ Plan planA = planService.selectById(id);
+ if (planA.getAssistantHostSign()==1){
+ Plan planB = planService.selectById(planA.getHostPlanId());
+ planB.setAssistantPlanId(0L);
+ planB.setHostPlanId(0L);
+ planB.setStatus2(0);
+ planService.updateById(planB);
+ }else {
+ if (!Cools.isEmpty(planA.getAssistantPlanId()) && planA.getAssistantPlanId()!=0){
+ Plan planB = planService.selectById(planA.getAssistantPlanId());
+ if (!Cools.isEmpty(planB)){
+ return R.error("瀛樺湪鍏宠仈鐨勫壇瑙勫垝鍗曪紝绂佹鍒犻櫎锛侊紒锛� 鍓鍒掑崟ID锛�"+planB.getId());
+ }
+ }
+ }
planService.deleteById(id);
}
return R.ok();
@@ -230,31 +376,23 @@
@RequestMapping(value = "/plan/insert/file/auth")
// @ManagerAuth
- public R insertFile(@RequestParam("planId") String planId,@RequestParam MultipartFile file){
- try{
- InputStream inputStream = file.getInputStream();
- // 鑾峰彇鏂囦欢鐨勫唴瀹圭被鍨�
- String contentType = file.getContentType();
- String suffix = getFileSuffix(file.getOriginalFilename());
- String url = ossService.upload(inputStream, suffix,contentType);
-// String url = "http://tjdt.oss-cn-hangzhou.aliyuncs.com/"+file.getOriginalFilename();
- String[] names = url.split("com/");
- String name= names[1];
+ public R insertFile(@RequestParam("planId") String planId, @RequestParam("filename") String filename, @RequestParam("filesize") Long filesize) {
+ try {
+// InputStream inputStream = file.getInputStream();
+// // 鑾峰彇鏂囦欢鐨勫唴瀹圭被鍨�
+// String contentType = file.getContentType();
+// String url = ossService.upload(inputStream, file.getOriginalFilename(), contentType);
+//// String url = "http://tjdt.oss-cn-hangzhou.aliyuncs.com/"+file.getOriginalFilename();
+// String[] names = url.split("com/");
+// String name= names[1];
+
+
String[] split = planId.split("-");
int id = Integer.parseInt(split[1]);
- planService.increasePlanUrl(id,url,name,file.getSize());
-
- /*String[] split = planId.split("-");
- int id = Integer.parseInt(split[1]);
- System.out.println("---寮�濮�---");
- String savePath = "D:/crm/plan/file/"+id+"/"; // 鎸囧畾淇濆瓨鏂囦欢鐨勮矾寰�
- try{
- FileSaveExampleUtil.saveFile(file, savePath);
- }catch (Exception e){
- return R.error();
- }*/
+ String url = "http://zhongyang-ftpserver.oss-cn-hangzhou.aliyuncs.com/" + filename;
+ planService.increasePlanUrl(id, url, filename, filesize);
return R.ok();
- }catch (Exception e){
+ } catch (Exception e) {
System.out.println(e);
return R.error();
}
@@ -287,11 +425,14 @@
@RequestMapping(value = "/plan/view/file/auth")
// @ManagerAuth
public R viewFile(@RequestParam("planId") String planId){
+ List<FileSaveExampleUtil.FileDTO> fileDTOS = new ArrayList<>();
+ if (Cools.isEmpty(planId)){
+ return R.ok(fileDTOS);
+ }
int id = Integer.parseInt(planId);
// String savePath = "D:/crm/plan/file/"+id+"/"; // 鎸囧畾淇濆瓨鏂囦欢鐨勮矾寰�
try{
List<Integer> ids = planService.selectPlanUrlId(id);
- List<FileSaveExampleUtil.FileDTO> fileDTOS = new ArrayList<>();
for (int id2 : ids){
String url = planService.selectPlanUrlPlanIdUrl(id2);
String name = planService.selectPlanUrlPlanIdName(id2);
@@ -337,7 +478,12 @@
// case 1:
// // 鏈粍缁勯暱瀹℃牳
// User user = userService.selectById(plan.getUserId());
-// User manager = userService.getDeptManager(getHostId(), user.getDeptId());
+// User manager = new User();
+// try{
+// manager = userService.getDeptManager(getHostId(), getUser().getDeptId()); // 鑾峰彇閮ㄩ棬棰嗗
+// }catch (Exception e){
+// manager = user;
+// }
// if (manager.getId().equals(getUserId())) {
//
// // 鏌ユ壘瑙勫垝缁勯暱
@@ -392,8 +538,7 @@
// break;
case 1:
// 鏌ユ壘瑙勫垝缁勯暱
- PlanType planType = planTypeService.selectById(plan.getPlanType());
- User planLeader = planTypeService.findPlanLeader(planType);
+ User planLeader = userService.selectById(plan.getDirector());
if (Cools.isEmpty(planLeader)) {
throw new CoolException("鏈煡鎵惧埌瑙勫垝缁勯暱锛岃鑱旂郴绠$悊鍛�");
}
@@ -406,6 +551,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);
@@ -416,7 +562,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()+PZH+DateUtils.convert(new Date())+" "+"鍞墠缁勯暱" + planLeader.getNickname() + "瀹℃壒閫氳繃");
+ }
dto.setTime(DateUtils.convert(new Date()));
break;
case 3:
@@ -461,6 +611,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) {
@@ -470,7 +622,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()+PZH+DateUtils.convert(new Date())+" "+"瑙勫垝鍛�" + plannerUser.getNickname() + "瀹℃壒閫氳繃");
+ }
dto.setTime(DateUtils.convert(new Date()));
break;
case 4:
@@ -506,7 +662,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()+PZH+DateUtils.convert(new Date())+" "+"涓氬姟鍛�" + salesman0.getNickname() + "瀹℃壒閫氳繃");
+ }
dto.setTime(DateUtils.convert(new Date()));
break;
default:
@@ -520,6 +680,12 @@
plan.setUpdateBy(getUserId());
plan.setUpdateTime(new Date());
+ if (plan.getAssistantHostSign()==1){
+ Plan planHost = planService.selectById(plan.getHostPlanId());
+ planHost.setStatus2(1);
+ planService.updateById(planHost);
+ }
+
if (!planService.updateById(plan)) {
throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�");
}
@@ -528,6 +694,48 @@
return R.error();
}
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 (dto.getStep().equals(2)){
+ plan.setDirector(dto.getUserId());
+ }
+ 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()+PZH+DateUtils.convert(now)+" "+director.getNickname()+"鍥為��瀹℃壒");
+ }
+ sign = false;
+ }
+ if (sign){
+ dto.setMsg(dto.getMsg()+PZH+DateUtils.convert(now)+" "+director.getNickname()+"鍥為��瀹℃壒");
+ }
+
+ planDtoList.add(dto);
+ }
+ plan.setStatus(0);
+ plan.setStep(1);
+ plan.setSettle(1);
+ plan.setSettleMsg(JSON.toJSONString(planDtoList));
+ plan.setUpdateBy(getUserId());
+ plan.setUpdateTime(now);
+ planService.updateById(plan);
+ return R.ok("鍥為��鎴愬姛");
}
@PostMapping(value = "/plan/planner/list/auth")
@@ -541,6 +749,9 @@
}
// 鏌ユ壘瑙勫垝缁勯暱
PlanType planType = planTypeService.selectById(plan.getPlanType());
+ if (plan.getAssistantHostSign()==1){
+ planType.setType(1);
+ }
User planLeader = planTypeService.findPlanLeader(planType);
if (Cools.isEmpty(planLeader)) {
throw new CoolException("鏈煡鎵惧埌瑙勫垝缁勯暱锛岃鑱旂郴绠$悊鍛�");
@@ -552,6 +763,11 @@
List<User> users = userService.selectList(new EntityWrapper<User>().eq("dept_id", planLeader.getDeptId()));
List<KeyValueVo> vos = new ArrayList<>();
users.forEach(item -> vos.add(new KeyValueVo(String.valueOf(item.getNickname()), item.getId())));
+ if (planType.getType().equals(2)){
+ ProcessPermissions processPermissions= processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 101).eq("process", "1-1"));//2锛氭牳浠锋祦绋�
+ User manager = userService.selectById(processPermissions.getUserId()); // 鑾峰彇鏍镐环娴佺▼鑺傜偣1纭浜�
+ vos.add(new KeyValueVo(String.valueOf(manager.getNickname()), manager.getId()));
+ }
return R.ok().add(vos);
}
@@ -602,14 +818,25 @@
EntityWrapper<Plan> wrapper = new EntityWrapper<>();
wrapper.like("name", condition);
wrapper.eq("status",1);
+ wrapper.eq("assistant_host_sign",0);
- int type =1;
- if (getUser().getNickname().equals("鏉庝笘璞�3绾�")){
- type=2;
+ List<ProcessPermissions> processPermissionsList = processPermissionsService.selectList(new EntityWrapper<ProcessPermissions>().eq("process_memo", 4).or().eq("process_memo", 5));//2锛氭牳浠锋祦绋�
+ int type =0;
+ for (ProcessPermissions processPermissions:processPermissionsList){
+ if (getUserId().equals(processPermissions.getUserId())){
+ type=PBN-processPermissions.getProcessMemo();
+ break;
+ }
+ }
+ if (type==0){
+ return R.error("浣犱笉鏄牳浠峰憳,鏃犳潈鎺ヤ换鍔�");
}
List<Long> typeList = new ArrayList<>();
List<PlanType> planTypes = planTypeService.selectList(new EntityWrapper<PlanType>().eq("type", type));
+ if (Cools.isEmpty(planTypes) || planTypes.size()==0){
+ return R.ok();
+ }
for (PlanType planType : planTypes){
typeList.add(planType.getId());
}
@@ -626,6 +853,20 @@
map.put("value", plan.getName());
result.add(map);
}
+ if (type==1){
+ EntityWrapper<Plan> wrapper2 = new EntityWrapper<>();
+ wrapper2.like("name", condition);
+ wrapper2.eq("status",1);
+ wrapper2.eq("assistant_host_sign",1);
+ List<Plan> plan2s = planService.selectList(wrapper2);
+ for (Plan plan : plan2s){
+ Map<String, Object> map = new HashMap<>();
+ map.put("id", plan.getId());
+// map.put("value", plan.getName()+"---"+plan.getId());
+ map.put("value", plan.getName());
+ result.add(map);
+ }
+ }
return R.ok(result);
}
--
Gitblit v1.9.1