package cn.flightfeather.thirdappmodule.util; import android.annotation.SuppressLint; import com.ping.greendao.gen.DaoSession; import com.ping.greendao.gen.DomainitemDao; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Locale; import cn.flightfeather.thirdappmodule.R; import cn.flightfeather.thirdappmodule.bean.entity.Domainitem; /** * Created by linli on 2018/1/25. */ public class CommonUtils { public static List getDomainItemByCalalogGuid(DaoSession daoSession, String guid) { return daoSession.getDomainitemDao().queryBuilder() .where(DomainitemDao.Properties.Dcguid.eq(guid)) .orderAsc(DomainitemDao.Properties.Index).list(); } public static HashMap getDomainItemMapByCalalogGuid(DaoSession daoSession, String guid) { HashMap map = new HashMap<>(); List list = daoSession.getDomainitemDao().queryBuilder() .where(DomainitemDao.Properties.Dcguid.eq(guid)) .orderAsc(DomainitemDao.Properties.Index).list(); for (Domainitem item : list) { map.put(Byte.parseByte(item.getValue()), item); } return map; } // 获得本周一0点时间 @SuppressLint("WrongConstant") public static Date getTimesWeekmorning() { Calendar cal = Calendar.getInstance(); cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); return cal.getTime(); } // 获得本周日24点时间 public static Date getTimesWeeknight() { Calendar cal = Calendar.getInstance(); cal.setTime(getTimesWeekmorning()); cal.add(Calendar.WEEK_OF_MONTH, 1); cal.add(Calendar.SECOND, -1); return cal.getTime(); } // 获得上周一0点时间 public static Date getTimesLastWeekmorning() { Calendar cal = Calendar.getInstance(); cal.setTime(getTimesWeekmorning()); cal.add(Calendar.WEEK_OF_MONTH, -1); return cal.getTime(); } // 获得上周日24点时间 public static Date getTimesLastWeeknight() { Calendar cal = Calendar.getInstance(); cal.setTime(getTimesWeeknight()); cal.add(Calendar.WEEK_OF_MONTH, -1); return cal.getTime(); } // 获得本月第一天0点时间 public static Date getTimesMonthmorning() { Calendar cal = Calendar.getInstance(); cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0); cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH)); return cal.getTime(); } // 获得本月最后一天24点时间 public static Date getTimesMonthnight() { Calendar cal = Calendar.getInstance(); cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0); cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); cal.set(Calendar.HOUR_OF_DAY, 24); cal.add(Calendar.SECOND, -1); return cal.getTime(); } // 获得上月第一天0点时间 public static Date getTimesLastMonthmorning() { Calendar cal = Calendar.getInstance(); cal.setTime(getTimesMonthmorning()); cal.add(Calendar.MONTH, -1); return cal.getTime(); } // 获得上月最后一天24点时间 public static Date getTimesLastMonthnight() { Calendar cal = Calendar.getInstance(); cal.setTime(getTimesMonthnight()); cal.add(Calendar.MONTH, -1); return cal.getTime(); } // 获得本季度第一天0点时间 public static Date getTimesSeasonmorning() { Calendar cal = Calendar.getInstance(); int currentMonth = cal.get(Calendar.MONTH) + 1; cal.setTime(getTimesMonthmorning()); if (currentMonth >= 1 && currentMonth <= 3) cal.set(Calendar.MONTH, 0); else if (currentMonth >= 4 && currentMonth <= 6) cal.set(Calendar.MONTH, 3); else if (currentMonth >= 7 && currentMonth <= 9) cal.set(Calendar.MONTH, 6); else if (currentMonth >= 10 && currentMonth <= 12) cal.set(Calendar.MONTH, 9); return cal.getTime(); } // 获得本季度最后一天24点时间 public static Date getTimesSeasonnight() { Calendar cal = Calendar.getInstance(); int currentMonth = cal.get(Calendar.MONTH) + 1; cal.setTime(getTimesMonthnight()); if (currentMonth >= 1 && currentMonth <= 3) { cal.set(Calendar.MONTH, 2); cal.set(Calendar.DATE, 31); } else if (currentMonth >= 4 && currentMonth <= 6) { cal.set(Calendar.MONTH, 5); cal.set(Calendar.DATE, 30); } else if (currentMonth >= 7 && currentMonth <= 9) { cal.set(Calendar.MONTH, 8); cal.set(Calendar.DATE, 30); } else if (currentMonth >= 10 && currentMonth <= 12) { cal.set(Calendar.MONTH, 11); cal.set(Calendar.DATE, 31); } return cal.getTime(); } // 获得上季度第一天0点时间 public static Date getTimesLastSeasonmorning() { Calendar cal = Calendar.getInstance(); cal.setTime(getTimesSeasonmorning()); int currentMonth = cal.get(Calendar.MONTH) + 1; if (currentMonth >= 1 && currentMonth <= 3) { cal.add(Calendar.YEAR, -1); cal.set(Calendar.MONTH, 9); } else if (currentMonth >= 4 && currentMonth <= 6) cal.set(Calendar.MONTH, 0); else if (currentMonth >= 7 && currentMonth <= 9) cal.set(Calendar.MONTH, 3); else if (currentMonth >= 10 && currentMonth <= 12) cal.set(Calendar.MONTH, 7); return cal.getTime(); } // 获得上季度最后一天24点时间 public static Date getTimesLastSeasonnight() { Calendar cal = Calendar.getInstance(); cal.setTime(getTimesSeasonnight()); int currentMonth = cal.get(Calendar.MONTH) + 1; if (currentMonth >= 1 && currentMonth <= 3) { cal.add(Calendar.YEAR, -1); cal.set(Calendar.MONTH, 11); cal.set(Calendar.DATE, 31); } else if (currentMonth >= 4 && currentMonth <= 6) { cal.set(Calendar.MONTH, 2); cal.set(Calendar.DATE, 31); } else if (currentMonth >= 7 && currentMonth <= 9) { cal.set(Calendar.MONTH, 5); cal.set(Calendar.DATE, 30); } else if (currentMonth >= 10 && currentMonth <= 12) { cal.set(Calendar.MONTH, 8); cal.set(Calendar.DATE, 30); } return cal.getTime(); } // 获得今年第一天0点时间 public static Date getCurrentYearStartTime() { Calendar cal = Calendar.getInstance(); cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0); cal.set(Calendar.DAY_OF_YEAR, cal.getActualMinimum(Calendar.YEAR)); return cal.getTime(); } // 获得今年最后一天24点时间 public static Date getCurrentYearEndTime() { Calendar cal = Calendar.getInstance(); cal.setTime(getCurrentYearStartTime()); cal.add(Calendar.YEAR, 1); cal.add(Calendar.SECOND, -1); return cal.getTime(); } // 获得去年第一天0点时间 public static Date getLastYearStartTime() { Calendar cal = Calendar.getInstance(); cal.setTime(getCurrentYearStartTime()); cal.add(Calendar.YEAR, -1); return cal.getTime(); } // 获得去年最后一天0点时间 public static Date getLastYearEndTime() { Calendar cal = Calendar.getInstance(); cal.setTime(getCurrentYearEndTime()); cal.add(Calendar.YEAR, -1); return cal.getTime(); } /** * 获取时间段文本 */ public static String getStartEndDate(Date startDate, Date endDate) { SimpleDateFormat format1 = new SimpleDateFormat("yyyy.MM.dd", Locale.CHINESE); String s = format1.format(startDate); String e = format1.format(endDate); String str = ""; try { if (s.substring(0, 4).equals(e.substring(0, 4))) { str = s + "-" + e.substring(5); } else { str = s + "-" + e; } } catch (Exception exception) { exception.printStackTrace(); } return str; } /** * 工作日查询 * * @param cal 日历对象 * @param isStartTime 是否为开始时间,若为开始时间,则工作日需加,若为结束时间,工作日需减 * @return cal 日历对象 */ public static Calendar findFirstWorkingDay(Calendar cal, boolean isStartTime) { int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK); if (!(dayOfWeek > 0 && dayOfWeek < 6)) { if (dayOfWeek == 0) { if (isStartTime) { cal.add(Calendar.DAY_OF_YEAR, 1); } else { cal.add(Calendar.DAY_OF_YEAR, -2); } } else { if (isStartTime) { cal.add(Calendar.DAY_OF_YEAR, 2); } else { cal.add(Calendar.DAY_OF_YEAR, -1); } } } return cal; } /** * 直辖市判断 * * @param s 省市名称 * @return 直辖市 返回 true; */ public static boolean isMDUCG(String s) { return s.equals("北京市") || s.equals("上海市") || s.equals("天津市") || s.equals("重庆市"); } public static String getAmapCityCode(String code) { String cityCode = null; if (code == null) return null; switch (code) { case "3100": cityCode = "021"; break; default: cityCode = "021"; } return cityCode; } public static boolean checkCellphone(String cellphone) { String regex = "^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\\d{8}$"; return cellphone.matches(regex); } /** * 验证固话号码 * * @param telephone * @return */ public static boolean checkTelephone(String telephone) { String regex = "^(0\\d{2}-\\d{8}(-\\d{1,4})?)|(0\\d{3}-\\d{7,8}(-\\d{1,4})?)$"; return telephone.matches(regex); } /** * 根据任务类型返回图标 * @param type 任务类型 * @return icon id */ public static int getIconByTaskType(String type){ switch (type){ case Constant.TASK_TYPE_1: // return R.drawable.icon_inspection_run; return R.drawable.icon_inspection_run_2; case Constant.TASK_TYPE_2: // return R.drawable.icon_uav; return R.drawable.icon_uav_2; case Constant.TASK_TYPE_3: return R.drawable.icon_patrol_check; case Constant.TASK_TYPE_4: return R.drawable.icon_law_support; case Constant.TASK_TYPE_5: return R.drawable.icon_monitor_operation; case Constant.TASK_TYPE_6: return R.drawable.icon_manage_operation; case Constant.TASK_TYPE_7: return R.drawable.icon_transform; case Constant.TASK_TYPE_8: return R.drawable.icon_manage; case Constant.TASK_TYPE_9: return R.drawable.icon_consult; case Constant.TASK_TYPE_99: return R.drawable.icon_others_scene; default: return 0; } } /** * 根据场景类型返回图标 * @param type 场景类型 * @return icon id */ public static int getIconBySceneType(String type) { switch (type) { case Constant.SCENE_TYPE_SITE: return R.drawable.icon_construction; case Constant.SCENE_TYPE_WHARF: return R.drawable.icon_wharf; case Constant.SCENE_TYPE_MIXING_PLANT: return R.drawable.icon_mixing_station; case Constant.SCENE_TYPE4: return R.drawable.icon_industrial; case Constant.SCENE_TYPE5: return R.drawable.icon_dining; case Constant.SCENE_TYPE6: return R.drawable.icon_car_service; case Constant.SCENE_TYPE7: return R.drawable.icon_dust; case Constant.SCENE_TYPE8: return R.drawable.icon_air_quality; case Constant.SCENE_TYPE9: return R.drawable.icon_road_dust; case Constant.SCENE_TYPE10: return R.drawable.icon_road; case Constant.SCENE_TYPE11: return R.drawable.icon_river; case Constant.SCENE_TYPE12: return R.drawable.icon_industrial_park; case Constant.SCENE_TYPE13: return R.drawable.icon_random_scene; case Constant.SCENE_TYPE99: return R.drawable.icon_others_scene; default: return 0; } } /** * 根据问题类型返回图标 * @param sceneType 场景类型 * @param type 问题类型 * @return */ public static int getIconByProblemType(String sceneType, String type) { if (sceneType.equals(Constant.SCENE_TYPE_SITE)) { switch (type) { case "1": return R.drawable.selector_button_problem_muck; case "2": return R.drawable.selector_button_problem_road; case "3": return R.drawable.selector_button_problem_vehicle; case "4": return R.drawable.selector_button_problem_dry_mortar_machine; case "5": return R.drawable.selector_button_problem_building_rubbish; case "6": return R.drawable.selector_button_problem_bulk_material; case "7": return R.drawable.selector_button_problem_protect; case "8": return R.drawable.selector_button_problem_dust_equipment; case "9": return R.drawable.selector_button_problem_attitude; case "10": return R.drawable.selector_button_problem_others; default: return R.drawable.selector_button_problem_others; } } else if (sceneType.equals(Constant.SCENE_TYPE_WHARF)) { switch (type) { case "1": return R.drawable.selector_button_problem_road; case "2": return R.drawable.selector_button_problem_vehicle; case "3": return R.drawable.selector_button_problem_bulk_material; case "4": return R.drawable.selector_button_problem_protect; case "5": return R.drawable.selector_button_problem_dust_equipment; case "6": return R.drawable.selector_button_problem_dedusting; case "7": return R.drawable.selector_button_problem_sewage; case "8": return R.drawable.selector_button_problem_attitude; default: return R.drawable.selector_button_problem_others; } } else if (sceneType.equals(Constant.SCENE_TYPE14)) { switch (type) { case "1": return R.drawable.selector_button_problem_road; case "2": return R.drawable.selector_button_problem_vehicle; case "3": return R.drawable.selector_button_problem_bulk_material; case "4": return R.drawable.selector_button_problem_protect; case "5": return R.drawable.selector_button_problem_dust_equipment; case "6": return R.drawable.selector_button_problem_dedusting; case "7": return R.drawable.selector_button_problem_sewage; case "8": return R.drawable.selector_button_problem_attitude; default: return R.drawable.selector_button_problem_others; } } return R.drawable.selector_button_problem_others; } public static String getProblemTypeGUID(String sceneType) { switch (sceneType) { case Constant.SCENE_TYPE_SITE: return Domain.DOMAINGUID_SITE_PROBLEM_TYPE; case Constant.SCENE_TYPE_WHARF: return Domain.DOMAINGUID_WHARF_PROBLEM_TYPE; case Constant.SCENE_TYPE_MIXING_PLANT: return Domain.DOMAINGUID_MIXING_PLANT_PROBLEM_TYPE; // FIXME: 2019/2/15 目前只有前三种类型在用 case Constant.SCENE_TYPE4: return Domain.DOMAINGUID_SITE_PROBLEM_TYPE; case Constant.SCENE_TYPE5: return Domain.DOMAINGUID_SITE_PROBLEM_TYPE; case Constant.SCENE_TYPE6: return Domain.DOMAINGUID_SITE_PROBLEM_TYPE; case Constant.SCENE_TYPE7: return Domain.DOMAINGUID_SITE_PROBLEM_TYPE; case Constant.SCENE_TYPE8: return Domain.DOMAINGUID_SITE_PROBLEM_TYPE; case Constant.SCENE_TYPE9: return Domain.DOMAINGUID_SITE_PROBLEM_TYPE; case Constant.SCENE_TYPE10: return Domain.DOMAINGUID_SITE_PROBLEM_TYPE; case Constant.SCENE_TYPE11: return Domain.DOMAINGUID_SITE_PROBLEM_TYPE; case Constant.SCENE_TYPE12: return Domain.DOMAINGUID_SITE_PROBLEM_TYPE; case Constant.SCENE_TYPE13: return Domain.DOMAINGUID_SITE_PROBLEM_TYPE; case Constant.SCENE_TYPE99: return Domain.DOMAINGUID_SITE_PROBLEM_TYPE; default: return Domain.DOMAINGUID_SITE_PROBLEM_TYPE; } } public static String getSubStr(String strData, int startIndex, String endIndexStr) { int endIndex = strData.indexOf(endIndexStr, startIndex); return strData.substring(startIndex, endIndex+1); } public static byte intToByte(int x) { return (byte) x; } }