zoukankan      html  css  js  c++  java
  • 【hibernate】使用HQL对页面进行时间校验操作(预约)

    【hibernate】使用HQL对页面进行时间校验操作(预约)

    预约系统中的时间校验

    正好接了一个预约的需求,还需要用java 7和hibernate

    1.时间冲突,时间段不能重复,在保存前对数据库进行
    2.时间重复,同时录入多个,在保存前对页面进行
    3.开始时间与结束时间正常顺序,在保存前对页面进行

    应该还有一个对页面中的时间段重复进行提醒,但是太烦了,后面挑完电脑配置再写,到时候再说

    4.时间段重复进行校验,在保存前对页面进行

    没啥解释的,前端就是ajax接收,然后根据传回来的字符数值进行判断,主要操作放在了后端,代码多少带点儿烂,想哪儿写哪儿

    public ActionForward 时间校验 (ActionMapping mapping, ActionForm form, HttpServletRequest request,
    	HttpServletResponse response) throws Exception {
    A a = (A) form;
    List<B> list-b = a.getlist-form();
    JSONArray jsonArray = new JSONArray();
    HashSet<B> set = new HashSet<>(list-b);
    int sameInside = 0;
    int sameError = 0;
    for (int i = 0; i < list-b.size(); i++) {
    	HQLInfo info = new HQLInfo();
    	info.setWhereBlock("test. Id = :testId " + "and NOT(EndTime <= :StartTime "
    			+ "or StartTime >= :EndTime)");
    	String   testString = list-b.get(i).gettestId().toString();
    	info.setParameter("testId",   testString);
    	String   StartTimeString = list-b.get(i).get  StartTime().toString();
    	Date   StartTimeDate = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(  StartTimeString.toString());
    	info.setParameter("  StartTime",   StartTimeDate);
    	String   EndTimeString = list-b.get(i).get  EndTime().toString();
    	Date   EndTimeDate = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(  EndTimeString.toString());
    	info.setParameter("  EndTime",   EndTimeDate);
    	// date1小于date2返回-1,date1大于date2返回1,相等返回0
    	int compareTo =   StartTimeDate.compareTo(  EndTimeDate);
    	if (i >= 1) {
    		for (int j = 0; j < i; j++) {
    			String   StartTimeStringInside = list-b.get(j).get  StartTime().toString();
    			Date   StartTimeDateInside = new SimpleDateFormat("yyyy-MM-dd HH:mm")
    					.parse(  StartTimeStringInside.toString());
    			String   EndTimeStringInside = list-b.get(j).get  EndTime().toString();
    			Date   EndTimeDateInside = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(  EndTimeStringInside
    					.toString());
    			// Date1.after(Date2),当Date1大于Date2时,返回TRUE,当小于等于时,返回false;
    			// 即Date2比Date1小的true/false,当Date2日期比Date1小的时候为true,否则为false
    			// Date1.before(Date2),当Date1小于Date2时,返回TRUE,当大于等于时,返回false;
    			// a为比较的基底时间,b为其余比较时间,a结束>b开始 或者 a开始<b结束的结果取反就是有冲突的部分
    			boolean beforeTime =   EndTimeDateInside.before(  StartTimeDate);
    			boolean afterTime =   StartTimeDateInside.after(  EndTimeDate);
    			String  InsideString = list-b.get(j).gettestId().toString();
    			if (  testString.equals( InsideString)) {
    				if (!(afterTime || beforeTime)) {
    					sameInside = 1;
    				} else {
    					sameInside = 0;
    				}
    			} else {
    				sameInside = 0;
    			}
    			sameError = sameInside + sameError;
    		}
    	}
    	List< Bb> bb =  BbService.findList(info);
    	JSONObject object = new JSONObject();
    	/*检查数据库与数据中的时间段冲突*/
    	if (list-b == null || applications.size() == 0) {
    		object.put("col", i + 1);
    		object.put("ok", 0);
    	} else {
    		object.put("col", i + 1);
    		object.put("ok", 1);
    	}
    	/*检查页面中数据中的时间是否重复*/
    	if (list-b.size() == set.size()) {
    		object.put("repeat", 0);
    	} else {
    		object.put("repeat", 1);
    	}
    	/*检查页面中的开始时间是否在结束时间之前*/
    	if (compareTo == 1) {
    		object.put("timesOrder", 1);
    	} else {
    		object.put("timesOrder", 0);
    	}
    	/*检查页面中数据是否重复*/
    	if (sameError == 0) {
    		object.put("sameInside", 1);
    	} else {
    		object.put("sameInside", 0);
    	}
    	jsonArray.add(object);
    }
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write(jsonArray.toString());
    response.getWriter().flush();
    response.getWriter().close();
    return null;
    }
    

    阿巴阿巴,以上

    您能读到这儿,我呢是发自真心的感谢您,若要转载,还望请您带上链接
  • 相关阅读:
    [笔记] 深入java虚拟机 类型的生命周期
    xml笔记
    Python笔记
    Effective C++ 笔记(2)
    [笔记] 深入java虚拟机 连接模型
    javascript对象成员访问权限
    [笔记] 深入java虚拟机 java class文件(2)
    STL笔记(3) Effective STL
    STL笔记(1)容器
    [IOS笔记] objecttivec基础知识
  • 原文地址:https://www.cnblogs.com/jokingremarks/p/15544369.html
Copyright © 2011-2022 走看看