package com.api.aiyh_guijiu.dao; import aiyh.utils.Util; import aiyh.utils.zwl.common.ToolUtil; import com.api.aiyh_guijiu.pojo.UfWorkflowConflicDt1DTO; import com.api.aiyh_guijiu.pojo.WorkflowBaseInfoDTO; import com.api.aiyh_guijiu.pojo.WorkflowConfigDTO; import com.api.aiyh_guijiu.vo.ConfigInfoVo; import org.h2.util.StringUtils; import weaver.conn.RecordSet; import weaver.workflow.workflow.WorkflowVersion; import java.util.ArrayList; import java.util.List; /** * @author EBU7-dev1-ayh * @create 2021/9/10 0010 11:27 * 查询配置信息 */ public class ConflictWorkflowDao { RecordSet rs = new RecordSet(); ToolUtil toolUtil = new ToolUtil(); public List queryConfig(String workflowId) { String query = "select * from uf_workflow_conflic_dt1 " + "where workflow_type in (select id from workflow_base " + "where activeVersionID in (select activeVersionID " + "from workflow_base where id = ?) or id = ?)"; rs.executeQuery(query, workflowId, workflowId); UfWorkflowConflicDt1DTO ufWorkflowConflicDt1DTO = Util.recordeSet2Entity(rs, UfWorkflowConflicDt1DTO.class, true); if (ufWorkflowConflicDt1DTO == null) { return null; } // String ids = WorkflowVersion.getVersionStringByWfid(workflowId); query = "select dt.id,dt.workflow_type,main.enable,wf.tablename,wf.fieldname start_date_field, " + "wf1.fieldname start_time_field,wf2.fieldname end_date_field,wf4.fieldname hrm_field, " + "wf3.fieldname end_time_field from uf_workflow_conflic main " + "left join uf_workflow_conflic_dt1 dt on dt.mainid = main.id " + "left join workflow_field_table_view wf on wf.id = dt.start_date_field " + "left join workflow_field_table_view wf1 on wf1.id = dt.start_time_field " + "left join workflow_field_table_view wf2 on wf2.id = dt.end_date_field " + "left join workflow_field_table_view wf3 on wf3.id = dt.end_time_field " + "left join workflow_field_table_view wf4 on wf4.id = dt.hrm_field " + "where main.id = ? and main.enable = 0"; // and dt.workflow_type not in (" + ids + ") rs.executeQuery(query, ufWorkflowConflicDt1DTO.getMainid()); return Util.recordeSet2Array(rs, WorkflowConfigDTO.class, true); } public List queryConflict(WorkflowConfigDTO workflowConfigDTO, String startTime , String startDate, String endTime, String endDate, String hrmId, String requestId) { // (a,b)(c,d) == > (2021-09-10 12:00:23 , 2021-09-10 20:00:23) (2021-09-10 15:00:23 , 2021-09-10 19:00:23) // select * from table where (hrm = ? or hrm like "%?%") and a <= d and b >= c and requestid != requestId; String query = "select id from " + workflowConfigDTO.getTablename() + " where (',' || " + workflowConfigDTO.getHrmField() +" || ',') like ('%,' || '" + hrmId + "' || ',%') " + " and requestid != " + requestId + " and " + workflowConfigDTO.getStartDateField() + " is not null " + " and " + workflowConfigDTO.getEndDateField() + " is not null" + (StringUtils.isNullOrEmpty(workflowConfigDTO.getStartTimeField()) ? "" : " and " + workflowConfigDTO.getStartTimeField() + " is not null") + (StringUtils.isNullOrEmpty(workflowConfigDTO.getEndTimeField()) ? "" : " and " + workflowConfigDTO.getEndTimeField() + " is not null"); rs.executeQuery(query); List integers = Util.recordeSet2Array(rs, String.class); String ids = String.join(",", integers); if(StringUtils.isNullOrEmpty(ids)){ ids = "-1"; } query = "select * from " + workflowConfigDTO.getTablename() + " where to_date(concat(" + workflowConfigDTO.getStartDateField() + " || ' ' ," + (StringUtils.isNullOrEmpty(workflowConfigDTO.getStartTimeField()) ? "'00:00:00'" : workflowConfigDTO.getStartTimeField()) + "), 'yyyy-mm-dd hh24:mi:ss') <= to_date('" + endDate + " " + (StringUtils.isNullOrEmpty(endTime) ? "23:59:59" : endTime) + "', 'yyyy-mm-dd hh24:mi:ss')" + " and to_date(concat(" + workflowConfigDTO.getEndDateField() + " || ' ' ," + (StringUtils.isNullOrEmpty(workflowConfigDTO.getEndTimeField()) ? "'23:59:59'" : workflowConfigDTO.getEndTimeField()) + "), 'yyyy-mm-dd hh24:mi:ss') >= to_date('" + startDate + " " + (StringUtils.isNullOrEmpty(startTime) ? "00:00:00" : startTime) + "', 'yyyy-mm-dd hh24:mi:ss') " + " and id in (" + ids + ")"; /*query = "select * from " + workflowConfigDTO.getTablename() + " where to_date(concat(" + workflowConfigDTO.getStartDateField() + " || ' ' ," + (StringUtils.isNullOrEmpty(workflowConfigDTO.getStartTimeField()) ? "'00:00:00'" : workflowConfigDTO.getStartTimeField()) + "), 'yyyy-mm-dd hh24:mi:ss') <= to_date('" + endDate + " " + (StringUtils.isNullOrEmpty(endTime) ? "23:59:59" : endTime) + "', 'yyyy-mm-dd hh24:mi:ss')" + " and to_date(concat(" + workflowConfigDTO.getEndDateField() + " || ' ' ," + (StringUtils.isNullOrEmpty(workflowConfigDTO.getEndTimeField()) ? "'23:59:59'" : workflowConfigDTO.getEndTimeField()) + "), 'yyyy-mm-dd hh24:mi:ss') >= to_date('" + startDate + " " + (StringUtils.isNullOrEmpty(startTime) ? "00:00:00" : startTime) + "', 'yyyy-mm-dd hh24:mi:ss') " + " and " + " (',' || " + workflowConfigDTO.getHrmField() + " || ',') like " + " ('%,' || '" + hrmId + "' || ',%') " + " and requestid != " + requestId;*/ /*hrmId + " in (select regexp_substr(hrm_str, '[^,]+', 1, level) " + "from dual connect by regexp_substr(hrm_str, '[^,]+', 1, level) is not null)" + " and requestid != " + requestId;*/ // toolUtil.writeErrorLog(query); // System.out.println(query); /*query = "select * from " + workflowConfigDTO.getTablename() + " where to_date(concat(" + workflowConfigDTO.getStartDateField() + " || ' ' ," + workflowConfigDTO.getStartTimeField() + "), 'yyyy-mm-dd hh24:mi:ss') <= to_date(concat(" + endDate + " " + endTime + "), 'yyyy-mm-dd hh24:mi:ss')" + " and " + workflowConfigDTO.getEndDateField() + " || ' ' ," + workflowConfigDTO.getEndTimeField() + "), 'yyyy-mm-dd hh24:mi:ss') >= to_date(concat(" + startDate + " " + startTime + "), 'yyyy-mm-dd hh24:mi:ss') " + hrmId + " and in (select regexp_substr(hrm_str, '[^,]+', 1, level) " + "from dual connect by regexp_substr(hrm_str, '[^,]+', 1, level) is not null)";*/ try { rs.executeQuery(query); }catch (Exception e){ toolUtil.writeErrorLog("查询重复的流程错误,错误信息:" + e); } List list = new ArrayList<>(); while(rs.next()){ // 存在时间段冲突的数据,查询冲突数据的流程信息 RecordSet rsT = new RecordSet(); requestId = Util.null2String(rs.getString("requestid")); query = "select distinct wrb.requestid,wrb.workflowid,wrb.requestnamenew,wb.workflowname, " + "(case when hr.lastname is null and wrb.creater != 1 then '未知' " + "when wrb.creater = 1 then '系统管理员' else hr.lastname end) creater, " + "wrb.createdate,wrb.createtime from workflow_requestbase wrb " + "left join HrmResource hr on wrb.creater = hr.id " + "left join workflow_base wb on wb.id = wrb.workflowid " + "where wrb.requestid = ?"; rsT.executeQuery(query, requestId); WorkflowBaseInfoDTO workflowBaseInfoDTO = Util.recordeSet2Entity(rsT, WorkflowBaseInfoDTO.class, true); list.add(workflowBaseInfoDTO); } // if (rs.next()) { // toolUtil.writeDebuggerLog("into next;"); //// 存在时间段冲突的数据,查询冲突数据的流程信息 // requestId = Util.null2String(rs.getString("requestid")); // query = "select wrb.workflowid,wrb.requestid,wrb.requestnamenew,wb.workflowname, " + // "(case when hr.lastname is null and wrb.creater != 1 then '未知' " + // "when wrb.creater = 1 then '系统管理员' else hr.lastname end) creater, " + // "wrb.createdate,wrb.createtime from workflow_requestbase wrb " + // "left join HrmResource hr on wrb.creater = hr.id " + // "left join workflow_base wb on wb.id = wrb.workflowid " + // "where wrb.requestid = ?"; // rs.executeQuery(query, requestId); // return Util.recordeSet2Entity(rs, WorkflowBaseInfoDTO.class, true); // } if(list.size() == 0){ return null; } return list; } public List getWatermarkConfig(String workflowId) { String query = "select id from workflow_base " + "where activeVersionID in (select activeVersionID " + "from workflow_base where id = ?) or id = ?"; rs.executeQuery(query, workflowId, workflowId); return Util.recordeSet2Array(rs, Integer.class); } public WorkflowConfigDTO getWorkflowConfig(String workflowId){ String query = "select * from uf_workflow_conflic_dt1 " + "where workflow_type in (select id from workflow_base " + "where activeVersionID in (select activeVersionID " + "from workflow_base where id = ?) or id = ?)"; rs.executeQuery(query, workflowId, workflowId); UfWorkflowConflicDt1DTO ufWorkflowConflicDt1DTO = Util.recordeSet2Entity(rs, UfWorkflowConflicDt1DTO.class, true); if (ufWorkflowConflicDt1DTO == null) { return null; } String ids = WorkflowVersion.getVersionStringByWfid(workflowId); query = "select dt.id,main.enable,wf.tablename,wf.fieldname start_date_field, " + "wf1.fieldname start_time_field,wf2.fieldname end_date_field,wf4.fieldname hrm_field, " + "wf3.fieldname end_time_field from uf_workflow_conflic main " + "left join uf_workflow_conflic_dt1 dt on dt.mainid = main.id " + "left join workflow_field_table_view wf on wf.id = dt.start_date_field " + "left join workflow_field_table_view wf1 on wf1.id = dt.start_time_field " + "left join workflow_field_table_view wf2 on wf2.id = dt.end_date_field " + "left join workflow_field_table_view wf3 on wf3.id = dt.end_time_field " + "left join workflow_field_table_view wf4 on wf4.id = dt.hrm_field " + "where main.id = ? and main.enable = 0 and dt.workflow_type in (" + ids + ")"; rs.executeQuery(query, ufWorkflowConflicDt1DTO.getMainid()); return Util.recordeSet2Entity(rs,WorkflowConfigDTO.class,true); } public ConfigInfoVo getConfigInfo(String tableName,String workflowId){ String query = "select cf.workflow_type ,cf.workflow_node ,cf.enable ,wf.fieldname workflow_field from " + tableName + " cf left join workflow_field_table_view wf on wf.id = cf.workflow_field " + " where cf.workflow_type = ?"; rs.executeQuery(query,workflowId); return Util.recordeSet2Entity(rs, ConfigInfoVo.class, true); } }