package com.norteksoft.mms.base; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import com.fasterxml.jackson.databind.type.CollectionType; import com.fasterxml.jackson.databind.type.MapType; import com.fasterxml.jackson.databind.type.TypeFactory; import com.norteksoft.mms.base.utils.view.DynamicColumnDefinition; import com.norteksoft.mms.base.utils.view.ExportData; import com.norteksoft.mms.base.utils.view.GridColumnInfo; import com.norteksoft.mms.form.dao.ListColumnDao; import com.norteksoft.mms.form.dao.ListViewDao; import com.norteksoft.mms.form.entity.DataTable; import com.norteksoft.mms.form.entity.ListColumn; import com.norteksoft.mms.form.entity.ListView; import com.norteksoft.mms.form.enumeration.DataType; import com.norteksoft.mms.form.service.DataTableManager; import com.norteksoft.mms.form.service.FormHtmlParser; import com.norteksoft.mms.form.service.ListColumnManager; import com.norteksoft.mms.module.dao.MenuDao; import com.norteksoft.mms.module.entity.Menu; import com.norteksoft.product.api.entity.SingleSearch; import com.norteksoft.product.api.impl.WorkflowClientManager; import com.norteksoft.product.enumeration.QueryConditionProperty; import com.norteksoft.product.orm.Page; import com.norteksoft.product.util.ContextUtils; import com.norteksoft.product.util.JsonParser; import com.norteksoft.product.util.PageUtils; import com.norteksoft.product.util.SearchUtils; import com.norteksoft.product.web.struts2.Struts2Utils; @Service @Transactional(readOnly=true) public class MmsUtil { private Log log = LogFactory.getLog(WorkflowClientManager.class); @Autowired private ListViewDao viewDao; @Autowired private ListViewDao listViewDao; @Autowired private MenuDao menuDao; @Autowired private ListColumnDao listColumnDao; @Autowired private FormHtmlParser formHtmlParser; @Autowired private DataTableManager dataTableManager; /** * 根据系统编码的集合获得列表集合 * @param sysCodes 系统编码集合 * @return */ public List<ListView> getListViews(String... sysCodes){ return viewDao.getListViewsBySystem(sysCodes); } /** * 根据列表编码获得列表 * @param code * @return */ public ListView getListViewByCode(String code){ return viewDao.getListViewByCode(code); } /** * 保存用户自定义的列表 * @param code 列表编码 * @param name 列表名称 * @param sysCode 系统编码 */ @Transactional(readOnly=false) public void saveColums(String code,String name,String tableName){ Assert.notNull(ContextUtils.getSystemCode(), "systemCode不能为null"); Assert.notNull(ContextUtils.getCompanyId(), "companyId不能为null"); Menu menu=menuDao.getRootMenuByCode(ContextUtils.getSystemCode(),ContextUtils.getCompanyId()); DataTable table=dataTableManager.getDataTableByTableName(tableName); if(menu!=null){ ListView view=listViewDao.getListViewByCode(code); if(view!=null){ view.setName(name); }else{ view=new ListView(); view.setCode(code); view.setName(name); view.setCreator(ContextUtils.getLoginName()); view.setCreatorName(ContextUtils.getUserName()); view.setCreatedTime(new Date()); view.setDataTable(table); } view.setMenuId(menu.getId()); viewDao.save(view); List<ListColumn> items=new ArrayList<ListColumn>(); List<Object> list=JsonParser.getFormTableDatas(ListColumn.class); for(Object obj:list){ ListColumn column=(ListColumn)obj; column.setCompanyId(ContextUtils.getCompanyId()); column.setListView(view); listColumnDao.save(column); items.add(column); } view.setColumns(items); } } /** * 根据列表code获得colNames和colModel * @param code */ public GridColumnInfo getGridColumnInfo(String code){ ListView listView=viewDao.getListViewByCode(code); if(listView==null){ log.debug("ListView实体不能为null"); throw new RuntimeException("ListView实体不能为null"); } List<ListColumn> columns=listView.getColumns(); GridColumnInfo gridColumnInfo=new GridColumnInfo(); StringBuilder colNames=new StringBuilder(); StringBuilder colModel=new StringBuilder(); if(columns!=null&&columns.size()>0){ colNames.append("["); colModel.append("["); int index=0; for(ListColumn column:columns){ String vs=formHtmlParser.getValueSet(column,null,null); column.setOptionSet(vs); colNames.append(getColNames(column)); if(column.getTableColumn()!=null){ colModel.append(getColModel(column)); }else{ colModel.append(getTemporaryColModel(column,index)); } index++; } if(colNames.charAt(colNames.length()-1)==','){ colNames.delete(colNames.length()-1, colNames.length()); } if(colModel.charAt(colModel.length()-1)==','){ colModel.delete(colModel.length()-1, colModel.length()); } colNames.append("]"); colModel.append("]"); gridColumnInfo.setColNames(colNames.toString()); gridColumnInfo.setColModel(colModel.toString()); } return gridColumnInfo; } private String getTemporaryColModel(ListColumn column,int index) { StringBuilder colModel=new StringBuilder(); colModel.append("{name:'_temporary"); colModel.append(index); colModel.append("',index:'_temporary"); colModel.append(index); colModel.append("'"); if(StringUtils.isNotEmpty(column.getFormat())&&column.getFormat().indexOf("func:")!=-1){ String functionName=column.getFormat().replace("func:", ""); colModel.append(",formatter:"); colModel.append(functionName); } if(StringUtils.isNotEmpty(column.getHeadStyle())){ colModel.append(",width:"); colModel.append(column.getHeadStyle()); } if(column.getSortable()){ colModel.append(",sortable:true"); }else{ colModel.append(",sortable:false"); } if(column.getVisible()){ colModel.append(",hidden:false"); }else{ colModel.append(",hidden:true"); } colModel.append("},"); return colModel.toString(); } /** * 根据列设置获得表格表体信息 * @param column * @return */ private String getColModel(ListColumn column) { StringBuilder colModel=new StringBuilder(); String columnName=column.getTableColumn().getName(); colModel.append("{name:'"); colModel.append(columnName); colModel.append("',index:'"); colModel.append(columnName); colModel.append("'"); if(StringUtils.isNotEmpty(column.getHeadStyle())){ colModel.append(",width:"); colModel.append(column.getHeadStyle()); } if(StringUtils.isNotEmpty(column.getFormat())){ String formatSet=column.getFormat(); if(formatSet.startsWith("func:")){ colModel.append(",formatter:"); colModel.append(formatSet.substring(formatSet.indexOf(":")+1, formatSet.length())); } } if(column.getEditable()){ colModel.append(",editable:true"); String editRules=getEditRules(column); if(StringUtils.isNotEmpty(editRules)){ colModel.append(",editrules:{"); colModel.append(editRules); colModel.append("}"); } } if(StringUtils.isNotEmpty(column.getValueSet())){ colModel.append(",edittype:'select'"); colModel.append(",formatter:'select'"); colModel.append(",editoptions:{value:{"); colModel.append(column.getOptionSet()); colModel.append("}}"); }else if(column.getTableColumn().getDataType().equals("BOOLEAN")){ colModel.append(",edittype:'checkbox'"); colModel.append(",formatter:formatCheckbox"); colModel.append(",unformat:unFormatCheckbox"); colModel.append(",editoptions: {value:\"true:false\"}"); }else if(column.getControlValue()!=null && column.getControlValue().equals("TEXTAREA")){ colModel.append(",edittype:'textarea'"); }else{ if(StringUtils.isNotEmpty(column.getFormat())){ packagingFormatSetting(colModel,column.getFormat()); } } if(column.getVisible()){ colModel.append(",hidden:false"); }else{ colModel.append(",hidden:true"); } colModel.append("},"); return colModel.toString(); } /** * 格式设置 * @param colModel * @param column */ private void packagingFormatSetting(StringBuilder colModel,String formatSetting) { if(formatSetting.indexOf("$#,##")!=-1){ colModel.append(",formatter:'currency'"); if(formatSetting.indexOf(".")!=-1){ colModel.append(",formatoptions:{decimalSeparator:'.', thousandsSeparator: ',', decimalPlaces: "); colModel.append(formatSetting.length()-7); colModel.append(", prefix: '$'}"); }else{ colModel.append(",formatoptions:{decimalSeparator:' ', thousandsSeparator: ',', decimalPlaces: 0, prefix: '$'}"); } }else if(formatSetting.indexOf("¥#,##")!=-1){ colModel.append(",formatter:'currency'"); if(formatSetting.indexOf(".")!=-1){ colModel.append(",formatoptions:{decimalSeparator:'.', thousandsSeparator: ',', decimalPlaces: "); colModel.append(formatSetting.length()-7); colModel.append(", prefix: '¥'}"); }else{ colModel.append(",formatoptions:{decimalSeparator:' ', thousandsSeparator: ',', decimalPlaces: 0, prefix: '¥'}"); } }else if(formatSetting.indexOf("%")!=-1){ colModel.append(",formatter:'currency'"); if(formatSetting.indexOf(".")!=-1){ colModel.append(",formatoptions:{decimalSeparator:'00.', thousandsSeparator: '', decimalPlaces: "); colModel.append(formatSetting.length()-3); colModel.append(", suffix: '%'}"); }else{ colModel.append(",formatoptions:{decimalSeparator:'00', thousandsSeparator: '', decimalPlaces: 0, prefix: '%'}"); } }else if(formatSetting.equals("yyyy-m-d")){ colModel.append(",formatter:'date'"); colModel.append(",formatoptions:{srcformat:'Y-m-d H:i:s',newformat:'Y-m-d'}"); }else if(formatSetting.equals("yyyy-m-d hh:mm:ss")){ colModel.append(",formatter:'date'"); colModel.append(",formatoptions:{srcformat:'Y-m-d H:i:s',newformat:'Y-m-d H:i:s'}"); }else if(formatSetting.equals("yyyy-m")){ colModel.append(",formatter:'date'"); colModel.append(",formatoptions:{srcformat:'Y-m-d H:i:s',newformat:'Y-m'}"); }else if(formatSetting.equals("m-d")){ colModel.append(",formatter:'date'"); colModel.append(",formatoptions:{srcformat:'Y-m-d H:i:s',newformat:'m-d'}"); }else if(formatSetting.equals("yyyy年m月d日")){ colModel.append(",formatter:'date'"); colModel.append(",formatoptions:{srcformat:'Y-m-d H:i:s',newformat:'Y年m月d日'}"); }else if(formatSetting.equals("yyyy年m月d日hh时mm分ss秒")){ colModel.append(",formatter:'date'"); colModel.append(",formatoptions:{srcformat:'Y-m-d H:i:s',newformat:'Y年m月d日H时i分s秒'}"); }else if(formatSetting.equals("yyyy年m月")){ colModel.append(",formatter:'date'"); colModel.append(",formatoptions:{srcformat:'Y-m-d H:i:s',newformat:'Y年m月'}"); }else if(formatSetting.equals("m月d日")){ colModel.append(",formatter:'date'"); colModel.append(",formatoptions:{srcformat:'Y-m-d H:i:s',newformat:'m月d日'}"); }else if(formatSetting.equals("h:mm")){ colModel.append(",formatter:'date'"); colModel.append(",formatoptions:{srcformat:'Y-m-d H:i:s',newformat:'H:i'}"); }else if(formatSetting.equals("h:mm:ss")){ colModel.append(",formatter:'date'"); colModel.append(",formatoptions:{srcformat:'Y-m-d H:i:s',newformat:'H:i:s'}"); }else if(formatSetting.equals("h时mm分")){ colModel.append(",formatter:'date'"); colModel.append(",formatoptions:{srcformat:'Y-m-d H:i:s',newformat:'H时i分'}"); }else if(formatSetting.equals("h时mm分ss秒")){ colModel.append(",formatter:'date'"); colModel.append(",formatoptions:{srcformat:'Y-m-d H:i:s',newformat:'H时i分s秒'}"); }else if(formatSetting.indexOf("func:")!=-1){ colModel.append(",formatter:"); colModel.append(formatSetting.replace("func:", "")); }else{ if(formatSetting.indexOf("#,##")!=-1){ colModel.append(",formatter:'number'"); if(formatSetting.indexOf(".")!=-1){ colModel.append(",formatoptions:{decimalSeparator:'.', thousandsSeparator: ',', decimalPlaces:"); colModel.append(formatSetting.length()-6); colModel.append(", defaultValue: '0.00'}"); }else{ colModel.append(",formatoptions:{decimalSeparator:' ', thousandsSeparator: ',', decimalPlaces: 0, defaultValue: '0'}"); } }else{ colModel.append(",formatter:'number'"); if(formatSetting.indexOf(".")!=-1){ colModel.append(",formatoptions:{decimalSeparator:'.', thousandsSeparator: '', decimalPlaces:"); colModel.append(formatSetting.length()-2); colModel.append(", defaultValue: '0.00'}"); }else{ colModel.append(",formatoptions:{decimalSeparator:' ', thousandsSeparator: '', decimalPlaces: 0, defaultValue: '0'}"); } } } } /** * 获得编辑规则 * @param column * @return */ @SuppressWarnings("deprecation") private String getEditRules(ListColumn column) { StringBuilder editRules=new StringBuilder(); if(StringUtils.isNotEmpty(column.getEditRules())){ editRules.append(column.getEditRules()); } if(DataType.NUMBER.equals(column.getTableColumn().getDataType())||DataType.AMOUNT.equals(column.getTableColumn().getDataType())||DataType.DOUBLE.equals(column.getTableColumn().getDataType())||DataType.FLOAT.equals(column.getTableColumn().getDataType())){ if(StringUtils.isNotEmpty(editRules.toString())){ editRules.append(","); } editRules.append("number:true"); }else if(DataType.INTEGER.equals(column.getTableColumn().getDataType())||DataType.LONG.equals(column.getTableColumn().getDataType())){ if(StringUtils.isNotEmpty(editRules.toString())){ editRules.append(","); } editRules.append("integer:true"); } return editRules.toString(); } /** * 根据列设置获得表格表头值 * @param column * @return */ private String getColNames(ListColumn column) { StringBuilder colNames=new StringBuilder(); colNames.append("'"); colNames.append(formHtmlParser.getInternation(column.getHeaderName())); colNames.append("',"); return colNames.toString(); } /** * 获得动态列的实体集合 * @return */ public Map<String,DynamicColumnDefinition> getDynamicColumnName(){ String dynamicColumns=Struts2Utils.getParameter("dynamicColumns"); return JsonParser.json2Map(String.class, DynamicColumnDefinition.class, dynamicColumns); } /** * 获得带有动态列导出数据 * @param page * @param listCode * @return */ public ExportData getDynamicColumnExportData(Page<?> page,ExportDynamicColumnValues exportDynamicColumnValues){ Assert.notNull(exportDynamicColumnValues, "ExportDynamicColumnValues不能为null"); ExportData exportData=new ExportData(); String listCode=Struts2Utils.getParameter("_list_code"); String[] dynamicColumnNames=getDynamicColumnNames(); ListColumnManager listColumnManager = (ListColumnManager) ContextUtils.getBean("listColumnManager"); List<ListColumn> columns=listColumnManager.getExportColumnsByCode(listCode); if(columns!=null&&columns.size()>0){ String[] valueSet=new String[columns.size()]; String rowDatas=PageUtils.pageToRowData(page, columns); List<Object> head=new ArrayList<Object>(); for(ListColumn lc:columns){ head.add(formHtmlParser.getInternation(lc.getHeaderName())); } if(dynamicColumnNames != null) for(String dcn:dynamicColumnNames){ head.add(dcn); } List<List<Object>> bodyData=getBodyData(rowDatas,columns,valueSet); exportDynamicColumnValues.addValuesTo(bodyData); exportData.setHead(head); exportData.setBodyData(bodyData); exportData.setFormat(getFormatting(columns)); exportData.setDataType(getDataType(columns)); exportData.setValueSet(valueSet); } return exportData; } /** * 获得动态列名 * @return */ public String[] getDynamicColumnNames(){ String dynamicColumnName=Struts2Utils.getParameter("_dynamic_column_name"); if(StringUtils.isNotEmpty(dynamicColumnName)){ return dynamicColumnName.split(","); }else{ return null; } } /** * 获得导出数据 * @return */ public ExportData getExportData(Page<?> page,String listCode){ ExportData exportData=new ExportData(); ListColumnManager listColumnManager = (ListColumnManager) ContextUtils.getBean("listColumnManager"); if(listColumnManager==null){ log.debug("ListColumnManager不能为null"); throw new RuntimeException("ListColumnManager不能为null"); } List<ListColumn> columns=listColumnManager.getExportColumnsByCode(listCode); if(columns!=null&&columns.size()>0){ String[] valueSet=new String[columns.size()]; String rowDatas=PageUtils.pageToRowData(page, columns); List<Object> head=listColumnManager.getExportHeadnameByCode(listCode); exportData.setHead(head); rowDatas=rowDatas.replaceAll("\\\\", "\\\\\\\\").replaceAll("\t", "").replaceAll("\r\n", "").replaceAll("\n", ""); exportData.setBodyData(getBodyData(rowDatas,columns,valueSet)); exportData.setFormat(getFormatting(columns)); exportData.setDataType(getDataType(columns)); exportData.setValueSet(valueSet); } return exportData; } /** * 获得每列数据表中对应的数据类型 * (若ListColumn中的valueSet不为空,则数据类型统一修改为TEXT,是因为导出时为Excel单元格中的值转换类型时防止报错) * @param columns * @return */ private String[] getDataType(List<ListColumn> columns) { String[] dataType=new String[columns.size()]; int i=0; for(ListColumn listColumn:columns){ if(StringUtils.isNotEmpty(listColumn.getValueSet())){ dataType[i]=DataType.TEXT.name(); }else{ dataType[i]=listColumn.getTableColumn().getDataType().name(); } i++; } return dataType; } /** * 获得每列对应的格式设置 * @param columns * @return */ private String[] getFormatting(List<ListColumn> columns) { String[] formatting=new String[columns.size()]; int i=0; for(ListColumn listColumn:columns){ formatting[i]=listColumn.getFormat()==null?"":listColumn.getFormat(); i++; } return formatting; } /** * 获得表体数据 * @param rowDatas * @param columns * @param columnLength * @return */ private List<List<Object>> getBodyData(String rowDatas,List<ListColumn> columns,String[] formatting){ List<List<Object>> bodyData=new ArrayList<List<Object>>(); MapType mt = TypeFactory.defaultInstance().constructMapType( HashMap.class, String.class, String.class); CollectionType ct = TypeFactory.defaultInstance().constructCollectionType(ArrayList.class, mt); List<Map<String, String>> objs = JsonParser.json2Object(ct, rowDatas); Map<String, Map<String, String>> propMaps = new HashMap<String, Map<String, String>>();//保存解析第一行的值设置转换成的Map形式,避免重复解析值设置的json字符串 getPropMaps(propMaps,columns,formatting); for(Map<String, String> obj : objs){ List<Object> rowData=new ArrayList<Object>(); rowData.add(obj.get("id")); for(ListColumn listColumn:columns){ String columnName=listColumn.getTableColumn().getName(); String columnValue=obj.get(columnName);//数据库中的值 Map<String, String> myPropMap = propMaps.get(columnName); if(myPropMap!=null){ String myColumnValue=myPropMap.get(columnValue);//在页面中显示的值 if(StringUtils.isNotEmpty(myColumnValue)){ columnValue = myColumnValue; } } rowData.add(columnValue); } bodyData.add(rowData); } return bodyData; } public void getPropMaps(Map<String, Map<String, String>> propMaps,List<ListColumn> columns,String[] formatting){ Map<String, String> valueSets = new HashMap<String, String>();//保存解析第一行的值设置,避免重复解析值设置 int i=0; for(ListColumn listColumn:columns){ formatting[i]=listColumn.getFormat()==null?"":listColumn.getFormat(); String columnName=listColumn.getTableColumn().getName(); if(StringUtils.isNotEmpty(listColumn.getValueSet())){ String valueSet=valueSets.get(columnName); if(StringUtils.isEmpty(valueSet)){ valueSet=formHtmlParser.getValueSet(listColumn,null,null); } if(StringUtils.isNotEmpty(valueSet)){ valueSets.put(columnName,valueSet ); Map<String, String> myPropMap = propMaps.get(columnName); if(myPropMap==null||myPropMap.size()<=0){ Map<String, String> propMap = JsonParser.json2Map(String.class, String.class, "{"+valueSet+"}"); propMaps.put(columnName, propMap); } } } i++; } } /** * 根据列表code获得列名 * @param code * @return */ public String getColumnsByCode(String code){ List<ListColumn> listColumns = listColumnDao.getColumnsByViewCode(code); StringBuilder columns = new StringBuilder(); for(ListColumn lc:listColumns){ if(lc.getTableColumn()!=null){ if(StringUtils.isNotEmpty(columns.toString())){ columns.append(","); } //存在实体的数据表 ListView view = lc.getListView(); DataTable table = null; String entityName=null; if(view!=null){table=view.getDataTable();} if(table!=null)entityName=table.getEntityName(); if(StringUtils.isNotEmpty(entityName)){//存在实体 columns.append(lc.getTableColumn().getName()); }else{//自定义表 columns.append(lc.getTableColumn().getDbColumnName()); } } } return columns.toString(); } /** * 根据列表code获得导出列名 * @param code * @return */ public String getExportColumnsByCode(String code){ List<ListColumn> listColumns = listColumnDao.getExportColumnsByCode(code); StringBuilder columns = new StringBuilder(); for(ListColumn lc:listColumns){ if(lc.getTableColumn()!=null){ if(StringUtils.isNotEmpty(columns.toString())){ columns.append(","); } columns.append(lc.getTableColumn().getName()); } } return columns.toString(); } public SingleSearch getSingleSearchCondition(String alias,List<Object> beforeValues,List<Object> afterValues) { String searchParameters = Struts2Utils.getParameter("searchParameters"); SingleSearch singleSearch=new SingleSearch(); if(StringUtils.isNotEmpty(searchParameters)){ singleSearch=getParameters(searchParameters,alias,beforeValues,afterValues); }else{ List<Object> finalResult = new ArrayList<Object>(); if(beforeValues!=null&&!beforeValues.isEmpty()){ finalResult.addAll(beforeValues); } if(afterValues!=null&&!afterValues.isEmpty()){ finalResult.addAll(afterValues); } singleSearch.setCondition(""); singleSearch.setConditionValue(finalResult); } return singleSearch; } private SingleSearch getParameters(String searchParameters,String alias,List<Object> beforeValues,List<Object> afterValues){ SingleSearch singleSearch = new SingleSearch(); List<Object> result = new ArrayList<Object>(); StringBuilder additionalWhere = new StringBuilder(); MapType mt = TypeFactory.defaultInstance().constructMapType( HashMap.class, QueryConditionProperty.class, String.class); CollectionType ct = TypeFactory.defaultInstance().constructCollectionType(ArrayList.class, mt); List<Map<QueryConditionProperty,String>> prms = JsonParser.json2Object(ct, searchParameters); List<Object> value = null; for(int i = 0; i < prms.size(); i++){ if(i == prms.size()-1){ additionalWhere.append(SearchUtils.getSql(prms.get(i), alias, false,true)); } else { additionalWhere.append(SearchUtils.getSql(prms.get(i), alias, true,true)); } value = SearchUtils.getValue(prms.get(i), true); if(value != null){ result.addAll(value); } } List<Object> finalResult = new ArrayList<Object>(); if(beforeValues!=null&&!beforeValues.isEmpty()){ finalResult.addAll(beforeValues); } finalResult.addAll(result); if(afterValues!=null&&!afterValues.isEmpty()){ finalResult.addAll(afterValues); } singleSearch.setCondition(additionalWhere.toString()); singleSearch.setConditionValue(finalResult); return singleSearch; } /** * 获得当前年 * @return */ public static String getYear() { Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); return String.valueOf(cal.get(Calendar.YEAR)); } /** * 获得当前的年月日 * @throws Exception */ public static String getYearMonthDay(){ Calendar cal=Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(cal.getTime()); } /** * 通过给定的日期获得年 * @return */ public static String getYearByDate(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); return String.valueOf(cal.get(Calendar.YEAR)); } /** * 通过给定的日期获得月 * @return */ public static int getMonthByDate(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); return cal.get(Calendar.MONTH)+1; } /** * 通过给定的日期获得日 * @return */ public static int getDayByDate(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); return cal.get(Calendar.DAY_OF_MONTH); } /** * 把阿拉伯数字转换成汉语的数字,即把“0”转换成“O”、“1”转换成“一”、“2”转换成“二”、...、“31”转换成“三十一”。 * @param val * @return */ public static String shuziToHanzi(int val){ if(val==0){ return "O"; }else if(val==1){ return "一"; }else if(val==2){ return "二"; }else if(val==3){ return "三"; }else if(val==4){ return "四"; }else if(val==5){ return "五"; }else if(val==6){ return "六"; }else if(val==7){ return "七"; }else if(val==8){ return "八"; }else if(val==9){ return "九"; }else if(val==10){ return "十"; }else if(val==11){ return "十一"; }else if(val==12){ return "十二"; }else if(val==13){ return "十三"; }else if(val==14){ return "十四"; }else if(val==15){ return "十五"; }else if(val==16){ return "十六"; }else if(val==17){ return "十七"; }else if(val==18){ return "十八"; }else if(val==19){ return "十九"; }else if(val==20){ return "二十"; }else if(val==21){ return "二十一"; }else if(val==22){ return "二十二"; }else if(val==23){ return "二十三"; }else if(val==24){ return "二十四"; }else if(val==25){ return "二十五"; }else if(val==26){ return "二十六"; }else if(val==27){ return "二十七"; }else if(val==28){ return "二十八"; }else if(val==29){ return "二十九"; }else if(val==30){ return "三十"; }else if(val==31){ return "三十一"; } return ""; } }