Index: forgon-tools/src/main/java/com/forgon/tools/date/DateTools.java =================================================================== diff -u -r14750 -r16046 --- forgon-tools/src/main/java/com/forgon/tools/date/DateTools.java (.../DateTools.java) (revision 14750) +++ forgon-tools/src/main/java/com/forgon/tools/date/DateTools.java (.../DateTools.java) (revision 16046) @@ -12,13 +12,16 @@ import org.apache.commons.lang.time.FastDateFormat; import com.forgon.tools.TryOut; +import org.apache.log4j.Logger; public class DateTools { public static String COMMON_DATE_HMS = "yyyy-MM-dd HH:mm:ss"; + public static String COMMON_DATE_HM = "yyyy-MM-dd HH:mm"; public static String COMMON_DATE_PATTEN = "yyyy-MM-dd "; private static String COMMON_DATE = "yyyy-MM-dd 12:00:00"; private static SimpleDateFormat sdf = new SimpleDateFormat(COMMON_DATE_PATTEN); + private static final Logger logger = Logger.getLogger(DateTools.class); public int getSpaceMonthAmountOfTwoDate(String startDate, String endDate) { int spaceMonthAmount = 0; @@ -632,4 +635,154 @@ } return defaultDate; } + + + + + /** + * 根据格式返回对应的时间 + * @param calendar 已经设置好的时间 + * @param format 时间格式 + * @return + */ + public static String formatTime(Calendar calendar, String format) { + format = StringUtils.isNotBlank(format) ? format : COMMON_DATE_HMS; + SimpleDateFormat sdf = new SimpleDateFormat(format); + return sdf.format(calendar.getTime()); + } + + public static void setStart(Calendar calendar) { + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + } + + public static void setEnd(Calendar calendar) { + calendar.set(Calendar.HOUR_OF_DAY, 23); + calendar.set(Calendar.MINUTE, 59); + calendar.set(Calendar.SECOND, 59); + calendar.set(Calendar.MILLISECOND, 999); + } + + /** + * 当天的开始时间 + * @param format 时间格式 + * @return + */ + public static String startOfTodDay(String format) { + Calendar calendar = Calendar.getInstance(); + setStart(calendar); + return formatTime(calendar, format); + } + /** + * 当天的结束时间 + * @param format 时间格式 + * @return + */ + public static String endOfToday(String format) { + Calendar calendar = Calendar.getInstance(); + setEnd(calendar); + return formatTime(calendar, format); + } + + /** + * 当天早上的结束 + * @param format + * @return + */ + public static String endOfTodayMorning(String format) { + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.HOUR_OF_DAY, 11); + calendar.set(Calendar.MINUTE, 59); + calendar.set(Calendar.SECOND, 59); + calendar.set(Calendar.MILLISECOND, 999); + return formatTime(calendar, format); + } + + /** + * 当天中午的开始 + * @param format + * @return + */ + public static String startOfTodayAfternoon(String format) { + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.HOUR_OF_DAY, 12); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + return formatTime(calendar, format); + } + + /** + * 昨天的开始时间 + * @return + */ + public static String startOfYesterday(String format) { + Calendar calendar = Calendar.getInstance(); + setStart(calendar); + calendar.add(Calendar.DATE, -1); + return formatTime(calendar, format); + } + /** + * 昨天的结束时间 + * @return + */ + public static String endOfYesterday(String format) { + Calendar calendar = Calendar.getInstance(); + setEnd(calendar); + calendar.add(Calendar.DATE, -1); + return formatTime(calendar, format); + } + + /** + * 两天前的开始时间 + * @param format + * @return + */ + public static String startOfBeforeYesterday(String format) { + Calendar calendar = Calendar.getInstance(); + setStart(calendar); + calendar.add(Calendar.DATE, -2); + return formatTime(calendar, format); + } + + /** + * 功能:获取本周的开始时间 + */ + public static String startOfThisWeek(String format) { + Calendar calendar = Calendar.getInstance(); + setStart(calendar); + calendar.setFirstDayOfWeek(Calendar.MONDAY); + calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + return formatTime(calendar, format); + } + /** + * 功能:获取本周的结束时间 + */ + public static String endOfThisWeek(String format) { + Calendar calendar = Calendar.getInstance(); + calendar.setFirstDayOfWeek(Calendar.MONDAY); + setEnd(calendar); + calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); + return formatTime(calendar, format); + } + + /** + * 按照格式尝试转换时间 + * @param time 要转换的时间 + * @param format 转换时间的格式 + * @return + */ + public static Date retryConvertTime(String time, String format){ + SimpleDateFormat sdf = new SimpleDateFormat(format); + try { + return sdf.parse(time); + } + catch (ParseException e) { + logger.error("尝试转换时间失败!",e); + throw new RuntimeException(e); + } + } + } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r15835 -r16046 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 15835) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 16046) @@ -1,6 +1,6 @@ package com.forgon.disinfectsystem.recyclingapplication.service; -import java.math.BigDecimal; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; @@ -20,8 +20,6 @@ import com.forgon.tools.StrutsParamUtils; import net.sf.json.JSONArray; import net.sf.json.JSONObject; -import net.sf.json.util.JSONBuilder; -import net.sf.json.util.JSONStringer; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.Predicate; @@ -32,14 +30,12 @@ import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; -import org.apache.commons.lang3.time.DateUtils; import org.apache.log4j.Logger; import org.hibernate.Criteria; import org.hibernate.LockMode; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.criterion.Restrictions; -import org.jfree.util.Log; import com.forgon.Constants; import com.forgon.databaseadapter.service.DateQueryAdapter; @@ -901,12 +897,18 @@ where3 = SqlBuilder.build_IN_Statement("type", SqlBuilder.NOT_IN, excludeTypelist); - Date out_beginTime = null; - Date out_endTime = null; + // Date out_beginTime = null; + // Date out_endTime = null; //如果申请时间范围不为空时 if (StringUtils.isNotBlank(applyDate)) { - try{ + try { + where7 = this.setTimeCondition(applyDate); + } + catch (Exception e) { + logger.error(e, e); + } + /* try{ SimpleDateFormat sdf = new SimpleDateFormat(DateTools.COMMON_DATE_HMS); String[] applyDateArray = StringUtils.split(applyDate,";"); out_beginTime = sdf.parse(applyDateArray[0] + " 00:00:00"); @@ -917,8 +919,8 @@ dateQueryAdapter.dateAdapter(out_beginTime), dateQueryAdapter.dateAdapter(out_endTime)); }catch (Exception e) { - Log.error("" , e); - } + Log.error("", e); + }*/ } //如果物品类型不为空时 @@ -937,6 +939,37 @@ } /** + * 设置时间的条件 + * @param applyDate 要设定的时间 + * @return + */ + 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("转换时间失败,现在开始尝试重新转换"); + //如果是时间转换出错,尝试重新再转换(花都区人民医院要求:发货时间精确到上午和下午的时分,而上面的方式精确到时分秒) + out_beginTime = DateTools.retryConvertTime(applyDateArray[0], DateTools.COMMON_DATE_HM); + out_endTime = DateTools.retryConvertTime(applyDateArray[1], DateTools.COMMON_DATE_HM); + logger.info("尝试转换时间成功"); + } + 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; + } + + + /** * 根据时间段和多个orgUnitCoding获取未发货的发货计划单 */ @Override Index: ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedView.jsp =================================================================== diff -u -r15831 -r16046 --- ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedView.jsp (.../invoicePlanExtractedView.jsp) (revision 15831) +++ ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedView.jsp (.../invoicePlanExtractedView.jsp) (revision 16046) @@ -54,6 +54,8 @@ + + @@ -84,7 +86,7 @@