中扬CRM客户关系管理系统
LSH
2023-10-10 9c3c9bf7dfaf0f1c162a6aa06fdb7ca81711f70d
#回退流程相关
5个文件已修改
167 ■■■■ 已修改文件
src/main/java/com/zy/crm/manager/controller/OrderController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/controller/PlanController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/priOnline2/priOnline.js 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/priOnline2/priOnline.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/controller/OrderController.java
@@ -158,7 +158,7 @@
                                for (SettleDto dto : priQuoteDtos) {
                                    switch (dto.getStep()) {
                                        case 1:
                                            dto.setMsg(dto.getMsg()+" ——————————————————————————————————————————————————————————————————————————— "+DateUtils.convert(now)+" 跟踪项目修改负责人为:"+priQuote.getUserId$());
                                            dto.setMsg(dto.getMsg()+" ———————————————————————————————————————————————————————————————————————————————— "+DateUtils.convert(now)+" 跟踪项目修改负责人为:"+priQuote.getUserId$());
                                            dto.setUserId(priQuote.getUserId());
                                            dto.setUsername(priQuote.getUserId$());
                                            break;
@@ -175,6 +175,8 @@
                                priQuoteService.updateById(priQuote);
                            }
                        }else {
                            signPriOnline2=true;
                        }
                        if (!signPriOnline2){
                            continue;
@@ -191,9 +193,7 @@
                        for (SettleDto dto : priOnline2Dtos) {
                            switch (dto.getStep()) {
                                case 0:
                                    dto.setMsg(dto.getMsg()+" ——————————————————————————————————————————————————————————————————————————— "+DateUtils.convert(now)+" 跟踪项目修改负责人为:"+priOnline2.getUser$());
                                    dto.setUserId(priOnline2.getUserId());
                                    dto.setUsername(priOnline2.getUser$());
                                    dto.setMsg(dto.getMsg()+" ———————————————————————————————————————————————————————————————————————————————— "+DateUtils.convert(now)+" 跟踪项目修改负责人为:"+priOnline2.getUser$());
                                    break;
                                case 3:
                                    dto.setUserId(priOnline2.getUserId());
@@ -209,6 +209,8 @@
                        priOnline2Service.updateById(priOnline2);
                    }
                }else {
                    signPlan=true;
                }
                if (!signPlan){
src/main/java/com/zy/crm/manager/controller/PlanController.java
@@ -56,6 +56,9 @@
    @Autowired
    private SmsCodeService smsCodeService;
    String PZH=" ————————————————— ";
    @GetMapping(value = "/plan/{id}/auth")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
@@ -434,7 +437,7 @@
                            if (Cools.isEmpty(dto.getMsg())){
                                dto.setMsg("售前组长" + planLeader.getNickname() + "审批通过");
                            }else {
                                dto.setMsg(dto.getMsg()+" ————————————————— "+DateUtils.convert(new Date())+" "+"售前组长" + planLeader.getNickname() + "审批通过");
                                dto.setMsg(dto.getMsg()+PZH+DateUtils.convert(new Date())+" "+"售前组长" + planLeader.getNickname() + "审批通过");
                            }
                            dto.setTime(DateUtils.convert(new Date()));
                            break;
@@ -494,7 +497,7 @@
                            if (Cools.isEmpty(dto.getMsg())){
                                dto.setMsg("规划员" + plannerUser.getNickname() + "审批通过");
                            }else {
                                dto.setMsg(dto.getMsg()+" ————————————————— "+DateUtils.convert(new Date())+" "+"规划员" + plannerUser.getNickname() + "审批通过");
                                dto.setMsg(dto.getMsg()+PZH+DateUtils.convert(new Date())+" "+"规划员" + plannerUser.getNickname() + "审批通过");
                            }
                            dto.setTime(DateUtils.convert(new Date()));
                            break;
@@ -534,7 +537,7 @@
                            if (Cools.isEmpty(dto.getMsg())){
                                dto.setMsg("业务员" + salesman0.getNickname() + "审批通过");
                            }else {
                                dto.setMsg(dto.getMsg()+" ————————————————— "+DateUtils.convert(new Date())+" "+"业务员" + salesman0.getNickname() + "审批通过");
                                dto.setMsg(dto.getMsg()+PZH+DateUtils.convert(new Date())+" "+"业务员" + salesman0.getNickname() + "审批通过");
                            }
                            dto.setTime(DateUtils.convert(new Date()));
                            break;
@@ -574,16 +577,19 @@
        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()+" ————————————————— "+DateUtils.convert(now)+" "+director.getNickname()+"回退审批");
                    dto.setMsg(dto.getMsg()+PZH+DateUtils.convert(now)+" "+director.getNickname()+"回退审批");
                }
                sign = false;
            }
            if (sign){
                dto.setMsg(dto.getMsg()+" ————————————————— "+DateUtils.convert(now)+" "+director.getNickname()+"回退审批");
                dto.setMsg(dto.getMsg()+PZH+DateUtils.convert(now)+" "+director.getNickname()+"回退审批");
            }
            planDtoList.add(dto);
