发布流程判断

This commit is contained in:
zhal 2023-07-11 00:04:15 +08:00
parent 9942e92ace
commit 19df749406
7 changed files with 5635 additions and 3012 deletions

View File

@ -1,30 +1,14 @@
package com.actionsoft.apps.coe.pal.publisher.client.util;
import java.sql.Timestamp;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import com.actionsoft.apps.coe.pal.pal.manage.publish.dao.PublishHistory;
import com.actionsoft.apps.coe.pal.pal.manage.publish.model.PublishHistoryModel;
import com.actionsoft.apps.coe.pal.pal.output.dao.OutputTask;
import com.actionsoft.apps.coe.pal.pal.output.model.OutputTaskModel;
import com.actionsoft.apps.coe.pal.pal.repository.PALRepositoryQueryAPIManager;
import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryCache;
import com.actionsoft.apps.coe.pal.pal.repository.dao.PALRepositoryPropertyDao;
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.publisher.constant.PublisherConstant;
import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.bpmn.engine.model.run.delegate.ProcessInstance;
import com.actionsoft.bpms.commons.database.RowMap;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.bpms.util.UUIDGener;
import com.actionsoft.bpms.util.UtilDate;
import com.actionsoft.bpms.util.UtilString;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSONObject;
import com.sun.org.apache.xalan.internal.xsltc.compiler.sym;
import java.util.List;
/**
* @author baizp
@ -39,12 +23,12 @@ public class ProcesNumberUtil {
* @param regionCode
* @return
*/
public String getProcessNum(String levelCode, String regionCode,String plcategory) {
public String getProcessNum(String levelCode, String regionCode, String plcategory) {
int nowNum = 1;
//流程编号
if (plcategory.contains("process")) {
String querySql = "select ID,PROCESS_NUMBERS from BO_ACT_PROCESSNUMBER where LEVELNUM = '%s' and REGIONCODE='%s'";
int nowNum = 1;
//流程编号
if (plcategory.contains("process")) {
String querySql = "select ID,PROCESS_NUMBERS from BO_ACT_PROCESSNUMBER where LEVELNUM = '%s' and REGIONCODE='%s'";
RowMap result = DBSql.getMap(String.format(querySql, levelCode, regionCode));
//如果没有就新增
if (result == null) {
@ -58,13 +42,13 @@ public class ProcesNumberUtil {
DBSql.update(String.format(updateSql, nowNum + 1, result.getString("ID")));
if (nowNum < 10) {
return "00" + nowNum;
}else if(nowNum >=10&&nowNum < 100){
return "0" + nowNum;
} else if (nowNum >= 10 && nowNum < 100) {
return "0" + nowNum;
}
} else if (plcategory.contains("control")) {
//制度编号
String querySql = "select ID,SYSTEM_NUMBERS from BO_ACT_PROCESSNUMBER where LEVELNUM = '%s' and REGIONCODE='%s'";
} else if (plcategory.contains("control")) {
//制度编号
String querySql = "select ID,SYSTEM_NUMBERS from BO_ACT_PROCESSNUMBER where LEVELNUM = '%s' and REGIONCODE='%s'";
RowMap result = DBSql.getMap(String.format(querySql, levelCode, regionCode));
//如果没有就新增
if (result == null) {
@ -78,13 +62,13 @@ public class ProcesNumberUtil {
DBSql.update(String.format(updateSql, nowNum + 1, result.getString("ID")));
if (nowNum < 10) {
return "00" + nowNum;
}else if(nowNum >=10&&nowNum < 100){
return "0" + nowNum;
} else if (nowNum >= 10 && nowNum < 100) {
return "0" + nowNum;
}
} else if (plcategory.contains("form")) {
//表单编号
String querySql = "select ID,FORM_NUMBERS from BO_ACT_PROCESSNUMBER where LEVELNUM = '%s' and REGIONCODE='%s'";
} else if (plcategory.contains("form")) {
//表单编号
String querySql = "select ID,FORM_NUMBERS from BO_ACT_PROCESSNUMBER where LEVELNUM = '%s' and REGIONCODE='%s'";
RowMap result = DBSql.getMap(String.format(querySql, levelCode, regionCode));
//如果没有就新增
if (result == null) {
@ -98,314 +82,313 @@ public class ProcesNumberUtil {
DBSql.update(String.format(updateSql, nowNum + 1, result.getString("ID")));
if (nowNum < 10) {
return "00" + nowNum;
}else if(nowNum >=10&&nowNum < 100){
return "0" + nowNum;
} else if (nowNum >= 10 && nowNum < 100) {
return "0" + nowNum;
}
}
}
return nowNum + "";
}
/**
* 生成编号并写入数据库
*
* @param bindId
* @return
*/
public String getNumber(String bindId) {
/**
* 生成编号并写入数据库
*
* @param bindId
* @return
*/
public String getNumber(String bindId) {
// 查询出所有的发布流程
List<BO> dataList = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH_N").addQuery("BINDID=", bindId).orderByCreated().asc().list();
// 查询出所有的变更流程
List<BO> changList = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH_C").addQuery("BINDID=", bindId).orderByCreated().asc().list();
if (changList.size() != 0) {
for (BO changData : changList) {
String change_numner = changData.getString("CHANGE_NUMBER");
String changFileId = changData.getString("CHANGEFILEID");
String changAfterFileId = changData.getString("CHANGEDFILEIDNEW");
if(UtilString.isEmpty(change_numner)) {
RowMap rowMap = DBSql.getMap("SELECT * FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID='" + changAfterFileId + "'");
String Vsion1Id = DBSql.getString("SELECT ID FROM APP_ACT_COE_PAL_REPOSITORY WHERE PLRID='"
+ rowMap.getString("PLRID") + "' AND" + " PLVER = 1 ");
String publish_number = DBSql.getString(
"SELECT PUBLISH_NUMBER FROM BO_ACT_COE_PUBLISH_N WHERE PUBLISHFILEID ='" + Vsion1Id + "'");
// 查询出所有的发布流程
List<BO> dataList = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH_N").addQuery("BINDID=", bindId).orderByCreated().asc().list();
// 查询出所有的变更流程
List<BO> changList = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH_C").addQuery("BINDID=", bindId).orderByCreated().asc().list();
if (changList.size() != 0) {
for (BO changData : changList) {
String change_numner = changData.getString("CHANGE_NUMBER");
String changFileId = changData.getString("CHANGEFILEID");
String changAfterFileId = changData.getString("CHANGEDFILEIDNEW");
if (UtilString.isEmpty(change_numner)) {
RowMap rowMap = DBSql.getMap("SELECT * FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID='" + changAfterFileId + "'");
String Vsion1Id = DBSql.getString("SELECT ID FROM APP_ACT_COE_PAL_REPOSITORY WHERE PLRID='"
+ rowMap.getString("PLRID") + "' AND" + " PLVER = 1 ");
String publish_number = DBSql.getString(
"SELECT PUBLISH_NUMBER FROM BO_ACT_COE_PUBLISH_N WHERE PUBLISHFILEID ='" + Vsion1Id + "'");
System.out.println("获取编号为======================="+publish_number);
if (UtilString.isNotEmpty(publish_number)) {
// 设置模型ID
String plver = "2.0";
String plvers = rowMap.getString("PLVER");
if (!"".equals(plvers)) {
if (plvers.length() > 1) {
plver = plvers.substring(0, 1) + "."
+ plvers.substring(plvers.length() - 1, plvers.length());
} else {
plver = plvers.substring(0, 1) + ".0";
}
}
System.out.println("获取编号为=======================" + publish_number);
if (UtilString.isNotEmpty(publish_number)) {
// 设置模型ID
String plver = "2.0";
String plvers = rowMap.getString("PLVER");
if (!"".equals(plvers)) {
if (plvers.length() > 1) {
plver = plvers.substring(0, 1) + "."
+ plvers.substring(plvers.length() - 1, plvers.length());
} else {
plver = plvers.substring(0, 1) + ".0";
}
}
String new_number = publish_number.replaceAll("V1.0", "V"+plver);
String updateSql = "update BO_ACT_COE_PUBLISH_C set CHANGE_NUMBER = '%s' where CHANGEDFILEIDNEW = '%s'";
//更新子表文件编码属性
int update = DBSql.update(String.format(updateSql, new_number, changAfterFileId));
System.out.println("更新子表文件编号:" + update + "--->" + new_number);
String fileName = "file_number";
if (rowMap != null) {
String plcategory = rowMap.getString("PLMETHODID");
if (plcategory.contains("form")) {
fileName = "form_number";
}
String new_number = publish_number.replaceAll("V1.0", "V" + plver);
String updateSql = "update BO_ACT_COE_PUBLISH_C set CHANGE_NUMBER = '%s' where CHANGEDFILEIDNEW = '%s'";
//更新子表文件编码属性
int update = DBSql.update(String.format(updateSql, new_number, changAfterFileId));
System.out.println("更新子表文件编号:" + update + "--->" + new_number);
String fileName = "file_number";
if (rowMap != null) {
String plcategory = rowMap.getString("PLMETHODID");
if (plcategory.contains("form")) {
fileName = "form_number";
}
}
//更新模型文件编码属性
String updateAttrsql = "update APP_ACT_COE_PAL_PROP set PROPERTYVALUE='%s' where PROPERTYID='%s' AND PLID='%s'";
int update2 = DBSql.update(String.format(updateAttrsql, new_number, fileName, changAfterFileId));
System.out.println("更新模型文件编号:" + update2 + "--->" + new_number);
}else {
// 查询出主表数据
BO mainData = SDK.getBOAPI().getByProcess("BO_ACT_COE_PUBLISH", bindId);
}
//更新模型文件编码属性
String updateAttrsql = "update APP_ACT_COE_PAL_PROP set PROPERTYVALUE='%s' where PROPERTYID='%s' AND PLID='%s'";
int update2 = DBSql.update(String.format(updateAttrsql, new_number, fileName, changAfterFileId));
System.out.println("更新模型文件编号:" + update2 + "--->" + new_number);
} else {
// 查询出主表数据
BO mainData = SDK.getBOAPI().getByProcess("BO_ACT_COE_PUBLISH", bindId);
ProcessInstance processInstance=SDK.getProcessAPI().getInstanceById(bindId);
String levelnum=null;
String orgCode=null;
String regionCode=null;
String productCode=null;
if(processInstance.getProcessDefId().equals("obj_fb1c7a54b98b412187388c8bab407362")){
// 根据主表数据查询出权限的编码
String qxSql = "select * from BO_ACT_AUTH_INFO where ORGNAME='%s' and LEVEL_1_PROCESS_NAME='%s' and LEVEL_2_PROCESS_NAME='%s' and LEVEL_3_PROCESS_NAME='%s' "
+ " and ADAPT_REGION_NAME = '%s' and APPLICABLE_PRODUCT='%s'";
RowMap authData = DBSql.getMap(String.format(qxSql, mainData.getString("ADAPT_NAME_THE_COMPANY"),
mainData.getString("LEVEL_1_PROCESS_NAME"), mainData.getString("LEVEL_2_PROCESS_NAME"),
mainData.getString("LEVEL_3_PROCESS_NAME"),
mainData.getString("ADAPT_REGION_NAME"),
mainData.getString("APPLICABLE_PRODUCT")));
// 获取所有的流程编码 如果为空则为00
orgCode = authData.getString("ORGCODE");
String levelOne = authData.getString("LEVEL_1_PROCESS_ID");
String levelTwo = authData.getString("LEVEL_2_PROCESS_ID");
String levelThree = authData.getString("LEVEL_3_PROCESS_ID");
regionCode = authData.getString("ADAPT_REGION_CODE");
productCode = authData.getString("APPLICABLE_PRODUCT_CODE");
// 依次生成编号~并回填 修改
if (UtilString.isNotEmpty(levelTwo)) {
levelTwo = levelTwo.substring(levelTwo.indexOf(".") + 1, levelTwo.length());
} else {
levelTwo = "00";
}
if (UtilString.isNotEmpty(levelThree)) {
levelThree = levelThree.substring(levelThree.lastIndexOf(".") + 1, levelThree.length());
} else {
levelThree = "00";
}
ProcessInstance processInstance = SDK.getProcessAPI().getInstanceById(bindId);
String levelnum = null;
String orgCode = null;
String regionCode = null;
String productCode = null;
if (processInstance.getProcessDefId().equals("obj_fb1c7a54b98b412187388c8bab407362") || processInstance.getProcessDefId().equals("obj_5609e1d265dc4e7094c617f20be353dd") || processInstance.getProcessDefId().equals("obj_114e76f691c14beb902e9904f4be26f8")) {
// 根据主表数据查询出权限的编码
String qxSql = "select * from BO_ACT_AUTH_INFO where ORGNAME='%s' and LEVEL_1_PROCESS_NAME='%s' and LEVEL_2_PROCESS_NAME='%s' and LEVEL_3_PROCESS_NAME='%s' "
+ " and ADAPT_REGION_NAME = '%s' and APPLICABLE_PRODUCT='%s'";
RowMap authData = DBSql.getMap(String.format(qxSql, mainData.getString("ADAPT_NAME_THE_COMPANY"),
mainData.getString("LEVEL_1_PROCESS_NAME"), mainData.getString("LEVEL_2_PROCESS_NAME"),
mainData.getString("LEVEL_3_PROCESS_NAME"),
mainData.getString("ADAPT_REGION_NAME"),
mainData.getString("APPLICABLE_PRODUCT")));
// 获取所有的流程编码 如果为空则为00
orgCode = authData.getString("ORGCODE");
String levelOne = authData.getString("LEVEL_1_PROCESS_ID");
String levelTwo = authData.getString("LEVEL_2_PROCESS_ID");
String levelThree = authData.getString("LEVEL_3_PROCESS_ID");
regionCode = authData.getString("ADAPT_REGION_CODE");
productCode = authData.getString("APPLICABLE_PRODUCT_CODE");
// 依次生成编号~并回填 修改
if (UtilString.isNotEmpty(levelTwo)) {
levelTwo = levelTwo.substring(levelTwo.indexOf(".") + 1, levelTwo.length());
} else {
levelTwo = "00";
}
if (UtilString.isNotEmpty(levelThree)) {
levelThree = levelThree.substring(levelThree.lastIndexOf(".") + 1, levelThree.length());
} else {
levelThree = "00";
}
levelnum = levelOne + "." + levelTwo + "." + levelThree;
}else{
// 根据主表数据查询出权限的编码
String qxSql = "select * from BO_ACT_AUTH_INFO where ORGNAME='%s' and LEVEL_1_PROCESS_NAME='%s' and LEVEL_2_PROCESS_NAME='%s' and LEVEL_3_PROCESS_NAME='%s' and LEVEL_4_PROCESS_NAME='%s' "
+ " and ADAPT_REGION_NAME = '%s' and APPLICABLE_PRODUCT='%s'";
RowMap authData = DBSql.getMap(String.format(qxSql, mainData.getString("ADAPT_NAME_THE_COMPANY"),
mainData.getString("LEVEL_1_PROCESS_NAME"), mainData.getString("LEVEL_2_PROCESS_NAME"),
mainData.getString("LEVEL_3_PROCESS_NAME"),
mainData.getString("LEVEL_4_PROCESS_NAME"),
mainData.getString("ADAPT_REGION_NAME"),
mainData.getString("APPLICABLE_PRODUCT")));
// 获取所有的流程编码 如果为空则为00
orgCode = authData.getString("ORGCODE");
String levelOne = authData.getString("LEVEL_1_PROCESS_ID");
String levelTwo = authData.getString("LEVEL_2_PROCESS_ID");
String levelThree = authData.getString("LEVEL_3_PROCESS_ID");
String levelFour = authData.getString("LEVEL_4_PROCESS_ID");
regionCode = authData.getString("ADAPT_REGION_CODE");
productCode = authData.getString("APPLICABLE_PRODUCT_CODE");
// 依次生成编号~并回填 修改
if (UtilString.isNotEmpty(levelTwo)) {
levelTwo = levelTwo.substring(levelTwo.indexOf(".") + 1, levelTwo.length());
} else {
levelTwo = "00";
}
if (UtilString.isNotEmpty(levelThree)) {
levelThree = levelThree.substring(levelThree.lastIndexOf(".") + 1, levelThree.length());
} else {
levelThree = "00";
}
if (UtilString.isNotEmpty(levelFour)) {
levelFour = levelFour.substring(levelFour.lastIndexOf(".") + 1, levelFour.length());
} else {
levelFour = "00";
}
levelnum = levelOne + "." + levelTwo + "." + levelThree;
} else {
// 根据主表数据查询出权限的编码
String qxSql = "select * from BO_ACT_AUTH_INFO where ORGNAME='%s' and LEVEL_1_PROCESS_NAME='%s' and LEVEL_2_PROCESS_NAME='%s' and LEVEL_3_PROCESS_NAME='%s' and LEVEL_4_PROCESS_NAME='%s' "
+ " and ADAPT_REGION_NAME = '%s' and APPLICABLE_PRODUCT='%s'";
RowMap authData = DBSql.getMap(String.format(qxSql, mainData.getString("ADAPT_NAME_THE_COMPANY"),
mainData.getString("LEVEL_1_PROCESS_NAME"), mainData.getString("LEVEL_2_PROCESS_NAME"),
mainData.getString("LEVEL_3_PROCESS_NAME"),
mainData.getString("LEVEL_4_PROCESS_NAME"),
mainData.getString("ADAPT_REGION_NAME"),
mainData.getString("APPLICABLE_PRODUCT")));
// 获取所有的流程编码 如果为空则为00
orgCode = authData.getString("ORGCODE");
String levelOne = authData.getString("LEVEL_1_PROCESS_ID");
String levelTwo = authData.getString("LEVEL_2_PROCESS_ID");
String levelThree = authData.getString("LEVEL_3_PROCESS_ID");
String levelFour = authData.getString("LEVEL_4_PROCESS_ID");
regionCode = authData.getString("ADAPT_REGION_CODE");
productCode = authData.getString("APPLICABLE_PRODUCT_CODE");
// 依次生成编号~并回填 修改
if (UtilString.isNotEmpty(levelTwo)) {
levelTwo = levelTwo.substring(levelTwo.indexOf(".") + 1, levelTwo.length());
} else {
levelTwo = "00";
}
if (UtilString.isNotEmpty(levelThree)) {
levelThree = levelThree.substring(levelThree.lastIndexOf(".") + 1, levelThree.length());
} else {
levelThree = "00";
}
if (UtilString.isNotEmpty(levelFour)) {
levelFour = levelFour.substring(levelFour.lastIndexOf(".") + 1, levelFour.length());
} else {
levelFour = "00";
}
levelnum = levelOne + "." + levelTwo + "." + levelThree +"."+levelFour;
}
levelnum = levelOne + "." + levelTwo + "." + levelThree + "." + levelFour;
}
String updateSql = "update BO_ACT_COE_PUBLISH_C set CHANGE_NUMBER = '%s' where ID = '%s'";
rowMap = DBSql.getMap("SELECT PLVER,PLMETHODID FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID='"
+ changAfterFileId + "' AND" + " ISUSE = 1 ");
String name = "";
String fileName = "file_number";
String plver = "2.0";
if (rowMap != null) {
String plcategory = rowMap.getString("PLMETHODID");
String plvers = rowMap.getString("PLVER");
String number = getProcessNum(levelnum, orgCode,plcategory);
if (plcategory.contains("process")) {
String updateSql = "update BO_ACT_COE_PUBLISH_C set CHANGE_NUMBER = '%s' where ID = '%s'";
rowMap = DBSql.getMap("SELECT PLVER,PLMETHODID FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID='"
+ changAfterFileId + "' AND" + " ISUSE = 1 ");
String name = "";
String fileName = "file_number";
String plver = "2.0";
if (rowMap != null) {
String plcategory = rowMap.getString("PLMETHODID");
String plvers = rowMap.getString("PLVER");
String number = getProcessNum(levelnum, orgCode, plcategory);
if (plcategory.contains("process")) {
name = "/P" + number;
} else if (plcategory.contains("control")) {
name = "/R" + number;
} else if (plcategory.contains("form")) {
fileName = "form_number";
name = "/T" + number;
}
if (!"".equals(plvers)) {
if (plvers.length() > 1) {
plver = plvers.substring(0, 1) + "."
+ plvers.substring(plvers.length() - 1, plvers.length());
} else {
plver = plvers.substring(0, 1) + ".0";
}
}
}
name = "/P" + number;
} else if (plcategory.contains("control")) {
name = "/R" + number;
} else if (plcategory.contains("form")) {
fileName = "form_number";
name = "/T" + number;
}
if (!"".equals(plvers)) {
if (plvers.length() > 1) {
plver = plvers.substring(0, 1) + "."
+ plvers.substring(plvers.length() - 1, plvers.length());
} else {
plver = plvers.substring(0, 1) + ".0";
}
}
}
String processNum = levelnum + name + "V" + plver +"-"+ orgCode + regionCode + productCode;
String s = changData.getId();
int update = DBSql.update(String.format(updateSql, processNum, s.toLowerCase()));
System.out.println("更新表单文件编号回填:" + update + "--->" + processNum+" 文件id"+s);
String updateAttrsql = "update APP_ACT_COE_PAL_PROP set PROPERTYVALUE='%s' where PROPERTYID='%s' AND PLID='%s'";
int update2 = DBSql.update(String.format(updateAttrsql, processNum, fileName, changAfterFileId));
System.out.println("更新模型文件编号回填:" + update2 + "--->" + processNum +" 文件id"+changAfterFileId);
}
String processNum = levelnum + name + "V" + plver + "-" + orgCode + regionCode + productCode;
String s = changData.getId();
int update = DBSql.update(String.format(updateSql, processNum, s.toLowerCase()));
System.out.println("更新表单文件编号回填:" + update + "--->" + processNum + " 文件id" + s);
String updateAttrsql = "update APP_ACT_COE_PAL_PROP set PROPERTYVALUE='%s' where PROPERTYID='%s' AND PLID='%s'";
int update2 = DBSql.update(String.format(updateAttrsql, processNum, fileName, changAfterFileId));
System.out.println("更新模型文件编号回填:" + update2 + "--->" + processNum + " 文件id" + changAfterFileId);
}
}
}
}
}
}
}
if (dataList.size() != 0) {
// 查询出主表数据
BO mainData = SDK.getBOAPI().getByProcess("BO_ACT_COE_PUBLISH", bindId);
if (dataList.size() != 0) {
// 查询出主表数据
BO mainData = SDK.getBOAPI().getByProcess("BO_ACT_COE_PUBLISH", bindId);
ProcessInstance processInstance=SDK.getProcessAPI().getInstanceById(bindId);
String levelnum=null;
String orgCode=null;
String regionCode=null;
String productCode=null;
if(processInstance.getProcessDefId().equals("obj_fb1c7a54b98b412187388c8bab407362")){
// 根据主表数据查询出权限的编码
String qxSql = "select * from BO_ACT_AUTH_INFO where ORGNAME='%s' and LEVEL_1_PROCESS_NAME='%s' and LEVEL_2_PROCESS_NAME='%s' and LEVEL_3_PROCESS_NAME='%s' "
+ " and ADAPT_REGION_NAME = '%s' and APPLICABLE_PRODUCT='%s'";
RowMap authData = DBSql.getMap(String.format(qxSql, mainData.getString("ADAPT_NAME_THE_COMPANY"),
mainData.getString("LEVEL_1_PROCESS_NAME"), mainData.getString("LEVEL_2_PROCESS_NAME"),
mainData.getString("LEVEL_3_PROCESS_NAME"),
mainData.getString("ADAPT_REGION_NAME"),
mainData.getString("APPLICABLE_PRODUCT")));
// 获取所有的流程编码 如果为空则为00
orgCode = authData.getString("ORGCODE");
String levelOne = authData.getString("LEVEL_1_PROCESS_ID");
String levelTwo = authData.getString("LEVEL_2_PROCESS_ID");
String levelThree = authData.getString("LEVEL_3_PROCESS_ID");
regionCode = authData.getString("ADAPT_REGION_CODE");
productCode = authData.getString("APPLICABLE_PRODUCT_CODE");
ProcessInstance processInstance = SDK.getProcessAPI().getInstanceById(bindId);
String levelnum = null;
String orgCode = null;
String regionCode = null;
String productCode = null;
if (processInstance.getProcessDefId().equals("obj_fb1c7a54b98b412187388c8bab407362") || processInstance.getProcessDefId().equals("obj_5609e1d265dc4e7094c617f20be353dd") || processInstance.getProcessDefId().equals("obj_114e76f691c14beb902e9904f4be26f8")) {
// 根据主表数据查询出权限的编码
String qxSql = "select * from BO_ACT_AUTH_INFO where ORGNAME='%s' and LEVEL_1_PROCESS_NAME='%s' and LEVEL_2_PROCESS_NAME='%s' and LEVEL_3_PROCESS_NAME='%s' "
+ " and ADAPT_REGION_NAME = '%s' and APPLICABLE_PRODUCT='%s'";
RowMap authData = DBSql.getMap(String.format(qxSql, mainData.getString("ADAPT_NAME_THE_COMPANY"),
mainData.getString("LEVEL_1_PROCESS_NAME"), mainData.getString("LEVEL_2_PROCESS_NAME"),
mainData.getString("LEVEL_3_PROCESS_NAME"),
mainData.getString("ADAPT_REGION_NAME"),
mainData.getString("APPLICABLE_PRODUCT")));
// 获取所有的流程编码 如果为空则为00
orgCode = authData.getString("ORGCODE");
String levelOne = authData.getString("LEVEL_1_PROCESS_ID");
String levelTwo = authData.getString("LEVEL_2_PROCESS_ID");
String levelThree = authData.getString("LEVEL_3_PROCESS_ID");
regionCode = authData.getString("ADAPT_REGION_CODE");
productCode = authData.getString("APPLICABLE_PRODUCT_CODE");
// 依次生成编号~并回填 修改
if (UtilString.isNotEmpty(levelTwo)) {
levelTwo = levelTwo.substring(levelTwo.indexOf(".") + 1, levelTwo.length());
} else {
levelTwo = "00";
}
if (UtilString.isNotEmpty(levelThree)) {
levelThree = levelThree.substring(levelThree.lastIndexOf(".") + 1, levelThree.length());
} else {
levelThree = "00";
}
levelnum = levelOne + "." + levelTwo + "." + levelThree ;
}else{
// 根据主表数据查询出权限的编码
String qxSql = "select * from BO_ACT_AUTH_INFO where ORGNAME='%s' and LEVEL_1_PROCESS_NAME='%s' and LEVEL_2_PROCESS_NAME='%s' and LEVEL_3_PROCESS_NAME='%s' and LEVEL_4_PROCESS_NAME='%s' "
+ " and ADAPT_REGION_NAME = '%s' and APPLICABLE_PRODUCT='%s'";
RowMap authData = DBSql.getMap(String.format(qxSql, mainData.getString("ADAPT_NAME_THE_COMPANY"),
mainData.getString("LEVEL_1_PROCESS_NAME"), mainData.getString("LEVEL_2_PROCESS_NAME"),
mainData.getString("LEVEL_3_PROCESS_NAME"),
mainData.getString("LEVEL_4_PROCESS_NAME"),
mainData.getString("ADAPT_REGION_NAME"),
mainData.getString("APPLICABLE_PRODUCT")));
// 获取所有的流程编码 如果为空则为00
orgCode = authData.getString("ORGCODE");
String levelOne = authData.getString("LEVEL_1_PROCESS_ID");
String levelTwo = authData.getString("LEVEL_2_PROCESS_ID");
String levelThree = authData.getString("LEVEL_3_PROCESS_ID");
String levelFour = authData.getString("LEVEL_4_PROCESS_ID");
regionCode = authData.getString("ADAPT_REGION_CODE");
productCode = authData.getString("APPLICABLE_PRODUCT_CODE");
// 依次生成编号~并回填 修改
if (UtilString.isNotEmpty(levelTwo)) {
levelTwo = levelTwo.substring(levelTwo.indexOf(".") + 1, levelTwo.length());
} else {
levelTwo = "00";
}
if (UtilString.isNotEmpty(levelThree)) {
levelThree = levelThree.substring(levelThree.lastIndexOf(".") + 1, levelThree.length());
} else {
levelThree = "00";
}
levelnum = levelOne + "." + levelTwo + "." + levelThree;
} else {
// 根据主表数据查询出权限的编码
String qxSql = "select * from BO_ACT_AUTH_INFO where ORGNAME='%s' and LEVEL_1_PROCESS_NAME='%s' and LEVEL_2_PROCESS_NAME='%s' and LEVEL_3_PROCESS_NAME='%s' and LEVEL_4_PROCESS_NAME='%s' "
+ " and ADAPT_REGION_NAME = '%s' and APPLICABLE_PRODUCT='%s'";
RowMap authData = DBSql.getMap(String.format(qxSql, mainData.getString("ADAPT_NAME_THE_COMPANY"),
mainData.getString("LEVEL_1_PROCESS_NAME"), mainData.getString("LEVEL_2_PROCESS_NAME"),
mainData.getString("LEVEL_3_PROCESS_NAME"),
mainData.getString("LEVEL_4_PROCESS_NAME"),
mainData.getString("ADAPT_REGION_NAME"),
mainData.getString("APPLICABLE_PRODUCT")));
// 获取所有的流程编码 如果为空则为00
orgCode = authData.getString("ORGCODE");
String levelOne = authData.getString("LEVEL_1_PROCESS_ID");
String levelTwo = authData.getString("LEVEL_2_PROCESS_ID");
String levelThree = authData.getString("LEVEL_3_PROCESS_ID");
String levelFour = authData.getString("LEVEL_4_PROCESS_ID");
regionCode = authData.getString("ADAPT_REGION_CODE");
productCode = authData.getString("APPLICABLE_PRODUCT_CODE");
// 依次生成编号~并回填 修改
if (UtilString.isNotEmpty(levelTwo)) {
levelTwo = levelTwo.substring(levelTwo.indexOf(".") + 1, levelTwo.length());
} else {
levelTwo = "00";
}
if (UtilString.isNotEmpty(levelThree)) {
levelThree = levelThree.substring(levelThree.lastIndexOf(".") + 1, levelThree.length());
} else {
levelThree = "00";
}
// 依次生成编号~并回填 修改
if (UtilString.isNotEmpty(levelTwo)) {
levelTwo = levelTwo.substring(levelTwo.indexOf(".") + 1, levelTwo.length());
} else {
levelTwo = "00";
}
if (UtilString.isNotEmpty(levelThree)) {
levelThree = levelThree.substring(levelThree.lastIndexOf(".") + 1, levelThree.length());
} else {
levelThree = "00";
}
if (UtilString.isNotEmpty(levelFour)) {
levelFour = levelFour.substring(levelFour.lastIndexOf(".") + 1, levelFour.length());
} else {
levelFour = "00";
}
if (UtilString.isNotEmpty(levelFour)) {
levelFour = levelFour.substring(levelFour.lastIndexOf(".") + 1, levelFour.length());
} else {
levelFour = "00";
}
levelnum = levelOne + "." + levelTwo + "." + levelThree +"."+levelFour;
}
levelnum = levelOne + "." + levelTwo + "." + levelThree + "." + levelFour;
}
String updateSql = "update BO_ACT_COE_PUBLISH_N set PUBLISH_NUMBER='%s' where ID = '%s'";
for (BO nowData : dataList) {
String publish_numner = nowData.getString("PUBLISH_NUMBER");
if(UtilString.isEmpty(publish_numner)) {
String publishfileid = nowData.getString("PUBLISHFILEID");
RowMap rowMap = DBSql.getMap("SELECT PLVER,PLMETHODID FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID='"
+ publishfileid + "' AND" + " ISUSE = 1 ");
String name = "00R00";
String fileName = "file_number";
String plver = "1.0";
if (rowMap != null) {
String plcategory = rowMap.getString("PLMETHODID");
String plvers = rowMap.getString("PLVER");
String number = getProcessNum(levelnum, orgCode,plcategory);
String updateSql = "update BO_ACT_COE_PUBLISH_N set PUBLISH_NUMBER='%s' where ID = '%s'";
for (BO nowData : dataList) {
String publish_numner = nowData.getString("PUBLISH_NUMBER");
if (UtilString.isEmpty(publish_numner)) {
String publishfileid = nowData.getString("PUBLISHFILEID");
RowMap rowMap = DBSql.getMap("SELECT PLVER,PLMETHODID FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID='"
+ publishfileid + "' AND" + " ISUSE = 1 ");
String name = "00R00";
String fileName = "file_number";
String plver = "1.0";
if (rowMap != null) {
String plcategory = rowMap.getString("PLMETHODID");
String plvers = rowMap.getString("PLVER");
String number = getProcessNum(levelnum, orgCode, plcategory);
if (plcategory.contains("process")) {
name = "/P" + number;
} else if (plcategory.contains("control")) {
name = "/R" + number;
} else if (plcategory.contains("form")) {
fileName = "form_number";
name = "/T" + number;
}
if (!"".equals(plvers)) {
if (plvers.length() > 1) {
plver = plvers.substring(0, 1) + "."
+ plvers.substring(plvers.length() - 1, plvers.length());
} else {
plver = plvers.substring(0, 1) + ".0";
}
}
}
if (plcategory.contains("process")) {
name = "/P" + number;
} else if (plcategory.contains("control")) {
name = "/R" + number;
} else if (plcategory.contains("form")) {
fileName = "form_number";
name = "/T" + number;
}
if (!"".equals(plvers)) {
if (plvers.length() > 1) {
plver = plvers.substring(0, 1) + "."
+ plvers.substring(plvers.length() - 1, plvers.length());
} else {
plver = plvers.substring(0, 1) + ".0";
}
}
}
String processNum = levelnum + name + "V" + plver +"-"+orgCode + regionCode + productCode;
String s = nowData.getId();
int update = DBSql.update(String.format(updateSql, processNum, s.toLowerCase()));
System.out.println("表单文件编号回填:" + update + "--->" + processNum);
String publishFileId = nowData.getString("PUBLISHFILEID");
String updateAttrsql = "update APP_ACT_COE_PAL_PROP set PROPERTYVALUE='%s' where PROPERTYID='%s' AND PLID='%s'";
int update2 = DBSql.update(String.format(updateAttrsql, processNum, fileName, publishFileId));
System.out.println("模型文件编号回填:" + update2 + "--->" + processNum);
// 更新流程绩效的编号----规则没看懂
}
}
}
return "OK";
}
String processNum = levelnum + name + "V" + plver + "-" + orgCode + regionCode + productCode;
String s = nowData.getId();
int update = DBSql.update(String.format(updateSql, processNum, s.toLowerCase()));
System.out.println("表单文件编号回填:" + update + "--->" + processNum);
String publishFileId = nowData.getString("PUBLISHFILEID");
String updateAttrsql = "update APP_ACT_COE_PAL_PROP set PROPERTYVALUE='%s' where PROPERTYID='%s' AND PLID='%s'";
int update2 = DBSql.update(String.format(updateAttrsql, processNum, fileName, publishFileId));
System.out.println("模型文件编号回填:" + update2 + "--->" + processNum);
// 更新流程绩效的编号----规则没看懂
}
}
}
return "OK";
}
}

View File

@ -1,31 +1,5 @@
package com.actionsoft.apps.coe.pal.publisher.client.web;
import java.io.File;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import com.actionsoft.apps.coe.pal.pal.repository.designer.manage.CoeDesignerAPIManager;
import com.actionsoft.apps.coe.pal.pal.repository.designer.model.BaseModel;
import com.actionsoft.exception.AWSDataAccessException;
import com.actionsoft.sdk.local.api.BOQueryAPI;
import org.apache.commons.lang.StringUtils;
import com.actionsoft.apps.coe.pal.constant.CoEConstant;
import com.actionsoft.apps.coe.pal.cooperation.CoeCooperationAPIManager;
import com.actionsoft.apps.coe.pal.cooperation.cache.CooperationCache;
@ -47,6 +21,8 @@ import com.actionsoft.apps.coe.pal.pal.repository.PALRepositoryQueryAPIManager;
import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryCache;
import com.actionsoft.apps.coe.pal.pal.repository.dao.PALRepository;
import com.actionsoft.apps.coe.pal.pal.repository.dao.PALRepositoryPropertyDao;
import com.actionsoft.apps.coe.pal.pal.repository.designer.manage.CoeDesignerAPIManager;
import com.actionsoft.apps.coe.pal.pal.repository.designer.model.BaseModel;
import com.actionsoft.apps.coe.pal.pal.repository.designer.util.CoeDesignerUtil;
import com.actionsoft.apps.coe.pal.pal.repository.model.CoeProcessLevelAutoBean;
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel;
@ -86,16 +62,14 @@ import com.actionsoft.bpms.server.fs.DCContext;
import com.actionsoft.bpms.server.fs.dc.DCProfileManager;
import com.actionsoft.bpms.server.fs.dc.DCUtil;
import com.actionsoft.bpms.util.Base64;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.bpms.util.UUIDGener;
import com.actionsoft.bpms.util.UtilDate;
import com.actionsoft.bpms.util.UtilFile;
import com.actionsoft.bpms.util.UtilString;
import com.actionsoft.bpms.util.*;
import com.actionsoft.exception.AWSDataAccessException;
import com.actionsoft.exception.AWSException;
import com.actionsoft.exception.AWSQuotaException;
import com.actionsoft.i18n.I18nRes;
import com.actionsoft.sdk.local.SDK;
import com.actionsoft.sdk.local.api.AppAPI;
import com.actionsoft.sdk.local.api.BOQueryAPI;
import com.actionsoft.sdk.local.api.ProcessExecuteQuery;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
@ -104,6 +78,15 @@ import com.google.common.base.Joiner;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import org.apache.commons.lang.StringUtils;
import java.io.File;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
/**
* 流程发布App
@ -1914,7 +1897,7 @@ public class ProcessPublishWeb extends ActionWeb {
if (stopBo != null) {
String stopId=stopBo.getString("STOPFILEID");
String stopId = stopBo.getString("STOPFILEID");
/******************** 附件 **********************/
// 文件或节点自身附件
JSONArray js = new JSONArray();
@ -3409,9 +3392,9 @@ public class ProcessPublishWeb extends ActionWeb {
PALRepositoryModel stopmodel = PALRepositoryCache.getCache().get(stopBo.getString("STOPFILEID"));
String stopId=stopBo.getString("STOPFILEID");
String stopId = stopBo.getString("STOPFILEID");
String methodId=stopmodel.getMethodId();
String methodId = stopmodel.getMethodId();
/******************** 附件 ************************/
// 文件或节点自身附件
@ -3524,7 +3507,6 @@ public class ProcessPublishWeb extends ActionWeb {
obj.put("upfileId", js);
}
}
}
@ -4339,7 +4321,7 @@ public class ProcessPublishWeb extends ActionWeb {
* @param datas
* @return
*/
public String getLevelByData(UserContext me, String wsId, String type, String datas,String processInstId) {
public String getLevelByData(UserContext me, String wsId, String type, String datas, String processInstId) {
ResponseObject ro = ResponseObject.newOkResponse();
JSONArray palarr = JSON.parseArray(datas);
JSONObject result = new JSONObject();
@ -4366,9 +4348,9 @@ public class ProcessPublishWeb extends ActionWeb {
String methodId = paljb.getString("methodId");
PALRepositoryModel model = PALRepositoryCache.getCache().get(id);
ProcessInstance processInstance=SDK.getProcessAPI().getInstanceById(processInstId);
if(processInstance.getProcessDefId().equals("obj_fb1c7a54b98b412187388c8bab407362")){
//ID获取L1 L2 L3 的值
ProcessInstance processInstance = SDK.getProcessAPI().getInstanceById(processInstId);
if (processInstance.getProcessDefId().equals("obj_fb1c7a54b98b412187388c8bab407362") || processInstance.getProcessDefId().equals("obj_5609e1d265dc4e7094c617f20be353dd") || processInstance.getProcessDefId().equals("obj_114e76f691c14beb902e9904f4be26f8")) {
//ID获取L1 L2 L3 的值
List<RowMap> resulttmp = DBSql.getMaps(String.format("select PROPERTYID,PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PROPERTYID in ('Process_Architecture_L1','Process_Architecture_L2','Process_Architecture_L3') AND PLID='%s'", id));
for (RowMap tmp : resulttmp) {
String key = tmp.getString("PROPERTYID");
@ -4389,7 +4371,7 @@ public class ProcessPublishWeb extends ActionWeb {
}
result.put(key, value);
}
}else{
} else {
//ID获取L1 L2 L3 L4 的值
List<RowMap> resulttmp = DBSql.getMaps(String.format("select PROPERTYID,PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PROPERTYID in ('Process_Architecture_L1','Process_Architecture_L2','Process_Architecture_L3','Process_Architecture_L4') AND PLID='%s'", id));
for (RowMap tmp : resulttmp) {
@ -4435,22 +4417,22 @@ public class ProcessPublishWeb extends ActionWeb {
* @param product
* @return
*/
public String getApproveInfos(UserContext me, String level1, String level2, String level3,String level4, String company, String region, String product, String bindid) {
public String getApproveInfos(UserContext me, String level1, String level2, String level3, String level4, String company, String region, String product, String bindid) {
ProcessInstance processInstance=SDK.getProcessAPI().getInstanceById(bindid);
if(processInstance.getProcessDefId().equals("obj_fb1c7a54b98b412187388c8bab407362")){
ProcessInstance processInstance = SDK.getProcessAPI().getInstanceById(bindid);
if (processInstance.getProcessDefId().equals("obj_fb1c7a54b98b412187388c8bab407362") || processInstance.getProcessDefId().equals("obj_5609e1d265dc4e7094c617f20be353dd") || processInstance.getProcessDefId().equals("obj_114e76f691c14beb902e9904f4be26f8")) {
//l1 l2 l3 l4 保存到表里
DBSql.update(String.format("update BO_ACT_COE_PUBLISH set LEVEL_1_PROCESS_NAME='%s',LEVEL_2_PROCESS_NAME='%s',LEVEL_3_PROCESS_NAME='%s' where BINDID='%s'", level1, level2, level3, bindid));
String sql = "select AUDITOR1,AUDITOR_NO_1,L1_SP,AUDITOR2,AUDITOR_NO_2,L2_SP,AUDITOR3,AUDITOR_NO_3,L3_SP from BO_ACT_AUTH_INFO where LEVEL_1_PROCESS_NAME='%s' and LEVEL_2_PROCESS_NAME='%s' and LEVEL_3_PROCESS_NAME='%s' and ORGNAME='%s' and ADAPT_REGION_NAME='%s' and APPLICABLE_PRODUCT='%s'";
RowMap result = DBSql.getMap(String.format(sql, level1, level2, level3,company, region, product));
RowMap result = DBSql.getMap(String.format(sql, level1, level2, level3, company, region, product));
ResponseObject ro = ResponseObject.newOkResponse();
ro.put("data", result == null ? "" : result);
return ro.toString();
}else{
} else {
//l1 l2 l3 l4 保存到表里
DBSql.update(String.format("update BO_ACT_COE_PUBLISH set LEVEL_1_PROCESS_NAME='%s',LEVEL_2_PROCESS_NAME='%s',LEVEL_3_PROCESS_NAME='%s',LEVEL_4_PROCESS_NAME='%s' where BINDID='%s'", level1, level2, level3,level4, bindid));
String sql = "select AUDITOR1,AUDITOR_NO_1,L1_SP,AUDITOR2,AUDITOR_NO_2,L2_SP,AUDITOR3,AUDITOR_NO_3,L3_SP from BO_ACT_AUTH_INFO where LEVEL_1_PROCESS_NAME='%s' and LEVEL_2_PROCESS_NAME='%s' and LEVEL_3_PROCESS_NAME='%s' and LEVEL_4_PROCESS_NAME='%s' and ORGNAME='%s' and ADAPT_REGION_NAME='%s' and APPLICABLE_PRODUCT='%s'";
RowMap result = DBSql.getMap(String.format(sql, level1, level2, level3, level4,company, region, product));
DBSql.update(String.format("update BO_ACT_COE_PUBLISH set LEVEL_1_PROCESS_NAME='%s',LEVEL_2_PROCESS_NAME='%s',LEVEL_3_PROCESS_NAME='%s',LEVEL_4_PROCESS_NAME='%s' where BINDID='%s'", level1, level2, level3, level4, bindid));
String sql = "select AUDITOR1,AUDITOR_NO_1,L1_SP,AUDITOR2,AUDITOR_NO_2,L2_SP,AUDITOR3,AUDITOR_NO_3,L3_SP,AUDITOR4,AUDITOR_NO_4,L4_SP from BO_ACT_AUTH_INFO where LEVEL_1_PROCESS_NAME='%s' and LEVEL_2_PROCESS_NAME='%s' and LEVEL_3_PROCESS_NAME='%s' and LEVEL_4_PROCESS_NAME='%s' and ORGNAME='%s' and ADAPT_REGION_NAME='%s' and APPLICABLE_PRODUCT='%s'";
RowMap result = DBSql.getMap(String.format(sql, level1, level2, level3, level4, company, region, product));
ResponseObject ro = ResponseObject.newOkResponse();
ro.put("data", result == null ? "" : result);
return ro.toString();
@ -4570,8 +4552,8 @@ public class ProcessPublishWeb extends ActionWeb {
*/
public String getProcessManifest(String publishFileId, String fileName) {
BaseModel defineModel = CoeDesignerAPIManager.getInstance().getDefinition(publishFileId, 0);
if(defineModel==null){
return ResponseObject.newErrResponse("当前模型名称:【"+fileName+"】当前不存在活动节点<br/>请配置活动节点后再进行查看活动清单操作!").toString();
if (defineModel == null) {
return ResponseObject.newErrResponse("当前模型名称:【" + fileName + "】当前不存在活动节点<br/>请配置活动节点后再进行查看活动清单操作!").toString();
}
String definition = defineModel.getDefinition();
JSONObject definitionJo = JSONObject.parseObject(definition);
@ -4605,7 +4587,7 @@ public class ProcessPublishWeb extends ActionWeb {
* @param shape 形状
* @param fileName 文件名称
*/
private void setShapeAttr(ArrayList<BO> bos, String publishFileId, JSONObject shape, String fileName , List<RowMap> processLevel) {
private void setShapeAttr(ArrayList<BO> bos, String publishFileId, JSONObject shape, String fileName, List<RowMap> processLevel) {
//只需要活动节点
if (shape.containsKey("category") && !shape.getString("title").equals("开始/结束")) {
BO bo = new BO();
@ -4666,7 +4648,7 @@ public class ProcessPublishWeb extends ActionWeb {
if (publishNBO.size() > 0) {
for (BO onePublishN : publishNBO) {
if(onePublishN.getString("TASKID").equals("submit_create")){
if (onePublishN.getString("TASKID").equals("submit_create")) {
return ResponseObject.newWarnResponse("请先创建手册!!").toString();
}
String plId = onePublishN.getString("PUBLISHFILEID");
@ -4694,7 +4676,7 @@ public class ProcessPublishWeb extends ActionWeb {
}
}
} else if(type.equals("2")) {
} else if (type.equals("2")) {
//发布变更文件
List<BO> publishCBO = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH_C").bindId(processInstId).list();
@ -4702,7 +4684,7 @@ public class ProcessPublishWeb extends ActionWeb {
for (BO onePublishC : publishCBO) {
if(onePublishC.getString("TASKID")=="submit_create"){
if (onePublishC.getString("TASKID") == "submit_create") {
return ResponseObject.newWarnResponse("请先创建手册!!").toString();
}
@ -4731,7 +4713,7 @@ public class ProcessPublishWeb extends ActionWeb {
}
}
}else if(type.equals("3")) {
} else if (type.equals("3")) {
//发布变更文件
List<BO> publishSBO = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH_S").bindId(processInstId).list();
@ -4769,7 +4751,7 @@ public class ProcessPublishWeb extends ActionWeb {
}
}
} catch (AWSDataAccessException e) {
ro.put("result","创建手册失败!!!");
ro.put("result", "创建手册失败!!!");
e.printStackTrace();
}
return ro.toString();
@ -4789,8 +4771,8 @@ public class ProcessPublishWeb extends ActionWeb {
}
ResponseObject ro = ResponseObject.newOkResponse();
try {
ProcessInstance processInstance=SDK.getProcessAPI().getInstanceById(processInstId);
if(processInstance.getProcessDefId().equals("obj_fb1c7a54b98b412187388c8bab407362")){
ProcessInstance processInstance = SDK.getProcessAPI().getInstanceById(processInstId);
if (processInstance.getProcessDefId().equals("obj_fb1c7a54b98b412187388c8bab407362") || processInstance.getProcessDefId().equals("obj_5609e1d265dc4e7094c617f20be353dd") || processInstance.getProcessDefId().equals("obj_114e76f691c14beb902e9904f4be26f8")) {
//ID获取L1 L2 L3 的值
List<RowMap> resulttmp = DBSql.getMaps(String.format("select PROPERTYID,PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PROPERTYID in ('Process_Architecture_L1','Process_Architecture_L2','Process_Architecture_L3') AND PLID='%s'", uuid));
for (RowMap tmp : resulttmp) {
@ -4800,7 +4782,7 @@ public class ProcessPublishWeb extends ActionWeb {
}
ro.put("data", result);
ro.put("info", iswrong);
}else{
} else {
//ID获取L1 L2 L3 L4 的值
List<RowMap> resulttmp = DBSql.getMaps(String.format("select PROPERTYID,PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PROPERTYID in ('Process_Architecture_L1','Process_Architecture_L2','Process_Architecture_L3','Process_Architecture_L4') AND PLID='%s'", uuid));
for (RowMap tmp : resulttmp) {
@ -4821,6 +4803,7 @@ public class ProcessPublishWeb extends ActionWeb {
/**
* 中断任务操作
*
* @param uuid
* @param processInstId
* @return
@ -4831,10 +4814,10 @@ public class ProcessPublishWeb extends ActionWeb {
return ResponseObject.newErrResponse("流程实例未找到").toString();
}
int count = DBSql.update("UPDATE BO_ACT_EXECUTIVE_TASK SET TASKSTATUS='2' WHERE TASKID ='" + taskId + "'");
if(count>0){
ro.put("result","ok");
}else{
ro.put("result","error");
if (count > 0) {
ro.put("result", "ok");
} else {
ro.put("result", "error");
}
return ro.toString();
}

View File

@ -22,7 +22,6 @@ import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
import com.actionsoft.bpms.bpmn.engine.listener.InterruptListener;
import com.actionsoft.bpms.bpmn.engine.listener.InterruptListenerInterface;
import com.actionsoft.bpms.bpmn.engine.listener.ListenerConst;
import com.actionsoft.bpms.commons.database.RowMap;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.util.DBSql;
@ -51,7 +50,6 @@ public class PublishFormBeforeSaveEvent extends InterruptListener implements Int
/**
*
* @param param
* @return
* @throws Exception
@ -60,36 +58,34 @@ public class PublishFormBeforeSaveEvent extends InterruptListener implements Int
public boolean execute(ProcessExecutionContext param) throws Exception {
List<BO> gridNData=SDK.getBOAPI().query(PublisherConstant.BOSUBTABLE_N).bindId(param.getProcessInstance().getId()).list();
String bindid=param.getProcessInstance().getId();
StringBuffer sb=new StringBuffer();
StringBuffer sb1=new StringBuffer();
List<BO> gridNData = SDK.getBOAPI().query(PublisherConstant.BOSUBTABLE_N).bindId(param.getProcessInstance().getId()).list();
String bindid = param.getProcessInstance().getId();
StringBuffer sb = new StringBuffer();
StringBuffer sb1 = new StringBuffer();
if (gridNData.size() > 0) {
for (BO rowData : gridNData) {
//下面一行示例代码可以获取Ajax子表的每行记录的新建状态
String publishfileid = String.valueOf(rowData.getString("PUBLISHFILEID"));//注意isCreate并不是BO的一个字段该字段是有接口上层赋值的
verifyPublish(publishfileid,rowData,bindid,sb,sb1,"1");
verifyPublish(publishfileid, rowData, bindid, sb, sb1, "1");
}
}
//发布变更
List<BO> gridCData=SDK.getBOAPI().query(PublisherConstant.BOSUBTABLE_C).bindId(param.getProcessInstance().getId()).list();
List<BO> gridCData = SDK.getBOAPI().query(PublisherConstant.BOSUBTABLE_C).bindId(param.getProcessInstance().getId()).list();
if (gridCData.size() > 0) {
for (BO rowData : gridCData) {
//下面一行示例代码可以获取Ajax子表的每行记录的新建状态
String publishfileid = String.valueOf(rowData.getString("CHANGEDFILEIDNEW"));//注意isCreate并不是BO的一个字段该字段是有接口上层赋值的
verifyPublish(publishfileid,rowData,bindid,sb,sb1,"2");
}
verifyPublish(publishfileid, rowData, bindid, sb, sb1, "2");
}
}
return true;
}
public void verifyPublish(String publishfileid,BO rowData,String bindid,StringBuffer sb,StringBuffer sb1,String type){
public void verifyPublish(String publishfileid, BO rowData, String bindid, StringBuffer sb, StringBuffer sb1, String type) {
defineQualityCheck(publishfileid);
// 校验
PALRepositoryModel model = PALRepositoryCache.getCache().get(publishfileid);
@ -102,135 +98,132 @@ public class PublishFormBeforeSaveEvent extends InterruptListener implements Int
for (PALRepositoryPropertyModel propertyModel : oldPropertyList) {
//获取文件属性中支持文件
if(propertyModel.getPropertyId().equals("support_files")){
if (propertyModel.getPropertyId().equals("support_files")) {
//获取关联模型id
String relationFileId= null;
String relationFileId = null;
try {
String propertyValue = propertyModel.getPropertyValue();
System.err.println("propertyValue========>"+propertyValue);
if(UtilString.isNotEmpty(propertyValue)&&propertyValue.contains("{")) {
relationFileId = JSONObject.parseObject(propertyModel.getPropertyValue()).getString("relationFileId");
}
String propertyValue = propertyModel.getPropertyValue();
System.err.println("propertyValue========>" + propertyValue);
if (UtilString.isNotEmpty(propertyValue) && propertyValue.contains("{")) {
relationFileId = JSONObject.parseObject(propertyModel.getPropertyValue()).getString("relationFileId");
}
} catch (Exception e) {
// e.printStackTrace();
// e.printStackTrace();
throw new BPMNError("0313", sb.append("模型名称:").append(model.getName()).append("关联支持文件异常,请联系管理员!!!").append("</br>").toString());
}
//获取关联表单模型id
List<Map<String, Object>> fileElements ;
if(UtilString.isNotEmpty(relationFileId)){
List<Map<String, Object>> fileElements;
if (UtilString.isNotEmpty(relationFileId)) {
int len=relationFileId.split(",").length;
int len = relationFileId.split(",").length;
String[] splitRelationFileId=relationFileId.split(",");
String[] splitRelationFileId = relationFileId.split(",");
//如果当前使用中并且已发布给与通过
if(splitRelationFileId.length>0){
//如果当前使用中并且已发布给与通过
if (splitRelationFileId.length > 0) {
for(int i=0;i<splitRelationFileId.length;i++) {
for (int i = 0; i < splitRelationFileId.length; i++) {
PALRepositoryModel onemodel = PALRepositoryCache.getCache().get(splitRelationFileId[i]);
PALRepositoryModel onemodel = PALRepositoryCache.getCache().get(splitRelationFileId[i]);
if(onemodel!=null) {
boolean isUse = onemodel.isUse();
boolean publish = onemodel.isPublish();
//如果状态是未发布
if (isUse == true && publish == false) {
fileElements = CoeDesignerUtil.getShapeMessageJson4(onemodel.getId());
RowMap publishNrowMap = DBSql.getMap("SELECT T1.* FROM BO_ACT_COE_PUBLISH_N T1 LEFT JOIN APP_ACT_COE_PAL_REPOSITORY T2 on T1.PUBLISHFILEID=T2.ID WHERE T1.BINDID=? AND T1.PUBLISHFILEID=? AND T2.ISPUBLISH=0", bindid, splitRelationFileId[i]);
if (onemodel != null) {
boolean isUse = onemodel.isUse();
boolean publish = onemodel.isPublish();
//如果状态是未发布
if (isUse == true && publish == false) {
fileElements = CoeDesignerUtil.getShapeMessageJson4(onemodel.getId());
RowMap publishNrowMap = DBSql.getMap("SELECT T1.* FROM BO_ACT_COE_PUBLISH_N T1 LEFT JOIN APP_ACT_COE_PAL_REPOSITORY T2 on T1.PUBLISHFILEID=T2.ID WHERE T1.BINDID=? AND T1.PUBLISHFILEID=? AND T2.ISPUBLISH=0", bindid, splitRelationFileId[i]);
RowMap publishCrowMap = DBSql.getMap("SELECT T1.* FROM BO_ACT_COE_PUBLISH_C T1 LEFT JOIN APP_ACT_COE_PAL_REPOSITORY T2 on T1.CHANGEDFILEIDNEW=T2.ID WHERE T1.BINDID=? AND T1.CHANGEDFILEIDNEW=? AND T2.ISPUBLISH=0", bindid, splitRelationFileId[i]);
RowMap publishCrowMap = DBSql.getMap("SELECT T1.* FROM BO_ACT_COE_PUBLISH_C T1 LEFT JOIN APP_ACT_COE_PAL_REPOSITORY T2 on T1.CHANGEDFILEIDNEW=T2.ID WHERE T1.BINDID=? AND T1.CHANGEDFILEIDNEW=? AND T2.ISPUBLISH=0", bindid, splitRelationFileId[i]);
if (publishNrowMap == null && publishCrowMap == null) {
sb.append("模型名称:").append(model.getName()).append("关联文件模型名称:").append(onemodel.getName()).append("需进行选择发布!").append("</br>");
}
//如果当前不是使用中查找使用中版本
}else if(isUse==false && publish==true){
List<PALRepositoryModel> versions = PALRepositoryCache.getByVersionId(model.getVersionId());
if(versions.size()>0) {
for(int k=0;k<versions.size();k++) {
boolean isUseV=versions.get(k).isUse();
boolean isPublishV=versions.get(k).isPublish();
if(isUseV==true && isPublishV==false) {
fileElements = CoeDesignerUtil.getShapeMessageJson4(onemodel.getId());
RowMap publishCrowMap = DBSql.getMap("SELECT T1.* FROM BO_ACT_COE_PUBLISH_C T1 LEFT JOIN APP_ACT_COE_PAL_REPOSITORY T2 on T1.CHANGEDFILEIDNEW=T2.ID WHERE T1.BINDID=? AND T1.CHANGEDFILEIDNEW=? AND T2.ISPUBLISH=0", bindid, splitRelationFileId[0]);
RowMap publishNrowMap = DBSql.getMap("SELECT T1.* FROM BO_ACT_COE_PUBLISH_N T1 LEFT JOIN APP_ACT_COE_PAL_REPOSITORY T2 on T1.PUBLISHFILEID=T2.ID WHERE T1.BINDID=? AND T1.PUBLISHFILEID=? AND T2.ISPUBLISH=0", bindid, splitRelationFileId[0]);
if (publishNrowMap == null && publishCrowMap == null) {
sb.append("模型名称:").append(model.getName()).append("关联文件模型名称:").append(onemodel.getName()).append("需进行选择发布!").append("</br>");
}
}
}
}
}else if(isUse==false && publish==false) {
List<PALRepositoryModel> versions = PALRepositoryCache.getByVersionId(model.getVersionId());
if(versions.size()>0) {
for(int k=0;k<versions.size();k++) {
boolean isUseV=versions.get(k).isUse();
boolean isPublishV=versions.get(k).isPublish();
if(isUseV==true && isPublishV==false) {
fileElements = CoeDesignerUtil.getShapeMessageJson4(onemodel.getId());
RowMap publishCrowMap = DBSql.getMap("SELECT T1.* FROM BO_ACT_COE_PUBLISH_C T1 LEFT JOIN APP_ACT_COE_PAL_REPOSITORY T2 on T1.CHANGEDFILEIDNEW=T2.ID WHERE T1.BINDID=? AND T1.CHANGEDFILEIDNEW=? AND T2.ISPUBLISH=0", bindid, splitRelationFileId[0]);
RowMap publishNrowMap = DBSql.getMap("SELECT T1.* FROM BO_ACT_COE_PUBLISH_N T1 LEFT JOIN APP_ACT_COE_PAL_REPOSITORY T2 on T1.PUBLISHFILEID=T2.ID WHERE T1.BINDID=? AND T1.PUBLISHFILEID=? AND T2.ISPUBLISH=0", bindid, splitRelationFileId[0]);
if (publishNrowMap == null && publishCrowMap == null) {
sb.append("模型名称:").append(model.getName()).append("关联文件模型名称:").append(onemodel.getName()).append("需进行选择发布!").append("</br>");
}
}
}
}
if (publishNrowMap == null && publishCrowMap == null) {
sb.append("模型名称:").append(model.getName()).append("关联文件模型名称:").append(onemodel.getName()).append("需进行选择发布!").append("</br>");
}
if(onemodel.getMethodId().equals("data.form")){
fileElements = CoeDesignerUtil.getShapeMessageJson4(splitRelationFileId[i]);
//如果当前不是使用中查找使用中版本
} else if (isUse == false && publish == true) {
for (Map<String, Object> shape : fileElements) {
String tempShapeId = shape.get("id").toString();
List<PALRepositoryModel> versions = PALRepositoryCache.getByVersionId(model.getVersionId());
if (versions.size() > 0) {
for (int k = 0; k < versions.size(); k++) {
UpFileDao dao = new UpFileDao();
// 文件根据relationFileId 文件类型 查询
List<UpfileModel> list2;
boolean isUseV = versions.get(k).isUse();
boolean isPublishV = versions.get(k).isPublish();
list2= dao.search(splitRelationFileId[i], tempShapeId, "s");
if (isUseV == true && isPublishV == false) {
if(list2.size()==0){
String name="";
if (type == "1") {
name=rowData.getString("PUBLISHFILENAME");
} else {
name=rowData.getString("CHANGEFILENAME");
fileElements = CoeDesignerUtil.getShapeMessageJson4(onemodel.getId());
RowMap publishCrowMap = DBSql.getMap("SELECT T1.* FROM BO_ACT_COE_PUBLISH_C T1 LEFT JOIN APP_ACT_COE_PAL_REPOSITORY T2 on T1.CHANGEDFILEIDNEW=T2.ID WHERE T1.BINDID=? AND T1.CHANGEDFILEIDNEW=? AND T2.ISPUBLISH=0", bindid, splitRelationFileId[0]);
RowMap publishNrowMap = DBSql.getMap("SELECT T1.* FROM BO_ACT_COE_PUBLISH_N T1 LEFT JOIN APP_ACT_COE_PAL_REPOSITORY T2 on T1.PUBLISHFILEID=T2.ID WHERE T1.BINDID=? AND T1.PUBLISHFILEID=? AND T2.ISPUBLISH=0", bindid, splitRelationFileId[0]);
if (publishNrowMap == null && publishCrowMap == null) {
sb.append("模型名称:").append(model.getName()).append("关联文件模型名称:").append(onemodel.getName()).append("需进行选择发布!").append("</br>");
}
sb.append(name).append("关联模型名称:").append("</br>").append("").append(shape.get("plName")).append("").append("节点名称:").append(""+shape.get("name")+"").append("未上传附件,请检查!!!").append("</br>").append(",");
}
}
}
} else if (isUse == false && publish == false) {
List<PALRepositoryModel> versions = PALRepositoryCache.getByVersionId(model.getVersionId());
if (versions.size() > 0) {
for (int k = 0; k < versions.size(); k++) {
boolean isUseV = versions.get(k).isUse();
boolean isPublishV = versions.get(k).isPublish();
if (isUseV == true && isPublishV == false) {
fileElements = CoeDesignerUtil.getShapeMessageJson4(onemodel.getId());
RowMap publishCrowMap = DBSql.getMap("SELECT T1.* FROM BO_ACT_COE_PUBLISH_C T1 LEFT JOIN APP_ACT_COE_PAL_REPOSITORY T2 on T1.CHANGEDFILEIDNEW=T2.ID WHERE T1.BINDID=? AND T1.CHANGEDFILEIDNEW=? AND T2.ISPUBLISH=0", bindid, splitRelationFileId[0]);
RowMap publishNrowMap = DBSql.getMap("SELECT T1.* FROM BO_ACT_COE_PUBLISH_N T1 LEFT JOIN APP_ACT_COE_PAL_REPOSITORY T2 on T1.PUBLISHFILEID=T2.ID WHERE T1.BINDID=? AND T1.PUBLISHFILEID=? AND T2.ISPUBLISH=0", bindid, splitRelationFileId[0]);
if (publishNrowMap == null && publishCrowMap == null) {
sb.append("模型名称:").append(model.getName()).append("关联文件模型名称:").append(onemodel.getName()).append("需进行选择发布!").append("</br>");
}
}
}
}
}
if (onemodel.getMethodId().equals("data.form")) {
fileElements = CoeDesignerUtil.getShapeMessageJson4(splitRelationFileId[i]);
for (Map<String, Object> shape : fileElements) {
String tempShapeId = shape.get("id").toString();
UpFileDao dao = new UpFileDao();
// 文件根据relationFileId 文件类型 查询
List<UpfileModel> list2;
list2 = dao.search(splitRelationFileId[i], tempShapeId, "s");
if (list2.size() == 0) {
String name = "";
if (type == "1") {
name = rowData.getString("PUBLISHFILENAME");
} else {
name = rowData.getString("CHANGEFILENAME");
}
sb.append(name).append("关联模型名称:").append("</br>").append("").append(shape.get("plName")).append("").append("节点名称:").append("" + shape.get("name") + "").append("未上传附件,请检查!!!").append("</br>").append(",");
}
}
}
}
}
}
}
}
@ -244,18 +237,18 @@ public class PublishFormBeforeSaveEvent extends InterruptListener implements Int
}
/**
* 判断文件属性数据属性校验
*
* @param uuid
* @return
*/
public void defineQualityCheck(String uuid){
public void defineQualityCheck(String uuid) {
PALRepositoryModel model = PALRepositoryCache.getCache().get(uuid);
String vison = getVison(uuid);
String vison = getVison(uuid);
List<JSONObject> elements_fei = getShapeJsonToJsonObject2(vison);
StringBuffer sb6= new StringBuffer();
StringBuffer sb6 = new StringBuffer();
StringBuilder sbs = new StringBuilder();
List<String> list_linker = new LinkedList<>();
//连线数据增加
@ -267,7 +260,7 @@ public class PublishFormBeforeSaveEvent extends InterruptListener implements Int
String title = o.getString("title");
if (!shapeName.equals("linker")) {
list_linker.add(shapeId);
json.put(shapeId,title);
json.put(shapeId, title);
}
}
@ -283,23 +276,23 @@ public class PublishFormBeforeSaveEvent extends InterruptListener implements Int
String to_id = to.getString("id");
if (UtilString.isNotEmpty(from_id)) {
list_linker.remove(from_id);
}else {
} else {
JSONObject definition = JSONObject.parseObject(vison);
JSONObject elements = definition.getJSONObject("elements");
JSONObject string = elements.getJSONObject(to_id);
String title = string.getString("title");
sb6.append("\""+title+"\"").append("连线没有入线");
list_linker.add("\""+title+"\""+"连线没有入线");
sb6.append("\"" + title + "\"").append("连线没有入线");
list_linker.add("\"" + title + "\"" + "连线没有入线");
}
if (UtilString.isNotEmpty(to_id)) {
list_linker.remove(to_id);
}else {
} else {
JSONObject definition = JSONObject.parseObject(vison);
JSONObject elements = definition.getJSONObject("elements");
JSONObject string = elements.getJSONObject(from_id);
String title = string.getString("title");
sb6.append("\""+title+"\"").append("连线没有出线");
list_linker.add("\""+title+"\""+"连线没有出线");
sb6.append("\"" + title + "\"").append("连线没有出线");
list_linker.add("\"" + title + "\"" + "连线没有出线");
}
}
//System.out.println("m的值>>>>>>>>>>>" + ms);
@ -316,9 +309,9 @@ public class PublishFormBeforeSaveEvent extends InterruptListener implements Int
sb6.append("校验未通过,请检查模型是否都已连线!");
sbs.append(sb6);
}
if (sbs.length()>0){
/*if (sbs.length()>0){
throw new BPMNError("0313", sbs.toString());
}
}*/
/************************************文件属性校验************************************/
ResponseObject ro = ResponseObject.newOkResponse();
@ -338,13 +331,14 @@ public class PublishFormBeforeSaveEvent extends InterruptListener implements Int
List<PALRepositoryPropertyModel> propertys = dao.getPropertysByPlid(uuid, null);
Boolean flag1=true;
Boolean flag2=true;
Boolean flag1 = true;
Boolean flag2 = true;
StringBuffer sb = new StringBuffer();
StringBuffer sb1=new StringBuffer();
StringBuffer sb2=new StringBuffer();
StringBuffer sb3=new StringBuffer();
StringBuffer sb4 = new StringBuffer();;
StringBuffer sb1 = new StringBuffer();
StringBuffer sb2 = new StringBuffer();
StringBuffer sb3 = new StringBuffer();
StringBuffer sb4 = new StringBuffer();
;
sb.append("<span style='font-weight:bold'>质量校验<span><br/>");
@ -370,16 +364,16 @@ public class PublishFormBeforeSaveEvent extends InterruptListener implements Int
flag1 = UtilString.isNotEmpty(property.getPropertyValue());
}
if (!flag1) {// 校验不通过
sb1.append("''"+attributeModel.getTitle()+"''").append(",");
sb1.append("''" + attributeModel.getTitle() + "''").append(",");
flag1 = false;
}
}
if(sb1.length()>0){
sb.append("<span style='font-weight:bold'>模型名称:【"+model.getName()+"】<span><br/>");
if (sb1.length() > 0) {
sb.append("<span style='font-weight:bold'>模型名称:【" + model.getName() + "】<span><br/>");
sb.append("<span>文件属性:<span><br/>");
sb.append(sb1.substring(0, sb1.length()-1));
sb.append(sb1.substring(0, sb1.length() - 1));
sb.append("未填写,请检查!").append("</br>");
}
@ -430,27 +424,26 @@ public class PublishFormBeforeSaveEvent extends InterruptListener implements Int
flag2 = UtilString.isNotEmpty(value);
}
if (!flag2) {
sb2.append("<span>节点名称:<span>"+""+text+"").append("''"+attrModel.getNewTitle()+"''").append("</br>");
sb2.append("<span>节点名称:<span>" + "" + text + "").append("''" + attrModel.getNewTitle() + "''").append("</br>");
}
}
}
}
if(sb2.length()>0){
if (sb2.length() > 0) {
sb.append("<span>数据属性:<span><br/>");
sb.append(sb2.substring(0, sb2.length()-1));
sb.append(sb2.substring(0, sb2.length() - 1));
sb.append("未填写,请检查!");
}
int index=sb.indexOf("未填写");
if(index!=-1){
ro.put("result","error");
int index = sb.indexOf("未填写");
if (index != -1) {
ro.put("result", "error");
sb1 = sb.deleteCharAt(sb.length() - 1);
throw new BPMNError("0313", sb1.toString());
}
}
public static List<JSONObject> getShapeJsonToJsonObject2(String messageJson) {
@ -462,7 +455,7 @@ public class PublishFormBeforeSaveEvent extends InterruptListener implements Int
String key = ite.next();
JSONObject shape = elements.getJSONObject(key);
String name = shape.getString("name");
if ("linker".equals(name)){
if ("linker".equals(name)) {
JSONObject jsonObj = new JSONObject();
jsonObj.put("id", key);
jsonObj.put("name", shape.getString("name"));
@ -529,10 +522,11 @@ public class PublishFormBeforeSaveEvent extends InterruptListener implements Int
/**
* 根据uuid寻找对应的json文件即图形文件
*
* @param uuid 文件id
* @return json文件
*/
public String getVison(String uuid) {
public String getVison(String uuid) {
List<Map<String, Object>> fileElements = CoeDesignerUtil.getShapeMessageJson4(uuid);
JSONObject definition = new JSONObject(new LinkedHashMap<>());
if (fileElements.size() > 0) {
@ -541,7 +535,7 @@ public class PublishFormBeforeSaveEvent extends InterruptListener implements Int
BaseModel defineModel = CoeDesignerAPIManager.getInstance().getDefinition(uuid, 0);
String define = defineModel.getDefinition();
definition = JSONObject.parseObject(define);
definition = JSONObject.parseObject(define);
}
}

View File

@ -1,8 +1,5 @@
package com.actionsoft.apps.coe.pal.publisher.event;
import java.util.ArrayList;
import java.util.List;
import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryCache;
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel;
import com.actionsoft.apps.coe.pal.publisher.constant.PublisherConstant;
@ -18,11 +15,13 @@ import com.actionsoft.bpms.util.UUIDGener;
import com.actionsoft.sdk.local.SDK;
import com.actionsoft.sdk.local.api.BOQueryAPI;
import org.apache.commons.lang.StringUtils;
import org.docx4j.wml.P;
import java.util.ArrayList;
import java.util.List;
public class SubFormAfterSave extends ExecuteListener {
public String getDescription() {
public String getDescription() {
return "子表单保存后,拆分成多条数据保存到数据库中";
}
@ -35,7 +34,7 @@ public class SubFormAfterSave extends ExecuteListener {
}
public void execute(ProcessExecutionContext param) throws Exception {
String processInstId = param.getProcessInstance().getId();
String processInstId = param.getProcessInstance().getId();
//记录ID
String boId = param.getParameterOfString(ListenerConst.FORM_EVENT_PARAM_BOID);
//表单ID
@ -47,7 +46,7 @@ public class SubFormAfterSave extends ExecuteListener {
String bindId = formData.getBindId();
String uid = formData.getCreateUser();
if (boName.equals("BO_ACT_COE_PUBLISH_N")) {
// 保存前的表单数据注意该参数针对不同场景获取内容会有所不同
// 保存前的表单数据注意该参数针对不同场景获取内容会有所不同
// 主表场景获取主表数据子表场景获取子表数据获取不同的数据请使用BOQueryAPI获取
String publishFileId = formData.getString("PUBLISHFILEID");
String publishDesc = formData.getString("PUBLISHDESC");
@ -57,73 +56,73 @@ public class SubFormAfterSave extends ExecuteListener {
List<BO> list = boQueryAPI.list();
StringBuilder boFileIds = new StringBuilder();
for (BO bo : list) {
if (!bo.getId().equals(formData.getId())) {
boFileIds.append(bo.get("PUBLISHFILEID"));
}
if (!bo.getId().equals(formData.getId())) {
boFileIds.append(bo.get("PUBLISHFILEID"));
}
}
String existedBoFileIds = boFileIds.toString();
if (publishFileId != null && publishFileId.length() > 0) {
String[] publishFileIds = publishFileId.split(",");
List<BO> boList = new ArrayList<BO>();
for (String fileId : publishFileIds) {
if (!existedBoFileIds.contains(fileId)) {
PALRepositoryModel repositoryModel = PALRepositoryCache.getCache().get(fileId);
if (repositoryModel != null) {
BO newBO = new BO();
newBO.setId(UUIDGener.getUUID());
newBO.set("PUBLISTHTYPE", "N");
newBO.set("PUBLISHFILEID", fileId);
newBO.set("PUBLISHFILENAME", repositoryModel.getName());
newBO.set("PUBLISHDESC", publishDesc);
boList.add(newBO);
}
}
}
SDK.getBOAPI().create(boName, boList, bindId, uid);
// 该记录是否新建的状态由于机制调整BO对象中的ID是不为空的不能通过ID判断记录是否处于新建状态还是修改状态
String[] publishFileIds = publishFileId.split(",");
List<BO> boList = new ArrayList<BO>();
for (String fileId : publishFileIds) {
if (!existedBoFileIds.contains(fileId)) {
PALRepositoryModel repositoryModel = PALRepositoryCache.getCache().get(fileId);
if (repositoryModel != null) {
BO newBO = new BO();
newBO.setId(UUIDGener.getUUID());
newBO.set("PUBLISTHTYPE", "N");
newBO.set("PUBLISHFILEID", fileId);
newBO.set("PUBLISHFILENAME", repositoryModel.getName());
newBO.set("PUBLISHDESC", publishDesc);
boList.add(newBO);
}
}
}
SDK.getBOAPI().create(boName, boList, bindId, uid);
// 该记录是否新建的状态由于机制调整BO对象中的ID是不为空的不能通过ID判断记录是否处于新建状态还是修改状态
boolean isCreate = param.getParameterOfBoolean(ListenerConst.FORM_EVENT_PARAM_ISCREATE);
if (isCreate) {
SDK.getBOAPI().remove(boName, boId);
SDK.getBOAPI().remove(boName, boId);
}
}
} else if (boName.equals("BO_ACT_COE_PUBLISH_S")) {
BOQueryAPI boQueryAPI = SDK.getBOAPI().query(boName);
BOQueryAPI boQueryAPI = SDK.getBOAPI().query(boName);
boQueryAPI = boQueryAPI.bindId(bindId);
List<BO> list = boQueryAPI.list();
StringBuilder boFileIds = new StringBuilder();
for (BO bo : list) {
if (!bo.getId().equals(formData.getId())) {
boFileIds.append(bo.get("STOPFILEID"));
}
if (!bo.getId().equals(formData.getId())) {
boFileIds.append(bo.get("STOPFILEID"));
}
}
String existedBoFileIds = boFileIds.toString();
String stopFileId = formData.getString("STOPFILEID");
String stopDesc = formData.getString("STOPDESC");
if (stopFileId != null && stopFileId.length() > 0) {
String[] publishFileIds = stopFileId.split(",");
List<BO> boList = new ArrayList<BO>();
for (String fileId : publishFileIds) {
if (!existedBoFileIds.contains(fileId)) {
PALRepositoryModel repositoryModel = PALRepositoryCache.getCache().get(fileId);
if (repositoryModel != null) {
BO newBO = new BO();
newBO.setId(UUIDGener.getUUID());
newBO.set("STOPTYPE", "S");
newBO.set("STOPFILEID", fileId);
newBO.set("STOPFILENAME", repositoryModel.getName());
newBO.set("STOPDESC", stopDesc);
boList.add(newBO);
}
}
}
String[] publishFileIds = stopFileId.split(",");
List<BO> boList = new ArrayList<BO>();
for (String fileId : publishFileIds) {
if (!existedBoFileIds.contains(fileId)) {
PALRepositoryModel repositoryModel = PALRepositoryCache.getCache().get(fileId);
if (repositoryModel != null) {
BO newBO = new BO();
newBO.setId(UUIDGener.getUUID());
newBO.set("STOPTYPE", "S");
newBO.set("STOPFILEID", fileId);
newBO.set("STOPFILENAME", repositoryModel.getName());
newBO.set("STOPDESC", stopDesc);
boList.add(newBO);
}
}
}
SDK.getBOAPI().create(boName, boList, bindId, uid);
// 该记录是否新建的状态由于机制调整BO对象中的ID是不为空的不能通过ID判断记录是否处于新建状态还是修改状态
SDK.getBOAPI().create(boName, boList, bindId, uid);
// 该记录是否新建的状态由于机制调整BO对象中的ID是不为空的不能通过ID判断记录是否处于新建状态还是修改状态
boolean isCreate = param.getParameterOfBoolean(ListenerConst.FORM_EVENT_PARAM_ISCREATE);
if (isCreate) {
SDK.getBOAPI().remove(boName, boId);
SDK.getBOAPI().remove(boName, boId);
}
//保存文件类型到主表
@ -133,101 +132,102 @@ public class SubFormAfterSave extends ExecuteListener {
//保存文件类型到主表
saveFileType(processInstId);
System.out.println(formData.getString("ADAPT_NAME_THE_COMPANY"));
System.out.println(formData.getString("ADAPT_REGION_NAME"));
System.out.println(formData.getString("APPLICABLE_PRODUCT"));
System.out.println(formData.getString("ADAPT_NAME_THE_COMPANY"));
System.out.println(formData.getString("ADAPT_REGION_NAME"));
System.out.println(formData.getString("APPLICABLE_PRODUCT"));
/*
根据L1L2L3L4查询权限矩阵所属分部数据
*/
ProcessInstance processInstance=SDK.getProcessAPI().getInstanceById(processInstId);
if(processInstance.getProcessDefId().equals("obj_fb1c7a54b98b412187388c8bab407362")){
String sql = "SELECT SSFB FROM BO_ACT_AUTH_INFO WHERE LEVEL_1_PROCESS_NAME=? AND LEVEL_2_PROCESS_NAME=? AND LEVEL_3_PROCESS_NAME=? AND ORGNAME=? AND ADAPT_REGION_NAME=? AND APPLICABLE_PRODUCT=?";
String ssfb = DBSql.getString(sql, new Object[] { formData.getString("LEVEL_1_PROCESS_NAME"),formData.getString("LEVEL_2_PROCESS_NAME"),formData.getString("LEVEL_3_PROCESS_NAME"),formData.getString("LEVEL_4_PROCESS_NAME"),formData.getString("ADAPT_NAME_THE_COMPANY"),formData.getString("ADAPT_REGION_NAME"),formData.getString("APPLICABLE_PRODUCT") });
ProcessInstance processInstance = SDK.getProcessAPI().getInstanceById(processInstId);
if (processInstance.getProcessDefId().equals("obj_fb1c7a54b98b412187388c8bab407362") || processInstance.getProcessDefId().equals("obj_5609e1d265dc4e7094c617f20be353dd") || processInstance.getProcessDefId().equals("obj_114e76f691c14beb902e9904f4be26f8")) {
String sql = "SELECT SSFB FROM BO_ACT_AUTH_INFO WHERE LEVEL_1_PROCESS_NAME=? AND LEVEL_2_PROCESS_NAME=? AND LEVEL_3_PROCESS_NAME=? AND ORGNAME=? AND ADAPT_REGION_NAME=? AND APPLICABLE_PRODUCT=?";
String ssfb = DBSql.getString(sql, new Object[]{formData.getString("LEVEL_1_PROCESS_NAME"), formData.getString("LEVEL_2_PROCESS_NAME"), formData.getString("LEVEL_3_PROCESS_NAME"), formData.getString("ADAPT_NAME_THE_COMPANY"), formData.getString("ADAPT_REGION_NAME"), formData.getString("APPLICABLE_PRODUCT")});
if(StringUtils.isNotEmpty(ssfb)){
int r1 = DBSql.update("UPDATE BO_ACT_COE_PUBLISH SET SSFB='" + ssfb + "'WHERE BINDID ='" + processInstId + "'");
}
}else{
String sql = "SELECT SSFB FROM BO_ACT_AUTH_INFO WHERE LEVEL_1_PROCESS_NAME=? AND LEVEL_2_PROCESS_NAME=? AND LEVEL_3_PROCESS_NAME=? AND LEVEL_4_PROCESS_NAME=? AND ORGNAME=? AND ADAPT_REGION_NAME=? AND APPLICABLE_PRODUCT=?";
String ssfb = DBSql.getString(sql, new Object[] { formData.getString("LEVEL_1_PROCESS_NAME"),formData.getString("LEVEL_2_PROCESS_NAME"),formData.getString("LEVEL_3_PROCESS_NAME"),formData.getString("LEVEL_4_PROCESS_NAME"),formData.getString("ADAPT_NAME_THE_COMPANY"),formData.getString("ADAPT_REGION_NAME"),formData.getString("APPLICABLE_PRODUCT") });
if(StringUtils.isNotEmpty(ssfb)){
int r1 = DBSql.update("UPDATE BO_ACT_COE_PUBLISH SET SSFB='" + ssfb + "'WHERE BINDID ='" + processInstId + "'");
}
}
if (StringUtils.isNotEmpty(ssfb)) {
int r1 = DBSql.update("UPDATE BO_ACT_COE_PUBLISH SET SSFB='" + ssfb + "'WHERE BINDID ='" + processInstId + "'");
}
} else {
String sql = "SELECT SSFB FROM BO_ACT_AUTH_INFO WHERE LEVEL_1_PROCESS_NAME=? AND LEVEL_2_PROCESS_NAME=? AND LEVEL_3_PROCESS_NAME=? AND LEVEL_4_PROCESS_NAME=? AND ORGNAME=? AND ADAPT_REGION_NAME=? AND APPLICABLE_PRODUCT=?";
String ssfb = DBSql.getString(sql, new Object[]{formData.getString("LEVEL_1_PROCESS_NAME"), formData.getString("LEVEL_2_PROCESS_NAME"), formData.getString("LEVEL_3_PROCESS_NAME"), formData.getString("LEVEL_4_PROCESS_NAME"), formData.getString("ADAPT_NAME_THE_COMPANY"), formData.getString("ADAPT_REGION_NAME"), formData.getString("APPLICABLE_PRODUCT")});
if (StringUtils.isNotEmpty(ssfb)) {
int r1 = DBSql.update("UPDATE BO_ACT_COE_PUBLISH SET SSFB='" + ssfb + "'WHERE BINDID ='" + processInstId + "'");
}
}
}
public String saveFileType(String processInstId) {
List<BO> bolistN = SDK.getBOAPI().query(PublisherConstant.BOSUBTABLE_N).bindId(processInstId).list();
ArrayList<String> arr = new ArrayList<String>();
if(bolistN.size()>0) {
for (BO bo : bolistN) {
try {
typeList(arr, bo.getString("PUBLISHFILEID"));
} catch (Exception e) {
// TODO: handle exception
}
}
}
List<BO> bolistC = SDK.getBOAPI().query(PublisherConstant.BOSUBTABLE_C).bindId(processInstId).list();
if(bolistC.size()>0) {
for (BO bo : bolistC) {
try {
typeList(arr, bo.getString("CHANGEDFILEIDNEW"));
} catch (Exception e) {
// TODO: handle exception
}
}
List<BO> bolistN = SDK.getBOAPI().query(PublisherConstant.BOSUBTABLE_N).bindId(processInstId).list();
ArrayList<String> arr = new ArrayList<String>();
if (bolistN.size() > 0) {
for (BO bo : bolistN) {
try {
typeList(arr, bo.getString("PUBLISHFILEID"));
} catch (Exception e) {
// TODO: handle exception
}
}
}
List<BO> bolistC = SDK.getBOAPI().query(PublisherConstant.BOSUBTABLE_C).bindId(processInstId).list();
if (bolistC.size() > 0) {
for (BO bo : bolistC) {
try {
typeList(arr, bo.getString("CHANGEDFILEIDNEW"));
} catch (Exception e) {
// TODO: handle exception
}
}
}
}
List<BO> bolistS = SDK.getBOAPI().query(PublisherConstant.BOSUBTABLE_S).bindId(processInstId).list();
if(bolistS.size()>0) {
for (BO bo : bolistS) {
try {
typeList(arr, bo.getString("STOPFILEID"));
} catch (Exception e) {
// TODO: handle exception
}
}
}
//保存发布文件的类型到主表
if((arr.contains("表单模板")||arr.contains("操作指导"))&&!arr.contains("制度模型")&&!arr.contains("EPC模型")&&!arr.contains("泳道图")) {
DBSql.update("UPDATE BO_ACT_COE_PUBLISH SET RELEASE_THE_TITLE = '操作指导/表单模板',SECONDARY_AUDIT_REQUIRED = 'N',LEVEL_1_AUDIT_REQUIRED = 'N' WHERE BINDID = '"+processInstId+"'");
//SDK.getBOAPI().updateByBindId("BO_ACT_COE_PUBLISH", processInstId, "RELEASE_THE_TITLE", "操作指导/表单模板");
}else {
DBSql.update("UPDATE BO_ACT_COE_PUBLISH SET RELEASE_THE_TITLE = '制度模型/EPC模型/泳道图' WHERE BINDID = '"+processInstId+"'");
//SDK.getBOAPI().updateByBindId("BO_ACT_COE_PUBLISH", processInstId, "RELEASE_THE_TITLE", "制度模型/EPC模型/泳道图");
}
return processInstId;
List<BO> bolistS = SDK.getBOAPI().query(PublisherConstant.BOSUBTABLE_S).bindId(processInstId).list();
if (bolistS.size() > 0) {
for (BO bo : bolistS) {
try {
typeList(arr, bo.getString("STOPFILEID"));
} catch (Exception e) {
// TODO: handle exception
}
}
}
//保存发布文件的类型到主表
if ((arr.contains("表单模板") || arr.contains("操作指导")) && !arr.contains("制度模型") && !arr.contains("EPC模型") && !arr.contains("泳道图")) {
DBSql.update("UPDATE BO_ACT_COE_PUBLISH SET RELEASE_THE_TITLE = '操作指导/表单模板',SECONDARY_AUDIT_REQUIRED = 'N',LEVEL_1_AUDIT_REQUIRED = 'N' WHERE BINDID = '" + processInstId + "'");
//SDK.getBOAPI().updateByBindId("BO_ACT_COE_PUBLISH", processInstId, "RELEASE_THE_TITLE", "操作指导/表单模板");
} else {
DBSql.update("UPDATE BO_ACT_COE_PUBLISH SET RELEASE_THE_TITLE = '制度模型/EPC模型/泳道图' WHERE BINDID = '" + processInstId + "'");
//SDK.getBOAPI().updateByBindId("BO_ACT_COE_PUBLISH", processInstId, "RELEASE_THE_TITLE", "制度模型/EPC模型/泳道图");
}
return processInstId;
}
public ArrayList<String> typeList(ArrayList<String> arr,String plId){
String sql = "SELECT PLMETHODID,EXT3 FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID = '"+plId+"'";
RowMap map = DBSql.getMap(sql);
if(map!=null) {
String methodId = map.getString("PLMETHODID");
if("control.policy".equals(methodId)) {
String fileType = map.getString("EXT3");
if("I/O_L4".equals(fileType)) {
arr.add("操作指导");
}else {
arr.add("制度模型");
}
}else if("data.form".equals(methodId)) {
arr.add("表单模板");
}else if("process.epc".equals(methodId)) {
arr.add("EPC模型");
}else if("process.flowchart".equals(methodId)) {
arr.add("泳道图");
}
public ArrayList<String> typeList(ArrayList<String> arr, String plId) {
String sql = "SELECT PLMETHODID,EXT3 FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID = '" + plId + "'";
RowMap map = DBSql.getMap(sql);
if (map != null) {
String methodId = map.getString("PLMETHODID");
if ("control.policy".equals(methodId)) {
String fileType = map.getString("EXT3");
if ("I/O_L4".equals(fileType)) {
arr.add("操作指导");
} else {
arr.add("制度模型");
}
} else if ("data.form".equals(methodId)) {
arr.add("表单模板");
} else if ("process.epc".equals(methodId)) {
arr.add("EPC模型");
} else if ("process.flowchart".equals(methodId)) {
arr.add("泳道图");
}
}
return arr;
}
}
return arr;
}
}