考勤-出差、补打卡流程,流程强制退回、删除相关数据重置逻辑

main
sy 6 months ago
parent 5f9fcd5a1d
commit 4726d6a479

@ -0,0 +1,52 @@
package com.engine.jucailinkq.attendance.workflow.action;
import com.engine.jucailinkq.common.util.DbTools;
import lombok.extern.slf4j.Slf4j;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 退
*/
@Slf4j
public class EvectionBackAction implements Action {
@Override
public String execute(RequestInfo requestInfo) {
String requestId = requestInfo.getRequestid();
try {
String sql = "select id from uf_jcl_kq_ccjl where djly = 0 and lyid = " + requestId;
List<Map<String, Object>> ccData = DbTools.getSqlToList(sql);
if (ccData.size() > 0) {
List<String> ccjlIdList = ccData.stream().map(f->f.get("id").toString()).collect(Collectors.toList());
//删除出差记录明细表
sql = "delete from uf_jcl_kq_ccjl_dt1 where mainid in (" + String.join(",", ccjlIdList) + ")";
boolean delSign1 = DbTools.update(sql);
String message = "";
if (!delSign1) {
message = message + "删除出差记录明细表数据失败!";
}
//删除出差记录主表
sql = "delete from uf_jcl_kq_ccjl where id in (" + String.join(",", ccjlIdList) + ")";
boolean delSign2 = DbTools.update(sql);
if (!delSign2) {
message = message + "删除出差记录主表数据失败!";
}
if (!delSign1 || !delSign2) {
log.error(message);
requestInfo.getRequestManager().setMessageid("11111" + requestInfo.getRequestid() + "22222");
requestInfo.getRequestManager().setMessagecontent(message);
return Action.FAILURE_AND_CONTINUE;
}
}
}catch (Exception e){
log.error("EvctionBackAction error : [{}]", e.getMessage());
return Action.FAILURE_AND_CONTINUE;
}
return Action.SUCCESS;
}
}

@ -0,0 +1,47 @@
package com.engine.jucailinkq.attendance.workflow.action;
import com.engine.jucailinkq.common.util.DbTools;
import lombok.extern.slf4j.Slf4j;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 退action
*/
@Slf4j
public class MakeUpClockInBackAction implements Action {
@Override
public String execute(RequestInfo requestInfo) {
String requestId = requestInfo.getRequestid();
try {
String sql = "select id from uf_jcl_kq_bdkjl where sjly = 0 and lcid = " + requestId;
List<Map<String, Object>> bdkData = DbTools.getSqlToList(sql);
if (bdkData.size() > 0) {
List<String> bdkjlIdList = bdkData.stream().map(f->f.get("id").toString()).collect(Collectors.toList());
//删除出差记录主表
sql = "delete from uf_jcl_kq_bdkjl where id in (" + String.join(",", bdkjlIdList) + ")";
boolean delSign = DbTools.update(sql);
String message = "";
if (!delSign) {
message = message + "删除补打卡记录表数据失败!";
log.error(message);
requestInfo.getRequestManager().setMessageid("11111" + requestInfo.getRequestid() + "22222");
requestInfo.getRequestManager().setMessagecontent(message);
return Action.FAILURE_AND_CONTINUE;
}
}
}catch (Exception e){
log.error("MakeUpClockInBackAction : [{}]", e.getMessage());
}
return Action.SUCCESS;
}
}

@ -0,0 +1,100 @@
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.DbTools;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 退
* @author sy
*/
@Slf4j
public class EvectionDataReset implements WorkFlowHandleTacis{
@Override
public boolean support(String personClassfiy) {
if (personClassfiy.equals(WorkFlowTypeEnum.EVECTION.getKey())){
return true;
}
return false;
}
@Override
public void reset(Map<String, Object> requestMap) {
log.info("EvectionDataReset 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;
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"));
}
}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"));
}
log.info("detailTableData : [{}]",detailTableData);
if (mainMap == null || detailTableData == null){
return;
}
try {
//收集出差记录中流程id关联的数据
String sql = "select id from uf_jcl_kq_ccjl where djly = 0 and lyid = " + requestId;
List<Map<String, Object>> ccData = DbTools.getSqlToList(sql);
if (ccData.size() > 0) {
List<String> ccjlIdList = ccData.stream().map(f->f.get("id").toString()).collect(Collectors.toList());
//删除出差记录明细表
sql = "delete from uf_jcl_kq_ccjl_dt1 where mainid in (" + String.join(",", ccjlIdList) + ")";
boolean delSign1 = DbTools.update(sql);
String message = "";
if (!delSign1) {
message = message + "删除出差记录明细表数据失败!";
}
//删除出差记录主表
sql = "delete from uf_jcl_kq_ccjl where id in (" + String.join(",", ccjlIdList) + ")";
boolean delSign2 = DbTools.update(sql);
if (!delSign2) {
message = message + "删除出差记录主表数据失败!";
}
if (!delSign1 || !delSign2) {
log.error(message);
}
}
}catch (Exception e){
log.error("EvectionDataReset error : [{}]", e.getMessage());
}
}
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,93 @@
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.DbTools;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import weaver.interfaces.workflow.action.Action;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 退
* @author sy
*/
@Slf4j
public class MakeUpClockInDataReset implements WorkFlowHandleTacis{
@Override
public boolean support(String personClassfiy) {
if (personClassfiy.equals(WorkFlowTypeEnum.CLOCK_IN.getKey())){
return true;
}
return false;
}
@Override
public void reset(Map<String, Object> requestMap) {
log.info("MakeUpClockInDataReset 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;
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"));
}
}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"));
}
log.info("detailTableData : [{}]",detailTableData);
if (mainMap == null || detailTableData == null){
return;
}
try {
//收集补打卡记录中流程id关联的数据
String sql = "select id from uf_jcl_kq_bdkjl where sjly = 0 and lcid = " + requestId;
List<Map<String, Object>> bdkData = DbTools.getSqlToList(sql);
if (bdkData.size() > 0) {
List<String> bdkjlIdList = bdkData.stream().map(f->f.get("id").toString()).collect(Collectors.toList());
//删除出差记录主表
sql = "delete from uf_jcl_kq_bdkjl where id in (" + String.join(",", bdkjlIdList) + ")";
boolean delSign = DbTools.update(sql);
String message = "";
if (!delSign) {
message = message + "删除补打卡记录表数据失败!";
log.error(message);
}
}
}catch (Exception e){
log.error("MakeUpClockInDataReset error : [{}]", e.getMessage());
}
}
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;
}
}
Loading…
Cancel
Save