连线校验功能打开

This commit is contained in:
Mr-wang 2023-07-13 20:32:51 +08:00
parent 296ed73f8e
commit 29674d0471

View File

@ -22,6 +22,7 @@ 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;
@ -50,6 +51,7 @@ public class PublishFormBeforeSaveEvent extends InterruptListener implements Int
/**
*
* @param param
* @return
* @throws Exception
@ -58,34 +60,36 @@ 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);
@ -98,132 +102,135 @@ 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) {
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++) {
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();
boolean isUseV=versions.get(k).isUse();
boolean isPublishV=versions.get(k).isPublish();
if (isUseV == true && isPublishV == false) {
if(isUseV==true && isPublishV==false) {
fileElements = CoeDesignerUtil.getShapeMessageJson4(onemodel.getId());
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 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]);
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>");
}
}
}
}
}
} else if (isUse == false && publish == false) {
}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++) {
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();
boolean isUseV=versions.get(k).isUse();
boolean isPublishV=versions.get(k).isPublish();
if (isUseV == true && isPublishV == false) {
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]);
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]);
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]);
}
if (onemodel.getMethodId().equals("data.form")) {
fileElements = CoeDesignerUtil.getShapeMessageJson4(splitRelationFileId[i]);
for (Map<String, Object> shape : fileElements) {
String tempShapeId = shape.get("id").toString();
for (Map<String, Object> shape : fileElements) {
String tempShapeId = shape.get("id").toString();
UpFileDao dao = new UpFileDao();
// 文件根据relationFileId 文件类型 查询
List<UpfileModel> list2;
UpFileDao dao = new UpFileDao();
// 文件根据relationFileId 文件类型 查询
List<UpfileModel> list2;
list2= dao.search(splitRelationFileId[i], tempShapeId, "s");
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");
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(",");
}
sb.append(name).append("关联模型名称:").append("</br>").append("").append(shape.get("plName")).append("").append("节点名称:").append("" + shape.get("name") + "").append("未上传附件,请检查!!!").append("</br>").append(",");
}
}
}
}
}
}
}
}
}
@ -237,18 +244,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<>();
//连线数据增加
@ -260,7 +267,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);
}
}
@ -276,23 +283,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);
@ -309,9 +316,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();
@ -331,14 +338,13 @@ 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/>");
@ -364,16 +370,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>");
}
@ -424,26 +430,27 @@ 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) {
@ -455,7 +462,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"));
@ -522,11 +529,10 @@ 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) {
@ -535,7 +541,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);
}
}