package taskmanagement
import (
"appPlatform/api/version1/customerform"
datacenter "appPlatform/api/version1/dataCenter"
"appPlatform/api/version1/workWechat"
"appPlatform/models/customerForm"
"appPlatform/models/modelAppPlatform"
"appPlatform/models/modelshr"
"appPlatform/overall"
"appPlatform/overall/publicmethod"
"encoding/json"
"errors"
"fmt"
"regexp"
"strconv"
"strings"
"time"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 0 9 - 27 14 : 21 : 0 8
@ 功能 : 用户端自定义表单新增记录
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) AddFormAddData ( c * gin . Context ) {
data , err := c . GetRawData ( ) //接收表单提交得数据
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
mapData := publicmethod . MapOut [ string ] ( ) //初始化MAP
err = json . Unmarshal ( data , & mapData ) //将接收的json字符串参数转换成Map
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
if _ , ok := mapData [ "formId" ] ; ! ok {
publicmethod . Result ( 1 , err , c , "非法表单!不能提交数据!" )
return
}
sendData := publicmethod . MapOut [ string ] ( )
var formCont modelAppPlatform . CustomerFormView //获取指定版本的表单
err = formCont . GetCont ( map [ string ] interface { } { "`id`" : mapData [ "formId" ] } )
if err != nil {
publicmethod . Result ( 107 , err , c )
return
}
var sunFormName [ ] string //子表名称集合
if formCont . TableStructure != "" { //拆解获取子表名称
var sunFormStruct map [ string ] string
err = json . Unmarshal ( [ ] byte ( formCont . TableStructure ) , & sunFormStruct )
if err == nil {
for _ , v := range sunFormStruct {
if ! publicmethod . IsInTrue [ string ] ( v , sunFormName ) {
sunFormName = append ( sunFormName , v )
}
}
}
}
masterField := publicmethod . MapOut [ string ] ( )
sunFieldAry := publicmethod . MapOut [ string ] ( )
for k , v := range mapData {
if ! publicmethod . IsInTrue [ string ] ( k , sunFormName ) {
if ! publicmethod . IsInTrue [ string ] ( k , [ ] string { "formId" , "id" } ) {
masterField [ k ] = v
}
} else {
sunFieldAry [ k ] = v
}
}
context , _ := c . Get ( overall . MyContJwt )
var userCont modelshr . ManCont
userCont . GetLoginCont ( context )
uuid := publicmethod . GetUUid ( 1 )
cureeTime := time . Now ( ) . Unix ( )
master , sunTable , jsonerr := GainFormStruct ( formCont . MastesFormJson )
if jsonerr != nil {
publicmethod . Result ( 104 , err , c )
return
}
// master, _, _ := GainFormStruct(formCont.MastesFormJson)
masterWriteVal := MakeTableVal ( uuid , userCont . Key , cureeTime , masterField , master )
//任务列表
var taskCont modelAppPlatform . Task
taskCont . MastersKey = uuid
taskCont . Title = fmt . Sprintf ( "%v-%v(%v)-%v" , formCont . Name , userCont . Name , userCont . Number , publicmethod . UnixTimeToDay ( cureeTime , 14 ) ) //标题"`
taskCont . Creater = userCont . Key //创建人"`
taskCont . CreaterTime = cureeTime //创建时间"`
taskCont . EditTime = cureeTime //编辑时间"`
taskCont . Types = 1 //类型(1:普通表单;2:流程表单)"`
taskCont . VersionId = formCont . Id //来源于哪个表单"`
taskCont . Status = 2
//判断是否
if len ( sunFieldAry ) > 0 {
//有子表
err = WriteSunDatabase ( uuid , userCont . Key , cureeTime , formCont . TableKey , masterWriteVal , sunFieldAry , sunTable )
} else {
//无子表
err = overall . CONSTANT_DB_CustomerForm . Table ( formCont . TableKey ) . Create ( masterWriteVal ) . Error
}
if err != nil {
publicmethod . Result ( 104 , err , c )
return
}
overall . CONSTANT_DB_AppPlatform . Create ( & taskCont )
// sendData["err"] = err
// sendData["data"] = data
// sendData["mapData"] = mapData
// sendData["formCont"] = formCont
sendData [ "master" ] = master
sendData [ "sunTable" ] = sunTable
// sendData["jsonerr"] = jsonerr
// sendData["jsondfg"] = jsondfg
// sendData["formJsonCont"] = formJsonCont
sendData [ "master_len" ] = len ( master )
sendData [ "sunTable_len" ] = len ( sunTable )
// sendData["masterWriteVal"] = masterWriteVal
// sendData["sunFormName"] = sunFormName
// sendData["sunFieldAry"] = sunFieldAry
sendData [ "masterField" ] = masterField
publicmethod . Result ( 0 , sendData , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 0 9 - 28 0 9 : 37 : 49
@ 功能 : 主表与子表数据写入
@ 参数
# uuid 唯一标识
# creater 创建人
# createrTime 创建时间
# masterTableName 主表标识
# masterDataCont 主表数据
# sunDataList 字表数据列表
@ 返回值
#
@ 方法原型
#
* /
func WriteSunDatabase ( uuid , creater , createrTime int64 , masterTableName string , masterDataCont , sunDataList map [ string ] interface { } , sunTable map [ string ] map [ string ] customerform . MasterStruct ) ( err error ) {
if len ( masterDataCont ) > 0 {
if len ( sunDataList ) > 0 {
sunMasterMap := publicmethod . MapOut [ string ] ( )
//子表存在时,执行主表和子表数据写入
for k , v := range sunDataList {
// if k == "table1693811044212" {
s , ok := v . ( [ ] interface { } ) //获取值类型
if ! ok {
err = errors . New ( "表单数据错误!请验证后重新提交!" )
return
} else {
//判断是否有数据
if len ( s ) > 0 {
var sunCont [ ] map [ string ] interface { }
for _ , sv := range s { //拆分子表
if sdf , isOk := sv . ( map [ string ] interface { } ) ; isOk {
if sunTableType , sunIsOk := sunTable [ k ] ; sunIsOk {
masterWriteVal := MakeFormMapData ( uuid , creater , createrTime , sdf , sunTableType , 2 ) //转换数据表值
if len ( masterWriteVal ) > 0 {
sunCont = append ( sunCont , masterWriteVal )
}
}
}
}
if len ( sunCont ) > 0 {
sunMasterMap [ k ] = sunCont
}
}
}
}
if len ( sunMasterMap ) > 0 {
gormDb := overall . CONSTANT_DB_CustomerForm . Begin ( )
masterErr := gormDb . Table ( masterTableName ) . Create ( masterDataCont ) . Error
sunCreateIsOk := true
for k , v := range sunMasterMap {
sunErr := gormDb . Table ( k ) . Create ( v ) . Error
if sunErr != nil {
sunCreateIsOk = false
break
}
}
if masterErr == nil && sunCreateIsOk {
err = gormDb . Commit ( ) . Error
publicmethod . WriteLog ( "write" , "写入自定义表单" , err , masterDataCont , sunDataList )
} else {
gormDb . Rollback ( )
err = errors . New ( "表单数据提交失败!请重新提交" )
publicmethod . WriteLog ( "e" , "写入自定义表单" , masterTableName , err )
}
} else {
gormDb := overall . CONSTANT_DB_CustomerForm
masterErr := gormDb . Table ( masterTableName ) . Create ( masterDataCont ) . Error
if masterErr != nil {
publicmethod . WriteLog ( "write" , "写入自定义表单" , masterTableName , masterErr )
}
}
} else {
//子表不存在时,写入主表数据
err = overall . CONSTANT_DB_CustomerForm . Table ( masterTableName ) . Create ( masterDataCont ) . Error
publicmethod . WriteLog ( "write" , "写入自定义表单" , masterTableName , err )
}
} else {
err = errors . New ( "表单数据提交失败!请重新提交" )
publicmethod . WriteLog ( "e" , "写入自定义表单" , masterTableName , err )
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 0 9 - 27 16 : 01 : 48
@ 功能 : 组装数据表值
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func MakeTableVal ( uuid , userKey , cureeTime int64 , fieldVal map [ string ] interface { } , subUnit map [ string ] customerform . MasterStruct ) map [ string ] interface { } {
keyAndVal := make ( map [ string ] interface { } )
keyAndVal [ "masters_key" ] = uuid
keyAndVal [ "creater" ] = userKey
keyAndVal [ "creater_time" ] = cureeTime
keyAndVal [ "edit_time" ] = cureeTime
for k , v := range fieldVal {
if v != "" {
if val , isOk := subUnit [ k ] ; isOk {
fielfInfoClass := customerform . AnalysisTable ( val )
// fmt.Printf("k--->%v\nv--->%T\nfielfInfoClass------>%v\n\n\n", k, v, fielfInfoClass)
switch fielfInfoClass . Types {
case "int" , "bigint" :
//值类型是数组,并且需要分开存储
switch fielfInfoClass . ControlType {
case "year" , "month" , "date" , "datetime" :
if strVal , ok := v . ( string ) ; ok {
localTime , _ := time . ParseInLocation ( time . RFC3339 , strVal , time . Local )
keyAndVal [ k ] = localTime . Unix ( )
} else {
keyAndVal [ k ] = v
}
case "array" :
if fielfInfoClass . Signed {
kEnd := fmt . Sprintf ( "%v_end" , k )
if strVal , ok := v . ( [ ] interface { } ) ; ok {
if len ( strVal ) >= 2 {
if starTimeStr , tOk := strVal [ 0 ] . ( string ) ; tOk {
starTime , _ := time . ParseInLocation ( time . RFC3339 , starTimeStr , time . Local )
keyAndVal [ k ] = starTime . Unix ( )
} else {
keyAndVal [ k ] = strVal [ 0 ]
}
if endTimeStr , tOk := strVal [ len ( strVal ) - 1 ] . ( string ) ; tOk {
endTime , _ := time . ParseInLocation ( time . RFC3339 , endTimeStr , time . Local )
keyAndVal [ kEnd ] = endTime . Unix ( )
} else {
keyAndVal [ kEnd ] = strVal [ len ( strVal ) - 1 ]
}
}
}
} else {
if strVal , ok := v . ( string ) ; ok {
floatVal , _ := strconv . ParseInt ( strVal , 10 , 64 )
keyAndVal [ k ] = floatVal
} else {
keyAndVal [ k ] = v
}
}
case "bigint" :
if strVal , ok := v . ( string ) ; ok {
floatVal , _ := strconv . ParseInt ( strVal , 10 , 64 )
keyAndVal [ k ] = floatVal
} else {
keyAndVal [ k ] = v
}
case "int" :
if strVal , ok := v . ( string ) ; ok {
floatVal , _ := strconv . Atoi ( strVal )
keyAndVal [ k ] = floatVal
} else {
keyAndVal [ k ] = v
}
case "booble" :
if strVal , ok := v . ( string ) ; ok {
floatVal , _ := strconv . Atoi ( strVal )
keyAndVal [ k ] = floatVal
} else if strVal , ok := v . ( bool ) ; ok {
if strVal {
keyAndVal [ k ] = fielfInfoClass . DefaultValue
} else {
keyAndVal [ k ] = fielfInfoClass . DefaultValuees
}
} else {
keyAndVal [ k ] = v
}
default :
}
case "booble" :
if strVal , ok := v . ( string ) ; ok {
floatVal , _ := strconv . Atoi ( strVal )
keyAndVal [ k ] = floatVal
} else if strVal , ok := v . ( bool ) ; ok {
if strVal {
keyAndVal [ k ] = fielfInfoClass . DefaultValue
} else {
keyAndVal [ k ] = fielfInfoClass . DefaultValuees
}
} else {
keyAndVal [ k ] = v
}
case "float" :
if strVal , ok := v . ( string ) ; ok {
floatVal , _ := strconv . ParseFloat ( strVal , 64 )
keyAndVal [ k ] = floatVal
} else {
keyAndVal [ k ] = v
}
case "decimal" :
if strVal , ok := v . ( string ) ; ok {
floatVal , _ := strconv . ParseFloat ( strVal , 64 )
keyAndVal [ k ] = floatVal
} else {
keyAndVal [ k ] = v
}
case "mediumtext" , "longtext" :
if valAry , ok := v . ( [ ] interface { } ) ; ok {
if len ( valAry ) > 0 {
valStrJson , _ := json . Marshal ( valAry )
keyAndVal [ k ] = string ( valStrJson )
} else {
keyAndVal [ k ] = ""
}
} else {
if fielfInfoClass . ControlType == "array" {
if valStr , ok := v . ( string ) ; ok {
valStrAry := strings . Split ( valStr , "," )
if len ( valStrAry ) > 0 {
valStrJson , _ := json . Marshal ( valStrAry )
keyAndVal [ k ] = string ( valStrJson )
} else {
keyAndVal [ k ] = ""
}
} else {
keyAndVal [ k ] = v
}
} else {
keyAndVal [ k ] = v
}
}
default :
if fielfInfoClass . Types != "" {
if valAry , ok := v . ( [ ] interface { } ) ; ok {
if len ( valAry ) > 0 {
valStrJson , _ := json . Marshal ( valAry )
keyAndVal [ k ] = string ( valStrJson )
} else {
keyAndVal [ k ] = ""
}
} else {
if fielfInfoClass . ControlType == "array" {
if valStr , ok := v . ( string ) ; ok {
valStrAry := strings . Split ( valStr , "," )
if len ( valStrAry ) > 0 {
valStrJson , _ := json . Marshal ( valStrAry )
keyAndVal [ k ] = string ( valStrJson )
} else {
keyAndVal [ k ] = ""
}
} else {
keyAndVal [ k ] = v
}
} else {
keyAndVal [ k ] = v
}
}
}
}
}
}
// } else {
// keyAndVal[k] = v
// }
}
return keyAndVal
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 0 9 - 27 14 : 30 : 57
@ 功能 : 获取组件结构体
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func GainFormStruct ( formTabelJson string ) ( master map [ string ] customerform . MasterStruct , sunTable map [ string ] map [ string ] customerform . MasterStruct , err error ) {
//将表格组件json数据转化成结构体
var formJsonCont customerform . CustomerFormMaster
json . Unmarshal ( [ ] byte ( formTabelJson ) , & formJsonCont )
// fmt.Printf("将表格组件json数据转化成结构体---->%v---->%v\n", err, formTabelJson)
// if err != nil {
// return
// }
masterAry := make ( map [ string ] customerform . MasterStruct )
sunTableAry := make ( map [ string ] map [ string ] customerform . MasterStruct )
for _ , v := range formJsonCont . List {
switch v . Type {
case "grid" , "tabs" :
if len ( v . Columns ) > 0 {
for _ , cv := range v . Columns {
for _ , cvl := range cv . List {
masterAry [ cvl . Name ] = cvl
}
}
}
case "card" , "div" :
if len ( v . List ) > 0 {
for _ , cvl := range v . List {
masterAry [ cvl . Name ] = cvl
}
}
case "table" , "flex" :
if len ( v . List ) > 0 {
sunTableGd := make ( map [ string ] customerform . MasterStruct )
for _ , vl := range v . List {
sunTableGd [ vl . Name ] = vl
}
sunTableAry [ v . Name ] = sunTableGd
}
default :
// fmt.Printf("获取组件结构体-->%v-->%v\n", v.Name, v)
if v . Name != "" {
masterAry [ v . Name ] = v
}
}
}
master = masterAry
sunTable = sunTableAry
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 10 - 07 13 : 18 : 35
@ 功能 : 用户端自定义表单新增记录 ( 新版 )
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) AddFormAddNewData ( c * gin . Context ) {
data , err := c . GetRawData ( ) //接收表单提交得数据
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
mapData := publicmethod . MapOut [ string ] ( ) //初始化MAP
err = json . Unmarshal ( data , & mapData ) //将接收的json字符串参数转换成Map
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
if _ , ok := mapData [ "formId" ] ; ! ok {
publicmethod . Result ( 1 , err , c , "非法表单!不能提交数据!" )
return
}
var formCont modelAppPlatform . CustomerFormView //获取指定版本的表单
err = formCont . GetCont ( map [ string ] interface { } { "`id`" : mapData [ "formId" ] } )
if err != nil {
publicmethod . Result ( 107 , err , c )
return
}
var sunFormName [ ] string //子表名称集合
if formCont . TableStructure != "" { //拆解获取子表名称
var sunFormStruct map [ string ] string
err = json . Unmarshal ( [ ] byte ( formCont . TableStructure ) , & sunFormStruct )
if err == nil {
for _ , v := range sunFormStruct {
if ! publicmethod . IsInTrue [ string ] ( v , sunFormName ) {
sunFormName = append ( sunFormName , v )
}
}
}
}
masterField := publicmethod . MapOut [ string ] ( ) //主表数据
sunFieldAry := publicmethod . MapOut [ string ] ( ) //子表数据
for k , v := range mapData {
if ! publicmethod . IsInTrue [ string ] ( k , sunFormName ) {
if ! publicmethod . IsInTrue [ string ] ( k , [ ] string { "formId" , "id" } ) {
masterField [ k ] = v
}
} else {
sunFieldAry [ k ] = v
}
}
context , _ := c . Get ( overall . MyContJwt )
var userCont modelshr . ManCont
userCont . GetLoginCont ( context ) //当前操作人
uuid := publicmethod . GetUUid ( 1 ) //统一识别符
cureeTime := time . Now ( ) . Unix ( ) //写入时间
var formJsonCont customerform . CustomerFormMaster
json . Unmarshal ( [ ] byte ( formCont . MastesFormJson ) , & formJsonCont )
var formUnitCont customerform . FormUnitInfo
formUnitCont . GainMasterAndSunFormUnit ( formCont . TableKey , formJsonCont . List , true )
masterUnitList := make ( map [ string ] customerform . MasterStruct )
for _ , v := range formUnitCont . MasterInfo {
masterUnitList [ v . Name ] = v
}
masrWriteMap := MakeFormMapData ( uuid , userCont . Key , cureeTime , masterField , masterUnitList , 1 )
masrWriteMap [ "flowIsOpen" ] = formCont . FlowIsOpen
//任务列表
var taskCont modelAppPlatform . Task
taskCont . MastersKey = uuid
taskCont . Title = fmt . Sprintf ( "%v-%v(%v)-%v" , formCont . Name , userCont . Name , userCont . Number , publicmethod . UnixTimeToDay ( cureeTime , 14 ) ) //标题"`
taskCont . Creater = userCont . Key //创建人"`
taskCont . CreaterTime = cureeTime //创建时间"`
taskCont . EditTime = cureeTime //编辑时间"`
taskCont . Types = formCont . Classify //类型(1:普通表单;2:流程表单)"`
taskCont . VersionId = formCont . Id //来源于哪个表单"`
taskCont . Status = 2
if formCont . Classify == 2 {
taskCont . Status = 3
taskCont . FlowKey = formCont . Flowkey
var flowInfo modelAppPlatform . FlowVersion
flowInfo . GetCont ( map [ string ] interface { } { "`key`" : formCont . Flowkey , "`state`" : 1 } , "`id`" )
taskCont . FlowRunSing = flowInfo . Id
}
//判断是否
if len ( sunFieldAry ) > 0 {
//有子表
sunTypeAry := make ( map [ string ] map [ string ] customerform . MasterStruct )
for _ , v := range formUnitCont . SunFormInfo {
sunTypeAry [ v . TableName ] = v . UbitInfo
}
err = WriteSunDatabase ( uuid , userCont . Key , cureeTime , formCont . TableKey , masrWriteMap , sunFieldAry , sunTypeAry )
} else {
// //无子表
err = overall . CONSTANT_DB_CustomerForm . Table ( formCont . TableKey ) . Create ( masrWriteMap ) . Error
}
if err != nil {
publicmethod . Result ( 104 , err , c )
return
}
taskCont . MastesForm = formCont . MastesForm
taskCont . MastesFormJson = formCont . MastesFormJson
err = overall . CONSTANT_DB_AppPlatform . Create ( & taskCont ) . Error
// for k, v := range masrWriteMap {
// fmt.Printf("%v----> %T\n", k, v)
// }
sendData := publicmethod . MapOut [ string ] ( )
sendData [ "uuid" ] = strconv . FormatInt ( uuid , 10 )
sendData [ "cureeTime" ] = cureeTime
sendData [ "formUnitCont" ] = formUnitCont
sendData [ "masterField" ] = masterField
sendData [ "sunFieldAry" ] = sunFieldAry
sendData [ "sunFieldAry_len" ] = len ( sunFieldAry )
sendData [ "masrWriteMap" ] = masrWriteMap
sendData [ "sunFormName" ] = sunFormName
sendData [ "mapData" ] = mapData
publicmethod . Result ( 0 , sendData , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 10 - 07 15 : 35 : 07
@ 功能 : 组装数据表新增数据
@ 参数
# uuid 统一识别符
# userKey 当前操作人
# cureeTime 操作时间
# fieldVal 提交数据得键值对
# subUnit 组件信息
# calss 1 : 新增 ; 2 : 编辑
@ 返回值
#
@ 方法原型
#
* /
func MakeFormMapData ( uuid , userKey , cureeTime int64 , fieldVal map [ string ] interface { } , subUnit map [ string ] customerform . MasterStruct , calss int ) map [ string ] interface { } {
keyAndVal := make ( map [ string ] interface { } )
if calss == 1 {
keyAndVal [ "creater_time" ] = cureeTime
}
keyAndVal [ "masters_key" ] = uuid
keyAndVal [ "creater" ] = userKey
keyAndVal [ "edit_time" ] = cureeTime
for k , v := range fieldVal {
fmt . Printf ( "写入字段:%v->%v\n" , k , v )
if k == "id" {
keyAndVal [ k ] = v
}
if v != "" {
if val , isOk := subUnit [ k ] ; isOk {
fmt . Printf ( "写入字段--->:%v->%v\n" , k , val )
fielfInfoClass := customerform . AnalysisFormUnitClass ( val )
switch fielfInfoClass . FieldType {
case "int" :
if strVal , ok := v . ( string ) ; ok {
keyAndVal [ k ] , _ = strconv . Atoi ( strVal )
} else {
keyAndVal [ k ] = v
}
case "bigint" :
if fielfInfoClass . ValIsAry { //判断值是否为数组
endField := fmt . Sprintf ( "%v_end" , k )
if strVal , ok := v . ( [ ] interface { } ) ; ok {
if len ( strVal ) >= 2 {
if starTimeStr , tOk := strVal [ 0 ] . ( string ) ; tOk {
keyAndVal [ k ] , _ = strconv . ParseInt ( starTimeStr , 10 , 64 )
} else {
keyAndVal [ k ] = strVal [ 0 ]
}
if endTimeStr , tOk := strVal [ len ( strVal ) - 1 ] . ( string ) ; tOk {
keyAndVal [ endField ] , _ = strconv . ParseInt ( endTimeStr , 10 , 64 )
} else {
keyAndVal [ endField ] = strVal [ len ( strVal ) - 1 ]
}
}
}
} else {
if strVal , ok := v . ( string ) ; ok {
fieldVal , _ := strconv . ParseInt ( strVal , 10 , 64 )
keyAndVal [ k ] = fieldVal
} else {
keyAndVal [ k ] = v
}
}
case "float" :
if strVal , ok := v . ( string ) ; ok {
floatVal , _ := strconv . ParseFloat ( strVal , 64 )
keyAndVal [ k ] = floatVal
} else {
keyAndVal [ k ] = v
}
case "decimal" :
if strVal , ok := v . ( string ) ; ok {
floatVal , _ := strconv . ParseFloat ( strVal , 64 )
keyAndVal [ k ] = floatVal
} else {
keyAndVal [ k ] = v
}
case "mediumtext" , "longtext" :
if valAry , ok := v . ( [ ] interface { } ) ; ok {
if len ( valAry ) > 0 {
valStrJson , _ := json . Marshal ( valAry )
keyAndVal [ k ] = string ( valStrJson )
} else {
keyAndVal [ k ] = ""
}
} else {
if fielfInfoClass . ValIsAry && fielfInfoClass . UnitName != "upload" {
if valStr , ok := v . ( string ) ; ok {
valStrAry := strings . Split ( valStr , "," )
if len ( valStrAry ) > 0 {
valStrJson , _ := json . Marshal ( valStrAry )
keyAndVal [ k ] = string ( valStrJson )
} else {
keyAndVal [ k ] = ""
}
} else if valAry , ok := v . ( [ ] interface { } ) ; ok {
if len ( valAry ) > 0 {
valStrJson , _ := json . Marshal ( valAry )
keyAndVal [ k ] = string ( valStrJson )
} else {
keyAndVal [ k ] = ""
}
} else {
keyAndVal [ k ] = v
}
} else {
keyAndVal [ k ] = v
}
}
case "varchar" :
if valAry , ok := v . ( [ ] interface { } ) ; ok {
if len ( valAry ) > 0 {
valStrJson , _ := json . Marshal ( valAry )
keyAndVal [ k ] = string ( valStrJson )
} else {
keyAndVal [ k ] = ""
}
} else {
if fielfInfoClass . ValIsAry {
if valStr , ok := v . ( string ) ; ok {
valStrAry := strings . Split ( valStr , "," )
if len ( valStrAry ) > 0 {
valStrJson , _ := json . Marshal ( valStrAry )
keyAndVal [ k ] = string ( valStrJson )
} else {
keyAndVal [ k ] = ""
}
} else {
keyAndVal [ k ] = v
}
} else {
keyAndVal [ k ] = v
}
}
default :
}
}
}
}
return keyAndVal
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2024 - 04 - 03 0 9 : 40 : 31
@ 功能 : 用户端自定义表单新增记录 ( 列表新版 )
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) AddCustomerForm ( c * gin . Context ) {
data , err := c . GetRawData ( ) //接收表单提交得数据
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
mapData := publicmethod . MapOut [ string ] ( ) //初始化MAP
err = json . Unmarshal ( data , & mapData ) //将接收的json字符串参数转换成Map
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
status := 2
if _ , ok := mapData [ "formId" ] ; ! ok {
publicmethod . Result ( 1 , err , c , "非法表单!不能提交数据!" )
return
}
var appKey int64 = 0
if appKeyVal , ok := mapData [ "appKey" ] ; ok {
appKey , _ = publicmethod . StringToInt64 ( appKeyVal )
}
var tableKey int64 = 0
if tableVal , ok := mapData [ "versionId" ] ; ok {
tableKey , _ = publicmethod . StringToInt64 ( tableVal )
}
if val , ok := mapData [ "status" ] ; ! ok {
if valInt , isTrue := val . ( int ) ; isTrue {
status = valInt
if valInt <= 0 {
status = 2
}
}
} else {
status = 2
}
var formCont modelAppPlatform . CustomerFormView //获取指定版本的表单
err = formCont . GetCont ( map [ string ] interface { } { "`id`" : mapData [ "formId" ] } )
if err != nil {
publicmethod . Result ( 107 , err , c )
return
}
var sunFormName [ ] string //子表名称集合
if formCont . TableStructure != "" { //拆解获取子表名称
var sunFormStruct map [ string ] string
err = json . Unmarshal ( [ ] byte ( formCont . TableStructure ) , & sunFormStruct )
if err == nil {
for _ , v := range sunFormStruct {
if ! publicmethod . IsInTrue [ string ] ( v , sunFormName ) {
sunFormName = append ( sunFormName , v )
}
}
}
}
var formJsonCont customerform . CustomerFormMaster
json . Unmarshal ( [ ] byte ( formCont . MastesFormJson ) , & formJsonCont )
masterField := publicmethod . MapOut [ string ] ( ) //主表数据
sunFieldAry := publicmethod . MapOut [ string ] ( ) //子表数据
for k , v := range mapData {
if ! publicmethod . IsInTrue [ string ] ( k , sunFormName ) {
if ! publicmethod . IsInTrue [ string ] ( k , [ ] string { "formId" , "id" } ) {
masterField [ k ] = v
}
} else {
sunFieldAry [ k ] = v
}
}
context , _ := c . Get ( overall . MyContJwt )
var userCont modelshr . ManCont
userCont . GetLoginCont ( context ) //当前操作人
uuid := publicmethod . GetUUid ( 1 ) //统一识别符
cureeTime := time . Now ( ) . Unix ( ) //写入时间
var formUnitCont customerform . FormUnitInfo
formUnitCont . GainMasterAndSunFormUnit ( formCont . TableKey , formJsonCont . List , true )
masterUnitList := make ( map [ string ] customerform . MasterStruct )
for _ , v := range formUnitCont . MasterInfo {
masterUnitList [ v . Name ] = v
}
masrWriteMap := MakeFormMapData ( uuid , userCont . Key , cureeTime , masterField , masterUnitList , 1 )
masrWriteMap [ "flowIsOpen" ] = formCont . FlowIsOpen
//任务列表
var taskCont customerForm . TaskRecord
taskCont . MastersKey = uuid
taskCont . Title = fmt . Sprintf ( "%v-%v(%v)-%v" , formCont . Name , userCont . Name , userCont . Number , publicmethod . UnixTimeToDay ( cureeTime , 14 ) ) //标题"`
taskCont . AppKey = appKey
taskCont . TableKey = tableKey
taskCont . Creater = userCont . Key //创建人"`
taskCont . CreaterTime = cureeTime //创建时间"`
taskCont . EditTime = cureeTime //编辑时间"`
taskCont . Types = formCont . FlowIsOpen //类型(1:流程表单;2:普通表单)"`
taskCont . VersionId = formCont . Id //来源于哪个表单"`
taskCont . Status = status
if formCont . FlowIsOpen == 1 {
taskCont . Status = 3
taskCont . FlowKey = formCont . Flowkey
var flowInfo modelAppPlatform . FlowVersion
flowInfo . GetCont ( map [ string ] interface { } { "`key`" : formCont . Flowkey , "`state`" : 1 } , "`id`" )
taskCont . FlowRunSing = flowInfo . Id
}
if formJsonCont . Form . DataSource == "yes" {
var sqlDb datacenter . DataBastType
sqlDb . Type = formJsonCont . Form . DataSourceConfig . DSN . SqlType
sqlDb . Ip = formJsonCont . Form . DataSourceConfig . DSN . Ip
sqlDb . DataBaseName = formJsonCont . Form . DataSourceConfig . DSN . DataBaseName
sqlDb . Port = formJsonCont . Form . DataSourceConfig . DSN . Port
sqlDb . UserName = formJsonCont . Form . DataSourceConfig . DSN . UserName
sqlDb . Pwd = formJsonCont . Form . DataSourceConfig . DSN . Password
sqlDborm , err := sqlDb . StartDataBast ( )
if err != nil {
sqlDborm , err = datacenter . GainDataStorce ( formJsonCont . Form . DataSourceConfig . Id )
if err != nil {
publicmethod . Result ( 0 , sqlDb , c )
return
}
}
//判断是否
if len ( sunFieldAry ) > 0 {
//有子表
sunTypeAry := make ( map [ string ] map [ string ] customerform . MasterStruct )
for _ , v := range formUnitCont . SunFormInfo {
sunTypeAry [ v . TableName ] = v . UbitInfo
}
err = WriteSunDatabaseSoucer ( sqlDborm , uuid , userCont . Key , cureeTime , formJsonCont . Form . DataSourceConfig . TableKey , masrWriteMap , sunFieldAry , sunTypeAry )
} else {
// //无子表
err = sqlDborm . Table ( formJsonCont . Form . DataSourceConfig . TableKey ) . Create ( masrWriteMap ) . Error
publicmethod . WriteLog ( "write" , "写入自定义表单" , formJsonCont . Form . DataSourceConfig . TableKey , err )
}
} else {
//判断是否
if len ( sunFieldAry ) > 0 {
//有子表
sunTypeAry := make ( map [ string ] map [ string ] customerform . MasterStruct )
for _ , v := range formUnitCont . SunFormInfo {
sunTypeAry [ v . TableName ] = v . UbitInfo
}
err = WriteSunDatabase ( uuid , userCont . Key , cureeTime , formCont . TableKey , masrWriteMap , sunFieldAry , sunTypeAry )
} else {
// //无子表
err = overall . CONSTANT_DB_CustomerForm . Table ( formCont . TableKey ) . Create ( masrWriteMap ) . Error
publicmethod . WriteLog ( "write" , "写入自定义表单" , formCont . TableKey , err )
}
}
if err != nil {
publicmethod . Result ( 104 , err , c )
return
}
taskCont . MastesForm = formCont . MastesForm
taskCont . MastesFormJson = formCont . MastesFormJson
err = overall . CONSTANT_DB_CustomerForm . Create ( & taskCont ) . Error
// for k, v := range masrWriteMap {
// fmt.Printf("%v----> %T\n", k, v)
// }
publicmethod . WriteLog ( "write" , "写入任务" , err , taskCont )
sendData := publicmethod . MapOut [ string ] ( )
sendData [ "uuid" ] = strconv . FormatInt ( uuid , 10 )
sendData [ "cureeTime" ] = cureeTime
sendData [ "formUnitCont" ] = formUnitCont
sendData [ "masterField" ] = masterField
sendData [ "masterUnitList" ] = masterUnitList
sendData [ "sunFieldAry" ] = sunFieldAry
sendData [ "sunFieldAry_len" ] = len ( sunFieldAry )
sendData [ "masrWriteMap" ] = masrWriteMap
sendData [ "sunFormName" ] = sunFormName
sendData [ "mapData" ] = mapData
//判断是否要发送信息
if formCont . ListJson != "" {
var sendMsgInterface FormListInfo
json . Unmarshal ( [ ] byte ( formCont . ListJson ) , & sendMsgInterface )
var sendMsgInfo SendMsgInfo
sendMsgInfo . SendMsg ( sendMsgInterface . SendMsg , userCont , taskCont . Title , cureeTime , masterField , masterUnitList )
// sendConfig := sendMsgInterface.SendMsg
// if sendConfig.Open {
// msgTitle := taskCont.Title
// if len(sendConfig.Title) > 0 {
// }
// sendData["msgTitle"] = msgTitle
// switch sendConfig.SendRange {
// }
// }
}
publicmethod . Result ( 0 , sendData , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 03 - 28 0 9 : 17 : 29
@ 功能 : 发送企业微信消息
@ 参数
# sendConfig //发送消息配置信息
# msgTitle //消息标题
# cureeTime //创建时间
# fieldVal //提交得数据已表字段
# subUnit //表单组件属性
@ 返回值
#
@ 方法原型
#
* /
func ( s * SendMsgInfo ) SendMsg ( sendConfig SendMsgInfo , userCont modelshr . ManCont , msgTitle string , cureeTime int64 , fieldVal map [ string ] interface { } , subUnit map [ string ] customerform . MasterStruct ) bool {
if sendConfig . Open { //开启发送信息
var sendMsg workWechat . SendMessage
sendUserCount := 0
var sendUserAll [ ] string
isSend := true
//Step 1: 获取消息的发送范围
switch sendConfig . SendRange {
case 1 : //全集团
sendMsg . Touser = "@all"
case 2 : //本公司
var myCompany modelshr . AdministrativeOrganization
myCompany . GetCont ( map [ string ] interface { } { "id" : userCont . Company } , "`schoole`" )
if myCompany . Schoole != 0 {
sendMsg . Toparty = strconv . FormatInt ( myCompany . Schoole , 10 )
} else {
if userCont . Company != 0 {
//获取该组织得所以下级
sendUserAll = GainOrgManWechat ( userCont . Company )
sendUserCount = len ( sendUserAll )
if sendUserCount <= 1000 && sendUserCount > 0 {
sendMsg . Touser = strings . Join ( sendUserAll , "|" )
} else {
if sendUserCount == 0 {
isSend = false
}
}
// sendMsg.Touser =
} else {
if userCont . WorkWechat != "" {
sendMsg . Touser = userCont . WorkWechat
} else if userCont . Wechat != "" {
sendMsg . Touser = userCont . Wechat
} else {
sendMsg . Touser = "@all"
}
}
}
case 3 : //本部门
if userCont . MainDeparment != 0 {
var myCompany modelshr . AdministrativeOrganization
myCompany . GetCont ( map [ string ] interface { } { "id" : userCont . MainDeparment } , "`schoole`" )
if myCompany . Schoole != 0 {
sendMsg . Toparty = strconv . FormatInt ( myCompany . Schoole , 10 )
} else {
//获取该组织得所以下级
sendUserAll = GainOrgManWechat ( userCont . MainDeparment )
sendUserCount = len ( sendUserAll )
if sendUserCount <= 1000 && sendUserCount > 0 {
sendMsg . Touser = strings . Join ( sendUserAll , "|" )
} else {
if sendUserCount == 0 {
isSend = false
}
}
}
} else {
if userCont . Wechat == "" && userCont . WorkWechat == "" {
isSend = false
} else {
if userCont . WorkWechat != "" {
sendMsg . Touser = userCont . WorkWechat
} else {
sendMsg . Touser = userCont . Wechat
}
}
}
case 4 : //本行政组织
if userCont . AdminOrg != 0 {
var myCompany modelshr . AdministrativeOrganization
myCompany . GetCont ( map [ string ] interface { } { "id" : userCont . AdminOrg } , "`schoole`" )
if myCompany . Schoole != 0 {
sendMsg . Toparty = strconv . FormatInt ( myCompany . Schoole , 10 )
} else {
//获取该组织得所以下级
sendUserAll = GainOrgManWechat ( userCont . AdminOrg )
sendUserCount = len ( sendUserAll )
if sendUserCount <= 1000 && sendUserCount > 0 {
sendMsg . Touser = strings . Join ( sendUserAll , "|" )
} else {
if sendUserCount == 0 {
isSend = false
}
}
}
} else {
if userCont . Wechat == "" && userCont . WorkWechat == "" {
isSend = false
} else {
if userCont . WorkWechat != "" {
sendMsg . Touser = userCont . WorkWechat
} else {
sendMsg . Touser = userCont . Wechat
}
}
}
case 5 : //表格中指定
sendUserAll = s . TableFieldsSendMsg ( fieldVal , userCont )
sendUserCount = len ( sendUserAll )
if sendUserCount <= 1000 && sendUserCount > 0 {
sendMsg . Touser = strings . Join ( sendUserAll , "|" )
} else {
if sendUserCount == 0 {
isSend = false
}
}
case 6 : //自定义
default :
}
if isSend {
}
}
return false
}
/ *
@ 作者 : 秦东
@ 时间 : 2025 - 03 - 28 13 : 20 : 44
@ 功能 : 处理自定义表格字段发送乏味
* /
func ( s * SendMsgInfo ) TableFieldsSendMsg ( fieldVal map [ string ] interface { } , userCont modelshr . ManCont ) ( wechatMap [ ] string ) {
if len ( s . SendRangeList ) > 0 {
var Recipient [ ] string
for _ , v := range s . SendRangeList {
for fi , fv := range fieldVal {
if v . Id == fi {
switch v . Types {
case "orgCentent" : //选择组织
val , _ := publicmethod . StringToInt64 ( fv )
if val != 0 {
//获取该组织得所以下级
Recipient = append ( Recipient , GainOrgManWechat ( val ) ... )
}
case "founder" : //创建人
if userCont . WorkWechat != "" {
Recipient = append ( Recipient , userCont . WorkWechat )
} else {
Recipient = append ( Recipient , userCont . Wechat )
}
case "owner" : //拥有者
val := publicmethod . TypeToInterface ( fv )
if val != "" {
if len ( val ) >= 10 {
var orgMan modelshr . PersonArchives
orgMan . GetCont ( map [ string ] interface { } { "`key`" : val } , "`wechat`" , "`work_wechat`" )
if orgMan . WorkWechat != "" {
Recipient = append ( Recipient , orgMan . WorkWechat )
} else if orgMan . Wechat != "" {
Recipient = append ( Recipient , orgMan . Wechat )
}
}
} else {
orgId , _ := strconv . ParseInt ( val , 10 , 64 )
Recipient = append ( Recipient , GainOrgManWechat ( orgId ) ... )
}
case "deptOrg" : //所属部门
val , _ := publicmethod . StringToInt64 ( fv )
if val != 0 {
//获取该组织得所以下级
Recipient = append ( Recipient , GainOrgManWechat ( val ) ... )
}
case "pickpost" : //岗位选择
val := publicmethod . TypeToInterface ( fv )
if val != "" {
postMap := strings . Split ( val , "#@#" )
if len ( postMap ) >= 2 {
Recipient = append ( Recipient , RecipientPost ( postMap ) ... )
}
}
case "pickrole" : //角色选择
val := publicmethod . TypeToInterface ( fv )
if val != "" {
Recipient = append ( Recipient , RecipientRole ( val ) ... )
}
case "expand-user" : //选择用户
val := publicmethod . TypeToInterface ( fv )
if val != "" {
Recipient = append ( Recipient , RegexpToMap ( val ) ... )
}
default :
}
}
}
}
if len ( Recipient ) > 0 {
for _ , v := range Recipient {
if ! publicmethod . IsInTrue [ string ] ( v , wechatMap ) {
wechatMap = append ( wechatMap , v )
}
}
}
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 03 - 28 14 : 49 : 38
@ 功能 : 通过角色获取接收人员
* /
func RecipientRole ( val string ) ( wechatMap [ ] string ) {
if val != "" {
var orgManList [ ] modelshr . PersonArchives
overall . CONSTANT_DB_HR . Model ( & modelshr . PersonArchives { } ) . Select ( "`wechat`,`work_wechat`" ) . Where ( "`emp_type` BETWEEN 1 AND 10" ) . Where ( "`state` = 1 AND FIND_IN_SET(?,`role`)" , val ) . Find ( & orgManList )
if len ( orgManList ) > 0 {
for _ , v := range orgManList {
if v . Wechat != "" && ! publicmethod . IsInTrue [ string ] ( v . Wechat , wechatMap ) {
wechatMap = append ( wechatMap , v . Wechat )
}
if v . WorkWechat != "" && ! publicmethod . IsInTrue [ string ] ( v . WorkWechat , wechatMap ) {
wechatMap = append ( wechatMap , v . WorkWechat )
}
}
}
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 03 - 28 14 : 41 : 25
@ 功能 : 根据岗位获取接收人
* /
func RecipientPost ( val [ ] string ) ( wechatMap [ ] string ) {
vLen := len ( val )
if vLen > 0 {
var orgManList [ ] modelshr . PersonArchives
overall . CONSTANT_DB_HR . Model ( & modelshr . PersonArchives { } ) . Select ( "`wechat`,`work_wechat`" ) . Where ( "`emp_type` BETWEEN 1 AND 10" ) . Where ( "`state` = 1 AND `position` = ?" , val [ vLen - 1 ] ) . Find ( & orgManList )
if len ( orgManList ) > 0 {
for _ , v := range orgManList {
if v . Wechat != "" && ! publicmethod . IsInTrue [ string ] ( v . Wechat , wechatMap ) {
wechatMap = append ( wechatMap , v . Wechat )
}
if v . WorkWechat != "" && ! publicmethod . IsInTrue [ string ] ( v . WorkWechat , wechatMap ) {
wechatMap = append ( wechatMap , v . WorkWechat )
}
}
}
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 03 - 28 13 : 59 : 42
@ 功能 : 通过正则表达式获取人员编号
* /
func RegexpToMap ( val string ) ( wechatMap [ ] string ) {
if val != "" {
var userNumber [ ] string
ruleSet := regexp . MustCompile ( ` \(([^)]+)\) ` )
valMap := ruleSet . FindAllStringSubmatch ( val , - 1 )
if len ( valMap ) > 0 {
for _ , v := range valMap {
vLen := len ( v )
if vLen > 0 {
if ! publicmethod . IsInTrue ( v [ vLen - 1 ] , userNumber ) {
userNumber = append ( userNumber , v [ vLen - 1 ] )
}
}
}
}
if len ( userNumber ) > 0 {
var orgManList [ ] modelshr . PersonArchives
overall . CONSTANT_DB_HR . Model ( & modelshr . PersonArchives { } ) . Select ( "`wechat`,`work_wechat`" ) . Where ( "`emp_type` BETWEEN 1 AND 10" ) . Where ( "`state` = 1 AND `admin_org` IN ?" , userNumber ) . Find ( & orgManList )
if len ( orgManList ) > 0 {
for _ , v := range orgManList {
if v . Wechat != "" && ! publicmethod . IsInTrue [ string ] ( v . Wechat , wechatMap ) {
wechatMap = append ( wechatMap , v . Wechat )
}
if v . WorkWechat != "" && ! publicmethod . IsInTrue [ string ] ( v . WorkWechat , wechatMap ) {
wechatMap = append ( wechatMap , v . WorkWechat )
}
}
}
}
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 03 - 28 10 : 58 : 27
@ 功能 : 根据行政组织获取所有下级人员
* /
func GainOrgManWechat ( orgId int64 ) ( wechatMap [ ] string ) {
var sunOrg publicmethod . GetOrgAllParent
sunOrg . GetOrgSun ( orgId )
sunOrg . Id = append ( sunOrg . Id , orgId )
var orgManList [ ] modelshr . PersonArchives
overall . CONSTANT_DB_HR . Model ( & modelshr . PersonArchives { } ) . Select ( "`wechat`,`work_wechat`" ) . Where ( "`emp_type` BETWEEN 1 AND 10" ) . Where ( "`state` = 1 AND `admin_org` IN ?" , sunOrg . Id ) . Find ( & orgManList )
if len ( orgManList ) > 0 {
for _ , v := range orgManList {
if v . Wechat != "" && ! publicmethod . IsInTrue [ string ] ( v . Wechat , wechatMap ) {
wechatMap = append ( wechatMap , v . Wechat )
}
if v . WorkWechat != "" && ! publicmethod . IsInTrue [ string ] ( v . WorkWechat , wechatMap ) {
wechatMap = append ( wechatMap , v . WorkWechat )
}
}
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 01 - 03 16 : 22 : 20
@ 功能 : 处理有源数据库数据
@ 参数
# sqlDb 数据库句柄
# uuid 唯一标识
# creater 创建人
# createrTime 创建时间
# masterTableName 主表标识
# masterDataCont 主表数据
# sunDataList 字表数据列表
@ 返回值
#
@ 方法原型
#
* /
func WriteSunDatabaseSoucer ( sqlDb * gorm . DB , uuid , creater , createrTime int64 , masterTableName string , masterDataCont , sunDataList map [ string ] interface { } , sunTable map [ string ] map [ string ] customerform . MasterStruct ) ( err error ) {
if len ( masterDataCont ) > 0 {
if len ( sunDataList ) > 0 {
sunMasterMap := publicmethod . MapOut [ string ] ( )
//子表存在时,执行主表和子表数据写入
for k , v := range sunDataList {
// if k == "table1693811044212" {
s , ok := v . ( [ ] interface { } ) //获取值类型
if ! ok {
err = errors . New ( "表单数据错误!请验证后重新提交!" )
return
} else {
//判断是否有数据
if len ( s ) > 0 {
var sunCont [ ] map [ string ] interface { }
for _ , sv := range s { //拆分子表
if sdf , isOk := sv . ( map [ string ] interface { } ) ; isOk {
if sunTableType , sunIsOk := sunTable [ k ] ; sunIsOk {
masterWriteVal := MakeFormMapData ( uuid , creater , createrTime , sdf , sunTableType , 2 ) //转换数据表值
if len ( masterWriteVal ) > 0 {
sunCont = append ( sunCont , masterWriteVal )
}
}
}
}
if len ( sunCont ) > 0 {
sunMasterMap [ k ] = sunCont
}
}
}
}
if len ( sunMasterMap ) > 0 {
gormDb := overall . CONSTANT_DB_CustomerForm
masterErr := sqlDb . Table ( masterTableName ) . Create ( masterDataCont ) . Error
sunCreateIsOk := true
for k , v := range sunMasterMap {
sunErr := gormDb . Table ( k ) . Create ( v ) . Error
if sunErr != nil {
sunCreateIsOk = false
break
}
}
if masterErr == nil && sunCreateIsOk {
publicmethod . WriteLog ( "write" , "写入自定义表单" , err , masterDataCont , sunDataList )
} else {
err = errors . New ( "表单数据提交失败!请重新提交" )
publicmethod . WriteLog ( "e" , "写入自定义表单" , masterTableName , err )
}
} else {
masterErr := sqlDb . Table ( masterTableName ) . Create ( masterDataCont ) . Error
if masterErr != nil {
publicmethod . WriteLog ( "write" , "写入自定义表单" , masterTableName , masterErr )
}
}
} else {
//子表不存在时,写入主表数据
err = sqlDb . Table ( masterTableName ) . Create ( masterDataCont ) . Error
publicmethod . WriteLog ( "write" , "写入自定义表单" , masterTableName , err )
}
} else {
err = errors . New ( "表单数据提交失败!请重新提交" )
publicmethod . WriteLog ( "e" , "写入自定义表单" , masterTableName , err )
}
return
}