中扬CRM客户关系管理系统
LSH
2023-08-14 419de9e1681475c89356439f30849951af8bb98a
#报价单审核机制
6个文件已修改
303 ■■■■■ 已修改文件
src/main/java/com/zy/crm/common/model/SettleDto.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/controller/PriQuoteController.java 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/entity/PriQuote.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/service/PlanTypeService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/service/impl/PlanTypeServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/priQuote/priQuote.js 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/common/model/SettleDto.java
@@ -71,4 +71,46 @@
        return list;
    }
    public static List<SettleDto> initPriQuote(Plan plan, User manager) {
        List<SettleDto> list = new ArrayList<>();
        for (int i = 1; i < 6; i++) {
            SettleDto dto = new SettleDto();
            dto.setStep(i);
            switch (i) {
                case 1:
                    dto.setTitle("开始");
                    dto.setMsg(plan.getUserId$() + "创建了审批");
                    dto.setUserId(plan.getUserId());
                    dto.setUsername(plan.getUserId$());
                    dto.setTime(DateUtils.convert(new Date()));
                    dto.setCurr(Boolean.TRUE);
                    list.add(dto);
                    break;
                case 2:
                    dto.setTitle("部门经理审核");
                    dto.setUserId(manager.getId());
                    dto.setUsername(manager.getNickname());
                    list.add(dto);
                    break;
                case 3:
                    dto.setTitle("总裁办审核");
                    list.add(dto);
                    break;
                case 4:
                    dto.setTitle("业务员审核");
                    list.add(dto);
                    break;
                case 5:
                    dto.setTitle("审批通过");
                    dto.setUserId(plan.getUserId());
                    dto.setUsername(plan.getUserId$());
                    list.add(dto);
                    break;
                default:
                    break;
            }
        }
        return list;
    }
}
src/main/java/com/zy/crm/manager/controller/PriQuoteController.java
@@ -12,13 +12,11 @@
import com.core.common.DateUtils;
import com.core.common.R;
import com.core.domain.KeyValueVo;
import com.core.exception.CoolException;
import com.zy.crm.common.model.SettleDto;
import com.zy.crm.common.web.BaseController;
import com.zy.crm.manager.entity.*;
import com.zy.crm.manager.service.ItemService;
import com.zy.crm.manager.service.PlanService;
import com.zy.crm.manager.service.PriQuoteBudgetService;
import com.zy.crm.manager.service.PriQuoteService;
import com.zy.crm.manager.service.*;
import com.zy.crm.system.entity.User;
import com.zy.crm.system.service.UserService;
import org.apache.poi.xssf.usermodel.XSSFSheet;
@@ -47,6 +45,9 @@
    @Autowired
    private PriQuoteBudgetService priQuoteBudgetService;
    @Autowired
    private PlanTypeService planTypeService;
    @RequestMapping(value = "/priQuote/{id}/auth")
    @ManagerAuth
@@ -147,7 +148,7 @@
        priQuote.setForm(JSON.toJSONString(map));     // 自定义表单内容
        priQuote.setSettle(1);  // 1.开始
        User manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 获取部门领导
        priQuote.setSettleMsg(JSON.toJSONString(SettleDto.init(plan, manager)));
        priQuote.setSettleMsg(JSON.toJSONString(SettleDto.initPriQuote(plan, manager)));
        planService.updateById(plan);
@@ -416,4 +417,203 @@
        }
    }
    @PostMapping(value = "/priQuote/approval/auth")
    @ManagerAuth
    public R approvalPriQuote(@RequestParam Long planId,
                      @RequestParam(required = false) Long plannerId){return null;}
