考勤流程设置、生成假期余额、请假流程action改造

main
liuliang 5 months ago
parent 909cbe0a6a
commit de6f550356

@ -319,7 +319,7 @@ public class RecordDataCmd extends AbstractCommonCommand<Map<String,Object>> {
}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<Map<String,Object>> {
revokeHoliday.add(oldData.get("id").toString());
}
}else {
if (totalKtsc == 0 && oldyxsc > 0){
revokeHoliday.add(oldData.get("id").toString());
}
Map<String,Object> newData = newDataList.get(0);
newData.put("ktsc",String.format ("%.2f",totalKtsc));
newData.put("jxsc",String.format ("%.2f",totalJxsc));

@ -46,9 +46,9 @@ public class AttendanceanalysisAction {
log.info("********AttendanceanalysisAction start********");
Map<String,Object> paramMap = ParamUtil.request2Map(request);
// Map<String,Object> 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);

@ -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("插入数据失败,请检查修改班次人员是否有对应的企业日历");

@ -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<String,String> mainTableData = CommonUtil.getMainTableInfo(requestInfo);
// 流程表单明细表数据
List<Map<String, String>> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0);
List<Map<String, String>> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0,WorkFlowTypeEnum.ASKFORLEAVE);
log.info("detailTableData : [{}]", detailTableData);
Map<String,List<Map<String, String>>> detailGroupMap = detailTableData.stream().collect(Collectors.groupingBy(e-> Util.null2String(e.get("qjr"))));

@ -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<String,String> mainTableData = CommonUtil.getMainTableInfo(requestInfo);
HashMap<String,String> mainTableData = CommonUtil.getMainTableInfo(requestInfo, WorkFlowTypeEnum.ASKFORLEAVE);
log.info("mainTableData : [{}]",mainTableData);
// 流程表单明细表1数据
List<Map<String, String>> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0);
List<Map<String, String>> detailTableData = CommonUtil.getDetailTableInfo(requestInfo,0,WorkFlowTypeEnum.ASKFORLEAVE);
log.info("detailTableData : [{}]",detailTableData);
//流程表单明细表2数据
List<Map<String, String>> detailTable2 = CommonUtil.getDetailTableInfo(requestInfo,1);
List<Map<String, String>> detailTable2 = CommonUtil.getDetailTableInfo(requestInfo,1,WorkFlowTypeEnum.ASKFORLEAVE);
log.info("detailTable2Data : [{}]",detailTable2);
//第一笔开始时间

@ -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<String, String> mainTableData = CommonUtil.getMainTableInfo(requestInfo);
HashMap<String, String> mainTableData = CommonUtil.getMainTableInfo(requestInfo, WorkFlowTypeEnum.ASKFORLEAVE);
log.info("mainTableData : [{}]", mainTableData);
// 流程表单明细表1数据
List<Map<String, String>> detailTableData = CommonUtil.getDetailTableInfo(requestInfo, 0);
List<Map<String, String>> 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");

@ -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<String, String> mainTableData = CommonUtil.getMainTableInfo(requestInfo, WorkFlowTypeEnum.ASKFORLEAVE);
String qjry = mainTableData.get("xingm");
Map<String,String> formmodeIdMap = Utils.getFormmodeIdMap();
//假期额度模块id
String modeId = formmodeIdMap.get("uf_jcl_kq_jqed");
Map<String, Object> params = Maps.newHashMap();
params.put("modeId",modeId);
params.put("releaseDate",DateUtil.getCurrentDate());
params.put("cover","1");
CommonUtil.initExtensionClassHolder();
Map<String,Object> 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<Map<String,Object>> departEmployeeList = DbTools.getSqlToList(queryDepartEmployeeSql,qjry);
Map<String,Object> 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<Map<String,Object>> userList = DbTools.getSqlToListKeySmallLetter(sql,qjry);
log.info("GenerateWorkflowVocationAction : [{}]",result.get(qjry));
if (result.get(qjry) != null){
Map<String,String> vocationMap = (Map<String, String>)result.get(qjry);
Map<String,Object> paramMap = Maps.newHashMap();
paramMap.put("startDate", DateUtil.getCurrentDate());
paramMap.put("endDate","");
paramMap.put("resourceId",qjry);
AttendancePlanService basicsetService = ServiceUtil.getService(AttendancePlanServiceImpl.class);
Map<String,Object> dataMap = basicsetService.getAttendanceItemsByPerson(paramMap);
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)dataMap.get("data");
Map<String, Object> needGenerateVocationMap = Maps.newHashMap();
for (Map<String,Object> 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<String, Object> e:needGenerateVocationMap.entrySet()){
if (e.getValue() != null && ((List<Map<String,Object>>)e.getValue()).size() > 0){
Map<String,Object> 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;
}
}

@ -39,6 +39,8 @@ public class AskForLeaveWorkflowDataReset implements WorkFlowHandleTacis{
List<Map<String, Object>> detailTableData = null;
List<Map<String, Object>> 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<String, List<Map<String, Object>>> map = (Map<String, List<Map<String, Object>>>) 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数据失败";

@ -109,7 +109,8 @@ public class GetPersonDateBySuitOrganzation extends AbstractCommonCommand<Map<St
sql = sql+ " and departmentid in ("+String.join(",",departMentIds)+")";
}
if (subCompanyIds .size() >0 && 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)+")";
}

@ -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;
}
/**
* requestInfomap
* @param requestInfo
* @return
*/
public static HashMap<String,String> 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<String,Object> mappingMap = DbTools.getSqlToMapList(sql,workFlowTypeEnum.getKey());
HashMap<String,String> mainMap = new HashMap<String,String>();
HashMap<String,String> resultMap = new HashMap<String,String>();
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<String,Object> 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<Map<String, String>> 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<Map<String,Object>> mappingList = DbTools.getSqlToList(sql,workFlowTypeEnum.getKey());
String tableName = null;
for (Map<String,Object> map:mappingList){
if (map.get("lczdszb") != null && !map.get("lczdszb").equals("")){
tableName= map.get("lczdszb").toString();
break;
}
}
List<Map<String, String>> detailDataList = null;
List<Map<String, String>> 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<String,Object> mappingMap = mappingList.stream().collect(Collectors.toMap(e->Util.null2String(e.get("yszdm")),e->e.get("lczdm")));
if (mappingMap.size() != 0){
for (Map<String, String> detailData:detailDataList){
Map<String, String> resultMap = Maps.newHashMap();
resultMap.putAll(resultMap);
for (Map.Entry<String,Object> 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<Map<String,Object>> mappingList = DbTools.getSqlToList(sql,workFlowTypeEnum.getKey());
for (Map<String,Object> map:mappingList){
if (map.get("lczdszb") != null && !map.get("lczdszb").equals("")){
tableName= map.get("lczdszb").toString();
break;
}
}
return tableName;
}
/**
* iddataIdmodeId

Loading…
Cancel
Save