Commit ce1cfa62 authored by 雍欢's avatar 雍欢

整合表单设计后端代码

parent 5c31b139
package com.huigou.demo.application.impl;
import com.huigou.uasp.bpm.engine.application.ProcUnitHandlerApplication;
import com.huigou.uasp.bpm.engine.domain.model.ProcUnitHandler;
import org.activiti.engine.delegate.event.ActivitiEvent;
import org.activiti.engine.delegate.event.ActivitiEventListener;
import org.activiti.engine.delegate.event.ActivitiEventType;
import org.activiti.engine.delegate.event.impl.ActivitiEntityEventImpl;
import org.activiti.engine.task.Task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
public class MyActivitiEventListener implements ActivitiEventListener {
private final static Logger LOG = LoggerFactory.getLogger(MyActivitiEventListener.class);
@Autowired
private ProcUnitHandlerApplication procUnitHandlerApplication;
@Override
public void onEvent(ActivitiEvent event) {
ActivitiEventType eventType = event.getType();
if (event.getType() == ActivitiEventType.TASK_ASSIGNED) {
Task task = (Task) ((ActivitiEntityEventImpl) event).getEntity();
String assignee = task.getAssignee();
ProcUnitHandler procUnitHandler = procUnitHandlerApplication.loadProcUnitHandler(assignee);
LOG.info("指派任务,procUnitHandler是:{}", procUnitHandler);
}
}
@Override
public boolean isFailOnException() {
return false;
}
}
...@@ -56,7 +56,7 @@ public class BuildEntityFile implements BuildFilerInter { ...@@ -56,7 +56,7 @@ public class BuildEntityFile implements BuildFilerInter {
for (int u=0;u<fieldList.size();u++){ for (int u=0;u<fieldList.size();u++){
map=fieldList.get(u); map=fieldList.get(u);
colName=map.get("columnName").toString(); colName=map.get("attrCode").toString(); //columnName-->attrCcode
if ("created_by_id".equals(colName)){ if ("created_by_id".equals(colName)){
isCreator=true; isCreator=true;
break; break;
...@@ -72,11 +72,11 @@ public class BuildEntityFile implements BuildFilerInter { ...@@ -72,11 +72,11 @@ public class BuildEntityFile implements BuildFilerInter {
for (int u=0;u<fieldList.size();u++){ for (int u=0;u<fieldList.size();u++){
map=fieldList.get(u); map=fieldList.get(u);
colName=map.get("columnName").toString(); colName=map.get("attrCode").toString();
dataType=map.get("dataType").toString(); dataType=map.get("fieldType").toString();
dataLength=map.get("dataLength").toString(); dataLength=map.get("fieldLength").toString();
comments=map.get("comments").toString(); comments=map.get("attrName").toString();
dataScale=!"".equals(map.get("dataScale"))?Integer.parseInt(map.get("dataScale").toString()):0; dataScale=!"".equals(map.get("fieldDecimal"))?Integer.parseInt(map.get("fieldDecimal").toString()):0;
//改在sql中去掉不生成的字段 ?? //改在sql中去掉不生成的字段 ??
if (!"id".equals(colName)&&!"version".equals(colName) if (!"id".equals(colName)&&!"version".equals(colName)
&&!"created_date".equals(colName)&&!"created_by_name".equals(colName)&&!"created_by_id".equals(colName) &&!"created_date".equals(colName)&&!"created_by_name".equals(colName)&&!"created_by_id".equals(colName)
......
...@@ -79,6 +79,7 @@ public class BuildPageDetailFile implements BuildFilerInter { ...@@ -79,6 +79,7 @@ public class BuildPageDetailFile implements BuildFilerInter {
} }
//存在流程的 添加固定的隐藏字段 //存在流程的 添加固定的隐藏字段
sb.append(" <x:hidden name=\"procId\" />\r\n");
sb.append(" <x:hidden name=\"billCode\"/>\r\n"); sb.append(" <x:hidden name=\"billCode\"/>\r\n");
sb.append(" <x:hidden name=\"fillinDate\" type=\"datetime\"/>\r\n"); sb.append(" <x:hidden name=\"fillinDate\" type=\"datetime\"/>\r\n");
sb.append(" <x:hidden name=\"fullId\"/>\r\n"); sb.append(" <x:hidden name=\"fullId\"/>\r\n");
...@@ -127,6 +128,14 @@ public class BuildPageDetailFile implements BuildFilerInter { ...@@ -127,6 +128,14 @@ public class BuildPageDetailFile implements BuildFilerInter {
public void generateFieldTag(ParamFormVO paraForm,StringBuffer sb){ public void generateFieldTag(ParamFormVO paraForm,StringBuffer sb){
String []fieldEns=paraForm.getFieldEns(); String []fieldEns=paraForm.getFieldEns();
if (paraForm.getIsform()==0) { //是代码生成器 获取真实字段名称
fieldEns=paraForm.getRealFieldEns();
String tfstr="";
for (int u=0;u<fieldEns.length;u++) {
tfstr= CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, fieldEns[u]); //转驼峰法
fieldEns[u]=tfstr;
}
}
String []fieldChs=paraForm.getFieldChs(); String []fieldChs=paraForm.getFieldChs();
String []fieldTags=paraForm.getFieldTags(); String []fieldTags=paraForm.getFieldTags();
String []mustInputField=paraForm.getMustinputFields(); String []mustInputField=paraForm.getMustinputFields();
...@@ -240,19 +249,24 @@ public class BuildPageDetailFile implements BuildFilerInter { ...@@ -240,19 +249,24 @@ public class BuildPageDetailFile implements BuildFilerInter {
sb.append(" </script> \r\n"); sb.append(" </script> \r\n");
String formNo=paraForm.getFormPath(); String formNo=paraForm.getFormPath();
formNo=formNo.substring(formNo.indexOf("customform")+11); if (paraForm.getIsform()==1) { //表单生成
formNo = formNo.substring(formNo.indexOf("customform") + 11);
}
String queryUrl=""; String queryUrl="";
for (int j=0;j<listDetails.size();j++){ for (int j=0;j<listDetails.size();j++){
paraDetail=listDetails.get(j); paraDetail=listDetails.get(j);
String entitySubTable=CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL,paraDetail.getTableName()); String entitySubTable=CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL,paraDetail.getTableName());
sb.append(" <script src='<c:url value=\"");
sb.append(" <script src='<c:url value=\"").append(paraForm.getSrcPath()).append("/").append(formNo).append("/").append(entitySubTable).append(".js\"/>' type=\"text/javascript\"></script>\r\n"); if (paraForm.getIsform()==1) { //表单生成
sb.append(paraForm.getSrcPath());
}
sb.append("/").append(formNo).append("/").append(entitySubTable)
.append(".js\"/>' type=\"text/javascript\"></script>").append(Constant.SYSMBOL_LINE);
//生成js文件 //生成js文件
String detailTableName=paraDetail.getTableName(); String detailTableName=paraDetail.getTableName();
paraDetail.setTableName(detailTableName.toLowerCase()); paraDetail.setTableName(detailTableName.toLowerCase());
//paraDetail.setBtnNames(new String[]{"新增行","删除行","保存行","启用行","禁用行"});
//paraDetail.setBtnMethodNames(new String[]{"addRow","deleteRow","saveRow","enableRow","disableRow"});
paraDetail.setBtnNames(new String[]{"新增行","删除行","保存行"}); paraDetail.setBtnNames(new String[]{"新增行","删除行","保存行"});
paraDetail.setBtnMethodNames(new String[]{"addRow","deleteRow","saveRow"}); paraDetail.setBtnMethodNames(new String[]{"addRow","deleteRow","saveRow"});
// BuildPageJSFile buildStringBuffer=new BuildPageJSFile(paraDetail); // BuildPageJSFile buildStringBuffer=new BuildPageJSFile(paraDetail);
...@@ -270,7 +284,12 @@ public class BuildPageDetailFile implements BuildFilerInter { ...@@ -270,7 +284,12 @@ public class BuildPageDetailFile implements BuildFilerInter {
queryUrl+="+'&id='+"+"$(\"#id\").val()"; queryUrl+="+'&id='+"+"$(\"#id\").val()";
StringBuffer sbjs=buildPageJSFile.generateContents(paraDetail,mainTableName,paraForm.getRealFieldEns(),true,queryUrl); StringBuffer sbjs=buildPageJSFile.generateContents(paraDetail,mainTableName,paraForm.getRealFieldEns(),true,queryUrl);
if (paraForm.getIsform()==1) { //表单生成页面
Utils.generateFile(paraForm.getFormPath()+"/"+entitySubTable+".js", sbjs); Utils.generateFile(paraForm.getFormPath()+"/"+entitySubTable+".js", sbjs);
} else { // 代码生成
Utils.generateFile(paraForm.getSrcPath()+"/"+entitySubTable+".js", sbjs);
}
} }
sb.append(" </head> \r\n"); sb.append(" </head> \r\n");
......
...@@ -61,7 +61,7 @@ public class BuildPageJSFile implements BuildFilerInter { ...@@ -61,7 +61,7 @@ public class BuildPageJSFile implements BuildFilerInter {
sb.append(" var ").append(fileName).append("GridManager = null, refreshFlag = false;"); sb.append(" var ").append(fileName).append("GridManager = null, refreshFlag = false;");
sb.append(" $(document).ready(function () {"); sb.append(" $(document).ready( function () {");
sb.append(" initUI();"); sb.append(" initUI();");
sb.append(" init").append(Utils.toUpperCaseFirstOne(entityName)).append("ListGrid();"); sb.append(" init").append(Utils.toUpperCaseFirstOne(entityName)).append("ListGrid();");
...@@ -81,16 +81,13 @@ public class BuildPageJSFile implements BuildFilerInter { ...@@ -81,16 +81,13 @@ public class BuildPageJSFile implements BuildFilerInter {
sb.append(" });"); sb.append(" });");
sb.append(" "); sb.append(" ");
sb.append(Constant.SYSMBOL_LINE);
sb.append("function initUI() {"); sb.append("function initUI() {");
sb.append(" UICtrl.initDefaultLayout();"); sb.append(" UICtrl.initDefaultLayout();");
sb.append(" }"); sb.append(" }");
sb.append(""); sb.append("");
sb.append(Constant.SYSMBOL_LINE);
// if (!isDetail){ //是主表单的 JS 不是明细页面的js 改在生成页面文件时
//组装主表单字段效验事件
// Utils.composeMainFormCheckFunction(paraForm, sb);
//}
//组装Grid表格 //组装Grid表格
sb.append("function init").append(Utils.toUpperCaseFirstOne(entityName)).append("ListGrid() { "); sb.append("function init").append(Utils.toUpperCaseFirstOne(entityName)).append("ListGrid() { ");
...@@ -100,9 +97,11 @@ public class BuildPageJSFile implements BuildFilerInter { ...@@ -100,9 +97,11 @@ public class BuildPageJSFile implements BuildFilerInter {
composeDisplayButton(paraForm,queryUrl,sb); composeDisplayButton(paraForm,queryUrl,sb);
} }
sb.append(""); sb.append("");
sb.append(Constant.SYSMBOL_LINE);
sb.append(" ").append(fileName).append("GridManager = UICtrl.grid('#") sb.append(" ").append(fileName).append("GridManager = UICtrl.grid('#")
.append(fileName).append("Grid', {"); .append(fileName).append("Grid', {");
sb.append(Constant.SYSMBOL_LINE);
//组装显示的列表 //组装显示的列表
composeDisplayColumns(paraForm,queryUrl,sb); composeDisplayColumns(paraForm,queryUrl,sb);
...@@ -154,7 +153,7 @@ public class BuildPageJSFile implements BuildFilerInter { ...@@ -154,7 +153,7 @@ public class BuildPageJSFile implements BuildFilerInter {
sb.append(" fixedCellHeight: true,"); sb.append(" fixedCellHeight: true,");
sb.append(" selectRowButtonOnly:true"); sb.append(" selectRowButtonOnly:true");
if (isDetail){ //是明细页面的js 进行编辑 if (isDetail){ //是明细页面的js 需要进行编辑
sb.append(" ,onAfterEdit:bindEvent"); sb.append(" ,onAfterEdit:bindEvent");
sb.append(" ,autoAddRowByKeydown:true"); //允许自动增加编辑行 sb.append(" ,autoAddRowByKeydown:true"); //允许自动增加编辑行
sb.append(" ,onAfterAddRow:function(rows){ var id = getId(); if (id!=''){ saveRow").append(Utils.toUpperCaseFirstOne(entityName)).append("(\"\"); } }"); sb.append(" ,onAfterAddRow:function(rows){ var id = getId(); if (id!=''){ saveRow").append(Utils.toUpperCaseFirstOne(entityName)).append("(\"\"); } }");
...@@ -174,11 +173,15 @@ public class BuildPageJSFile implements BuildFilerInter { ...@@ -174,11 +173,15 @@ public class BuildPageJSFile implements BuildFilerInter {
sb.append(" }"); sb.append(" }");
sb.append(Constant.SYSMBOL_LINE); sb.append(Constant.SYSMBOL_LINE);
if (isDetail){ //是明细页面的js 添加字段效验的 if (isDetail){ //是明细页面的js 添加明细字段效验的处理
Utils.composeDetailCheckFunction(paraForm,mainTableFields,sb); try {
Utils.composeDetailCheckFunction(paraForm, mainTableFields, sb);
}catch(Exception ex){
ex.printStackTrace();
}
} }
//sb.append("//刷新Gird方法;").append(Constant.SYSMBOL_LINE); sb.append(Constant.SYSMBOL_LINE);
sb.append(" function reload").append(Utils.toUpperCaseFirstOne(fileName)).append("Grid() {") sb.append(" function reload").append(Utils.toUpperCaseFirstOne(fileName)).append("Grid() {")
.append(" var params = $(\"#queryMainForm\").formToJSON();") .append(" var params = $(\"#queryMainForm\").formToJSON();")
.append(" UICtrl.gridSearch(").append(fileName).append("GridManager, params);") .append(" UICtrl.gridSearch(").append(fileName).append("GridManager, params);")
...@@ -189,8 +192,8 @@ public class BuildPageJSFile implements BuildFilerInter { ...@@ -189,8 +192,8 @@ public class BuildPageJSFile implements BuildFilerInter {
sb.append("function getId() {"); sb.append("function getId() {");
sb.append(" return $(\"#id\").val() || \"\";"); sb.append(" return $(\"#id\").val() || \"\";");
sb.append(" }"); sb.append(" }");
sb.append(Constant.SYSMBOL_LINE);
//生成setId方法 //生成setId方法
sb.append("function setId(value) { "); sb.append("function setId(value) { ");
sb.append(" $(\"#id\").val(value);"); sb.append(" $(\"#id\").val(value);");
// 为文件上传控件绑定业务id // 为文件上传控件绑定业务id
...@@ -227,7 +230,6 @@ public class BuildPageJSFile implements BuildFilerInter { ...@@ -227,7 +230,6 @@ public class BuildPageJSFile implements BuildFilerInter {
} }
} }
//sb.append("//查询方法;").append(Constant.SYSMBOL_LINE); //sb.append("//查询方法;").append(Constant.SYSMBOL_LINE);
sb.append("function query(obj) {"); sb.append("function query(obj) {");
sb.append(" var param = $(obj).formToJSON();"); sb.append(" var param = $(obj).formToJSON();");
...@@ -266,13 +268,23 @@ public class BuildPageJSFile implements BuildFilerInter { ...@@ -266,13 +268,23 @@ public class BuildPageJSFile implements BuildFilerInter {
//组装显示的列 //组装显示的列
public void composeDisplayColumns(ParamFormVO paraForm,String queryUrl,StringBuffer sb){ public void composeDisplayColumns(ParamFormVO paraForm,String queryUrl,StringBuffer sb){
// String fileName=entityName; //首字母小写 // String fileName=entityName; //首字母小写
String []fieldEns=paraForm.getFieldEns(); String []fieldEns=paraForm.getFieldEns();
if (paraForm.getIsform()==0){ //代码生成器
fieldEns=paraForm.getRealFieldEns();
String tfstr="";
for (int u=0;u<fieldEns.length;u++) {
tfstr= CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, fieldEns[u]); //转驼峰法
fieldEns[u]=tfstr;
}
}
String []dataSourceTypes=paraForm.getDataSourceTypes(); String []dataSourceTypes=paraForm.getDataSourceTypes();
String []dataSources=paraForm.getDataSources(); String []dataSources=paraForm.getDataSources();
String []displayField=paraForm.getDisplayFields(); String []displayField=paraForm.getDisplayFields();
if (paraForm.getIsform()==0){ //代码生成器
displayField=paraForm.getRealFieldEns();
}
String []displayFieldname=paraForm.getDisplayFieldnames(); String []displayFieldname=paraForm.getDisplayFieldnames();
String []displayFieldType=paraForm.getDisplayFieldTypes(); String []displayFieldType=paraForm.getDisplayFieldTypes();
String []mustInput=paraForm.getMustinputFields(); String []mustInput=paraForm.getMustinputFields();
...@@ -455,12 +467,17 @@ public class BuildPageJSFile implements BuildFilerInter { ...@@ -455,12 +467,17 @@ public class BuildPageJSFile implements BuildFilerInter {
} }
} }
sb.append("},"); sb.append("},");
sb.append(Constant.SYSMBOL_LINE);
} }
sb.append("{display: '状态', name: 'status', width: 50, minWidth: 40, align:\"left\",") sb.append(" {display: '状态', name: 'status', width: 50, minWidth: 40, align:\"left\",")
.append("render: function (item) { ") .append("render: function (item) { ")
.append(" if ($('#procId').val()!=\"\") { ") .append(" if ($('#procId').val()!=\"\") { ");
.append(" return UICtrl.getApproveStatusInfo(item.status);") if (allowEdit){
.append(" } else { ") sb.append(" return UICtrl.getStatusInfo(item.status); ");
} else {
sb.append(" return UICtrl.getApproveStatusInfo(item.status); ");
}
sb.append(" } else { ")
.append(" return UICtrl.getStatusInfo(item.status);} } }"); .append(" return UICtrl.getStatusInfo(item.status);} } }");
if (hideCols.size()>0){ if (hideCols.size()>0){
sb.append(","); sb.append(",");
...@@ -472,6 +489,7 @@ public class BuildPageJSFile implements BuildFilerInter { ...@@ -472,6 +489,7 @@ public class BuildPageJSFile implements BuildFilerInter {
} }
} }
sb.append("],"); sb.append("],");
sb.append(Constant.SYSMBOL_LINE);
} }
...@@ -518,15 +536,15 @@ public class BuildPageJSFile implements BuildFilerInter { ...@@ -518,15 +536,15 @@ public class BuildPageJSFile implements BuildFilerInter {
.append("").append(paraForm.getBtnMethodNames()[i]).append(Utils.toUpperCaseFirstOne(entityName)).append("();") .append("").append(paraForm.getBtnMethodNames()[i]).append(Utils.toUpperCaseFirstOne(entityName)).append("();")
.append("}") .append("}")
.append("}"); .append("}");
} else if ("saveRow".equals(paraForm.getBtnMethodNames()[i]) ){ /* } else if ("saveRow".equals(paraForm.getBtnMethodNames()[i]) ){
sb.append(" saveRowHandler:{") sb.append(" saveRowHandler:{")
.append("id:'saveRowHandler',") .append("id:'saveRowHandler',")
.append("img:'fa-upload',") .append("img:'fa-save',")
.append("text:'保存行',") .append("text:'保存行',")
.append("click:function(){") .append("click:function(){")
.append("").append(paraForm.getBtnMethodNames()[i]).append(Utils.toUpperCaseFirstOne(entityName)).append("(\"\");") .append("").append(paraForm.getBtnMethodNames()[i]).append(Utils.toUpperCaseFirstOne(entityName)).append("(\"\");")
.append("}") .append("}")
.append("}"); .append("}"); */
} else if ("enableRow".equals(paraForm.getBtnMethodNames()[i]) ){ } else if ("enableRow".equals(paraForm.getBtnMethodNames()[i]) ){
sb.append(" enableRowHandler:{") sb.append(" enableRowHandler:{")
.append("id:'enableRowHandler',") .append("id:'enableRowHandler',")
...@@ -545,7 +563,9 @@ public class BuildPageJSFile implements BuildFilerInter { ...@@ -545,7 +563,9 @@ public class BuildPageJSFile implements BuildFilerInter {
.append("").append(paraForm.getBtnMethodNames()[i]).append(Utils.toUpperCaseFirstOne(entityName)).append("();") .append("").append(paraForm.getBtnMethodNames()[i]).append(Utils.toUpperCaseFirstOne(entityName)).append("();")
.append("}") .append("}")
.append("}"); .append("}");
} else { } else if ("saveRow".equals(paraForm.getBtnMethodNames()[i]) ){
//在下面根据是否存在流程 添加
} else { //主表 默认的按钮类型
sb.append("").append(paraForm.getBtnMethodNames()[i]).append("Handler:") sb.append("").append(paraForm.getBtnMethodNames()[i]).append("Handler:")
.append(paraForm.getBtnMethodNames()[i]).append("Handler"); .append(paraForm.getBtnMethodNames()[i]).append("Handler");
} }
...@@ -557,6 +577,17 @@ public class BuildPageJSFile implements BuildFilerInter { ...@@ -557,6 +577,17 @@ public class BuildPageJSFile implements BuildFilerInter {
sb.append(""); sb.append("");
} //ended for } //ended for
sb.append(" });"); sb.append(" });");
//如果是明细表 需要增加
for (int i=0;i<paraForm.getBtnMethodNames().length;i++) {
if ("saveRow".equals(paraForm.getBtnMethodNames()[i])) {
sb.append(" if ($('#procId').val()==\"\") {"); //增加是否配置流程
sb.append(" toolbarOptions.items[toolbarOptions.items.length] = {id:'saveRowHandler',img:'fa-save',text:'保存行',click:function(){ ")
.append("saveRow").append(Utils.toUpperCaseFirstOne(entityName)).append("(\"\");}};");
sb.append(" }");
}
}
} }
} }
...@@ -565,12 +596,6 @@ public class BuildPageJSFile implements BuildFilerInter { ...@@ -565,12 +596,6 @@ public class BuildPageJSFile implements BuildFilerInter {
// 明细表的 fieldEns//已经是field0...??? // 明细表的 fieldEns//已经是field0...???
public String getDisplayField(String []fieldEns,String []displayFields,String fieldName){ public String getDisplayField(String []fieldEns,String []displayFields,String fieldName){
String displayField=fieldName; String displayField=fieldName;
// int x=0;
// for (int j=0;j<fieldEns.length;j++) {
// if (fieldName.equals(fieldEns[j])){
// x++;
// }
// }
for (int j=0;j<fieldEns.length;j++) { for (int j=0;j<fieldEns.length;j++) {
if (fieldName.equals(fieldEns[j])){ if (fieldName.equals(fieldEns[j])){
displayField=displayFields[j]; displayField=displayFields[j];
......
...@@ -70,6 +70,7 @@ public class BuildPageListFile implements BuildFilerInter { ...@@ -70,6 +70,7 @@ public class BuildPageListFile implements BuildFilerInter {
// String searchField=pageMap.get("listdisplaySearchField").toString(); // String searchField=pageMap.get("listdisplaySearchField").toString();
String []searchFields=paraForm.getSearchFields(); String []searchFields=paraForm.getSearchFields();
String []fieldEns=paraForm.getFieldEns(); String []fieldEns=paraForm.getFieldEns();
String []realfields=paraForm.getRealFieldEns();
String []fieldchs=paraForm.getFieldChs(); String []fieldchs=paraForm.getFieldChs();
String []fieldTags=paraForm.getFieldTags(); String []fieldTags=paraForm.getFieldTags();
String []dataSourceTypes=paraForm.getDataSourceTypes(); String []dataSourceTypes=paraForm.getDataSourceTypes();
...@@ -78,7 +79,11 @@ public class BuildPageListFile implements BuildFilerInter { ...@@ -78,7 +79,11 @@ public class BuildPageListFile implements BuildFilerInter {
String tagType="input",chName="",dataSourceType="",dataSource="",searchField=""; String tagType="input",chName="",dataSourceType="",dataSource="",searchField="";
for (int i=0;i<searchFields.length;i++) { for (int i=0;i<searchFields.length;i++) {
if ("1".equals(searchFields[i])){ // if ("1".equals(searchFields[i])){ //
searchField=fieldEns[i]; if (paraForm.getIsform() == 0) { //是代码生成器 获取真实字段名称
searchField = realfields[i];
} else {
searchField = fieldEns[i];
}
chName=fieldchs[i]; chName=fieldchs[i];
tagType=fieldTags[i]; tagType=fieldTags[i];
if (dataSourceTypes.length>i){ if (dataSourceTypes.length>i){
......
...@@ -51,6 +51,7 @@ public class AddButtonResult implements ButtonTypeInter { ...@@ -51,6 +51,7 @@ public class AddButtonResult implements ButtonTypeInter {
sb.append("} "); sb.append("} ");
sb.append(" "); sb.append(" ");
sb.append(" } "); sb.append(" } ");
sb.append(Constant.SYSMBOL_LINE);
sb.append("function initAdd").append(Utils.toUpperCaseFirstOne(btnAttr.getEntityName())).append("(){ "); sb.append("function initAdd").append(Utils.toUpperCaseFirstOne(btnAttr.getEntityName())).append("(){ ");
//如果存在自定义的 下拉选择框 //如果存在自定义的 下拉选择框
...@@ -224,6 +225,7 @@ public class AddButtonResult implements ButtonTypeInter { ...@@ -224,6 +225,7 @@ public class AddButtonResult implements ButtonTypeInter {
sb.append(" "); sb.append(" ");
// sb.append(" //保存方法 ;"); // sb.append(" //保存方法 ;");
sb.append(Constant.SYSMBOL_LINE);
sb.append("function doSave").append(Utils.toUpperCaseFirstOne(btnAttr.getEntityName())).append("(grid){"); sb.append("function doSave").append(Utils.toUpperCaseFirstOne(btnAttr.getEntityName())).append("(grid){");
sb.append(" var _self = this;"); sb.append(" var _self = this;");
sb.append(" var id = getId();"); sb.append(" var id = getId();");
...@@ -252,6 +254,7 @@ public class AddButtonResult implements ButtonTypeInter { ...@@ -252,6 +254,7 @@ public class AddButtonResult implements ButtonTypeInter {
sb.append(" }"); sb.append(" }");
sb.append(" "); sb.append(" ");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString()); list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols())); // list.add(Integer.toString(fieldAttributes.getCurrCols()));
......
...@@ -16,7 +16,7 @@ public class CustomButtonResult implements ButtonTypeInter { ...@@ -16,7 +16,7 @@ public class CustomButtonResult implements ButtonTypeInter {
sb.append(" function ").append(btnAttributes.getButtonMethoedName()).append("Handler(){"); sb.append(" function ").append(btnAttributes.getButtonMethoedName()).append("Handler(){");
sb.append(" } "); sb.append(" } ");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString()); list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols())); // list.add(Integer.toString(fieldAttributes.getCurrCols()));
......
...@@ -28,7 +28,7 @@ public class DeleteButtonResult implements ButtonTypeInter { ...@@ -28,7 +28,7 @@ public class DeleteButtonResult implements ButtonTypeInter {
sb.append(" onSuccess: ").append("reload").append(Utils.toUpperCaseFirstOne(btnAttributes.getEntityName())).append("Grid"); sb.append(" onSuccess: ").append("reload").append(Utils.toUpperCaseFirstOne(btnAttributes.getEntityName())).append("Grid");
sb.append(" });"); sb.append(" });");
sb.append(" }"); sb.append(" }");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString()); list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols())); // list.add(Integer.toString(fieldAttributes.getCurrCols()));
return list; return list;
......
...@@ -27,8 +27,7 @@ public class DisableButtonResult implements ButtonTypeInter { ...@@ -27,8 +27,7 @@ public class DisableButtonResult implements ButtonTypeInter {
sb.append(" }"); sb.append(" }");
sb.append(" }"); sb.append(" }");
sb.append(" "); sb.append(" ");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString()); list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols())); // list.add(Integer.toString(fieldAttributes.getCurrCols()));
return list; return list;
......
...@@ -27,7 +27,7 @@ public class DisableButtonRowResult implements ButtonTypeInter { ...@@ -27,7 +27,7 @@ public class DisableButtonRowResult implements ButtonTypeInter {
sb.append(" }"); sb.append(" }");
sb.append(" }"); sb.append(" }");
sb.append(" "); sb.append(" ");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString()); list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols())); // list.add(Integer.toString(fieldAttributes.getCurrCols()));
......
...@@ -34,7 +34,7 @@ public class EnableButtonResult implements ButtonTypeInter { ...@@ -34,7 +34,7 @@ public class EnableButtonResult implements ButtonTypeInter {
sb.append(" reload").append(Utils.toUpperCaseFirstOne(btnAttributes.getEntityName())).append("Grid();"); sb.append(" reload").append(Utils.toUpperCaseFirstOne(btnAttributes.getEntityName())).append("Grid();");
sb.append(" });"); sb.append(" });");
sb.append(" }"); sb.append(" }");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString()); list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols())); // list.add(Integer.toString(fieldAttributes.getCurrCols()));
return list; return list;
......
...@@ -49,6 +49,7 @@ public class EnableButtonRowResult implements ButtonTypeInter { ...@@ -49,6 +49,7 @@ public class EnableButtonRowResult implements ButtonTypeInter {
sb.append(" reload").append(Utils.toUpperCaseFirstOne(btnAttr.getEntityName())).append("Grid();"); sb.append(" reload").append(Utils.toUpperCaseFirstOne(btnAttr.getEntityName())).append("Grid();");
sb.append(" });"); sb.append(" });");
sb.append(" }"); sb.append(" }");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString()); list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols())); // list.add(Integer.toString(fieldAttributes.getCurrCols()));
......
...@@ -16,6 +16,7 @@ public class ExportExcelButtonResult implements ButtonTypeInter { ...@@ -16,6 +16,7 @@ public class ExportExcelButtonResult implements ButtonTypeInter {
sb.append(" function exportExcelHandler() {"); sb.append(" function exportExcelHandler() {");
sb.append(" UICtrl.gridExport(").append(Utils.toLowerCaseFirstOne(btnAttributes.getEntityName())).append("GridManager);"); sb.append(" UICtrl.gridExport(").append(Utils.toLowerCaseFirstOne(btnAttributes.getEntityName())).append("GridManager);");
sb.append(" }"); sb.append(" }");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString()); list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols())); // list.add(Integer.toString(fieldAttributes.getCurrCols()));
......
...@@ -16,6 +16,9 @@ public class SaveRowButtonResult implements ButtonTypeInter { ...@@ -16,6 +16,9 @@ public class SaveRowButtonResult implements ButtonTypeInter {
// sb.append(" //保存行数据方法 ").append(Constant.SYSMBOL_LINE);; // sb.append(" //保存行数据方法 ").append(Constant.SYSMBOL_LINE);;
sb.append("function saveRow").append(Utils.toUpperCaseFirstOne(btnAttr.getEntityName())).append("(mid){"); sb.append("function saveRow").append(Utils.toUpperCaseFirstOne(btnAttr.getEntityName())).append("(mid){");
sb.append(" if ($('#procId').val()!=\"\") { ");
sb.append(" UICtrl.addGridRow(").append(btnAttr.getEntityName()).append("GridManager,{id:''} );");
sb.append(" } else { ");
sb.append(" var _self = this; var id = getId();"); sb.append(" var _self = this; var id = getId();");
//sb.append(" if (mid!=\"\") { id = mid; $(\"#id\").val(mid); }"); //sb.append(" if (mid!=\"\") { id = mid; $(\"#id\").val(mid); }");
...@@ -86,6 +89,7 @@ public class SaveRowButtonResult implements ButtonTypeInter { ...@@ -86,6 +89,7 @@ public class SaveRowButtonResult implements ButtonTypeInter {
.append(" });") .append(" });")
.append(" return true;") .append(" return true;")
.append(" } "); .append(" } ");
sb.append(" } ");
sb.append(" "); sb.append(" ");
sb.append(Constant.SYSMBOL_LINE); sb.append(Constant.SYSMBOL_LINE);
...@@ -94,6 +98,10 @@ public class SaveRowButtonResult implements ButtonTypeInter { ...@@ -94,6 +98,10 @@ public class SaveRowButtonResult implements ButtonTypeInter {
sb.append(" var _self = this;"); sb.append(" var _self = this;");
sb.append(" var id = getId();"); sb.append(" var id = getId();");
sb.append(" if ($('#procId').val()!=\"\") { ");
sb.append(" UICtrl.addGridRow(").append(btnAttr.getEntityName()).append("GridManager,{id:''} );");
sb.append(" } else { ");
if (btnAttr.getIsForm()==1){ //是表单生成器 则调用统一的添加方法 if (btnAttr.getIsForm()==1){ //是表单生成器 则调用统一的添加方法
sb.append(" var url= '/dataManage/saveDataRecord.ajax';"); sb.append(" var url= '/dataManage/saveDataRecord.ajax';");
sb.append(" if (grid==1) { url+='?btntype=1'; } "); sb.append(" if (grid==1) { url+='?btntype=1'; } ");
...@@ -117,6 +125,49 @@ public class SaveRowButtonResult implements ButtonTypeInter { ...@@ -117,6 +125,49 @@ public class SaveRowButtonResult implements ButtonTypeInter {
sb.append(" });"); sb.append(" });");
sb.append(" }"); sb.append(" }");
sb.append(" } ");
sb.append(Constant.SYSMBOL_LINE);
//增加带有流程的获取数据保存的参数
sb.append("function getExtendedData(processAction) { ");
//回退、打回、转交时,不需要验证必填项是否已经填写;
sb.append("if (processAction == ProcessAction.BACK||processAction == ProcessAction.REPLENISH")
.append(" ||processAction == ProcessAction.TRANSMIT) { ");
//不验证
sb.append(" $('#submitForm').attr('check', false); } ");
sb.append("const isAllData = $('#oldId') || !getId();");
sb.append("var extendedData = {};");
//sb.append("var _grid = UICtrl.getGridManager('").append(btnAttr.getEntityName()).append("GridManager');");
sb.append("var detailData = DataUtil.getGridData({ ");
sb.append(" isAllData : true,");
sb.append(" gridManager :").append(btnAttr.getEntityName()).append("GridManager");
sb.append(" });");
sb.append(" if(detailData && detailData instanceof Array && detailData.length >0){");
sb.append(" if (!detailData) {");
sb.append(" return false;");
sb.append(" } ");
sb.append("extendedData.").append(btnAttr.getEntityName()).append("data=Public.encodeJSONURI(detailData);");
sb.append(" }");
sb.append("return extendedData;");
sb.append("}");
sb.append(Constant.SYSMBOL_LINE);
//含有流程 保存前的回调方法
sb.append("function beforeSave() { ");
sb.append("}");
sb.append(Constant.SYSMBOL_LINE);
//含有流程 保存后的回调方法
sb.append("function afterSave(bizData) {");
//sb.append(" var mid=getId(); ");
sb.append(" var params=[];");
sb.append(btnAttr.getEntityName()).append("GridManager.options.url=web_app.name + '/dataManage/slicedQueryDataRecordDetail.ajax?id='+getId();");
//sb.append(btnAttr.getEntityName()).append("GridManager.isDataChanged=flase;"); //但是页面有提示?
sb.append("UICtrl.gridSearch(").append(btnAttr.getEntityName()).append("GridManager, params);");
sb.append("}");
sb.append(Constant.SYSMBOL_LINE); sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString()); list.add(sb.toString());
......
...@@ -13,7 +13,6 @@ public class UpdateButtonResult implements ButtonTypeInter { ...@@ -13,7 +13,6 @@ public class UpdateButtonResult implements ButtonTypeInter {
public List<String> processOutResult(StringBuffer sb,ButtonAttributeVO btnAttributes){ public List<String> processOutResult(StringBuffer sb,ButtonAttributeVO btnAttributes){
List <String> list=new ArrayList<String>(); List <String> list=new ArrayList<String>();
sb.append("//编辑方法").append(Constant.SYSMBOL_LINE);
sb.append(" function updateHandler(){"); sb.append(" function updateHandler(){");
//如果是配置了流程 则通过Ifame打开,发起流程页面 //如果是配置了流程 则通过Ifame打开,发起流程页面
/*UICtrl.addTabItem({ /*UICtrl.addTabItem({
...@@ -29,6 +28,7 @@ public class UpdateButtonResult implements ButtonTypeInter { ...@@ -29,6 +28,7 @@ public class UpdateButtonResult implements ButtonTypeInter {
sb.append(" }"); sb.append(" }");
sb.append(" }"); sb.append(" }");
sb.append(" "); sb.append(" ");
sb.append(Constant.SYSMBOL_LINE);
sb.append(" function doShowUpdateDialog(id) {"); sb.append(" function doShowUpdateDialog(id) {");
//Random random=new Random(3); //Random random=new Random(3);
...@@ -63,7 +63,7 @@ public class UpdateButtonResult implements ButtonTypeInter { ...@@ -63,7 +63,7 @@ public class UpdateButtonResult implements ButtonTypeInter {
sb.append(" }"); sb.append(" }");
sb.append(" "); sb.append(" ");
sb.append(" }"); sb.append(" }");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString()); list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols())); // list.add(Integer.toString(fieldAttributes.getCurrCols()));
return list; return list;
......
...@@ -39,13 +39,13 @@ public class ViewButtonResult implements ButtonTypeInter { ...@@ -39,13 +39,13 @@ public class ViewButtonResult implements ButtonTypeInter {
sb.append(" }"); sb.append(" }");
sb.append(" "); sb.append(" ");
sb.append(Constant.SYSMBOL_LINE);
sb.append(" function initReadOnly(){"); sb.append(" function initReadOnly(){");
sb.append(" $('input,select,textarea', $('form[name=\"").append(Utils.toLowerCaseFirstOne(btnAttributes.getEntityName())).append("Form\"]')).attr('readonly', true);"); sb.append(" $('input,select,textarea', $('form[name=\"").append(Utils.toLowerCaseFirstOne(btnAttributes.getEntityName())).append("Form\"]')).attr('readonly', true);");
sb.append(" $(\"#ok\").hide();"); sb.append(" $(\"#ok\").hide();");
sb.append(" }"); sb.append(" }");
sb.append(" "); sb.append(" ");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString()); list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols())); // list.add(Integer.toString(fieldAttributes.getCurrCols()));
return list; return list;
......
...@@ -46,6 +46,8 @@ public interface DataRecordApplication { ...@@ -46,6 +46,8 @@ public interface DataRecordApplication {
//查询明细表数据 //查询明细表数据
Map<String, Object> queryDataRecordDetail(DataRecordQueryRequest queryRequest); Map<String, Object> queryDataRecordDetail(DataRecordQueryRequest queryRequest);
//保存行明细数据
Map<String, Object> saveRowDataRecordDetail(String formId,String mid,String subTable, List<PubDataRecord> detailData);
//保存明细数据 //保存明细数据
Map<String,Object> saveDataRecordDetail(DataRecordQueryRequest queryRequest, List <String> hiddenFieldList,List<PubDataRecord> detailData); Map<String,Object> saveDataRecordDetail(DataRecordQueryRequest queryRequest, List <String> hiddenFieldList,List<PubDataRecord> detailData);
......
...@@ -11,6 +11,8 @@ import com.huigou.uasp.builder.vo.PubDataRecord; ...@@ -11,6 +11,8 @@ import com.huigou.uasp.builder.vo.PubDataRecord;
import com.huigou.uasp.data.application.DataRecordApplication; import com.huigou.uasp.data.application.DataRecordApplication;
import com.huigou.uasp.data.domain.query.DataRecordQueryRequest; import com.huigou.uasp.data.domain.query.DataRecordQueryRequest;
import com.huigou.uasp.form.application.CommonUtilApplication; import com.huigou.uasp.form.application.CommonUtilApplication;
import com.huigou.uasp.form.domain.model.SafFormslist;
import com.huigou.uasp.form.repository.SafFormslistRepository;
import com.huigou.uasp.model.domain.query.DbTablesQueryRequest; import com.huigou.uasp.model.domain.query.DbTablesQueryRequest;
import com.huigou.uasp.util.ComUtils; import com.huigou.uasp.util.ComUtils;
import com.huigou.uasp.util.Constant; import com.huigou.uasp.util.Constant;
...@@ -29,6 +31,7 @@ import java.sql.CallableStatement; ...@@ -29,6 +31,7 @@ import java.sql.CallableStatement;
import java.sql.Connection; import java.sql.Connection;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@Service("dataRecordApplication") @Service("dataRecordApplication")
...@@ -39,6 +42,9 @@ public class DataRecordApplicationImpl extends BaseApplication implements DataRe ...@@ -39,6 +42,9 @@ public class DataRecordApplicationImpl extends BaseApplication implements DataRe
@Autowired @Autowired
private CommonUtilApplication commonUtilApplication; private CommonUtilApplication commonUtilApplication;
@Autowired
private SafFormslistRepository safFormslistRepository;
private QueryDescriptor getQueryDescriptor(String queryName) { private QueryDescriptor getQueryDescriptor(String queryName) {
if ("".equals(queryName)) { if ("".equals(queryName)) {
queryName = "queryHiddenFieldBySearchSQL"; queryName = "queryHiddenFieldBySearchSQL";
...@@ -238,7 +244,7 @@ public class DataRecordApplicationImpl extends BaseApplication implements DataRe ...@@ -238,7 +244,7 @@ public class DataRecordApplicationImpl extends BaseApplication implements DataRe
} }
//保存实体 //保存主表实体
@Override @Override
@Transactional @Transactional
public String saveDataRecord(DataRecordQueryRequest queryRequest,Map<String, Object> datamap){ public String saveDataRecord(DataRecordQueryRequest queryRequest,Map<String, Object> datamap){
...@@ -668,15 +674,109 @@ public class DataRecordApplicationImpl extends BaseApplication implements DataRe ...@@ -668,15 +674,109 @@ public class DataRecordApplicationImpl extends BaseApplication implements DataRe
} }
//保存明细行数据
//参数: formId,mid,subtable,List<PubDataRecord>
public Map<String, Object> saveRowDataRecordDetail(String formId,String mid,String subTable,List<PubDataRecord> detailData){
DataRecordQueryRequest queryRequest =new DataRecordQueryRequest();//sdo.toQueryRequest(DataRecordQueryRequest.class);
SafFormslist form = this.safFormslistRepository.findOne(formId);
queryRequest.setId(mid);//主表ID
queryRequest.setFormId(formId);
queryRequest.setSubTab(subTable);
String tableNames=commonUtilApplication.getTablesByFormId(formId,1);
String tableName=tableNames.split(",")[0]; //取第一个是主表
queryRequest.setMaiTab(tableName);
//System.out.println("saveRowDetail================="+detailData.get(0).getField1()+"=pid="+sdo.getString("mid").toString()+"==="+detailData.get(0).getId());
// 存在数据字典的 将值字段 转换到保存的字段
List<PubDataRecord> newDetailData = new ArrayList<PubDataRecord>();
//获取所有隐藏的列
// String subTable = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, queryRequest.getSubTab());//转成下划线
DbTablesQueryRequest dbqueryRequest = new DbTablesQueryRequest();
dbqueryRequest.setTableName(subTable.toUpperCase());
List<String> hiddenFieldList = commonUtilApplication.queryTableHiddenFields(dbqueryRequest, 0); //0表示返回带下划线的 字段
//获取检索SQL返回的隐藏字段
queryRequest.setFormNo(form.getFormNo());
queryRequest.setSaveMode(form.getSaveMode());
// List <String> hiddenFieldList=getDetailHiddenFields(queryRequest);
PubDataRecord entity = null;
Map<String, Object> map = null, hiddenMap = null;
String field = ""; boolean allEmptyVal = true;
for (PubDataRecord pubDataRecord:detailData) {
map=Utils.convertBeanToMap(pubDataRecord,"field");;
entity = pubDataRecord;
//判断所有字段是否都是空值 ,如果是则不保存
allEmptyVal = true;
for (Map.Entry<String, Object> entry : map.entrySet()) { //遍历所有数据字段
if (entry.getKey().toString().startsWith("field") &&
!"".equals(entry.getValue().toString())) {
allEmptyVal = false;
break;
}
}
if (!allEmptyVal) {
hiddenMap = new HashMap<String, Object>();
for (Map.Entry<String, Object> entry : map.entrySet()) { //遍历所有数据字段
// System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
if (entry.getKey().toString().endsWith("_dictcode")) { ///来源数据字典的字段
field = entry.getKey().toString();
field = field.substring(0, field.length() - 9);
ReflectionUtil.invokeSet(entity, field, entry.getValue());
} else { //查找是否存在隐藏列
if (!entry.getKey().toString().startsWith("field")) { //不是以field开头的 注意元数据名称不能以field开头
field = entry.getKey().toString();
if (entry.getValue() != null && !"".equals(entry.getValue())) {
// System.out.println("hiddenField Key = " + entry.getKey() + ", Value = " + entry.getValue());
for (String hiddenField : hiddenFieldList) {
field = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, field);//转成下划线
if (field.equals(hiddenField)) {
hiddenMap.put(field, entry.getValue());
}
}
}
}
}
}
entity.setHiddField(hiddenMap);
newDetailData.add(entity);
}
}
//queryRequest param: mainTab,subtab,formId,id ,savemode ??
Map<String, Object> data = new HashMap<String, Object>();
if (!org.apache.commons.lang.StringUtils.isEmpty(mid)&&newDetailData.size()>0) { //主表ID存在
//System.out.println("s-====================="+newDetailData.size()+"=="+newDetailData.get(0).getId());
data = this.saveDataRecordDetail(queryRequest, hiddenFieldList, newDetailData);
//data.put("result", backStr);
}
return data;
}
//保存明细数据 //保存明细数据
@Override @Override
@Transactional @Transactional
//参数: mainTab,subTab,formId,id,savemode,数据列表
public Map<String,Object> saveDataRecordDetail(DataRecordQueryRequest queryRequest,List <String> hiddenFieldList,List<PubDataRecord> detailData) { public Map<String,Object> saveDataRecordDetail(DataRecordQueryRequest queryRequest,List <String> hiddenFieldList,List<PubDataRecord> detailData) {
Assert.hasText(queryRequest.getId(), Constant.ID_NOT_BLANK); Assert.hasText(queryRequest.getId(), Constant.ID_NOT_BLANK);
// String mainTable = queryRequest.getMaiTab();//commonDataService.getTableName(queryRequest.getFormId()); // String mainTable = queryRequest.getMaiTab();//commonDataService.getTableName(queryRequest.getFormId());
String maiTable=CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE,queryRequest.getMaiTab()); //转成下划线 String maiTable=queryRequest.getMaiTab();
String subTable = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, queryRequest.getSubTab());//转成下划线 if (queryRequest.getMaiTab().indexOf("_")<0) { //不存在下划线的
maiTable = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, queryRequest.getMaiTab()); //转成下划线
}
String subTable =queryRequest.getSubTab();
if (queryRequest.getSubTab().indexOf("_")<0) { //不存在下划线的
subTable = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, queryRequest.getSubTab());//转成下划线
}
String sql = "",backStr="success",backIDs=""; String sql = "",backStr="success",backIDs="";
Map <String,Object>backmap=new HashMap<String,Object>(); Map <String,Object>backmap=new HashMap<String,Object>();
try { try {
......
...@@ -122,6 +122,9 @@ public class DataManageController extends CommonController { ...@@ -122,6 +122,9 @@ public class DataManageController extends CommonController {
id = sdo.getBizId(); id = sdo.getBizId();
sdo.putProperty("id", id); sdo.putProperty("id", id);
} }
if (StringUtils.isNotBlank(sdo.getString("procId"))){
this.putAttribute("procId",sdo.getString("procId"));
}
String formNo = sdo.getString("formNo"); String formNo = sdo.getString("formNo");
DataRecordQueryRequest queryRequest =sdo.toQueryRequest(DataRecordQueryRequest.class); DataRecordQueryRequest queryRequest =sdo.toQueryRequest(DataRecordQueryRequest.class);
...@@ -374,92 +377,23 @@ public class DataManageController extends CommonController { ...@@ -374,92 +377,23 @@ public class DataManageController extends CommonController {
/* /*
* 保存数据明细列表 * 保存明细数据列表
* * 参数:formId,主表Id,当前明细表名,明细数据
*/ */
public String saveRowDataRecordDetail() { public String saveRowDataRecordDetail() {
SDO sdo = this.getSDO(); SDO sdo = this.getSDO();
DataRecordQueryRequest queryRequest = sdo.toQueryRequest(DataRecordQueryRequest.class); DataRecordQueryRequest queryRequest = sdo.toQueryRequest(DataRecordQueryRequest.class);
// String subTab=CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE,queryRequest.getSubTab()); //转成下划线
//queryRequest.setMaiTab(maiTab);
// queryRequest.setSubTab(subTab);
SafFormslist form = this.safFormslistRepository.findOne(queryRequest.getFormId());
List<PubDataRecord> detailData = sdo.getList("detailData", PubDataRecord.class); List<PubDataRecord> detailData = sdo.getList("detailData", PubDataRecord.class);
queryRequest.setId(sdo.getString("mid").toString());//主表ID queryRequest.setId(sdo.getString("mid").toString());//主表ID
//System.out.println("saveRowDetail================="+detailData.get(0).getField1()+"=pid="+sdo.getString("mid").toString()+"==="+detailData.get(0).getId());
// 存在数据字典的 将值字段 转换到保存的字段
List<PubDataRecord> newDetailData = new ArrayList<PubDataRecord>();
List<Object> listold = sdo.getList("detailData");
//获取所有隐藏的列
String subTable = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, queryRequest.getSubTab());//转成下划线
DbTablesQueryRequest dbqueryRequest = new DbTablesQueryRequest();
dbqueryRequest.setTableName(subTable.toUpperCase());
List<String> hiddenFieldList = commonUtilApplication.queryTableHiddenFields(dbqueryRequest, 0); //0表示返回带下划线的 字段
//获取检索SQL返回的隐藏字段
queryRequest.setFormNo(form.getFormNo());
queryRequest.setSaveMode(form.getSaveMode());
// List <String> hiddenFieldList=getDetailHiddenFields(queryRequest);
PubDataRecord entity = null;
Map<String, Object> map = null, hiddenMap = null;
String field = "";
for (int i = 0; i < listold.size(); i++) {
map = (Map<String, Object>) listold.get(i);
entity = detailData.get(i);
//判断所有字段是否都是空值 ,如果是则不保存
boolean allEmptyVal = true;
for (Map.Entry<String, Object> entry : map.entrySet()) { //遍历所有数据字段
if (entry.getKey().toString().startsWith("field") &&
!"".equals(entry.getValue().toString())) {
allEmptyVal = false;
break;
}
}
if (!allEmptyVal) {
hiddenMap = new HashMap<String, Object>(); Map<String, Object> data =this.dataRecordApplication.saveRowDataRecordDetail(queryRequest.getFormId(),sdo.getString("mid"),
queryRequest.getSubTab(),detailData);
for (Map.Entry<String, Object> entry : map.entrySet()) { //遍历所有数据字段
// System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
if (entry.getKey().toString().endsWith("_dictcode")) { ///来源数据字典的字段
field = entry.getKey().toString();
field = field.substring(0, field.length() - 9);
ReflectionUtil.invokeSet(entity, field, entry.getValue());
} else { //查找是否存在隐藏列
if (!entry.getKey().toString().startsWith("field")) { //不是以field开头的 注意元数据名称不能以field开头
field = entry.getKey().toString();
if (entry.getValue() != null && !"".equals(entry.getValue())) {
// System.out.println("hiddenField Key = " + entry.getKey() + ", Value = " + entry.getValue());
for (String hiddenField : hiddenFieldList) {
field = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, field);//转成下划线
if (field.equals(hiddenField)) {
hiddenMap.put(field, entry.getValue());
}
}
}
}
}
}
entity.setHiddField(hiddenMap);
newDetailData.add(entity);
}
}
Map<String, Object> data = new HashMap<String, Object>();
if (!StringUtils.isEmpty(sdo.getString("id"))&&newDetailData.size()>0) { //主表ID存在
//System.out.println("s-====================="+newDetailData.size()+"=="+newDetailData.get(0).getId());
data = this.dataRecordApplication.saveDataRecordDetail(queryRequest, hiddenFieldList, newDetailData);
//data.put("result", backStr);
}
return toResult(data); return toResult(data);
} }
//获取信息明细表中检索SQL的隐藏字段 //获取信息明细表中检索SQL的隐藏字段
public List<String> getDetailHiddenFields(DataRecordQueryRequest queryRequest) { public List<String> getDetailHiddenFields(DataRecordQueryRequest queryRequest) {
//存在检索SQL 需要获得返回的隐藏字段的值 //存在检索SQL 需要获得返回的隐藏字段的值
......
...@@ -48,4 +48,10 @@ public interface CommonUtilApplication { ...@@ -48,4 +48,10 @@ public interface CommonUtilApplication {
//获取流程定义的信息 //获取流程定义的信息
String getProcDefinitionByFormNo(String formNo); String getProcDefinitionByFormNo(String formNo);
/*
* 查询表单返回的值
* 返回 List <Map>
*/
List<Map<String, Object>> queryFormTableDatas(String sql);
} }
...@@ -2,7 +2,8 @@ package com.huigou.uasp.form.application; ...@@ -2,7 +2,8 @@ package com.huigou.uasp.form.application;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.huigou.uasp.form.domain.model.FormAttribute; import com.huigou.uasp.builder.vo.ParamFormVO;
import com.huigou.uasp.form.domain.model.FormAttribute;
import com.huigou.uasp.form.domain.model.FormButtonVO; import com.huigou.uasp.form.domain.model.FormButtonVO;
import com.huigou.uasp.form.domain.model.PropertyDefines; import com.huigou.uasp.form.domain.model.PropertyDefines;
import com.huigou.uasp.form.domain.model.SafFormslist; import com.huigou.uasp.form.domain.model.SafFormslist;
...@@ -76,4 +77,8 @@ public interface SafFormslistApplication { ...@@ -76,4 +77,8 @@ public interface SafFormslistApplication {
//查询表单配置函数或过程的 内容 //查询表单配置函数或过程的 内容
Map<String, Object> queryFormFunctionOrProcduceContent(FormParameterQueryRequest queryRequest); Map<String, Object> queryFormFunctionOrProcduceContent(FormParameterQueryRequest queryRequest);
//获取明细相关对象信息
ParamFormVO getDetailTables(SafFormsQueryRequest queryRequest, ParamFormVO paraForms);
//获取字段属性
ParamFormVO getFieldAttributes(SafFormsQueryRequest queryRequest);
} }
...@@ -257,4 +257,29 @@ public class CommonUtilApplicationImpl extends BaseApplication implements Common ...@@ -257,4 +257,29 @@ public class CommonUtilApplicationImpl extends BaseApplication implements Common
} }
return procId; return procId;
} }
/*
* 公共查询表单数据的值方法
* 返回 List <Map<String, Object>>
*/
@Override
public List<Map<String, Object>> queryFormTableDatas(String sql){
Map<String, Object> mapData = new HashMap<String, Object>();
SafFormsQueryRequest queryRequest=new SafFormsQueryRequest();
QueryModel queryModel = this.sqlExecutorDao.getQueryModel(getQueryDescriptor("queryFormTableFields"), queryRequest);
queryModel.setPageSize(101);//默认100
queryModel.setPageIndex(1);
sql+=" order by id ";
queryModel.setSortFieldName("");
queryModel.setSql(sql);
if ("all".equals(queryModel.getExportType())) {//导出Excel
queryModel.setExportType(null);
}
mapData = this.sqlExecutorDao.executeSlicedQuery(queryModel);
// @SuppressWarnings("unchecked")
return (List<Map<String, Object>>) mapData.get("Rows");
}
} }
...@@ -764,7 +764,7 @@ public void deleteSyfFormsByIds(List<String> ids) { ...@@ -764,7 +764,7 @@ public void deleteSyfFormsByIds(List<String> ids) {
/* /*
* 生成页面文件 * 生成表单的页面文件
* queryRequest:需要参数formNo * queryRequest:需要参数formNo
*/ */
public String needGenerateFile(String formNo) { public String needGenerateFile(String formNo) {
...@@ -803,7 +803,7 @@ public void deleteSyfFormsByIds(List<String> ids) { ...@@ -803,7 +803,7 @@ public void deleteSyfFormsByIds(List<String> ids) {
List <String>hiddenField=new ArrayList<String>(); //默认隐藏字段 List <String>hiddenField=new ArrayList<String>(); //默认隐藏字段
// hiddenField.add("id"); // hiddenField.add("id");
// hiddenField.add("formId"); // hiddenField.add("formId");
System.out.println("safFormslist.getPublished()==="+safFormslist.getPublished()); //System.out.println("safFormslist.getPublished()==="+safFormslist.getPublished());
//主表添加流程所需要的字段 //主表添加流程所需要的字段
if (safFormslist.getPublished()==null||(safFormslist.getPublished()!=null&&safFormslist.getPublished()==0)) { if (safFormslist.getPublished()==null||(safFormslist.getPublished()!=null&&safFormslist.getPublished()==0)) {
dbTableService.addProcessFields(tableName); dbTableService.addProcessFields(tableName);
...@@ -937,7 +937,7 @@ public void deleteSyfFormsByIds(List<String> ids) { ...@@ -937,7 +937,7 @@ public void deleteSyfFormsByIds(List<String> ids) {
paraForms.setFormPath(queryRequest.getFormNo()); paraForms.setFormPath(queryRequest.getFormNo());
//判断是否存在明细表 //判断是否存在明细表
List<Map<String, Object>> multsList =new ArrayList<Map<String, Object>>(); /* List<Map<String, Object>> multsList =new ArrayList<Map<String, Object>>();
String mainTableName=queryRequest.getTableName().toLowerCase();//获取主表 String mainTableName=queryRequest.getTableName().toLowerCase();//获取主表
queryRequest.setTableType(2); queryRequest.setTableType(2);
multsList=this.queryExistTables(queryRequest); multsList=this.queryExistTables(queryRequest);
...@@ -967,6 +967,49 @@ public void deleteSyfFormsByIds(List<String> ids) { ...@@ -967,6 +967,49 @@ public void deleteSyfFormsByIds(List<String> ids) {
} }
paraForms.setDetails(details); paraForms.setDetails(details);
} }
*/
return getDetailTables(queryRequest,paraForms);
//return paraForms;
}
//判断是否存在明细表的情况
//queryRequest.getFormNo()
//参数: id:formId,formNo,tableName
@Override
public ParamFormVO getDetailTables(SafFormsQueryRequest queryRequest,ParamFormVO paraForms){
//判断是否存在明细表
List<Map<String, Object>> multsList =new ArrayList<Map<String, Object>>();
String mainTableName=queryRequest.getTableName().toLowerCase();//获取主表
//queryRequest.setFormNo(formNo);
queryRequest.setTableType(2);
queryRequest.setTableName(mainTableName);
multsList=this.queryExistTables(queryRequest);
if (multsList != null && multsList.size() > 0) {//多值则产生明细表
ParamFormVO paramVO = new ParamFormVO();
List<String> hiddenField=new ArrayList<String>();
hiddenField.add("id");
hiddenField.add("parentId");
List<ParamFormVO> details = new ArrayList<ParamFormVO>();
Map<String, Object> map =null;
List<Map<String, Object>> list=null;
for (int i = 0; i < multsList.size(); i++) {
map = (Map<String, Object>) multsList.get(i);
// queryRequest.setAttrId(map.get("id").toString()); 05.18.2020 lxh close
queryRequest.setTableName(map.get("tableName").toString());
list = this.commonUtilApplication.queryDataRecordMultsFields(queryRequest.getId(),map.get("tableName").toString());
paramVO = Utils.composeAttributes(list, map.get("tableName").toString(), map.get("name").toString(), hiddenField);
paramVO.setDisplayFieldnames(paramVO.getFieldChs());
paramVO.setDisplayFields(paramVO.getFieldEns());
paramVO.setDisplayFieldTypes(paramVO.getValidatorTypes());
paramVO.setSrcPath(pagePath);
paramVO.setSelectCustoms(paraForms.getSelectCustoms());
paramVO.setIsform(1); //是表单生成器
paramVO.setFormPath(queryRequest.getFormNo());
paramVO.setMainTableName(mainTableName);
details.add(paramVO);
}
paraForms.setDetails(details);
}
return paraForms; return paraForms;
} }
......
...@@ -753,10 +753,11 @@ public String queryTableProperty(){ ...@@ -753,10 +753,11 @@ public String queryTableProperty(){
tableName=tableName.split(",")[0]; //取第一个主表的 名称 tableName=tableName.split(",")[0]; //取第一个主表的 名称
DbTablesQueryRequest queryRequest = sdo.toQueryRequest(DbTablesQueryRequest.class); DbTablesQueryRequest queryRequest = sdo.toQueryRequest(DbTablesQueryRequest.class);
SafFormslist form=this.safFormslistRepository.findOne(id); SafFormslist form=this.safFormslistRepository.findOne(id);
queryRequest.setTableName(tableName);
//查询数据库表的列 根据数据库字段 要支持多种类型数据库 需要修改 ???? //查询数据库表的列 根据数据库字段 要支持多种类型数据库 需要修改 ????
// dbtables.xml-->dbTables_columns // dbtables.xml-->dbTables_columns
List<Map<String, Object>> fieldList=this.dbTablesApplication.queryDbTableColumns(queryRequest); //List<Map<String, Object>> fieldList=this.dbTablesApplication.queryDbTableColumns(queryRequest); //旧的查询列字段方法
List<Map<String, Object>> singleList = commonUtilApplication.queryDataRecordSingleFields(queryRequest.getId(),queryRequest.getTableName());
String backStr="1"; String backStr="1";
//tableName //tableName
...@@ -776,7 +777,7 @@ public String queryTableProperty(){ ...@@ -776,7 +777,7 @@ public String queryTableProperty(){
ParamFormVO paraForm=null; ParamFormVO paraForm=null;
try { try {
List <FormSearchSql> customlists=formSearchSqlRepository.searchSqlByFormNo(form.getFormNo()); /* List <FormSearchSql> customlists=formSearchSqlRepository.searchSqlByFormNo(form.getFormNo());
List <SeleListCustomVO> listNew=new ArrayList<SeleListCustomVO>(); List <SeleListCustomVO> listNew=new ArrayList<SeleListCustomVO>();
SeleListCustomVO customVO=null; SeleListCustomVO customVO=null;
String backFields="",paramSourceFields=""; String backFields="",paramSourceFields="";
...@@ -794,9 +795,24 @@ public String queryTableProperty(){ ...@@ -794,9 +795,24 @@ public String queryTableProperty(){
listNew.add(customVO); listNew.add(customVO);
} }
pageMap.put("selectCustcoms", listNew); pageMap.put("selectCustcoms", listNew);
*/
//组装参数对象 //组装参数对象
paraForm=this.getParamFormVO(pageMap); //paraForm=this.getParamFormVO(pageMap); //旧的方法 作废
//paraForm = Utils.omposeAttributes(singleList, "", "", null);
paraForm=safFormsApplication.getFieldAttributes(formQueryRequest);
pageMap.put("tableName",tableName);
this.addParamByParamForm(paraForm,pageMap);
/*paraForm.setIsform(0);
paraForm.setUploadPath(SystemCache.getParameter("uploadPath", String.class)+"/source");
paraForm.setPackageName(pageMap.get("packageName").toString());
paraForm.setTableName(tableName);
paraForm.setFormPath(pageMap.get("formPath").toString());
paraForm.setFormName(pageMap.get("formName").toString());
paraForm.setBtnNames(pageMap.get("formbuttonsName").toString().split(","));
paraForm.setBtnMethodNames(pageMap.get("formbuttonsMethodName").toString().split(","));
*/
//获取当前的明细列表配置信息
// this.safFormsApplication.getDetailTables(formQueryRequest,paraForm);
File file=null; File file=null;
String paths[]=packageName.split("\\."); String paths[]=packageName.split("\\.");
...@@ -818,28 +834,38 @@ public String queryTableProperty(){ ...@@ -818,28 +834,38 @@ public String queryTableProperty(){
// CompileUtil cputil=new CompileUtil(); // CompileUtil cputil=new CompileUtil();
// BuildFilerInter bfile=null; // BuildFilerInter bfile=null;
//生成实体domain、Query //生成实体domain、Query
if (fieldList.size()>0){ // if (singleList.size()>0){ //
backStr=buildTypeClass.getBuildClass(Constant.BUILD_ENTITY).generateFile(paraForm,fieldList); backStr=buildTypeClass.getBuildClass(Constant.BUILD_ENTITY).generateFile(paraForm,singleList);
backStr=buildTypeClass.getBuildClass(Constant.BUILD_QUERYREQUEST).generateFile(paraForm,null); backStr=buildTypeClass.getBuildClass(Constant.BUILD_QUERYREQUEST).generateFile(paraForm,null);
// bfile.generateFile("",null);
//backStr=new BuildEntityFile(paraForm, fieldList,cputil).generateFile();
// backStr=new BuildQueryRequestFile(paraForm,cputil).generateFile();
}
//生成repository
backStr=buildTypeClass.getBuildClass(Constant.BUILD_REPOSITORY).generateFile(paraForm,null); backStr=buildTypeClass.getBuildClass(Constant.BUILD_REPOSITORY).generateFile(paraForm,null);
//生成application
backStr=buildTypeClass.getBuildClass(Constant.BUILD_APPLICATION).generateFile(paraForm,null); backStr=buildTypeClass.getBuildClass(Constant.BUILD_APPLICATION).generateFile(paraForm,null);
backStr=buildTypeClass.getBuildClass(Constant.BUILD_APPLICATION).generateFile(paraForm,null);
//生成Controller
backStr=buildTypeClass.getBuildClass(Constant.BUILD_CONTROLLER).generateFile(paraForm,null); backStr=buildTypeClass.getBuildClass(Constant.BUILD_CONTROLLER).generateFile(paraForm,null);
if (paraForm.getDetails().size()>0) { //存在明细表
List<ParamFormVO> pFormDetails = paraForm.getDetails();
for (ParamFormVO pFormDetailVO : pFormDetails) {
pageMap.put("formbuttonsName",new String[]{"新增行","删除行","保存行"}); //明细页面默认按钮
pageMap.put("formbuttonsMethodName",new String[]{"addRow","deleteRow","saveRow"});
addParamByParamForm(pFormDetailVO, pageMap);
singleList = commonUtilApplication.queryDataRecordSingleFields(queryRequest.getId(), pFormDetailVO.getTableName());
backStr=buildTypeClass.getBuildClass(Constant.BUILD_ENTITY).generateFile(pFormDetailVO, singleList);
backStr=buildTypeClass.getBuildClass(Constant.BUILD_QUERYREQUEST).generateFile(pFormDetailVO,null);
backStr=buildTypeClass.getBuildClass(Constant.BUILD_REPOSITORY).generateFile(pFormDetailVO,null);
backStr=buildTypeClass.getBuildClass(Constant.BUILD_APPLICATION).generateFile(pFormDetailVO,null);
backStr=buildTypeClass.getBuildClass(Constant.BUILD_APPLICATION).generateFile(pFormDetailVO,null);
backStr=buildTypeClass.getBuildClass(Constant.BUILD_CONTROLLER).generateFile(pFormDetailVO,null);
}
}
}
//生成页面文件 //生成页面文件
String filePaths[]=formPath.split("/"); String filePaths[]=formPath.split("/");
srcPath = paraForm.getUploadPath(); srcPath = paraForm.getUploadPath();
//path = this.getClass().getResource("/").getPath();
// String webPath=path.substring(1,srcPath.length()-16);
for (int i=0;i<filePaths.length;i++){ for (int i=0;i<filePaths.length;i++){
file=new File(srcPath+"/"+filePaths[i]); file=new File(srcPath+"/"+filePaths[i]);
if (!file.exists()){ if (!file.exists()){
...@@ -850,14 +876,9 @@ public String queryTableProperty(){ ...@@ -850,14 +876,9 @@ public String queryTableProperty(){
//查询页面表单元素 //查询页面表单元素
paraForm.setSrcPath(srcPath); paraForm.setSrcPath(srcPath);
backStr=buildTypeClass.getBuildClass(Constant.BUILD_PAGELIST).generateFile(paraForm,null); backStr=buildTypeClass.getBuildClass(Constant.BUILD_PAGELIST).generateFile(paraForm,null);
backStr=buildTypeClass.getBuildClass(Constant.BUILD_PAGEDETAIL).generateFile(paraForm,null); backStr=buildTypeClass.getBuildClass(Constant.BUILD_PAGEDETAIL).generateFile(paraForm,null);
backStr=buildTypeClass.getBuildClass(Constant.BUILD_PAGEJS).generateFile(paraForm,null); backStr=buildTypeClass.getBuildClass(Constant.BUILD_PAGEJS).generateFile(paraForm,null);
backStr=buildTypeClass.getBuildClass(Constant.BUILD_XML).generateFile(paraForm,null); backStr=buildTypeClass.getBuildClass(Constant.BUILD_XML).generateFile(paraForm,null);
} catch (Exception e) { } catch (Exception e) {
...@@ -867,6 +888,19 @@ public String queryTableProperty(){ ...@@ -867,6 +888,19 @@ public String queryTableProperty(){
return toResult(backStr); return toResult(backStr);
} }
//生成代码 添加默认参数
public void addParamByParamForm(ParamFormVO paramFormVO,Map <String,Object>pageMap){
paramFormVO.setIsform(0);
paramFormVO.setUploadPath(SystemCache.getParameter("uploadPath", String.class)+"/source");
paramFormVO.setPackageName(pageMap.get("packageName").toString());
paramFormVO.setTableName(pageMap.get("tableName").toString());
paramFormVO.setFormPath(pageMap.get("formPath").toString());
paramFormVO.setFormName(pageMap.get("formName").toString());
paramFormVO.setBtnNames(pageMap.get("formbuttonsName").toString().split(","));
paramFormVO.setBtnMethodNames(pageMap.get("formbuttonsMethodName").toString().split(","));
}
/* /*
* 表单发布 (生成页面文件) * 表单发布 (生成页面文件)
*/ */
...@@ -883,7 +917,7 @@ public String queryTableProperty(){ ...@@ -883,7 +917,7 @@ public String queryTableProperty(){
return toResult(map); return toResult(map);
} }
//代码生成器-->组装参数对象 //代码生成器-->组装参数对象 旧的方法 作废
public ParamFormVO getParamFormVO(Map <String, Object>pageMap){ public ParamFormVO getParamFormVO(Map <String, Object>pageMap){
ParamFormVO paraForm = new ParamFormVO(); ParamFormVO paraForm = new ParamFormVO();
try { try {
......
package com.huigou.uasp.bmp.intercept; package com.huigou.uasp.bmp.intercept;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.huigou.context.ContextUtil; import com.huigou.context.ContextUtil;
import com.huigou.context.Operator; import com.huigou.context.Operator;
import com.huigou.context.ThreadLocalUtil; import com.huigou.context.ThreadLocalUtil;
...@@ -22,10 +24,7 @@ import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; ...@@ -22,10 +24,7 @@ import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.Collection; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* 系统权限获取 页面元素使用 * 系统权限获取 页面元素使用
...@@ -60,29 +59,15 @@ public class ExecuteContextInterceptor extends HandlerInterceptorAdapter { ...@@ -60,29 +59,15 @@ public class ExecuteContextInterceptor extends HandlerInterceptorAdapter {
// 如果界面元素的formFieldId不为空,则说明该界面元素是与表单字段进行的绑定,这时需要将界面元素的code替换为:field+表单字段排序 // 如果界面元素的formFieldId不为空,则说明该界面元素是与表单字段进行的绑定,这时需要将界面元素的code替换为:field+表单字段排序
String formFieldId = (String) m.get("formFieldId"); String formFieldId = (String) m.get("formFieldId");
if (StringUtils.isNotBlank(formFieldId)) { if (StringUtils.isNotBlank(formFieldId)) {
Object formField = generalRepository.getEntityManager().createQuery("select fa from FormAttribute fa where fa.id=?1") generalRepository.getEntityManager().createQuery("select fa from FormAttribute fa where fa.id=?1")
.setParameter(1, formFieldId) .setParameter(1, formFieldId)
.getSingleResult(); .getResultList()
if (formField != null) { .stream()
String formId; .findAny()
try { .map(this::formatFormFieldName)
formId = BeanUtils.getProperty(formField, "formId"); .ifPresent(formFieldName -> m.put("code", formFieldName));
} catch (Exception e) {
throw new ApplicationException(e);
}
List<Object> formFields = generalRepository.getEntityManager().createQuery("select fa from FormAttribute fa where fa.formId=:formId order by fa.sequence")
.setParameter("formId", formId)
.getResultList();
int index = -1;
for (Object f : formFields) {
index++;
if (f.equals(formField)) {
break;
}
}
m.put("code", String.format("field%d", index));
}
} }
code = ClassHelper.convert(m.get("code"), String.class); code = ClassHelper.convert(m.get("code"), String.class);
operationId = ClassHelper.convert(m.get("operationId"), String.class, ""); operationId = ClassHelper.convert(m.get("operationId"), String.class, "");
uiElmentKindId = ClassHelper.convert(m.get("kindId"), String.class, ""); uiElmentKindId = ClassHelper.convert(m.get("kindId"), String.class, "");
...@@ -106,6 +91,62 @@ public class ExecuteContextInterceptor extends HandlerInterceptorAdapter { ...@@ -106,6 +91,62 @@ public class ExecuteContextInterceptor extends HandlerInterceptorAdapter {
} }
} }
private String formatFormFieldName(Object formField) {
String formId, fieldName;
try {
formId = BeanUtils.getProperty(formField, "formId");
fieldName = BeanUtils.getProperty(formField, "attrCode");
} catch (Exception e) {
throw new ApplicationException(e);
}
Optional<JSONObject> optionalJson = getFormJson(formId);
int index = -1;
if (optionalJson.isPresent()) {
// 从json中解析字段的显示index
List<Object> formFields = optionalJson.get().getJSONArray("list");
for (Object o : formFields) {
index++;
JSONObject f = (JSONObject) o;
if (Objects.equals(f.getString("model"), fieldName)) {
break;
}
}
} else {
// 从SAF_FORM_ATTRIBUTE从解析字段的显示index
List<Object> formFields = generalRepository.getEntityManager().createQuery("select fa from FormAttribute fa where fa.formId=:formId order by fa.sequence")
.setParameter("formId", formId)
.getResultList();
for (Object f : formFields) {
index++;
if (f.equals(formField)) {
break;
}
}
}
return String.format("field%d", index);
}
/**
* 获取表单字段的定义JSON
*
* @param formId 表单id
* @return 表单字段的定义JSON
*/
private Optional<JSONObject> getFormJson(String formId) {
return generalRepository.getEntityManager().createQuery("select f from SafFormslist f where f.id=:formId")
.setParameter("formId", formId)
.getResultList()
.stream()
.findAny()
.map(form -> {
try {
return BeanUtils.getProperty(form, "json");
} catch (Exception e) {
throw new ApplicationException(e);
}
}).map(str -> JSON.parseObject((String) str));
}
public void intercept(HttpServletRequest request, HttpServletResponse response) throws Exception { public void intercept(HttpServletRequest request, HttpServletResponse response) throws Exception {
Operator operator = (Operator) request.getSession().getAttribute(Constants.SESSION_OPERATOR_ATTRIBUTE); Operator operator = (Operator) request.getSession().getAttribute(Constants.SESSION_OPERATOR_ATTRIBUTE);
String func = null; String func = null;
......
...@@ -11,37 +11,42 @@ ...@@ -11,37 +11,42 @@
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"> <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
<property name="dataSource" ref="dataSource" /> <property name="dataSource" ref="dataSource"/>
<property name="transactionManager" ref="transactionManager" /> <property name="transactionManager" ref="transactionManager"/>
<property name="databaseSchemaUpdate" value="false" /> <property name="databaseSchemaUpdate" value="false"/>
<!-- <!--
<property name="idBlockSize" value="20" /> --> <property name="idBlockSize" value="20" /> -->
<property name="idGenerator" ref="uuidGenerator" /> <property name="idGenerator" ref="uuidGenerator"/>
<property name="jobExecutorActivate" value="false" /> <property name="jobExecutorActivate" value="false"/>
<property name="dbHistoryUsed" value="false" /> <property name="dbHistoryUsed" value="false"/>
<property name="dbIdentityUsed" value="false" /> <property name="dbIdentityUsed" value="false"/>
<property name="jpaEntityManagerFactory" ref="entityManagerFactory"></property> <property name="jpaEntityManagerFactory" ref="entityManagerFactory"></property>
<property name="jpaHandleTransaction" value="true"></property> <property name="jpaHandleTransaction" value="true"></property>
<property name="jpaCloseEntityManager" value="true"></property> <property name="jpaCloseEntityManager" value="true"></property>
<property name="eventListeners">
<list>
<bean class="com.huigou.demo.application.impl.MyActivitiEventListener"/>
</list>
</property>
</bean> </bean>
<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean"> <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
<property name="processEngineConfiguration" ref="processEngineConfiguration" /> <property name="processEngineConfiguration" ref="processEngineConfiguration"/>
</bean> </bean>
<bean id="flowRepositoryService" factory-bean="processEngine" <bean id="flowRepositoryService" factory-bean="processEngine"
factory-method="getRepositoryService" /> factory-method="getRepositoryService"/>
<bean id="flowFormService" factory-bean="processEngine" <bean id="flowFormService" factory-bean="processEngine"
factory-method="getFormService" /> factory-method="getFormService"/>
<bean id="flowRuntimeService" factory-bean="processEngine" <bean id="flowRuntimeService" factory-bean="processEngine"
factory-method="getRuntimeService" /> factory-method="getRuntimeService"/>
<bean id="flowTaskService" factory-bean="processEngine" <bean id="flowTaskService" factory-bean="processEngine"
factory-method="getTaskService" /> factory-method="getTaskService"/>
<bean id="flowHistoryService" factory-bean="processEngine" <bean id="flowHistoryService" factory-bean="processEngine"
factory-method="getHistoryService" /> factory-method="getHistoryService"/>
<bean id="flowManagementService" factory-bean="processEngine" <bean id="flowManagementService" factory-bean="processEngine"
factory-method="getManagementService" /> factory-method="getManagementService"/>
</beans> </beans>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment