You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
3.3 KiB
Java

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.ExtensionClassHolder;
import com.engine.jucailinkq.common.util.Utils;
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 = 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("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("KQDoRepossessedProxyCmd requestMap"+requestMap.toString());
requestMap.entrySet().forEach(e->{
String requestId = e.getKey();
int status = Integer.valueOf(e.getValue().toString());
if (status == RequestForceDrawBack.SUCCESS){
rs.executeProc("workflow_Requestbase_SByID", requestId);
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");
map.put("workflowid",workflowid);
workFlowHandleTacis.reset(map);
}
}
}
}
}
});
ExtensionClassHolder.remove();
return resultMap;
}
}