中扬CRM客户关系管理系统
LSH
2023-10-09 064e2b95e2a88f9679a1834e4dec95038c0482ff
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);
@@ -372,8 +438,12 @@
        Date now = new Date();
        switch (priOnline2.getSettle()) {
            case 0:
                User user2 = userService.selectById(priOnline2.getUserId());
                User manager1 = userService.getDeptManager(getHostId(), user2.getDeptId());
                // 本部门经理审核  节点负责人
                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:报价流程
                User manager1 = userService.selectById(processPermissions1.getUserId());       // 获取报价流程节点2确认人
                if (Cools.isEmpty(getUser())) {
                    return R.error("抱歉,您没有提交的权限");
@@ -409,9 +479,19 @@
                }
                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 +503,7 @@
                                break;
                            case 2:
                                dto.setCurr(Boolean.TRUE);
                                dto.setMsg("部门经理" + manager.getNickname() + "审批通过");
                                dto.setMsg(manager.getNickname() + "审批通过");
                                dto.setTime(DateUtils.convert(now));
                                break;
                            default:
@@ -467,10 +547,16 @@
                priOnline2.setSettleMsg(JSON.toJSONString(list2));
                // 修改规划单状态
                priOnline2.setSettle(3);  // 审批通过
                priOnline2.setStatus(1);
                priOnline2.setUpdateTime(new Date());
                if (!priOnline2Service.updateById(priOnline2)) {
                    throw new CoolException("确认失败,请联系管理员");
                }
                try{
                    priQuoteAdd(priOnline2.getId(),plannerId);
                }catch (Exception e){
                    return R.error("自动生成报价单失败");
                }
                break;
            default:
@@ -479,4 +565,70 @@
        return R.ok("审批成功");
    }
    public void priQuoteAdd(Long priOnlineId,Long priType){
        Pri pri = null;
        if (priType==1L){
            pri = priService.selectById(114);
        }else {
            pri = priService.selectById(115);
        }
        PriOnline2 priOnline2 = priOnline2Service.selectById(priOnlineId);
        PriQuote priQuote = new PriQuote();
        priQuote.setCreateTime(new Date());
        priQuote.setTitle(pri.getTitle());
        priQuote.setTemplateName(priOnline2.getTemplateName());
        priQuote.setSheetData(pri.getSheetData());
        priQuote.setPriOnlineId(priOnlineId);
        priQuote.setItemId(priOnline2.getItemId());
        priQuote.setOrderNum(priOnline2.getOrderNum());
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
        priQuote.setInOrderNum(format.format(new Date()));
        //创建人员
        priQuote.setUserId(getUserId());
        //更新人员
        priQuote.setUpdateUserId(getUserId());
        //所属部门
        priQuote.setDeptId(getDeptId());
        //更新时间
        priQuote.setUpdateTime(new Date());
        //模板
        Integer i = priType == 1L ? 1 : 2;
        priQuote.setTemplate(i.toString());
        //业务员
        Plan plan = planService.selectById(priQuote.getItemId());
        priQuote.setMemberId(plan.getUserId());
        //设置项目流程
        plan.setStep(5);
//        priQuote.setForm(JSON.toJSONString(map));     // 自定义表单内容
        priQuote.setSettle(1);  // 1.开始
        User manager = new User();
        try{
            manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 获取部门领导
        }catch (Exception e){
            manager = getUser();
        }
        ProcessPermissions processPermissions = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 2).eq("process", "3-1"));//2:报价流程
        User president = userService.selectById(processPermissions.getUserId());       // 获取报价流程节点3-1确认人
        priQuote.setSettleMsg(JSON.toJSONString(SettleDto.initPriQuote(plan, manager,president,getUser())));
        planService.updateById(plan);
        priQuoteService.insert(priQuote);
    }
    @PostMapping(value = "/priOnline2/priQuoteAdd/list/auth")
    @ManagerAuth
    public R priOnline2priQuoteAdd(@RequestParam Long planId){
        List<KeyValueVo> vos = new ArrayList<>();
        vos.add(new KeyValueVo("报价模板1", 1L));
        vos.add(new KeyValueVo("报价模板2", 2L));
        return R.ok().add(vos);
    }
}