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
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)
|
|
}
|
|
}
|
|
|