流程删除、流程强制收回

zm_dev
liuliang 8 months ago
parent 7eedcb7008
commit a1d8c1ee03

@ -0,0 +1,73 @@
package com.customization.jucailinkq.workflow;
import com.engine.core.cfg.annotation.CommandDynamicProxy;
import com.engine.core.interceptor.AbstractCommandProxy;
import com.engine.core.interceptor.Command;
import com.engine.jucailinkq.attendance.workflow.proxy.tactics.WorkFlowHandleTacis;
import com.engine.jucailinkq.common.util.DbTools;
import com.engine.jucailinkq.common.util.Utils;
import com.engine.workflow.cmd.monitor.DoDeleteCmd;
import com.engine.workflow.cmd.monitor.DoRepossessedCmd;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.workflow.workflow.RequestForceDrawBack;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
*/
@CommandDynamicProxy(target = DoDeleteCmd.class, desc="流程删除")
public class KQDoDeleteProxyCmd extends AbstractCommandProxy<Map<String,Object>> {
private List<WorkFlowHandleTacis> rulers;
{
rulers = new Utils<WorkFlowHandleTacis>().getAllClassByInterface(WorkFlowHandleTacis.class);
}
@Override
public Map<String, Object> execute(Command<Map<String, Object>> command) {
BaseBean bb = new BaseBean();
bb.writeLog("KQDoDeleteProxyCmd start");
DoDeleteCmd doDeleteCmd = (DoDeleteCmd)command;
Map<String, Object> params = doDeleteCmd.getParams();
String multiRequestIds = params.get("multiRequestIds").toString();
Map<String, Object> resultMap = nextExecute(command);
String sql = "select requestid,workflowid from workflow_requestbase_dellog where requestid in ("+multiRequestIds+")";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql);
bb.writeLog("KQDoDeleteProxyCmd requestId"+dataList.toString());
sql = "select ljid,lclx,lcbd from uf_jcl_kq_kqlcsz where zt=0";
List<Map<String,Object>> list = DbTools.getSqlToList(sql);
Map<String,List<Map<String,Object>>> groupByMap = list.stream().collect(Collectors.groupingBy(e->e.get("ljid").toString()));
for (Map<String,Object> dataMap:dataList){
String requestid = dataMap.get("requestid").toString();
String workflowid = dataMap.get("workflowid").toString();
if (groupByMap.get(workflowid) != null && groupByMap.get(workflowid).size()>0){
Map<String,Object> map = groupByMap.get(workflowid).get(0);
String workflowType = map.get("lclx").toString();
for (WorkFlowHandleTacis workFlowHandleTacis :rulers){
if (workFlowHandleTacis.support(workflowType)){
map.put("requestId",requestid);
map.put("operate","dodelete");
workFlowHandleTacis.reset(map);
}
}
}
}
bb.writeLog("KQDoDeleteProxyCmd requestMap"+resultMap.toString());
return resultMap;
}
}

