Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r16046 -r16047 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 16046) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 16047) @@ -945,27 +945,25 @@ */ private String setTimeCondition(String applyDate){ SimpleDateFormat sdf = new SimpleDateFormat(DateTools.COMMON_DATE_HMS); - Date out_beginTime; - Date out_endTime; - String[] applyDateArray = StringUtils.split(applyDate,";"); try { - out_beginTime = sdf.parse(applyDateArray[0] + " 00:00:00"); - out_endTime = sdf.parse(applyDateArray[1] + " 23:59:59"); - } - catch (ParseException e) { - logger.info("转换时间失败,现在开始尝试重新转换"); + String[] applyDateArray = StringUtils.split(applyDate, Constants.IDS_SEPARATOR); //如果是时间转换出错,尝试重新再转换(花都区人民医院要求:发货时间精确到上午和下午的时分,而上面的方式精确到时分秒) - out_beginTime = DateTools.retryConvertTime(applyDateArray[0], DateTools.COMMON_DATE_HM); - out_endTime = DateTools.retryConvertTime(applyDateArray[1], DateTools.COMMON_DATE_HM); - logger.info("尝试转换时间成功"); + Date out_beginTime = DateTools.convertTime(applyDateArray[0] + " 00:00:00", sdf, DateTools.COMMON_DATE_HM); + // Date out_beginTime = DateTools.convertTime(applyDateArray[0] + " 00:00:00", sdf, DateTools.COMMON_DATE_HM); + Date out_endTime = DateTools.convertTime(applyDateArray[1] + " 23:59:59", sdf, DateTools.COMMON_DATE_HM); + // Date out_endTime = DateTools.convertTime(applyDateArray[1] + " 23:59:59", sdf, DateTools.COMMON_DATE_HM); + String where7 = String.format("(applicationTime between %s and %s or po in (select recyclingApplication from RecyclingRecord where recyclingTime between %s and %s))", + dateQueryAdapter.dateAdapter(out_beginTime), + dateQueryAdapter.dateAdapter(out_endTime), + dateQueryAdapter.dateAdapter(out_beginTime), + dateQueryAdapter.dateAdapter(out_endTime)); + logger.info("where7:" + where7); + return where7; } - String where7 = String.format("(applicationTime between %s and %s or po in (select recyclingApplication from RecyclingRecord where recyclingTime between %s and %s))", - dateQueryAdapter.dateAdapter(out_beginTime), - dateQueryAdapter.dateAdapter(out_endTime), - dateQueryAdapter.dateAdapter(out_beginTime), - dateQueryAdapter.dateAdapter(out_endTime)); - logger.info("where7:" + where7); - return where7; + catch (Exception e) { + logger.error(e); + throw new RuntimeException(e); + } } Index: forgon-tools/src/main/java/com/forgon/tools/date/DateTools.java =================================================================== diff -u -r16046 -r16047 --- forgon-tools/src/main/java/com/forgon/tools/date/DateTools.java (.../DateTools.java) (revision 16046) +++ forgon-tools/src/main/java/com/forgon/tools/date/DateTools.java (.../DateTools.java) (revision 16047) @@ -769,20 +769,30 @@ } /** - * 按照格式尝试转换时间 - * @param time 要转换的时间 - * @param format 转换时间的格式 + * 按照对应的格式来转换时间,如果转换出错,会再次尝试转换 + * @param applyDate 要转换的时间 + * @param sdf SimpleDateFormat的格式 + * @param retryConvertFormat 尝试再次转换的格式 * @return */ - public static Date retryConvertTime(String time, String format){ - SimpleDateFormat sdf = new SimpleDateFormat(format); + public static Date convertTime(String applyDate, SimpleDateFormat sdf, String retryConvertFormat){ + Date convertTime; try { - return sdf.parse(time); + convertTime = sdf.parse(applyDate); } catch (ParseException e) { - logger.error("尝试转换时间失败!",e); - throw new RuntimeException(e); + if (org.apache.commons.lang3.StringUtils.isNotBlank(retryConvertFormat)){ + logger.info("转换时间失败,现在开始尝试重新转换:" + applyDate); + sdf = new SimpleDateFormat(retryConvertFormat); + //因为用了递归的方法,所以再次转换的时候retryConvertFormat要设置成空,不然会无限递归下去 + return convertTime(applyDate, sdf, null); + } + else { + throw new RuntimeException(e); + } } + logger.info("转换时间成功:" + convertTime); + return convertTime; } }