package taskmanagement import ( "appPlatform/api/version1/customerform" "appPlatform/models/modelAppPlatform" "appPlatform/models/modelshr" "appPlatform/overall" "appPlatform/overall/publicmethod" "encoding/json" "errors" "fmt" "strconv" "strings" "time" "github.com/gin-gonic/gin" ) /* * @ 作者: 秦东 @ 时间: 2023-09-21 15:19:03 @ 功能: 非流程表单提交数据记录 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) AppFormDataLog(c *gin.Context) { var requestData AppFormDataLogStruct err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } if requestData.Page == 0 { requestData.Page = 1 } if requestData.PageSize == 0 { requestData.Page = 15 } context, _ := c.Get(overall.MyContJwt) var userCont modelshr.ManCont userCont.GetLoginCont(context) var list []modelAppPlatform.Task gormDb := overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.Task{}).Where("`status` BETWEEN ? AND ? AND `creater` = ?", 1, 4, userCont.Key) if requestData.KeyWords != "" { gormDb = gormDb.Where("`title` LIKE ?", "%"+requestData.KeyWords+"%") } var total int64 totalErr := gormDb.Count(&total).Error if totalErr != nil { total = 0 } gormDb = publicmethod.PageTurningSettings(gormDb, requestData.Page, requestData.PageSize) err = gormDb.Order("`id` DESC").Find(&list).Error if err != nil && len(list) < 1 { publicmethod.Result(0, err, c) return } var sendList []SendAppFormDataLog for _, v := range list { var sendCont SendAppFormDataLog sendCont.Id = v.Id //dex"` sendCont.Title = v.Title //标题"` sendCont.Creater = v.Creater //创建人"` sendCont.CreaterTime = v.CreaterTime //创建时间"` sendCont.EditTime = v.EditTime //编辑时间"` sendCont.Types = v.Types //类型(1:普通表单;2:流程表单)"` sendCont.VersionId = v.VersionId //来源于哪个表单"` sendCont.Status = v.Status // var myConst modelshr.PersonArchives myConst.GetCont(map[string]interface{}{"`key`": v.Creater}, "`number`", "`name`") sendCont.CreaterName = myConst.Name sendCont.CreaterNumber = myConst.Number sendCont.CreaterTimeStr = publicmethod.UnixTimeToDay(v.CreaterTime, 1) sendCont.MastersKey = v.MastersKey sendCont.MastersKeyStr = strconv.FormatInt(v.MastersKey, 10) sendList = append(sendList, sendCont) } // publicmethod.Result(0, sendList, c) publicmethod.ResultList(0, requestData.Page, requestData.PageSize, total, int64(len(sendList)), sendList, c) } /* * @ 作者: 秦东 @ 时间: 2023-09-22 11:04:56 @ 功能: 获取可执行得任务列表 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) GainTaskList(c *gin.Context) { var requestData GainTaskListStruct err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } if requestData.Page == 0 { requestData.Page = 1 } if requestData.PageSize == 0 { requestData.Page = 15 } if requestData.Status == 0 { requestData.Status = 1 } context, _ := c.Get(overall.MyContJwt) var userCont modelshr.ManCont userCont.GetLoginCont(context) var list []modelAppPlatform.CustomerFormView gormDb := overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.CustomerFormView{}).Where("`status` = 1") //获取当前登录人得行政组织关系 var sunOrg publicmethod.GetOrgAllParent sunOrg.GetOrgSun(userCont.AdminOrg) sunOrg.GetOrgParentAllId(userCont.AdminOrg) sunOrg.Id = append(sunOrg.Id, userCont.AdminOrg) if len(sunOrg.Id) > 0 { gormDb = gormDb.Where("ISNULL(permitstr) OR permitstr = ''") var sqlStr string for i, v := range sunOrg.Id { if i < len(sunOrg.Id)-1 { sqlStr = fmt.Sprintf("%v FIND_IN_SET(%v,`permitstr`) OR ", sqlStr, v) } else { sqlStr = fmt.Sprintf("%v FIND_IN_SET(%v,`permitstr`) ", sqlStr, v) } // gormDb = gormDb.Or("FIND_IN_SET(?,`permitstr`)", v) } gormDb = gormDb.Or(sqlStr) } else { gormDb = gormDb.Where("ISNULL(permitstr) OR permitstr = ''", sunOrg.Id) } var total int64 totalErr := gormDb.Count(&total).Error if totalErr != nil { total = 0 } gormDb = publicmethod.PageTurningSettings(gormDb, requestData.Page, requestData.PageSize) err = gormDb.Order("`time` DESC").Order("`id` DESC").Find(&list).Error if err != nil && len(list) < 1 { publicmethod.Result(0, err, c) return } var sendList []SendTaskList for _, v := range list { var sendCont SendTaskList sendCont.Id = strconv.FormatInt(v.Id, 10) sendCont.Name = v.Name var myInfo modelshr.PersonArchives myInfo.GetCont(map[string]interface{}{"`key`": v.Creater}, "`number`", "`name`") sendCont.CreaterName = myInfo.Name sendCont.CreaterNumber = myInfo.Number sendCont.CreaterTimeStr = publicmethod.UnixTimeToDay(v.CreaterTime, 1) sendList = append(sendList, sendCont) } // publicmethod.Result(0, sendList, c) publicmethod.ResultList(0, requestData.Page, requestData.PageSize, total, int64(len(sendList)), sendList, c) } /* * @ 作者: 秦东 @ 时间: 2023-09-23 13:51:58 @ 功能: 根据版本获取表单内容 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) GianTaskVersionCont(c *gin.Context) { var requestData publicmethod.CommonId[string] err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } if requestData.Id == "" { publicmethod.Result(107, err, c) return } var versionCont modelAppPlatform.CustomerFormView err = versionCont.GetCont(map[string]interface{}{"`id`": requestData.Id}) if err != nil { publicmethod.Result(107, err, c) return } publicmethod.Result(0, versionCont, c) } /* * @ 作者: 秦东 @ 时间: 2023-09-25 11:42:35 @ 功能: 自定义表单新增记录数据 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) CustomerFormAddData(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 sendData := publicmethod.MapOut[string]() if _, ok := mapData["formId"]; !ok { publicmethod.Result(1, err, c, "非法表单!不能提交数据!") return } var formCont modelAppPlatform.CustomerFormView err = formCont.GetCont(map[string]interface{}{"`id`": mapData["formId"]}) 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) context, _ := c.Get(overall.MyContJwt) var userCont modelshr.ManCont userCont.GetLoginCont(context) uuid := publicmethod.GetUUid(1) cureeTime := time.Now().Unix() masterFrom := publicmethod.MapOut[string]() masterFrom["masters_key"] = uuid masterFrom["creater"] = userCont.Key masterFrom["creater_time"] = cureeTime masterFrom["edit_time"] = cureeTime sunFormList := publicmethod.MapOut[string]() for k, v := range mapData { // fmt.Printf("key: %v, value: %v\n", k, v) if !publicmethod.IsInTrue[string](k, sunFormName) { if !publicmethod.IsInTrue[string](k, []string{"formId", "id"}) { masterFrom[k] = v } } else { sunFormList[k] = v } } 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 //状态(1:草稿,2:发表;3:审批中;4:归档;5:删除)"` if len(sunFormList) > 0 { WriteDatabase(uuid, userCont.Key, cureeTime, taskCont, formCont.TableKey, masterFrom, sunFormList) } else { err = overall.CONSTANT_DB_CustomerForm.Table(formCont.TableKey).Create(masterFrom).Error overall.CONSTANT_DB_AppPlatform.Create(&taskCont) } sendData["err"] = err sendData["data"] = data sendData["mapData"] = mapData sendData["formCont"] = formCont sendData["masterFrom"] = masterFrom sendData["sunFormList"] = sunFormList publicmethod.Result(0, sendData, c) } /* * @ 作者: 秦东 @ 时间: 2023-09-25 14:33:51 @ 功能: 写入数据库 @ 参数 #uuid 唯一标识 #creater 创建人 #createrTime 创建时间 #taskCont 主记录表 #masterTableName 主表标识 #masterDataCont 主表数据 #sunDataList 字表数据列表 @ 返回值 #err 返回信息 @ 方法原型 #func WriteDatabase(uuid, creater, createrTime int64, masterTableName string, masterDataCont, sunDataList map[string]interface{}) (err error) */ func WriteDatabase(uuid, creater, createrTime int64, taskCont modelAppPlatform.Task, masterTableName string, masterDataCont, sunDataList map[string]interface{}) (err error) { if len(sunDataList) > 0 && len(masterDataCont) > 0 { sunMasterMap := publicmethod.MapOut[string]() for k, v := range sunDataList { 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 { for sdk, sdv := range sdf { if fieldVal, filedIsok := sdv.(bool); filedIsok { if fieldVal { sdf[sdk] = 1 } else { sdf[sdk] = 2 } } } sdf["masters_key"] = uuid sdf["creater"] = creater sdf["creater_time"] = createrTime sdf["edit_time"] = createrTime sunCont = append(sunCont, sdf) } } sunMasterMap[k] = sunCont } } } if len(sunMasterMap) < 1 { err = overall.CONSTANT_DB_CustomerForm.Table(masterTableName).Create(masterDataCont).Error overall.CONSTANT_DB_AppPlatform.Create(&taskCont) } else { gormDb := overall.CONSTANT_DB_CustomerForm.Begin() masterErr := gormDb.Table(masterTableName).Create(masterDataCont).Error taskErr := overall.CONSTANT_DB_AppPlatform.Create(&taskCont).Error sunCreateIsOk := true for k, v := range sunMasterMap { sunErr := gormDb.Table(k).Create(v).Error if sunErr != nil { sunCreateIsOk = false break } // fmt.Printf("234----->%v----->%v\n", k, v) } if masterErr == nil && taskErr == nil && sunCreateIsOk { err = gormDb.Commit().Error } else { gormDb.Rollback() err = errors.New("表单数据提交失败!请重新提交") } } } else { err = errors.New("表单数据错误!请验证后重新提交!") } return } /* * @ 作者: 秦东 @ 时间: 2023-09-25 11:45:08 @ 功能: 自定义表单编辑记录数据 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) CustomerFormEditData(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 } if _, ok := mapData["id"]; !ok { publicmethod.Result(1, err, c, "非法表单!不能提交数据!") return } var formCont modelAppPlatform.CustomerFormView //获取指定版本的表单 err = formCont.GetCont(map[string]interface{}{"`id`": mapData["id"]}) 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) //当前操作人 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 } uuid, _ := strconv.ParseInt(mapData["formId"].(string), 10, 64) masrWriteMap := MakeFormMapData(uuid, userCont.Key, cureeTime, masterField, masterUnitList, 2) //判断是否 if len(sunFieldAry) > 0 { //有子表 sunTypeAry := make(map[string]map[string]customerform.MasterStruct) for _, v := range formUnitCont.SunFormInfo { sunTypeAry[v.TableName] = v.UbitInfo } err = EditWriteSunDatabase(uuid, userCont.Key, cureeTime, formCont.TableKey, masrWriteMap, sunFieldAry, sunTypeAry) } else { err = overall.CONSTANT_DB_CustomerForm.Table(formCont.TableKey).Where("`masters_key` = ?", uuid).Updates(masterUnitList).Error } if err != nil { publicmethod.Result(104, err, c) return } var taskCont modelAppPlatform.Task // taskCont.Creater = userCont.Key // taskCont.EditTime = cureeTime saveData := publicmethod.MapOut[string]() saveData["`edit_time`"] = time.Now().Unix() saveData["`creater`"] = userCont.Key err = taskCont.EiteCont(map[string]interface{}{"`masters_key`": uuid}, saveData) sendData := publicmethod.MapOut[string]() sendData["err"] = err sendData["cureeTime"] = cureeTime sendData["formJsonCont"] = formJsonCont sendData["masterUnitList"] = masterUnitList sendData["masrWriteMap"] = masrWriteMap publicmethod.Result(0, err, c) } /* * @ 作者: 秦东 @ 时间: 2023-09-25 11:45:08 @ 功能: 查看自定义表单记录数据 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) LookCustomerFormData(c *gin.Context) { var requestData GainCustomerFormLogInfo err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } if requestData.Id == "" { publicmethod.Result(1, err, c, "未知表单参数!请核对1后重新提交!") return } if requestData.MastersKey == "" { publicmethod.Result(1, err, c, "未知表单参数!请核对2后重新提交!") return } var customerFormCont modelAppPlatform.CustomerFormView err = customerFormCont.GetCont(map[string]interface{}{"`id`": requestData.MastersKey}, "`tablekey`", "`table_structure`", "`name`", "`classify`", "`mastesformjson`") if err != nil { publicmethod.Result(107, err, c) return } var formJsonCont customerform.CustomerFormMaster json.Unmarshal([]byte(customerFormCont.MastesFormJson), &formJsonCont) var formUnitCont customerform.FormUnitInfo formUnitCont.GainMasterAndSunFormUnit(customerFormCont.TableKey, formJsonCont.List, true) masterUnitList := make(map[string]customerform.MasterStruct) for _, v := range formUnitCont.MasterInfo { masterUnitList[v.Name] = v } // fmt.Printf("formUnitCont--->%v\n", formUnitCont) masterFormCont := publicmethod.MapOut[string]() err = overall.CONSTANT_DB_CustomerForm.Table(customerFormCont.TableKey).Where("`masters_key` = ?", requestData.Id).Take(&masterFormCont).Error if err != nil { publicmethod.Result(107, err, c) return } // CallBackVal(masterFormCont, masterUnitList) masterFormCont = CustomerFormCallBackVal(masterFormCont, masterUnitList) if customerFormCont.TableStructure != "" { sunFormTable := publicmethod.MapOut[string]() err = json.Unmarshal([]byte(customerFormCont.TableStructure), &sunFormTable) sunTypeAry := make(map[string]map[string]customerform.MasterStruct) for _, v := range formUnitCont.SunFormInfo { sunTypeAry[v.TableName] = v.UbitInfo } if err == nil { for _, v := range sunFormTable { var sunContList []map[string]interface{} if tableName, isOk := v.(string); isOk { overall.CONSTANT_DB_CustomerForm.Table(tableName).Where("`masters_key` = ?", requestData.Id).Find(&sunContList) var sunContListZhuanBian []map[string]interface{} if len(sunContList) > 0 { for _, sclv := range sunContList { if sunTableType, sunIsOk := sunTypeAry[tableName]; sunIsOk { masterFormCont := CustomerFormCallBackVal(sclv, sunTableType) sunContListZhuanBian = append(sunContListZhuanBian, masterFormCont) } else { sunContListZhuanBian = append(sunContListZhuanBian, sclv) } } } masterFormCont[tableName] = sunContListZhuanBian } } } } sendData := publicmethod.MapOut[string]() sendData["err"] = err sendData["customerFormCont"] = customerFormCont sendData["masterFormCont"] = masterFormCont sendData["formJsonCont"] = formJsonCont sendData["customerFormCont.MastesFormJson"] = customerFormCont.MastesFormJson publicmethod.Result(0, masterFormCont, c) } /* * @ 作者: 秦东 @ 时间: 2023-09-28 11:22:08 @ 功能: 自定义表单返回值处理 @ 参数 # @ 返回值 # @ 方法原型 # */ func CallBackVal(val map[string]interface{}, valClass map[string]customerform.MasterStruct) map[string]interface{} { convertVal := publicmethod.MapOut[string]() if len(val) > 0 { for k, v := range val { if val, isOk := valClass[k]; isOk { fielfInfoClass := customerform.AnalysisTable(val) switch fielfInfoClass.Types { case "int", "bigint": //值类型是数组,并且需要分开存储 switch fielfInfoClass.ControlType { case "year": convertVal[k] = publicmethod.TypeToClass(v, 16) case "month": convertVal[k] = publicmethod.TypeToClass(v, 15) case "date": convertVal[k] = publicmethod.TypeToClass(v, 14) case "datetime": convertVal[k] = publicmethod.TypeToClass(v, 11) case "booble": if v == fielfInfoClass.DefaultValue { convertVal[k] = true } else { convertVal[k] = false } case "array": var timeAry []string sterTrime := convertVal[k] timeAry = append(timeAry, publicmethod.TypeToClass(sterTrime, 14)) endKey := fmt.Sprintf("%v_end", k) // var endTrime int64 if endVal, ok := convertVal[endKey]; ok { // convertVal[endKey] = publicmethod.TypeToClass(endVal, 14) timeAry = append(timeAry, publicmethod.TypeToClass(endVal, 14)) } convertVal[k] = timeAry default: convertVal[k] = v } case "booble": if v == fielfInfoClass.DefaultValue { convertVal[k] = true } else { convertVal[k] = false } case "decimal", "float": convertVal[k] = v case "mediumtext", "longtext": if fielfInfoClass.ControlType == "array" { if v != "" { if vStr, ok := v.(string); ok { var vJson []string json.Unmarshal([]byte(vStr), &vJson) convertVal[k] = vJson } } } else { convertVal[k] = v } default: if fielfInfoClass.ControlType == "array" { if v != "" { if vStr, ok := v.(string); ok { var vJson []string json.Unmarshal([]byte(vStr), &vJson) convertVal[k] = vJson } } } else { convertVal[k] = v } } } else { convertVal[k] = v } } } return convertVal } /* * @ 作者: 秦东 @ 时间: 2023-10-08 13:32:06 @ 功能: 自定义表单返回值处理 @ 参数 # @ 返回值 # @ 方法原型 # */ func CustomerFormCallBackVal(val map[string]interface{}, valClass map[string]customerform.MasterStruct) map[string]interface{} { convertVal := publicmethod.MapOut[string]() // fmt.Printf("fielfInfoClass---1-->%v: %v\n", val, valClass) if len(val) > 0 { for k, v := range val { if vals, isOk := valClass[k]; isOk { fielfInfoClass := customerform.AnalysisFormUnitClass(vals) // fmt.Printf("fielfInfoClass----->%v: %v\n", k, fielfInfoClass.FieldType) switch fielfInfoClass.FieldType { case "int": if strVal, ok := v.(string); ok { convertVal[k], _ = strconv.Atoi(strVal) } else { convertVal[k] = v } case "bigint": if fielfInfoClass.ValIsAry { //判断值是否为数组 endField := fmt.Sprintf("%v_end", k) var sendVal []interface{} if strVal, ok := v.(string); ok { vInt64, _ := strconv.ParseInt(strVal, 10, 64) sendVal = append(sendVal, vInt64) } else { sendVal = append(sendVal, v) } if endKeyVal, ok := val[endField]; ok { if endVal, endOk := endKeyVal.(string); endOk { endValInt64, _ := strconv.ParseInt(endVal, 10, 64) sendVal = append(sendVal, endValInt64) } else { sendVal = append(sendVal, endVal) } } convertVal[k] = sendVal } else { if strVal, ok := v.(string); ok { fieldVal, _ := strconv.ParseInt(strVal, 10, 64) convertVal[k] = fieldVal } else { convertVal[k] = v } } case "float": if strVal, ok := v.(string); ok { floatVal, _ := strconv.ParseFloat(strVal, 64) convertVal[k] = floatVal } else { convertVal[k] = v } case "decimal": if strVal, ok := v.(string); ok { floatVal, _ := strconv.ParseFloat(strVal, 64) convertVal[k] = floatVal } else { convertVal[k] = v } case "mediumtext", "longtext": if valAry, ok := v.([]interface{}); ok { if len(valAry) > 0 { valStrJson, _ := json.Marshal(valAry) convertVal[k] = string(valStrJson) } else { convertVal[k] = "" } } else { if fielfInfoClass.ValIsAry { if valStr, ok := v.(string); ok { valStrAry := strings.Split(valStr, ",") if len(valStrAry) > 0 { valStrJson, _ := json.Marshal(valStrAry) convertVal[k] = string(valStrJson) } else { convertVal[k] = "" } } else { convertVal[k] = v } } else { convertVal[k] = v } } case "varchar": if valAry, ok := v.([]interface{}); ok { if len(valAry) > 0 { valStrJson, _ := json.Marshal(valAry) convertVal[k] = string(valStrJson) } else { convertVal[k] = "" } } else { if fielfInfoClass.ValIsAry { if valStr, ok := v.(string); ok { valStrAry := strings.Split(valStr, ",") if len(valStrAry) > 0 { valStrJson, _ := json.Marshal(valStrAry) convertVal[k] = string(valStrJson) } else { convertVal[k] = "" } } else { convertVal[k] = v } } else { convertVal[k] = v } } default: } } else { convertVal[k] = v } } } return convertVal } /* * @ 作者: 秦东 @ 时间: 2023-10-08 16:44:58 @ 功能: @ 参数 #uuid 唯一标识 #creater 创建人 #createrTime 创建时间 #masterTableName 主表标识 #masterDataCont 主表数据 #sunDataList 字表数据列表 @ 返回值 # @ 方法原型 # */ func EditWriteSunDatabase(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).Where("`masters_key` = ?", uuid).Updates(masterDataCont).Error sunCreateIsOk := true for k, v := range sunMasterMap { delSql := fmt.Sprintf("DELETE FROM %v WHERE `masters_key` = %v", k, uuid) delErr := overall.CONSTANT_DB_CustomerForm.Exec(delSql).Error if delErr == nil { sunErr := gormDb.Table(k).Create(v).Error if sunErr != nil { sunCreateIsOk = false break } } else { sunCreateIsOk = false } } if masterErr == nil && sunCreateIsOk { err = gormDb.Commit().Error } else { gormDb.Rollback() err = errors.New("表单数据提交失败!请重新提交") } } } else { //子表不存在时,写入主表数据 err = overall.CONSTANT_DB_CustomerForm.Table(masterTableName).Where("`masters_key` = ?", uuid).Updates(masterDataCont).Error } } else { err = errors.New("表单数据提交失败!请重新提交") } return } /* * @ 作者: 秦东 @ 时间: 2023-10-09 08:37:50 @ 功能: 删除自定义表单记录数据 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) DelCustomerFormDataLog(c *gin.Context) { var requestData publicmethod.CommonId[string] err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } if requestData.Id == "" { publicmethod.Result(1, err, c, "未知数据") return } var taskCont modelAppPlatform.Task err = taskCont.GetCont(map[string]interface{}{"`id`": requestData.Id}) if err != nil { publicmethod.Result(107, err, c) return } saveData := publicmethod.MapOut[string]() saveData["`edit_time`"] = time.Now().Unix() saveData["`status`"] = 5 err = taskCont.EiteCont(map[string]interface{}{"`id`": requestData.Id}, saveData) if err != nil { publicmethod.Result(106, err, c) return } publicmethod.Result(0, err, c) }