You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
162 lines
6.7 KiB
Plaintext
162 lines
6.7 KiB
Plaintext
2 years ago
|
|
||
|
|
||
|
|
||
|
<%@ 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<String, Object> 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<Map<String, String>> records = new ArrayList<>();
|
||
|
ArrayList<Map<String, String>> specialobjs = new ArrayList<>();
|
||
|
ArrayList<String> requestid = new ArrayList<>();
|
||
|
ArrayList<String> requestname = new ArrayList<>();
|
||
|
ArrayList<String> clxcdh = new ArrayList<>();
|
||
|
int i = 0;
|
||
|
while (recordSet.next()){
|
||
|
HashMap<String, String> 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<String, String> 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<String> 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<String, String> 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<String, String> specialobj = new HashMap<>();
|
||
|
specialobj.put("id",recordSet.getString("requestid"));
|
||
|
specialobj.put("name",recordSet.getString("qjbt"));
|
||
|
specialobjs.add(specialobj);
|
||
|
i++;
|
||
|
}
|
||
|
HashMap<String, Object> 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<Map<String, String>> list , String key, String value){
|
||
|
|
||
|
Iterator<Map<String, String>> iterator = list.iterator();
|
||
|
while (iterator.hasNext()) {
|
||
|
Map<String, String> map = iterator.next();
|
||
|
if (map.getOrDefault(key, "").equals(value)) {
|
||
|
iterator.remove();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
%>
|