二进制的奇妙用法

/**
 * 
 */
package com.daqi.core.utils;


import java.util.ArrayList;
import java.util.List;


import com.daqi.core.constant.PermissionConstant;
import com.daqi.mos.permission.dto.BitwiseDto;
import com.daqi.mos.role.vo.Basepower;

 

/**

*根据权限值转为int类型进行数据库存储

* @ClassName: BitwiseUtil
* @Description: 权限值位运算Util
* @author ssq
* @date 2018年3月12日 下午4:00:15
*/
public class BitwiseUtil {

/**
* 根据勾选的权限转换成对应的权限int值
* @param basepowerList
* @return
* @throws Exception 异常
*/
public static BitwiseDto getCodes(List<Basepower> basepowerList)  throws Exception {
BitwiseDto bitwiseDto = new BitwiseDto();
int twoNum1 = 0;
int twoNum2 = 0;
for(Basepower basepower : basepowerList){
String baseauthcode = basepower.getBaseoptvalue();
switch (baseauthcode) {
case PermissionConstant.PERMISSION_WORKBENCH_LOGISTICS:
twoNum2 += 1 << 8;
break;
case PermissionConstant.PERMISSION_WORKBENCH_SALE:
twoNum2 += 1 << 7;
break;
case PermissionConstant.PERMISSION_WORKBENCH_PURCHASE:
twoNum2 += 1 << 6;
break;
case PermissionConstant.PERMISSION_WORKBENCH_STORAGE:
twoNum2 += 1 << 5;
break;
case PermissionConstant.PERMISSION_WORKBENCH_FINANCE:
twoNum2 += 1 << 4;
break;
case PermissionConstant.PERMISSION_WORKBENCH_MANAGE:
twoNum2 += 1 << 3;
break;
case PermissionConstant.PERMISSION_WORKBENCH_PERSONNEL:
twoNum2 += 1 << 2;
break;
case PermissionConstant.PERMISSION_WORKBENCH_ENGINEERING:
twoNum2 += 1 << 1;
break;
case PermissionConstant.PERMISSION_WORKBENCH_BUSINESS:
twoNum2 += 1 << 0;
break;
case PermissionConstant.PERMISSION_BUSINESS_DEALINGS:
twoNum1 += 1 << 25;
break;
case PermissionConstant.PERMISSION_NEW_PERSONNEL:
twoNum1 += 1 << 24;
break;
case PermissionConstant.PERMISSION_PERSONNEL_EVALUATION:
twoNum1 += 1 << 23;
break;
case PermissionConstant.PERMISSION_TRAINING_RECORD:
twoNum1 += 1 << 22;
break;
case PermissionConstant.PERMISSION_QUALIFICATION_RECORD:
twoNum1 += 1 << 21;
break;
case PermissionConstant.PERMISSION_ATTENDANCERECORD:
twoNum1 += 1 << 20;
break;
case PermissionConstant.PERMISSION_PERSONNEL_MANAGEMENT:
twoNum1 += 1 << 19;
break;
case PermissionConstant.PERMISSION_DEVICE_LIST:
twoNum1 += 1 << 18;
break;
case PermissionConstant.PERMISSION_PROJECT_CENTER:
twoNum1 += 1 << 17;
break;
case PermissionConstant.PERMISSION_DEVICE_CENTER:
twoNum1 += 1 << 16;
break;
case PermissionConstant.PERMISSION_BUSINESS_SERVICEVALUATION:
twoNum1 += 1 << 15;
break;
case PermissionConstant.PERMISSION_BUSINESS_DISMANTLEDEVICE:
twoNum1 += 1 << 14;
break;
case PermissionConstant.PERMISSION_BUSINESS_DEVICEMAINTAIN:
twoNum1 += 1 << 13;
break;
case PermissionConstant.PERMISSION_BUSINESS_DECIXEHIGH:
twoNum1 += 1 << 12;
break;
case PermissionConstant.PERMISSION_BUSINESS_MAINTENANCE:
twoNum1 += 1 << 11;
break;
case PermissionConstant.PERMISSION_BUSINESS_HIRE:
twoNum1 += 1 << 10;
break;
case PermissionConstant.PERMISSION_BUSINESS_UPDATEOTHER:
twoNum1 += 1 << 9;
break;
case PermissionConstant.PERMISSION_BUSINESS_UPDATECONFIGE:
twoNum1 += 1 << 8;
break;
case PermissionConstant.PERMISSION_BUSINESS_CONFIDE:
twoNum1 += 1 << 7;
break;
case PermissionConstant.PERMISSION_BUSINESS_INSTALLATION:
twoNum1 += 1 << 6;
break;
case PermissionConstant.PERMISSION_BUSINESS_EQUIPMENT:
twoNum1 += 1 << 5;
break;
case PermissionConstant.PERMISSION_BUSINESS_CMMUNICATION:
twoNum1 += 1 << 4;
break;
case PermissionConstant.PERMISSION_BASE_SELECT:
twoNum1 += 1 << 3;
break;
case PermissionConstant.PERMISSION_BASE_DEL:
twoNum1 += 1 << 2;
break;
case PermissionConstant.PERMISSION_BASE_UPDATE:
twoNum1 += 1 << 1;
break;
case PermissionConstant.PERMISSION_BASE_ADD:
twoNum1 += 1 << 0;
break;
}
}
bitwiseDto.setBusAndOpeCode(twoNum1);
bitwiseDto.setModuleCode(twoNum2);
return bitwiseDto;
}

/**
* 根据权限值转换成对应的权限code

* @param busAndOpeCode 业务及操作权限值
* @param moduleCode 模块权限值
* @return 
* @throws Exception 异常
*/
public static List<Basepower> getBasepowerList(int busAndOpeCode, int moduleCode)  throws Exception {
List<Basepower> basepowerList = new ArrayList<Basepower>();
String busAndOpeCodeStr = Integer.toBinaryString(busAndOpeCode);
// System.out.println("busAndOpeCodeStr : " + busAndOpeCodeStr + "字符串长度 : " + busAndOpeCodeStr.length());
String moduleCodeStr = Integer.toBinaryString(moduleCode);
// System.out.println("moduleCodeStr : " + moduleCodeStr + "字符串长度 : " + moduleCodeStr.length() );
String[] busAndOpeCodeArray = busAndOpeCodeStr.split("");
//      System.out.println("字符串转化为数组:" + busAndOpeCodeArray + "数组长度 :" + busAndOpeCodeArray.length);
//      System.out.println("字符串转化为数组:" + busAndOpeCodeArray + "数组长度 :" + busAndOpeCodeArray.length);
        String[] moduleCodeArray = moduleCodeStr.split("");  
//      System.out.println("字符串转化为数组:" + moduleCodeArray + "数组长度 :" + moduleCodeArray.length);
        
        // 1.先判断code是否等于0
        // 2.转换成二进制
        // 3.
        for(int i = 1; i <= busAndOpeCodeArray.length; i++){
        String numStr = busAndOpeCodeArray[busAndOpeCodeArray.length-i];
        if(!"".equals(numStr) && numStr != null){
        int num = Integer.valueOf(numStr);
        if(num == 1){
        String code = "";
        if(i == 1){
        code = PermissionConstant.PERMISSION_BASE_ADD;
        }
        if(i == 2){
        code = PermissionConstant.PERMISSION_BASE_UPDATE;
        }
        if(i == 3){
        code = PermissionConstant.PERMISSION_BASE_DEL;
        }
        if(i == 4){
        code = PermissionConstant.PERMISSION_BASE_SELECT;
        }
        if(i == 5){
        code = PermissionConstant.PERMISSION_BUSINESS_CMMUNICATION;
        }
        if(i == 6){
        code = PermissionConstant.PERMISSION_BUSINESS_EQUIPMENT;
        }
        if(i == 7){
        code = PermissionConstant.PERMISSION_BUSINESS_INSTALLATION;
        }
        if(i == 8){
        code = PermissionConstant.PERMISSION_BUSINESS_CONFIDE;
        }
        if(i == 9){
        code = PermissionConstant.PERMISSION_BUSINESS_UPDATECONFIGE;
        }
        if(i == 10){
        code = PermissionConstant.PERMISSION_BUSINESS_UPDATEOTHER;
        }
        if(i == 11){
        code = PermissionConstant.PERMISSION_BUSINESS_HIRE;
        }
        if(i == 12){
        code = PermissionConstant.PERMISSION_BUSINESS_MAINTENANCE;
        }
        if(i == 13){
        code = PermissionConstant.PERMISSION_BUSINESS_DECIXEHIGH;
        }
        if(i == 14){
        code = PermissionConstant.PERMISSION_BUSINESS_DEVICEMAINTAIN;
        }
        if(i == 15){
        code = PermissionConstant.PERMISSION_BUSINESS_DISMANTLEDEVICE;
        }
        if(i == 16){
        code = PermissionConstant.PERMISSION_BUSINESS_SERVICEVALUATION;
        }
        if(i == 17){
        code = PermissionConstant.PERMISSION_DEVICE_CENTER;
        }
        if(i == 18){
        code = PermissionConstant.PERMISSION_PROJECT_CENTER;
        }
        if(i == 19){
        code = PermissionConstant.PERMISSION_DEVICE_LIST;
        }
        if(i == 20){
        code = PermissionConstant.PERMISSION_PERSONNEL_MANAGEMENT;
        }
        if(i == 21){
        code = PermissionConstant.PERMISSION_ATTENDANCERECORD;
        }
        if(i == 22){
        code = PermissionConstant.PERMISSION_QUALIFICATION_RECORD;
        }
        if(i == 23){
        code = PermissionConstant.PERMISSION_TRAINING_RECORD;
        }
        if(i == 24){
        code = PermissionConstant.PERMISSION_PERSONNEL_EVALUATION;
        }
        if(i == 25){
        code = PermissionConstant.PERMISSION_NEW_PERSONNEL;
        }
        if(i == 26){
        code = PermissionConstant.PERMISSION_BUSINESS_DEALINGS;
        }
        Basepower basepower = new Basepower();
        basepower.setBaseoptvalue(code);
        basepowerList.add(basepower);
        }
        }
        else{
        }
        }
        for(int i = 1; i <= moduleCodeArray.length; i++){
        String numStr = moduleCodeArray[moduleCodeArray.length-i];
        if(!"".equals(numStr) && numStr != null){
        int num = Integer.valueOf(numStr);
        if(num == 1){
        String code = "";
        if(i == 1){
        code = PermissionConstant.PERMISSION_WORKBENCH_BUSINESS;
        }
        if(i == 2){
        code = PermissionConstant.PERMISSION_WORKBENCH_ENGINEERING;
        }
        if(i == 3){
        code = PermissionConstant.PERMISSION_WORKBENCH_PERSONNEL;
        }
        if(i == 4){
        code = PermissionConstant.PERMISSION_WORKBENCH_MANAGE;
        }
        if(i == 5){
        code = PermissionConstant.PERMISSION_WORKBENCH_FINANCE;
        }
        if(i == 6){
        code = PermissionConstant.PERMISSION_WORKBENCH_STORAGE;
        }
        if(i == 7){
        code = PermissionConstant.PERMISSION_WORKBENCH_PURCHASE;
        }
        if(i == 8){
        code = PermissionConstant.PERMISSION_WORKBENCH_SALE;
        }
        if(i == 9){
        code = PermissionConstant.PERMISSION_WORKBENCH_LOGISTICS;
        }
        Basepower basepower = new Basepower();
        basepower.setBaseoptvalue(code);
        basepowerList.add(basepower);
        }
        }
        else{
//        System.out.println("对应code : " + i + "无");
        }
        }
return basepowerList;
}



/**

* @Date 2018年3月16日 
*@Description: 传入两个权限值获取权限操作码集合
* @author ssq
* @param int code, int moduleCode
* @return
*/
public static List<String> getPermissionList(int code, int moduleCode) throws Exception{
List<Basepower> basepowerList = getBasepowerList(code, moduleCode);
ArrayList<String> arrayList = new ArrayList<String>();
for (Basepower basepower : basepowerList) {
if (null !=basepower ) {
arrayList.add(basepower.getBaseoptvalue());
}
}

return arrayList;
}
}






 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值