中扬CRM客户关系管理系统
LSH
2023-10-09 03b0a7674513a528354ca91d70a8e71857984d33
src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java
@@ -42,7 +42,13 @@
    private PlanService planService;
    @Autowired
    private PriSalesService priSalesService;
    private  PlanTypeService planTypeService;
    @Autowired
    private ProcessPermissionsService processPermissionsService;
    @Autowired
    private PriQuoteService priQuoteService;
    @Autowired
    private CstmrService cstmrService;
@@ -81,21 +87,25 @@
                  @RequestParam Map<String, Object> param){
        EntityWrapper<PriOnline2> wrapper = new EntityWrapper<>();
        wrapper.setSqlSelect("id,title,create_time as createTime,filepath,settle,item_id as itemId,order_num as orderNum,template_name as templateName,user_id as userId,dept_id as deptId,status,update_time as updateTime,check_data as checkData,update_user_id as updateUserId,member_id as memberId");
        wrapper.in("member_id", getUserRoleBelongsToUserId("allopen"));
//        wrapper.in("member_id", getUserRoleBelongsToUserId("allopen"));
        excludeTrash(param);
        convert(param, wrapper);
        allLike(PriOnline2.class, param.keySet(), wrapper, condition);
        wrapper.or().eq("member_id",getUserId());
        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
        return R.ok(priOnline2Service.selectPage(new Page<>(curr, limit), wrapper));
    }
    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
        Long deptId = getDeptId();
        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()){
@@ -117,6 +127,9 @@
        }
        if (!signUserId && !signDeptId){
            wrapper.eq("user_id", getUserId());
        }
        if (signHostId){
            wrapper.or().eq("host_id",1);
        }
    }
@@ -145,6 +158,9 @@
        //业务员
//        Item item = itemService.selectById(priOnline.getItemId());
        Plan plan = planService.selectById(priOnline2.getItemId());
        if (plan.getStatus()!=1){
            return R.error("此规划单状态改变,请刷新页面重新选择!");
        }
        priOnline2.setMemberId(plan.getUserId());
        Cstmr cstmr = cstmrService.selectById(plan.getCstmrId());
@@ -152,16 +168,31 @@
        priOnline2.setSettle(0);
        User manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 获取部门领导
//        User manager = new User();
//        try{
//            manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 获取部门领导
//        }catch (Exception e){
//            manager = getUser();
//        }
        String node="2-";
        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确认人
        User userUp = userService.selectById(plan.getUserId());                               // 获取业务员
        List<String> initNames = new ArrayList<>();
        initNames.add("创建核价单模板");
        initNames.add("提交核价");
        initNames.add("部门经理审核");
        initNames.add("接取核价任务");
        initNames.add("完成核价");
        initNames.add("经理审核");
        initNames.add("业务员确认");
        priOnline2.setSettleMsg(JSON.toJSONString(SettleDto.initSalesPricing(manager,getUser(),initNames,3)));
        priOnline2.setSettleMsg(JSON.toJSONString(SettleDto.initSalesPricing(manager,getUser(),userUp,initNames,3)));
        //设置项目流程
        plan.setStep(2);
        plan.setStatus(2);
        planService.updateById(plan);
        priOnline2Service.insert(priOnline2);
