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 {
for (int u=0;u<fieldList.size();u++){
map=fieldList.get(u);
colName=map.get("columnName").toString();
colName=map.get("attrCode").toString(); //columnName-->attrCcode
if ("created_by_id".equals(colName)){
isCreator=true;
break;
......@@ -72,11 +72,11 @@ public class BuildEntityFile implements BuildFilerInter {
for (int u=0;u<fieldList.size();u++){
map=fieldList.get(u);
colName=map.get("columnName").toString();
dataType=map.get("dataType").toString();
dataLength=map.get("dataLength").toString();
comments=map.get("comments").toString();
dataScale=!"".equals(map.get("dataScale"))?Integer.parseInt(map.get("dataScale").toString()):0;
colName=map.get("attrCode").toString();
dataType=map.get("fieldType").toString();
dataLength=map.get("fieldLength").toString();
comments=map.get("attrName").toString();
dataScale=!"".equals(map.get("fieldDecimal"))?Integer.parseInt(map.get("fieldDecimal").toString()):0;
//改在sql中去掉不生成的字段 ??
if (!"id".equals(colName)&&!"version".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 {
}
//存在流程的 添加固定的隐藏字段
sb.append(" <x:hidden name=\"procId\" />\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=\"fullId\"/>\r\n");
......@@ -127,6 +128,14 @@ public class BuildPageDetailFile implements BuildFilerInter {
public void generateFieldTag(ParamFormVO paraForm,StringBuffer sb){
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 []fieldTags=paraForm.getFieldTags();
String []mustInputField=paraForm.getMustinputFields();
......@@ -240,19 +249,24 @@ public class BuildPageDetailFile implements BuildFilerInter {
sb.append(" </script> \r\n");
String formNo=paraForm.getFormPath();
formNo=formNo.substring(formNo.indexOf("customform")+11);
if (paraForm.getIsform()==1) { //表单生成
formNo = formNo.substring(formNo.indexOf("customform") + 11);
}
String queryUrl="";
for (int j=0;j<listDetails.size();j++){
paraDetail=listDetails.get(j);
String entitySubTable=CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL,paraDetail.getTableName());
sb.append(" <script src='<c:url value=\"").append(paraForm.getSrcPath()).append("/").append(formNo).append("/").append(entitySubTable).append(".js\"/>' type=\"text/javascript\"></script>\r\n");
sb.append(" <script src='<c:url value=\"");
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文件
String detailTableName=paraDetail.getTableName();
paraDetail.setTableName(detailTableName.toLowerCase());
//paraDetail.setBtnNames(new String[]{"新增行","删除行","保存行","启用行","禁用行"});
//paraDetail.setBtnMethodNames(new String[]{"addRow","deleteRow","saveRow","enableRow","disableRow"});
paraDetail.setBtnNames(new String[]{"新增行","删除行","保存行"});
paraDetail.setBtnMethodNames(new String[]{"addRow","deleteRow","saveRow"});
// BuildPageJSFile buildStringBuffer=new BuildPageJSFile(paraDetail);
......@@ -270,8 +284,13 @@ public class BuildPageDetailFile implements BuildFilerInter {
queryUrl+="+'&id='+"+"$(\"#id\").val()";
StringBuffer sbjs=buildPageJSFile.generateContents(paraDetail,mainTableName,paraForm.getRealFieldEns(),true,queryUrl);
Utils.generateFile(paraForm.getFormPath()+"/"+entitySubTable+".js", sbjs);
}
if (paraForm.getIsform()==1) { //表单生成页面
Utils.generateFile(paraForm.getFormPath()+"/"+entitySubTable+".js", sbjs);
} else { // 代码生成
Utils.generateFile(paraForm.getSrcPath()+"/"+entitySubTable+".js", sbjs);
}
}
sb.append(" </head> \r\n");
}
......
......@@ -56,12 +56,12 @@ public class BuildPageJSFile implements BuildFilerInter {
// String srcPath=paraForm.getUploadPath()+"/source";
StringBuffer sb=new StringBuffer("");
String entityName= CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL,paraForm.getTableName());
String fileName=entityName; //首字母小写
String entityName= CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL,paraForm.getTableName());
String fileName=entityName; //首字母小写
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(" init").append(Utils.toUpperCaseFirstOne(entityName)).append("ListGrid();");
......@@ -81,17 +81,14 @@ public class BuildPageJSFile implements BuildFilerInter {
sb.append(" });");
sb.append(" ");
sb.append(Constant.SYSMBOL_LINE);
sb.append("function initUI() {");
sb.append(" UICtrl.initDefaultLayout();");
sb.append(" }");
sb.append("");
// if (!isDetail){ //是主表单的 JS 不是明细页面的js 改在生成页面文件时
//组装主表单字段效验事件
// Utils.composeMainFormCheckFunction(paraForm, sb);
//}
sb.append(Constant.SYSMBOL_LINE);
//组装Grid表格
sb.append("function init").append(Utils.toUpperCaseFirstOne(entityName)).append("ListGrid() { ");
sb.append(" var toolbarOptions =[];");
......@@ -100,13 +97,15 @@ public class BuildPageJSFile implements BuildFilerInter {
composeDisplayButton(paraForm,queryUrl,sb);
}
sb.append("");
sb.append(Constant.SYSMBOL_LINE);
sb.append(" ").append(fileName).append("GridManager = UICtrl.grid('#")
.append(fileName).append("Grid', {");
sb.append(Constant.SYSMBOL_LINE);
//组装显示的列表
composeDisplayColumns(paraForm,queryUrl,sb);
sb.append(" dataAction: 'server',");// pmProjectInfo/slicedQueryPmProjectInfo
if (paraForm.getIsform()==1){ //是表单生成器
......@@ -154,7 +153,7 @@ public class BuildPageJSFile implements BuildFilerInter {
sb.append(" fixedCellHeight: true,");
sb.append(" selectRowButtonOnly:true");
if (isDetail){ //是明细页面的js 进行编辑
if (isDetail){ //是明细页面的js 需要进行编辑
sb.append(" ,onAfterEdit:bindEvent");
sb.append(" ,autoAddRowByKeydown:true"); //允许自动增加编辑行
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 {
sb.append(" }");
sb.append(Constant.SYSMBOL_LINE);
if (isDetail){ //是明细页面的js 添加字段效验的
Utils.composeDetailCheckFunction(paraForm,mainTableFields,sb);
if (isDetail){ //是明细页面的js 添加明细字段效验的处理
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() {")
.append(" var params = $(\"#queryMainForm\").formToJSON();")
.append(" UICtrl.gridSearch(").append(fileName).append("GridManager, params);")
......@@ -189,8 +192,8 @@ public class BuildPageJSFile implements BuildFilerInter {
sb.append("function getId() {");
sb.append(" return $(\"#id\").val() || \"\";");
sb.append(" }");
sb.append(Constant.SYSMBOL_LINE);
//生成setId方法
sb.append("function setId(value) { ");
sb.append(" $(\"#id\").val(value);");
// 为文件上传控件绑定业务id
......@@ -227,8 +230,7 @@ public class BuildPageJSFile implements BuildFilerInter {
}
}
//sb.append("//查询方法;").append(Constant.SYSMBOL_LINE);
//sb.append("//查询方法;").append(Constant.SYSMBOL_LINE);
sb.append("function query(obj) {");
sb.append(" var param = $(obj).formToJSON();");
sb.append(" UICtrl.gridSearch(").append(fileName).append("GridManager, param);");
......@@ -266,13 +268,23 @@ public class BuildPageJSFile implements BuildFilerInter {
//组装显示的列
public void composeDisplayColumns(ParamFormVO paraForm,String queryUrl,StringBuffer sb){
// 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 []dataSources=paraForm.getDataSources();
String []displayField=paraForm.getDisplayFields();
if (paraForm.getIsform()==0){ //代码生成器
displayField=paraForm.getRealFieldEns();
}
String []displayFieldname=paraForm.getDisplayFieldnames();
String []displayFieldType=paraForm.getDisplayFieldTypes();
String []mustInput=paraForm.getMustinputFields();
......@@ -454,14 +466,19 @@ 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(" if ($('#procId').val()!=\"\") { ")
.append(" return UICtrl.getApproveStatusInfo(item.status);")
.append(" } else { ")
.append(" return UICtrl.getStatusInfo(item.status);} } }");
.append(" if ($('#procId').val()!=\"\") { ");
if (allowEdit){
sb.append(" return UICtrl.getStatusInfo(item.status); ");
} else {
sb.append(" return UICtrl.getApproveStatusInfo(item.status); ");
}
sb.append(" } else { ")
.append(" return UICtrl.getStatusInfo(item.status);} } }");
if (hideCols.size()>0){
sb.append(",");
}
......@@ -472,6 +489,7 @@ public class BuildPageJSFile implements BuildFilerInter {
}
}
sb.append("],");
sb.append(Constant.SYSMBOL_LINE);
}
......@@ -518,15 +536,15 @@ public class BuildPageJSFile implements BuildFilerInter {
.append("").append(paraForm.getBtnMethodNames()[i]).append(Utils.toUpperCaseFirstOne(entityName)).append("();")
.append("}")
.append("}");
} else if ("saveRow".equals(paraForm.getBtnMethodNames()[i]) ){
/* } else if ("saveRow".equals(paraForm.getBtnMethodNames()[i]) ){
sb.append(" saveRowHandler:{")
.append("id:'saveRowHandler',")
.append("img:'fa-upload',")
.append("img:'fa-save',")
.append("text:'保存行',")
.append("click:function(){")
.append("").append(paraForm.getBtnMethodNames()[i]).append(Utils.toUpperCaseFirstOne(entityName)).append("(\"\");")
.append("}")
.append("}");
.append("}"); */
} else if ("enableRow".equals(paraForm.getBtnMethodNames()[i]) ){
sb.append(" enableRowHandler:{")
.append("id:'enableRowHandler',")
......@@ -545,18 +563,31 @@ public class BuildPageJSFile implements BuildFilerInter {
.append("").append(paraForm.getBtnMethodNames()[i]).append(Utils.toUpperCaseFirstOne(entityName)).append("();")
.append("}")
.append("}");
} else {
} else if ("saveRow".equals(paraForm.getBtnMethodNames()[i]) ){
//在下面根据是否存在流程 添加
} else { //主表 默认的按钮类型
sb.append("").append(paraForm.getBtnMethodNames()[i]).append("Handler:")
.append(paraForm.getBtnMethodNames()[i]).append("Handler");
.append(paraForm.getBtnMethodNames()[i]).append("Handler");
}
}
if (i<paraForm.getBtnMethodNames().length-1){
sb.append(",");
}
sb.append("");
sb.append("");
} //ended for
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 {
// 明细表的 fieldEns//已经是field0...???
public String getDisplayField(String []fieldEns,String []displayFields,String 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++) {
if (fieldName.equals(fieldEns[j])){
displayField=displayFields[j];
......
......@@ -70,6 +70,7 @@ public class BuildPageListFile implements BuildFilerInter {
// String searchField=pageMap.get("listdisplaySearchField").toString();
String []searchFields=paraForm.getSearchFields();
String []fieldEns=paraForm.getFieldEns();
String []realfields=paraForm.getRealFieldEns();
String []fieldchs=paraForm.getFieldChs();
String []fieldTags=paraForm.getFieldTags();
String []dataSourceTypes=paraForm.getDataSourceTypes();
......@@ -78,7 +79,11 @@ public class BuildPageListFile implements BuildFilerInter {
String tagType="input",chName="",dataSourceType="",dataSource="",searchField="";
for (int i=0;i<searchFields.length;i++) {
if ("1".equals(searchFields[i])){ //
searchField=fieldEns[i];
if (paraForm.getIsform() == 0) { //是代码生成器 获取真实字段名称
searchField = realfields[i];
} else {
searchField = fieldEns[i];
}
chName=fieldchs[i];
tagType=fieldTags[i];
if (dataSourceTypes.length>i){
......
......@@ -51,6 +51,7 @@ public class AddButtonResult implements ButtonTypeInter {
sb.append("} ");
sb.append(" ");
sb.append(" } ");
sb.append(Constant.SYSMBOL_LINE);
sb.append("function initAdd").append(Utils.toUpperCaseFirstOne(btnAttr.getEntityName())).append("(){ ");
//如果存在自定义的 下拉选择框
......@@ -224,6 +225,7 @@ public class AddButtonResult implements ButtonTypeInter {
sb.append(" ");
// sb.append(" //保存方法 ;");
sb.append(Constant.SYSMBOL_LINE);
sb.append("function doSave").append(Utils.toUpperCaseFirstOne(btnAttr.getEntityName())).append("(grid){");
sb.append(" var _self = this;");
sb.append(" var id = getId();");
......@@ -252,7 +254,8 @@ public class AddButtonResult implements ButtonTypeInter {
sb.append(" }");
sb.append(" ");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols()));
return list;
......
......@@ -15,8 +15,8 @@ public class CustomButtonResult implements ButtonTypeInter {
//sb.append("//").append(btnAttributes.getButtonName()).append("方法").append(Constant.SYSMBOL_LINE);;
sb.append(" function ").append(btnAttributes.getButtonMethoedName()).append("Handler(){");
sb.append(" } ");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols()));
......
......@@ -28,7 +28,7 @@ public class DeleteButtonResult implements ButtonTypeInter {
sb.append(" onSuccess: ").append("reload").append(Utils.toUpperCaseFirstOne(btnAttributes.getEntityName())).append("Grid");
sb.append(" });");
sb.append(" }");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols()));
return list;
......
......@@ -27,8 +27,7 @@ public class DisableButtonResult implements ButtonTypeInter {
sb.append(" }");
sb.append(" }");
sb.append(" ");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols()));
return list;
......
......@@ -27,7 +27,7 @@ public class DisableButtonRowResult implements ButtonTypeInter {
sb.append(" }");
sb.append(" }");
sb.append(" ");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols()));
......
......@@ -34,7 +34,7 @@ public class EnableButtonResult implements ButtonTypeInter {
sb.append(" reload").append(Utils.toUpperCaseFirstOne(btnAttributes.getEntityName())).append("Grid();");
sb.append(" });");
sb.append(" }");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols()));
return list;
......
......@@ -49,7 +49,8 @@ public class EnableButtonRowResult implements ButtonTypeInter {
sb.append(" reload").append(Utils.toUpperCaseFirstOne(btnAttr.getEntityName())).append("Grid();");
sb.append(" });");
sb.append(" }");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols()));
return list;
......
......@@ -16,7 +16,8 @@ public class ExportExcelButtonResult implements ButtonTypeInter {
sb.append(" function exportExcelHandler() {");
sb.append(" UICtrl.gridExport(").append(Utils.toLowerCaseFirstOne(btnAttributes.getEntityName())).append("GridManager);");
sb.append(" }");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols()));
return list;
......
......@@ -16,7 +16,10 @@ public class SaveRowButtonResult implements ButtonTypeInter {
// sb.append(" //保存行数据方法 ").append(Constant.SYSMBOL_LINE);;
sb.append("function saveRow").append(Utils.toUpperCaseFirstOne(btnAttr.getEntityName())).append("(mid){");
sb.append(" var _self = this; var id = getId();");
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(" if (mid!=\"\") { id = mid; $(\"#id\").val(mid); }");
// sb.append(" if (id=='') { id=doCallFunc(eval(\"doSaveMdmDataRecord\"),[]); $(\"#id\").val(id); } " );
......@@ -86,6 +89,7 @@ public class SaveRowButtonResult implements ButtonTypeInter {
.append(" });")
.append(" return true;")
.append(" } ");
sb.append(" } ");
sb.append(" ");
sb.append(Constant.SYSMBOL_LINE);
......@@ -94,6 +98,10 @@ public class SaveRowButtonResult implements ButtonTypeInter {
sb.append(" var _self = this;");
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){ //是表单生成器 则调用统一的添加方法
sb.append(" var url= '/dataManage/saveDataRecord.ajax';");
sb.append(" if (grid==1) { url+='?btntype=1'; } ");
......@@ -117,9 +125,52 @@ public class SaveRowButtonResult implements ButtonTypeInter {
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);
list.add(sb.toString());
list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols()));
return list;
}
......
......@@ -13,7 +13,6 @@ public class UpdateButtonResult implements ButtonTypeInter {
public List<String> processOutResult(StringBuffer sb,ButtonAttributeVO btnAttributes){
List <String> list=new ArrayList<String>();
sb.append("//编辑方法").append(Constant.SYSMBOL_LINE);
sb.append(" function updateHandler(){");
//如果是配置了流程 则通过Ifame打开,发起流程页面
/*UICtrl.addTabItem({
......@@ -29,8 +28,9 @@ public class UpdateButtonResult implements ButtonTypeInter {
sb.append(" }");
sb.append(" }");
sb.append(" ");
sb.append(" function doShowUpdateDialog(id) {");
sb.append(Constant.SYSMBOL_LINE);
sb.append(" function doShowUpdateDialog(id) {");
//Random random=new Random(3);
sb.append(" if ($('#procId').val()!=\"\") { ");
sb.append("UICtrl.addTabItem({ ");
......@@ -62,8 +62,8 @@ public class UpdateButtonResult implements ButtonTypeInter {
sb.append(" });");
sb.append(" }");
sb.append(" ");
sb.append(" }");
sb.append(" }");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols()));
return list;
......
......@@ -39,13 +39,13 @@ public class ViewButtonResult implements ButtonTypeInter {
sb.append(" }");
sb.append(" ");
sb.append(Constant.SYSMBOL_LINE);
sb.append(" function initReadOnly(){");
sb.append(" $('input,select,textarea', $('form[name=\"").append(Utils.toLowerCaseFirstOne(btnAttributes.getEntityName())).append("Form\"]')).attr('readonly', true);");
sb.append(" $(\"#ok\").hide();");
sb.append(" }");
sb.append(" ");
sb.append(Constant.SYSMBOL_LINE);
list.add(sb.toString());
// list.add(Integer.toString(fieldAttributes.getCurrCols()));
return list;
......
......@@ -25,13 +25,13 @@ public class CheckboxTagResult implements FieldTagTypeInter {
.append(" dictionary=\"").append(fieldAttr.getDataSource()).append("\"");
}
if (fieldAttr.getCssStyle()!=null&&!"".equals(fieldAttr.getCssStyle())){ //添加设置的样式
if (fieldAttr.getCssStyle()!=null&&!"".equals(fieldAttr.getCssStyle())){ //添加设置的样式
sb.append(" cssStyle=\"").append(fieldAttr.getCssStyle()).append("\"");
}
}
if (Constant.READ_ONLY.equals(fieldAttr.getDefaultOperation())
||Constant.NO_ACCESS.equals(fieldAttr.getDefaultOperation())
) { //只读
) { //只读
sb.append(" disabled = \"true\"");
}
sb.append(" labelCol=\"").append(fieldAttr.getLabelCols()).append("\"")
......@@ -39,6 +39,6 @@ public class CheckboxTagResult implements FieldTagTypeInter {
.append(" label=\"").append(fieldAttr.getFieldCh()).append("\"/>\r\n");
list.add(sb.toString());
list.add(Integer.toString(fieldAttr.getCurrCols()));
return list;
return list;
}
}
......@@ -46,7 +46,9 @@ public interface DataRecordApplication {
//查询明细表数据
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);
//查询明细表中 检索SQL返回的隐藏字段
......
......@@ -11,6 +11,8 @@ import com.huigou.uasp.builder.vo.PubDataRecord;
import com.huigou.uasp.data.application.DataRecordApplication;
import com.huigou.uasp.data.domain.query.DataRecordQueryRequest;
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.util.ComUtils;
import com.huigou.uasp.util.Constant;
......@@ -29,6 +31,7 @@ import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.*;
import java.util.stream.Collectors;
@Service("dataRecordApplication")
......@@ -38,6 +41,9 @@ public class DataRecordApplicationImpl extends BaseApplication implements DataRe
@Autowired
private CommonUtilApplication commonUtilApplication;
@Autowired
private SafFormslistRepository safFormslistRepository;
private QueryDescriptor getQueryDescriptor(String queryName) {
if ("".equals(queryName)) {
......@@ -140,7 +146,7 @@ public class DataRecordApplicationImpl extends BaseApplication implements DataRe
//SafFormsQueryRequest safFormsQueryRequest=new SafFormsQueryRequest();
// safFormsQueryRequest.setId(queryRequest.getFormId());
//safFormsQueryRequest.setMaiTab(queryRequest.getMaiTab());
List<Map<String, Object>> fieldList = commonUtilApplication.queryDataRecordSingleFields(queryRequest.getFormId(),tableName.toUpperCase());
// String fieldCode="";
for (int i = 0; i < fieldList.size(); i++) {
......@@ -238,7 +244,7 @@ public class DataRecordApplicationImpl extends BaseApplication implements DataRe
}
//保存实体
//保存主表实体
@Override
@Transactional
public String saveDataRecord(DataRecordQueryRequest queryRequest,Map<String, Object> datamap){
......@@ -667,16 +673,110 @@ public class DataRecordApplicationImpl extends BaseApplication implements DataRe
return mapData;
}
//保存明细行数据
//参数: 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
@Transactional
//参数: mainTab,subTab,formId,id,savemode,数据列表
public Map<String,Object> saveDataRecordDetail(DataRecordQueryRequest queryRequest,List <String> hiddenFieldList,List<PubDataRecord> detailData) {
Assert.hasText(queryRequest.getId(), Constant.ID_NOT_BLANK);
// String mainTable = queryRequest.getMaiTab();//commonDataService.getTableName(queryRequest.getFormId());
String maiTable=CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE,queryRequest.getMaiTab()); //转成下划线
String subTable = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, queryRequest.getSubTab());//转成下划线
String maiTable=queryRequest.getMaiTab();
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="";
Map <String,Object>backmap=new HashMap<String,Object>();
try {
......
......@@ -122,6 +122,9 @@ public class DataManageController extends CommonController {
id = sdo.getBizId();
sdo.putProperty("id", id);
}
if (StringUtils.isNotBlank(sdo.getString("procId"))){
this.putAttribute("procId",sdo.getString("procId"));
}
String formNo = sdo.getString("formNo");
DataRecordQueryRequest queryRequest =sdo.toQueryRequest(DataRecordQueryRequest.class);
......@@ -374,92 +377,23 @@ public class DataManageController extends CommonController {
/*
* 保存数据明细列表
*
* 保存明细数据列表
* 参数:formId,主表Id,当前明细表名,明细数据
*/
public String saveRowDataRecordDetail() {
SDO sdo = this.getSDO();
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);
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>();
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 =this.dataRecordApplication.saveRowDataRecordDetail(queryRequest.getFormId(),sdo.getString("mid"),
queryRequest.getSubTab(),detailData);
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);
}
//获取信息明细表中检索SQL的隐藏字段
public List<String> getDetailHiddenFields(DataRecordQueryRequest queryRequest) {
//存在检索SQL 需要获得返回的隐藏字段的值
......
......@@ -48,4 +48,10 @@ public interface CommonUtilApplication {
//获取流程定义的信息
String getProcDefinitionByFormNo(String formNo);
/*
* 查询表单返回的值
* 返回 List <Map>
*/
List<Map<String, Object>> queryFormTableDatas(String sql);
}
......@@ -2,7 +2,8 @@ package com.huigou.uasp.form.application;
import java.util.List;
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.PropertyDefines;
import com.huigou.uasp.form.domain.model.SafFormslist;
......@@ -76,4 +77,8 @@ public interface SafFormslistApplication {
//查询表单配置函数或过程的 内容
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
}
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) {
/*
* 生成页面文件
* 生成表单的页面文件
* queryRequest:需要参数formNo
*/
public String needGenerateFile(String formNo) {
......@@ -803,7 +803,7 @@ public void deleteSyfFormsByIds(List<String> ids) {
List <String>hiddenField=new ArrayList<String>(); //默认隐藏字段
// hiddenField.add("id");
// 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)) {
dbTableService.addProcessFields(tableName);
......@@ -937,7 +937,7 @@ public void deleteSyfFormsByIds(List<String> ids) {
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();//获取主表
queryRequest.setTableType(2);
multsList=this.queryExistTables(queryRequest);
......@@ -964,12 +964,55 @@ public void deleteSyfFormsByIds(List<String> ids) {
paramVO.setFormPath(queryRequest.getFormNo());
paramVO.setMainTableName(mainTableName);
details.add(paramVO);
}
}
paraForms.setDetails(details);
}
return paraForms;
*/
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;
}
//检索SQL获取参数字段顺序号 //当前表   参数来源表目前只能支持一个主表、一个明细表
public SeleListCustomVO addParamFieldNum(String formId,SeleListCustomVO customVO){
......
......@@ -753,10 +753,11 @@ public String queryTableProperty(){
tableName=tableName.split(",")[0]; //取第一个主表的 名称
DbTablesQueryRequest queryRequest = sdo.toQueryRequest(DbTablesQueryRequest.class);
SafFormslist form=this.safFormslistRepository.findOne(id);
queryRequest.setTableName(tableName);
//查询数据库表的列 根据数据库字段 要支持多种类型数据库 需要修改 ????
// 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";
//tableName
......@@ -776,7 +777,7 @@ public String queryTableProperty(){
ParamFormVO paraForm=null;
try {
List <FormSearchSql> customlists=formSearchSqlRepository.searchSqlByFormNo(form.getFormNo());
/* List <FormSearchSql> customlists=formSearchSqlRepository.searchSqlByFormNo(form.getFormNo());
List <SeleListCustomVO> listNew=new ArrayList<SeleListCustomVO>();
SeleListCustomVO customVO=null;
String backFields="",paramSourceFields="";
......@@ -794,10 +795,25 @@ public String queryTableProperty(){
listNew.add(customVO);
}
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;
String paths[]=packageName.split("\\.");
//String path = this.getClass().getResource("/").getPath();
......@@ -818,28 +834,38 @@ public String queryTableProperty(){
// CompileUtil cputil=new CompileUtil();
// BuildFilerInter bfile=null;
//生成实体domain、Query
if (fieldList.size()>0){ //
backStr=buildTypeClass.getBuildClass(Constant.BUILD_ENTITY).generateFile(paraForm,fieldList);
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();
if (singleList.size()>0){ //
backStr=buildTypeClass.getBuildClass(Constant.BUILD_ENTITY).generateFile(paraForm,singleList);
backStr=buildTypeClass.getBuildClass(Constant.BUILD_QUERYREQUEST).generateFile(paraForm,null);
backStr=buildTypeClass.getBuildClass(Constant.BUILD_REPOSITORY).generateFile(paraForm,null);
backStr=buildTypeClass.getBuildClass(Constant.BUILD_APPLICATION).generateFile(paraForm,null);
backStr=buildTypeClass.getBuildClass(Constant.BUILD_APPLICATION).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);
}
}
}
//生成repository
backStr=buildTypeClass.getBuildClass(Constant.BUILD_REPOSITORY).generateFile(paraForm,null);
//生成application
backStr=buildTypeClass.getBuildClass(Constant.BUILD_APPLICATION).generateFile(paraForm,null);
//生成Controller
backStr=buildTypeClass.getBuildClass(Constant.BUILD_CONTROLLER).generateFile(paraForm,null);
//生成页面文件
String filePaths[]=formPath.split("/");
srcPath = paraForm.getUploadPath();
//path = this.getClass().getResource("/").getPath();
// String webPath=path.substring(1,srcPath.length()-16);
for (int i=0;i<filePaths.length;i++){
file=new File(srcPath+"/"+filePaths[i]);
if (!file.exists()){
......@@ -850,15 +876,10 @@ public String queryTableProperty(){
//查询页面表单元素
paraForm.setSrcPath(srcPath);
backStr=buildTypeClass.getBuildClass(Constant.BUILD_PAGELIST).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_XML).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_PAGEJS).generateFile(paraForm,null);
backStr=buildTypeClass.getBuildClass(Constant.BUILD_XML).generateFile(paraForm,null);
} catch (Exception e) {
e.printStackTrace();
......@@ -867,6 +888,19 @@ public String queryTableProperty(){
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(){
return toResult(map);
}
//代码生成器-->组装参数对象
//代码生成器-->组装参数对象 旧的方法 作废
public ParamFormVO getParamFormVO(Map <String, Object>pageMap){
ParamFormVO paraForm = new ParamFormVO();
try {
......
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.Operator;
import com.huigou.context.ThreadLocalUtil;
......@@ -22,10 +24,7 @@ import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* 系统权限获取 页面元素使用
......@@ -60,29 +59,15 @@ public class ExecuteContextInterceptor extends HandlerInterceptorAdapter {
// 如果界面元素的formFieldId不为空,则说明该界面元素是与表单字段进行的绑定,这时需要将界面元素的code替换为:field+表单字段排序
String formFieldId = (String) m.get("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)
.getSingleResult();
if (formField != null) {
String formId;
try {
formId = BeanUtils.getProperty(formField, "formId");
} 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));
}
.getResultList()
.stream()
.findAny()
.map(this::formatFormFieldName)
.ifPresent(formFieldName -> m.put("code", formFieldName));
}
code = ClassHelper.convert(m.get("code"), String.class);
operationId = ClassHelper.convert(m.get("operationId"), String.class, "");
uiElmentKindId = ClassHelper.convert(m.get("kindId"), String.class, "");
......@@ -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 {
Operator operator = (Operator) request.getSession().getAttribute(Constants.SESSION_OPERATOR_ATTRIBUTE);
String func = null;
......
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<bean id="uuidGenerator"
class="org.activiti.engine.impl.persistence.StrongUuidGenerator">
</bean>
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
<property name="dataSource" ref="dataSource" />
<property name="transactionManager" ref="transactionManager" />
<property name="databaseSchemaUpdate" value="false" />
<!--
<property name="idBlockSize" value="20" /> -->
<property name="idGenerator" ref="uuidGenerator" />
<property name="jobExecutorActivate" value="false" />
<property name="dbHistoryUsed" value="false" />
<property name="dbIdentityUsed" value="false" />
<property name="jpaEntityManagerFactory" ref="entityManagerFactory"></property>
<property name="jpaHandleTransaction" value="true"></property>
<property name="jpaCloseEntityManager" value="true"></property>
</bean>
<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
<property name="processEngineConfiguration" ref="processEngineConfiguration" />
</bean>
<bean id="flowRepositoryService" factory-bean="processEngine"
factory-method="getRepositoryService" />
<bean id="flowFormService" factory-bean="processEngine"
factory-method="getFormService" />
<bean id="flowRuntimeService" factory-bean="processEngine"
factory-method="getRuntimeService" />
<bean id="flowTaskService" factory-bean="processEngine"
factory-method="getTaskService" />
<bean id="flowHistoryService" factory-bean="processEngine"
factory-method="getHistoryService" />
<bean id="flowManagementService" factory-bean="processEngine"
factory-method="getManagementService" />
<bean id="uuidGenerator"
class="org.activiti.engine.impl.persistence.StrongUuidGenerator">
</bean>
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
<property name="dataSource" ref="dataSource"/>
<property name="transactionManager" ref="transactionManager"/>
<property name="databaseSchemaUpdate" value="false"/>
<!--
<property name="idBlockSize" value="20" /> -->
<property name="idGenerator" ref="uuidGenerator"/>
<property name="jobExecutorActivate" value="false"/>
<property name="dbHistoryUsed" value="false"/>
<property name="dbIdentityUsed" value="false"/>
<property name="jpaEntityManagerFactory" ref="entityManagerFactory"></property>
<property name="jpaHandleTransaction" 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 id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
<property name="processEngineConfiguration" ref="processEngineConfiguration"/>
</bean>
<bean id="flowRepositoryService" factory-bean="processEngine"
factory-method="getRepositoryService"/>
<bean id="flowFormService" factory-bean="processEngine"
factory-method="getFormService"/>
<bean id="flowRuntimeService" factory-bean="processEngine"
factory-method="getRuntimeService"/>
<bean id="flowTaskService" factory-bean="processEngine"
factory-method="getTaskService"/>
<bean id="flowHistoryService" factory-bean="processEngine"
factory-method="getHistoryService"/>
<bean id="flowManagementService" factory-bean="processEngine"
factory-method="getManagementService"/>
</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