package com.engine.common.util; import com.engine.attendance.component.persongroup.commonutil.PersongroupCommonUtil; import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; 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 String makeInsertSql(String tableName, Map map){ String insertSql = "insert into "+tableName; String key = "("; String value = "("; for (Map.Entry e : map.entrySet()){ key = key + e.getKey() +","; value = value + "'"+e.getValue()+"'" +","; } key = key.substring(0,key.length()-1) + ")"; value = value.substring(0,value.length()-1)+")"; insertSql = insertSql + key +" values "+value; log.info("makeInsertSql :[{}]",insertSql); return insertSql; } /** * 组装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.info("makeUpdateSql : [{}]",updateSql); return updateSql; } 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.info("query personGroupData : {}",sql); List> personGroupData = DbTools.getSqlToList(sql); Set personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,startDate,endDate); log.info("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.info("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.info("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); } 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 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); } list.add(map); } } return list; } }