second commit

master
renzj 2 years ago
parent 1e7e49547b
commit 58f3cb5e52

@ -0,0 +1,57 @@
package com.customization.workflow;
import com.engine.core.cfg.annotation.CommandDynamicProxy;
import com.engine.core.interceptor.AbstractCommandProxy;
import com.engine.core.interceptor.Command;
import com.engine.workflow.cmd.forward.SaveFwLimitSetCmd;
import weaver.conn.RecordSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author:CL
* @date:2023/2/11 14:00
*/
@CommandDynamicProxy(target = SaveFwLimitSetCmd.class, desc = "指定流转")
public class SaveFwLimitCmd extends AbstractCommandProxy<Map<String, Object>> {
@Override
public Map<String, Object> execute(Command<Map<String, Object>> command) {
SaveFwLimitSetCmd cmd = (SaveFwLimitSetCmd) command;
int uid = cmd.getUser().getUID();
String objtype = (String) cmd.getParams().get("objtype");
// 如果选择平行部门 就对参数进行修改 选择其他则执行之前的逻辑
if ("16".equals(objtype)) {
// 查询平行部门
String sql = "select id,departmentname from hrmdepartment where supdepid=" +
"(select d.supdepid from HrmResource r join hrmdepartment d on r.departmentid=d.id where r.id=?)" +
"and subcompanyid1 = (select subcompanyid1 from HrmResource where id=?) ";
RecordSet recordSet = new RecordSet();
boolean flag = recordSet.executeQuery(sql, uid, uid);
if (flag) {
List<String> idList = new ArrayList<>();
List<String> nameList = new ArrayList<>();
while (recordSet.next()) {
idList.add(recordSet.getString("id"));
nameList.add(recordSet.getString("departmentname"));
}
// 改造参数 放回command
String departmentid = idList.stream().map(String::valueOf).collect(Collectors.joining(","));
String departmentidspan = nameList.stream().map(String::valueOf).collect(Collectors.joining(","));
cmd.getParams().put("departmentid", departmentid);
cmd.getParams().put("departmentidspan", departmentidspan);
}
}
// 执行原有的逻辑
Map<String, Object> result = nextExecute(cmd);
return result;
}
}

