From de6f5503567c9fb594b31d16c167094697b2c7d0 Mon Sep 17 00:00:00 2001 From: liuliang <401809302@qq.com> Date: Mon, 11 Nov 2024 15:53:09 +0800 Subject: [PATCH] =?UTF-8?q?=E8=80=83=E5=8B=A4=E6=B5=81=E7=A8=8B=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E3=80=81=E7=94=9F=E6=88=90=E5=81=87=E6=9C=9F=E4=BD=99?= =?UTF-8?q?=E9=A2=9D=E3=80=81=E8=AF=B7=E5=81=87=E6=B5=81=E7=A8=8Baction?= =?UTF-8?q?=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../attendanceanalysis/cmd/RecordDataCmd.java | 5 +- .../web/AttendanceanalysisAction.java | 6 +- .../service/impl/WorkRulesServiceImpl.java | 3 + ...BatchAskForLeaveWorkFlowApproveAction.java | 5 +- ...tchAskForLeaveWorkFlowArchivingAction.java | 7 +- .../BatchAskForLeaveWorkFlowSubmitAction.java | 7 +- .../GenerateWorkflowVocationAction.java | 93 ++++++++++++++++ .../tactics/AskForLeaveWorkflowDataReset.java | 14 ++- .../cmd/GetPersonDateBySuitOrganzation.java | 3 +- .../jucailinkq/common/util/CommonUtil.java | 105 ++++++++++++++++++ 10 files changed, 228 insertions(+), 20 deletions(-) create mode 100644 src/com/engine/jucailinkq/attendance/workflow/action/askforleave/GenerateWorkflowVocationAction.java diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/RecordDataCmd.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/RecordDataCmd.java index 8f0164e..1419417 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/RecordDataCmd.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/RecordDataCmd.java @@ -319,7 +319,7 @@ public class RecordDataCmd extends AbstractCommonCommand> { }else{ double totalKtsc = newDataList.stream().mapToDouble(e->Double.valueOf(e.get("ktsc").toString())).sum(); double totalJxsc = newDataList.stream().mapToDouble(e->Double.valueOf(e.get("jxsc").toString())).sum(); - if (totalKtsc == 0){ + if (totalKtsc == 0 && totalJxsc==0){ //可休时长为0 deleteList.add(oldData.get("id").toString()); if (oldyxsc > 0){ @@ -327,6 +327,9 @@ public class RecordDataCmd extends AbstractCommonCommand> { revokeHoliday.add(oldData.get("id").toString()); } }else { + if (totalKtsc == 0 && oldyxsc > 0){ + revokeHoliday.add(oldData.get("id").toString()); + } Map newData = newDataList.get(0); newData.put("ktsc",String.format ("%.2f",totalKtsc)); newData.put("jxsc",String.format ("%.2f",totalJxsc)); diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java index 34a82db..689399f 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java @@ -46,9 +46,9 @@ public class AttendanceanalysisAction { log.info("********AttendanceanalysisAction start********"); Map paramMap = ParamUtil.request2Map(request); // Map paramMap = Maps.newHashMap(); -// paramMap.put("startDate","2024-10-18"); -// paramMap.put("endDate","2024-10-18"); -// paramMap.put("userIds","22"); +// paramMap.put("startDate","2024-11-03"); +// paramMap.put("endDate","2024-11-03"); +// paramMap.put("userIds","82"); String startDate = Util.null2String(paramMap.get("startDate")); String startBeforeDate = DateUtil.beforeDay(startDate,2); diff --git a/src/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java b/src/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java index cf8eace..b3ea749 100644 --- a/src/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java +++ b/src/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java @@ -483,6 +483,9 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService { } /**插入排班结果表*/ + if (organizationList.size() == 0){ + throw new AttendanceRunTimeException("没有需要更新的排班,请检查管理人员生效日期或联系管理员"); + } resultMap.put("result",PersongroupCommonUtil.insertSchedulingResults(organizationList,formmodeid)); if (!(boolean)resultMap.get("result")){ throw new AttendanceRunTimeException("插入数据失败,请检查修改班次人员是否有对应的企业日历"); diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowApproveAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowApproveAction.java index 7f20572..6c53f32 100644 --- a/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowApproveAction.java +++ b/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowApproveAction.java @@ -3,6 +3,7 @@ package com.engine.jucailinkq.attendance.workflow.action.askforleave; import com.engine.common.util.ServiceUtil; import com.engine.jucailinkq.attendance.component.AttendanceCycle.service.AttendanceCycleService; import com.engine.jucailinkq.attendance.component.AttendanceCycle.service.impl.AttendanceCycleServiceImpl; +import com.engine.jucailinkq.attendance.workflow.enums.WorkFlowTypeEnum; import com.engine.jucailinkq.common.util.CommonUtil; import com.engine.jucailinkq.common.util.DateUtil; import com.google.common.collect.Maps; @@ -28,10 +29,8 @@ public class BatchAskForLeaveWorkFlowApproveAction implements Action { public String execute(RequestInfo requestInfo) { String requestid = requestInfo.getRequestid(); log.debug("**********BatchAskForLeaveWorkFlowApproveAction import data start**********"); - // 流程表单主表数据 - HashMap mainTableData = CommonUtil.getMainTableInfo(requestInfo); // 流程表单明细表数据 - List> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0); + List> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0,WorkFlowTypeEnum.ASKFORLEAVE); log.info("detailTableData : [{}]", detailTableData); Map>> detailGroupMap = detailTableData.stream().collect(Collectors.groupingBy(e-> Util.null2String(e.get("qjr")))); diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowArchivingAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowArchivingAction.java index 034aadd..ad1f8b5 100644 --- a/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowArchivingAction.java +++ b/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowArchivingAction.java @@ -1,5 +1,6 @@ package com.engine.jucailinkq.attendance.workflow.action.askforleave; +import com.engine.jucailinkq.attendance.workflow.enums.WorkFlowTypeEnum; import com.engine.jucailinkq.common.util.CommonUtil; import com.engine.jucailinkq.common.util.DateUtil; import com.engine.jucailinkq.common.util.DbTools; @@ -30,14 +31,14 @@ public class BatchAskForLeaveWorkFlowArchivingAction implements Action { public String execute(RequestInfo requestInfo) { String requestid = requestInfo.getRequestid(); // 流程表单主表数据 - HashMap mainTableData = CommonUtil.getMainTableInfo(requestInfo); + HashMap mainTableData = CommonUtil.getMainTableInfo(requestInfo, WorkFlowTypeEnum.ASKFORLEAVE); log.info("mainTableData : [{}]",mainTableData); // 流程表单明细表1数据 - List> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0); + List> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0,WorkFlowTypeEnum.ASKFORLEAVE); log.info("detailTableData : [{}]",detailTableData); //流程表单明细表2数据 - List> detailTable2 = CommonUtil.getDetailTableInfo(requestInfo,1); + List> detailTable2 = CommonUtil.getDetailTableInfo(requestInfo,1,WorkFlowTypeEnum.ASKFORLEAVE); log.info("detailTable2Data : [{}]",detailTable2); //第一笔开始时间 diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowSubmitAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowSubmitAction.java index ae46986..6110efa 100644 --- a/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowSubmitAction.java +++ b/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowSubmitAction.java @@ -1,6 +1,7 @@ package com.engine.jucailinkq.attendance.workflow.action.askforleave; import com.engine.jucailinkq.attendance.enums.AccountingUnitEnum; +import com.engine.jucailinkq.attendance.workflow.enums.WorkFlowTypeEnum; import com.engine.jucailinkq.common.util.CommonUtil; import com.engine.jucailinkq.common.util.DbTools; import com.engine.jucailinkq.common.util.Utils; @@ -31,13 +32,13 @@ public class BatchAskForLeaveWorkFlowSubmitAction implements Action { log.info("billid : [{}]",billid); try { // 流程表单主表数据 - HashMap mainTableData = CommonUtil.getMainTableInfo(requestInfo); + HashMap mainTableData = CommonUtil.getMainTableInfo(requestInfo, WorkFlowTypeEnum.ASKFORLEAVE); log.info("mainTableData : [{}]", mainTableData); // 流程表单明细表1数据 - List> detailTableData = CommonUtil.getDetailTableInfo(requestInfo, 0); + List> detailTableData = CommonUtil.getDetailTableInfo(requestInfo, 0,WorkFlowTypeEnum.ASKFORLEAVE); log.info("detailTableData : [{}]", detailTableData); - String detail2TableName = requestInfo.getDetailTableInfo().getDetailTable()[1].getTableDBName(); + String detail2TableName = CommonUtil.getDetailTableInfoTableName(requestInfo.getDetailTableInfo().getDetailTable()[1].getTableDBName(),1,WorkFlowTypeEnum.ASKFORLEAVE); log.info("detail2TableName : [{}]", detail2TableName); //第一笔开始时间 String firstStartDate = detailTableData.get(0).get("ksrq"); diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/GenerateWorkflowVocationAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/GenerateWorkflowVocationAction.java new file mode 100644 index 0000000..a6cbabc --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/workflow/action/askforleave/GenerateWorkflowVocationAction.java @@ -0,0 +1,93 @@ +package com.engine.jucailinkq.attendance.workflow.action.askforleave; + +import com.engine.common.util.ServiceUtil; +import com.engine.jucailinkq.attendance.attendanceplan.service.AttendancePlanService; +import com.engine.jucailinkq.attendance.attendanceplan.service.impl.AttendancePlanServiceImpl; +import com.engine.jucailinkq.attendance.vacation.cmd.VocationCmd; +import com.engine.jucailinkq.attendance.workflow.enums.WorkFlowTypeEnum; +import com.engine.jucailinkq.common.cmd.GetPersonDateBySuitOrganzation; +import com.engine.jucailinkq.common.util.CommonUtil; +import com.engine.jucailinkq.common.util.DateUtil; +import com.engine.jucailinkq.common.util.DbTools; +import com.engine.jucailinkq.common.util.Utils; +import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; +import weaver.general.Util; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 请假流程action生成假期余额 + */ +@Slf4j +public class GenerateWorkflowVocationAction implements Action { + @Override + public String execute(RequestInfo requestInfo) { + try { + log.info("**GenerateWorkflowVocationAction start***"); + HashMap mainTableData = CommonUtil.getMainTableInfo(requestInfo, WorkFlowTypeEnum.ASKFORLEAVE); + String qjry = mainTableData.get("xingm"); + Map formmodeIdMap = Utils.getFormmodeIdMap(); + //假期额度模块id + String modeId = formmodeIdMap.get("uf_jcl_kq_jqed"); + Map params = Maps.newHashMap(); + params.put("modeId",modeId); + params.put("releaseDate",DateUtil.getCurrentDate()); + params.put("cover","1"); + CommonUtil.initExtensionClassHolder(); + + Map result = new GetPersonDateBySuitOrganzation(params).execute(null); + + String queryDepartEmployeeSql = "select resourceid ,changedate,type_n from HRMSTATUSHISTORY where type_n = 5 or type_n = 7 and resourceid=?"; + //获取离职日期 + List> departEmployeeList = DbTools.getSqlToList(queryDepartEmployeeSql,qjry); + Map departEmployeeMap = CommonUtil.getDepartEmployeeMap(departEmployeeList); + + + String sql = "select a.id userid,a.*,b.* from hrmresource a left join cus_fielddata b on a.id=b.id where a.id =?"; + List> userList = DbTools.getSqlToListKeySmallLetter(sql,qjry); + + log.info("GenerateWorkflowVocationAction : [{}]",result.get(qjry)); + if (result.get(qjry) != null){ + Map vocationMap = (Map)result.get(qjry); + Map paramMap = Maps.newHashMap(); + paramMap.put("startDate", DateUtil.getCurrentDate()); + paramMap.put("endDate",""); + paramMap.put("resourceId",qjry); + AttendancePlanService basicsetService = ServiceUtil.getService(AttendancePlanServiceImpl.class); + Map dataMap = basicsetService.getAttendanceItemsByPerson(paramMap); + List> attendanceItems = (List>)dataMap.get("data"); + Map needGenerateVocationMap = Maps.newHashMap(); + for (Map map : attendanceItems){ + if (vocationMap.get(map.get("key")) != null){ + needGenerateVocationMap.put(Util.null2String(map.get("key")),vocationMap.get(map.get("key"))); + } + } + log.debug("VocationServiceImpl userId:{}, userList:{}",qjry,userList); + for (Map.Entry e:needGenerateVocationMap.entrySet()){ + if (e.getValue() != null && ((List>)e.getValue()).size() > 0){ + Map vocationParam = Maps.newHashMap(); + vocationParam.put("userId",qjry); + vocationParam.put("vocationList",e.getValue()); + vocationParam.put("userList",userList); + vocationParam.put("releaseDate",params.get("releaseDate")); + vocationParam.put("cover",params.get("cover")); + vocationParam.put("leaveDate",departEmployeeMap.get(qjry)); + new VocationCmd(vocationParam).execute(null); + } + } + } + + log.info("**GenerateWorkflowVocationAction end***"); + }catch (Exception e){ + log.info("GenerateWorkflowVocationAction error :[{}]",e); + return Action.FAILURE_AND_CONTINUE; + } + return Action.SUCCESS; + } + +} diff --git a/src/com/engine/jucailinkq/attendance/workflow/proxy/tactics/AskForLeaveWorkflowDataReset.java b/src/com/engine/jucailinkq/attendance/workflow/proxy/tactics/AskForLeaveWorkflowDataReset.java index 5557285..261c132 100644 --- a/src/com/engine/jucailinkq/attendance/workflow/proxy/tactics/AskForLeaveWorkflowDataReset.java +++ b/src/com/engine/jucailinkq/attendance/workflow/proxy/tactics/AskForLeaveWorkflowDataReset.java @@ -39,6 +39,8 @@ public class AskForLeaveWorkflowDataReset implements WorkFlowHandleTacis{ List> detailTableData = null; List> detailTable2 = null; + String detail1TableName = CommonUtil.getDetailTableInfoTableName(tableName+"_dt1",0,WorkFlowTypeEnum.ASKFORLEAVE); + String detail2TableName = CommonUtil.getDetailTableInfoTableName(tableName+"_dt2",1,WorkFlowTypeEnum.ASKFORLEAVE); if (operate.equals("dodelete")){ //删除流程 @@ -48,19 +50,19 @@ public class AskForLeaveWorkflowDataReset implements WorkFlowHandleTacis{ String deletetabledata = deleteDataList.get(0).get("deletetabledata").toString(); Map>> map = (Map>>) JSONObject.parse(deletetabledata); mainMap = keyToLowerMap(map.get(tableName).get(0)); - detailTableData = keyToLowerList(map.get(tableName+"_dt1")); - detailTable2 = keyToLowerList(map.get(tableName+"_dt2")); + detailTableData = keyToLowerList(map.get(detail1TableName)); + detailTable2 = keyToLowerList(map.get(detail2TableName)); } }else { String sql = "select * from "+tableName+" where requestid=?"; mainMap = DbTools.getSqlToList(sql,requestId).get(0); // 流程表单明细表1数据 - sql = "select * from "+tableName+"_dt1 where mainid=?"; + sql = "select * from "+detail1TableName+" where mainid=?"; detailTableData = DbTools.getSqlToList(sql,mainMap.get("id")); //流程表单明细表2数据 - sql = "select * from "+tableName+"_dt2 where mainid=?"; + sql = "select * from "+detail2TableName+" where mainid=?"; detailTable2 = DbTools.getSqlToList(sql,mainMap.get("id")); } log.info("detailTableData : [{}]",detailTableData); @@ -139,7 +141,7 @@ public class AskForLeaveWorkflowDataReset implements WorkFlowHandleTacis{ } } //将明细表1数据清空 - String delSql = "delete from " + tableName + "_dt1 where mainid=?"; + String delSql = "delete from " + detail1TableName + " where mainid=?"; if (!DbTools.update(delSql, mainMap.get("id"))) { //将明细表1数据清空 String message = "删除流程明细表1数据失败"; @@ -147,7 +149,7 @@ public class AskForLeaveWorkflowDataReset implements WorkFlowHandleTacis{ } //将明细表2数据清空 - delSql = "delete from " + tableName + "_dt2 where mainid=?"; + delSql = "delete from " + detail2TableName + " where mainid=?"; if (!DbTools.update(delSql, mainMap.get("id"))) { //将明细表2数据清空 String message = "删除流程明细表2数据失败"; diff --git a/src/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.java b/src/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.java index f43cdb7..cff978c 100644 --- a/src/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.java +++ b/src/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.java @@ -109,7 +109,8 @@ public class GetPersonDateBySuitOrganzation extends AbstractCommonCommand0 && departMentIds.size() > 0){ - sql = sql+ " or subcompanyid1 in ("+String.join(",",subCompanyIds)+")"; + sql = "select id,departmentid,subcompanyid1,seclevel from hrmresource where status <> '5' and status <> '4' and status <> '7' "; + sql = sql+ " and (departmentid in ("+String.join(",",departMentIds)+")"+ " or subcompanyid1 in ("+String.join(",",subCompanyIds)+"))"; }else if (subCompanyIds .size() >0 && departMentIds.size() == 0){ sql = sql+ " and subcompanyid1 in ("+String.join(",",subCompanyIds)+")"; } diff --git a/src/com/engine/jucailinkq/common/util/CommonUtil.java b/src/com/engine/jucailinkq/common/util/CommonUtil.java index 460258c..5a22a9e 100644 --- a/src/com/engine/jucailinkq/common/util/CommonUtil.java +++ b/src/com/engine/jucailinkq/common/util/CommonUtil.java @@ -5,6 +5,7 @@ import com.engine.jucailinkq.attendance.component.persongroup.commonutil.Persong 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.attendance.workflow.enums.WorkFlowTypeEnum; import com.engine.jucailinkq.common.exception.AttendanceRunTimeException; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -338,6 +339,38 @@ public class CommonUtil { mainMap.put("id",String.valueOf(requestInfo.getRequestManager().getBillid())); return mainMap; } + /** + * 根据流程requestInfo消息对象获取流程主表字段的信息的map集合 + * @param requestInfo + * @return + */ + public static HashMap getMainTableInfo(RequestInfo requestInfo, WorkFlowTypeEnum workFlowTypeEnum){ + String sql = "select a.yszdm id,a.lczdm name,b.lclx from uf_jcl_kq_kqlcsz_dt1 a left join uf_jcl_kq_kqlcsz b on a.mainid=b.id where lclx=?"; + Map mappingMap = DbTools.getSqlToMapList(sql,workFlowTypeEnum.getKey()); + HashMap mainMap = new HashMap(); + HashMap resultMap = 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())); + if (mappingMap.size() != 0){ + resultMap.putAll(mainMap); + for (Map.Entry entry :mappingMap.entrySet()){ + if (entry.getValue()!=null && !"".equals(entry.getValue())){ + resultMap.put(entry.getKey(),mainMap.get(entry.getValue())); + }else { + resultMap.put(entry.getKey(),mainMap.get(entry.getKey())); + } + } + return resultMap; + }else { + return mainMap; + } + } /** @@ -367,8 +400,80 @@ public class CommonUtil { list.add(map); } } + return list; } + /** + * 获得明细数据 + * @param request + * @return + */ + public static List> getDetailTableInfo(RequestInfo request, int index,WorkFlowTypeEnum workFlowTypeEnum) { + String queryTable = "uf_jcl_kq_kqlcsz_dt2"; + + if (workFlowTypeEnum == WorkFlowTypeEnum.ASKFORLEAVE || workFlowTypeEnum == WorkFlowTypeEnum.BATCH_ASKFORLEAVE){ + if (index == 1){ + //明细表2 + queryTable = "uf_jcl_kq_kqlcsz_dt3"; + } + } + String sql = "select a.yszdm,a.lczdm,a.lczdszb from "+queryTable+" a left join uf_jcl_kq_kqlcsz b on a.mainid=b.id where lclx=?"; + List> mappingList = DbTools.getSqlToList(sql,workFlowTypeEnum.getKey()); + String tableName = null; + for (Map map:mappingList){ + if (map.get("lczdszb") != null && !map.get("lczdszb").equals("")){ + tableName= map.get("lczdszb").toString(); + break; + } + } + List> detailDataList = null; + List> resultList = Lists.newArrayList(); + if (tableName == null || !tableName.contains("_dt")){ + detailDataList = getDetailTableInfo(request,index); + }else { + int detailIndex = Integer.valueOf(tableName.substring(tableName.length()-1,tableName.length())); + detailDataList = getDetailTableInfo(request,detailIndex-1); + } + Map mappingMap = mappingList.stream().collect(Collectors.toMap(e->Util.null2String(e.get("yszdm")),e->e.get("lczdm"))); + if (mappingMap.size() != 0){ + for (Map detailData:detailDataList){ + Map resultMap = Maps.newHashMap(); + resultMap.putAll(resultMap); + for (Map.Entry entry :mappingMap.entrySet()){ + if (entry.getValue()!=null && !"".equals(entry.getValue())){ + resultMap.put(entry.getKey(),detailData.get(entry.getValue())); + }else { + resultMap.put(entry.getKey(),detailData.get(entry.getKey())); + } + } + resultList.add(resultMap); + } + return resultList; + }else { + return detailDataList; + } + } + /** + * 获得明细表名 + */ + public static String getDetailTableInfoTableName(String tableName, int index,WorkFlowTypeEnum workFlowTypeEnum){ + String queryTable = "uf_jcl_kq_kqlcsz_dt2"; + if (workFlowTypeEnum == WorkFlowTypeEnum.ASKFORLEAVE || workFlowTypeEnum == WorkFlowTypeEnum.BATCH_ASKFORLEAVE){ + if (index == 1){ + //明细表2 + queryTable = "uf_jcl_kq_kqlcsz_dt3"; + } + } + String sql = "select a.yszdm,a.lczdm,a.lczdszb from "+queryTable+" a left join uf_jcl_kq_kqlcsz b on a.mainid=b.id where lclx=?"; + List> mappingList = DbTools.getSqlToList(sql,workFlowTypeEnum.getKey()); + for (Map map:mappingList){ + if (map.get("lczdszb") != null && !map.get("lczdszb").equals("")){ + tableName= map.get("lczdszb").toString(); + break; + } + } + return tableName; + } /** * 获取适用范围对应的人员id列表,适用范围由dataId和modeId获得