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.
1254 lines
37 KiB
1254 lines
37 KiB
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")
|
|
if requestData.Types != 0 {
|
|
gormDb = gormDb.Where("`classify` = ?", requestData.Types)
|
|
}
|
|
//获取当前登录人得行政组织关系
|
|
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})
|
|
var sendInfo CallBackFormStruct
|
|
err = overall.CONSTANT_DB_AppPlatform.Where("`id` = ?", requestData.Id).Find(&sendInfo).Error
|
|
|
|
if err != nil {
|
|
publicmethod.Result(107, err, c)
|
|
return
|
|
}
|
|
// var sendInfo CallBackFormStruct
|
|
// sendInfo.Id = versionCont.Id
|
|
// sendInfo.TableKey = versionCont.TableKey //表单标识符"`
|
|
// sendInfo.Version = versionCont.Version //版本号"`
|
|
// sendInfo.Status = versionCont.Status //显示状态(1:启用;2:禁用,3:删除)"`
|
|
// sendInfo.MastesForm = versionCont.MastesForm //表单结构"`
|
|
// sendInfo.MastesFormJson = versionCont.MastesFormJson //表单结构json"`
|
|
// sendInfo.Creater = versionCont.Creater //创建人"`
|
|
// sendInfo.CreaterTime = versionCont.CreaterTime //创建时间"`
|
|
// sendInfo.EditTime = versionCont.EditTime //编辑时间"`
|
|
// sendInfo.TableStructure = versionCont.TableStructure //字表结构"`
|
|
// sendInfo.Dict = versionCont.Dict //字表结构"`
|
|
// sendInfo.CfId = versionCont.CfId //
|
|
// sendInfo.Name = versionCont.Name //表单名称"`
|
|
// sendInfo.Classify = versionCont.Classify //分类1:表单;2:流程表单"`
|
|
// sendInfo.Permit = versionCont.Permit //授权范围"`
|
|
// sendInfo.PermitStr = versionCont.PermitStr //授权范围"`
|
|
// sendInfo.Flowkey = versionCont.Flowkey //关联工作流"`
|
|
// sendInfo.UserPermit = versionCont.UserPermit //可见人员"`
|
|
// sendInfo.PostPermit = versionCont.PostPermit //可见角色"`
|
|
// sendInfo.PowerStr = versionCont.PowerStr //权限结构"`
|
|
// sendInfo.Groupid = versionCont.Groupid //分组Id"`
|
|
// sendInfo.Icon = versionCont.Icon //图标"`
|
|
// sendInfo.FlowIsOpen = versionCont.FlowIsOpen //是否开启工作流(1:启用;2:禁用)"`
|
|
sendInfo.FlowkeyStr = strconv.FormatInt(sendInfo.Flowkey, 10)
|
|
sendInfo.CreaterStr = strconv.FormatInt(sendInfo.Creater, 10)
|
|
sendInfo.IdStr = strconv.FormatInt(sendInfo.Id, 10)
|
|
publicmethod.Result(0, sendInfo, 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, "非法表单!1不能提交数据!")
|
|
return
|
|
}
|
|
if _, ok := mapData["id"]; !ok {
|
|
publicmethod.Result(1, err, c, "非法表单!2不能提交数据!")
|
|
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 {
|
|
// fmt.Printf("sunFieldAry:%v\n", sunFieldAry)
|
|
//有子表
|
|
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(masrWriteMap).Error
|
|
// fmt.Printf("sunFieldAry2:%v----->%v\n", err, masrWriteMap)
|
|
}
|
|
|
|
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-11-24 11:08:00
|
|
@ 功能: 查看自定义表单记录数据(新版)
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (a *ApiMethod) LookNewCustomerFormData(c *gin.Context) {
|
|
var requestData publicmethod.PublicId
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
publicmethod.Result(100, err, c)
|
|
return
|
|
}
|
|
if requestData.Id == "" {
|
|
publicmethod.Result(1, err, c, "未知表单参数!请核对1后重新提交!")
|
|
return
|
|
}
|
|
//获取当前流程记录使用得哪个表单及表单组件列表
|
|
var taskInfo modelAppPlatform.Task
|
|
err = taskInfo.GetCont(map[string]interface{}{"`masters_key`": requestData.Id}, "`version_id`", "`mastesformjson`")
|
|
if err != nil {
|
|
publicmethod.Result(107, err, c)
|
|
return
|
|
}
|
|
//展开表单
|
|
var formJsonCont customerform.CustomerFormMaster
|
|
json.Unmarshal([]byte(taskInfo.MastesFormJson), &formJsonCont)
|
|
//获取流程使用得表单数据表
|
|
var customerFormInfo modelAppPlatform.CustomerFormVersion
|
|
err = customerFormInfo.GetCont(map[string]interface{}{"`id`": taskInfo.VersionId}, "`tablekey`", "`table_structure`", "`dict`")
|
|
if err != nil {
|
|
publicmethod.Result(107, err, c)
|
|
return
|
|
}
|
|
var formUnitCont customerform.FormUnitInfo
|
|
formUnitCont.GainMasterAndSunFormUnit(customerFormInfo.TableKey, formJsonCont.List, true)
|
|
masterUnitList := make(map[string]customerform.MasterStruct)
|
|
for _, v := range formUnitCont.MasterInfo {
|
|
masterUnitList[v.Name] = v
|
|
}
|
|
//获取自定义创建表单数据
|
|
masterFormCont := publicmethod.MapOut[string]()
|
|
err = overall.CONSTANT_DB_CustomerForm.Table(customerFormInfo.TableKey).Where("`masters_key` = ?", requestData.Id).Take(&masterFormCont).Error
|
|
if err != nil {
|
|
publicmethod.Result(107, err, c)
|
|
return
|
|
}
|
|
masterFormCont = CustomerFormCallBackVal(masterFormCont, masterUnitList)
|
|
if customerFormInfo.TableStructure != "" {
|
|
sunFormTable := publicmethod.MapOut[string]()
|
|
err = json.Unmarshal([]byte(customerFormInfo.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
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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, endKeyVal)
|
|
}
|
|
}
|
|
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":
|
|
// jkjs, _ := json.Marshal(fielfInfoClass)
|
|
// fmt.Printf("%v:%v------>%T\n", k, string(jkjs), v)
|
|
if fielfInfoClass.ValIsAry && fielfInfoClass.UnitName != "upload" {
|
|
if valStr, ok := v.(string); ok {
|
|
if fielfInfoClass.UnitName != "expand-user" {
|
|
var zhiAry []interface{}
|
|
json.Unmarshal([]byte(valStr), &zhiAry)
|
|
convertVal[k] = zhiAry
|
|
} else {
|
|
var zhiAry []string
|
|
json.Unmarshal([]byte(valStr), &zhiAry)
|
|
convertVal[k] = strings.Join(zhiAry, ",")
|
|
}
|
|
|
|
} else {
|
|
convertVal[k] = v
|
|
}
|
|
|
|
} else {
|
|
convertVal[k] = v
|
|
}
|
|
// 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)
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2023-09-25 11:45:08
|
|
@ 功能: 自定义表单编辑记录数据
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (a *ApiMethod) NewCustomerFormEditData(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["flowKey"]; !ok {
|
|
publicmethod.Result(1, err, c, "非法表单!不能提交数据!")
|
|
return
|
|
}
|
|
// if _, ok := mapData["formId"]; !ok {
|
|
// publicmethod.Result(1, err, c, "非法表单!2不能提交数据!")
|
|
// return
|
|
// }
|
|
var runFlowCont modelAppPlatform.Task
|
|
runFlowCont.GetCont(map[string]interface{}{"`masters_key`": mapData["flowKey"]})
|
|
|
|
var formCont modelAppPlatform.CustomerFormView //获取指定版本的表单
|
|
err = formCont.GetCont(map[string]interface{}{"`id`": runFlowCont.VersionId})
|
|
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["flowKey"].(string), 10, 64)
|
|
masrWriteMap := MakeFormMapData(uuid, userCont.Key, cureeTime, masterField, masterUnitList, 2)
|
|
|
|
//判断是否
|
|
if len(sunFieldAry) > 0 {
|
|
// fmt.Printf("sunFieldAry:%v\n", sunFieldAry)
|
|
//有子表
|
|
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(masrWriteMap).Error
|
|
// fmt.Printf("sunFieldAry2:%v----->%v\n", err, masrWriteMap)
|
|
}
|
|
|
|
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)
|
|
}
|
|
|