应用集成平台服务端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
3.0 KiB

11 months ago
package customerform
import (
"appPlatform/overall/publicmethod"
"encoding/json"
"fmt"
"strings"
"gorm.io/gorm"
)
/*
*
@ 作者: 秦东
@ 时间: 2025-01-03 08:58:14
@ 功能: 获取指定数据表所有字段
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func GainFormAllField(sqlDb *gorm.DB, formName string) (fieldAry []Result, err error) {
sqlStr := fmt.Sprintf("SHOW FULL COLUMNS FROM `%v`", formName)
err = sqlDb.Raw(sqlStr).Scan(&fieldAry).Error
return
}
func GainFormAllFieldList(sqlDb *gorm.DB, formName string) (fieldList []Result, err error) {
sqlStr := fmt.Sprintf("SHOW FULL COLUMNS FROM `%v`", formName)
err = sqlDb.Raw(sqlStr).Scan(&fieldList).Error
for i, v := range fieldList {
attFiled := strings.Split(v.Type, " ")
if len(attFiled) >= 2 {
fieldList[i].Attribute = attFiled[1]
fieldList[i].Type = attFiled[0]
}
if v.Field == "id" {
fieldList[i].Comment = "Id"
}
patternInfo := strings.Split(v.Type, "(")
if len(patternInfo) >= 1 {
fieldList[i].Pattern = patternInfo[0]
}
}
return
}
/*
*
@ 作者: 秦东
@ 时间: 2025-01-03 09:09:54
@ 功能: 处理数据源数据表
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (c *CustomerFormMaster) CreateActiveFormTable(sqlDb *gorm.DB, formName string) (relevance string, err error) {
tableFieldList, err := GainFormAllField(sqlDb, formName) //获取当前主表的字段
var tableFormSqlAry FormTableSql
tableFormSqlAry.TableSubUnitAnalysis(c.Form.DataSourceConfig.TableKey, c.List, true, tableFieldList)
jsonStr, _ := json.Marshal(tableFormSqlAry)
fmt.Printf("数据表-----》%v\n", string(jsonStr))
// 存在要新增或修改的主表字段
if len(tableFormSqlAry.MasterSql) > 0 {
CreateDataSourceFormFiled(sqlDb, c.Form.DataSourceConfig.TableKey, c.Form.FormName, true, tableFormSqlAry.MasterSql) //添加主表字段
}
sunFormNameAry := make(map[string]string)
var sunTableNameAry []string
//当存在子表时进行子表操作
if len(tableFormSqlAry.SunSql) > 0 {
for _, v := range tableFormSqlAry.SunSql {
if len(v.SqlAry) > 0 {
sunFormTableName := v.TableName
if !publicmethod.IsInTrue[string](sunFormTableName, sunTableNameAry) {
sunTableNameAry = append(sunTableNameAry, sunFormTableName)
sunFormNameAry[v.TableName] = sunFormTableName
} else {
sunFormTableName = fmt.Sprintf("%v%v", v.TableName, publicmethod.GetUUid(1))
sunTableNameAry = append(sunTableNameAry, sunFormTableName)
sunFormNameAry[v.TableName] = sunFormTableName
}
err = CreateDataSourceForm(sqlDb, sunFormTableName, fmt.Sprintf("%v(%v)子表", c.Form.FormName, c.Form.Name), "InnoDB", false)
// fmt.Printf("%v------->%v------->%v\n", sunFormTableName, err, v.SqlAry)
if err == nil {
CreateDataSourceFormFiled(sqlDb, sunFormTableName, fmt.Sprintf("%v(%v)子表", c.Form.FormName, c.Form.Name), false, v.SqlAry)
}
}
}
}
if len(sunFormNameAry) > 0 {
relevanceByte, _ := json.Marshal(sunFormNameAry)
relevance = string(relevanceByte)
}
return
}