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.
229 lines
7.5 KiB
229 lines
7.5 KiB
package taskmanagement
|
|
|
|
import (
|
|
"appPlatform/api/version1/customerform"
|
|
datacenter "appPlatform/api/version1/dataCenter"
|
|
"appPlatform/models/customerForm"
|
|
"appPlatform/models/modelAppPlatform"
|
|
"appPlatform/models/modelshr"
|
|
"appPlatform/overall"
|
|
"appPlatform/overall/publicmethod"
|
|
"encoding/json"
|
|
"fmt"
|
|
"strconv"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2024-06-06 13:57:55
|
|
@ 功能: 自定义App表单新增记录
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (a *ApiMethod) CreateAppTask(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["versionId"]; !ok {
|
|
publicmethod.Result(1, err, c, "非法表单!不能提交数据!")
|
|
return
|
|
}
|
|
status := 1
|
|
if _, ok := mapData["status"]; ok {
|
|
fmt.Printf("mapData[status]:%v------------->%T\n", mapData["status"], mapData["status"])
|
|
if vFloat64, isOk := mapData["status"].(float64); isOk {
|
|
vStr := strconv.FormatFloat(vFloat64, 'f', -1, 64)
|
|
status, _ = strconv.Atoi(vStr)
|
|
}
|
|
}
|
|
var formCont modelAppPlatform.CustomerFormView //获取指定版本的表单
|
|
err = formCont.GetCont(map[string]interface{}{"`id`": mapData["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) //当前操作人
|
|
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, userCont.AdminOrg, 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 = formCont.Groupid
|
|
taskCont.TableKey = formCont.SignCode
|
|
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 = status
|
|
taskCont.FlowKey = formCont.Flowkey
|
|
var flowInfo modelAppPlatform.FlowVersion
|
|
flowInfo.GetCont(map[string]interface{}{"`key`": formCont.Flowkey, "`state`": 1}, "`id`")
|
|
taskCont.FlowRunSing = flowInfo.Id
|
|
masrWriteMap["flow_id"] = 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, userCont.AdminOrg, 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, userCont.AdminOrg, 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["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 = sendMsgInterface.SendMsg
|
|
// msgid, _ := sendMsgInfo.SendMsg(userCont, taskCont.Title, uuid, cureeTime, masterField, masrWriteMap, masterUnitList)
|
|
// fmt.Printf("发送返回信息------------->%v\n\n\n", msgid)
|
|
// if msgid != "" {
|
|
// //设定redis Key名称
|
|
// redisKey := fmt.Sprintf("SendMsg:Work_WeChat_%v", uuid)
|
|
// redisClient := grocerystore.RunRedis(overall.CONSTANT_REDIS3)
|
|
// redisClient.SetRedisTime(86400)
|
|
// redisClient.Set(redisKey, msgid)
|
|
// }
|
|
// 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)
|
|
}
|
|
|