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.
479 lines
14 KiB
479 lines
14 KiB
package taskmanagement
|
|
|
|
import (
|
|
"appPlatform/models/modelAppPlatform"
|
|
"appPlatform/models/modelshr"
|
|
"appPlatform/overall"
|
|
"appPlatform/overall/publicmethod"
|
|
"encoding/json"
|
|
"errors"
|
|
"fmt"
|
|
"strconv"
|
|
"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)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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) {
|
|
requestData := publicmethod.MapOut[string]()
|
|
err := c.ShouldBindQuery(&requestData)
|
|
sendData := publicmethod.MapOut[string]()
|
|
sendData["err"] = err
|
|
sendData["requestData"] = sendData
|
|
publicmethod.Result(0, sendData, 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`")
|
|
if err != nil {
|
|
publicmethod.Result(107, err, c)
|
|
return
|
|
}
|
|
masterFormCont := publicmethod.MapOut[string]()
|
|
err = overall.CONSTANT_DB_CustomerForm.Table(customerFormCont.TableKey).Where("`masters_key` = ?", requestData.Id).Find(&masterFormCont).Error
|
|
if customerFormCont.TableStructure != "" {
|
|
sunFormTable := publicmethod.MapOut[string]()
|
|
err = json.Unmarshal([]byte(customerFormCont.TableStructure), &sunFormTable)
|
|
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)
|
|
masterFormCont[tableName] = sunContList
|
|
}
|
|
}
|
|
}
|
|
}
|
|
sendData := publicmethod.MapOut[string]()
|
|
sendData["err"] = err
|
|
sendData["customerFormCont"] = customerFormCont
|
|
sendData["masterFormCont"] = masterFormCont
|
|
publicmethod.Result(0, masterFormCont, c)
|
|
}
|
|
|