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.

177 lines
7.4 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_213
//请休假审批单-总行部门副职 formtable_main_214
//差旅审批单-总行员工正式 formtable_main_217
//测试环境的
2 years ago
// String ZZform = "formtable_main_213";
// String FZform = "formtable_main_214";
// String YGform = "formtable_main_217";
2 years ago
//生产环境的
2 years ago
String ZZform = "formtable_main_214";
String FZform = "formtable_main_215";
String YGform = "formtable_main_292";
2 years ago
String sql = "select main.*,req.*,record.workflowcode 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 += " left join workflow_codeseqrecord record on main.REQUESTID = record.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("workflowcode")) ;
specialobjs.add(specialobj);
i++;
}
// out.print(requestid.toString());
//查看变更单是否有对冲突时间流程的修改
2 years ago
String querybgdsql = "select * from formtable_main_293 where id = " +
"(select max(id) from formtable_main_293 where dcyslc = ? )";
2 years ago
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");
// out.print(start);
// out.print(end);
// out.print(startDate);
// out.print(endDate);
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;
//再查询下变更表里有没有变更后冲突的数据
2 years ago
String queryBGBSql = "select main.*,req.*,record.workflowcode from formtable_main_293 main left join workflow_requestBase base " +
2 years ago
"on main.requestid = base.requestid " +
" left join workflow_codeseqrecord record on main.REQUESTID = record.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("workflowcode"));
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");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
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();
}
}
}
%>