java工具类

package com.aisino.heb.utils.dao;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.regex.Matcher;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.dom4j.rule.Pattern;
import org.omg.CORBA.PUBLIC_MEMBER;

import jxl.Workbook;

/**
 *
 * @author zxs
 *
 */
@SuppressWarnings("unchecked")
public class Utils {

 public static String createID() {
  return UUID.randomUUID().toString();
 }

 public static Boolean isNotEmpty(Object obj){
  if(obj == null){
   return false;
  }else{
   return true;
  }
 }
 
 /**
  * 判断字符串是否为空值
  *
  * @param str
  * @return 不为空返回真 ,否则为假
  */
 public static Boolean isNotEmpty(String str) {

  if (str != null && !"".equals(str) && !"null".equals(str)) {
   return true;
  }
  return false;
 }

 /**
  * 转成utf-8
  *
  * @param str
  * @return
  */
 public static String toUTF8(String str) {
  try {
   return new String(str.getBytes("ISO-8859-1"), "utf-8");
  } catch (UnsupportedEncodingException e) {
   e.printStackTrace();
   return null;
  }
 }

 /**
  * 导出excel文件
  * @param request
  * @param response
  * @param fileName 文件名
  * @param headerNames 表头
  * @param bodyNames list每条记录的key值
  * @param list 其中放map对象
  * @return
  * @throws Exception
  */
 public static Boolean exportExcel(HttpServletRequest request,
   HttpServletResponse response,String fileName, String[] headerNames,String[] bodyNames, List list) {
  
  if (fileName == null) {
   fileName = "temp";
  }
  
  if(fileName==null||headerNames.length<1){
   return false;
  }
  
//  if (list == null || list.size()<=0) {
//   PrintWriter out;
//   try {
//    out = response.getWriter();
//    out.print("<script language='javascript'>alert('未找到符合条件的记录行!')");
//   } catch (IOException e) {
//    e.printStackTrace();
//   }
//   return false;
//  }
  
  
  fileName = fileName+".xls"; //2003-excel格式
  response.setCharacterEncoding("utf-8"); 
        response.setContentType("multipart/form-data");
        try {
   response.setHeader("Content-Disposition", "attachment;fileName="+URLEncoder.encode(fileName, "UTF-8"));
  } catch (UnsupportedEncodingException e1) {
   e1.printStackTrace();
   return false;
  }
  
  jxl.write.WritableWorkbook wwb = null;
       
        try {
   wwb = Workbook.createWorkbook(response.getOutputStream());
   jxl.write.WritableSheet ws = wwb.createSheet("TestSheet1", 0);
   
   //头内容
//   jxl.write.Label label00 = new jxl.write.Label(0, 0, "序号");
//   ws.addCell(label00);
   for (int i = 0; i < headerNames.length; i++) {
    jxl.write.Label label01 = new jxl.write.Label(i, 0, headerNames[i]);
    ws.addCell(label01);
   }
   
   //数据内容
   for (int i = 0; i < list.size(); i++) {
    //序号
    jxl.write.Label label0 = new jxl.write.Label(0, i+1, i+1+"");
    ws.addCell(label0);
    
    Map map =  (Map)list.get(i);
    for (int j = 0,k=1; j < bodyNames.length; j++) {
      Object object = map.get(bodyNames[j]);
      String val = "";
      if (object instanceof Timestamp) {
       Timestamp timestamp = (Timestamp)object;
       Date date = new Date();
       date.setTime(timestamp.getTime());
      java.text.SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
      val = simpleDateFormat.format(date);
     }else if (object instanceof Date) {
      java.text.SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
      val = simpleDateFormat.format(object);
     }else {
      val = String.valueOf(map.get(bodyNames[j])); //仓库代码
     }
      if (val == null || "null".equals(val)) {
      val = "";
     }
     jxl.write.Label label1 = new jxl.write.Label(k++, i+1, val);
     ws.addCell(label1);
    }
   }
   // 写入Excel工作表
   wwb.write();
   wwb.close();
  } catch (Exception e) {
   e.printStackTrace();
   return false;
  }finally{
//   try {
//    //wwb.close();
//   } catch (WriteException e) {
//    // TODO Auto-generated catch block
//    e.printStackTrace();
//   } catch (IOException e) {
//    // TODO Auto-generated catch block
//    e.printStackTrace();
//   }
  }
  
  return true;
 }
 
