Index: forgon-core/src/main/java/com/forgon/statusMode/DateStateContext.java =================================================================== diff -u --- forgon-core/src/main/java/com/forgon/statusMode/DateStateContext.java (revision 0) +++ forgon-core/src/main/java/com/forgon/statusMode/DateStateContext.java (revision 17458) @@ -0,0 +1,43 @@ +package com.forgon.statusMode; + +import org.apache.commons.lang3.ObjectUtils; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @author zhonghaowen + * @apiNote 获取当天最后的时间状态模式使用类 + * @since 2017-03-21 + */ +public class DateStateContext { + + private DateState dateState; + + public DateStateContext() { + //默认用年月日时分秒 + this.dateState = new SecondsDateState(); + } + + /** + * 根据日期格式修改对应的状态 + * @param timeFmt 日期格式 + */ + public void setDateState(String timeFmt) { + //如果是年月日时分 + if (ObjectUtils.equals("Y-m-d H:i", timeFmt)) { + this.dateState = new MinuteDateState(); + } + //如果是年月日时 + else if (ObjectUtils.equals("Y-m-d H", timeFmt)) { + this.dateState = new HourDateState(); + } + } + + /** + * @see DateState#handleTime(String, SimpleDateFormat, String) + */ + public Date handleTime(String needToTransferTime, SimpleDateFormat sdf, String retryConvertFormat) { + return dateState.handleTime(needToTransferTime, sdf, retryConvertFormat); + } +} Index: forgon-core/src/main/java/com/forgon/statusMode/HourDateState.java =================================================================== diff -u --- forgon-core/src/main/java/com/forgon/statusMode/HourDateState.java (revision 0) +++ forgon-core/src/main/java/com/forgon/statusMode/HourDateState.java (revision 17458) @@ -0,0 +1,20 @@ +package com.forgon.statusMode; + +import com.forgon.tools.date.DateTools; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @author zhonghaowen + * @apiNote 获取当天最后的时间状态模式实现类(需要转换的时间格式是年月日时) + * @since 2017-03-21 + */ +public class HourDateState implements DateState { + + + @Override + public Date handleTime(String needToTransferTime, SimpleDateFormat sdf, String retryConvertFormat) { + return DateTools.convertTime(needToTransferTime + ":59:59", sdf, retryConvertFormat); + } +} Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r17431 -r17458 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 17431) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 17458) @@ -17,14 +17,14 @@ import com.forgon.disinfectsystem.entity.invoicemanager.enums.BorrowConfirmStatus; import com.forgon.exception.OperationException; +import com.forgon.statusMode.DateStateContext; import com.forgon.tools.StrutsParamUtils; import com.forgon.tools.util.IntegerUtils; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.collections4.MapUtils; import org.apache.commons.collections4.Predicate; import org.apache.commons.collections4.PredicateUtils; import org.apache.commons.collections4.Transformer; @@ -88,7 +88,6 @@ import com.forgon.tools.string.StringTools; import com.forgon.tools.util.SqlUtils; -import javax.naming.AuthenticationException; /** * @author WangYi @@ -1004,7 +1003,10 @@ String[] applyDateArray = StringUtils.split(applyDate, Constants.IDS_SEPARATOR); //如果convertTime方法转换出错,尝试重新再转换(花都区人民医院要求:发货时间精确到上午和下午的时分,而之前默认的方法是精确到时分秒,所以要尝试再次转换) 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); + String timeSearchFmt = CssdUtils.getSystemSetConfigByName("timeSearchFmt"); + DateStateContext dateStateContext = new DateStateContext(); + dateStateContext.setDateState(timeSearchFmt); + Date out_endTime = dateStateContext.handleTime(applyDateArray[1], 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), Index: forgon-core/src/main/java/com/forgon/statusMode/DateState.java =================================================================== diff -u --- forgon-core/src/main/java/com/forgon/statusMode/DateState.java (revision 0) +++ forgon-core/src/main/java/com/forgon/statusMode/DateState.java (revision 17458) @@ -0,0 +1,24 @@ +package com.forgon.statusMode; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @author zhonghaowen + * @apiNote 获取当天最后的时间状态模式 + * @since 2017-03-21 + */ +public interface DateState { + + /** + * 获取该时间当天最后的时间(23时59分59秒) + *

这里忽略了秒后面的时间,如果需要精确到59秒到0秒之间,可以获取到返回的日期后对日期进行操作

+ * + * @param needToTransferTime 需要转换的时间 + * @param sdf 转换时间的格式 + * @param retryConvertFormat 转换失败时,再次尝试的转换格式 + * @return 转换后的时间 + */ + Date handleTime(String needToTransferTime, SimpleDateFormat sdf, String retryConvertFormat); + +} Index: forgon-core/src/main/java/com/forgon/statusMode/MinuteDateState.java =================================================================== diff -u --- forgon-core/src/main/java/com/forgon/statusMode/MinuteDateState.java (revision 0) +++ forgon-core/src/main/java/com/forgon/statusMode/MinuteDateState.java (revision 17458) @@ -0,0 +1,18 @@ +package com.forgon.statusMode; + +import com.forgon.tools.date.DateTools; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @author zhonghaowen + * @apiNote 获取当天最后的时间状态模式实现类(需要转换的时间格式是年月日时分) + * @since 2017-03-21 + */ +public class MinuteDateState implements DateState { + @Override + public Date handleTime(String needToTransferTime, SimpleDateFormat sdf, String retryConvertFormat) { + return DateTools.convertTime(needToTransferTime + ":59", sdf, retryConvertFormat); + } +} Index: forgon-core/src/main/java/com/forgon/statusMode/SecondsDateState.java =================================================================== diff -u --- forgon-core/src/main/java/com/forgon/statusMode/SecondsDateState.java (revision 0) +++ forgon-core/src/main/java/com/forgon/statusMode/SecondsDateState.java (revision 17458) @@ -0,0 +1,19 @@ +package com.forgon.statusMode; + +import com.forgon.tools.date.DateTools; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @author zhonghaowen + * @apiNote 获取当天最后的时间状态模式实现类(需要转换的时间格式是年月日时秒) + * @since 2017-03-21 + */ +public class SecondsDateState implements DateState { + + @Override + public Date handleTime(String needToTransferTime, SimpleDateFormat sdf, String retryConvertFormat) { + return DateTools.convertTime(needToTransferTime + " 23:59:59", sdf, retryConvertFormat); + } +}