@ -0,0 +1,446 @@
package com.engine.workflow.cmd.forward;
import com.api.browser.bean.SearchConditionItem;
import com.api.browser.bean.SearchConditionOption;
import com.api.browser.util.ConditionType;
import com.api.hrm.bean.HrmFieldBean;
import com.api.hrm.bean.SelectOption;
import com.api.hrm.bean.WeaRadioGroup;
import com.api.hrm.util.HrmFieldSearchConditionComInfo;
import com.engine.core.interceptor.AbstractCommand;
import com.engine.core.interceptor.CommandContext;
import com.engine.workflow.biz.freeNode.FreeNodeBiz;
import com.engine.workflow.util.AuthorityUtil;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.hrm.moduledetach.ManageDetachComInfo;
import weaver.systeminfo.SystemEnv;
import weaver.workflow.workflow.WfFwLimitUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class GetFwLimitBrowserCmd extends AbstractCommand<Map<String, Object>> {
public GetFwLimitBrowserCmd(User user, Map<String, Object> params) {
this.user = user;
this.params = params;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
Map<String, Object> apidatas = new HashMap<String,Object>();
String type = Util.null2String(params.get("type"));
int wfid = Util.getIntValue(Util.null2String(params.get("wfid")),0);
if(!"canChoiceOperator".equals(type)){
int operatelevel = AuthorityUtil.getWorkflowUserRight(user, wfid);
if (operatelevel < 0) {
apidatas.put("operatelevel", operatelevel);
return apidatas;
}
}
if("weaAuth".equals(type)){ //添加范围
apidatas = getWeaAuthData(params,user);
}else if("baseSet".equals(type)){//基础数据、数据列表
WfFwLimitUtil wfFwLimitUtil = new WfFwLimitUtil();
apidatas = wfFwLimitUtil.getBaseSetData(params,user);
}else if("advanceList".equals(type)){
WfFwLimitUtil wfFwLimitUtil = new WfFwLimitUtil();
apidatas = wfFwLimitUtil.getAdvanceData(params,user);//高级模式下的 操作者、接收人范围列表
}else if("canChoiceOperator".equals(type)){
apidatas = canChoiceOperator(params,user);//允许选择节点参与人 作为 转发对象、意见征询对象
}
return apidatas;
}
public Map<String, Object> canChoiceOperator(Map<String, Object> params,User user){
Map<String, Object> apidatas = new HashMap<String,Object>();
int wfid = Util.getIntValue(Util.null2String(params.get("wfid")),0);
int nodeid = Util.getIntValue(Util.null2String(params.get("nodeid")),0);
nodeid = FreeNodeBiz.getExtendNodeId(nodeid);
String fwtype = Util.null2String(Util.null2String(params.get("fwtype"))); // 1、转发2、意见征询3、转办
//征询转办取意见征询设置
if ("5".equals(fwtype)) {
fwtype = "2";
}
String isopen = "0";
String choiceoperator = "0";
RecordSet rs = new RecordSet();
String sql = "select isopen,choiceoperator from workflow_FwLimitSet where fwtype='"+fwtype+"' and nodeid="+nodeid;
if(wfid>0){
sql += " and wfid="+wfid;
}
rs.execute(sql);
if(rs.next()){
isopen = rs.getString("isopen");
choiceoperator = rs.getString("choiceoperator");
}
apidatas.put("isopen", isopen);
apidatas.put("choiceoperator", choiceoperator);
apidatas.put("success", "1");
return apidatas;
}
/**
*
* @return
*/
public Map<String, Object> getWeaAuthData(Map<String, Object> params,User user){
Map<String, Object> apidatas = new HashMap<String,Object>();
int wfid = Util.getIntValue(Util.null2String(params.get("wfid")),0);
int nodeid = Util.getIntValue(Util.null2String(params.get("nodeid")),0);
nodeid = FreeNodeBiz.getExtendNodeId(nodeid);
String fwtype = Util.null2String(Util.null2String(params.get("fwtype"))); // 1、转发2、意见征询3、转办
String modetype = Util.null2String(params.get("modetype")); //0:普通模式 1高级模式
int tabid = Util.getIntValue(Util.null2String(params.get("tabid")),0); //0:添加操作者 1添加接收人范围
int mainid = Util.getIntValue(Util.null2String(params.get("mainid")),0); //高级模式-主ID
//Map<String,Object> groupitem = null;
List<Object> itemlist = null;
//供前台发送请求传递用
Map<String,Object> hiddenMap = new HashMap<String,Object>();
hiddenMap.put("wfid",wfid);
hiddenMap.put("nodeid",nodeid);
hiddenMap.put("fwtype",fwtype);
hiddenMap.put("modetype",modetype);
hiddenMap.put("tabid",tabid);
hiddenMap.put("mainid",mainid);
try {
int objtype_labelid = (tabid==0&&"1".equals(modetype))?130470:386135; //操作者类型、接收人类型
int relationship_labelid = ("1".equals(modetype) && tabid==0)?15364:386136; //条件、范围关系
boolean isAdvanceOper = ("1".equals(modetype) && tabid==0);
//接收人类型、内容、级别
String[] fields = new String[]{"objtype,"+objtype_labelid+",5,1","userid,345,3,17","subids,345,3,194","departmentid,345,3,57",
"roleid,345,3,65",
"jobid,345,3,278","joblevel,28169,5,1","jobtitlesubcompany,19437,3,194","jobtitledepartment,19438,3,57",
"seclevel,683,1,scope","rolelevel,383129,5,1","relationship,"+relationship_labelid+",5,1"};
HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo = new HrmFieldSearchConditionComInfo();
SearchConditionItem searchConditionItem = null;
HrmFieldBean hrmFieldBean = null;
itemlist = new ArrayList<Object>();
//groupitem = new HashMap<String,Object>();
//groupitem.put("title", "添加操作者");
//groupitem.put("defaultshow", true);
for(int i=0;i<fields.length;i++) {
String[] fieldinfo = fields[i].split(",");
hrmFieldBean = new HrmFieldBean();
hrmFieldBean.setFieldname(fieldinfo[0]);
hrmFieldBean.setFieldlabel(fieldinfo[1]);
hrmFieldBean.setFieldhtmltype(fieldinfo[2]);
hrmFieldBean.setType(fieldinfo[3]);
if (hrmFieldBean.getType().equals("scope")) {
hrmFieldBean.setIsScope(true);
}
hrmFieldBean.setIsFormField(true);
searchConditionItem = hrmFieldSearchConditionComInfo.getSearchConditionItem(hrmFieldBean, user);
if(hrmFieldBean.getFieldhtmltype().equals("5")){
List<SearchConditionOption> statusOptions = new ArrayList<SearchConditionOption>();
if(hrmFieldBean.getFieldname().equals("objtype")){
statusOptions = getObjTypeOption(user,tabid);
searchConditionItem.setOptions(statusOptions);
}else if(hrmFieldBean.getFieldname().equals("rolelevel")){
statusOptions.add(new SearchConditionOption("0", SystemEnv.getHtmlLabelName(124,user.getLanguage())));
statusOptions.add(new SearchConditionOption("1", SystemEnv.getHtmlLabelName(141,user.getLanguage())));
statusOptions.add(new SearchConditionOption("2", SystemEnv.getHtmlLabelName(140,user.getLanguage()),true));
searchConditionItem.setOptions(statusOptions);
}else if(hrmFieldBean.getFieldname().equals("joblevel")){
statusOptions.add(new SearchConditionOption("2", SystemEnv.getHtmlLabelName(140,user.getLanguage())));
statusOptions.add(new SearchConditionOption("0", SystemEnv.getHtmlLabelName(19438, Util.getIntValue(user.getLanguage())),true));
statusOptions.add(new SearchConditionOption("1", SystemEnv.getHtmlLabelName(19437, Util.getIntValue(user.getLanguage()))));
searchConditionItem.setOptions(statusOptions);
}else if(hrmFieldBean.getFieldname().equals("relationship")){
statusOptions.add(new SearchConditionOption("0", SystemEnv.getHtmlLabelName(346,user.getLanguage()),true));
statusOptions.add(new SearchConditionOption("1", SystemEnv.getHtmlLabelName(386080,user.getLanguage())));
searchConditionItem.setOptions(statusOptions);
}
}
searchConditionItem.setLabelcol(6);
if(hrmFieldBean.getFieldname().equals("userid")||hrmFieldBean.getFieldname().equals("jobid")
||hrmFieldBean.getFieldname().equals("subids")
||hrmFieldBean.getFieldname().equals("departmentid")){
searchConditionItem.setFieldcol(10);
}else{
searchConditionItem.setFieldcol(18);
}
if(!hrmFieldBean.getFieldname().equals("objtype")||!hrmFieldBean.getFieldname().equals("seclevel")){
searchConditionItem.setViewAttr(3);
}
if(fieldinfo[2].equals("3")){
searchConditionItem.getBrowserConditionParam().setViewAttr(3);
searchConditionItem.getBrowserConditionParam().setIsSingle(false);
}
if(hrmFieldBean.getFieldname().equals("seclevel")){
List<Object> value1 = new ArrayList<Object>();
value1.add(0);
value1.add(100);
searchConditionItem.setValue(value1);
searchConditionItem.setConditionType(ConditionType.INPUT_INTERVAL);
}
itemlist.add(searchConditionItem);
}
//下拉 - 类型
List<Object> condition = new ArrayList<Object>();
condition.add(itemlist.get(0));
Map<String,Object> conditionMap = new HashMap<String, Object>();
List<Object> conditionlist = new ArrayList<Object>();
List<Object> conditionlist2 = new ArrayList<Object>();
if(tabid == 1) {//接收人类型
//conditionlist = new ArrayList<Object>();
//conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(11));
conditionlist.add(conditionlist2);
conditionMap.put("0",conditionlist);//本部门
conditionlist = new ArrayList<Object>();
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(11));
conditionlist.add(conditionlist2);
conditionMap.put("1",conditionlist);
conditionlist = new ArrayList<Object>();
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(11));
conditionlist.add(conditionlist2);
conditionMap.put("2",conditionlist);
conditionlist = new ArrayList<Object>();
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(11));
conditionlist.add(conditionlist2);
conditionMap.put("3",conditionlist);
conditionlist = new ArrayList<Object>();
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(11));
conditionlist.add(conditionlist2);
conditionMap.put("4",conditionlist);
conditionlist = new ArrayList<Object>();
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(11));
conditionlist.add(conditionlist2);
conditionMap.put("5",conditionlist);
conditionlist = new ArrayList<Object>();
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(11));
conditionlist.add(conditionlist2);
conditionMap.put("6",conditionlist);
conditionlist = new ArrayList<Object>();
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(11));
conditionlist.add(conditionlist2);
conditionMap.put("7",conditionlist);
conditionlist = new ArrayList<Object>();
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(11));
conditionlist.add(conditionlist2);
conditionMap.put("8",conditionlist);
conditionlist = new ArrayList<Object>();
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(11));
conditionlist.add(conditionlist2);
conditionMap.put("9",conditionlist);//所有下级分部
}
//指定部门
conditionlist = new ArrayList<Object>();
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(3));//部门
conditionlist.add(conditionlist2);
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(9)); //安全级别
conditionlist.add(conditionlist2);
if(!isAdvanceOper){
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(11));//范围关系
conditionlist.add(conditionlist2);
}
conditionMap.put("10",conditionlist);
//平行部门
conditionlist = new ArrayList<Object>();
// conditionlist2 = new ArrayList<Object>();
// conditionlist2.add(itemlist.get(3));//部门
// conditionlist.add(conditionlist2);
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(9)); //安全级别
conditionlist.add(conditionlist2);
if(!isAdvanceOper){
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(11));//范围关系
conditionlist.add(conditionlist2);
}
conditionMap.put("16",conditionlist);
//指定分部
conditionlist = new ArrayList<Object>();
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(2));//分部
conditionlist.add(conditionlist2);
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(9)); //安全级别
conditionlist.add(conditionlist2);
if(!isAdvanceOper){
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(11));//范围关系
conditionlist.add(conditionlist2);
}
conditionMap.put("11",conditionlist);
//指定人员
conditionlist = new ArrayList<Object>();
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(1));//人员
conditionlist.add(conditionlist2);
if(!isAdvanceOper){
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(11));//范围关系
conditionlist.add(conditionlist2);
}
conditionMap.put("12",conditionlist);
//指定角色
conditionlist = new ArrayList<Object>();
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(4));//角色
conditionlist.add(conditionlist2);
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(10)); //角色级别
conditionlist.add(conditionlist2);
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(9)); //安全级别
conditionlist.add(conditionlist2);
if(!isAdvanceOper){
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(11));//范围关系
conditionlist.add(conditionlist2);
}
conditionMap.put("13",conditionlist);
//指定岗位
conditionlist = new ArrayList<Object>();
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(5));//岗位
conditionlist.add(conditionlist2);
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(6)); //岗位级别
WeaRadioGroup wrg = new WeaRadioGroup();
wrg.setLabel(SystemEnv.getHtmlLabelName(28169, user.getLanguage()));
List<Object> option = new ArrayList<Object>();
Map<String, Object> selectLinkageDatas = new HashMap<String, Object>();
selectLinkageDatas.put("0" ,itemlist.get(8));
selectLinkageDatas.put("1" ,itemlist.get(7));
wrg.setSelectLinkageDatas(selectLinkageDatas);
conditionlist2 = new ArrayList<Object>();
option.add(new SelectOption("2", SystemEnv.getHtmlLabelName(140, user.getLanguage()),true));
option.add(new SelectOption("0", SystemEnv.getHtmlLabelName(19438, user.getLanguage())));
option.add(new SelectOption("1", SystemEnv.getHtmlLabelName(19437, user.getLanguage())));
List<String> domkey = new ArrayList<String>();
wrg.setOptions(option);
wrg.setConditionType("SELECT_LINKAGE");
wrg.setFieldcol(18);
wrg.setLabelcol(6);
domkey.add("joblevel");
wrg.setDomkey(domkey);
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(wrg);
conditionlist.add(conditionlist2);
if(!isAdvanceOper){
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(11));//范围关系
conditionlist.add(conditionlist2);
}
conditionMap.put("14",conditionlist);
//所有人
if(!new ManageDetachComInfo().appDetachDisableAll(user)){
conditionlist = new ArrayList<Object>();
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(9)); //安全级别
conditionlist.add(conditionlist2);
}
if(!isAdvanceOper){
conditionlist2 = new ArrayList<Object>();
conditionlist2.add(itemlist.get(11));//范围关系
conditionlist.add(conditionlist2);
}
conditionMap.put("15",conditionlist);
condition.add(conditionMap);
apidatas.put("conditions", condition);
apidatas.put("hidden",hiddenMap);
apidatas.put("success", "1");
}catch (Exception e){
e.printStackTrace();
apidatas.put("success", "0");
apidatas.put("msg", ""+ SystemEnv.getHtmlLabelName(126400,weaver.general.ThreadVarLanguage.getLang())+"");
}
return apidatas;
}
/**
*
* @param user
* @param tabid
* @return
*/
public List<SearchConditionOption> getObjTypeOption(User user, int tabid){
List<SearchConditionOption> options = new ArrayList<SearchConditionOption>();
if(tabid == 1){//接收人类型
options.add(new SearchConditionOption("0", SystemEnv.getHtmlLabelName(21837,user.getLanguage()),true));//本部门
options.add(new SearchConditionOption("1", SystemEnv.getHtmlLabelName(386081,user.getLanguage()),false));//直接上级部门
options.add(new SearchConditionOption("2", SystemEnv.getHtmlLabelName(386082,user.getLanguage()),false));//所有上级部门
options.add(new SearchConditionOption("3", SystemEnv.getHtmlLabelName(17587,user.getLanguage()),false));//下级部门
options.add(new SearchConditionOption("4", SystemEnv.getHtmlLabelName(386083,user.getLanguage()),false));//所有下级部门
options.add(new SearchConditionOption("5", SystemEnv.getHtmlLabelName(30792,user.getLanguage()),false));//本分部
options.add(new SearchConditionOption("6", SystemEnv.getHtmlLabelName(386084,user.getLanguage()),false));//直接上级分部
options.add(new SearchConditionOption("7", SystemEnv.getHtmlLabelName(386085,user.getLanguage()),false));//所有上级分部
options.add(new SearchConditionOption("8", SystemEnv.getHtmlLabelName(17898,user.getLanguage()),false));//下级分部
options.add(new SearchConditionOption("9", SystemEnv.getHtmlLabelName(386086,user.getLanguage()),false));//所有下级分部
}
if(tabid==1){ //接收人类型
options.add(new SearchConditionOption("10", SystemEnv.getHtmlLabelName(19438,user.getLanguage()),false));//指定部门
options.add(new SearchConditionOption("16", SystemEnv.getHtmlLabelName(10006035,user.getLanguage()),false));//平行部门
}else {//操作者类型
options.add(new SearchConditionOption("10", SystemEnv.getHtmlLabelName(19438,user.getLanguage()),true));//指定部门
options.add(new SearchConditionOption("16", SystemEnv.getHtmlLabelName(10006035,user.getLanguage()),true));//平行部门
}
options.add(new SearchConditionOption("11", SystemEnv.getHtmlLabelName(19437,user.getLanguage()),false));//指定分部
options.add(new SearchConditionOption("12", SystemEnv.getHtmlLabelName(81811,user.getLanguage()),false));//指定人员
options.add(new SearchConditionOption("13", SystemEnv.getHtmlLabelName(382788,user.getLanguage()),false));//指定角色
options.add(new SearchConditionOption("14", SystemEnv.getHtmlLabelName(382789,user.getLanguage()),false));//指定岗位
if(!new ManageDetachComInfo().appDetachDisableAll(user)) {
options.add(new SearchConditionOption("15", SystemEnv.getHtmlLabelName(1340, user.getLanguage()), false));//所有人
}
return options;
}
}