 public static String toUtf8(String target){
  String rst = "";
  try {
   rst = new String(target.getBytes("ISO-8859-1"),"utf-8");
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return rst;
 }
 
 /**
  * 得到一个字符串的数字和非数字字符串部分
  * @param string [0]:是数字部分
  * @return
  */
 public static String [] getNumAndChars(String string){
  String [] rst = new String[2];
  char [] charArrays = string.toCharArray();
  int size = charArrays.length - 1;
  char temp;
  while(size>=0){
   temp = charArrays[size];
   size--;
   if (String.valueOf(temp).matches("[0-9]+")) {
    continue;
   }else {
    break;
   }
  }
  size = size+2;
  rst[0] = string.substring(size);
  rst[1] = string.substring(0, size);
  return rst;
 }
 
 /**
  * 判断一个字符串,是否符合税号格式
  * @param string
  * @return
  */ 
 
 public static boolean isShuiHao(String str){ 
  return str.matches("^[A-Za-z0-9]*$"); 
 }
 


 /**
  * 判断一个字符串长度
  * @param string
  * @return
  */
    public static boolean getlength(String value) {
         int valueLength = 0;
         String chinese = "[\u0391-\uFFE5]";
         /* 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1 */
         for (int i = 0; i < value.length(); i++) {
             /* 获取一个字符 */
             String temp = value.substring(i, i + 1);
             /* 判断是否为中文字符 */
             if (temp.matches(chinese)) {
                 /* 中文字符长度为2 */
                 valueLength += 2;
             } else {
                 /* 其他字符长度为1 */
                 valueLength += 1;
             }
         }
         if (!(valueLength==15||valueLength==17||valueLength==18||valueLength==20)) {
    return false;
   }else {
    return true;
   }
        
    }
 
 
 /**
  * 判断一个字符串,只能为浮点数字
  * @param string
  * @return
  */ 
 
 public static boolean isNum(String str){ 
  return str.matches("[0-9]*(\\.?)[0-9]*"); 
 }

 
 /**
  * 判断一个字符串,如果最前面是0,计算开头有多少个0
  * @param string
  * @return
  */
 public static int getLingshuliang(String string){
  if (string.startsWith("0")) {
   char [] charArrays = string.toCharArray();
   int size = charArrays.length;
   char temp;
   int lingshuliang = 0;
   for (int i = 0; i < size; i++) {
    temp = charArrays[i];
    if (String.valueOf(temp).equals("0")) {
     lingshuliang++;
    }
   }
   return lingshuliang;
  }else {
   return 0;
  }
 }
 
 /**
  * 指定一个字符串,将这个字符串加上sl,返回结果
  * 字符串格式 :100  ,0001  , 10001
  * @param target
  * @param sl
  * @return
  */
 public static String getBulingjieguo(String target,int sl){
  //得到开头零的个数
  int linggeshu = getLingshuliang(target);//零的个数
  //int shuziLength = target.length();//这个数字字符串的长度
  int shuzhi = Integer.parseInt(target);//数值
//  int shuzhiLength = String.valueOf(shuzhi).length();//数值的长度
  int xiangjiarst = shuzhi + sl;//相加后的结果
  
  if (target.length() <= String.valueOf(xiangjiarst).length() || linggeshu == 0) {
   return String.valueOf(xiangjiarst);
  }
  
  //计算需要补几个零
  int bulinggeshu = linggeshu - (String.valueOf(xiangjiarst).length() - String.valueOf(shuzhi).length());
  String xiangjiaStr = String.valueOf(xiangjiarst);
  while(bulinggeshu > 0){
   bulinggeshu--;
   xiangjiaStr = "0" + xiangjiaStr;
  }
  
  return xiangjiaStr;
 }
 
 /**
  * 税号验证
  * @param value
  * @return
  */
// $.validator.addMethod("nsrsbh", function(value, element) {
//  return this.optional(element) || /^[0-9a-zA-Z]{15}$|^[0-9a-zA-Z]{17}$|^[0-9a-zA-Z]{20}$/.test(value);
// }, "Please specify a valid tax number");
 public static boolean iSnsrsbh(String str){
  return str.matches("[0-9a-zA-Z]{15}$|^[0-9a-zA-Z]{17}$|^[0-9a-zA-Z]{20}$"); 
 }
 /**
  * 相反数
  * @param value
  * @return
  */
 public static Double xiangfanshu(Double value){
  if (value > 0 ) {
   return -value;
  }
  return Math.abs(value);
 }
 
 

     final static int[] PARITYBIT = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' };
     final static int[] POWER_LIST = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10,
             5, 8, 4, 2 };

     /**
      * 身份证号是否基本有效
      *
      * @param s
      *            号码内容
      * @return 是否有效,null和""都是false
      */
     public static boolean isIdcard(String s) {
         if (s == null || (s.length() != 15 && s.length() != 18))
             return false;
         final char[] cs = s.toUpperCase().toCharArray();
         // (1)校验位数
         int power = 0;
         for (int i = 0; i < cs.length; i++) {// 循环比正则表达式更快
             if (i == cs.length - 1 && cs[i] == 'X')
                 break;// 最后一位可以是X或者x
             if (cs[i] < '0' || cs[i] > '9')
                 return false;
             if (i < cs.length - 1)
                 power += (cs[i] - '0') * POWER_LIST[i];
         }
         // (2)校验区位码
       
         // (3)校验年份
         String year = s.length() == 15 ? "19" + s.substring(6, 8) : s
                 .substring(6, 10);
         final int iyear = Integer.parseInt(year);
         if (iyear < 1900 || iyear > Calendar.getInstance().get(Calendar.YEAR)) {
             return false;// 1900年的PASS,超过今年的PASS
         }
         // (4)校验月份
         String month = s.length() == 15 ? s.substring(8, 10) : s.substring(10,
                 12);
         final int imonth = Integer.parseInt(month);
         if (imonth < 1 || imonth > 12)
             return false;
         // (5)校验天数
         String day = s.length() == 15 ? s.substring(10, 12) : s.substring(12,
                 14);
         final int iday = Integer.parseInt(day);
         if (iday < 1 || iday > 31)
             return false;
         // (6)校验一个合法的年月日
         if (!validate(iyear, imonth, iday))
             return false;
         // (7)校验“校验码”
         if (s.length() == 15)
             return true;
         return cs[cs.length - 1] == PARITYBIT[power % 11];
     }

     static boolean validate(int year, int month, int day) {
         //比如考虑闰月,大小月等
         return true;
     }


 
    /**  
         * 功能:设置地区编码  
          * @return Hashtable 对象  
          */   
        @SuppressWarnings("unchecked")    
         private static Hashtable GetAreaCode() {    
           Hashtable hashtable = new Hashtable();    
             hashtable.put("11", "北京");    
            hashtable.put("12", "天津");    
            hashtable.put("13", "河北");    
            hashtable.put("14", "山西");    
            hashtable.put("15", "内蒙古");    
            hashtable.put("21", "辽宁");    
            hashtable.put("22", "吉林");    
            hashtable.put("23", "黑龙江");    
            hashtable.put("31", "上海");    
            hashtable.put("32", "江苏");    
            hashtable.put("33", "浙江");    
            hashtable.put("34", "安徽");    
            hashtable.put("35", "福建");    
            hashtable.put("36", "江西");    
            hashtable.put("37", "山东");    
            hashtable.put("41", "河南");    
            hashtable.put("42", "湖北");    
            hashtable.put("43", "湖南");    
            hashtable.put("44", "广东");    
            hashtable.put("45", "广西");    
            hashtable.put("46", "海南");    
            hashtable.put("50", "重庆");    
            hashtable.put("51", "四川");    
            hashtable.put("52", "贵州");    
            hashtable.put("53", "云南");    
            hashtable.put("54", "西藏");    
            hashtable.put("61", "陕西");    
            hashtable.put("62", "甘肃");    
            hashtable.put("63", "青海");    
            hashtable.put("64", "宁夏");    
            hashtable.put("65", "新疆");    
            hashtable.put("71", "台湾");    
            hashtable.put("81", "香港");    
            hashtable.put("82", "澳门");    
            hashtable.put("91", "国外");    
            return hashtable;    
        }    

 /**
  * 递归截取上级部门代码
  * @return
  */
 
 public static void createParentBmdmsByBmdm(String bmdm, List parentBmdmList) {
  if (bmdm.length() < 5) {
   return;
  }
  String parentBmdm = bmdm.substring(0, bmdm.length()-2);
  parentBmdmList.add(parentBmdm);
  createParentBmdmsByBmdm(parentBmdm,parentBmdmList);
 }

 /**
  * 根据sql查询语句,获得查询总记录数的sql语句
  * 比如:
  * select o from Organization o where o.parent is null
  * 经过转换,可以得到:
  * select count(*) from Organization o where o.parent is null
  * @param sql
  * @return
  */
 public static String getCountQuery(String sql){
  int index = sql.toUpperCase().indexOf("FROM");
  if(index != -1){
   /**
    * 包头不包尾:
    * 字符串:abcdefghijklmn
    * substring(5,8) == fgh
    */
   return "select count(*) "+sql.substring(index);
  }
  throw new RuntimeException("无效的SQL查询语句【"+sql+"】");
 }
 
 
 
 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值