中扬CRM客户关系管理系统
#
LSH
2023-11-29 1dc8012a1f0bb9e9a17ab1561b99ddce51d1a481
src/main/java/com/zy/crm/manager/controller/PlanController.java
@@ -55,7 +55,7 @@
    @Autowired
    private ProcessPermissionsService processPermissionsService;
    String PZH=" ————————————————— ";
    String PZH = " ————————————————— ";
    Integer PBN = 6;
@@ -88,10 +88,10 @@
                  @RequestParam(required = false, value = "dept_id") Long deptId,
                  @RequestParam(required = false, value = "user_id") Long userId) {
        Long director = null;
        if (deptId==null && userId == null){
            if (getRole().getId()==3){
        if (deptId == null && userId == null) {
            if (getRole().getId() == 3) {
                userId = getUserId();
            }else if (getRole().getId()==2){
            } else if (getRole().getId() == 2) {
                deptId = getDeptId();
                userId = null;
            }
@@ -120,14 +120,14 @@
    @Transactional
    public R assistantPlanView(@RequestParam Long hostPlanId) {
        Plan plan = planService.selectById(hostPlanId);
        if (plan.getAssistantHostSign()==1){
        if (plan.getAssistantHostSign() == 1) {
            EntityWrapper<Plan> wrapper = new EntityWrapper<>();
            wrapper.eq("id",plan.getHostPlanId());
            wrapper.eq("id", plan.getHostPlanId());
            Page<Plan> planPage = planService.selectPage(new Page<>(1, 1), wrapper);
            return R.ok(planPage);
        }
        EntityWrapper<Plan> wrapper = new EntityWrapper<>();
        wrapper.eq("id",plan.getAssistantPlanId());
        wrapper.eq("id", plan.getAssistantPlanId());
        Page<Plan> planPage = planService.selectPage(new Page<>(1, 1), wrapper);
        return R.ok(planPage);
    }
@@ -156,7 +156,7 @@
            throw new CoolException("跟踪项目不存在");
        }
        if (!order.getDirector().equals(getUserId())){
        if (!order.getDirector().equals(getUserId())) {
            throw new CoolException("只允许跟踪项目负责人添加所选项目规划申请单");
        }
@@ -185,7 +185,7 @@
        PlanType planType = planTypeService.selectById(plan.getPlanType());
        if (planType.getType().equals(2)) {
            plan.setStatus2(0);
        }else {
        } else {
            plan.setStatus2(10);
        }
        User planLeader = planTypeService.findPlanLeader(planType);
@@ -193,14 +193,14 @@
        // 获取业务员
        List<String> initNames = new ArrayList<>();
        initNames.add("创建了审批");
        if (!planType.getFlag().equals("增补")){
        if (!planType.getFlag().equals("增补")) {
            initNames.add("售前审核");
            initNames.add("规划员审核");
        }
        initNames.add("业务员确认");
        List<User> users = new ArrayList<>();
        users.add(getUser());
        if (!planType.getFlag().equals("增补")){
        if (!planType.getFlag().equals("增补")) {
            users.add(planLeader);
            users.add(new User());
        }
@@ -208,9 +208,9 @@
//        plan.setSettleMsg(JSON.toJSONString(SettleDto.init(plan, manager, planLeader)));
        plan.setSettleMsg(JSON.toJSONString(SettleDto.InItFlowPathTwo(users, initNames, users.size())));
        plan.setSettleSize(users.size());
        if (users.size()>1){
        if (users.size() > 1) {
            plan.setDirector(users.get(1).getId());
        }else {
        } else {
            plan.setDirector(getUserId());
        }
@@ -225,8 +225,8 @@
        if (!planFollService.insert(planFoll)) {
            throw new CoolException("保持失败,请重试");
        }
        if (users.size()>1 && !users.get(1).getId().equals(getUserId())){
            if (!smsCodeService.sendSmsCodeText(users.get(1).getMobile(), PhoneCodeTypeParam.ALIYUN_M1ABAC630E,getUserId())) {
        if (users.size() > 1 && !users.get(1).getId().equals(getUserId())) {
            if (!smsCodeService.sendSmsCodeText(users.get(1).getMobile(), PhoneCodeTypeParam.ALIYUN_M1ABAC630E, getUserId())) {
                return R.ok("创建成功但短信发送失败!");
            }
        }
@@ -238,18 +238,18 @@
    @Transactional
    public R assistantPlanAdd(@RequestParam Long hostPlanId) {
        Plan hostPlan = planService.selectById(hostPlanId);
        if (!getUserId().equals(hostPlan.getUserId())){
        if (!getUserId().equals(hostPlan.getUserId())) {
            return R.error("请联系业务员操作");
        }
        if (hostPlan.getAssistantHostSign()!=0){
        if (hostPlan.getAssistantHostSign() != 0) {
            return R.error("此规划单不需要创建副流程");
        }
        PlanType planType2 = planTypeService.selectById(hostPlan.getPlanType());
        if (planType2.getType()!=2){
        if (planType2.getType() != 2) {
            return R.error("此规划单不需要创建副流程");
        }
        if (!Cools.isEmpty(hostPlan.getAssistantPlanId()) && hostPlan.getAssistantPlanId()!=0){
            return R.error("此规划单已存在副规划单,id为"+hostPlan.getAssistantPlanId());
        if (!Cools.isEmpty(hostPlan.getAssistantPlanId()) && hostPlan.getAssistantPlanId() != 0) {
            return R.error("此规划单已存在副规划单,id为" + hostPlan.getAssistantPlanId());
        }
        // pre
        Plan plan = new Plan(hostPlan);
@@ -264,7 +264,7 @@
            throw new CoolException("跟踪项目不存在");
        }
        if (!order.getDirector().equals(getUserId())){
        if (!order.getDirector().equals(getUserId())) {
            throw new CoolException("只允许跟踪项目负责人添加所选项目规划申请单");
        }
@@ -286,12 +286,12 @@
        plan.setAssistantHostSign(1);//副规划单
        User manager = new User();
        try{
        try {
            manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 获取部门领导
        }catch (Exception e){
        } catch (Exception e) {
            manager = getUser();
        }
        PlanType planType = new PlanType(hostPlan.getHostId(),1);//1:货架
        PlanType planType = new PlanType(hostPlan.getHostId(), 1);//1:货架
        User planLeader = planTypeService.findPlanLeader(planType);
        // 获取业务员
        List<String> initNames = new ArrayList<>();
@@ -307,9 +307,9 @@
//        plan.setSettleMsg(JSON.toJSONString(SettleDto.init(plan, manager, planLeader)));
        plan.setSettleMsg(JSON.toJSONString(SettleDto.InItFlowPathTwo(users, initNames, users.size())));
        plan.setSettleSize(users.size());
        if (users.size()>1){
        if (users.size() > 1) {
            plan.setDirector(users.get(1).getId());
        }else {
        } else {
            plan.setDirector(getUserId());
        }
@@ -336,16 +336,16 @@
        if (!planService.updateById(hostPlan)) {
            throw new CoolException("更新失败,请重试");
        }
        if (!smsCodeService.sendSmsCodeText(planLeader.getMobile(), PhoneCodeTypeParam.ALIYUN_M1ABAC630E,getUserId())) {
        if (!smsCodeService.sendSmsCodeText(planLeader.getMobile(), PhoneCodeTypeParam.ALIYUN_M1ABAC630E, getUserId())) {
            return R.ok("创建成功但短信发送失败!");
        }
        return R.ok("保存成功");
    }
   @RequestMapping(value = "/plan/update/auth")
   @ManagerAuth(memo = "更新规划申请单")
    @RequestMapping(value = "/plan/update/auth")
    @ManagerAuth(memo = "更新规划申请单")
    @Transactional
    public R update(@RequestParam Map<String, Object> param){
    public R update(@RequestParam Map<String, Object> param) {
//        String planNeed = null;
//        Integer id = null;
//        for (Map.Entry<String, Object> entry : param.entrySet()){
@@ -364,7 +364,7 @@
//                }
//            }
//        }
        if (Cools.isEmpty(param) || Cools.isEmpty(param.get("id"))){
        if (Cools.isEmpty(param) || Cools.isEmpty(param.get("id"))) {
            return R.error();
        }
//        List<String> planNeedbs = new ArrayList<>(Arrays.asList(planNeed.split("-")));
@@ -397,28 +397,28 @@
    @RequestMapping(value = "/plan/delete/auth")
    @ManagerAuth(memo = "删除规划申请单")
    public R delete(@RequestParam(value="ids[]") Long[] ids){
         for (Long id : ids){
             int priOnline2 = priOnline2Service.selectCount(new EntityWrapper<PriOnline2>().eq("item_id", id));
             if (priOnline2!=0){
                 return R.error("存在关联的核价单,禁止删除!!!");
             }
             Plan planA = planService.selectById(id);
             if (planA.getAssistantHostSign()==1){
                 Plan planB = planService.selectById(planA.getHostPlanId());
                 planB.setAssistantPlanId(0L);
                 planB.setHostPlanId(0L);
                 planB.setStatus2(0);
                 planService.updateById(planB);
             }else {
                 if (!Cools.isEmpty(planA.getAssistantPlanId()) && planA.getAssistantPlanId()!=0){
                     Plan planB = planService.selectById(planA.getAssistantPlanId());
                     if (!Cools.isEmpty(planB)){
                         return R.error("存在关联的副规划单,禁止删除!!! 副规划单ID:"+planB.getId());
                     }
                 }
             }
             planService.deleteById(id);
    public R delete(@RequestParam(value = "ids[]") Long[] ids) {
        for (Long id : ids) {
            int priOnline2 = priOnline2Service.selectCount(new EntityWrapper<PriOnline2>().eq("item_id", id));
            if (priOnline2 != 0) {
                return R.error("存在关联的核价单,禁止删除!!!");
            }
            Plan planA = planService.selectById(id);
            if (planA.getAssistantHostSign() == 1) {
                Plan planB = planService.selectById(planA.getHostPlanId());
                planB.setAssistantPlanId(0L);
                planB.setHostPlanId(0L);
                planB.setStatus2(0);
                planService.updateById(planB);
            } else {
                if (!Cools.isEmpty(planA.getAssistantPlanId()) && planA.getAssistantPlanId() != 0) {
                    Plan planB = planService.selectById(planA.getAssistantPlanId());
                    if (!Cools.isEmpty(planB)) {
                        return R.error("存在关联的副规划单,禁止删除!!! 副规划单ID:" + planB.getId());
                    }
                }
            }
            planService.deleteById(id);
        }
        return R.ok();
    }
@@ -449,35 +449,34 @@
    @RequestMapping(value = "/plan/download/file/auth")
//    @ManagerAuth
    public R downloadFile(@RequestParam("downloadUrl") String downloadUrl,HttpServletResponse response){
    public R downloadFile(@RequestParam("downloadUrl") String downloadUrl, HttpServletResponse response) {
//        System.out.println("---开始---");
//        MultipartFile
        try{
        try {
            String[] names = downloadUrl.split("com/");
            String name= names[1];
            String name = names[1];
//            ResponseEntity<Resource> resourceResponseEntity = FileSaveExampleUtil.downloadFile(downloadUrl, response);
//            return R.ok(resourceResponseEntity);
            String download = ossService.download(name);
            return R.ok().add(download);
        }catch (Exception e){
        } catch (Exception e) {
        }
        return R.error();
    }
    @PostMapping(value = "/plan/approval/auth")
    @ManagerAuth(memo = "审批申请单")
    public R approval(@RequestParam Long planId,
                      @RequestParam(required = false) Long plannerId){
                      @RequestParam(required = false) Long plannerId) {
        Plan plan = planService.selectById(planId);
        assert plan != null;
        User plannerUser = new User();
        Long nextUserId = getUserId();
        User director = userService.selectById(plan.getDirector());
        if (Cools.isEmpty(getUser()) || Cools.isEmpty(director)){
        if (Cools.isEmpty(getUser()) || Cools.isEmpty(director)) {
            return R.error("抱歉,您无需确认!!!");
        }
@@ -491,7 +490,7 @@
        for (SettleDto dto : list) {
            if (dto.getStep().equals(plan.getSettle())) {
                dto.setCurr(Boolean.TRUE);
            } else if (dto.getStep().equals(plan.getSettle()+1)) {
            } else if (dto.getStep().equals(plan.getSettle() + 1)) {
                dto.setCurr(Boolean.TRUE);
                if (Cools.isEmpty(dto.getMsg())) {
                    dto.setMsg(director.getNickname() + "审批通过");
@@ -500,15 +499,15 @@
                }
                dto.setTime(DateUtils.convert(new Date()));
            } else if (dto.getStep().equals(plan.getSettle() + 2)) {
                if (Cools.isEmpty(dto.getUserId())){
                if (Cools.isEmpty(dto.getUserId())) {
                    if (Cools.isEmpty(plannerId)) {
                        return R.error("指定规划员不能为空");
                    }
                    plannerUser = userService.selectById(plannerId);
                    if (Cools.isEmpty(plannerUser)){
                    if (Cools.isEmpty(plannerUser)) {
                        return R.error("未查到指定规划员账号");
                    }
                    nextUserId= plannerId;
                    nextUserId = plannerId;
                    plan.setPlanner(plannerId);
                    dto.setUserId(plannerId);
                    dto.setUsername(plannerUser.getNickname());
@@ -519,17 +518,17 @@
                    if (!planFollService.insert(planFoll)) {
                        throw new CoolException("审核失败,请联系管理员");
                    }
                }else {
                    nextUserId=dto.getUserId();
                } else {
                    nextUserId = dto.getUserId();
                }
            }
        }
        plan.setSettleMsg(JSON.toJSONString(list));
        // 修改规划单状态
        plan.setSettle(plan.getSettle()+1);  // 审批通过
        if (plan.getSettle().equals(plan.getSettleSize())){
        plan.setSettle(plan.getSettle() + 1);  // 审批通过
        if (plan.getSettle().equals(plan.getSettleSize())) {
            plan.setStatus(1);
            if (plan.getAssistantHostSign()==1){
            if (plan.getAssistantHostSign() == 1) {
                Plan planHost = planService.selectById(plan.getHostPlanId());
                planHost.setStatus2(1);
                planService.updateById(planHost);
@@ -542,14 +541,14 @@
        if (!planService.updateById(plan)) {
            throw new CoolException("审核失败,请联系管理员");
        }
        if (!plan.getSettle().equals(plan.getSettleSize())){
            if (!Cools.isEmpty(plannerId) && nextUserId.equals(plannerId)){
                if (!smsCodeService.sendSmsCodeText(plannerUser.getMobile(), PhoneCodeTypeParam.ALIYUN_M6F3C81FE3,getUserId())) {
        if (!plan.getSettle().equals(plan.getSettleSize())) {
            if (!Cools.isEmpty(plannerId) && nextUserId.equals(plannerId)) {
                if (!smsCodeService.sendSmsCodeText(plannerUser.getMobile(), PhoneCodeTypeParam.ALIYUN_M6F3C81FE3, getUserId())) {
                    return R.ok("审核成功但短信发送失败!");
                }
            }else {
            } else {
                User phoneUser = userService.selectById(nextUserId);
                if (!smsCodeService.sendSmsCodeText(phoneUser.getMobile(), PhoneCodeTypeParam.ALIYUN_M1ABAC630E,getUserId())) {
                if (!smsCodeService.sendSmsCodeText(phoneUser.getMobile(), PhoneCodeTypeParam.ALIYUN_M1ABAC630E, getUserId())) {
                    return R.ok("审核成功但短信发送失败!");
                }
            }
@@ -566,26 +565,26 @@
        Date now = new Date();
        Long directorId = plan.getDirector();
        User director = userService.selectById(directorId);
        if (!director.getId().equals(getUserId())){
        if (!director.getId().equals(getUserId())) {
            return R.error("抱歉,您没有审核的权限");
        }
        List<SettleDto> planDtos = JSON.parseArray(plan.getSettleMsg(), SettleDto.class);
        List<SettleDto> planDtoList = new ArrayList<>();
        boolean sign = true;
        for (SettleDto dto : planDtos) {
            if (dto.getStep().equals(2)){
            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()+PZH+DateUtils.convert(now)+" "+director.getNickname()+"回退审批");
            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() + PZH + DateUtils.convert(now) + " " + director.getNickname() + "回退审批");
                }
                sign = false;
            }
            if (sign){
                dto.setMsg(dto.getMsg()+PZH+DateUtils.convert(now)+" "+director.getNickname()+"回退审批");
            if (sign) {
                dto.setMsg(dto.getMsg() + PZH + DateUtils.convert(now) + " " + director.getNickname() + "回退审批");
            }
            planDtoList.add(dto);
@@ -602,7 +601,7 @@
    @PostMapping(value = "/plan/planner/list/auth")
    @ManagerAuth
    public R plannerList(@RequestParam Long planId){
    public R plannerList(@RequestParam Long planId) {
        Plan plan = planService.selectById(planId);
        assert plan != null;
@@ -611,7 +610,7 @@
        }
        // 查找规划组长
        PlanType planType = planTypeService.selectById(plan.getPlanType());
        if (plan.getAssistantHostSign()==1){
        if (plan.getAssistantHostSign() == 1) {
            planType.setType(1);
        }
        User planLeader = planTypeService.findPlanLeader(planType);
@@ -625,8 +624,8 @@
        List<User> users = userService.selectList(new EntityWrapper<User>().eq("dept_id", planLeader.getDeptId()));
        List<KeyValueVo> vos = new ArrayList<>();
        users.forEach(item -> vos.add(new KeyValueVo(String.valueOf(item.getNickname()), item.getId())));
        if (planType.getType().equals(2)){
            ProcessPermissions processPermissions= processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 101).eq("process", "1-1"));//2:核价流程
        if (planType.getType().equals(2)) {
            ProcessPermissions processPermissions = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 101).eq("process", "1-1"));//2:核价流程
            User manager = userService.selectById(processPermissions.getUserId());       // 获取核价流程节点1确认人
            vos.add(new KeyValueVo(String.valueOf(manager.getNickname()), manager.getId()));
        }
@@ -640,7 +639,7 @@
        wrapper.like("name", condition);
        Page<Plan> page = planService.selectPage(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (Plan plan : page.getRecords()){
        for (Plan plan : page.getRecords()) {
            Map<String, Object> map = new HashMap<>();
            map.put("id", plan.getId());
            map.put("value", plan.getName());
@@ -664,7 +663,7 @@
        }
        Page<Plan> page = planService.selectPage(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (Plan plan : page.getRecords()){
        for (Plan plan : page.getRecords()) {
            Map<String, Object> map = new HashMap<>();
            map.put("id", plan.getId());
//            map.put("value", plan.getName()+"---"+plan.getId());
@@ -679,55 +678,55 @@
    public R planQueryNameToRob(String condition) {
        EntityWrapper<Plan> wrapper = new EntityWrapper<>();
        wrapper.like("name", condition);
        wrapper.eq("status",1);
        wrapper.eq("assistant_host_sign",0);
        wrapper.eq("status", 1);
        wrapper.eq("assistant_host_sign", 0);
        List<ProcessPermissions> processPermissionsList = processPermissionsService.selectList(new EntityWrapper<ProcessPermissions>().eq("process_memo", 4).or().eq("process_memo", 5));//2:核价流程
        int type =0;
        for (ProcessPermissions processPermissions:processPermissionsList){
            if (getUserId().equals(processPermissions.getUserId())){
                type=PBN-processPermissions.getProcessMemo();
        int type = 0;
        for (ProcessPermissions processPermissions : processPermissionsList) {
            if (getUserId().equals(processPermissions.getUserId())) {
                type = PBN - processPermissions.getProcessMemo();
                break;
            }
        }
        if (type==0){
        if (type == 0) {
            return R.error("你不是核价员,无权接任务");
        }
        List<Long> typeList = new ArrayList<>();
        List<PlanType> planTypes = planTypeService.selectList(new EntityWrapper<PlanType>().eq("type", type));
        if (Cools.isEmpty(planTypes) || planTypes.size()==0){
        if (Cools.isEmpty(planTypes) || planTypes.size() == 0) {
            return R.ok();
        }
        for (PlanType planType : planTypes){
        for (PlanType planType : planTypes) {
            typeList.add(planType.getId());
        }
        wrapper.in("plan_type",typeList);
        wrapper.in("plan_type", typeList);
//        Page<Plan> page = planService.selectPage(new Page<>(0, 10), wrapper);
        List<Plan> plans = planService.selectList(wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
//        for (Plan plan : page.getRecords()){
        for (Plan plan : plans){
        for (Plan plan : plans) {
            User user = userService.selectById(plan.getUserId());
            Map<String, Object> map = new HashMap<>();
            map.put("id", plan.getId());
//            map.put("value", plan.getName()+"---"+plan.getId());
            map.put("value", plan.getName()+"---"+user.getNickname());
            map.put("value", plan.getName() + "---" + user.getNickname());
            result.add(map);
        }
        if (type==1){
        if (type == 1) {
            EntityWrapper<Plan> wrapper2 = new EntityWrapper<>();
            wrapper2.like("name", condition);
            wrapper2.eq("status",1);
            wrapper2.eq("assistant_host_sign",1);
            wrapper2.eq("status", 1);
            wrapper2.eq("assistant_host_sign", 1);
            List<Plan> plan2s = planService.selectList(wrapper2);
            for (Plan plan : plan2s){
            for (Plan plan : plan2s) {
                User user = userService.selectById(plan.getUserId());
                Map<String, Object> map = new HashMap<>();
                map.put("id", plan.getId());
//            map.put("value", plan.getName()+"---"+plan.getId());
                map.put("value", plan.getName()+"---"+user.getNickname());
                map.put("value", plan.getName() + "---" + user.getNickname());
                result.add(map);
            }
        }
@@ -738,7 +737,7 @@
    @ManagerAuth
    public R query(@RequestBody JSONObject param) {
        Wrapper<Plan> wrapper = new EntityWrapper<Plan>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
        if (null != planService.selectOne(wrapper)){
        if (null != planService.selectOne(wrapper)) {
            return R.parse(BaseRes.REPEAT).add(getComment(Plan.class, String.valueOf(param.get("key"))));
        }
        return R.ok();
@@ -771,8 +770,7 @@
        Workbook book = null;
        if (excelVersion == 2003) {
            book = new HSSFWorkbook(inStream);
        }
        else {  // 当 excel 是 2007 时
        } else {  // 当 excel 是 2007 时
            book = new XSSFWorkbook(inStream);
        }
        Sheet sheet = book.getSheetAt(0);
@@ -822,7 +820,7 @@
    @ManagerAuth
    @Transactional
    public R planFollowersAdd(@RequestParam("planId") Long planId,
                               @RequestParam("followerIds[]") Long[] followerIds) {
                              @RequestParam("followerIds[]") Long[] followerIds) {
        if (Cools.isEmpty(planId, followerIds)) {
            return R.parse(BaseRes.PARAM);
        }
@@ -842,7 +840,7 @@
    @RequestMapping(value = "/plan/followers/remove/auth")
    @ManagerAuth
    public R planFollowersRemove(@RequestParam("planId") Long planId,
                                  @RequestParam("userId") Long userId) {
                                 @RequestParam("userId") Long userId) {
        if (Cools.isEmpty(planId, userId)) {
            return R.parse(BaseRes.PARAM);
        }