jiaosong
2023-08-14 7fdf35a2364c8482c5056a1c932e1501518f943b
server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java
@@ -149,30 +149,40 @@
        }
        //只能查看当前根组织的数据
        pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId());
        pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId());
        PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
        //数据权限
        List<Integer> dataPermission = user.getDepartPermissionList();
        if(dataPermission!=null){
//            pageWrap.getModel().setUserId(user.getId());
//            pageWrap.getModel().setDepartIds(dataPermission);
           /*if(dataPermission.size() == 0){
                //只能看自己的(生产人员信息)
                //  pageWrap.getModel().setProUserId(user.getId());
                //需求变更 查看数据权限范围内的数据(走创建人或者生产人员为我数据权限范围内);
                pageWrap.getModel().setCreateUser(user.getId());
            }else{
                //否则走数据权限
                pageWrap.getModel().setDepartIds(dataPermission);
            }*/
        }
        List<SalaryStatisticsListVO> result = workorderRecordExtMapper.salaryStatistic(pageWrap.getModel());
        if(result!=null){
            List<DepartmentExtListVO> allDepartList = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_DEPART_LIST_KEY+user.getCompany().getId(),ArrayList.class);
            for(SalaryStatisticsListVO model : result){
                //查询生产人员姓名
                initProUser(user,model,allDepartList);
//                model.setUserName(initProUser(user,model.getUserId(),allDepartList));
                    model.setUserInfo(initProUser(user,model.getUserId(),allDepartList));
            }
        }
        return PageData.from(new PageInfo<>(result));
    }
    @Override
    public  PageData<UserSalaryListVO> userSalaryPage(PageWrap<QueryUserSalaryListDTO> pageWrap) {
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,您无权限进行该操作!");
        }
        //只能查看当前根组织的数据
        pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId());
        pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId());
        PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
        //数据权限
//        List<Integer> dataPermission = user.getDepartPermissionList();
        List<UserSalaryListVO> result = workorderRecordExtMapper.userSalaryPage(pageWrap.getModel());
        if(result!=null){
            List<DepartmentExtListVO> allDepartList = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_DEPART_LIST_KEY+user.getCompany().getId(),ArrayList.class);
            for(UserSalaryListVO model : result){
                //查询生产人员姓名
                model.setUserInfo(initProUser(user,model.getUserId(),allDepartList));
                if(Constants.formatBigdecimal4Float(model.getNum()).compareTo(new BigDecimal(0))>1){
                    model.setRate(Constants.formatBigdecimal4Float(model.getQualifiedNum()).divide(model.getNum()).multiply(new BigDecimal(100)));
                }
            }
        }
        return PageData.from(new PageInfo<>(result));
@@ -193,20 +203,28 @@
            data.setProcedureName(comp.getName()+"-"+dName);
        }
    }
    private void initProUser(LoginUserInfo user, SalaryStatisticsListVO data, List<DepartmentExtListVO> allDepartList) {
        if(data.getUserId() ==null){
            return;
    private UserBaseInfoVO initProUser(LoginUserInfo user, Integer userId, List<DepartmentExtListVO> allDepartList) {
        if(userId ==null){
            return null;
        }
        CompanyUser query=new CompanyUser();
        query.setUserId(data.getUserId());
        query.setUserId(userId);
        query.setRootDepartId(user.getRootDepartment().getId());
        query.setDeleted(Constants.ZERO);
        CompanyUser comp= companyUserExtMapper.selectOne(new QueryWrapper<>(query).last(" limit 1"));
        if(comp!=null){
            UserBaseInfoVO userinfo = new UserBaseInfoVO();
            DepartmentExtListVO d = departmentExtService.getModelById(user.getCompany().getId(),comp.getDepartmentId(),allDepartList);
            String dName =d==null?"":StringUtils.defaultString(d.getName(),"");
            data.setUserName(comp.getName()+"-"+dName);
            userinfo.setNameAndDepart (comp.getName()+"-"+dName);
            userinfo.setDepartId(d.getId());
            userinfo.setUserId(userId);
            userinfo.setUserName(comp.getName());
            userinfo.setDepartName(d.getName());
            return  userinfo;
        }
        return null;
    }
    @Override
    public List<WorkorderRecordExtListVO> findAll(QueryWorkorderRecordExtDTO pageWrap) {
@@ -1655,6 +1673,30 @@
    @Override
    public void exportUserSalary(PageWrap<QueryUserSalaryListDTO> pageWrap, HttpServletResponse response) {
        List<UserSalaryListVO> result=this.userSalaryPage(pageWrap).getRecords();
        for(UserSalaryListVO model : result) {
            if(model.getUserInfo()!=null){
                model.setUserName(model.getUserInfo().getUserName());
                model.setDepartName(model.getUserInfo().getDepartName());
            }
        }
        ExcelExporter.build(UserSalaryListVO.class).export(result, "员工绩效明细"+System.currentTimeMillis(), response);
    }
    @Override
    public void exportSalaryStatistics(PageWrap<QuerySalaryStatisticDTO> pageWrap, HttpServletResponse response){
        List<SalaryStatisticsListVO> result=this.salaryStatistic(pageWrap).getRecords();
        for(SalaryStatisticsListVO model : result) {
            if(model.getUserInfo()!=null){
                model.setUserName(model.getUserInfo().getUserName());
                model.setDepartName(model.getUserInfo().getDepartName());
            }
        }
        ExcelExporter.build(SalaryStatisticsListVO.class).export(result, "工资报表"+System.currentTimeMillis(), response);
    }
    @Override
    public void exportExcel(PageWrap<QueryWorkorderRecordExtDTO> pageWrap, HttpServletResponse response) {
        List<WorkorderRecordExtListVO> result=this.findPage(pageWrap).getRecords();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");