/**
*
*/
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;
}
}