@@ -302,17 +333,32 @@
    @RequestMapping(value = "/priOnline2/delete/auth")
    @ManagerAuth(memo = "删除核价管理")
    public R delete(Long[] ids){
        if (Cools.isEmpty(ids)){
            return R.error();
        }
        for (Long id : ids){
            int priSales = priSalesService.selectCount(new EntityWrapper<PriSales>().eq("pri_online2_id", id));
            if (priSales!=0){
                return R.error("存在关联的产品费用明细,禁止删除!!!");
        try{
            if (Cools.isEmpty(ids) || ids.length==0){
                return R.error();
            }
            for (Long id : ids){
                int  priQuote= priQuoteService.selectCount(new EntityWrapper<PriQuote>().eq("pri_online_id", id));
                if (priQuote!=0){
                    return R.error("存在关联的报价单,禁止删除!!!");
                }
//                int priSales = priSalesService.selectCount(new EntityWrapper<PriSales>().eq("pri_online2_id", id));
//                if (priSales!=0){
//                    return R.error("存在关联的产品费用明细,禁止删除!!!");
//                }
            }
            for (Long id : ids) {
                PriOnline2 priOnline2 = priOnline2Service.selectById(id);
                Plan plan = planService.selectById(priOnline2.getItemId());
                plan.setStatus(1);
                planService.updateById(plan);
            }
            priOnline2Service.deleteBatchIds(Arrays.asList(ids));
            return R.ok();
        }catch (Exception e){
            return R.error(e.getMessage());
        }
        priOnline2Service.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    @RequestMapping(value = "/priOnline2/export/auth")
@@ -331,7 +377,7 @@
    public R query(String condition) {
        EntityWrapper<PriOnline2> wrapper = new EntityWrapper<>();
        wrapper.like("order_num", condition);
        wrapper.in("member_id", getUserRoleBelongsToUserId("allopen"));
        wrapper.in("user_id", getUserRoleBelongsToUserId("allopen"));
        Page<PriOnline2> page = priOnline2Service.selectPage(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (PriOnline2 priOnline2 : page.getRecords()){
@@ -339,6 +385,26 @@
            map.put("id", priOnline2.getId());
//            map.put("value", priOnline2.getOrderNum() + "/" + priOnline2.getPlanId$() + "/" + priOnline2.getMemberId$());
            map.put("value", priOnline2.getOrderNum() + "/" + priOnline2.getTemplateName());
            result.add(map);
        }
        return R.ok(result);
    }
    @RequestMapping(value = "/priOnline2Query2/auth")
    @ManagerAuth
    public R query2(String condition) {
        EntityWrapper<PriOnline2> wrapper = new EntityWrapper<>();
        wrapper.like("order_num", condition);
        wrapper.in("user_id", getUserRoleBelongsToUserId("allopen"));
        Page<PriOnline2> page = priOnline2Service.selectPage(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (PriOnline2 priOnline2 : page.getRecords()){
            Map<String, Object> map = new HashMap<>();
            map.put("id", priOnline2.getId());
//            map.put("value", priOnline2.getOrderNum() + "/" + priOnline2.getPlanId$() + "/" + priOnline2.getMemberId$());
//            map.put("value", priOnline2.getOrderNum() + "/" + priOnline2.getTemplateName());
            map.put("value", priOnline2.getOrderNum() + "/" + priOnline2.getPlanId$() + "/" + priOnline2.getMemberId$() + "/" + priOnline2.getTemplateName());
            result.add(map);
        }
        return R.ok(result);
@@ -373,7 +439,12 @@
        switch (priOnline2.getSettle()) {
            case 0:
                User user2 = userService.selectById(priOnline2.getUserId());
                User manager1 = userService.getDeptManager(getHostId(), user2.getDeptId());
                User manager1 = new User();
                try{
                    manager1 = userService.getDeptManager(getHostId(), user2.getDeptId());        // 获取部门领导
                }catch (Exception e){
                    manager1 = user2;
                }
                if (Cools.isEmpty(getUser())) {
                    return R.error("抱歉,您没有提交的权限");
@@ -409,9 +480,21 @@
                }
                break;
            case 1:
                // 本部门经理审核
                User user = userService.selectById(priOnline2.getUserId());
                User manager = userService.getDeptManager(getHostId(), user.getDeptId());
                // 本部门经理审核  节点负责人
                Plan plan = planService.selectById(priOnline2.getItemId());
                PlanType planType = planTypeService.selectById(plan.getPlanType());
                ProcessPermissions processPermissions = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 5).eq("process", "2-"+planType.getType()));//2:报价流程
                User manager = userService.selectById(processPermissions.getUserId());       // 获取报价流程节点2确认人
//                User manager = new User();
//                try{
//                    manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 获取部门领导
//                }catch (Exception e){
//                    manager = user;
//                }
                if (manager.getId().equals(getUserId())) {
                    // 修改 settle 步骤数据
@@ -423,7 +506,7 @@
                                break;
                            case 2:
                                dto.setCurr(Boolean.TRUE);
                                dto.setMsg("部门经理" + manager.getNickname() + "审批通过");
                                dto.setMsg(manager.getNickname() + "审批通过");
                                dto.setTime(DateUtils.convert(now));
                                break;
                            default:
@@ -467,6 +550,7 @@
                priOnline2.setSettleMsg(JSON.toJSONString(list2));
                // 修改规划单状态
                priOnline2.setSettle(3);  // 审批通过
                priOnline2.setStatus(1);
                priOnline2.setUpdateTime(new Date());
                if (!priOnline2Service.updateById(priOnline2)) {