中扬CRM客户关系管理系统
#
LSH
2023-11-04 aa0161bf05195ccb00bc1d8da4b1b8218f93f4d3
src/main/java/com/zy/crm/manager/controller/ContractController.java
@@ -1,7 +1,6 @@
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;
@@ -26,16 +25,12 @@
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;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ClassUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -53,7 +48,7 @@
    @Autowired
    private ProcessPermissionsService processPermissionsService;
    @RequestMapping(value = "/contract/{id}/auth")
    @RequestMapping(value = "/contract/{id}/auth2")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
        Contract contract = contractService.selectById(String.valueOf(id));
@@ -81,15 +76,45 @@
    }
    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
        boolean signUserId = false;
        boolean signDeptId = false;
        boolean signHostId = false;
        for (Map.Entry<String, Object> entry : map.entrySet()){
            if (entry.getKey().equals("dept_id")){
                signDeptId = true;
                if (String.valueOf(entry.getValue()).equals("19")){
                    signHostId = true;
                }
            }
        }
        for (Map.Entry<String, Object> entry : map.entrySet()){
            String val = String.valueOf(entry.getValue());
            if (val.contains(RANGE_TIME_LINK)){
                String[] dates = val.split(RANGE_TIME_LINK);
                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
            } else if (entry.getKey().equals("dept_id")){
                if (!val.equals("19")){
                    wrapper.eq(entry.getKey(), val);
                }
            } else if (entry.getKey().equals("user_id") && !signDeptId){
                signUserId = true;
                wrapper.eq(entry.getKey(), val);
            } else {
                wrapper.like(entry.getKey(), val);
            }
        }
        if (!signUserId && !signDeptId){
            if (getRole().getId()==1){
                wrapper.or().eq("host_id",1);
            }else if (getRole().getId()==2){
                wrapper.eq("dept_id",getDeptId());
            }else {
                wrapper.eq("user_id", getUserId());
            }
        }
        if (signHostId){
            wrapper.or().eq("host_id",1);
        }
    }
@@ -102,16 +127,22 @@
        contract.setDeptId(getDeptId());
        contract.setCreateTime(now);
        contract.setSettle(0);
        contract.setSettle(1);
        User manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 获取部门领导
        User manager = new User();
        try{
            manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 获取部门领导
        }catch (Exception e){
            manager = getUser();
        }
        contract.setDirector(manager.getId());
        List<String> initNames = new ArrayList<>();
        initNames.add("创建产品费用明细模板");
        initNames.add("提交产品费用明细");
        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("总经办"+president.getNickname()+"审核");
        initNames.add("业务员确认");
        contract.setSettleMsg(JSON.toJSONString(SettleDto.initContract(manager,getUser(),president,initNames,4)));
@@ -215,7 +246,11 @@
            /////////////////////////生成Tab表格数据/////////////////////////
            String fileName = this.getClass().getClassLoader().getResource("contractTemplate/" + contractTemplate + ".docx").getPath();//获取文件路径
            return WordUtils.generate(fileName, map, tabParam);
//            String outPdfPath = fileName.split("\\.")[0]+".pdf";
            ResponseEntity<InputStreamResource> generate = WordUtils.generate(fileName, map, tabParam);
//            WordUtils.documents4jWordToPdf(fileName,outPdfPath);
            return generate;
        } catch (Exception e) {
            return null;
        }
@@ -326,18 +361,15 @@
        return R.ok().add(vos);
    }
    @PostMapping(value = "/contracr/approval/auth")
    @PostMapping(value = "/contract/approval/auth")
    @ManagerAuth
    public R approvalBusinessTrip(@RequestParam Long contracrId,
    public R approvalBusinessTrip(@RequestParam Long contractId,
                                  @RequestParam(required = false) Long plannerId){
        Contract contract = contractService.selectById(contracrId);
        Contract contract = contractService.selectById(contractId);
        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("抱歉,您没有提交的权限");
                }
@@ -356,6 +388,9 @@
                            dto.setMsg(getUser().getNickname() + "提交完成");
                            dto.setTime(DateUtils.convert(now));
                            break;
                        case 2:
                            contract.setDirector(dto.getUserId());
                            break;
                        default:
                            break;
                    }
@@ -371,8 +406,8 @@
                break;
            case 1:
                // 本部门经理审核
                User user = userService.selectById(contract.getUserId());
                User manager = userService.getDeptManager(getHostId(), user.getDeptId());
                User manager = userService.selectById(contract.getDirector());
                if (manager.getId().equals(getUserId())) {
                    // 修改 settle 步骤数据
@@ -386,6 +421,9 @@
                                dto.setCurr(Boolean.TRUE);
                                dto.setMsg("部门经理" + manager.getNickname() + "审批通过");
                                dto.setTime(DateUtils.convert(now));
                                break;
                            case 3:
                                contract.setDirector(dto.getUserId());
                                break;
                            default:
                                break;
@@ -404,8 +442,7 @@
                }
                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());       // 获取合同管理流程节点确认人
                User planLeader = userService.selectById(contract.getDirector());
                if (planLeader.getId().equals(getUserId())) {
@@ -421,6 +458,9 @@
                                dto.setMsg("总裁办" + planLeader.getNickname() + "审批通过");
                                dto.setTime(DateUtils.convert(now));
                                break;
                            case 4:
                                contract.setDirector(dto.getUserId());
                                break;
                            default:
                                break;
                        }