应用集成平台服务端
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.
 
 
 

178 lines
5.8 KiB

package customerform
import (
"appPlatform/models/modelAppPlatform"
"appPlatform/models/modelshr"
"appPlatform/overall"
"appPlatform/overall/publicmethod"
"encoding/json"
"fmt"
"github.com/gin-gonic/gin"
)
/*
*
@ 作者: 秦东
@ 时间: 2025-03-07 14:05:56
@ 功能: 日历数据处理
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) CalendarDataList(c *gin.Context) {
var requestData CalendarSearch
c.ShouldBindJSON(&requestData)
if len(requestData.TimeAry) < 1 && len(requestData.TimeMonthAry) < 1 {
publicmethod.Result(1, requestData, c, "未知日期!无法获取字段!2")
return
}
if requestData.Search.FormId == "" {
publicmethod.Result(1, requestData, c, "未知表单!无法获取字段!")
return
}
if requestData.Search.Page == 0 {
requestData.Search.Page = 1
}
if requestData.Search.PageSize == 0 {
requestData.Search.Page = 20
}
//Step1:获取搜索栏目的内容
var listField []SearchButtonInfo
json.Unmarshal([]byte(requestData.Search.SearchData), &listField)
//Step2:获取当前操作人
context, _ := c.Get(overall.MyContJwt)
var userCont modelshr.ManCont
userCont.GetLoginCont(context)
//Step3:获取当前信息表单咨询
var formInfo modelAppPlatform.CustomerFormView
err := formInfo.GetCont(map[string]interface{}{"`cfid`": requestData.Search.FormId, "`status`": 1}, "`tablekey`", "`table_structure`", "`mastesform`", "`mastesformjson`", "`listjson`", "`flowIsOpen`", "`flowkey`")
if err != nil {
publicmethod.Result(1, err, c, "未知表单!无法获取字段!")
return
}
//Step 4: 拆分出列表信息
var listFieldsMap ListPageFields
json.Unmarshal([]byte(formInfo.ListJson), &listFieldsMap)
//Step 5: 拆分出主表单信息
var formJsonCont CustomerFormMaster
json.Unmarshal([]byte(formInfo.MastesFormJson), &formJsonCont)
//Step 6:判断当前是否为正月展示
if requestData.Types != 1 {
//非正月
var listSynv CalendarList
for _, v := range requestData.TimeAry {
syncSeting.Add(1)
go listSynv.HaveEveryDayData(v, formInfo.TableKey, userCont, requestData.Search, listField, listFieldsMap.View, formInfo.ListJson, formJsonCont)
}
syncSeting.Wait()
sendListArt := TimeHaveAry(requestData.TimeAry, listSynv.List)
if len(sendListArt) == 1 {
var onInfo TimeAryInfo
for _, v := range sendListArt {
onInfo = v
}
publicmethod.Result(0, onInfo, c)
return
}
publicmethod.Result(0, sendListArt, c)
} else {
//正月
var sendMonthList []interface{}
for _, v := range requestData.TimeMonthAry { //按周拆分
var listSynv CalendarList
for _, tv := range v { //一周内的天
syncSeting.Add(1)
go listSynv.HaveEveryDayData(tv, formInfo.TableKey, userCont, requestData.Search, listField, listFieldsMap.View, formInfo.ListJson, formJsonCont)
}
syncSeting.Wait()
sendMonthList = append(sendMonthList, TimeHaveAry(v, listSynv.List))
}
publicmethod.Result(0, sendMonthList, c)
}
}
/*
*
@ 作者: 秦东
@ 时间: 2025-03-07 14:27:24
@ 功能: 获取指定日期的数据
@ 参数
#day 日历单个日期参数
#tableName 要操作得数据表
#userCont 当前操作人
#Search 搜索条件
#listField 自定义表单查询条件
#viewCondition 视图设定
#listJson 字段处理
@ 返回值
#
@ 方法原型
#
*/
func (c *CalendarList) HaveEveryDayData(day TimeAryInfo, tableName string, userCont modelshr.ManCont, Search FormPageListAttr, listField []SearchButtonInfo, viewCondition map[string]ViewInfo, listJson string, formJsonCont CustomerFormMaster) {
defer syncSeting.Done()
tableName = fmt.Sprintf("`%v` as f", tableName) //表明
gormDb := overall.CONSTANT_DB_CustomerForm.Table(tableName).Select("f.*,t.status as taskStatus,t.runFlowId")
gormDb = gormDb.Joins("LEFT JOIN `taskrecord` as t ON f.masters_key = t.masters_key")
gormDb = gormDb.Where("f.`creater` = ? ", userCont.Key)
gormDb = gormDb.Where("f.`states` BETWEEN ? AND ?", 1, 2)
gormDb = AnalysisSerachTermSqlIng(listField, gormDb) //将查询条件转换成
startTime, endTime := publicmethod.OenDayStartOrEndTime(day.Date, 1)
if class, isOk := viewCondition["date"]; isOk { //解析视图设定参数
if class.Status { //当前参数启用
if class.Form.StartTime != "" && class.Form.EndTime != "" {
whySql := fmt.Sprintf("f.`%v` BETWEEN %v AND %v OR f.`%v` BETWEEN %v AND %v", class.Form.StartTime, startTime, endTime, class.Form.EndTime, startTime, endTime)
gormDb = gormDb.Where(whySql)
fmt.Printf("语句1===》%v\n", whySql)
} else if class.Form.StartTime != "" && class.Form.EndTime == "" {
whySql := fmt.Sprintf("f.`%v` BETWEEN %v AND %v", class.Form.StartTime, startTime, endTime)
gormDb = gormDb.Where(whySql)
fmt.Printf("语句2===》%v\n", whySql)
} else if class.Form.StartTime == "" && class.Form.EndTime != "" {
whySql := fmt.Sprintf("f.`%v` BETWEEN %v AND %v", class.Form.EndTime, startTime, endTime)
gormDb = gormDb.Where(whySql)
fmt.Printf("语句3===》%v\n", whySql)
} else {
whySql := fmt.Sprintf("f.`creater_time` BETWEEN %v AND %v", startTime, endTime)
fmt.Printf("语句4===》%v\n", whySql)
gormDb = gormDb.Where(whySql)
}
} else {
whySql := fmt.Sprintf("f.`creater_time` BETWEEN %v AND %v", startTime, endTime)
gormDb = gormDb.Where(whySql)
}
} else {
whySql := fmt.Sprintf("f.`creater_time` BETWEEN %v AND %v", startTime, endTime)
gormDb = gormDb.Where(whySql)
}
var formList []map[string]interface{}
err := gormDb.Order("`id` DESC").Find(&formList).Error
if listJson != "" {
var listFieldsMap ListPageFields
err = json.Unmarshal([]byte(listJson), &listFieldsMap)
if err == nil {
formList = listFieldsMap.DevelopSpecificationsSend(formList, formJsonCont)
}
}
if err == nil {
inDate := publicmethod.MapOut[string]()
inDate[day.Date] = formList
c.List = append(c.List, inDate)
}
}