From 6630484f4d595c468dba6b07d4586bfbb16525fa Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期二, 12 九月 2023 17:14:19 +0800
Subject: [PATCH] #合同审核完善

---
 src/main/java/com/zy/crm/manager/controller/ContractController.java |  188 +++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 183 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/zy/crm/manager/controller/ContractController.java b/src/main/java/com/zy/crm/manager/controller/ContractController.java
index 94b934b..e0fb02f 100644
--- a/src/main/java/com/zy/crm/manager/controller/ContractController.java
+++ b/src/main/java/com/zy/crm/manager/controller/ContractController.java
@@ -1,15 +1,16 @@
 package com.zy.crm.manager.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 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.common.model.SettleDto;
 import com.zy.crm.common.service.OssService;
-import com.zy.crm.manager.entity.Contract;
-import com.zy.crm.manager.entity.ContractSales;
-import com.zy.crm.manager.entity.PriOnline;
+import com.zy.crm.manager.entity.*;
 import com.zy.crm.manager.service.ContractSalesService;
 import com.zy.crm.manager.service.ContractService;
 import com.core.annotations.ManagerAuth;
@@ -18,8 +19,11 @@
 import com.core.common.R;
 import com.core.domain.KeyValueVo;
 import com.zy.crm.common.web.BaseController;
+import com.zy.crm.manager.service.ProcessPermissionsService;
 import com.zy.crm.manager.utils.ChineseNumberUtils;
 import com.zy.crm.manager.utils.WordUtils;
+import com.zy.crm.system.entity.User;
+import com.zy.crm.system.service.UserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.io.InputStreamResource;
 import org.springframework.http.HttpHeaders;
@@ -44,11 +48,20 @@
     private ContractSalesService contractSalesService;
     @Autowired
     private OssService ossService;
+    @Autowired
+    private UserService userService;
+    @Autowired
+    private ProcessPermissionsService processPermissionsService;
 
     @RequestMapping(value = "/contract/{id}/auth")
     @ManagerAuth
     public R get(@PathVariable("id") String id) {
-        return R.ok(contractService.selectById(String.valueOf(id)));
+        Contract contract = contractService.selectById(String.valueOf(id));
+        assert contract != null;
+        JSONObject resultObj = JSON.parseObject(JSON.toJSONString(contract));
+        // 姝ラ鏉$浉鍏�
+        resultObj.put("step", contract.getSettle() == 5 ? 0 : contract.getSettle() + 1);
+        return R.ok().add(resultObj);
     }
 
     @RequestMapping(value = "/contract/list/auth")
@@ -83,10 +96,27 @@
     @RequestMapping(value = "/contract/add/auth")
     @ManagerAuth(memo = "娣诲姞鍚堝悓")
     public R add(Contract contract) {
+        Date now = new Date();
         contract.setUserId(getUserId());
         //鍒涘缓浜哄憳閮ㄩ棬
         contract.setDeptId(getDeptId());
-        contract.setCreateTime(new Date());
+        contract.setCreateTime(now);
+
+        contract.setSettle(0);
+
+        User manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 鑾峰彇閮ㄩ棬棰嗗
+        List<String> initNames = new ArrayList<>();
+        initNames.add("鍒涘缓浜у搧璐圭敤鏄庣粏妯℃澘");
+        initNames.add("鎻愪氦浜у搧璐圭敤鏄庣粏");
+        initNames.add("閮ㄩ棬缁忕悊瀹℃牳");
+        ProcessPermissions processPermissions = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 7).eq("process",  "3-1" ));//7锛氬悎鍚岀鐞�
+        User president = userService.selectById(processPermissions.getUserId());
+        initNames.add("鎬昏鍔�"+president.getNickname()+"瀹℃牳");
+        initNames.add("涓氬姟鍛樼‘璁�");
+        contract.setSettleMsg(JSON.toJSONString(SettleDto.initContract(manager,getUser(),president,initNames,4)));
+
+        contract.setUpdateTime(now);
+        contract.setUpdateBy(getUserId());
         contractService.insert(contract);
         return R.ok();
     }
@@ -296,4 +326,152 @@
         return R.ok().add(vos);
     }
 