@ -0,0 +1,321 @@
package weaver.hrm.cachecenter.util;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import weaver.conn.RecordSet;
import weaver.hrm.User;
import weaver.hrm.cachecenter.bean.LoadComInfo;
import weaver.hrm.cachecenter.bean.SuperDepartmentComInfo;
import weaver.hrm.cachecenter.bean.SuperSubCompanyComInfo;
import weaver.hrm.cachecenter.entry.ConstStyle;
import weaver.hrm.cachecenter.entry.HrmTypeStyle;
import weaver.hrm.cachecenter.entry.OrgUpOrDownTypeStyle;
import weaver.hrm.cachecenter.entry.OrgtypeInfo;
import weaver.hrm.company.DepartmentComInfo;
import weaver.hrm.company.SubCompanyComInfo;
import weaver.hrm.resource.ResourceComInfo;
public class ObjtypeParser {
private static final Logger log = LoggerFactory.getLogger("parallel");
private ResourceComInfo resourceInfo ;
private DepartmentComInfo deptInfo ;
private SuperDepartmentComInfo superDeptInfo ;
private SubCompanyComInfo subcompanyInfo ;
private SuperSubCompanyComInfo superSubcompanyInfo ;
private ObjtypeParser(){
try {
resourceInfo = new ResourceComInfo() ;
deptInfo = new DepartmentComInfo() ;
superDeptInfo = LoadComInfo.getInstance(SuperDepartmentComInfo.class) ;
subcompanyInfo = new SubCompanyComInfo() ;
superSubcompanyInfo = LoadComInfo.getInstance(SuperSubCompanyComInfo.class) ;
} catch (Exception e) {
}
} ;
public static ObjtypeParser getInstance(){
return new ObjtypeParser() ;
}
/**
*
* @param desc
* @param user
* @return
* @throws Exception
*/
public List<OrgtypeInfo> parse(String desc,User user) {
List<OrgtypeInfo> list = new ArrayList<OrgtypeInfo>() ;
if(StringUtils.isBlank(desc)) return list ;
for (String one : desc.split(";")) {
OrgtypeInfo typeInfo = parseOne(one, user) ;
if(typeInfo != null) list.add(typeInfo) ;
}
return list ;
}
private static final Pattern SPLIT_PATTERN = Pattern.compile("[|]") ;
/**
*
* @param one
* @param user
* @return
*/
public OrgtypeInfo parseOne(String one,User user){
String[] infos = SPLIT_PATTERN.split(one,-1) ;
if(infos.length != 8) return null ;
String objid = infos[0] ;
String objtype = infos[1] ;
String rolelevel = infos[2] ;
String joblevel = infos[3] ;
String jobobjid = infos[4] ;
String seclevel = infos[5] ;
String seclevelMax = infos[6] ;
String relationship = infos[7] ;
if ("16".equals(objtype)){
int uid = user.getUID();
log.info("【uid】==========="+uid);
String sql = "select id from hrmdepartment where supdepid=" +
"(select d.supdepid from HrmResource r join hrmdepartment d on r.departmentid=d.id where r.id='" + uid + "')" +
"and subcompanyid1 = (select subcompanyid1 from HrmResource where id='" + uid + "')";
log.info("【sql】==========="+sql);
RecordSet recordSet = new RecordSet();
boolean flag = recordSet.executeQuery(sql);
String uids = "";
if(flag){
while (recordSet.next()) {
uids += recordSet.getString("id") + ",";
}
if (uids.endsWith(",")){
objid = uids.substring(0,uids.length()-1);
}
}
log.info("【objid】==========="+objid);
objtype="10";
}
OrgtypeInfo typeInfo = new OrgtypeInfo() ;
HrmTypeStyle style = HrmTypeStyle.findById(objtype) ;
typeInfo.setId(objid) ;
typeInfo.setType(style) ;
typeInfo.setRolelevel(rolelevel) ;
typeInfo.setJoblevel(joblevel) ;
typeInfo.setJobobjid(jobobjid) ;
typeInfo.setRolelevel(rolelevel) ;
typeInfo.setSeclevelBegin(seclevel) ;
typeInfo.setSeclevelEnd(seclevelMax) ;
typeInfo.setIn(StringUtils.isBlank(relationship) ||"0".equals(relationship)) ;
switch (style) {
case SELF_DEPARTMENT:
resetSelfDepartment(typeInfo,user);
break;
case SELF_UPER_DEPARTMENT:
resetSelfUpperDepartment(typeInfo,user);
break;
case SELF_UPER_ALL_DEPARTMENT:
resetSelfUperAllDepartment(typeInfo,user) ;
break;
case SELF_DOWN_DEPARTMENT:
resetSelfDownDepartment(typeInfo,user) ;
break;
case SELF_DOWN_ALL_DEPARTMENT:
resetSelfDownAllDepartment(typeInfo,user) ;
break;
case SELF_SUBCOMPANY:
resetSelfSubcompany(typeInfo,user) ;
break;
case SELF_UPER_SUBCOMPANY:
resetSelfUperSubcompany(typeInfo,user) ;
break;
case SELF_UPER_ALL_SUBCOMPANY:
resetSelfUperAllSubCompany(typeInfo,user) ;
break;
case SELF_DOWN_SUBCOMPANY:
resetSelfDownSubcompany(typeInfo,user) ;
break;
case SELF_DOWN_ALL_SUBCOMPANY:
resetSelfDownAllSubcompany(typeInfo,user);
break;
default:
break;
}
if(typeInfo.getId() == null) typeInfo.setId(StringUtils.EMPTY);
return typeInfo ;
}
// 所有下级分部
private void resetSelfDownAllSubcompany(OrgtypeInfo typeInfo, User user) {
String id = resourceInfo.getSubCompanyID(Integer.toString(user.getUID())) ;
//Set<String> set = new HashSet<String>() ;
//getLowerSubIdByCircle(id,set) ;
//String allLower = ListUtil.loopIds(set);
typeInfo.setType(HrmTypeStyle.SUBCOMPANY) ;
typeInfo.setId(id) ;
typeInfo.setOrgUpOrDownType(OrgUpOrDownTypeStyle.ORG_ALL_DOWN) ;
}
// private void getLowerSubIdByCircle(String id, Set<String> set) {
// if(StringUtils.isBlank(id)) return ;
// for(String superId : id.split(",")){
// set.add(superId) ;
// String lowerIds = superSubcompanyInfo.getDownIdsBySuperId(superId) ;
// getLowerSubIdByCircle(lowerIds,set);
// }
// }
// 直接下级分部
private void resetSelfDownSubcompany(OrgtypeInfo typeInfo, User user) {
String id = resourceInfo.getSubCompanyID(Integer.toString(user.getUID())) ;
String lowerId = superSubcompanyInfo.getDownIdsBySuperId(id) ;
typeInfo.setType(HrmTypeStyle.SUBCOMPANY) ;
typeInfo.setId(lowerId) ;
}
// 所有上级分部
private void resetSelfUperAllSubCompany(OrgtypeInfo typeInfo, User user) {
String id = resourceInfo.getSubCompanyID(Integer.toString(user.getUID())) ;
//Set<String> set = new HashSet<String>() ;
//getSuperSubIdByCircle(id,set) ;
//String allSuper = ListUtil.loopIds(set);
typeInfo.setType(HrmTypeStyle.SUBCOMPANY) ;
typeInfo.setId(id) ;
typeInfo.setOrgUpOrDownType(OrgUpOrDownTypeStyle.ORG_ALL_UP) ;
}
// private void getSuperSubIdByCircle(String id,Set<String> set){
// String superId = subcompanyInfo.getSupsubcomid(id) ;
// if(!StringUtils.isBlank(superId) && !"0".equals(superId)){
// set.add(superId) ;
// getSuperSubIdByCircle(superId,set) ;
// }
// }
private void resetSelfUperSubcompany(OrgtypeInfo typeInfo, User user) {
String id = resourceInfo.getSubCompanyID(Integer.toString(user.getUID())) ;
String superId = subcompanyInfo.getSupsubcomid(id) ;
typeInfo.setType(HrmTypeStyle.SUBCOMPANY) ;
typeInfo.setId(superId) ;
}
private void resetSelfSubcompany(OrgtypeInfo typeInfo, User user) {
String id = resourceInfo.getSubCompanyID(Integer.toString(user.getUID())) ;
typeInfo.setType(HrmTypeStyle.SUBCOMPANY) ;
typeInfo.setId(id) ;
}
/**
*
* @param typeInfo
* @param user
*/
private void resetSelfDownAllDepartment(OrgtypeInfo typeInfo, User user) {
String deptid = resourceInfo.getDepartmentID(Integer.toString(user.getUID())) ;
//String underDeptids = superDeptInfo.getDepartIdsBySuperId(deptid) ;
//Set<String> set = new HashSet<String>() ;
//getLowerIdsByCicle(underDeptids,set);
typeInfo.setType(HrmTypeStyle.DEPARTMENT) ;
//typeInfo.setId(ListUtil.loopIds(set)) ;
typeInfo.setId(deptid) ;
typeInfo.setOrgUpOrDownType(OrgUpOrDownTypeStyle.ORG_ALL_DOWN) ;
}
private void resetSelfDownDepartment(OrgtypeInfo typeInfo, User user) {
String deptid = resourceInfo.getDepartmentID(Integer.toString(user.getUID())) ;
String lowerIds = superDeptInfo.getDepartIdsBySuperId(deptid) ;
typeInfo.setType(HrmTypeStyle.DEPARTMENT) ;
typeInfo.setId(lowerIds) ;
}
/**
*
* @param typeInfo
* @param user
*/
private void resetSelfUperAllDepartment(OrgtypeInfo typeInfo, User user) {
String deptid = resourceInfo.getDepartmentID(Integer.toString(user.getUID())) ;
//Set<String> set = new HashSet<String>() ;
//getSuperDeptIdByCircle(deptid,set) ;
typeInfo.setType(HrmTypeStyle.DEPARTMENT) ;
//typeInfo.setId(ListUtil.loopIds(set)) ;
typeInfo.setId(deptid) ;
typeInfo.setOrgUpOrDownType(OrgUpOrDownTypeStyle.ORG_ALL_UP) ;
}
// //获取所有下级
// private void getLowerIdsByCicle(String ids,Set<String> set){
// if(StringUtils.isBlank(ids)) return ;
// for(String superId : ids.split(",")){
// set.add(superId) ;
// String lowerIds = superDeptInfo.getDepartIdsBySuperId(superId) ;
// getLowerIdsByCicle(lowerIds,set);
// }
// }
// // 获取全部上级
// private void getSuperDeptIdByCircle(String id,Set<String> set){
// String superId = deptInfo.getDepartmentsupdepid(id) ;
// if(!StringUtils.isBlank(superId) && !"0".equals(superId)){
// set.add(superId) ;
// getSuperDeptIdByCircle(superId,set) ;
// }
// }
private void resetSelfUpperDepartment(OrgtypeInfo typeInfo, User user) {
String deptid = resourceInfo.getDepartmentID(Integer.toString(user.getUID())) ;
String superId = deptInfo.getDepartmentsupdepid(deptid) ;
typeInfo.setType(HrmTypeStyle.DEPARTMENT) ;
typeInfo.setId(superId) ;
}
private void resetSelfDepartment(OrgtypeInfo info,User user){
String deptid = resourceInfo.getDepartmentID(Integer.toString(user.getUID())) ;
info.setType(HrmTypeStyle.DEPARTMENT) ;
info.setId(deptid) ;
}
}

