创建流程清单的ASLP,并且修改流程制度文件的接口调用
This commit is contained in:
parent
8ed48a806c
commit
0228d036d6
@ -0,0 +1,492 @@
|
|||||||
|
package com.actionsoft.apps.coe.pal.processlist.aslp;
|
||||||
|
|
||||||
|
import com.actionsoft.apps.coe.pal.constant.CoEConstant;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.method.cache.PALMethodCache;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.method.model.PALMethodAttributeModel;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.method.model.PALMethodModel;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.repository.PALRepositoryAPIManager;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryCache;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryPropertyCache;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.repository.designer.relation.cache.DesignerShapeRelationCache;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.repository.designer.relation.model.DesignerShapeRelationModel;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryPropertyModel;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.repository.util.CoeProcessLevelUtil;
|
||||||
|
import com.actionsoft.apps.coe.pal.processlist.cache.ProcessListConfigCache;
|
||||||
|
import com.actionsoft.apps.coe.pal.processlist.model.ProcessListConfigModel;
|
||||||
|
import com.actionsoft.apps.coe.pal.util.SubUtil;
|
||||||
|
import com.actionsoft.apps.resource.interop.aslp.ASLP;
|
||||||
|
import com.actionsoft.apps.resource.interop.aslp.Meta;
|
||||||
|
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
|
||||||
|
import com.actionsoft.bpms.org.model.DepartmentModel;
|
||||||
|
import com.actionsoft.bpms.server.UserContext;
|
||||||
|
import com.actionsoft.bpms.util.UtilString;
|
||||||
|
import com.actionsoft.i18n.I18nRes;
|
||||||
|
import com.actionsoft.sdk.local.SDK;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class GetCountByProcessList implements ASLP {
|
||||||
|
@Override
|
||||||
|
@Meta(parameter = { "name: 'sid', required: true, desc: 'sid'",
|
||||||
|
"name: 'createUser', required: true, desc: '创建人'" })
|
||||||
|
public ResponseObject call(Map<String, Object> params) {
|
||||||
|
ResponseObject ro = ResponseObject.newWarnResponse("结果未知");
|
||||||
|
// 校验参数
|
||||||
|
String sid = (String) params.get("sid");
|
||||||
|
if (!SDK.getPortalAPI().checkSession(sid)) {
|
||||||
|
ro = ResponseObject.newErrResponse("sid无效");
|
||||||
|
return ro;
|
||||||
|
}
|
||||||
|
UserContext _uc = UserContext.fromSessionId(sid);
|
||||||
|
/**
|
||||||
|
* 这个是获取制度文件的文件个数
|
||||||
|
*/
|
||||||
|
JSONObject jsonObject_control = new JSONObject(new LinkedHashMap<>());
|
||||||
|
List<String> jsonArray_control = new LinkedList<>();
|
||||||
|
jsonArray_control.add("control.policy");
|
||||||
|
jsonObject_control.put("type",jsonArray_control);
|
||||||
|
//{"frameworkSearchInput1Arr":[],"frameworkSearchInput2Arr":[],"frameworkSearchInput3Arr":[],"issuingDepartmentArr":[]}
|
||||||
|
JSONObject jsonObject_custom_control = new JSONObject(new LinkedHashMap<>());
|
||||||
|
jsonObject_custom_control.put("frameworkSearchInput1Arr",new LinkedList<>());
|
||||||
|
jsonObject_custom_control.put("frameworkSearchInput2Arr",new LinkedList<>());
|
||||||
|
jsonObject_custom_control.put("frameworkSearchInput3Arr",new LinkedList<>());
|
||||||
|
jsonObject_custom_control.put("issuingDepartmentArr",new LinkedList<>());
|
||||||
|
int control_policy_size = getProcessListHeader("7d3ca852-a0bd-42e6-80b1-3dcea6f55083", "", "", "1,2,3,4", jsonObject_control.toString(), jsonObject_custom_control.toString(),_uc);
|
||||||
|
/**
|
||||||
|
* 这个是获取表单文件的文件个数
|
||||||
|
* {"type":["data.form"]}
|
||||||
|
*/
|
||||||
|
JSONObject jsonObject_form = new JSONObject(new LinkedHashMap<>());
|
||||||
|
List<String> jsonArray_form = new LinkedList<>();
|
||||||
|
jsonArray_form.add("data.form");
|
||||||
|
jsonObject_form.put("type",jsonArray_form);
|
||||||
|
//{"frameworkSearchInput1Arr":[],"frameworkSearchInput2Arr":[],"frameworkSearchInput3Arr":[],"issuingDepartmentArr":[]}
|
||||||
|
JSONObject jsonObject_custom_form = new JSONObject(new LinkedHashMap<>());
|
||||||
|
jsonObject_custom_form.put("frameworkSearchInput1Arr",new LinkedList<>());
|
||||||
|
jsonObject_custom_form.put("frameworkSearchInput2Arr",new LinkedList<>());
|
||||||
|
jsonObject_custom_form.put("frameworkSearchInput3Arr",new LinkedList<>());
|
||||||
|
jsonObject_custom_form.put("issuingDepartmentArr",new LinkedList<>());
|
||||||
|
int data_form_size = getProcessListHeader("7d3ca852-a0bd-42e6-80b1-3dcea6f55083", "", "", "1,2,3,4", jsonObject_form.toString(), jsonObject_custom_form.toString(),_uc);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 这个是获取流程文件的文件个数
|
||||||
|
* {"type":["process.epc","process.flowchart","process.bpmn2"]}
|
||||||
|
*/
|
||||||
|
|
||||||
|
JSONObject jsonObject_process = new JSONObject(new LinkedHashMap<>());
|
||||||
|
List<String> list_process = new LinkedList<>();
|
||||||
|
list_process.add("process.epc");
|
||||||
|
list_process.add("process.flowchart");
|
||||||
|
list_process.add("process.bpmn2");
|
||||||
|
jsonObject_process.put("type",list_process);
|
||||||
|
//{"frameworkSearchInput1Arr":[],"frameworkSearchInput2Arr":[],"frameworkSearchInput3Arr":[],"issuingDepartmentArr":[]}
|
||||||
|
JSONObject jsonObject_custom_process = new JSONObject(new LinkedHashMap<>());
|
||||||
|
jsonObject_custom_process.put("frameworkSearchInput1Arr",new LinkedList<>());
|
||||||
|
jsonObject_custom_process.put("frameworkSearchInput2Arr",new LinkedList<>());
|
||||||
|
jsonObject_custom_process.put("frameworkSearchInput3Arr",new LinkedList<>());
|
||||||
|
jsonObject_custom_process.put("issuingDepartmentArr",new LinkedList<>());
|
||||||
|
int process_size = getProcessListHeader("7d3ca852-a0bd-42e6-80b1-3dcea6f55083", "", "", "1,2,3,4", jsonObject_process.toString(), jsonObject_custom_process.toString(),_uc);
|
||||||
|
int size_tolal = process_size+control_policy_size+data_form_size;
|
||||||
|
ro.put("fileTotal",size_tolal);
|
||||||
|
ro.put("processFile",process_size);
|
||||||
|
ro.put("policyFile",control_policy_size);
|
||||||
|
ro.put("formFile",data_form_size);
|
||||||
|
return ro;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取所有更多特性
|
||||||
|
* @param category 流程分类,例如process
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private List<JSONObject> getExtendAttrTableColumn(String wsId, String category) {
|
||||||
|
|
||||||
|
List<PALMethodModel> methodList = PALMethodCache.getPALMethodModelListByMethod(category);
|
||||||
|
List<JSONObject> result = new ArrayList<>();
|
||||||
|
Set<String> ids = new HashSet<>();
|
||||||
|
for (int i = 0; i < methodList.size(); i++) {
|
||||||
|
PALMethodModel model = methodList.get(i);
|
||||||
|
if (SDK.getAppAPI().isInstalled(model.getApp()) && SDK.getAppAPI().isActive(model.getApp())) {
|
||||||
|
// 获取所有属性
|
||||||
|
List<PALMethodAttributeModel> attrList = PALRepositoryAPIManager.getInstance().getValidAttributeModels(wsId, model.getId(), true);
|
||||||
|
for (PALMethodAttributeModel attr : attrList ) {
|
||||||
|
String id = attr.getKey();
|
||||||
|
if (attr.getUse() && !ids.contains(id)) {
|
||||||
|
ids.add(id);
|
||||||
|
String name = attr.getNewTitle();
|
||||||
|
String label = name;
|
||||||
|
String prop = id;
|
||||||
|
String width = "150";
|
||||||
|
String minWidth = "150";
|
||||||
|
String columnType = "extendAttr";
|
||||||
|
boolean showOverflow = false;
|
||||||
|
JSONObject object1 = getJsonObject(prop, id, label, name, width, minWidth, showOverflow, columnType, "default");
|
||||||
|
result.add(object1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询流程清单表头信息
|
||||||
|
* @param wsId
|
||||||
|
* @param searchInput
|
||||||
|
* @param levelValue
|
||||||
|
* @param tableFilter 表格表头筛选条件
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public int getProcessListHeader(String wsId, String teamId, String searchInput, String levelValue, String tableFilter, String customFilter,UserContext _uc) {
|
||||||
|
String category = "process";
|
||||||
|
ResponseObject ro = ResponseObject.newOkResponse();
|
||||||
|
// 获取默认的表格列
|
||||||
|
LinkedHashMap<String, JSONObject> defaultTableColumnMap = getDefaultFixedTableColumn(category);
|
||||||
|
// 获取流程下分类已经设置的更多特性
|
||||||
|
List<JSONObject> list = getExtendAttrTableColumn(wsId, category);
|
||||||
|
// 获取配置信息
|
||||||
|
ProcessListConfigModel configModel = ProcessListConfigCache.getCache().get(wsId);
|
||||||
|
if (configModel == null || configModel.getCustomColumns() == null || configModel.getCustomColumns().isEmpty()) {// 从未配置,取默认
|
||||||
|
// 默认已选中的配置项
|
||||||
|
JSONArray customTableCheckedData = new JSONArray();
|
||||||
|
for (Map.Entry<String, JSONObject> entry : defaultTableColumnMap.entrySet()) {
|
||||||
|
customTableCheckedData.add(entry.getValue());
|
||||||
|
}
|
||||||
|
ro.put("customTableCheckedData", customTableCheckedData);// 已选中表项
|
||||||
|
ro.put("customTableUncheckedData", list);// 未选中表项
|
||||||
|
} else {
|
||||||
|
// 获取配置信息
|
||||||
|
JSONArray customColumns = configModel.getCustomColumns();
|
||||||
|
JSONArray customTableCheckedData = new JSONArray();// 已选中表项
|
||||||
|
Set<String> checkedSet = new HashSet<>();
|
||||||
|
LinkedHashMap<String ,JSONObject> extendAttrMap = new LinkedHashMap<>(16, 0.75f, true);
|
||||||
|
for (JSONObject obj : list) {
|
||||||
|
extendAttrMap.put(obj.getString("id"), obj);
|
||||||
|
}
|
||||||
|
// 判断已经设置的配置中在更多特性中是否还存在,存在则显示,不存在则不显示
|
||||||
|
for (int i = 0; i < customColumns.size(); i++) {
|
||||||
|
JSONObject obj = customColumns.getJSONObject(i);
|
||||||
|
String columnType = obj.getString("columnType");
|
||||||
|
String id = obj.getString("id");
|
||||||
|
if ("extendAttr".equals(columnType)) {
|
||||||
|
// 检查是否还有该扩展字段
|
||||||
|
if (extendAttrMap.containsKey(id)) {// 该属性还在已经配置好的更多特性中,则显示
|
||||||
|
customTableCheckedData.add(obj);
|
||||||
|
checkedSet.add(id);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (defaultTableColumnMap.containsKey(id)) {
|
||||||
|
customTableCheckedData.add(defaultTableColumnMap.get(id));
|
||||||
|
} else {
|
||||||
|
customTableCheckedData.add(obj);
|
||||||
|
}
|
||||||
|
checkedSet.add(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 未选中表项
|
||||||
|
JSONArray customTableUncheckedData = new JSONArray();
|
||||||
|
// 未选择的固定属性
|
||||||
|
for (Map.Entry<String, JSONObject> entry : defaultTableColumnMap.entrySet()) {
|
||||||
|
if (!checkedSet.contains(entry.getKey())) {
|
||||||
|
customTableUncheckedData.add(entry.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 未选择的扩展属性
|
||||||
|
for (JSONObject obj : list) {
|
||||||
|
String id = obj.getString("id");
|
||||||
|
if (!checkedSet.contains(id)) {
|
||||||
|
customTableUncheckedData.add(obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ro.put("customTableCheckedData", customTableCheckedData);// 已选中表项
|
||||||
|
ro.put("customTableUncheckedData", customTableUncheckedData);// 未选中表项
|
||||||
|
}
|
||||||
|
|
||||||
|
List<PALRepositoryModel> palList = getFilteredPalRepositoryList(wsId, teamId, category, searchInput, levelValue, tableFilter, customFilter,_uc);
|
||||||
|
return palList.size();
|
||||||
|
}
|
||||||
|
private LinkedHashMap<String, JSONObject> getDefaultFixedTableColumn(String category) {
|
||||||
|
String columnType = "default";
|
||||||
|
LinkedHashMap<String, JSONObject> map = new LinkedHashMap<>(16, 0.75f, true);
|
||||||
|
if ("process".equals(category)) {
|
||||||
|
// 编号(1-n排序)、序号(根据位置计算)、流程名称,类型,状态
|
||||||
|
map.put("no_serialNumber", getJsonObject("no_serialNumber", "no_serialNumber", "序号", "序号", "78", "78", false, columnType, "default"));
|
||||||
|
map.put("no_default", getJsonObject("no_default", "no_default", "编号", "编号", "100", "100", false, columnType, "default"));
|
||||||
|
map.put("name", getJsonObject("name", "name", "流程名称", "流程名称", "250", "250", false, columnType, "name"));
|
||||||
|
JSONObject typeObj = getJsonObject("type", "type", "类型", "类型", "150", "150", false, columnType, "selectType");
|
||||||
|
typeObj.put("filters", getProcessCategoryFilters(category));
|
||||||
|
map.put("type", typeObj);
|
||||||
|
JSONObject statusObj = getJsonObject("status", "status", "状态", "状态", "150", "150", false, columnType, "selectStatus");
|
||||||
|
statusObj.put("filters", getProcessStatusFilters());
|
||||||
|
map.put("status", statusObj);
|
||||||
|
// map.put("parent_name",getJsonObject("parent_name","parent_name","上级名称","上级名称","250","250",false,columnType,"name"));
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取流程相关状态
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private JSONArray getProcessStatusFilters() {
|
||||||
|
// 状态筛选项
|
||||||
|
JSONArray processStatusArr = new JSONArray();
|
||||||
|
JSONObject object3 = new JSONObject();
|
||||||
|
object3.put("text", "设计中");
|
||||||
|
object3.put("value", "designer");
|
||||||
|
JSONObject object1 = new JSONObject();
|
||||||
|
object1.put("text", "已发布");
|
||||||
|
object1.put("value", "publish");
|
||||||
|
JSONObject object2 = new JSONObject();
|
||||||
|
object2.put("text", "已停用");
|
||||||
|
object2.put("value", "stop");
|
||||||
|
processStatusArr.add(object1);
|
||||||
|
processStatusArr.add(object2);
|
||||||
|
processStatusArr.add(object3);
|
||||||
|
return processStatusArr;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取分类下的建模方法
|
||||||
|
* @param category
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private JSONArray getProcessCategoryFilters(String category) {
|
||||||
|
JSONArray categoryArr = new JSONArray();
|
||||||
|
Set<String> ids = new HashSet<>();
|
||||||
|
if ("process".equals(category)) {
|
||||||
|
ids.add("default");
|
||||||
|
JSONObject object = new JSONObject();
|
||||||
|
object.put("text", I18nRes.findValue(CoEConstant.APP_ID, "default"));
|
||||||
|
object.put("value", "default");
|
||||||
|
categoryArr.add(object);
|
||||||
|
}
|
||||||
|
List<PALMethodModel> methodList = PALMethodCache.getPALMethodModelListByMethod("process");
|
||||||
|
for (int i = 0; i < methodList.size(); i++) {
|
||||||
|
PALMethodModel model = methodList.get(i);
|
||||||
|
if (!ids.contains(model.getId()) && SDK.getAppAPI().isInstalled(model.getApp()) && SDK.getAppAPI().isActive(model.getApp())) {
|
||||||
|
JSONObject object = new JSONObject();
|
||||||
|
object.put("text", I18nRes.findValue(CoEConstant.APP_ID, model.getId()));
|
||||||
|
object.put("value", model.getId());
|
||||||
|
categoryArr.add(object);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return categoryArr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 组装对象
|
||||||
|
* @param prop
|
||||||
|
* @param id
|
||||||
|
* @param label
|
||||||
|
* @param name
|
||||||
|
* @param width
|
||||||
|
* @param minWidth
|
||||||
|
* @param showOverflow
|
||||||
|
* @param columnType
|
||||||
|
* @param dataType
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private JSONObject getJsonObject(String prop, String id, String label, String name, String width, String minWidth, boolean showOverflow, String columnType, String dataType) {
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("prop", prop);
|
||||||
|
result.put("id", id);
|
||||||
|
result.put("label", label);
|
||||||
|
result.put("name", name);
|
||||||
|
result.put("width", width);
|
||||||
|
result.put("minWidth", minWidth);
|
||||||
|
result.put("showOverflow", showOverflow);
|
||||||
|
result.put("columnType", columnType);
|
||||||
|
result.put("dataType", dataType);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取符合条件的pal流程集合
|
||||||
|
* @param wsId
|
||||||
|
* @param category
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private List<PALRepositoryModel> getFilteredPalRepositoryList(String wsId, String teamId, String category, String searchInput, String levelValue, String tableFilter, String customFilter, UserContext _uc) {
|
||||||
|
// type,status
|
||||||
|
JSONObject tableFilterObj = JSONObject.parseObject(tableFilter);
|
||||||
|
// 类型
|
||||||
|
List<String> typeList = new ArrayList<>();
|
||||||
|
if (tableFilterObj.containsKey("type")) {
|
||||||
|
typeList = JSONArray.parseArray(tableFilterObj.getString("type"), String.class);
|
||||||
|
}
|
||||||
|
// 状态
|
||||||
|
List<String> statusList = new ArrayList<>();
|
||||||
|
if (tableFilterObj.containsKey("status")) {
|
||||||
|
statusList = JSONArray.parseArray(tableFilterObj.getString("status"), String.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 自定义筛选
|
||||||
|
JSONObject customFilterObj = JSONObject.parseObject(customFilter);
|
||||||
|
JSONArray frameworkSearchInput1Arr = customFilterObj.getJSONArray("frameworkSearchInput1Arr");//流程架构L1
|
||||||
|
JSONArray frameworkSearchInput2Arr = customFilterObj.getJSONArray("frameworkSearchInput2Arr");//流程架构L2
|
||||||
|
JSONArray frameworkSearchInput3Arr = customFilterObj.getJSONArray("frameworkSearchInput3Arr");//流程架构L3
|
||||||
|
JSONArray issuingDepartmentArr = customFilterObj.getJSONArray("issuingDepartmentArr");// 发布部门
|
||||||
|
|
||||||
|
Set<String> l1Set = new HashSet<>();
|
||||||
|
Set<String> l2Set = new HashSet<>();
|
||||||
|
Set<String> l3Set = new HashSet<>();
|
||||||
|
Set<String> deptSet = new HashSet<>();
|
||||||
|
|
||||||
|
for (int i = 0; i < frameworkSearchInput1Arr.size(); i++) {
|
||||||
|
l1Set.add(handleCustomFilterName(frameworkSearchInput1Arr.getJSONObject(i).getString("name")));
|
||||||
|
}
|
||||||
|
for (int i = 0; i < frameworkSearchInput2Arr.size(); i++) {
|
||||||
|
l2Set.add(handleCustomFilterName(frameworkSearchInput2Arr.getJSONObject(i).getString("name")));
|
||||||
|
}
|
||||||
|
for (int i = 0; i < frameworkSearchInput3Arr.size(); i++) {
|
||||||
|
l3Set.add(handleCustomFilterName(frameworkSearchInput3Arr.getJSONObject(i).getString("name")));
|
||||||
|
}
|
||||||
|
for (int i = 0; i < issuingDepartmentArr.size(); i++) {
|
||||||
|
String deptId = issuingDepartmentArr.getJSONObject(i).getString("id");
|
||||||
|
deptSet.add(deptId);
|
||||||
|
// 添加所有子部门
|
||||||
|
List<DepartmentModel> list = new ArrayList<>();
|
||||||
|
getAllSubDepartments(deptId, list);
|
||||||
|
for (DepartmentModel model : list) {
|
||||||
|
deptSet.add(model.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
List<PALRepositoryModel> palList = new ArrayList<>();
|
||||||
|
Set<String> ids = new HashSet<>();
|
||||||
|
PALRepositoryCache.getAllChildrenModelsByPid(wsId, category, palList, ids);
|
||||||
|
// 获取所有正在设计中的
|
||||||
|
List<PALRepositoryModel> tmpPalList = new ArrayList<>();
|
||||||
|
Set<String> levelSet = new HashSet<>();
|
||||||
|
String [] selectValueArr = levelValue.split(",");
|
||||||
|
for (int i = 0; i < selectValueArr.length; i++) {
|
||||||
|
if (!UtilString.isEmpty(selectValueArr[i])) {
|
||||||
|
levelSet.add(selectValueArr[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 小组权限筛选
|
||||||
|
Set<String> permVerIds = new HashSet<>();
|
||||||
|
if (UtilString.isNotEmpty(teamId)) {
|
||||||
|
// 获取权限versionIds
|
||||||
|
permVerIds = CoeProcessLevelUtil.getPermRepositoryVersionIds(wsId, teamId, _uc.getUID(), null, null);
|
||||||
|
|
||||||
|
}
|
||||||
|
for (PALRepositoryModel model: palList) {
|
||||||
|
if (!model.isUse()) {// 非设计中状态,过滤
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!UtilString.isEmpty(searchInput)) {// 流程名称条件不为空时,过滤名称
|
||||||
|
if (!model.getName().toUpperCase().contains(searchInput.toUpperCase())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (levelSet.size() > 0) {// 流程层级不为空时,过滤层级
|
||||||
|
if (!levelSet.contains(model.getLevel() + "")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (typeList.size() > 0) {// 分类筛选
|
||||||
|
if (!typeList.contains(model.getMethodId())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (statusList.size() > 0) {// 状态筛选
|
||||||
|
if (model.isPublish() && !statusList.contains("publish")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (model.isStop() && !statusList.contains("stop")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!statusList.contains("designer") && !model.isStop() && !model.isPublish() && !model.isApproval()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (UtilString.isNotEmpty(teamId)) {// 小组权限判断
|
||||||
|
if (!permVerIds.contains(model.getVersionId())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 自定义筛选
|
||||||
|
if (l1Set.size() > 0) {
|
||||||
|
PALRepositoryPropertyModel l1PropModel = PALRepositoryPropertyCache.getPropertyByPropertyId(model.getId(), "Process_Architecture_L1");
|
||||||
|
if (l1PropModel == null || !l1Set.contains(l1PropModel.getPropertyValue())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (l2Set.size() > 0) {
|
||||||
|
PALRepositoryPropertyModel l2PropModel = PALRepositoryPropertyCache.getPropertyByPropertyId(model.getId(), "Process_Architecture_L2");
|
||||||
|
if (l2PropModel == null || !l2Set.contains(l2PropModel.getPropertyValue())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (l3Set.size() > 0) {
|
||||||
|
PALRepositoryPropertyModel l3PropModel = PALRepositoryPropertyCache.getPropertyByPropertyId(model.getId(), "Process_Architecture_L3");
|
||||||
|
if (l3PropModel == null || !l3Set.contains(l3PropModel.getPropertyValue())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (deptSet.size() > 0) {
|
||||||
|
List<DesignerShapeRelationModel> list = DesignerShapeRelationCache.getByFileId(model.getId(), "Issuing_department");
|
||||||
|
if (list == null || list.size() == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
boolean flag = false;
|
||||||
|
for (DesignerShapeRelationModel relation : list) {
|
||||||
|
if (UtilString.isEmpty(relation.getShapeId())) {// 文件属性
|
||||||
|
JSONObject obj = JSONObject.parseObject(relation.getRelationShapeText());
|
||||||
|
String id = obj.getString("id");
|
||||||
|
if (deptSet.contains(id)) {
|
||||||
|
flag = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!flag) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 追加
|
||||||
|
tmpPalList.add(model);
|
||||||
|
}
|
||||||
|
return tmpPalList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String handleCustomFilterName(String name) {
|
||||||
|
String str2 = "";
|
||||||
|
String str1=name.substring(0, name.lastIndexOf(".")+1);
|
||||||
|
if(UtilString.isNotEmpty(str1)){
|
||||||
|
String end=name.substring(name.lastIndexOf(".")+1);
|
||||||
|
int len=Integer.valueOf(SubUtil.getQuantity(end).length());
|
||||||
|
str2=name.substring(str1.length()+len, name.length());
|
||||||
|
}else{
|
||||||
|
str2=name;
|
||||||
|
}
|
||||||
|
return str2.trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取所有子部门
|
||||||
|
* @param deptId
|
||||||
|
* @param result
|
||||||
|
*/
|
||||||
|
private void getAllSubDepartments(String deptId, List<DepartmentModel> result) {
|
||||||
|
List<DepartmentModel> subModels = SDK.getORGAPI().getSubDepartments(deptId);
|
||||||
|
if (subModels != null && subModels.size() > 0) {
|
||||||
|
for (DepartmentModel model : subModels) {
|
||||||
|
result.add(model);
|
||||||
|
getAllSubDepartments(model.getId(), result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -5,13 +5,12 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.actionsoft.apps.coe.pal.processlist.aslp.GetCountByProcessList;
|
||||||
import com.actionsoft.apps.coe.pal.processlist.cache.ProcessListConfigCache;
|
import com.actionsoft.apps.coe.pal.processlist.cache.ProcessListConfigCache;
|
||||||
import com.actionsoft.apps.coe.pal.processlist.web.PALRepositoryListWeb;
|
import com.actionsoft.apps.coe.pal.processlist.web.PALRepositoryListWeb;
|
||||||
import com.actionsoft.apps.listener.PluginListener;
|
import com.actionsoft.apps.listener.PluginListener;
|
||||||
import com.actionsoft.apps.resource.AppContext;
|
import com.actionsoft.apps.resource.AppContext;
|
||||||
import com.actionsoft.apps.resource.plugin.profile.AWSPluginProfile;
|
import com.actionsoft.apps.resource.plugin.profile.*;
|
||||||
import com.actionsoft.apps.resource.plugin.profile.AppExtensionProfile;
|
|
||||||
import com.actionsoft.apps.resource.plugin.profile.CachePluginProfile;
|
|
||||||
|
|
||||||
public class Plugins implements PluginListener {
|
public class Plugins implements PluginListener {
|
||||||
|
|
||||||
@ -36,6 +35,7 @@ public class Plugins implements PluginListener {
|
|||||||
params1.put("title", "流程清单");
|
params1.put("title", "流程清单");
|
||||||
params1.put("desc", "流程清单");
|
params1.put("desc", "流程清单");
|
||||||
list.add(new AppExtensionProfile("PAL小组->流程清单", "aslp://com.actionsoft.apps.coe.pal.cooperation/registerApp", params1));
|
list.add(new AppExtensionProfile("PAL小组->流程清单", "aslp://com.actionsoft.apps.coe.pal.cooperation/registerApp", params1));
|
||||||
|
list.add(new ASLPPluginProfile("GetCountByProcessList", GetCountByProcessList.class.getName(), "获取流程相关的个数", new HttpASLP(HttpASLP.AUTH_RSA, null)));
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -8,24 +8,37 @@ import java.time.LocalDate;
|
|||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.Period;
|
import java.time.Period;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
|
import com.actionsoft.apps.coe.pal.constant.CoEConstant;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.method.cache.PALMethodCache;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.method.model.PALMethodAttributeModel;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.method.model.PALMethodModel;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.repository.PALRepositoryAPIManager;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryCache;
|
||||||
import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryPropertyCache;
|
import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryPropertyCache;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.repository.designer.relation.cache.DesignerShapeRelationCache;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.repository.designer.relation.model.DesignerShapeRelationModel;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel;
|
||||||
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryPropertyModel;
|
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryPropertyModel;
|
||||||
|
import com.actionsoft.apps.coe.pal.pal.repository.util.CoeProcessLevelUtil;
|
||||||
|
import com.actionsoft.apps.coe.pal.processlist.model.ProcessListConfigModel;
|
||||||
|
import com.actionsoft.apps.coe.pal.util.SubUtil;
|
||||||
import com.actionsoft.bpms.bo.engine.BO;
|
import com.actionsoft.bpms.bo.engine.BO;
|
||||||
import com.actionsoft.bpms.commons.database.RowMap;
|
import com.actionsoft.bpms.commons.database.RowMap;
|
||||||
import com.actionsoft.bpms.commons.mvc.view.ActionWeb;
|
import com.actionsoft.bpms.commons.mvc.view.ActionWeb;
|
||||||
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
|
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
|
||||||
|
import com.actionsoft.bpms.org.model.DepartmentModel;
|
||||||
import com.actionsoft.bpms.server.RequestParams;
|
import com.actionsoft.bpms.server.RequestParams;
|
||||||
import com.actionsoft.bpms.server.UserContext;
|
import com.actionsoft.bpms.server.UserContext;
|
||||||
import com.actionsoft.bpms.util.DBSql;
|
import com.actionsoft.bpms.util.DBSql;
|
||||||
import com.actionsoft.bpms.util.UtilString;
|
import com.actionsoft.bpms.util.UtilString;
|
||||||
|
import com.actionsoft.i18n.I18nRes;
|
||||||
import com.actionsoft.sdk.local.SDK;
|
import com.actionsoft.sdk.local.SDK;
|
||||||
|
import com.actionsoft.sdk.local.api.AppAPI;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.awspaas.user.apps.yili.reportform.cache.ProcessListConfigCache;
|
||||||
import com.awspaas.user.apps.yili.reportform.util.GetNodesUtil;
|
import com.awspaas.user.apps.yili.reportform.util.GetNodesUtil;
|
||||||
import com.awspaas.user.apps.yili.reportform.util.TreeUtil;
|
import com.awspaas.user.apps.yili.reportform.util.TreeUtil;
|
||||||
|
|
||||||
@ -59,7 +72,7 @@ public class FileManagementService extends ActionWeb {
|
|||||||
Integer guideFile = 0;
|
Integer guideFile = 0;
|
||||||
Integer formFile = 0;
|
Integer formFile = 0;
|
||||||
HashMap<String, Object> fileSortMap = new HashMap<>();
|
HashMap<String, Object> fileSortMap = new HashMap<>();
|
||||||
//List<RowMap> fileRowMaps = DBSql.getMaps( "SELECT FILEID,PLMETHODID,POLICYTYPE FROM BO_EU_PAL_FILE1 WHERE FILESTATE='1'");
|
/*//List<RowMap> fileRowMaps = DBSql.getMaps( "SELECT FILEID,PLMETHODID,POLICYTYPE FROM BO_EU_PAL_FILE1 WHERE FILESTATE='1'");
|
||||||
List<RowMap> fileRowMaps = DBSql.getMaps("SELECT ID AS FILEID,EXT6 AS PUBDEPT,PLMETHODID,EXT5 AS FILESTATE,EXT3 AS POLICYTYPE FROM APP_ACT_COE_PAL_REPOSITORY WHERE ISPUBLISH = '1' AND EXT5 = '1' AND PLMETHODID in ('process.epc','process.flowchart','control.policy','data.form')");
|
List<RowMap> fileRowMaps = DBSql.getMaps("SELECT ID AS FILEID,EXT6 AS PUBDEPT,PLMETHODID,EXT5 AS FILESTATE,EXT3 AS POLICYTYPE FROM APP_ACT_COE_PAL_REPOSITORY WHERE ISPUBLISH = '1' AND EXT5 = '1' AND PLMETHODID in ('process.epc','process.flowchart','control.policy','data.form')");
|
||||||
//List<RowMap> fileRowMaps = DBSql.getMaps( "SELECT FILEID,PLMETHODID,POLICYTYPE FROM BO_EU_PAL_FILE1 WHERE FILESTATE='1'");
|
//List<RowMap> fileRowMaps = DBSql.getMaps( "SELECT FILEID,PLMETHODID,POLICYTYPE FROM BO_EU_PAL_FILE1 WHERE FILESTATE='1'");
|
||||||
if (null!=fileRowMaps && !fileRowMaps.isEmpty()) {
|
if (null!=fileRowMaps && !fileRowMaps.isEmpty()) {
|
||||||
@ -80,8 +93,15 @@ public class FileManagementService extends ActionWeb {
|
|||||||
formFile += 1;
|
formFile += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
ro.put("fileTotal",fileTotal);
|
ResponseObject execute = execute(uc.getUID(), uc.getSessionId());
|
||||||
|
System.out.println("execute>>>>>>>>>>>>>>>>>>"+execute.toJSONObject());
|
||||||
|
JSONObject data = execute.toJSONObject().getJSONObject("data");
|
||||||
|
fileTotal = Integer.valueOf(data.getString("fileTotal"));
|
||||||
|
processFile = Integer.valueOf(data.getString("processFile"));
|
||||||
|
policyFile = Integer.valueOf(data.getString("policyFile"));
|
||||||
|
formFile = Integer.valueOf(data.getString("formFile"));
|
||||||
|
ro.put("fileTotal",fileTotal);
|
||||||
fileSortMap.put("processFile",processFile);
|
fileSortMap.put("processFile",processFile);
|
||||||
fileSortMap.put("policyFile",policyFile);
|
fileSortMap.put("policyFile",policyFile);
|
||||||
fileSortMap.put("guideFile",guideFile);
|
fileSortMap.put("guideFile",guideFile);
|
||||||
@ -90,6 +110,418 @@ public class FileManagementService extends ActionWeb {
|
|||||||
return ro.toString();
|
return ro.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ResponseObject execute(String createUser,String sid) {
|
||||||
|
// 调用App
|
||||||
|
String sourceAppId = "com.awspaas.user.apps.yili.reportform";
|
||||||
|
// aslp服务地址
|
||||||
|
String aslp = "aslp://com.actionsoft.apps.coe.pal.processlist/GetCountByProcessList";
|
||||||
|
// 参数定义列表
|
||||||
|
Map params = new HashMap<String, Object>();
|
||||||
|
//创建人,必填
|
||||||
|
params.put("createUser", createUser);
|
||||||
|
//sid,必填
|
||||||
|
params.put("sid", sid);
|
||||||
|
AppAPI appAPI = SDK.getAppAPI();
|
||||||
|
//获取流程相关的个数
|
||||||
|
ResponseObject ro = appAPI.callASLP(appAPI.getAppContext(sourceAppId), aslp, params);
|
||||||
|
return ro;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取所有更多特性
|
||||||
|
* @param category 流程分类,例如process
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private List<JSONObject> getExtendAttrTableColumn(String wsId, String category) {
|
||||||
|
|
||||||
|
List<PALMethodModel> methodList = PALMethodCache.getPALMethodModelListByMethod(category);
|
||||||
|
List<JSONObject> result = new ArrayList<>();
|
||||||
|
Set<String> ids = new HashSet<>();
|
||||||
|
for (int i = 0; i < methodList.size(); i++) {
|
||||||
|
PALMethodModel model = methodList.get(i);
|
||||||
|
if (SDK.getAppAPI().isInstalled(model.getApp()) && SDK.getAppAPI().isActive(model.getApp())) {
|
||||||
|
// 获取所有属性
|
||||||
|
List<PALMethodAttributeModel> attrList = PALRepositoryAPIManager.getInstance().getValidAttributeModels(wsId, model.getId(), true);
|
||||||
|
for (PALMethodAttributeModel attr : attrList ) {
|
||||||
|
String id = attr.getKey();
|
||||||
|
if (attr.getUse() && !ids.contains(id)) {
|
||||||
|
ids.add(id);
|
||||||
|
String name = attr.getNewTitle();
|
||||||
|
String label = name;
|
||||||
|
String prop = id;
|
||||||
|
String width = "150";
|
||||||
|
String minWidth = "150";
|
||||||
|
String columnType = "extendAttr";
|
||||||
|
boolean showOverflow = false;
|
||||||
|
JSONObject object1 = getJsonObject(prop, id, label, name, width, minWidth, showOverflow, columnType, "default");
|
||||||
|
result.add(object1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询流程清单表头信息
|
||||||
|
* @param wsId
|
||||||
|
* @param searchInput
|
||||||
|
* @param levelValue
|
||||||
|
* @param tableFilter 表格表头筛选条件
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public int getProcessListHeader(String wsId, String teamId, String searchInput, String levelValue, String tableFilter, String customFilter) {
|
||||||
|
String category = "process";
|
||||||
|
ResponseObject ro = ResponseObject.newOkResponse();
|
||||||
|
// 获取默认的表格列
|
||||||
|
LinkedHashMap<String, JSONObject> defaultTableColumnMap = getDefaultFixedTableColumn(category);
|
||||||
|
// 获取流程下分类已经设置的更多特性
|
||||||
|
List<JSONObject> list = getExtendAttrTableColumn(wsId, category);
|
||||||
|
// 获取配置信息
|
||||||
|
ProcessListConfigModel configModel = ProcessListConfigCache.getCache().get(wsId);
|
||||||
|
if (configModel == null || configModel.getCustomColumns() == null || configModel.getCustomColumns().isEmpty()) {// 从未配置,取默认
|
||||||
|
// 默认已选中的配置项
|
||||||
|
JSONArray customTableCheckedData = new JSONArray();
|
||||||
|
for (Map.Entry<String, JSONObject> entry : defaultTableColumnMap.entrySet()) {
|
||||||
|
customTableCheckedData.add(entry.getValue());
|
||||||
|
}
|
||||||
|
ro.put("customTableCheckedData", customTableCheckedData);// 已选中表项
|
||||||
|
ro.put("customTableUncheckedData", list);// 未选中表项
|
||||||
|
} else {
|
||||||
|
// 获取配置信息
|
||||||
|
JSONArray customColumns = configModel.getCustomColumns();
|
||||||
|
JSONArray customTableCheckedData = new JSONArray();// 已选中表项
|
||||||
|
Set<String> checkedSet = new HashSet<>();
|
||||||
|
LinkedHashMap<String ,JSONObject> extendAttrMap = new LinkedHashMap<>(16, 0.75f, true);
|
||||||
|
for (JSONObject obj : list) {
|
||||||
|
extendAttrMap.put(obj.getString("id"), obj);
|
||||||
|
}
|
||||||
|
// 判断已经设置的配置中在更多特性中是否还存在,存在则显示,不存在则不显示
|
||||||
|
for (int i = 0; i < customColumns.size(); i++) {
|
||||||
|
JSONObject obj = customColumns.getJSONObject(i);
|
||||||
|
String columnType = obj.getString("columnType");
|
||||||
|
String id = obj.getString("id");
|
||||||
|
if ("extendAttr".equals(columnType)) {
|
||||||
|
// 检查是否还有该扩展字段
|
||||||
|
if (extendAttrMap.containsKey(id)) {// 该属性还在已经配置好的更多特性中,则显示
|
||||||
|
customTableCheckedData.add(obj);
|
||||||
|
checkedSet.add(id);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (defaultTableColumnMap.containsKey(id)) {
|
||||||
|
customTableCheckedData.add(defaultTableColumnMap.get(id));
|
||||||
|
} else {
|
||||||
|
customTableCheckedData.add(obj);
|
||||||
|
}
|
||||||
|
checkedSet.add(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 未选中表项
|
||||||
|
JSONArray customTableUncheckedData = new JSONArray();
|
||||||
|
// 未选择的固定属性
|
||||||
|
for (Map.Entry<String, JSONObject> entry : defaultTableColumnMap.entrySet()) {
|
||||||
|
if (!checkedSet.contains(entry.getKey())) {
|
||||||
|
customTableUncheckedData.add(entry.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 未选择的扩展属性
|
||||||
|
for (JSONObject obj : list) {
|
||||||
|
String id = obj.getString("id");
|
||||||
|
if (!checkedSet.contains(id)) {
|
||||||
|
customTableUncheckedData.add(obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ro.put("customTableCheckedData", customTableCheckedData);// 已选中表项
|
||||||
|
ro.put("customTableUncheckedData", customTableUncheckedData);// 未选中表项
|
||||||
|
}
|
||||||
|
|
||||||
|
List<PALRepositoryModel> palList = getFilteredPalRepositoryList(wsId, teamId, category, searchInput, levelValue, tableFilter, customFilter);
|
||||||
|
return palList.size();
|
||||||
|
}
|
||||||
|
private LinkedHashMap<String, JSONObject> getDefaultFixedTableColumn(String category) {
|
||||||
|
String columnType = "default";
|
||||||
|
LinkedHashMap<String, JSONObject> map = new LinkedHashMap<>(16, 0.75f, true);
|
||||||
|
if ("process".equals(category)) {
|
||||||
|
// 编号(1-n排序)、序号(根据位置计算)、流程名称,类型,状态
|
||||||
|
map.put("no_serialNumber", getJsonObject("no_serialNumber", "no_serialNumber", "序号", "序号", "78", "78", false, columnType, "default"));
|
||||||
|
map.put("no_default", getJsonObject("no_default", "no_default", "编号", "编号", "100", "100", false, columnType, "default"));
|
||||||
|
map.put("name", getJsonObject("name", "name", "流程名称", "流程名称", "250", "250", false, columnType, "name"));
|
||||||
|
JSONObject typeObj = getJsonObject("type", "type", "类型", "类型", "150", "150", false, columnType, "selectType");
|
||||||
|
typeObj.put("filters", getProcessCategoryFilters(category));
|
||||||
|
map.put("type", typeObj);
|
||||||
|
JSONObject statusObj = getJsonObject("status", "status", "状态", "状态", "150", "150", false, columnType, "selectStatus");
|
||||||
|
statusObj.put("filters", getProcessStatusFilters());
|
||||||
|
map.put("status", statusObj);
|
||||||
|
// map.put("parent_name",getJsonObject("parent_name","parent_name","上级名称","上级名称","250","250",false,columnType,"name"));
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取流程相关状态
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private JSONArray getProcessStatusFilters() {
|
||||||
|
// 状态筛选项
|
||||||
|
JSONArray processStatusArr = new JSONArray();
|
||||||
|
JSONObject object3 = new JSONObject();
|
||||||
|
object3.put("text", "设计中");
|
||||||
|
object3.put("value", "designer");
|
||||||
|
JSONObject object1 = new JSONObject();
|
||||||
|
object1.put("text", "已发布");
|
||||||
|
object1.put("value", "publish");
|
||||||
|
JSONObject object2 = new JSONObject();
|
||||||
|
object2.put("text", "已停用");
|
||||||
|
object2.put("value", "stop");
|
||||||
|
processStatusArr.add(object1);
|
||||||
|
processStatusArr.add(object2);
|
||||||
|
processStatusArr.add(object3);
|
||||||
|
return processStatusArr;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取分类下的建模方法
|
||||||
|
* @param category
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private JSONArray getProcessCategoryFilters(String category) {
|
||||||
|
JSONArray categoryArr = new JSONArray();
|
||||||
|
Set<String> ids = new HashSet<>();
|
||||||
|
if ("process".equals(category)) {
|
||||||
|
ids.add("default");
|
||||||
|
JSONObject object = new JSONObject();
|
||||||
|
object.put("text", I18nRes.findValue(CoEConstant.APP_ID, "default"));
|
||||||
|
object.put("value", "default");
|
||||||
|
categoryArr.add(object);
|
||||||
|
}
|
||||||
|
List<PALMethodModel> methodList = PALMethodCache.getPALMethodModelListByMethod("process");
|
||||||
|
for (int i = 0; i < methodList.size(); i++) {
|
||||||
|
PALMethodModel model = methodList.get(i);
|
||||||
|
if (!ids.contains(model.getId()) && SDK.getAppAPI().isInstalled(model.getApp()) && SDK.getAppAPI().isActive(model.getApp())) {
|
||||||
|
JSONObject object = new JSONObject();
|
||||||
|
object.put("text", I18nRes.findValue(CoEConstant.APP_ID, model.getId()));
|
||||||
|
object.put("value", model.getId());
|
||||||
|
categoryArr.add(object);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return categoryArr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 组装对象
|
||||||
|
* @param prop
|
||||||
|
* @param id
|
||||||
|
* @param label
|
||||||
|
* @param name
|
||||||
|
* @param width
|
||||||
|
* @param minWidth
|
||||||
|
* @param showOverflow
|
||||||
|
* @param columnType
|
||||||
|
* @param dataType
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private JSONObject getJsonObject(String prop, String id, String label, String name, String width, String minWidth, boolean showOverflow, String columnType, String dataType) {
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("prop", prop);
|
||||||
|
result.put("id", id);
|
||||||
|
result.put("label", label);
|
||||||
|
result.put("name", name);
|
||||||
|
result.put("width", width);
|
||||||
|
result.put("minWidth", minWidth);
|
||||||
|
result.put("showOverflow", showOverflow);
|
||||||
|
result.put("columnType", columnType);
|
||||||
|
result.put("dataType", dataType);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取符合条件的pal流程集合
|
||||||
|
* @param wsId
|
||||||
|
* @param category
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private List<PALRepositoryModel> getFilteredPalRepositoryList(String wsId, String teamId, String category, String searchInput, String levelValue, String tableFilter, String customFilter) {
|
||||||
|
// type,status
|
||||||
|
JSONObject tableFilterObj = JSONObject.parseObject(tableFilter);
|
||||||
|
// 类型
|
||||||
|
List<String> typeList = new ArrayList<>();
|
||||||
|
if (tableFilterObj.containsKey("type")) {
|
||||||
|
typeList = JSONArray.parseArray(tableFilterObj.getString("type"), String.class);
|
||||||
|
}
|
||||||
|
// 状态
|
||||||
|
List<String> statusList = new ArrayList<>();
|
||||||
|
if (tableFilterObj.containsKey("status")) {
|
||||||
|
statusList = JSONArray.parseArray(tableFilterObj.getString("status"), String.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 自定义筛选
|
||||||
|
JSONObject customFilterObj = JSONObject.parseObject(customFilter);
|
||||||
|
JSONArray frameworkSearchInput1Arr = customFilterObj.getJSONArray("frameworkSearchInput1Arr");//流程架构L1
|
||||||
|
JSONArray frameworkSearchInput2Arr = customFilterObj.getJSONArray("frameworkSearchInput2Arr");//流程架构L2
|
||||||
|
JSONArray frameworkSearchInput3Arr = customFilterObj.getJSONArray("frameworkSearchInput3Arr");//流程架构L3
|
||||||
|
JSONArray issuingDepartmentArr = customFilterObj.getJSONArray("issuingDepartmentArr");// 发布部门
|
||||||
|
|
||||||
|
Set<String> l1Set = new HashSet<>();
|
||||||
|
Set<String> l2Set = new HashSet<>();
|
||||||
|
Set<String> l3Set = new HashSet<>();
|
||||||
|
Set<String> deptSet = new HashSet<>();
|
||||||
|
|
||||||
|
for (int i = 0; i < frameworkSearchInput1Arr.size(); i++) {
|
||||||
|
l1Set.add(handleCustomFilterName(frameworkSearchInput1Arr.getJSONObject(i).getString("name")));
|
||||||
|
}
|
||||||
|
for (int i = 0; i < frameworkSearchInput2Arr.size(); i++) {
|
||||||
|
l2Set.add(handleCustomFilterName(frameworkSearchInput2Arr.getJSONObject(i).getString("name")));
|
||||||
|
}
|
||||||
|
for (int i = 0; i < frameworkSearchInput3Arr.size(); i++) {
|
||||||
|
l3Set.add(handleCustomFilterName(frameworkSearchInput3Arr.getJSONObject(i).getString("name")));
|
||||||
|
}
|
||||||
|
for (int i = 0; i < issuingDepartmentArr.size(); i++) {
|
||||||
|
String deptId = issuingDepartmentArr.getJSONObject(i).getString("id");
|
||||||
|
deptSet.add(deptId);
|
||||||
|
// 添加所有子部门
|
||||||
|
List<DepartmentModel> list = new ArrayList<>();
|
||||||
|
getAllSubDepartments(deptId, list);
|
||||||
|
for (DepartmentModel model : list) {
|
||||||
|
deptSet.add(model.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
List<PALRepositoryModel> palList = new ArrayList<>();
|
||||||
|
Set<String> ids = new HashSet<>();
|
||||||
|
PALRepositoryCache.getAllChildrenModelsByPid(wsId, category, palList, ids);
|
||||||
|
// 获取所有正在设计中的
|
||||||
|
List<PALRepositoryModel> tmpPalList = new ArrayList<>();
|
||||||
|
Set<String> levelSet = new HashSet<>();
|
||||||
|
String [] selectValueArr = levelValue.split(",");
|
||||||
|
for (int i = 0; i < selectValueArr.length; i++) {
|
||||||
|
if (!UtilString.isEmpty(selectValueArr[i])) {
|
||||||
|
levelSet.add(selectValueArr[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 小组权限筛选
|
||||||
|
Set<String> permVerIds = new HashSet<>();
|
||||||
|
if (UtilString.isNotEmpty(teamId)) {
|
||||||
|
// 获取权限versionIds
|
||||||
|
permVerIds = CoeProcessLevelUtil.getPermRepositoryVersionIds(wsId, teamId, _uc.getUID(), null, null);
|
||||||
|
|
||||||
|
}
|
||||||
|
for (PALRepositoryModel model: palList) {
|
||||||
|
if (!model.isUse()) {// 非设计中状态,过滤
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!UtilString.isEmpty(searchInput)) {// 流程名称条件不为空时,过滤名称
|
||||||
|
if (!model.getName().toUpperCase().contains(searchInput.toUpperCase())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (levelSet.size() > 0) {// 流程层级不为空时,过滤层级
|
||||||
|
if (!levelSet.contains(model.getLevel() + "")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (typeList.size() > 0) {// 分类筛选
|
||||||
|
if (!typeList.contains(model.getMethodId())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (statusList.size() > 0) {// 状态筛选
|
||||||
|
if (model.isPublish() && !statusList.contains("publish")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (model.isStop() && !statusList.contains("stop")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!statusList.contains("designer") && !model.isStop() && !model.isPublish() && !model.isApproval()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (UtilString.isNotEmpty(teamId)) {// 小组权限判断
|
||||||
|
if (!permVerIds.contains(model.getVersionId())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 自定义筛选
|
||||||
|
if (l1Set.size() > 0) {
|
||||||
|
PALRepositoryPropertyModel l1PropModel = PALRepositoryPropertyCache.getPropertyByPropertyId(model.getId(), "Process_Architecture_L1");
|
||||||
|
if (l1PropModel == null || !l1Set.contains(l1PropModel.getPropertyValue())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (l2Set.size() > 0) {
|
||||||
|
PALRepositoryPropertyModel l2PropModel = PALRepositoryPropertyCache.getPropertyByPropertyId(model.getId(), "Process_Architecture_L2");
|
||||||
|
if (l2PropModel == null || !l2Set.contains(l2PropModel.getPropertyValue())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (l3Set.size() > 0) {
|
||||||
|
PALRepositoryPropertyModel l3PropModel = PALRepositoryPropertyCache.getPropertyByPropertyId(model.getId(), "Process_Architecture_L3");
|
||||||
|
if (l3PropModel == null || !l3Set.contains(l3PropModel.getPropertyValue())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (deptSet.size() > 0) {
|
||||||
|
List<DesignerShapeRelationModel> list = DesignerShapeRelationCache.getByFileId(model.getId(), "Issuing_department");
|
||||||
|
if (list == null || list.size() == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
boolean flag = false;
|
||||||
|
for (DesignerShapeRelationModel relation : list) {
|
||||||
|
if (UtilString.isEmpty(relation.getShapeId())) {// 文件属性
|
||||||
|
JSONObject obj = JSONObject.parseObject(relation.getRelationShapeText());
|
||||||
|
String id = obj.getString("id");
|
||||||
|
if (deptSet.contains(id)) {
|
||||||
|
flag = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!flag) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 追加
|
||||||
|
tmpPalList.add(model);
|
||||||
|
}
|
||||||
|
return tmpPalList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String handleCustomFilterName(String name) {
|
||||||
|
String str2 = "";
|
||||||
|
String str1=name.substring(0, name.lastIndexOf(".")+1);
|
||||||
|
if(UtilString.isNotEmpty(str1)){
|
||||||
|
String end=name.substring(name.lastIndexOf(".")+1);
|
||||||
|
int len=Integer.valueOf(SubUtil.getQuantity(end).length());
|
||||||
|
str2=name.substring(str1.length()+len, name.length());
|
||||||
|
}else{
|
||||||
|
str2=name;
|
||||||
|
}
|
||||||
|
return str2.trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取所有子部门
|
||||||
|
* @param deptId
|
||||||
|
* @param result
|
||||||
|
*/
|
||||||
|
private void getAllSubDepartments(String deptId, List<DepartmentModel> result) {
|
||||||
|
List<DepartmentModel> subModels = SDK.getORGAPI().getSubDepartments(deptId);
|
||||||
|
if (subModels != null && subModels.size() > 0) {
|
||||||
|
for (DepartmentModel model : subModels) {
|
||||||
|
result.add(model);
|
||||||
|
getAllSubDepartments(model.getId(), result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @methodName:
|
* @methodName:
|
||||||
* @param:
|
* @param:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user