package com.engine.jucailinkq.common.util; import com.engine.jucailinkq.attendance.attendanceanalysis.cmd.getclockInpoint.biz.AbstractAdjustClockPointAction; import com.engine.jucailinkq.attendance.component.persongroup.commonutil.PersongroupCommonUtil; import com.engine.jucailinkq.attendance.enums.ApplicableOrganizationEnum; import com.engine.jucailinkq.attendance.enums.CheckBoxEnum; import com.engine.jucailinkq.attendance.enums.PersonGroupListTypeEnum; import com.engine.jucailinkq.common.exception.AttendanceRunTimeException; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; import weaver.conn.RecordSetTrans; import weaver.general.Util; import weaver.hrm.company.DepartmentComInfo; import weaver.soa.workflow.request.*; import java.util.*; import java.util.stream.Collectors; @Slf4j public class CommonUtil { /** * 组装insert的sql语句 * @param tableName 表名 * @param map 列名及对应值 * @return */ public static boolean makeInsertSql(String tableName, Map map){ String insertSql = "insert into "+tableName; String key = "("; String value = "("; List dataList = Lists.newArrayList(); for (Map.Entry e : map.entrySet()){ if (e.getValue() != null && !"".equals(e.getValue())){ key = key + e.getKey() +","; value = value + "?" +","; // if (e.getKey().endsWith("date")){ // LocalDateTime localDateTime = DateUtil.getTime(String.valueOf(e.getValue())); // long datelong = localDateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli(); // dataList.add(new Date(datelong)); // }else { dataList.add(e.getValue()); // } } } key = key.substring(0,key.length()-1) + ")"; value = value.substring(0,value.length()-1)+")"; insertSql = insertSql + key +" values "+value; log.debug("makeInsertSql : [{}]",insertSql); log.debug("needInsertDate: [{}]",dataList); return DbTools.update(insertSql,dataList); } /** * 组装update的sql语句 * @param tableName 表名 * @param map 列名及对应值 * @param condition 条件 * @return */ public static String makeUpdateSql(String tableName, Map map,Map condition){ String updateSql = "update "+tableName+" set "; for (Map.Entry e : map.entrySet()){ if (e.getValue() !=null && !"".equals(e.getValue())){ updateSql = updateSql + e.getKey()+"='"+e.getValue().toString()+"',"; } } updateSql = updateSql.substring(0,updateSql.length()-1) + " where 1=1"; for (Map.Entry e : condition.entrySet()){ updateSql = updateSql + " and "+ e.getKey()+"='"+e.getValue()+"'"; } log.debug("makeUpdateSql : [{}]",updateSql); return updateSql; } /** * 批量插入 * @param dataList * @param tableName * @return */ public static boolean insertBatch(List> dataList, String tableName){ String sql = "insert into "+tableName; String key = "("; String value = "("; for (Map.Entry data : dataList.get(0).entrySet()){ key = key + data.getKey() +","; value = value + "?,"; } key = key.substring(0,key.length()-1) + ")"; value = value.substring(0,value.length()-1)+")"; sql = sql + key +" values "+value; log.debug("insertBatch sql :"+sql); List insertDataList = Lists.newArrayList(); for (Map dataMap : dataList){ ArrayList list = new ArrayList<>(); for (Map.Entry entry : dataMap.entrySet()){ list.add(entry.getValue()); } insertDataList.add(list); } log.debug("insertBatch : [{}]",insertDataList); return DbTools.updateBatch(sql,insertDataList); } /** * 获得包含该人员的适用范围的模块的数据id,按照人员-人员分组-部门-分部优先级取到最优先的 * @param resourceId * @param modeId * @param startDate * @param endDate * @return */ public static Set getDataIds(String resourceId,String modeId,String startDate,String endDate){ String sql = "select dxlx,dataid,dx from uf_jcl_syzz where modeid=?"; List> organizationList = DbTools.getSqlToList(sql,modeId); sql = "select id,departmentid,subcompanyid1 from hrmresource where id =?"; Map departMentMap = DbTools.getSqlToMap(sql,resourceId); Set dataIds = Sets.newHashSet(); Map>> organizationListGroupBydxlx = organizationList.stream().collect(Collectors.groupingBy(e ->e.get("dxlx").toString())); //对象类型为人员 List> personOrganizationList = organizationListGroupBydxlx.get("0"); //对象类型为人员组织 List> personGroupOrganizationList = organizationListGroupBydxlx.get("1"); //对象类型为部门 List> departmentOrganizationList = organizationListGroupBydxlx.get("2"); //对象类型为分部 List> subCompanyOrganizationList = organizationListGroupBydxlx.get("3"); if (personOrganizationList != null){ for (Map personOrganization :personOrganizationList){ String dx = Util.null2String(personOrganization.get("dx")); String ids = dx.split("-")[0]; if (ids.equals(resourceId)){ dataIds.add(Util.null2String(personOrganization.get("dataid"))); } } } if (personGroupOrganizationList != null && dataIds.size() ==0){ Set personGroupIds = personGroupOrganizationList.stream().map(e -> Util.null2String(e.get("dx")).split("-")[0]).collect(Collectors.toSet()); sql = "select mainid,empid,filters,bdate,edate from uf_ryqz_dt1 where mainid in ("+String.join(",",personGroupIds)+")"; log.debug("query personGroupData : {}",sql); List> personGroupData = DbTools.getSqlToList(sql); Set personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,startDate,endDate); log.debug("personnelGroupIds : {}",personnelGroupIds); for (Map personGroupOrganization :personGroupOrganizationList){ String personnelGroupId = Util.null2String(personGroupOrganization.get("dx")).split("-")[0]; if (personnelGroupIds.contains(personnelGroupId)){ dataIds.add(Util.null2String(personGroupOrganization.get("dataid"))); } } } try { if (departmentOrganizationList != null && dataIds.size() ==0){ String deptid = Util.null2String(departMentMap.get("departmentid")); String pdeptids = ""; pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(departMentMap.get("departmentid")), pdeptids); pdeptids = deptid + pdeptids; log.debug("pdeptids : [{}]",pdeptids); for (Map departmentOrganization :departmentOrganizationList){ String dx = Util.null2String(departmentOrganization.get("dx")); String ids = dx.split("-")[0]; for (String pdeptid : pdeptids.split(",")){ if (pdeptid.equals(ids)){ dataIds.add(Util.null2String(departmentOrganization.get("dataid"))); } } } } }catch (Exception e){ log.error("catch error :{}",e); } if (subCompanyOrganizationList != null && dataIds.size() ==0){ String subCompanyId = Util.null2String(departMentMap.get("subcompanyid1")); for (Map subCompanyOrganization :subCompanyOrganizationList){ String dx = Util.null2String(subCompanyOrganization.get("dx")); String ids = dx.split("-")[0]; if (ids.equals(subCompanyId)){ dataIds.add(Util.null2String(subCompanyOrganization.get("dataid"))); } } } log.debug("dataIds : {}",dataIds); return dataIds; } /** * 获得包含该人员的适用范围的模块的所有数据id,给班次适用范围用 * @param resourceId * @param modeId * @param startDate * @param endDate * @return */ public static Set getAllDataIds(String resourceId,String modeId,String startDate,String endDate){ String sql = "select dxlx,dataid,dx from uf_jcl_syzz where modeid=?"; List> organizationList = DbTools.getSqlToList(sql,modeId); sql = "select id,departmentid,subcompanyid1 from hrmresource where id =?"; Map departMentMap = DbTools.getSqlToMap(sql,resourceId); Set dataIds = Sets.newHashSet(); Map>> organizationListGroupBydxlx = organizationList.stream().collect(Collectors.groupingBy(e ->e.get("dxlx").toString())); //对象类型为人员 List> personOrganizationList = organizationListGroupBydxlx.get("0"); //对象类型为人员组织 List> personGroupOrganizationList = organizationListGroupBydxlx.get("1"); //对象类型为部门 List> departmentOrganizationList = organizationListGroupBydxlx.get("2"); //对象类型为分部 List> subCompanyOrganizationList = organizationListGroupBydxlx.get("3"); if (personOrganizationList != null){ for (Map personOrganization :personOrganizationList){ String dx = Util.null2String(personOrganization.get("dx")); String ids = dx.split("-")[0]; if (ids.equals(resourceId)){ dataIds.add(Util.null2String(personOrganization.get("dataid"))); } } } if (personGroupOrganizationList != null){ Set personGroupIds = personGroupOrganizationList.stream().map(e -> Util.null2String(e.get("dx")).split("-")[0]).collect(Collectors.toSet()); sql = "select mainid,empid,filters,bdate,edate from uf_ryqz_dt1 where mainid in ("+String.join(",",personGroupIds)+")"; log.debug("query personGroupData : {}",sql); List> personGroupData = DbTools.getSqlToList(sql); Set personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,startDate,endDate); log.debug("personnelGroupIds : {}",personnelGroupIds); for (Map personGroupOrganization :personGroupOrganizationList){ String personnelGroupId = Util.null2String(personGroupOrganization.get("dx")).split("-")[0]; if (personnelGroupIds.contains(personnelGroupId)){ dataIds.add(Util.null2String(personGroupOrganization.get("dataid"))); } } } try { if (departmentOrganizationList != null){ String deptid = Util.null2String(departMentMap.get("departmentid")); String pdeptids = ""; pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(departMentMap.get("departmentid")), pdeptids); pdeptids = deptid + pdeptids; log.debug("pdeptids : [{}]",pdeptids); for (Map departmentOrganization :departmentOrganizationList){ String dx = Util.null2String(departmentOrganization.get("dx")); String ids = dx.split("-")[0]; for (String pdeptid : pdeptids.split(",")){ if (pdeptid.equals(ids)){ dataIds.add(Util.null2String(departmentOrganization.get("dataid"))); } } } } }catch (Exception e){ log.error("catch error :{}",e); } if (subCompanyOrganizationList != null){ String subCompanyId = Util.null2String(departMentMap.get("subcompanyid1")); for (Map subCompanyOrganization :subCompanyOrganizationList){ String dx = Util.null2String(subCompanyOrganization.get("dx")); String ids = dx.split("-")[0]; if (ids.equals(subCompanyId)){ dataIds.add(Util.null2String(subCompanyOrganization.get("dataid"))); } } } log.debug("dataIds : {}",dataIds); return dataIds; } public static boolean ifContainStr(String fatherStr,String sonStr,String mark){ for (String pdeptid : fatherStr.split(mark)){ if (pdeptid.equals(sonStr)){ return true; } } return false; } /** * 根据流程requestInfo消息对象获取流程主表字段的信息的map集合 * @param requestInfo * @return */ public static HashMap getMainTableInfo(RequestInfo requestInfo){ HashMap mainMap = new HashMap(); Property[] properties = requestInfo.getMainTableInfo().getProperty();// 获取表单主字段信息 for (int i = 0; i < properties.length; i++) { String name = properties[i].getName();// 主字段名称 String value = Util.null2String(properties[i].getValue());// 主字段对应的值 mainMap.put(name, value); } mainMap.put("id",String.valueOf(requestInfo.getRequestManager().getBillid())); return mainMap; } /** * 明细 * @param request * @return */ public static List> getDetailTableInfo(RequestInfo request, int index) { // 获取明细的信息 List> list = new ArrayList>(); DetailTable[] detailtables = request.getDetailTableInfo().getDetailTable();// 获取明细表数据 if (detailtables.length > index) { DetailTable dt = detailtables[index];// 获取明细表 0代表明细表1 log.debug("getDetailTableInfo :[{}]",dt.getTableDBName()); Row[] rows = dt.getRow();// 获取明细表中所有行的信息 for (int i = 0; i < rows.length; i++) { Row row = rows[i];// 获取具体行信息 Cell[] cells = row.getCell();// 获取具体行所有列的信息 Map map = new HashMap(); for (int j = 0; j < cells.length; j++) { Cell cell = cells[j]; String name = cell.getName().toLowerCase();// 获取字段名 String value = cell.getValue();// 获取具体的值 map.put(name, value); } map.put("id",row.getId()); list.add(map); } } return list; } /** * 获取适用范围对应的人员id列表,适用范围由dataId和modeId获得 * @param dataId * @param modeId * @return */ public static List getEmpIds(String dataId,String modeId) { List empIdList = new ArrayList<>(); String sql = "select dxlx,aqjb,dx from uf_jcl_syzz where modeid=? and dataid = ?"; //适用组织所有值集合 List> organizationList = DbTools.getSqlToListKeySmallLetter(sql,modeId, dataId); //分组 List> empIdInfos = new ArrayList<>(); List> empGroupIdInfos = new ArrayList<>(); List> depIdInfos = new ArrayList<>(); List> subCompanyIdInfos = new ArrayList<>(); for (Map organization : organizationList){ String id = Util.null2String(organization.get("dx")).split("-")[0]; String securityLevel = Util.null2String(organization.get("aqjb")); String[] securityLevelArr = securityLevel.split("-"); String minSecurityLevel = securityLevel.substring(0, 1).equals("-") ? "" : securityLevelArr[0]; String maxSecurityLevel = ""; if (securityLevelArr.length == 1 && !securityLevelArr[0].equals(minSecurityLevel)) { maxSecurityLevel = securityLevelArr[0]; } else if (securityLevelArr.length == 2) { maxSecurityLevel = securityLevelArr[1]; } if (ApplicableOrganizationEnum.PERSONNEL.getKey().equals(organization.get("dxlx"))){ Map infoItem = new HashMap<>(); infoItem.put("id", id); infoItem.put("minSecurityLevel", minSecurityLevel); infoItem.put("maxSecurityLevel", maxSecurityLevel); empIdInfos.add(infoItem); }else if (ApplicableOrganizationEnum.PERSONNEL_GROUP.getKey().equals(organization.get("dxlx"))){ Map infoItem = new HashMap<>(); infoItem.put("id", id); infoItem.put("minSecurityLevel", minSecurityLevel); infoItem.put("maxSecurityLevel", maxSecurityLevel); empGroupIdInfos.add(infoItem); }else if (ApplicableOrganizationEnum.DEPARTMENT.getKey().equals(organization.get("dxlx"))){ Map infoItem = new HashMap<>(); infoItem.put("id", id); infoItem.put("minSecurityLevel", minSecurityLevel); infoItem.put("maxSecurityLevel", maxSecurityLevel); depIdInfos.add(infoItem); }else if (ApplicableOrganizationEnum.SUBCOMPANY.getKey().equals(organization.get("dxlx"))){ Map infoItem = new HashMap<>(); infoItem.put("id", id); infoItem.put("minSecurityLevel", minSecurityLevel); infoItem.put("maxSecurityLevel", maxSecurityLevel); subCompanyIdInfos.add(infoItem); } } //人员类型 log.debug("empIdInfos : " + empIdInfos); for (Map map : empIdInfos) { String id = map.get("id"); String minSecurityLevel = map.get("minSecurityLevel"); String maxSecurityLevel = map.get("maxSecurityLevel"); //查询目标人员信息 String querySql = "select * from hrmresource where id = " + id; if (!minSecurityLevel.equals("")) { querySql = querySql + " and seclevel >= " +minSecurityLevel; } if (!maxSecurityLevel.equals("")) { querySql = querySql + " and seclevel <= " +maxSecurityLevel; } Map data = DbTools.getSqlToMap(querySql); log.debug("querySql : " + querySql); if (data.size() > 0) { empIdList.add(id); } } //人员分组类型 log.debug("empGroupIdInfos : " + empGroupIdInfos); for (Map map : empGroupIdInfos) { String id = map.get("id"); String minSecurityLevel = map.get("minSecurityLevel"); String maxSecurityLevel = map.get("maxSecurityLevel"); //获取分组包含人员id Set empIdsByGroup = getEmpGroupUserIds(id); log.debug("empGroupId : " + id + ", empIdsByGroup : " + empIdsByGroup); //查询目标人员信息 if (empIdsByGroup.size() > 0) { String querySql = "select * from hrmresource where id in ("+String.join(",",empIdsByGroup)+")"; if (!minSecurityLevel.equals("")) { querySql = querySql + " and seclevel >= " +minSecurityLevel; } if (!maxSecurityLevel.equals("")) { querySql = querySql + " and seclevel <= " +maxSecurityLevel; } List> datas = DbTools.getSqlToListKeySmallLetter(querySql); log.debug("querySql : " + querySql); if (datas.size() > 0) { log.debug("datas.size : " + datas.size()); datas.forEach(f -> empIdList.add(f.get("id").toString())); } } } //部门类型 log.debug("depIdInfos : " + depIdInfos); for (Map map : depIdInfos) { String id = map.get("id"); String minSecurityLevel = map.get("minSecurityLevel"); String maxSecurityLevel = map.get("maxSecurityLevel"); //查询目标人员信息 String querySql = "select * from hrmresource where departmentid = " + id; if (!minSecurityLevel.equals("")) { querySql = querySql + " and seclevel >= " +minSecurityLevel; } if (!maxSecurityLevel.equals("")) { querySql = querySql + " and seclevel <= " +maxSecurityLevel; } List> datas = DbTools.getSqlToListKeySmallLetter(querySql); log.debug("querySql : " + querySql); if (datas.size() > 0) { log.debug("datas.size : " + datas.size()); datas.forEach(f -> empIdList.add(f.get("id").toString())); } } //分部类型 log.debug("subCompanyIdInfos : " + subCompanyIdInfos); for (Map map : subCompanyIdInfos) { String id = map.get("id"); String minSecurityLevel = map.get("minSecurityLevel"); String maxSecurityLevel = map.get("maxSecurityLevel"); //查询目标人员信息 String querySql = "select * from hrmresource where subcompanyid1 = " + id; if (!minSecurityLevel.equals("")) { querySql = querySql + " and seclevel >= " +minSecurityLevel; } if (!maxSecurityLevel.equals("")) { querySql = querySql + " and seclevel <= " +maxSecurityLevel; } List> datas = DbTools.getSqlToListKeySmallLetter(querySql); log.debug("querySql : " + querySql); if (datas.size() > 0) { log.debug("datas.size : " + datas.size()); datas.forEach(f -> empIdList.add(f.get("id").toString())); } } return empIdList; } /** * 获得人员分组下面的人员集合 * @param empGroupId * @return 人员id集合 */ public static Set getEmpGroupUserIds(String empGroupId){ String sql = "select b.mainid,b.empid,b.filters,b.bdate,b.edate,a.list_type from uf_ryqz a left join uf_ryqz_dt1 b on a.id=b.mainid where mainid = " + empGroupId; List> personGroupDataList = DbTools.getSqlToListKeySmallLetter(sql); Set empIdList = Sets.newHashSet(); for (Map personGroupData :personGroupDataList){ String id = Util.null2String(personGroupData.get("mainid")); String empid = Util.null2String(personGroupData.get("empid")); String filters = Util.null2String(personGroupData.get("filters")); String list_type = Util.null2String(personGroupData.get("list_type")); if ("0".equals(list_type) && !"".equals(empid)){ //人员清单 empIdList.add(empid); }else if ("1".equals(list_type) && !"".equals(filters)){ //条件清单 sql = "select id,seclevel from hrmresource where 1=1 "; filters = filters.replace("and","and"); filters = filters.replace("or","or"); if (filters.contains("field")){ sql = "select a.id,a.seclevel from hrmresource a left join cus_fielddata b on a.id=b.id where scope='HrmCustomFieldByInfoType' and "+filters; }else { sql = sql+ " and "+filters; } log.debug("getPersonnelGroupingByPerson filter sql : {}",sql); List> dataList = DbTools.getSqlToListKeySmallLetter(sql); for (Map dataMap :dataList){ String hrmId = Util.null2String(dataMap.get("id")); String seclevel = Util.null2String(dataMap.get("seclevel")); empIdList.add(hrmId); } } } return empIdList; } /** * 获得人员分组下面的人员信息映射,人员id-起始生效期、结束生效期信息 * @param empGroupId 分组id * @return */ public static Map getEmpGroupUserInfo(String empGroupId){ String sql = "select b.mainid,b.empid,b.filters,b.bdate,b.edate,a.list_type from uf_ryqz a left join uf_ryqz_dt1 b on a.id=b.mainid where mainid = " + empGroupId; List> personGroupDataList = DbTools.getSqlToListKeySmallLetter(sql); Map empGroupUserInfo = new HashMap<>(); Map forceTimeItem = null; List> forceTimeItemList = null; for (Map personGroupData :personGroupDataList){ String id = Util.null2String(personGroupData.get("mainid")); String empid = Util.null2String(personGroupData.get("empid")); String bdate = Util.null2String(personGroupData.get("bdate")); String edate = Util.null2String(personGroupData.get("edate")); String filters = Util.null2String(personGroupData.get("filters")); String list_type = Util.null2String(personGroupData.get("list_type")); if ("0".equals(list_type) && !"".equals(empid)){ //人员清单 empGroupUserInfo.put("listType", PersonGroupListTypeEnum.PERSON.getKey()); forceTimeItem = new HashMap<>(); forceTimeItem.put("startDate", bdate); forceTimeItem.put("endDate", edate); empGroupUserInfo.put(empid, forceTimeItem); }else if ("1".equals(list_type) && !"".equals(filters)){ empGroupUserInfo.put("listType", PersonGroupListTypeEnum.CONDITION.getKey()); //条件清单 sql = "select id,seclevel from hrmresource where 1=1 "; filters = filters.replace("and","and"); filters = filters.replace("or","or"); if (filters.contains("field")){ sql = "select a.id,a.seclevel from hrmresource a left join cus_fielddata b on a.id=b.id where scope='HrmCustomFieldByInfoType' and "+filters; }else { sql = sql+ " and "+filters; } log.debug("getPersonnelGroupingByPerson filter sql : {}",sql); List> dataList = DbTools.getSqlToListKeySmallLetter(sql); for (Map dataMap :dataList){ String hrmId = Util.null2String(dataMap.get("id")); String seclevel = Util.null2String(dataMap.get("seclevel")); if (empGroupUserInfo.get(hrmId) == null) { forceTimeItemList = new ArrayList<>(); forceTimeItem = new HashMap<>(); forceTimeItem.put("startDate", bdate); forceTimeItem.put("endDate", edate); forceTimeItemList.add(forceTimeItem); empGroupUserInfo.put(hrmId, forceTimeItemList); } else { List> existForceTimeItemList = (List>) empGroupUserInfo.get(hrmId); forceTimeItem = new HashMap<>(); forceTimeItem.put("startDate", bdate); forceTimeItem.put("endDate", edate); existForceTimeItemList.add(forceTimeItem); empGroupUserInfo.put(hrmId, existForceTimeItemList); } } } } return empGroupUserInfo; } /** * 获取附带假期使用额度概念的假期类型列表 * @return */ public static List getJqInfoWithAmount() { List jqIdList = new ArrayList<>(); //来自假期额度 String sql1 = "select * from uf_jcl_kq_jqed"; List> data1 = DbTools.getSqlToList(sql1); for (Map map : data1) { jqIdList.add(Util.null2String(map.get("jb"))); } //来自加班类型的考勤项目中关联的假期类型 String sql2 = "select * from uf_jcl_kq_kqxm where xmlx = 4 and jbzdzjqye = 1"; List> data2 = DbTools.getSqlToList(sql2); for (Map map : data2) { String jqId = Util.null2String(map.get("zrdjb")); if (!"".equals(jqId)) { jqIdList.add(jqId); } } jqIdList = jqIdList.stream().distinct().collect(Collectors.toList()); return jqIdList; } /** * 获得人员对应日期所属的日期类型 * @param userId * @param date * @return */ public static String getRqlx(String userId,String date){ String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_rlmc"); Set calendarSetIdsSets = CommonUtil.getDataIds(userId,modeId,DateUtil.getCurrentDate(),DateUtil.getCurrentDate()); log.debug("getRqlx calendarSetIdsSets : [{}]",calendarSetIdsSets); String rqlx = ""; if (calendarSetIdsSets.size() > 0){ String sql = "select rqlx from uf_jcl_kq_rlxx where rlmc=? and rq=?"; List> dataList = DbTools.getSqlToList(sql,calendarSetIdsSets.toArray()[0],date); if (dataList.size() > 0){ rqlx = dataList.get(0).get("rqlx").toString(); }else { sql = "select subcompanyid1 from hrmresource where id =?"; Map departMentMap = DbTools.getSqlToMap(sql,userId); String subcompanyid1 = departMentMap.get("subcompanyid1").toString(); rqlx = Utils.getDefaultDateType(subcompanyid1,date); } }else { String sql = "select subcompanyid1 from hrmresource where id =?"; Map departMentMap = DbTools.getSqlToMap(sql,userId); String subcompanyid1 = departMentMap.get("subcompanyid1").toString(); rqlx = Utils.getDefaultDateType(subcompanyid1,date); } return rqlx; } /** * 获得人员对应年份所属的日期类型集合 * @param userId * @param year * @return */ public static List> getYearCalendarList(String userId,String year){ String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_rlmc"); Set calendarSetIdsSets = CommonUtil.getDataIds(userId,modeId,DateUtil.getCurrentDate(),DateUtil.getCurrentDate()); log.debug("getRqlx calendarSetIdsSets : [{}]",calendarSetIdsSets); List> resultList = Lists.newArrayList(); if (calendarSetIdsSets.size() > 0){ String sql = "select rqlx,rq from uf_jcl_kq_rlxx where rlmc=? and nd=?"; resultList = DbTools.getSqlToList(sql,calendarSetIdsSets.toArray()[0],year); if (resultList.size() == 0){ sql = "select subcompanyid1 from hrmresource where id =?"; Map departMentMap = DbTools.getSqlToMap(sql,userId); String subcompanyid1 = departMentMap.get("subcompanyid1").toString(); resultList = Utils.getDefaultDateList(subcompanyid1,year); } }else { String sql = "select subcompanyid1 from hrmresource where id =?"; Map departMentMap = DbTools.getSqlToMap(sql,userId); String subcompanyid1 = departMentMap.get("subcompanyid1").toString(); resultList = Utils.getDefaultDateList(subcompanyid1,year); } return resultList; } /** * 获得该班次是否休息 * @param classId * @return */ public static String ifrestByClass(String classId){ String sql = "select id,sfxx from uf_jcl_kq_bcxx where id = ?"; List> list = DbTools.getSqlToList(sql,classId); if (list.size() > 0){ return Util.null2String(list.get(0).get("sfxx")).equals("") ?CheckBoxEnum.UNCHECKED.getValue() : Util.null2String(list.get(0).get("sfxx")); }else { return CheckBoxEnum.UNCHECKED.getKey(); } } /** * 获取人员id和姓名的映射 * @return */ public static Map empIdToNameInfo() { Map resultMap = new HashMap<>(); String sql = "select id,lastname from hrmresource"; List> list = DbTools.getSqlToList(sql); for (Map map : list) { resultMap.put(map.get("id").toString(), Util.null2String(map.get("lastname"))); } return resultMap; } /** * 获取分部id和名称的映射 * @return */ public static Map subCompanyIdToNameInfo() { Map resultMap = new HashMap<>(); String sql = "select id,subcompanyname from hrmsubcompany"; List> list = DbTools.getSqlToList(sql); for (Map map : list) { resultMap.put(map.get("id").toString(), Util.null2String(map.get("subcompanyname"))); } return resultMap; } /** * 获取部门id和名称的映射 * @return */ public static Map depIdToNameInfo() { Map resultMap = new HashMap<>(); String sql = "select id,departmentname from hrmdepartment"; List> list = DbTools.getSqlToList(sql); for (Map map : list) { resultMap.put(map.get("id").toString(), Util.null2String(map.get("departmentname"))); } return resultMap; } /** * 获取考勤项目id和名称的映射 * @return */ public static Map kqxmIdToNameInfo() { Map resultMap = new HashMap<>(); String sql = "select id,mc from uf_jcl_kq_kqxm"; List> list = DbTools.getSqlToList(sql); for (Map map : list) { resultMap.put(map.get("id").toString(), Util.null2String(map.get("mc"))); } return resultMap; } /** * 初始化扩展类 */ public static void initExtensionClassHolder(){ String sql = "select id,jkdzlwj,jkdzsxlx,zt,zhsx,jkdzdybc from uf_jcl_kq_ywdmjc where zt=0"; List> dataList = DbTools.getSqlToList(sql); sql = "select a.id,b.csmc,b.csz from uf_jcl_kq_ywdmjc a left join uf_jcl_kq_ywdmjc_dt1 b on a.id=b.mainid where a.zt=0"; Map>> detailDataGroupMap = DbTools.getSqlToList(sql).stream().collect(Collectors.groupingBy(e->e.get("id").toString())); try { //打卡卡点扩展类 List adjustClockPointAction = Lists.newArrayList(); List> adjustClockPointActionResultList = dataList.stream().filter(e->"0".equals(e.get("jkdzsxlx"))).sorted(Comparator.comparing(e->Integer.valueOf(e.get("zhsx").toString()))).collect(Collectors.toList()); for (Map adjustClockPointActionMap:adjustClockPointActionResultList){ String classPath = adjustClockPointActionMap.get("jkdzlwj").toString(); AbstractAdjustClockPointAction action = (AbstractAdjustClockPointAction)Class.forName(classPath).newInstance(); action.setApplyClasses(Util.null2String(adjustClockPointActionMap.get("jkdzdybc"))); List> detailDataList = detailDataGroupMap.get(adjustClockPointActionMap.get("id")); if (detailDataList != null && detailDataList.size() > 0){ Map paramMap = Maps.newHashMap(); for (Map detailData:detailDataList){ paramMap.put(Util.null2String(detailData.get("csmc")),Util.null2String(detailData.get("csz"))); } action.setParams(paramMap); } adjustClockPointAction.add(action); } ExtensionClassHolder.setAdjustClockPointAction(adjustClockPointAction); }catch (Exception e){ log.error("initExtensionClassHolder fail"); throw new AttendanceRunTimeException("初始化扩展类失败"); } } /** * 根据班段类型获得对应的子项目 * @param itemMap * @param bdlx * @return */ public static Map assembleAskForOrEvectionItem(Map itemMap,String bdlx){ List> sonItems = (List>)itemMap.get("sonItems"); String workfor = Utils.getWorkFor(bdlx); if (sonItems != null && sonItems.size() > 0){ for (Map sonItem:sonItems){ String zysd = Util.null2String(sonItem.get("zysd")); if (zysd.equals(workfor)){ return sonItem; } } } return null; } }