package com.jiuqi.njt.util.login; import java.util.ArrayList; import java.util.List; import com.jiuqi.mobile.nigo.comeclose.bean.base.RoleClientModuleBean; import com.jiuqi.mobile.nigo.comeclose.bean.base.UserBean; import com.jiuqi.mobile.nigo.comeclose.bean.base.UserClientModuleBean; import com.jiuqi.mobile.nigo.comeclose.bean.base.UserRolesBean; import com.jiuqi.mobile.nigo.comeclose.manager.base.IRoleClientModuleManager; import com.jiuqi.mobile.nigo.comeclose.manager.base.IUserClientModuleManager; import com.jiuqi.mobile.nigo.comeclose.ws.client.ClientContext; import com.jiuqi.njt.data.MyApp; import com.jiuqi.njt.data.OptsharepreInterface; import com.jiuqi.njt.db.ModuleDBHelper; import com.jiuqi.njt.model.CModuleBean; import com.jiuqi.njt.util.Constants; import com.jiuqi.njt.util.ModuleUtil; import android.annotation.SuppressLint; import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.util.Log; /** * 根据roleGuid、角色Guid获取客户端角色模块和 用户模块 * @param roleGuid,guid * */ public class GetRoleAndUserModuleTask extends AsyncTask<Void, Void, List<RoleClientModuleBean>> { private MyApp application; private OptsharepreInterface sharePre; private List<RoleClientModuleBean> roleModuleList; private List<UserClientModuleBean> userNewModuleList; private Context context; private ModuleDBHelper dbHelper; /** * 是否需要更新角色模块数据 */ private boolean isUpDateRoleModule; /** * 是否获取数据成功 */ private boolean finish = false; private final static String TAG = "GetRoleAndUserModuleTask"; // private WriteFile writeFile = new WriteFile(TAG+ JqydDateUtil.getDateDayOne(new Date())); public GetRoleAndUserModuleTask(Context context,boolean isUpDateRoleModule) { super(); this.context = context; this.application = (MyApp) context.getApplicationContext(); this.isUpDateRoleModule = isUpDateRoleModule; sharePre = new OptsharepreInterface(context); dbHelper = new ModuleDBHelper(context); } @Override protected void onPreExecute() { super.onPreExecute(); Log.e(TAG, "onPreExecute"); } @Override protected List<RoleClientModuleBean> doInBackground(Void... arg0) { try { ClientContext context = application.getClientContext(); if (null == context) { context = ClientContext.getClientContext(Constants.SERVER_URL, sharePre.getPres("account"),sharePre.getPres("password")); application.setClientContext(context); } UserBean user = context.getUser(); List<UserRolesBean> rolesBeanList = user.getUserRolesBeans(); List<String> roleGuids = new ArrayList<String>(); for (UserRolesBean userRolesBean : rolesBeanList) { roleGuids.add(userRolesBean.getRoleGuid()); } if(isUpDateRoleModule){ //获取客户端角色模块 IRoleClientModuleManager roleManager = context.getManager(IRoleClientModuleManager.class); roleModuleList = roleManager.getRoleByRoleGuid(roleGuids); } //获取客户端用户模块 IUserClientModuleManager userManager = context.getManager(IUserClientModuleManager.class); userNewModuleList = userManager.getByUserGuid(context.getUser().getGuid()); finish = true; } catch (Exception e) { e.printStackTrace(); } return roleModuleList; } @Override protected void onPostExecute(List<RoleClientModuleBean> result) { super.onPostExecute(result); Log.e(TAG, "onPostExecute"); List<CModuleBean> cmoduleUserList = null ; //查询出数据库中保存的用户模块数据 List<CModuleBean> userOldModuleList = dbHelper.queryUserModule(sharePre.getPres("guid")); /** * 将角色数据进行类型转化,List<CModuleBean> */ cmoduleUserList= dbHelper.getModuleBeanFromUser(userNewModuleList); /** * 判断是不是更新用户模块数据 */ boolean updateUserModules = false ; //如果原来的用户模块数据是空,表示需要更新用户模块数据 if((null==userOldModuleList||userOldModuleList.size()<1)&&(null!=cmoduleUserList&&cmoduleUserList.size()>0)){ updateUserModules = true; }else{ //如果原来的模块数据大小小于现在的模块数据,表示需要更新用户模块数据 if(userOldModuleList.size()!=cmoduleUserList.size()){ updateUserModules = true; }else{ //如果原来的模块数据不等于现在的模块数据,表示需要更新用户模块数据 if(!userOldModuleList.equals(cmoduleUserList)){ updateUserModules = true; } } } if(updateUserModules){ dbHelper.deleteUserModule(); dbHelper.addUserModule(cmoduleUserList,sharePre.getPres("guid")); if(null==cmoduleUserList||cmoduleUserList.size()<1){ ModuleUtil moduleUtil = new ModuleUtil(); List<String> userModuleStrList = moduleUtil.getUserModuleDefalut(); cmoduleUserList = getCModuleBeanList(userModuleStrList); dbHelper.addUserModule(cmoduleUserList,sharePre.getPres("guid")); } } /** * 线程执行完毕 * 发送一个GetModuleBroatCastReceiver广播,通知Home1Activity数据已经获取可以取消提示框 * 需要等待2秒钟,等待首页加载完成后发送 */ new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(2000); Intent intent = new Intent(); intent.setAction("GetModuleBroatCastReceiver"); context.sendBroadcast(intent); Log.e(TAG, " context.sendBroadcast(intent);"); } catch (InterruptedException e) { e.printStackTrace(); } } }).start();; /** * 如果需要更新角色模块数据,并且获取数据成功 * 就删除原来的角色数据,并把新的角色数据存储到数据库中 */ if(isUpDateRoleModule && finish){ dbHelper.deleteRolseModule(); /** * 将角色数据进行类型转化,List<CModuleBean> */ List<CModuleBean> cmoduleRoleList = dbHelper.getModuleBeanFromRole(roleModuleList,sharePre.getPres("roleguid")); // if(null!=roleModuleList&&roleModuleList.size()>0){ // sharePre.putPres("roleguid", roleModuleList.get(0).getRoleGuid()); // } /** * 把新的角色数据存储到数据库中 */ dbHelper.addRoleModule(cmoduleRoleList); //如果用户模块为空,则设置默认显示角色模块的默认显示模块到用户模块表 if(cmoduleUserList==null || cmoduleUserList.size()<1){ for(CModuleBean bean :cmoduleRoleList){ if(bean.isDefaultDisplay()){ cmoduleUserList.add(bean); for(CModuleBean sbean :cmoduleRoleList){ if(sbean.getpCode() == bean.getCode()){ cmoduleUserList.add(sbean); } } } } } /** * 从数据库中查询用户的模块数据 * 如果用户的模块数据为空,就把从用户角色的默认显示模块存到用户模块表 */ userOldModuleList = dbHelper.queryUserModule(sharePre.getPres("guid")); if(null==userOldModuleList||userOldModuleList.size()==0){ dbHelper.deleteUserModule(); dbHelper.addUserModule(cmoduleUserList,sharePre.getPres("guid")); } } } // 把List<String>拆分再转换成List<CModule>集合的方法 @SuppressLint("NewApi") private List<CModuleBean> getCModuleBeanList(List<String> list) { List<CModuleBean> moduleBeanslist = new ArrayList<CModuleBean>(); CModuleBean cmBean; for (int i = 0; i < list.size(); i++) { String sigleModulestr = list.get(i); String[] strarray = sigleModulestr.split(","); cmBean = new CModuleBean(); cmBean.setCode(Integer.parseInt(strarray[0])); cmBean.setpCode(Integer.parseInt(strarray[1])); cmBean.setName(strarray[2]); cmBean.setImage(strarray[3]); if (strarray[4].equals("1")) { cmBean.setShow(true); } else { cmBean.setShow(false); } cmBean.setOrderNumber(Integer.parseInt(strarray[5])); cmBean.setLevel(Integer.parseInt(strarray[6])); cmBean.setTypeModule("1"); if (strarray[7].equals("1")) { cmBean.setDefaultDisplay(true); } else { cmBean.setDefaultDisplay(false); } cmBean.setUrl(""); cmBean.setRoleGuid(sharePre.getPres("roleguid")); moduleBeanslist.add(cmBean); } return moduleBeanslist; } }