//        PriQuote priQuote = priQuoteService.selectById(planId);
//        assert priQuote != null;
//
//        switch (priQuote.getSettle()) {
//            case 1:
//                // 本部门经理审核
//                User user = userService.selectById(priQuote.getUserId());
//                User manager = userService.getDeptManager(getHostId(), user.getDeptId());
//                if (manager.getId().equals(getUserId())) {
//
//
//                    // 查找总裁办
//                    PlanType planType = planTypeService.selectById(priQuote.getPlanType());
//                    User planLeader = planTypeService.findPlanLeader(planType);
//                    if (Cools.isEmpty(planLeader)) {
//                        throw new CoolException("未查找到总裁办,请联系管理员");
//                    }
//
//                    // 修改 settle 步骤数据
//                    List<SettleDto> list = JSON.parseArray(priQuote.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(new Date()));
//                                break;
//                            case 3:
//                                dto.setUserId(planLeader.getId());
//                                dto.setUsername(planLeader.getNickname());
//                                break;
//                            default:
//                                break;
//                        }
//                    }
//                    priQuote.setSettleMsg(JSON.toJSONString(list));
//
//                    // 修改规划单状态
//                    priQuote.setSettle(2);  // 规划组长待审
//                    priQuote.setUpdateUserId(getUserId());
//                    priQuote.setUpdateTime(new Date());
//
//                    if (!priQuoteService.updateById(priQuote)) {
//                        throw new CoolException("审核失败,请联系管理员");
//                    }
//
//                    // 添加规划组长跟进人
//                    PlanFoll planFoll = new PlanFoll();
//                    planFoll.setPlanId(priQuote.getId());
//                    planFoll.setUserId(planLeader.getId());
//                    if (!planFollService.insert(planFoll)) {
//                        throw new CoolException("审核失败,请联系管理员");
//                    }
//
//                } else {
//                    return R.error("抱歉,您没有审核的权限");
//                }
//                break;
//            case 2:
//                // 查找规划组长
//                PlanType planType = planTypeService.selectById(priQuote.getPlanType());
//                User planLeader = planTypeService.findPlanLeader(planType);
//                if (Cools.isEmpty(planLeader)) {
//                    throw new CoolException("未查找到规划组长,请联系管理员");
//                }
//                if (Cools.isEmpty(planLeader)) {
//                    throw new CoolException("未查找到规划组长,请联系管理员");
//                }
//                if (!getUserId().equals(planLeader.getId())) {
//                    return R.error("抱歉,您没有审核的权限");
//                }
//                if (Cools.isEmpty(plannerId)) {
//                    return R.error("指定规划员不能为空");
//                }
//                User planner = userService.selectById(plannerId);
//                // 修改 settle 步骤数据
//                List<SettleDto> list = JSON.parseArray(priQuote.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(new Date()));
//                            break;
//                        case 4:
//                            dto.setUserId(planner.getId());
//                            dto.setUsername(planner.getNickname());
//                            break;
//                        default:
//                            break;
//                    }
//                }
//                priQuote.setSettleMsg(JSON.toJSONString(list));
//                // 修改规划单状态
//                priQuote.setSettle(3);  // 规划员待审
//                priQuote.setPlanner(planner.getId());
//                priQuote.setUpdateUserId(getUserId());
//                priQuote.setUpdateTime(new Date());
//
//                if (!priQuoteService.updateById(priQuote)) {
//                    throw new CoolException("审核失败,请联系管理员");
//                }
//
//                // 添加规划员跟进人
//                PlanFoll planFoll = new PlanFoll();
//                planFoll.setPlanId(priQuote.getId());
//                planFoll.setUserId(planner.getId());
//                if (!planFollService.insert(planFoll)) {
//                    throw new CoolException("审核失败,请联系管理员");
//                }
//                break;
//            case 3:
//                User plannerUser = userService.selectById(priQuote.getPlanner());
//                if (Cools.isEmpty(plannerUser)) {
//                    return R.error("未找到规划员");
//                }
//                if (!getUserId().equals(plannerUser.getId())) {
//                    return R.error("抱歉,您没有审核的权限");
//                }
//                // 业务员
//                User salesman = userService.selectById(priQuote.getUserId());
//                // 修改 settle 步骤数据
//                List<SettleDto> list0 = JSON.parseArray(priQuote.getSettleMsg(), SettleDto.class);
//                for (SettleDto dto : list0) {
//                    switch (dto.getStep()) {
//                        case 3:
//                            dto.setCurr(Boolean.FALSE);
//                            break;
//                        case 4:
//                            dto.setCurr(Boolean.TRUE);
//                            dto.setMsg("规划员" + plannerUser.getNickname() + "审批通过");
//                            dto.setTime(DateUtils.convert(new Date()));
//                            break;
//                        case 5:
//                            dto.setUserId(salesman.getId());
//                            dto.setUsername(salesman.getNickname());
//                            break;
//                        default:
//                            break;
//                    }
//                }
//                priQuote.setSettleMsg(JSON.toJSONString(list0));
//                // 修改规划单状态
//                priQuote.setSettle(4);  // 审批通过
//                priQuote.setUpdateUserId(getUserId());
//                priQuote.setUpdateTime(new Date());
//
//                if (!planService.updateById(priQuote)) {
//                    throw new CoolException("审核失败,请联系管理员");
//                }
//                break;
//            case 4:
//                // 业务员
//                User salesman0 = userService.selectById(priQuote.getUserId());
//                if (!getUserId().equals(salesman0.getId())) {
//                    return R.error("抱歉,您没有审核的权限");
//                }
//                // 修改 settle 步骤数据
//                List<SettleDto> list1 = JSON.parseArray(priQuote.getSettleMsg(), SettleDto.class);
//                for (SettleDto dto : list1) {
//                    switch (dto.getStep()) {
//                        case 4:
//                            dto.setCurr(Boolean.TRUE);
//                            break;
//                        case 5:
//                            dto.setCurr(Boolean.TRUE);
//                            dto.setMsg("业务员" + salesman0.getNickname() + "审批通过");
//                            dto.setTime(DateUtils.convert(new Date()));
//                            break;
//                        default:
//                            break;
//                    }
//                }
//                priQuote.setSettleMsg(JSON.toJSONString(list1));
//                // 修改规划单状态
//                priQuote.setSettle(5);  // 审批通过
//                priQuote.setUpdateUserId(getUserId());
//                priQuote.setUpdateTime(new Date());
//
//                if (!planService.updateById(priQuote)) {
//                    throw new CoolException("审核失败,请联系管理员");
//                }
//                break;
//            default:
//                return R.error();
//        }
//        return R.ok("审批成功");
//    }
}
src/main/java/com/zy/crm/manager/entity/PriQuote.java
@@ -148,6 +148,15 @@
        return null;
    }
    public String getPlanName$() {
        PlanService planService = SpringUtils.getBean(PlanService.class);
        Plan plan = planService.selectById(this.itemId);
        if (!Cools.isEmpty(plan)){
            return String.valueOf(plan.getName());
        }
        return null;
    }
    public String getUpdateTime$(){
        if (Cools.isEmpty(this.updateTime)){
            return "";
src/main/java/com/zy/crm/manager/service/PlanTypeService.java
@@ -8,4 +8,6 @@
    User findPlanLeader(PlanType planType);
    User findPriQuoteLeader(PlanType planType);
}
src/main/java/com/zy/crm/manager/service/impl/PlanTypeServiceImpl.java
@@ -45,4 +45,27 @@
        }
    }
    @Override
    public User findPriQuoteLeader(PlanType planType) {
        Dept dept;
        switch (planType.getType()) {
            // 货架
            case 1:
                dept = deptService.selectOne(new EntityWrapper<Dept>().eq("memo", "货架"));
                if (Cools.isEmpty(dept)) {
                    throw new CoolException("未查找到货架规划部");
                }
                return userService.getDeptManager(planType.getHostId(), dept.getId());
            // 集成
            case 2:
                dept = deptService.selectOne(new EntityWrapper<Dept>().eq("memo", "集成"));
                if (Cools.isEmpty(dept)) {
                    throw new CoolException("未查找到集成规划部");
                }
                return userService.getDeptManager(planType.getHostId(), dept.getId());
            default:
                return null;
        }
    }
}
src/main/webapp/static/js/priQuote/priQuote.js
@@ -90,14 +90,15 @@
            {type: 'checkbox', fixed: 'left'}
            ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80}
            ,{field: 'templateName', align: 'center',title: '模板名', width: 220, style: 'color: #1890ff;cursor:pointer', event: 'more',hide: false}
            ,{field: 'orderNum', align: 'center',title: '报价预算单号'}
            ,{field: 'inOrderNum', align: 'center',title: '报价编号'}
            ,{field: 'planId$', align: 'center',title: '规划单号'}
            ,{field: 'createTime$', align: 'center',title: '创建时间'}
            ,{field: 'updateTime$', align: 'center',title: '更新时间'}
            ,{field: 'memberId$', align: 'center',title: '业务员'}
            ,{field: 'userId$', align: 'center',title: '创建人员'}
            ,{field: 'updateUserId$', align: 'center',title: '更新人员'}
            ,{field: 'orderNum', align: 'center',title: '报价预算单号',hide: false}
            ,{field: 'inOrderNum', align: 'center',title: '报价编号',hide: false}
            ,{field: 'planId$', align: 'center',title: '规划单号',hide: false}
            ,{field: 'planName$', align: 'center',title: '规划单名称',hide: false}
            ,{field: 'createTime$', align: 'center',title: '创建时间',hide: false}
            ,{field: 'updateTime$', align: 'center',title: '更新时间',hide: false}
            ,{field: 'memberId$', align: 'center',title: '业务员',hide: false}
            ,{field: 'userId$', align: 'center',title: '创建人员',hide: true}
            ,{field: 'updateUserId$', align: 'center',title: '更新人员',hide: false}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:200}
        ]],
        request: {