@ -0,0 +1,375 @@
package weaver.workflow.workflow;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.company.DepartmentComInfo;
import weaver.hrm.company.SubCompanyComInfo;
import weaver.hrm.job.JobTitlesComInfo;
import weaver.hrm.resource.ResourceComInfo;
import weaver.hrm.roles.RolesComInfo;
import weaver.systeminfo.SystemEnv;
import java.util.List;
/**
*
* @author Administrator
*
*/
public class WfFwLimitTransMethod extends BaseBean{
private ResourceComInfo rc = null;
private DepartmentComInfo dc = null;
private SubCompanyComInfo sc = null;
private JobTitlesComInfo jtc = null;
private RolesComInfo rolec = null;
public WfFwLimitTransMethod(){
try {
rc = new ResourceComInfo();
dc = new DepartmentComInfo();
sc = new SubCompanyComInfo();
jtc = new JobTitlesComInfo();
rolec = new RolesComInfo();
} catch (Exception e) {
writeLog(e);
}
}
public String getResultCheckBox(String param){
return "true";
}
/**
*
* @param objtype
* @return
*/
public String getObjTypeShow(String objtype,String languageid){
String result = "";
int langu = Util.getIntValue(languageid, 7);
switch(Util.getIntValue(objtype)){
case 0:
result = SystemEnv.getHtmlLabelName(21837, langu); //本部门
break;
case 1:
result = SystemEnv.getHtmlLabelName(386081, langu); //直接上级部门
break;
case 2:
result = SystemEnv.getHtmlLabelName(386082, langu); //所有上级部门
break;
case 3:
result = SystemEnv.getHtmlLabelName(17587, langu); //下级部门
break;
case 4:
result = SystemEnv.getHtmlLabelName(386083, langu); //所有下级部门
break;
case 5:
result = SystemEnv.getHtmlLabelName(30792, langu); //本分部
break;
case 6:
result = SystemEnv.getHtmlLabelName(386084, langu); //直接上级分部
break;
case 7:
result = SystemEnv.getHtmlLabelName(386085, langu); //所有上级分部
break;
case 8:
result = SystemEnv.getHtmlLabelName(17898, langu); //下级分部
break;
case 9:
result = SystemEnv.getHtmlLabelName(386086, langu); //所有下级分部
break;
case 10:
result = SystemEnv.getHtmlLabelName(19438, langu); //指定部门
break;
case 11:
result = SystemEnv.getHtmlLabelName(19437, langu); //指定分部
break;
case 12:
result = SystemEnv.getHtmlLabelName(81811, langu); //指定人员
break;
case 13:
result = SystemEnv.getHtmlLabelName(382788, langu); //指定角色
break;
case 14:
result = SystemEnv.getHtmlLabelName(382789, langu); //指定岗位
break;
case 15:
result = SystemEnv.getHtmlLabelName(1340, langu); //所有人
break;
case 16:
result = SystemEnv.getHtmlLabelName(10006035, langu); //所有人
break;
}
return result;
}
/**
*
* @param seclevel
* @param seclevelMax
* @return
*/
public String getSecLevelShow(int objtype ,String seclevel,String seclevelMax){
String result = seclevel+"-"+seclevelMax;
if("".equals(seclevel.trim()) && "".equals(seclevelMax.trim())){
result = "";
}
if(objtype<=9){
result = "";
}
return result;
}
/**
*
* @param objid
* @param parame
* @return
*/
public String getObjIdsShow(String objid,String param){
String[] paramArray = Util.splitString(param, "+");
int objtype = Util.getIntValue(paramArray[0]);
String rolelevel = paramArray[1];
String joblevel = paramArray[2];
String jobobjid = paramArray[3];
int languageid = Util.getIntValue(paramArray[4],7);
String result = getObjidShowName(objtype, objid, rolelevel,joblevel, jobobjid, languageid);
return result;
}
public String getObjidShowName(int objtype,String objid,String rolelevel,String joblevel,String jobobjid,int languageid){
return getObjidShowName(objtype, objid, rolelevel, joblevel, jobobjid, languageid, "0");
}
public String getObjidShowName(int objtype,String objid,String rolelevel,String joblevel,String jobobjid,int languageid,String fromAdvance){
String result = "";
List<String> list = Util.splitString2List(objid, ",");
switch(objtype){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 15:
if("1".equals(fromAdvance)){
result = getObjTypeShow(objtype+"",languageid+"");
}
break;
case 10://指定部门
for(int k=0;k<list.size();k++){
result+= "、"+dc.getDepartmentname(list.get(k));
}
if(!"".equals(result)){
result = result.substring(1);
}
break;
case 16://平行部门
for(int k=0;k<list.size();k++){
result+= "、"+dc.getDepartmentname(list.get(k));
}
if(!"".equals(result)){
result = result.substring(1);
}
break;
case 11:
//指定分部
for(int k=0;k<list.size();k++){
result+= "、"+sc.getSubCompanyname(list.get(k));
}
if(!"".equals(result)){
result = result.substring(1);
}
break;
case 12:
//指定人员
for(int k=0;k<list.size();k++){
result+= "、"+rc.getResourcename(list.get(k));
}
if(!"".equals(result)){
result = result.substring(1);
}
break;
case 13:
//指定角色
for(int k=0;k<list.size();k++){
result+= "、"+rolec.getRolesRemark(list.get(k));
}
if(!"".equals(result)){
result = result.substring(1);
}
if("0".equals(rolelevel)){
result += "/"+SystemEnv.getHtmlLabelName(124,languageid);
}else if("1".equals(rolelevel)){
result += "/"+SystemEnv.getHtmlLabelName(141,languageid);
}else if("2".equals(rolelevel)){
result += "/"+SystemEnv.getHtmlLabelName(140,languageid);
}
break;
case 14:
//指定岗位
for(int k=0;k<list.size();k++){
result+= "、"+jtc.getJobTitlesname(list.get(k));
}
if(!"".equals(result)){
result = result.substring(1);
}
if("0".equals(joblevel)){
result += "/"+SystemEnv.getHtmlLabelName(19438, Util.getIntValue(languageid));
String depatname = "";
List<String> list_depat = Util.splitString2List(jobobjid, ",");
for(int k=0;k<list_depat.size();k++){
depatname+= "、"+dc.getDepartmentname(list_depat.get(k));
}
if(!"".equals(result)){
depatname = depatname.substring(1);
result += ""+depatname+"";
}
}else if("1".equals(joblevel)){
result += "/"+SystemEnv.getHtmlLabelName(19437, Util.getIntValue(languageid));
String subcomname = "";
List<String> list_subcom = Util.splitString2List(jobobjid, ",");
for(int k=0;k<list_subcom.size();k++){
subcomname+= "、"+sc.getSubCompanyname(list_subcom.get(k));
}
if(!"".equals(result)){
subcomname = subcomname.substring(1);
result += ""+subcomname+"";
}
}else if("2".equals(joblevel)){
result += "/"+SystemEnv.getHtmlLabelName(140,languageid);
}
break;
}
return result;
}
/**
*
* @param relationship
* @return
*/
public String getRelationshipShow(String relationship,String languageid){
String result = "";
if("0".equals(relationship)){
result = SystemEnv.getHtmlLabelName(346, Util.getIntValue(languageid, 7));
}else if("1".equals(relationship)){
result = SystemEnv.getHtmlLabelName(386080, Util.getIntValue(languageid, 7));
}
return result;
}
/**
* -
* @param id
* @param param
* @return
*/
public String getOperatorShow(String id,String param){
String result = "";
int languageid = Util.getIntValue(param,7);
String sql = "";
int oldobjtype = -1;
RecordSet rs = new RecordSet();
sql = "select * from workflow_fwoperadvanced where mainid="+id+" order by id";
rs.execute(sql);
while(rs.next()){
int objtype = Util.getIntValue(rs.getString("objtype"));
int rolelevel = Util.getIntValue(rs.getString("rolelevel"));
int joblevel = Util.getIntValue(rs.getString("joblevel"));
String seclevel = Util.null2String(rs.getString("seclevel"));
String seclevelMax = Util.null2String(rs.getString("seclevelMax"));
String relationship = Util.null2String(rs.getString("relationship"));
String objid = Util.null2String(rs.getString("objid"));
String jobobjid = Util.null2String(rs.getString("jobobjid"));
if(oldobjtype > -1 && oldobjtype!=objtype){
result += "";
}
if(oldobjtype > -1 && oldobjtype==objtype){
result += "";
}
String result0 = getObjidShowName(objtype, objid+"", rolelevel+"",joblevel+"", jobobjid+"", languageid,"1");
if(objtype == 12){//指定人员
//String relas = getRelationshipShow(relationship, languageid+"");
//result0 = ""+relas+""+result0;
}
String seclevelStr = getSecLevelShow(objtype,seclevel,seclevelMax);
if(!"".equals(seclevelStr)){
result0 += ""+SystemEnv.getHtmlLabelName(683, languageid)+seclevelStr+"";
}
oldobjtype = objtype;
result += result0;
}
if(!"".equals(result)){
//result += "";
}
//result ="<a href=\"javaScript:editRow("+id+",0)\">"+ result + "</a>";
return result;
}
/**
* -
* @param id
* @param param
* @return
*/
public String getRecLimitShow(String id,String param){
String result = "";
int languageid = Util.getIntValue(param,7);
String sql = "";
int oldobjtype = -1;
RecordSet rs = new RecordSet();
sql = "select * from workflow_FwRecAdvanced where mainid="+id+" order by id";
rs.execute(sql);
while(rs.next()){
int objtype = Util.getIntValue(rs.getString("objtype"));
int rolelevel = Util.getIntValue(rs.getString("rolelevel"));
int joblevel = Util.getIntValue(rs.getString("joblevel"));
String seclevel = Util.null2String(rs.getString("seclevel"));
String seclevelMax = Util.null2String(rs.getString("seclevelMax"));
String relationship = Util.null2String(rs.getString("relationship"));
String objid = Util.null2String(rs.getString("objid"));
String jobobjid = Util.null2String(rs.getString("jobobjid"));
if(oldobjtype > -1 && oldobjtype!=objtype){
result += "";
}
if(oldobjtype > -1 && oldobjtype==objtype){
result += "";
}
String result0 = getObjidShowName(objtype, objid+"", rolelevel+"",joblevel+"", jobobjid+"", languageid,"1");
String relas = getRelationshipShow(relationship, languageid+"");
result0 = ""+relas+""+result0;
String seclevelStr = getSecLevelShow(objtype,seclevel,seclevelMax);
if(!"".equals(seclevelStr)){
result0 += ""+SystemEnv.getHtmlLabelName(683, languageid)+seclevelStr+"";
}
oldobjtype = objtype;
result += result0;
}
if(!"".equals(result)){
//result += "";
}
//result ="<a href=\"javaScript:editRow("+id+",1)\">"+ result + "</a>";
return result;
}
}

@ -0,0 +1,7 @@
INSERT INTO HtmlLabelInfo ( indexid,labelname, languageid ) VALUES ( 10006035,'平行部门', 7 ),(10006035,'Parallel departments',8),(10006035,'平行部門',9)
select id,departmentname from hrmdepartment where supdepid=
(select d.supdepid from HrmResource r join hrmdepartment d on r.departmentid=d.id where r.id='8')
and subcompanyid1 = (select subcompanyid1 from HrmResource where id='8')
and id !=(select departmentid from HrmResource where id='8')

@ -0,0 +1,7 @@
需求如下:
指定流转 -- 接收人可选范围 -- 范围设置
接收人类型添加:平行部门(直接上级部门的所有下级部门)
范围关系:包含或排除
Loading…
Cancel
Save