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
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
|
||
|
|
}
|