@ -3,39 +3,66 @@ package com.customization.jucailinkq.workflow;
import com.engine.core.cfg.annotation.CommandDynamicProxy;
import com.engine.core.interceptor.AbstractCommandProxy;
import com.engine.core.interceptor.Command;
import com.engine.jucailinkq.attendance.workflow.proxy.tactics.WorkFlowHandleTacis;
import com.engine.jucailinkq.common.util.DbTools;
import com.engine.jucailinkq.common.util.Utils;
import com.engine.workflow.cmd.monitor.DoRepossessedCmd;
import lombok.extern.slf4j.Slf4j;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.workflow.workflow.RequestForceDrawBack;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
*/
@Slf4j
@CommandDynamicProxy(target = DoRepossessedCmd.class, desc="流程强制收回")
public class KQDoRepossessedProxyCmd extends AbstractCommandProxy<Map<String,Object>> {
private List<WorkFlowHandleTacis> rulers;
{
rulers = new Utils<WorkFlowHandleTacis>().getAllClassByInterface(WorkFlowHandleTacis.class);
}
@Override
public Map<String, Object> execute(Command<Map<String, Object>> command) {
BaseBean bb = new BaseBean();
bb.writeLog("DoRepossessedProxyCmd start");
log.info("DoRepossessedProxyCmd start");
bb.writeLog("KQDoRepossessedProxyCmd start");
Map<String, Object> resultMap = nextExecute(command);
String sql = "select ljid,lclx,lcbd from uf_jcl_kq_kqlcsz where zt=0";
List<Map<String,Object>> list = DbTools.getSqlToList(sql);
Map<String,List<Map<String,Object>>> groupByMap = list.stream().collect(Collectors.groupingBy(e->e.get("ljid").toString()));
RecordSet rs = new RecordSet();
Map<String, Object> requestMap = (Map<String, Object>)resultMap.get("result");
bb.writeLog("DoRepossessedProxyCmd requestMap"+requestMap.toString());
bb.writeLog("KQDoRepossessedProxyCmd requestMap"+requestMap.toString());
requestMap.entrySet().forEach(e->{
String requestId = e.getKey();
String status = e.getValue().toString();
if (status.equals(RequestForceDrawBack.SUCCESS)){
int status = Integer.valueOf(e.getValue().toString());
if (status == RequestForceDrawBack.SUCCESS){
rs.executeProc("workflow_Requestbase_SByID", requestId);
int workflowid = rs.getInt("workflowid");
bb.writeLog("DoRepossessedProxyCmd workflowid"+workflowid);
if (rs.next()) {
String workflowid = rs.getString("workflowid");
bb.writeLog("KQDoRepossessedProxyCmd workflowid"+workflowid);
bb.writeLog("KQDoRepossessedProxyCmd groupByMap"+groupByMap.toString());
if (groupByMap.get(workflowid) != null && groupByMap.get(workflowid).size()>0){
Map<String,Object> map = groupByMap.get(workflowid).get(0);
String workflowType = map.get("lclx").toString();
bb.writeLog("KQDoRepossessedProxyCmd workflowType"+workflowType);
for (WorkFlowHandleTacis workFlowHandleTacis :rulers){
if (workFlowHandleTacis.support(workflowType)){
map.put("requestId",requestId);
map.put("operate","dorepossesse");
workFlowHandleTacis.reset(map);
}
}
}
}
}
});

@ -44,7 +44,8 @@ public class AttendanceAnalysisJob extends BaseCronJob {
log.info("********AttendanceAnalysisJob executeDate :[{}]********",executeDate);
if (executeDate == null || "".equals(executeDate)){
executeDate = DateUtil.getCurrentTime().split(" ")[0];
executeDate = com.time.util.DateUtil.getCurrentTime("yyyy-MM-dd");
}
String queryUserSql = "select id,departmentid,subcompanyid1 from hrmresource where status <> '5' and status <> '4' and status <> '7'";

@ -398,7 +398,7 @@ public class PersongroupCommonUtil {
}
}else if (!"".equals(sqltj)){
sqltj = Utils.converSQL(sqltj);
log.info("getPersonnelGroupingByPerson sqltj : [{}]",sqltj);
log.debug("getPersonnelGroupingByPerson sqltj : [{}]",sqltj);
List<Map<String,Object>> dataList = DbTools.getSqlToList(sqltj);
for (Map<String,Object> dataMap :dataList){
String hrmId = Util.null2String(dataMap.get("id"));

@ -0,0 +1,40 @@
package com.engine.jucailinkq.attendance.workflow.enums;
import com.finance.toolkit.BaseEnum;
/**
*
*/
public enum WorkFlowTypeEnum implements BaseEnum {
ASKFORLEAVE("0","请假流程"),
BATCH_ASKFORLEAVE("1","批量请假流程"),
EVECTION("2","出差流程"),
CLOCK_IN("3","补打卡流程"),
REBACK_ASKFORLEAVE("4","销假流程"),
REBACK_EVECTION("5","销差流程"),
OVERTIME_PLAN("6","加班计划流程"),
OVERTIME_RESULTS("7","加班结果流程"),
ATTENDANCE_ALLOWANCE("8","出勤津贴确认流程"),
SCHEDULE_CHANGE("9","排班异动流程"),
GROUPS_CHANGE("10","调动分组流程");
private String key;
private String value;
WorkFlowTypeEnum(String key, String value){
this.key=key;
this.value=value;
}
@Override
public String getKey() {
return this.key;
}
@Override
public String getValue() {
return this.value;
}
}

@ -0,0 +1,160 @@
package com.engine.jucailinkq.attendance.workflow.proxy.tactics;
import com.alibaba.fastjson.JSONObject;
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;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import weaver.general.Util;
import weaver.interfaces.workflow.action.Action;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 退
*/
@Slf4j
public class AskForLeaveWorkflowDataReset implements WorkFlowHandleTacis{
@Override
public boolean support(String personClassfiy) {
if (personClassfiy.equals(WorkFlowTypeEnum.ASKFORLEAVE.getKey())){
return true;
}
return false;
}
@Override
public void reset(Map<String, Object> requestMap) {
log.info("AskForLeaveWorkflow requestMap: [{}]",requestMap);
String tableName = requestMap.get("lcbd").toString();
String requestId = requestMap.get("requestId").toString();
String operate = requestMap.get("operate").toString();
Map<String,Object> mainMap = null;
List<Map<String, Object>> detailTableData = null;
List<Map<String, Object>> detailTable2 = null;
if (operate.equals("dodelete")){
//删除流程
String sql = "select deletetabledata from workflow_requestdeletelog where request_id=? and (isvalid is null or isvalid <> '1')";
List<Map<String, Object>> deleteDataList = DbTools.getSqlToList(sql,requestId);
if (deleteDataList.size() > 0){
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"));
}
}else {
String sql = "select * from "+tableName+" where requestid=?";
mainMap = DbTools.getSqlToList(sql,requestId).get(0);
// 流程表单明细表1数据
sql = "select * from "+tableName+"_dt1 where mainid=?";
detailTableData = DbTools.getSqlToList(sql,mainMap.get("id"));
//流程表单明细表2数据
sql = "select * from "+tableName+"_dt2 where mainid=?";
detailTable2 = DbTools.getSqlToList(sql,mainMap.get("id"));
}
log.info("detailTableData : [{}]",detailTableData);
log.info("BatchAskForLeaveWorkFlowBackAction-detailTable2Data : [{}]",detailTable2);
if (mainMap == null || detailTable2 == null || detailTableData == null){
return;
}
String sql = "select id, jlzt from uf_jcl_kq_qjjl where djid = " + requestId;
Map<String, Object> qjllData = DbTools.getSqlToMap(sql);
String jlzt = Util.null2String(qjllData.get("jlzt"));
sql = "select id,jqid,sxrq,ktsc,yxsc,wxsc,yqsxrq,ztsc from uf_jcl_kq_jqye order by sxrq";
List<Map<String,Object>> holidayBalanceList = DbTools.getSqlToList(sql);
Map<String,Object> holidayBalanceMap = holidayBalanceList.stream().collect(Collectors.toMap(e->e.get("id").toString(), e->e));
try {
if (detailTable2.size() > 0) {
Map<String,Object> balanceMap = Maps.newHashMap();
for (Map<String, Object> data : detailTable2){
String jqye = Util.null2String(data.get("jqye"));
double sysc = Double.valueOf(data.get("sysc").toString());
double havedSysc= balanceMap.get(jqye) ==null?0:Double.valueOf(balanceMap.get(jqye).toString());
sysc = Utils.add(sysc,havedSysc);
balanceMap.put(jqye,sysc);
}
log.info("balanceMap : [{}]",balanceMap);
for (Map.Entry<String,Object> entry:balanceMap.entrySet()){
String id = entry.getKey();
double ztsc = Double.valueOf(entry.getValue().toString());
Map<String,Object> map = (Map<String,Object>)holidayBalanceMap.get(id);
boolean updateSign = true;
log.info("jlzt : [{}]",jlzt);
if ("1".equals(jlzt)) {
double havedyxsc = Util.null2String(map.get("yxsc")).equals("") ? 0 : Double.valueOf(map.get("yxsc").toString());
double updatedyxsc = Utils.subtract(havedyxsc,ztsc);
log.info("updatedyxsc : [{}],id:[{}]",updatedyxsc,id);
String updateSql = "update uf_jcl_kq_jqye set yxsc=? where id=?";
updateSign = DbTools.update(updateSql,updatedyxsc,id);
} else if("0".equals(jlzt)){
double havedztsc = Util.null2String(map.get("ztsc")).equals("") ? 0 : Double.valueOf(map.get("ztsc").toString());
double havedwxsc = Util.null2String(map.get("wxsc")).equals("") ? 0 : Double.valueOf(map.get("wxsc").toString());
double updatedztsc = Utils.subtract(havedztsc,ztsc);
double updatedwxsc = Utils.add(havedwxsc,ztsc);
log.info("updatedwxsc : [{}],updatedztsc:[{}],id:[{}]",updatedwxsc,updatedztsc,id);
String updateSql = "update uf_jcl_kq_jqye set wxsc=?,ztsc=? where id=?";
updateSign = DbTools.update(updateSql,updatedwxsc,updatedztsc,id);
}
log.info("updateSign : [{}]",updateSign);
}
}
//删除请假记录
if ("1".equals(jlzt) || "0".equals(jlzt)) {
String qjjlMainId = Util.null2String(qjllData.get("id"));
if (!"".equals(qjjlMainId)) {
String delteSql = "delete from uf_jcl_kq_qjjl_dt1 where mainid = " + qjjlMainId;
boolean delSignDt1 = DbTools.update(delteSql);
delteSql = "delete from uf_jcl_kq_qjjl_dt2 where mainid = " + qjjlMainId;
boolean delSignDt2 = DbTools.update(delteSql);
delteSql = "delete from uf_jcl_kq_qjjl where id = " + qjjlMainId;
boolean delSignMain = DbTools.update(delteSql);
if (!delSignDt1 || !delSignDt2 || !delSignMain) {
String message = "删除假期记录失败";
log.error(message);
}
}
}
}catch (Exception e){
log.error("BatchAskForLeaveWorkFlowBackAction error : [{}]",e);
}
}
public Map<String,Object> keyToLowerMap(Map<String,Object> map){
Map<String,Object> resultMap = Maps.newHashMap();
map.entrySet().forEach(e->{
resultMap.put(e.getKey().toLowerCase(),e.getValue());
});
return resultMap;
}
public List<Map<String,Object>> keyToLowerList(List<Map<String,Object>> list){
List<Map<String,Object>> resultList = Lists.newArrayList();
for (Map<String,Object> map:list){
resultList.add(keyToLowerMap(map));
}
return resultList;
}
}

@ -0,0 +1,13 @@
package com.engine.jucailinkq.attendance.workflow.proxy.tactics;
import java.util.Map;
/**
*
*/
public interface WorkFlowHandleTacis {
boolean support(String personClassfiy);
void reset(Map<String,Object> requestMap);
}

@ -1168,6 +1168,7 @@ public class Utils<T> {
public static String converSQL(String sqltj){
sqltj = sqltj.replace("","select");
sqltj = sqltj.replace("","select");
sqltj = sqltj.replace("","select");
sqltj = sqltj.replace("","and");
sqltj = sqltj.replace("","and");
sqltj = sqltj.replace("","or");

Loading…
Cancel
Save