@@ -591,10 +597,6 @@
        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("回退成功");
src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java
@@ -56,6 +56,8 @@
    @Autowired
    private UserService userService;
    String PZH=" ———————————————————————————————————————————————————————————————————————————————— ";
    @RequestMapping(value = "/priOnline2/{id}/auth")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
@@ -183,8 +185,8 @@
        PlanType planType = planTypeService.selectById(plan.getPlanType());
        node = node+planType.getType();
        ProcessPermissions processPermissions = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 5).eq("process", node));//2:报价流程
        User manager = userService.selectById(processPermissions.getUserId());       // 获取报价流程节点2确认人
        ProcessPermissions processPermissions = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 5).eq("process", node));//2:核价流程
        User manager = userService.selectById(processPermissions.getUserId());       // 获取核价流程节点2确认人
                                // 获取业务员
        List<String> initNames = new ArrayList<>();
@@ -433,6 +435,46 @@
        return R.ok().add(vos);
    }
    @PostMapping(value = "/priOnline2/approvalEnd/auth")
    @ManagerAuth(memo = "拒绝申请单")
    public R approvalEnd(@RequestParam Long priOnlineId,
                         @RequestParam(required = false) Long plannerId) {
        PriOnline2 priOnline2 = priOnline2Service.selectById(priOnlineId);
        Date now = new Date();
        Long memberId = priOnline2.getMemberId();
        User member = userService.selectById(memberId);
        if (!member.getId().equals(getUserId())){
            return R.error("抱歉,您没有审核的权限");
        }
        List<SettleDto> planDtos = JSON.parseArray(priOnline2.getSettleMsg(), SettleDto.class);
        List<SettleDto> planDtoList = new ArrayList<>();
        boolean sign = true;
        for (SettleDto dto : planDtos) {
            if (dto.getStep().equals(1)){
                priOnline2.setMemberId(dto.getUserId());
            }
            if (sign && dto.getUserId().equals(memberId) && priOnline2.getSettle()+1==dto.getStep()){
                if (Cools.isEmpty(dto.getMsg())){
                    dto.setMsg(DateUtils.convert(now)+" "+member.getNickname()+"回退审批");
                }else {
                    dto.setMsg(dto.getMsg()+PZH+DateUtils.convert(now)+" "+member.getNickname()+"回退审批");
                }
                sign = false;
            }
            if (sign){
                dto.setMsg(dto.getMsg()+PZH+DateUtils.convert(now)+" "+member.getNickname()+"回退审批");
            }
            planDtoList.add(dto);
        }
        priOnline2.setStatus(0);
        priOnline2.setSettle(0);
        priOnline2.setSettleMsg(JSON.toJSONString(planDtoList));
        priOnline2Service.updateById(priOnline2);
        return R.ok("回退成功");
    }
    @PostMapping(value = "/priOnline2/approval/auth")
    @ManagerAuth
    public R approvalBusinessTrip(@RequestParam Long priOnlineId,
@@ -443,16 +485,18 @@
        switch (priOnline2.getSettle()) {
            case 0:
                // 本部门经理审核  节点负责人
                User user = userService.selectById(priOnline2.getMemberId());
                Plan plan1 = planService.selectById(priOnline2.getItemId());
                PlanType planType1 = planTypeService.selectById(plan1.getPlanType());
                ProcessPermissions processPermissions1 = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 5).eq("process", "2-"+planType1.getType()));//2:报价流程
                ProcessPermissions processPermissions1 = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 5).eq("process", "2-"+planType1.getType()));//2:核价流程
                User manager1 = userService.selectById(processPermissions1.getUserId());       // 获取报价流程节点2确认人
                if (Cools.isEmpty(getUser())) {
                    return R.error("抱歉,您没有提交的权限");
                }
                if (!getUserId().equals(getUser().getId())) {
                if (!getUserId().equals(user.getId())) {
                    return R.error("抱歉,您没有提交的权限");
                }
                // 修改 settle 步骤数据
@@ -464,7 +508,11 @@
                            break;
                        case 1:
                            dto.setCurr(Boolean.TRUE);
                            dto.setMsg(getUser().getNickname() + "提交完成");
                            if (Cools.isEmpty(dto.getMsg())){
                                dto.setMsg(user.getNickname() + "提交完成");
                            }else {
                                dto.setMsg(dto.getMsg()+PZH+DateUtils.convert(new Date())+" " + user.getNickname() + "提交完成");
                            }
                            dto.setTime(DateUtils.convert(now));
                            break;
                        default:
@@ -507,7 +555,11 @@
                                break;
                            case 2:
                                dto.setCurr(Boolean.TRUE);
                                if (Cools.isEmpty(dto.getMsg())){
                                dto.setMsg(manager.getNickname() + "审批通过");
                                }else {
                                    dto.setMsg(dto.getMsg()+PZH+DateUtils.convert(new Date())+" " + manager.getNickname() + "审批通过");
                                }
                                dto.setTime(DateUtils.convert(now));
                                break;
                            default:
@@ -543,7 +595,11 @@
                            break;
                        case 3:
                            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:
src/main/webapp/static/js/priOnline2/priOnline.js
@@ -84,16 +84,38 @@
        cols: [[
            {type: 'checkbox', fixed: 'left'}
            ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80,hide: true}
            ,{field: 'templateName', align: 'center',title: '客户名称', style: 'color: #1890ff;cursor:pointer', event: 'moreCstmr', width: 350,hide: false}
            , {
                field: 'templateName',
                align: 'center',
                title: '客户名称',
                style: 'color: #1890ff;cursor:pointer',
                event: 'moreCstmr',
                width: 350,
                hide: false
            }
            ,{field: 'cstmrId$', align: 'center',title: '客户id',hide: true}
            ,{field: 'orderNum', align: 'center',title: '核价单号',hide: false}
            ,{field: 'planId$', align: 'center',title: '规划单号', style: 'color: #1890ff;cursor:pointer', event: 'morePlan',hide: false}
            , {
                field: 'planId$',
                align: 'center',
                title: '规划单号',
                style: 'color: #1890ff;cursor:pointer',
                event: 'morePlan',
                hide: false
            }
            ,{field: 'itemId', align: 'center',title: '规划单号', hide: true}
            ,{field: 'createTime$', align: 'center',title: '创建时间'}
            ,{field: 'updateTime$', align: 'center',title: '更新时间'}
            ,{field: 'status$', align: 'center',title: '状态'}
            // ,{field: 'memberId$', align: 'center',title: ''}
            ,{field: 'settle$', align: 'center',title: '进度', style: 'color: #1890ff;cursor:pointer', event: 'more',hide: false}
            , {
                field: 'settle$',
                align: 'center',
                title: '进度',
                style: 'color: #1890ff;cursor:pointer',
                event: 'more',
                hide: false
            }
            ,{field: 'user$', align: 'center',title: '业务员'}
            ,{field: 'updateUserId$', align: 'center',title: '更新人员'}
            ,{field: 'checkDataStatus$', align: 'center',title: '报价数据'}
@@ -236,6 +258,17 @@
    table.on('tool(priOnline)', function(obj){
        var data = obj.data;
        switch (obj.event) {
            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 'approval':
                layer.confirm('审批通过?', {
                    skin: 'layui-layer-admin',
@@ -548,7 +581,32 @@
            }
        });
    }
    function approvalEnd(planId, plannerId, dIdx) {
        let loadIndex = layer.load(2);
        $.ajax({
            url: baseUrl+"/priOnline2/approvalEnd/auth",
            headers: {'token': localStorage.getItem('token')},
            data: {
                priOnlineId: priOnlineId,
                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 approval(priOnlineId, plannerId, dIdx) {
        let loadIndex = layer.load(2);
src/main/webapp/views/priOnline2/priOnline.html
@@ -82,6 +82,9 @@
  {{# if (d.settle == 2) { }}
    <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">确认</a>
  {{# } }}
  {{# if (d.settle == 1 || d.settle == 2) { }}
    <a class="layui-btn layui-btn-xs btn-edit" lay-event="approvalEnd">回退审批</a>
  {{# } }}
  {{# if (d.settle == 0 || d.settle == 1) { }}
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a>
  {{# } }}