<%@ page import="weaver.hrm.User" %> <%@ page import="weaver.hrm.HrmUserVarify" %> <%@ page import="com.engine.common.util.ParamUtil" %> <%@ page import="weaver.conn.RecordSet" %> <%@ page import="weaver.general.BaseBean" %> <%@ page import="com.alibaba.fastjson.JSONObject" %> <%@ page import="com.icbc.api.internal.apache.http.impl.cookie.S" %> <%@ page import="java.time.format.DateTimeFormatter" %> <%@ page import="java.time.LocalDateTime" %> <%@ page import="java.time.format.DateTimeParseException" %> <%@ page import="java.util.*" %> <%@ page language="java" contentType="text/html; charset=UTF-8" %> <% User user = HrmUserVarify.getUser(request, response); if (user == null){ out.print("暂无权限"); } Map param = ParamUtil.request2Map(request); String type = (String)param.get("type"); String sqr = (String)param.get("sqr"); String startDate = (String)param.get("startDate"); String endDate = (String)param.get("endDate"); //请休假审批单-总行部门正职 formtable_main_214 //请休假审批单-总行部门副职 formtable_main_215 //差旅审批单-总行员工正式 formtable_main_217 String ZZform = "formtable_main_214"; String FZform = "formtable_main_215"; String YGform = "formtable_main_292"; String sql = "select * from "; if ("0".equals(type)){ sql += ZZform; }else if("1".equals(type)){ sql += FZform; }else if("2".equals(type)){ sql += YGform; } sql += " main left join workflow_requestBase req on main.REQUESTID = req.REQUESTID "; sql += "where sqr = ? AND "; sql += "wcsj <= ? AND hgsj >= ? "; //在审批状态 sql += "and req.currentnodetype != 0 "; RecordSet recordSet = new RecordSet(); recordSet.executeQuery(sql,sqr,endDate,startDate); writeLog(sql,sqr,endDate,startDate); ArrayList> records = new ArrayList<>(); ArrayList> specialobjs = new ArrayList<>(); ArrayList requestid = new ArrayList<>(); ArrayList requestname = new ArrayList<>(); ArrayList clxcdh = new ArrayList<>(); int i = 0; while (recordSet.next()){ HashMap record = new HashMap<>(); record.put("requestid",recordSet.getString("requestid")); record.put("requestname",recordSet.getString("requestname")); record.put("clxcdh",recordSet.getString("clxcdh")); requestid.add(recordSet.getString("requestid")); requestname.add(recordSet.getString("requestname")); clxcdh.add(recordSet.getString("clxcdh")); records.add(record); HashMap specialobj = new HashMap<>(); specialobj.put("id",recordSet.getString("requestid")); specialobj.put("name",recordSet.getString("qjbt")); specialobjs.add(specialobj); i++; } //查看变更单是否有对冲突时间流程的修改 String querybgdsql = "select * from formtable_main_293 where id = " + "(select max(id) from formtable_main_293 where dcyslc = ? )"; ArrayList requestidNew = new ArrayList<>(); for (String rid : requestid) { recordSet.executeQuery(querybgdsql,rid); if(recordSet.next()){ //获取修改变更单最新的一条 String start = recordSet.getString("wcsj"); String end = recordSet.getString("hgsj"); if (isOverlapping(start,end,startDate,endDate)){ requestidNew.add(rid); }else{ // 如果变更后不冲突去掉这条数据 removeElement(records,"requestid",rid); removeElement(specialobjs,"id",rid); i--; } }else{ // 没有变更单的情况 requestidNew.add(rid); } } requestid = requestidNew; //再查询下变更表里有没有变更后冲突的数据 String queryBGBSql = "select * from formtable_main_293 main left join workflow_requestBase base " + "on main.requestid = base.requestid " + "where dcyslc not in ( " +String.join(",",requestid)+" ) " + "AND wcsj <= ? AND hgsj >= ? " + "AND sqr = ? "; recordSet.executeQuery(queryBGBSql,endDate,startDate,sqr); // out.print(queryBGBSql+"|"+endDate+"|"+startDate+"|"+sqr); while (recordSet.next()){ HashMap record = new HashMap<>(); record.put("requestid",recordSet.getString("requestid")); record.put("requestname",recordSet.getString("requestname")); // record.put("clxcdh",recordSet.getString("clxcdh")); requestid.add(recordSet.getString("requestid")); // requestname.add(recordSet.getString("requestname")); // clxcdh.add(recordSet.getString("clxcdh")); records.add(record); HashMap specialobj = new HashMap<>(); specialobj.put("id",recordSet.getString("requestid")); specialobj.put("name",recordSet.getString("qjbt")); specialobjs.add(specialobj); i++; } HashMap result = new HashMap<>(); result.put("code",0); result.put("count",i); result.put("requestid",String.join(",",requestid)); result.put("requestname",String.join(",",requestname)); result.put("clxcdh",String.join(",",clxcdh)); result.put("specialobjs",specialobjs); result.put("result",records); out.print(JSONObject.toJSONString(result)); %> <%! private void writeLog(Object... log){ new BaseBean().writeLog("queryDuplicatedataSL===>"+ Arrays.toString(log));; } public static boolean isOverlapping(String start1, String end1, String start2, String end2) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); try { LocalDateTime dateTimeStart1 = LocalDateTime.parse(start1, formatter); LocalDateTime dateTimeEnd1 = LocalDateTime.parse(end1, formatter); LocalDateTime dateTimeStart2 = LocalDateTime.parse(start2, formatter); LocalDateTime dateTimeEnd2 = LocalDateTime.parse(end2, formatter); return !dateTimeStart1.isAfter(dateTimeEnd2) && !dateTimeEnd1.isBefore(dateTimeStart2); } catch (DateTimeParseException e) { e.printStackTrace(); return false; } } public static void removeElement(List> list , String key, String value){ Iterator> iterator = list.iterator(); while (iterator.hasNext()) { Map map = iterator.next(); if (map.getOrDefault(key, "").equals(value)) { iterator.remove(); } } } %>