+    @PostMapping(value = "/contracr/approval/auth")
+    @ManagerAuth
+    public R approvalBusinessTrip(@RequestParam Long contracrId,
+                                  @RequestParam(required = false) Long plannerId){
+        Contract contract = contractService.selectById(contracrId);
+        assert contract != null;
+        Date now = new Date();
+        switch (contract.getSettle()) {
+            case 0:
+                User user2 = userService.selectById(contract.getUserId());
+                User manager1 = userService.getDeptManager(getHostId(), user2.getDeptId());
+
+                if (Cools.isEmpty(getUser())) {
+                    return R.error("鎶辨瓑锛屾偍娌℃湁鎻愪氦鐨勬潈闄�");
+                }
+                if (!getUserId().equals(getUser().getId())) {
+                    return R.error("鎶辨瓑锛屾偍娌℃湁鎻愪氦鐨勬潈闄�");
+                }
+                // 淇敼 settle 姝ラ鏁版嵁
+                List<SettleDto> list1 = JSON.parseArray(contract.getSettleMsg(), SettleDto.class);
+                for (SettleDto dto : list1) {
+                    switch (dto.getStep()) {
+                        case 0:
+                            dto.setCurr(Boolean.FALSE);
+                            break;
+                        case 1:
+                            dto.setCurr(Boolean.TRUE);
+                            dto.setMsg(getUser().getNickname() + "鎻愪氦瀹屾垚");
+                            dto.setTime(DateUtils.convert(now));
+                            break;
+                        default:
+                            break;
+                    }
+                }
+                contract.setSettleMsg(JSON.toJSONString(list1));
+                // 淇敼瑙勫垝鍗曠姸鎬�
+                contract.setSettle(1);
+                contract.setUpdateTime(now);
+
+                if (!contractService.updateById(contract)) {
+                    throw new CoolException("鎻愪氦澶辫触锛岃鑱旂郴绠$悊鍛�");
+                }
+                break;
+            case 1:
+                // 鏈儴闂ㄧ粡鐞嗗鏍�
+                User user = userService.selectById(contract.getUserId());
+                User manager = userService.getDeptManager(getHostId(), user.getDeptId());
+                if (manager.getId().equals(getUserId())) {
+
+                    // 淇敼 settle 姝ラ鏁版嵁
+                    List<SettleDto> list = JSON.parseArray(contract.getSettleMsg(), SettleDto.class);
+                    for (SettleDto dto : list) {
+                        switch (dto.getStep()) {
+                            case 1:
+                                dto.setCurr(Boolean.FALSE);
+                                break;
+                            case 2:
+                                dto.setCurr(Boolean.TRUE);
+                                dto.setMsg("閮ㄩ棬缁忕悊" + manager.getNickname() + "瀹℃壒閫氳繃");
+                                dto.setTime(DateUtils.convert(now));
+                                break;
+                            default:
+                                break;
+                        }
+                    }
+                    contract.setSettleMsg(JSON.toJSONString(list));
+
+                    // 淇敼瑙勫垝鍗曠姸鎬�
+                    contract.setSettle(2);  // 鐢宠閫氳繃
+                    contract.setUpdateTime(now);
+                    if (!contractService.updateById(contract)) {
+                        throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�");
+                    }
+                } else {
+                    return R.error("鎶辨瓑锛屾偍娌℃湁瀹℃牳鐨勬潈闄愶紒锛侊紒");
+                }
+                break;
+            case 2:
+                ProcessPermissions processPermissions = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 7).eq("process", "3-1"));//3锛氭姤閿�娴佺▼
+                User planLeader = userService.selectById(processPermissions.getUserId());       // 鑾峰彇鍚堝悓绠$悊娴佺▼鑺傜偣纭浜�
+
+                if (planLeader.getId().equals(getUserId())) {
+
+                    // 淇敼 settle 姝ラ鏁版嵁
+                    List<SettleDto> list = JSON.parseArray(contract.getSettleMsg(), SettleDto.class);
+                    for (SettleDto dto : list) {
+                        switch (dto.getStep()) {
+                            case 2:
+                                dto.setCurr(Boolean.FALSE);
+                                break;
+                            case 3:
+                                dto.setCurr(Boolean.TRUE);
+                                dto.setMsg("鎬昏鍔�" + planLeader.getNickname() + "瀹℃壒閫氳繃");
+                                dto.setTime(DateUtils.convert(now));
+                                break;
+                            default:
+                                break;
+                        }
+                    }
+                    contract.setSettleMsg(JSON.toJSONString(list));
+
+                    // 淇敼瑙勫垝鍗曠姸鎬�
+                    contract.setSettle(3);  // 鐢宠閫氳繃
+                    contract.setUpdateTime(now);
+                    if (!contractService.updateById(contract)) {
+                        throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�");
+                    }
+                } else {
+                    return R.error("鎶辨瓑锛屾偍娌℃湁瀹℃牳鐨勬潈闄愶紒锛侊紒");
+                }
+                break;
+            case 3:
+                // 涓氬姟鍛�
+                User salesman0 = userService.selectById(contract.getUserId());
+                if (!getUserId().equals(salesman0.getId())) {
+                    return R.error("鎶辨瓑锛屾偍鏃犻渶纭锛侊紒锛�");
+                }
+                // 淇敼 settle 姝ラ鏁版嵁
+                List<SettleDto> list2 = JSON.parseArray(contract.getSettleMsg(), SettleDto.class);
+                for (SettleDto dto : list2) {
+                    switch (dto.getStep()) {
+                        case 3:
+                            dto.setCurr(Boolean.TRUE);
+                            break;
+                        case 4:
+                            dto.setCurr(Boolean.TRUE);
+                            dto.setMsg("涓氬姟鍛�" + salesman0.getNickname() + "浠ョ‘璁�");
+                            dto.setTime(DateUtils.convert(new Date()));
+                            break;
+                        default:
+                            break;
+                    }
+                }
+                contract.setSettleMsg(JSON.toJSONString(list2));
+                // 淇敼瑙勫垝鍗曠姸鎬�
+                contract.setSettle(4);  // 瀹℃壒閫氳繃
+                contract.setUpdateTime(new Date());
+
+                if (!contractService.updateById(contract)) {
+                    throw new CoolException("纭澶辫触锛岃鑱旂郴绠$悊鍛�");
+                }
+                break;
+            default:
+                return R.error();
+        }
+        return R.ok("瀹℃壒鎴愬姛");
+    }
+
 }

--
Gitblit v1.9.1