diff --git a/gin_server_admin/api/v1/archiveapi/archiveapihandle.go b/gin_server_admin/api/v1/archiveapi/archiveapihandle.go new file mode 100644 index 0000000..81b5ec9 --- /dev/null +++ b/gin_server_admin/api/v1/archiveapi/archiveapihandle.go @@ -0,0 +1,220 @@ +package archiveapi + +import ( + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/commonus" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/archivesmodel" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/gin-gonic/gin" +) + +type ArchiveApiHandle struct{} + +func (a *ArchiveApiHandle) Index(c *gin.Context) { + outPut := commonus.MapOut() + response.Result(0, outPut, "获取成功", c) +} + +//栏目列表 +func (a *ArchiveApiHandle) ArchiveTypeList(c *gin.Context) { + var requestData archiveTypeListStruct + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "参数错误!请重新提交!", c) + return + } + if requestData.PageSize == 0 { + requestData.PageSize = 20 + } + if requestData.Page <= 0 { + requestData.Page = 1 + } + // psge := (requestData.Page - 1) * requestData.PageSize + psge := commonus.CalculatePages(requestData.Page, requestData.PageSize) + var archiveList []archivesmodel.ArchivesType + + //条件 + whereMap := commonus.MapOut() + if requestData.ParentId != 0 { + whereMap["at_parent_id"] = requestData.ParentId + } else { + whereMap["at_parent_id"] = 0 + } + listErr := global.GVA_DB_Master.Where(whereMap).Where("`at_stater` IN ?", []int{1, 2}).Order("`at_sort` ASC,`at_id` DESC").Limit(requestData.PageSize).Offset(psge).Find(&archiveList).Error + if listErr != nil { + response.Result(102, err, "未获取到数据!", c) + return + } + var outPutList []archiveTypeOutPut + for _, listVal := range archiveList { + var listCont archiveTypeOutPut + listCont.Id = listVal.Id + listCont.ColumnrName = listVal.Title + listCont.Sort = listVal.Sort + if listVal.Stater == 1 { + listCont.State = true + } else { + listCont.State = false + } + outPutList = append(outPutList, listCont) + } + + var total int64 //获取所有数据 + counrErr := global.GVA_DB_Master.Model(&archiveList).Where(whereMap).Where("`at_stater` IN ?", []int{1, 2}).Count(&total).Error + if counrErr != nil { + total = 0 + } + countSum := len(outPutList) + printData := commonus.OutPutList(total, int64(countSum), requestData.Page, requestData.PageSize, outPutList) + // fmt.Printf("%v\n", printData) + response.Result(0, printData, "查询成功!", c) +} + +//添加栏目 +func (a *ArchiveApiHandle) AddArchive(c *gin.Context) { + var arrData appArchiveType + err := c.ShouldBindJSON(&arrData) + if err != nil { + response.Result(101, err, "参数错误!请重新提交!", c) + return + } + if arrData.UID == 0 { + response.Result(102, err, "参数错误!请重新提交!", c) + return + } + if arrData.Title == "" { + response.Result(103, err, "请输入栏目名称!", c) + return + } + if arrData.Sort == 0 { + arrData.Sort = 50 + } + // if + var archiveInfo archivesmodel.ArchivesType + archiveInfo.Id = commonus.GetFileNumberEs() + archiveInfo.ParentId = arrData.ParentId + archiveInfo.Stater = 1 + archiveInfo.UID = arrData.UID + archiveInfo.Sort = arrData.Sort + archiveInfo.Time = time.Now().Unix() + archiveInfo.Title = arrData.Title + addArchiveErr := global.GVA_DB_Master.Create(&archiveInfo).Error + if addArchiveErr != nil { + response.Result(104, archiveInfo, "数据写入失败!", c) + } else { + response.Result(0, addArchiveErr, "数据写入成功!", c) + } +} + +//获取单个信息栏目 +func (a *ArchiveApiHandle) GetArchiveInfo(c *gin.Context) { + var arrData commonus.SetId + err := c.ShouldBindJSON(&arrData) + if err != nil { + response.Result(101, err, "参数错误!请重新提交!", c) + return + } + if arrData.Id == 0 { + response.Result(102, arrData, "参数错误!请重新提交!", c) + return + } + var archiveInfo archivesmodel.ArchivesType + archiveInfoErr := global.GVA_DB_Master.Where("at_id = ?", arrData.Id).First(&archiveInfo).Error + if archiveInfoErr != nil { + response.Result(103, archiveInfoErr, "该栏目不存在!", c) + return + } + response.Result(0, archiveInfo, "获取成功!", c) +} + +//改变栏目状态 +func (a *ArchiveApiHandle) EiteArchiveState(c *gin.Context) { + var arrData archiveState + err := c.ShouldBindJSON(&arrData) + if err != nil { + response.Result(101, err, "参数错误!请重新提交!", c) + return + } + if arrData.Id == 0 { + response.Result(102, arrData, "参数错误!请重新提交!", c) + return + } + if arrData.State == 0 { + arrData.State = 1 + } + var archiveInfo archivesmodel.ArchivesType + if arrData.IsDel != 1 { + isTrue, saveErr := archiveStateSet(archiveInfo, arrData) + if isTrue != true { + response.Result(103, saveErr, "修改失败!", c) + return + } + response.Result(0, arrData, "修改成功!", c) + } else { + if arrData.State == 3 { + archiveInfoErr := global.GVA_DB_Master.Where("at_id = ?", arrData.Id).Delete(&archiveInfo).Error + if archiveInfoErr != nil { + response.Result(104, arrData, "删除失败!", c) + return + } + response.Result(0, arrData, "删除成功!", c) + } else { + isTrue, saveErr := archiveStateSet(archiveInfo, arrData) + if isTrue != true { + response.Result(105, saveErr, "修改失败!", c) + return + } + response.Result(0, arrData, "修改成功!", c) + } + + } +} + +//状态软操作 +func archiveStateSet(archiveInfo archivesmodel.ArchivesType, arrData archiveState) (isTrue bool, archiveInfoErr error) { + isTrue = false + //软处理 + saveData := commonus.MapOut() + saveData["at_stater"] = arrData.State + saveData["at_time"] = time.Now().Unix() + archiveInfoErr = global.GVA_DB_Master.Model(&archiveInfo).Where("at_id = ?", arrData.Id).Updates(saveData).Error + if archiveInfoErr != nil { + return + } + isTrue = true + return +} + +//修改栏目信息 +func (a *ArchiveApiHandle) EiteArchiveInfo(c *gin.Context) { + var arrData eiteArchiveCont + err := c.ShouldBindJSON(&arrData) + if err != nil { + response.Result(101, err, "参数错误!请重新提交!", c) + return + } + if arrData.Id == 0 { + response.Result(102, arrData, "参数错误!请重新提交!", c) + return + } + if arrData.Title == "" { + response.Result(103, err, "请输入栏目名称!", c) + return + } + if arrData.Sort == 0 { + arrData.Sort = 50 + } + var archiveInfo archivesmodel.ArchivesType + saveData := commonus.MapOut() + saveData["at_title"] = arrData.Title + saveData["at_sort"] = arrData.Sort + saveData["at_time"] = time.Now().Unix() + archiveInfoErr := global.GVA_DB_Master.Model(&archiveInfo).Where("at_id = ?", arrData.Id).Updates(saveData).Error + if archiveInfoErr != nil { + response.Result(104, err, "修改失败!", c) + return + } + response.Result(0, err, "修改成功!", c) +} diff --git a/gin_server_admin/api/v1/archiveapi/enter.go b/gin_server_admin/api/v1/archiveapi/enter.go new file mode 100644 index 0000000..0c48379 --- /dev/null +++ b/gin_server_admin/api/v1/archiveapi/enter.go @@ -0,0 +1,6 @@ +package archiveapi + +type ApiGroup struct { + ArchiveApiHandle + GraphicInformation +} diff --git a/gin_server_admin/api/v1/archiveapi/graphicinformation.go b/gin_server_admin/api/v1/archiveapi/graphicinformation.go new file mode 100644 index 0000000..b2d92c0 --- /dev/null +++ b/gin_server_admin/api/v1/archiveapi/graphicinformation.go @@ -0,0 +1,147 @@ +package archiveapi + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/commonus" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/archivesmodel" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/gin-gonic/gin" +) + +//图文信息模块 +type GraphicInformation struct{} + +//文档列表 +func (g *GraphicInformation) ArchiveFileList(c *gin.Context) { + var requestData fileList + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "参数错误!请重新提交!", c) + return + } + if requestData.ParentId == 0 { + response.Result(102, err, "参数错误!请重新提交!", c) + return + } + //查询条件 + whereMap := commonus.MapOut() + whereMap["g_parent"] = requestData.ParentId + //判断集团 + if requestData.Group != 0 { + whereMap["g_write_group"] = requestData.Group + } + //判断分厂 + if requestData.Factory != 0 { + whereMap["g_write_bfid"] = requestData.Factory + } + //判断工段 + if requestData.Position != 0 { + whereMap["g_ws_id"] = requestData.Position + } + //判断班组 + if requestData.Team != 0 { + whereMap["g_team"] = requestData.Team + } + //判断所属栏目 + if requestData.ColumnId != 0 { + whereMap["g_parent_sun"] = requestData.ColumnId + } + if requestData.PageSize == 0 { + requestData.PageSize = 20 + } + if requestData.Page <= 0 { + requestData.Page = 1 + } + // psge := (requestData.Page - 1) * requestData.PageSize + appointPages := commonus.CalculatePages(requestData.Page, requestData.PageSize) + var fileList []archivesmodel.ArchiveFile + var total int64 //获取所有数据 + if requestData.Title != "" { + listTitleErr := global.GVA_DB_BooImgkDate.Where(whereMap).Where("`g_title` LIKE %?% AND `g_state` IN ?", requestData.Title, []int{1, 2, 3}).Order("`g_id` DESC").Limit(requestData.PageSize).Offset(appointPages).Find(&fileList).Error + if listTitleErr != nil { + response.Result(103, listTitleErr, "数据获取失败!", c) + return + } + counrErr := global.GVA_DB_BooImgkDate.Model(&fileList).Where(whereMap).Where("`g_title` LIKE %?% AND `g_state` IN ?", requestData.Title, []int{1, 2, 3}).Count(&total).Error + if counrErr != nil { + total = 0 + } + } else { + listErr := global.GVA_DB_BooImgkDate.Where(whereMap).Where("`g_state` IN ?", []int{1, 2, 3}).Order("`g_id` DESC").Limit(requestData.PageSize).Offset(appointPages).Find(&fileList).Error + if listErr != nil { + response.Result(104, listErr, "数据获取失败!", c) + return + } + counrErr := global.GVA_DB_BooImgkDate.Model(&fileList).Where(whereMap).Where("`g_state` IN ?", []int{1, 2, 3}).Count(&total).Error + if counrErr != nil { + total = 0 + } + } + var fileListAry []callBackFilesList + for _, fileCont := range fileList { + var archiveTypeCont archivesmodel.ArchivesType + + var fileListInfo callBackFilesList + fileListInfo.Id = fileCont.Id + fileListInfo.Title = fileCont.Title + fileListInfo.ColumnId = fileCont.ParentSun + + archiveTypeCont.Id = fileCont.ParentSun + arcTypeErr := archiveTypeCont.GetArchiveTypeInfo() + // fmt.Printf("%v========>%v------->%v\n", arcTypeErr, archiveTypeCont, archiveTypeCont.Title) + if arcTypeErr == nil { + fileListInfo.ColumnTitle = archiveTypeCont.Title + } else { + fileListInfo.ColumnTitle = "" + } + reading, comment, collect, likes, tread, score := getBookArrter(fileCont.Id) //计算文章属性 + + fileListInfo.Reading = reading + fileListInfo.Comment = comment + fileListInfo.Collect = collect + fileListInfo.Likes = likes + fileListInfo.Tread = tread + fileListInfo.Score = score + + fileListInfo.Scope = fileCont.VisitStrat + if fileCont.State == 2 { + fileListInfo.State = true + } else { + fileListInfo.State = false + } + + fileListAry = append(fileListAry, fileListInfo) + } + + countSum := len(fileListAry) + printData := commonus.OutPutList(total, int64(countSum), requestData.Page, requestData.PageSize, fileListAry) + // fmt.Printf("%v\n", printData) + response.Result(0, printData, "查询成功!", c) +} + +//获取文档属性 global.GVA_DB_BookDate +func getBookArrter(id int64) (Reading, Comment, Collect, Likes, Tread, Score int64) { + var bookAttr archivesmodel.BookAttribute + readingErr := global.GVA_DB_BookDate.Model(&bookAttr).Where("`b_file_id` = ? AND `b_stater` = ? AND `b_type` = ?", id, 1, 1).Count(&Reading).Error + if readingErr != nil { + Reading = 0 + } + collectErr := global.GVA_DB_BookDate.Model(&bookAttr).Where("`b_file_id` = ? AND `b_stater` = ? AND `b_type` = ?", id, 1, 2).Count(&Collect).Error + if collectErr != nil { + Collect = 0 + } + likesErr := global.GVA_DB_BookDate.Model(&bookAttr).Where("`b_file_id` = ? AND `b_stater` = ? AND `b_type` = ?", id, 1, 3).Count(&Likes).Error + if likesErr != nil { + Likes = 0 + } + treadErr := global.GVA_DB_BookDate.Model(&bookAttr).Where("`b_file_id` = ? AND `b_stater` = ? AND `b_type` = ?", id, 1, 3).Count(&Tread).Error + if treadErr != nil { + Tread = 0 + } + var siscussMsg archivesmodel.DiscussMsg + commentErr := global.GVA_DB_BookDate.Model(&siscussMsg).Where("dis_file_id = ? AND dis_stater = ?", id, 2).Count(&Comment).Error + if commentErr != nil { + Comment = 0 + } + return +} diff --git a/gin_server_admin/api/v1/archiveapi/requestdata.go b/gin_server_admin/api/v1/archiveapi/requestdata.go new file mode 100644 index 0000000..33eb5f9 --- /dev/null +++ b/gin_server_admin/api/v1/archiveapi/requestdata.go @@ -0,0 +1,73 @@ +package archiveapi + +import "github.com/flipped-aurora/gin-vue-admin/server/commonus" + +//ID + +//文档接收列表 +type archiveTypeListStruct struct { + commonus.PageSetLimt + ParentId int64 `json:"parentId"` +} + +//文档类型输出格式 +type archiveTypeOutPut struct { + commonus.SetId + ColumnrName string `json:"columnr_name"` //栏目名称 + Sort int `json:"sort"` // 排序 + State bool `json:"state"` // 状态 +} + +//添加栏目 +type appArchiveType struct { + UID int64 `json:"uid"` //添加人 + ParentId int64 `json:"parentId"` //父级 + Title string `json:"title"` //标题 + Sort int `json:"sort"` // 排序 +} + +//状态修改 +type archiveState struct { + commonus.SetId + State int `json:"state"` // 状态 + IsDel int `json:"isdel"` // 是否强制删除 +} + +//修改栏目 +type eiteArchiveCont struct { + commonus.SetId + appArchiveType +} + +//文档列表查询 +type fileList struct { + commonus.PageSetLimt + ParentId int64 `json:"parentId"` //父级 + Title string `json:"title"` //标题 + ColumnId int64 `json:"columnId"` //栏目ID + GroupStruct +} + +//组织架构相关 +type GroupStruct struct { + Group int64 `json:"group"` //集团 + Factory int64 `json:"factory"` //分厂 + Position int64 `json:"position"` //工段 + Team int64 `json:"team"` //班组 +} + +//文档列表返回结构 +type callBackFilesList struct { + commonus.SetId + Title string `json:"title"` //标题 + ColumnId int64 `json:"columnId"` //栏目ID + ColumnTitle string `json:"columnTitle"` //栏目标题 + Scope int `json:"scope"` //可见范围 + Reading int64 `json:"reading"` //阅读量 + Comment int64 `json:"comment"` //评论数 + Collect int64 `json:"collect"` //收藏数 + Likes int64 `json:"like"` //点赞数 + Tread int64 `json:"tread"` //踩 + Score int64 `json:"score"` //综合评分 + State bool `json:"state"` //状态 +} diff --git a/gin_server_admin/api/v1/enter.go b/gin_server_admin/api/v1/enter.go index 4443115..0285b1f 100644 --- a/gin_server_admin/api/v1/enter.go +++ b/gin_server_admin/api/v1/enter.go @@ -1,21 +1,25 @@ package v1 import ( + "github.com/flipped-aurora/gin-vue-admin/server/api/v1/archiveapi" "github.com/flipped-aurora/gin-vue-admin/server/api/v1/autocode" "github.com/flipped-aurora/gin-vue-admin/server/api/v1/example" "github.com/flipped-aurora/gin-vue-admin/server/api/v1/examtestpage" + "github.com/flipped-aurora/gin-vue-admin/server/api/v1/fileuploaddownload" "github.com/flipped-aurora/gin-vue-admin/server/api/v1/shiyan" "github.com/flipped-aurora/gin-vue-admin/server/api/v1/system" "github.com/flipped-aurora/gin-vue-admin/server/api/v1/wechatcallback" ) type ApiGroup struct { - ExampleApiGroup example.ApiGroup - SystemApiGroup system.ApiGroup - AutoCodeApiGroup autocode.ApiGroup - ShiyanApiGroup shiyan.ApiGroup - GroupHandleApiGroup examtestpage.ApiGroup - WeCahtCallBackGroup wechatcallback.ApiGroup + ExampleApiGroup example.ApiGroup + SystemApiGroup system.ApiGroup + AutoCodeApiGroup autocode.ApiGroup + ShiyanApiGroup shiyan.ApiGroup + GroupHandleApiGroup examtestpage.ApiGroup + WeCahtCallBackGroup wechatcallback.ApiGroup + ArchiveApi archiveapi.ApiGroup + FileUploadOrDownloadApi fileuploaddownload.ApiGroup } var ApiGroupApp = new(ApiGroup) diff --git a/gin_server_admin/api/v1/examtestpage/healthreportstat.go b/gin_server_admin/api/v1/examtestpage/healthreportstat.go index cc0c6b4..b13a0c4 100644 --- a/gin_server_admin/api/v1/examtestpage/healthreportstat.go +++ b/gin_server_admin/api/v1/examtestpage/healthreportstat.go @@ -330,8 +330,14 @@ func sendMessAgeAlarm(calCulTime int64, alarmUser []map[string]interface{}) { sendImgMsg.AgentId = appId sendImgMsg.News.Articles = sendContAry sendImgMsg.DuplicateCheckInterval = 1800 - sendImgMsg.SendImgMessage() + callbakcMsg, isTrueCall, callBackCont := sendImgMsg.SendImgMessage() + fmt.Printf("发送信息返回:%v-----------%v----------->%v\n", callbakcMsg, isTrueCall, callBackCont) + } else { + fmt.Println("没有要通知的人") } + + } else { + fmt.Println("没有要通知的人") } // fmt.Printf("%v---------------------->%v\n", sendText, sendText) } diff --git a/gin_server_admin/api/v1/fileuploaddownload/enter.go b/gin_server_admin/api/v1/fileuploaddownload/enter.go new file mode 100644 index 0000000..6a58da7 --- /dev/null +++ b/gin_server_admin/api/v1/fileuploaddownload/enter.go @@ -0,0 +1,5 @@ +package fileuploaddownload + +type ApiGroup struct { + FileUploadDownload +} diff --git a/gin_server_admin/api/v1/fileuploaddownload/fileuploaddown.go b/gin_server_admin/api/v1/fileuploaddownload/fileuploaddown.go new file mode 100644 index 0000000..b18dd62 --- /dev/null +++ b/gin_server_admin/api/v1/fileuploaddownload/fileuploaddown.go @@ -0,0 +1,288 @@ +package fileuploaddownload + +import ( + "bytes" + "encoding/json" + "fmt" + "io/ioutil" + "net/http" + "net/url" + "strconv" + "strings" + "unsafe" + + "github.com/flipped-aurora/gin-vue-admin/server/commonus" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/gin-gonic/gin" +) + +type FileUploadDownload struct{} + +type urlData struct { + Type int `json:"typeese"` + Sign string `json:"sign"` +} + +//上传文件(远程) +func (f *FileUploadDownload) LongRangeFileUpload(c *gin.Context) { + // var file example.ExaFileUploadAndDownload + // noSave := c.DefaultQuery("noSave", "0") + var reportStatistics urlData + err := c.ShouldBindJSON(&reportStatistics) + + file, errs := c.FormFile("file") + // filePart, header, err := c.Request.FormFile("file") + outPut := commonus.MapOut() + // outPut["filePart"] = filePart + // outPut["header"] = header + // outPut["err"] = err + // outPut["noSave"] = noSave + outPut["file"] = file + outPut["errs"] = errs + outPut["err"] = err + outPut["reportStatistics"] = reportStatistics + + // url := "http://docu.hxgk.net/uploadfileing/uploadimging" + var jsonPostSample JsonPostSample + jsonPostSample.SamplePost() + + // client := &http.Client{} + + // config := map[string]interface{}{} + // config["type"] = 0 + // config["sign"] = "input" + // // config["afa"] = 2 + // configdata, _ := json.Marshal(config) + + // outPut["configdata"] = string(configdata) + + // //json序列化 + // post := "{\"type\":\"" + string(configdata) + + // "\",\"sign\":\"" + string(configdata) + + // "\"}" + + // fmt.Println(url, "post", post) + + // var jsonStr = []byte(post) + // fmt.Println("jsonStr", jsonStr) + // fmt.Println("new_str", bytes.NewBuffer(jsonStr)) + + // // req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr)) + // posts := "type=1&sign=123" + // req, err := http.NewRequest("POST", url, strings.NewReader(posts)) + // if err != nil { + // // handle error + // } + + // req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + // // req.Header.Set("Content-Type", "application/json") + // // req.Header.Set("Cookie", "name=anny") + + // resp, err := client.Do(req) + + // defer resp.Body.Close() + + // body, err := ioutil.ReadAll(resp.Body) + + // outPut["body"] = string(body) + + response.Result(0, outPut, "获取成功", c) +} + +func sendPost1(urlStr string) { + data := make(url.Values) + data["name"] = []string{"rnben"} + + res, err := http.PostForm(urlStr, data) + if err != nil { + fmt.Println(err.Error()) + return + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + fmt.Printf("==============>%v\n", string(body)) +} + +func postData(urlStr string) { + http.HandleFunc(urlStr, func(w http.ResponseWriter, r *http.Request) { + if r.Method == "POST" { + var ( + name string = r.PostFormValue("type") + ) + fmt.Printf("key is : %s\n", name) + } + }) + + err := http.ListenAndServe(":80", nil) + if err != nil { + fmt.Println(err.Error()) + return + } +} + +func httpDo(urlStr string) { + client := &http.Client{} + + req, err := http.NewRequest("POST", urlStr, strings.NewReader("sign=cjb")) + if err != nil { + // handle error + } + // req.Header.Set("Accept", "application/json, text/javascript, */*; q=0.01") + // req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + req.Header.Set("Content-Type", "application/json") + req.Header.Set("Cookie", "name=anny") + + resp, err := client.Do(req) + + defer resp.Body.Close() + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + // handle error + } + + fmt.Printf("Body------------------->%v\n", string(body)) +} + +//上传测试副本 +func (f *FileUploadDownload) LongRangeFileUploadES(c *gin.Context) { + // var file example.ExaFileUploadAndDownload + // noSave := c.DefaultQuery("noSave", "0") + var reportStatistics urlData + err := c.ShouldBindJSON(&reportStatistics) + + file, errs := c.FormFile("file") + // filePart, header, err := c.Request.FormFile("file") + outPut := commonus.MapOut() + // outPut["filePart"] = filePart + // outPut["header"] = header + // outPut["err"] = err + // outPut["noSave"] = noSave + outPut["file"] = file + outPut["errs"] = errs + // outPut["reportStatistics"] = reportStatistics + + // if err != nil { + // // global.GVA_LOG.Error("接收文件失败!", zap.Any("err", err)) + // // response.FailWithMessage("接收文件失败", c) + // outPut["msgerr"] = "接收文件失败" + // // return + // } else { + // outPut["msgerr"] = "接收文件成功" + // } + + // config := map[string]interface{}{} + // config["Id"] = 0 + // config["afa"] = "input" + // config["afa"] = 2 + // configdata, _ := json.Marshal(config) + // fmt.Println(config) + // body := bytes.NewBuffer([]byte(configdata)) + + // configdata, _ := json.Marshal(outPut) + // body := bytes.NewBuffer([]byte(configdata)) + // resp, errkjh := http.Post("http://docs.hxgk.group/uploadfileing/uploadimging", "multipart/form-data;charset=utf-8", body) + + // outPut["resp"] = resp + // outPut["errkjh"] = errkjh + DataUrlVal := make(map[string]string) + // DataUrlVal.Add("type", strconv.Itoa(reportStatistics.Type)) + // DataUrlVal.Add("sign", reportStatistics.Sign) + DataUrlVal["type"] = strconv.Itoa(reportStatistics.Type) + DataUrlVal["sign"] = reportStatistics.Sign + // DataUrlValJson, _ := json.Marshal(DataUrlVal) + // DataUrlVal := url.Values{} + + // url := "http://docs.hxgk.group/uploadfileing/uploadimging" + url := "http://docu.hxgk.net/uploadfileing/uploadimging" + // request, err := http.NewRequest("POST", url, strings.NewReader(string(DataUrlValJson))) + // if err != nil { + // response.Result(0, err, "打开链接失败", c) + // return + // } + // request.Header.Set("Accept", "application/json, text/javascript, */*; q=0.01") + // // request.Header.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8") + // request.Header.Add("Accept-Encoding", "gzip, deflate, br") + // request.Header.Add("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4") + // request.Header.Add("Connection", "keep-alive") + // request.Header.Add("Content-Length", "25") + // request.Header.Add("Content-Type", "application/x-www-form-urlencoded") + // request.Header.Add("Cookie", "user_trace_token=20170425200852-dfbddc2c21fd492caac33936c08aef7e; LGUID=20170425200852-f2e56fe3-29af-11e7-b359-5254005c3644; showExpriedIndex=1; showExpriedCompanyHome=1; showExpriedMyPublish=1; hasDeliver=22; index_location_city=%E5%85%A8%E5%9B%BD; JSESSIONID=CEB4F9FAD55FDA93B8B43DC64F6D3DB8; TG-TRACK-CODE=search_code; SEARCH_ID=b642e683bb424e7f8622b0c6a17ffeeb; Hm_lvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1493122129,1493380366; Hm_lpvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1493383810; _ga=GA1.2.1167865619.1493122129; LGSID=20170428195247-32c086bf-2c09-11e7-871f-525400f775ce; LGRID=20170428205011-376bf3ce-2c11-11e7-8724-525400f775ce; _putrc=AFBE3C2EAEBB8730") + // request.Header.Add("Host", "www.lagou.com") + // request.Header.Add("Origin", "https://www.lagou.com") + // request.Header.Add("Referer", "https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=") + // request.Header.Add("X-Anit-Forge-Code", "0") + // request.Header.Add("X-Anit-Forge-Token", "None") + // request.Header.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36") + // request.Header.Add("X-Requested-With", "XMLHttpRequest") + // client := &http.Client{} + // responseww, err := client.Do(request) + + // if err != nil { + // response.Result(102, err, "打开链接失败", c) + // return + // } + // defer responseww.Body.Close() + // body, err := ioutil.ReadAll(responseww.Body) + // outPut["body"] = string(body) + // outPut["DataUrlValJson"] = string(DataUrlValJson) + + // PostWithFormData("POST", url, &DataUrlVal) + + responsesss, err := http.Post( + url, + "application/x-www-form-urlencoded", + strings.NewReader("type=1&age=99"), + ) + outPut["err"] = err + defer responsesss.Body.Close() + body, err := ioutil.ReadAll(responsesss.Body) + outPut["body"] = string(body) + + httpDo(url) + + response.Result(0, outPut, "获取成功", c) +} + +type JsonPostSample struct { +} + +func (this *JsonPostSample) SamplePost() { + song := make(map[string]interface{}) + song["name"] = "李白" + song["timelength"] = 128 + song["author"] = "李荣浩" + bytesData, err := json.Marshal(song) + if err != nil { + fmt.Println(err.Error()) + return + } + reader := bytes.NewReader(bytesData) + // url := "http://localhost/echo.php" + url := "http://docu.hxgk.net/uploadfileing/uploadimging" + request, err := http.NewRequest("POST", url, reader) + if err != nil { + fmt.Println(err.Error()) + return + } + request.Header.Set("Content-Type", "application/json;charset=UTF-8") + client := http.Client{} + resp, err := client.Do(request) + if err != nil { + fmt.Println(err.Error()) + return + } + respBytes, err := ioutil.ReadAll(resp.Body) + if err != nil { + fmt.Println(err.Error()) + return + } + //byte数组直接转成string,优化内存 + str := (*string)(unsafe.Pointer(&respBytes)) + fmt.Println(*str) +} + +func curlShiyan(url string) { + // hsj := httpclient.PostJson() +} diff --git a/gin_server_admin/api/v1/shiyan/shiyan.go b/gin_server_admin/api/v1/shiyan/shiyan.go index eecb5d9..e92293c 100644 --- a/gin_server_admin/api/v1/shiyan/shiyan.go +++ b/gin_server_admin/api/v1/shiyan/shiyan.go @@ -1,15 +1,22 @@ package shiyan import ( + "encoding/json" + "encoding/xml" "fmt" + "os" "strconv" + "time" "github.com/flipped-aurora/gin-vue-admin/server/commonus" "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/approvalprocess" "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" "github.com/flipped-aurora/gin-vue-admin/server/model/testpage" "github.com/flipped-aurora/gin-vue-admin/server/model/wechat" + "github.com/flipped-aurora/gin-vue-admin/server/utils/redishandel" "github.com/gin-gonic/gin" + "github.com/mitchellh/mapstructure" ) type ShiyanApi struct { @@ -105,3 +112,707 @@ func (d *Ddigui) faherDigui(id int64, groupStruct []wechat.GroupForm, parentId [ // fmt.Printf("%v==========>*******\n", parentIds) return parentIds } + +//实验结果保存到数组 +func (s *ShiyanApi) GormToMap(c *gin.Context) { + // returnData := commonus.MapOut() + // var returnData []map[string]interface{} + // tableName := "groupform" + // global.GVA_DB_WatchDate.Table(tableName).Find(&returnData) + var pGorm commonus.GormTopMap + pGorm.Db = global.GVA_DB_WatchDate + pGorm.TableName = "groupform" + returnData := commonus.MapOut() + returnData["ary"] = pGorm.PublicOrmToMap() + returnData["one"] = pGorm.PublicOrmToMapOne() + response.Result(0, returnData, "查询成功", c) +} + +type PersonInfo struct { + DefinitIons interface{} `json:"definitions"` +} + +//读取json文件解析 +func (s *ShiyanApi) ReadJsonFiles(c *gin.Context) { + + filePtr, err := os.Open("conf/forkflow.json") + defer filePtr.Close() + if err != nil { + dfg := fmt.Sprintf("Open file failed [Err:%s]", err.Error()) + // fmt.Println("Open file failed [Err:%s]", err.Error()) + response.Result(0, dfg, "查询成功", c) + return + } + decoder := json.NewDecoder(filePtr) + + var person []PersonInfo + + err = decoder.Decode(&person) + if err != nil { + fmt.Println("Decoder failed", err.Error()) + + } + + fmt.Println("Open file failed [Err:%s]", person) + returnData := commonus.MapOut() + returnData["json"] = person + response.Result(0, returnData, "查询成功", c) +} + +//XML转换处理 + +/* +*XML结构体 + */ +type Definitions struct { + XMLName xml.Name `xml:"definitions" json:"definitions"` + Text string `xml:",chardata" json:"chardata"` + Bpmn2 string `xml:"bpmn2,attr" json:"bpmn2"` + Xsi string `xml:"xsi,attr" json:"xsi"` + Bpmndi string `xml:"bpmndi,attr" json:"bpmndi"` + Dc string `xml:"dc,attr" json:"dc"` + Flowable string `xml:"flowable,attr" json:"flowable"` + Di string `xml:"di,attr" json:"di"` + ID string `xml:"id,attr" json:"id"` + TargetNamespace string `xml:"targetNamespace,attr" json:"targetNamespace"` + SchemaLocation string `xml:"schemaLocation,attr" json:"schemaLocation"` + Process ProcessStruct `xml:"process" json:"process"` //工作流过程 + BPMNDiagram BPMNDiagramStruct `xml:"BPMNDiagram" json:"BPMNDiagram"` //BPMN图结构 +} + +//工作流过程 +type ProcessStruct struct { + TextAndIdStruct + NameStruct + Documentation Documentationstruct `xml:"documentation" json:"documentation"` //结构描述 + StartEvent StartEventStruct `xml:"startEvent" json:"startEvent"` //开始事件 + UserTask []UserTaskStruct `xml:"userTask" json:"userTask"` //流程主体(用户任务) + EndEvent EndEventStruct `xml:"endEvent" json:"endEvent"` //结束事件 + SequenceFlow []SequenceFlowStruct `xml:"sequenceFlow" json:"sequenceFlow"` //序列流 +} + +//text结构体 +type TextStruct struct { + Text string `xml:",chardata" json:",text"` +} + +//name结构体 +type NameStruct struct { + Name string `xml:"name,attr" json:"name"` +} + +//Text与ID 结构 +type TextAndIdStruct struct { + TextStruct + ID string `xml:"id,attr" json:"id"` +} + +type Documentationstruct struct { + TextStruct +} + +//工作流开始事件 +type StartEventStruct struct { + TextAndIdStruct + NameStruct + Outgoing []OutgoingStruct `xml:"outgoing" json:"outgoing"` //流程出口 +} + +//流程出口结构 +type OutgoingStruct struct { + TextStruct +} + +//流程主体(用户任务) +type UserTaskStruct struct { + TextAndIdStruct + NameStruct + Assignee string `xml:"assignee,attr" json:"assignee"` //处理人 + CandidateGroups string `xml:"candidateGroups,attr" json:"candidateGroups"` //处理角色 + CandidateUsers string `xml:"candidateUsers,attr" json:"candidateUsers"` //处理人 + Incoming []IncomingStruct `xml:"incoming" json:"incoming"` //来源 + Outgoing []OutgoingStruct `xml:"outgoing" json:"outgoing"` //流程去向(下一个节点) +} + +//本节点来源 +type IncomingStruct struct { + TextStruct +} + +//结束事件 +type EndEventStruct struct { + TextAndIdStruct + NameStruct + Incoming []IncomingStruct `xml:"incoming" json:"incoming"` //来源 +} + +//序列流 +type SequenceFlowStruct struct { + TextAndIdStruct + NameStruct + SourceRef string `xml:"sourceRef,attr" json:"sourceRef"` //源 + TargetRef string `xml:"targetRef,attr" json:"targetRef"` //流向 + ConditionExpression ConditionExpressionStruct `xml:"conditionExpression" json:"conditionExpression"` //条件表达式 +} + +//条件表达式 +type ConditionExpressionStruct struct { + TextStruct + Type string `xml:"type,attr" json:"type"` +} + +//BPMN图结构 +type BPMNDiagramStruct struct { + TextAndIdStruct + BPMNPlane BPMNPlaneStruct `xml:"BPMNPlane" json:"BPMNPlane"` +} + +//图平面坐标参数 +type BPMNPlaneStruct struct { + TextAndIdStruct + BpmnElement string `xml:"bpmnElement,attr" json:"bpmnElement"` //Bpmn元素 + BPMNShape []BPMNShapeStruct `xml:"BPMNShape" json:"BPMNShape"` //Bpmn 坐标参数 + BPMNEdge []BPMNEdgeStruct `xml:"BPMNEdge" json:"BPMNEdge"` //Bpmn界限 +} + +//Bpmn 坐标参数 +type BPMNShapeStruct struct { + TextAndIdStruct + BpmnElement string `xml:"bpmnElement,attr" json:"bpmnElement"` + Bounds BoundsStruct `xml:"Bounds" json:"Bounds"` //图形元素坐标 + BPMNLabel BPMNLabelStruct `xml:"BPMNLabel" json:"BPMNLabel"` //BPMN标签 +} + +//图形元素坐标 +type BoundsStruct struct { + TextStruct + X string `xml:"x,attr" json:"x"` + Y string `xml:"y,attr" json:"y"` + Width string `xml:"width,attr" json:"width"` + Height string `xml:"height,attr" json:"height"` +} + +//BPMN标签 +type BPMNLabelStruct struct { + TextStruct + Bounds BoundsStruct `xml:"Bounds" json:"Bounds"` //图形元素坐标 +} + +//Bpmn界限 +type BPMNEdgeStruct struct { + TextAndIdStruct + BpmnElement string `xml:"bpmnElement,attr" json:"bpmnElement"` + Waypoint []WaypointStruct `xml:"waypoint" json:"waypoint"` //线路径坐标 +} + +//线路径坐标 +type WaypointStruct struct { + TextStruct + X string `xml:"x,attr" json:"x"` + Y string `xml:"y,attr" json:"y"` +} + +//接收参数 +type XmlCanShu struct { + ProcessKey string `json:"processKey"` + ProcessName string `json:"processName"` + ResourceName string `json:"resourceName"` + Xml string `json:"xml"` + Svg string `json:"svg"` + JsonStr string `json:"jsonstr"` +} + +//工作流XML解析 +func (s *ShiyanApi) XmlToJson(c *gin.Context) { + var xmlToStruct Definitions + var reportAnswer XmlCanShu + err := c.ShouldBindJSON(&reportAnswer) + // if err != nil { + // response.Result(101, err, "参数错误!", c) + // return + // } + if reportAnswer.Xml == "" { + response.Result(102, err, "参数错误!", c) + return + } + errs := xml.Unmarshal([]byte(reportAnswer.Xml), &xmlToStruct) + if nil != errs { + fmt.Println("Unmarshal fail") + } else { + fmt.Println("struct", xmlToStruct) + } + returnData := commonus.MapOut() + returnData["reportAnswer"] = reportAnswer + returnData["xmlToStruct"] = xmlToStruct + + var approvalProcess approvalprocess.ApprovalProcess + processMap := commonus.MapOut() + + processId := commonus.GetFileNumberEs() + approvalProcess.Id = processId + processMap["id"] = processId + + approvalProcess.Name = xmlToStruct.Process.Name + + processMap["name"] = xmlToStruct.Process.Name + + result, jsonErr := json.Marshal(xmlToStruct) + if jsonErr == nil { + approvalProcess.Flow = string(result) + processMap["flow"] = string(result) + } else { + processMap["flow"] = "" + } + approvalProcess.FlowJson = reportAnswer.JsonStr + processMap["flowjson"] = reportAnswer.JsonStr + approvalProcess.FlowXml = reportAnswer.Xml + processMap["flowxml"] = reportAnswer.Xml + approvalProcess.FlowSvg = reportAnswer.Svg + processMap["flowsvg"] = reportAnswer.Svg + + resultPro, jsonErrPro := json.Marshal(xmlToStruct.Process) + if jsonErrPro == nil { + approvalProcess.GetFlowJson = string(resultPro) + processMap["getflowjson"] = string(resultPro) + } else { + processMap["getflowjson"] = "" + } + approvalProcess.Time = time.Now().Unix() + approvalProcess.EiteTime = time.Now().Unix() + approvalProcess.Sate = 1 + processMap["sate"] = 1 + + batchNum := commonus.GetFileNumberEs() + approvalProcess.Batch = batchNum + processMap["batchnum"] = batchNum + approvalProcess.EditionNum = "V1.0" + processMap["editionnum"] = "V1.0" + + returnData["approvalProcess"] = approvalProcess + + // writeRedisData := map[string]interface{}{ + // "name": xmlToStruct.Process.Name, + // "flow": string(result), + // "flowjson": reportAnswer.JsonStr, + // "flowxml": reportAnswer.Xml, + // "flowsvg": reportAnswer.Svg, + // "getflowjson": string(resultPro), + // "sate": 1, + // "batchnum": batchNum, + // "editionnum": "V1.0", + // } + // addProcess := global.GVA_DB_ApprovalProcess.Create(&approvalProcess) + // if addProcess.Error != nil { + // response.Result(104, addProcess.Error, "流程创建失败", c) + // return + // } + redisClient := redishandel.RunRedis() + redisClient.SetRedisTime(0) + kks := redisClient.HashMsetAdd("Process:ApprovalProcess_"+global.GVA_CONFIG.RedisPrefix.Alias+"_"+strconv.FormatInt(batchNum, 10), processMap) + + response.Result(103, kks, "参数错误!", c) +} + +type ExamineApprove struct { + ProcessId int64 `json:"processId"` //流程批次 + ExamineApproveId int64 `json:"examineApproveId"` //正在执行的流程 + Type int `json:"type"` //状态(1:同意;2:驳回;3:暂存) + Condition string `json:"condition"` //判断条件 + State int `json:"state"` //状态 +} + +//审批记录Redis过度 +type ApprovalProcessLogRedis struct { + Id string `json:"id"` + Process string `json:"process" ` + CurrentNode string `json:"currentNode"` + Title string `json:"title" ` + Time string `json:"time"` + EiteTime string `json:"eiteTime"` + ProcessNum string `json:"processNum"` + IsEnd string `json:"isEnd"` + State string `json:"state"` +} + +//创建及审批 +func (s *ShiyanApi) EstablishApprove(c *gin.Context) { + var examineApprove ExamineApprove + err := c.ShouldBindJSON(&examineApprove) + if err != nil { + response.Result(101, err, "参数错误!", c) + return + } + if examineApprove.ProcessId == 0 || examineApprove.ExamineApproveId == 0 { + response.Result(102, examineApprove, "参数错误!", c) + return + } + if examineApprove.Type == 0 { + examineApprove.Type = 2 + } + //正在执行的流程 + var runApprovalProcess approvalprocess.ApprovalProcessLog + //缓存设置 + redisClient := redishandel.RunRedis() + + approvalProcessRedis, isTrue := redisClient.HashGetAll("Process:RunApprovalProcess_" + global.GVA_CONFIG.RedisPrefix.Alias + "_" + strconv.FormatInt(examineApprove.ExamineApproveId, 10)) + if isTrue != true { //判断是否存在缓存 + runProcessMap := commonus.MapOut() + appProLogErr := global.GVA_DB_ApprovalProcess.Where("`apl_id` = ?", examineApprove.ExamineApproveId).First(&runApprovalProcess).Error + if appProLogErr != nil { + var getApprovalProcess approvalprocess.ApprovalProcess + getProLogErr := global.GVA_DB_ApprovalProcess.Where("`ap_batch` = ? AND `ap_state` = 1", examineApprove.ProcessId).First(&getApprovalProcess).Error + if getProLogErr != nil { + response.Result(103, getApprovalProcess, "对不起该流程不存在", c) + return + } + + runApprovalProcess.Process = getApprovalProcess.GetFlowJson + runProcessMap["process"] = getApprovalProcess.GetFlowJson + //流程json转为struct + var process ProcessStruct + jsonErrPro := json.Unmarshal([]byte(getApprovalProcess.GetFlowJson), &process) + if jsonErrPro == nil { + runApprovalProcess.CurrentNode = process.StartEvent.ID + runApprovalProcess.Title = process.StartEvent.Name + runApprovalProcess.ProcessNum = getApprovalProcess.Batch + + runProcessMap["currentNode"] = process.StartEvent.ID + runProcessMap["title"] = process.StartEvent.Name + runProcessMap["processNum"] = getApprovalProcess.Batch + } else { + runApprovalProcess.CurrentNode = "" + runApprovalProcess.Title = "" + runApprovalProcess.ProcessNum = 0 + + runProcessMap["currentNode"] = "" + runProcessMap["title"] = "" + runProcessMap["processNum"] = 0 + } + runApprovalProcess.Time = time.Now().Unix() + runApprovalProcess.EiteTime = time.Now().Unix() + + runApprovalProcess.IsEnd = 1 + runProcessMap["isend"] = 1 + if examineApprove.State == 0 { + runApprovalProcess.Sate = 1 + runProcessMap["state"] = 1 + } else { + runApprovalProcess.Sate = examineApprove.State + runProcessMap["state"] = examineApprove.State + } + + runProcessMap["time"] = time.Now().Unix() + runProcessMap["eiteTime"] = time.Now().Unix() + + addProcess := global.GVA_DB_ApprovalProcess.Create(&runApprovalProcess).Error + if addProcess != nil { + response.Result(104, getApprovalProcess, "对不起该流程启用失败", c) + return + } + runProcessMap["id"] = runApprovalProcess.Id + redisClient.SetRedisTime(0) + redisClient.HashMsetAdd("Process:RunApprovalProcess_"+global.GVA_CONFIG.RedisPrefix.Alias+"_"+strconv.FormatInt(runApprovalProcess.Id, 10), runProcessMap) + } else { + runProcessMap["process"] = runApprovalProcess.Process + runProcessMap["currentNode"] = runApprovalProcess.CurrentNode + runProcessMap["title"] = runApprovalProcess.Title + runProcessMap["processNum"] = runApprovalProcess.ProcessNum + runProcessMap["time"] = runApprovalProcess.Time + runProcessMap["eiteTime"] = runApprovalProcess.EiteTime + runProcessMap["id"] = runApprovalProcess.Id + runProcessMap["isend"] = runApprovalProcess.IsEnd + runProcessMap["state"] = runApprovalProcess.Sate + if runApprovalProcess.IsEnd == 1 { + redisClient.SetRedisTime(0) + } else { + redisClient.SetRedisTime(604800) + } + redisClient.HashMsetAdd("Process:RunApprovalProcess_"+global.GVA_CONFIG.RedisPrefix.Alias+"_"+strconv.FormatInt(runApprovalProcess.Id, 10), runProcessMap) + if runApprovalProcess.IsEnd != 1 { + response.Result(105, runApprovalProcess, "该流程已经结束!请不要重复执行!", c) + return + } + } + } else { + // fmt.Printf("Redis====》%v\n", runApprovalProcess) + var approvalProcessLogRedis ApprovalProcessLogRedis + err := mapstructure.Decode(approvalProcessRedis, &approvalProcessLogRedis) + if err != nil { + response.Result(104, err, "对不起该流程启用失败", c) + return + // return departmentlist, false + } + appId, appIdErr := strconv.ParseInt(approvalProcessLogRedis.Id, 10, 64) + + if appIdErr == nil { + runApprovalProcess.Id = appId + } + + // fmt.Printf("审批ID==Redis==》%v-------------%v\n", approvalProcessLogRedis.Id, appId) + + processNum, processNumErr := strconv.ParseInt(approvalProcessLogRedis.ProcessNum, 10, 64) + if processNumErr == nil { + runApprovalProcess.ProcessNum = processNum + } + + timeVal, timeErr := strconv.ParseInt(approvalProcessLogRedis.Time, 10, 64) + if timeErr == nil { + runApprovalProcess.Time = timeVal + } + eiteTime, eiteTimeErr := strconv.ParseInt(approvalProcessLogRedis.EiteTime, 10, 64) + if eiteTimeErr == nil { + runApprovalProcess.EiteTime = eiteTime + } + + isEnd, isEndErr := strconv.Atoi(approvalProcessLogRedis.IsEnd) + if isEndErr == nil { + runApprovalProcess.IsEnd = isEnd + } else { + response.Result(107, runApprovalProcess, "对不起该流程启用失败!", c) + return + } + sateSet, sateErr := strconv.Atoi(approvalProcessLogRedis.State) + if sateErr == nil { + runApprovalProcess.Sate = sateSet + } else { + response.Result(108, sateErr, "对不起该流程启用失败!", c) + return + } + + runApprovalProcess.Process = approvalProcessLogRedis.Process + runApprovalProcess.CurrentNode = approvalProcessLogRedis.CurrentNode + runApprovalProcess.Title = approvalProcessLogRedis.Title + + if runApprovalProcess.IsEnd != 1 { + response.Result(106, runApprovalProcess, "该流程已经结束!请不要重复执行!", c) + return + } + } + // fmt.Printf("数据结构===========>%v\n", runApprovalProcess) + switch examineApprove.Type { + case 1: //批准 + ApproveOperation(runApprovalProcess, examineApprove) + case 3: //暂存 + default: //驳回 + } +} + +//批准操作 +func ApproveOperation(runApprovalProcess approvalprocess.ApprovalProcessLog, examineApprove ExamineApprove) (isTrue bool) { + // fmt.Printf("审批ID==Redis==》%v-------------%v\n", runApprovalProcess.Id, runApprovalProcess) + isTrue = false + // fmt.Printf("结果====》%v\n", runApprovalProcess) + var process ProcessStruct + jsonErrPro := json.Unmarshal([]byte(runApprovalProcess.Process), &process) + if jsonErrPro != nil { + fmt.Printf("转换失败====》%v\n", process) + return + } + if runApprovalProcess.CurrentNode == process.EndEvent.ID { + fmt.Printf("执行结束节点====》%v\n", process.EndEvent.ID) + return + } + + if runApprovalProcess.CurrentNode == process.StartEvent.ID { + fmt.Printf("执行开始节点====》%v\n", process.StartEvent.ID) + + if len(process.StartEvent.Outgoing) > 1 { + fmt.Printf("执行开始节点====有条件》%v\n", process.StartEvent.ID) + + currentId := runApprovalProcess.CurrentNode + + appId, appTitle, appIsTrue, isEnd := ApprovalCriteria(1, process, examineApprove, runApprovalProcess.CurrentNode) + + fmt.Printf("执行审批节点==11111==下一个节点》%v----%v-----%v\n", appId, appTitle, appIsTrue) + if appIsTrue != true { + return + } + isTrue = true + currentId = appId + + // for _, outGoing := range process.StartEvent.Outgoing { + // for _, seqFlow := range process.SequenceFlow { + // if outGoing.Text == seqFlow.ID { + // // fmt.Printf("条件(%v)====》对比条件-----%v\n", seqFlow.ConditionExpression.Text, examineApprove.Condition) + // if seqFlow.ConditionExpression.Text == examineApprove.Condition { + // isTrue = true + // currentId = seqFlow.TargetRef + // fmt.Printf("执行节点====》%v\n", seqFlow.TargetRef) + // } + // } + // } + // } + + runApprovalProcess.CurrentNode = currentId + runApprovalProcess.Title = appTitle + runApprovalProcess.EiteTime = time.Now().Unix() + + runProcessMap := commonus.MapOut() + runProcessMap["process"] = runApprovalProcess.Process + runProcessMap["currentNode"] = currentId + + runProcessMap["processNum"] = runApprovalProcess.ProcessNum + runProcessMap["time"] = time.Now().Unix() + + runProcessMap["title"] = appTitle + runProcessMap["eiteTime"] = time.Now().Unix() + + if isEnd == true { + runApprovalProcess.IsEnd = 2 + runProcessMap["isend"] = 2 + } + + //缓存设置 + redisClient := redishandel.RunRedis() + redisClient.SetRedisTime(604800) + redisClient.HashMsetAdd("Process:RunApprovalProcess_"+global.GVA_CONFIG.RedisPrefix.Alias+"_"+strconv.FormatInt(runApprovalProcess.Id, 10), runProcessMap) + + fmt.Printf("审批ID==22222==》%v\n", runApprovalProcess.Id) + + eiteProcess := global.GVA_DB_ApprovalProcess.Where("`apl_id` = ?", runApprovalProcess.Id).Updates(&runApprovalProcess).Error + + if eiteProcess == nil { + fmt.Printf("更新成功====》%v\n", runApprovalProcess) + } else { + fmt.Printf("更新失败====》%v\n", runApprovalProcess) + } + return + } else if len(process.StartEvent.Outgoing) < 1 { + fmt.Printf("执行开始节点====未知下个节点》%v\n", process.StartEvent.ID) + } else { + fmt.Printf("执行开始节点====直接到审批》%v\n", process.StartEvent.ID) + } + + } + + for _, taskVal := range process.UserTask { + if runApprovalProcess.CurrentNode == taskVal.ID { + fmt.Printf("执行审批节点====》%v\n", taskVal.ID) + appId, appTitle, appIsTrue, isEnd := ApprovalCriteria(3, process, examineApprove, runApprovalProcess.CurrentNode) + + fmt.Printf("执行审批节点====下一个节点》%v----%v-----%v\n", appId, appTitle, appIsTrue) + + currentId := runApprovalProcess.CurrentNode + if appIsTrue != true { + return + } + isTrue = true + currentId = appId + runApprovalProcess.CurrentNode = currentId + runApprovalProcess.Title = appTitle + runApprovalProcess.EiteTime = time.Now().Unix() + + runProcessMap := commonus.MapOut() + runProcessMap["process"] = runApprovalProcess.Process + runProcessMap["currentNode"] = currentId + + runProcessMap["processNum"] = runApprovalProcess.ProcessNum + runProcessMap["time"] = time.Now().Unix() + + runProcessMap["title"] = appTitle + runProcessMap["eiteTime"] = time.Now().Unix() + + if isEnd == true { + runApprovalProcess.IsEnd = 2 + runProcessMap["isend"] = 2 + } + + //缓存设置 + redisClient := redishandel.RunRedis() + redisClient.SetRedisTime(604800) + redisClient.HashMsetAdd("Process:RunApprovalProcess_"+global.GVA_CONFIG.RedisPrefix.Alias+"_"+strconv.FormatInt(runApprovalProcess.Id, 10), runProcessMap) + + fmt.Printf("审批ID====》%v\n", runApprovalProcess.Id) + + eiteProcess := global.GVA_DB_ApprovalProcess.Where("`apl_id` = ?", runApprovalProcess.Id).Updates(&runApprovalProcess).Error + + if eiteProcess == nil { + fmt.Printf("更新成功uis====》%v\n", runApprovalProcess) + } else { + fmt.Printf("更新失败uis====》%v\n", runApprovalProcess) + } + return + } + } + return +} + +//审批条件解析 +/* +@execStatus 执行状态 1:开始;2:结束;3:审批 +*/ +func ApprovalCriteria(execStatus int, process ProcessStruct, examineApprove ExamineApprove, currentNode string) (currentId, nextTitle string, isTrue, isEnd bool) { + isTrue = false + isEnd = false + //解析条件判断,获取出下个节点的ID + switch execStatus { + case 1: + fmt.Printf("State ----------> %v\n", execStatus) + for _, outGoing := range process.StartEvent.Outgoing { + for _, seqFlow := range process.SequenceFlow { + if outGoing.Text == seqFlow.ID { + fmt.Printf("条件(%v)====》对比条件-----%v\n", seqFlow.ConditionExpression.Text, examineApprove.Condition) + if seqFlow.ConditionExpression.Text == examineApprove.Condition { + isTrue = true + currentId = seqFlow.TargetRef + fmt.Printf("执行节点====》%v\n", seqFlow.TargetRef) + } + } + } + } + case 2: + fmt.Printf("State ----------> %v\n", execStatus) + default: + fmt.Printf("State ----------> %v\n", execStatus) + for _, taskVal := range process.UserTask { + if taskVal.ID == currentNode { + for _, outGoing := range taskVal.Outgoing { + for _, seqFlow := range process.SequenceFlow { + if outGoing.Text == seqFlow.ID { + fmt.Printf("条件(%v)====》对比条件-----%v\n", seqFlow.ConditionExpression.Text, examineApprove.Condition) + if seqFlow.ConditionExpression.Text == examineApprove.Condition { + isTrue = true + currentId = seqFlow.TargetRef + fmt.Printf("执行节点====》%v\n", seqFlow.TargetRef) + } + } + } + } + } + // for _, seqFlow := range process.SequenceFlow { + + // fmt.Printf("条件(%v)====》对比条件-----%v\n", taskVal.ID, seqFlow.ID) + + // if taskVal.ID == seqFlow.ID { + + // if seqFlow.ConditionExpression.Text == examineApprove.Condition { + // isTrue = true + // currentId = seqFlow.TargetRef + // fmt.Printf("执行节点====》%v\n", seqFlow.TargetRef) + // } + // } + // } + } + } + nextNameIsTrue := false + //获取审批节点名称 + for _, taskVal := range process.UserTask { + if taskVal.ID == currentId { + nextTitle = taskVal.Name + nextNameIsTrue = true + } + } + if nextNameIsTrue != true { + if currentId == process.EndEvent.ID { + nextTitle = process.EndEvent.Name + nextNameIsTrue = true + isEnd = true + return + } + if currentId == process.StartEvent.ID { + nextTitle = process.StartEvent.Name + nextNameIsTrue = true + } + } + return +} diff --git a/gin_server_admin/commonus/calculate_pages.go b/gin_server_admin/commonus/calculate_pages.go new file mode 100644 index 0000000..dd96c26 --- /dev/null +++ b/gin_server_admin/commonus/calculate_pages.go @@ -0,0 +1,11 @@ +package commonus + +//计算翻页Offser数据 +func CalculatePages(page, pageSize int) (offser int) { + pageVal := page - 1 + if pageVal < 0 { + pageVal = 0 + } + offser = pageVal * pageSize + return +} diff --git a/gin_server_admin/commonus/mapOutput.go b/gin_server_admin/commonus/mapOutput.go index be06d75..32310a2 100644 --- a/gin_server_admin/commonus/mapOutput.go +++ b/gin_server_admin/commonus/mapOutput.go @@ -42,3 +42,22 @@ func UnixTimeToDay(timestamp int64) string { datetime := time.Unix(timestamp, 0).Format(timeLayout) return datetime } + +//列表输出标准格式 +/* +@total 总数 +@count 当前页总数 +@page 页数 +@pageSize 每页显示数量 +@data 返回数据 +*/ +func OutPutList(total, count int64, page, pageSize int, data interface{}) (printMap map[string]interface{}) { + outMap := MapOut() + outMap["count"] = count + outMap["total"] = total + outMap["page"] = page + outMap["pageSize"] = pageSize + outMap["data"] = data + printMap = outMap + return +} diff --git a/gin_server_admin/commonus/publichaneld.go b/gin_server_admin/commonus/publichaneld.go index 4aa7863..d9a71b5 100644 --- a/gin_server_admin/commonus/publichaneld.go +++ b/gin_server_admin/commonus/publichaneld.go @@ -12,6 +12,7 @@ import ( "github.com/flipped-aurora/gin-vue-admin/server/model/testpage" "github.com/flipped-aurora/gin-vue-admin/server/model/wechat" "github.com/flipped-aurora/gin-vue-admin/server/utils/redishandel" + "gorm.io/gorm" ) //遍历所有父类 @@ -532,3 +533,34 @@ func WriteInMan(wechat, calCulTime string, groupId int64) { // fmt.Printf("Eite -----> %v ------>%v\n", abnErr, abn) } } + +//通用查询结果到map结构 +type GormTopMap struct { + Db *gorm.DB + TableName string + WhereMap map[string]interface{} +} + +//输出Map查询数据库结果(多行) +func (g *GormTopMap) PublicOrmToMap() (returnData []map[string]interface{}) { + if len(g.WhereMap) > 0 { + g.Db.Table(g.TableName).Where(g.WhereMap).Find(&returnData) + } else { + g.Db.Table(g.TableName).Find(&returnData) + } + return +} + +//输出Map查询数据库结果(单行) +func (g *GormTopMap) PublicOrmToMapOne() (returnData map[string]interface{}) { + var selectData []map[string]interface{} + if len(g.WhereMap) > 0 { + g.Db.Table(g.TableName).Where(g.WhereMap).Take(&selectData) + } else { + g.Db.Table(g.TableName).Take(&selectData) + } + if len(selectData) < 1 && len(selectData) > 0 { + returnData = selectData[0] + } + return +} diff --git a/gin_server_admin/commonus/publicstruct.go b/gin_server_admin/commonus/publicstruct.go new file mode 100644 index 0000000..8a042b3 --- /dev/null +++ b/gin_server_admin/commonus/publicstruct.go @@ -0,0 +1,6 @@ +package commonus + +//公共变量 +type SetId struct { + Id int64 `json:"id"` +} diff --git a/gin_server_admin/conf/forkflow.json b/gin_server_admin/conf/forkflow.json new file mode 100644 index 0000000..901d7bd --- /dev/null +++ b/gin_server_admin/conf/forkflow.json @@ -0,0 +1,369 @@ +{ + "definitions": { + "process": { + "documentation": { + "__prefix": "bpmn2", + "__text": "流程描述" + }, + "startEvent": { + "outgoing": [ + { + "__prefix": "bpmn2", + "__text": "tiao_jian_1" + }, + { + "__prefix": "bpmn2", + "__text": "tiao_jian_2" + } + ], + "_id": "begin", + "_name": "开始", + "__prefix": "bpmn2" + }, + "userTask": [ + { + "incoming": { + "__prefix": "bpmn2", + "__text": "tiao_jian_1" + }, + "outgoing": { + "__prefix": "bpmn2", + "__text": "SequenceFlow_0tvwafp" + }, + "_id": "shen_pi_1", + "_name": "审批1", + "_flowable:assignee": "1001", + "__prefix": "bpmn2" + }, + { + "incoming": { + "__prefix": "bpmn2", + "__text": "tiao_jian_2" + }, + "outgoing": { + "__prefix": "bpmn2", + "__text": "SequenceFlow_18d12da" + }, + "_id": "shen_pi_2", + "_name": "审批2", + "_flowable:candidateGroups": "personnel", + "__prefix": "bpmn2" + }, + { + "incoming": { + "__prefix": "bpmn2", + "__text": "SequenceFlow_18d12da" + }, + "outgoing": { + "__prefix": "bpmn2", + "__text": "SequenceFlow_0jui7b0" + }, + "_id": "shen_pi_3", + "_name": "审批3", + "_flowable:candidateUsers": "1002,1003", + "__prefix": "bpmn2" + } + ], + "endEvent": { + "incoming": [ + { + "__prefix": "bpmn2", + "__text": "SequenceFlow_0tvwafp" + }, + { + "__prefix": "bpmn2", + "__text": "SequenceFlow_0jui7b0" + } + ], + "_id": "end", + "_name": "结束", + "__prefix": "bpmn2" + }, + "sequenceFlow": [ + { + "conditionExpression": { + "_xsi:type": "bpmn2:tFormalExpression", + "__prefix": "bpmn2", + "__text": ">100" + }, + "_id": "tiao_jian_1", + "_name": "条件1", + "_sourceRef": "begin", + "_targetRef": "shen_pi_1", + "__prefix": "bpmn2" + }, + { + "_id": "SequenceFlow_0tvwafp", + "_sourceRef": "shen_pi_1", + "_targetRef": "end", + "__prefix": "bpmn2" + }, + { + "conditionExpression": { + "_xsi:type": "bpmn2:tFormalExpression", + "__prefix": "bpmn2", + "__text": "<100" + }, + "_id": "tiao_jian_2", + "_name": "条件2", + "_sourceRef": "begin", + "_targetRef": "shen_pi_2", + "__prefix": "bpmn2" + }, + { + "_id": "SequenceFlow_18d12da", + "_sourceRef": "shen_pi_2", + "_targetRef": "shen_pi_3", + "__prefix": "bpmn2" + }, + { + "_id": "SequenceFlow_0jui7b0", + "_sourceRef": "shen_pi_3", + "_targetRef": "end", + "__prefix": "bpmn2" + } + ], + "_id": "liu_cheng", + "_name": "流程", + "__prefix": "bpmn2" + }, + "BPMNDiagram": { + "BPMNPlane": { + "BPMNShape": [ + { + "Bounds": { + "_x": "142", + "_y": "212", + "_width": "36", + "_height": "36", + "__prefix": "dc" + }, + "BPMNLabel": { + "Bounds": { + "_x": "149", + "_y": "255", + "_width": "22", + "_height": "14", + "__prefix": "dc" + }, + "__prefix": "bpmndi" + }, + "_id": "StartEvent_01ydzqe_di", + "_bpmnElement": "begin", + "__prefix": "bpmndi" + }, + { + "Bounds": { + "_x": "310", + "_y": "200", + "_width": "100", + "_height": "80", + "__prefix": "dc" + }, + "_id": "UserTask_1nsn57s_di", + "_bpmnElement": "shen_pi_1", + "__prefix": "bpmndi" + }, + { + "Bounds": { + "_x": "662", + "_y": "222", + "_width": "36", + "_height": "36", + "__prefix": "dc" + }, + "BPMNLabel": { + "Bounds": { + "_x": "669", + "_y": "198", + "_width": "22", + "_height": "14", + "__prefix": "dc" + }, + "__prefix": "bpmndi" + }, + "_id": "EndEvent_020ed1j_di", + "_bpmnElement": "end", + "__prefix": "bpmndi" + }, + { + "Bounds": { + "_x": "300", + "_y": "350", + "_width": "100", + "_height": "80", + "__prefix": "dc" + }, + "_id": "UserTask_0376y7f_di", + "_bpmnElement": "shen_pi_2", + "__prefix": "bpmndi" + }, + { + "Bounds": { + "_x": "600", + "_y": "350", + "_width": "100", + "_height": "80", + "__prefix": "dc" + }, + "_id": "UserTask_0ilgotg_di", + "_bpmnElement": "shen_pi_3", + "__prefix": "bpmndi" + } + ], + "BPMNEdge": [ + { + "waypoint": [ + { + "_x": "178", + "_y": "230", + "__prefix": "di" + }, + { + "_x": "244", + "_y": "230", + "__prefix": "di" + }, + { + "_x": "244", + "_y": "240", + "__prefix": "di" + }, + { + "_x": "310", + "_y": "240", + "__prefix": "di" + } + ], + "BPMNLabel": { + "Bounds": { + "_x": "214", + "_y": "232", + "_width": "90", + "_height": "20", + "__prefix": "dc" + }, + "__prefix": "bpmndi" + }, + "_id": "SequenceFlow_16vcpv3_di", + "_bpmnElement": "tiao_jian_1", + "__prefix": "bpmndi" + }, + { + "waypoint": [ + { + "_x": "410", + "_y": "240", + "__prefix": "di" + }, + { + "_x": "662", + "_y": "240", + "__prefix": "di" + } + ], + "_id": "SequenceFlow_0tvwafp_di", + "_bpmnElement": "SequenceFlow_0tvwafp", + "__prefix": "bpmndi" + }, + { + "waypoint": [ + { + "_x": "178", + "_y": "230", + "__prefix": "di" + }, + { + "_x": "239", + "_y": "230", + "__prefix": "di" + }, + { + "_x": "239", + "_y": "390", + "__prefix": "di" + }, + { + "_x": "300", + "_y": "390", + "__prefix": "di" + } + ], + "BPMNLabel": { + "Bounds": { + "_x": "209", + "_y": "307", + "_width": "90", + "_height": "20", + "__prefix": "dc" + }, + "__prefix": "bpmndi" + }, + "_id": "SequenceFlow_0ao8d4c_di", + "_bpmnElement": "tiao_jian_2", + "__prefix": "bpmndi" + }, + { + "waypoint": [ + { + "_x": "400", + "_y": "390", + "__prefix": "di" + }, + { + "_x": "600", + "_y": "390", + "__prefix": "di" + } + ], + "_id": "SequenceFlow_18d12da_di", + "_bpmnElement": "SequenceFlow_18d12da", + "__prefix": "bpmndi" + }, + { + "waypoint": [ + { + "_x": "650", + "_y": "350", + "__prefix": "di" + }, + { + "_x": "650", + "_y": "304", + "__prefix": "di" + }, + { + "_x": "680", + "_y": "304", + "__prefix": "di" + }, + { + "_x": "680", + "_y": "258", + "__prefix": "di" + } + ], + "_id": "SequenceFlow_0jui7b0_di", + "_bpmnElement": "SequenceFlow_0jui7b0", + "__prefix": "bpmndi" + } + ], + "_id": "BPMNPlane_1", + "_bpmnElement": "liu_cheng", + "__prefix": "bpmndi" + }, + "_id": "BPMNDiagram_1", + "__prefix": "bpmndi" + }, + "_xmlns:bpmn2": "http://www.omg.org/spec/BPMN/20100524/MODEL", + "_xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance", + "_xmlns:bpmndi": "http://www.omg.org/spec/BPMN/20100524/DI", + "_xmlns:dc": "http://www.omg.org/spec/DD/20100524/DC", + "_xmlns:flowable": "http://flowable.org/bpmn", + "_xmlns:di": "http://www.omg.org/spec/DD/20100524/DI", + "_id": "sample-diagram", + "_targetNamespace": "http://bpmn.io/schema/bpmn", + "_xsi:schemaLocation": "http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd", + "__prefix": "bpmn2" + } +} \ No newline at end of file diff --git a/gin_server_admin/config.yaml b/gin_server_admin/config.yaml index e901932..5c2ce4e 100644 --- a/gin_server_admin/config.yaml +++ b/gin_server_admin/config.yaml @@ -263,6 +263,20 @@ mysqlHealthReportDate: log-mode: false log-zap: "" + + + #审批流程数据库 +mysqlApprovalProcess: + path: '127.0.0.1:3306' + config: 'charset=utf8mb4&parseTime=True&loc=Local' + db-name: 'workflow' + username: 'root' + password: 'root' + max-idle-conns: 100 + max-open-conns: 1500 + log-mode: false + log-zap: "" + #企业微信相关设置 workwechatid: companyid: 'ww02f310301953277a' #企业ID diff --git a/gin_server_admin/config/config.go b/gin_server_admin/config/config.go index 3f012d3..d1b44f2 100644 --- a/gin_server_admin/config/config.go +++ b/gin_server_admin/config/config.go @@ -24,6 +24,8 @@ type Server struct { MysqlQADate Mysql `mapstructure:"mysqlQADate" json:"mysqlQADate" yaml:"mysqlQADate"` MysqlBillboardDate Mysql `mapstructure:"mysqlBillboardDate" json:"mysqlBillboardDate" yaml:"mysqlBillboardDate"` MysqlHealthReportDate Mysql `mapstructure:"mysqlHealthReportDate" json:"mysqlHealthReportDate" yaml:"mysqlHealthReportDate"` + MysqlApprovalProcess Mysql `mapstructure:"mysqlApprovalProcess" json:"mysqlApprovalProcess" yaml:"mysqlApprovalProcess"` + // oss Local Local `mapstructure:"local" json:"local" yaml:"local"` Qiniu Qiniu `mapstructure:"qiniu" json:"qiniu" yaml:"qiniu"` diff --git a/gin_server_admin/global/global.go b/gin_server_admin/global/global.go index 568198b..df52d88 100644 --- a/gin_server_admin/global/global.go +++ b/gin_server_admin/global/global.go @@ -38,4 +38,5 @@ var ( GVA_DB_QADate *gorm.DB GVA_DB_BillboardDate *gorm.DB GVA_DB_HealthReport *gorm.DB + GVA_DB_ApprovalProcess *gorm.DB ) diff --git a/gin_server_admin/initialize/gorm.go b/gin_server_admin/initialize/gorm.go index a4e24fd..1a4536c 100644 --- a/gin_server_admin/initialize/gorm.go +++ b/gin_server_admin/initialize/gorm.go @@ -152,6 +152,8 @@ func GormMysqlChange(setDataBaseName string) *gorm.DB { m = global.GVA_CONFIG.MysqlBillboardDate case "mysqlHealthReportDate": m = global.GVA_CONFIG.MysqlHealthReportDate + case "mysqlApprovalProcess": + m = global.GVA_CONFIG.MysqlApprovalProcess default: m = global.GVA_CONFIG.Mysql } diff --git a/gin_server_admin/initialize/router.go b/gin_server_admin/initialize/router.go index 3201df4..da9a922 100644 --- a/gin_server_admin/initialize/router.go +++ b/gin_server_admin/initialize/router.go @@ -37,14 +37,18 @@ func Routers() *gin.Engine { // 方便统一添加路由组前缀 多服务器上线使用 //获取路由组实例 - systemRouter := router.RouterGroupApp.System + systemRouter := router.RouterGroupApp.System // 注册基础功能路由 exampleRouter := router.RouterGroupApp.Example autocodeRouter := router.RouterGroupApp.Autocode - shiyanRouter := router.RouterGroupApp.Shiyan + shiyanRouter := router.RouterGroupApp.Shiyan //实验模块 - groupHandleRouter := router.RouterGroupApp.GroupHandle + groupHandleRouter := router.RouterGroupApp.GroupHandle //健康上报 - weChatCallBaclRouter := router.RouterGroupApp.WeChatCallBacl + weChatCallBaclRouter := router.RouterGroupApp.WeChatCallBacl //企业微信相关 + + archiveApi := router.RouterGroupApp.ArchiveStructApi //文档信息处理 + + fileUpDownApi := router.RouterGroupApp.FileUpDownLoad //文件上传下载模块 PublicGroup := Router.Group("") { @@ -67,6 +71,10 @@ func Routers() *gin.Engine { shiyanRouter.InitShiyanRouter(PublicGroup) // 实验路由 weChatCallBaclRouter.InitGroupRouter(PublicGroup) // 微信回调 + + archiveApi.InitGroupRouter(PublicGroup) // 文档管理 + + fileUpDownApi.InitGroupRouter(PublicGroup) } PrivateGroup := Router.Group("") PrivateGroup.Use(middleware.JWTAuth()).Use(middleware.CasbinHandler()) diff --git a/gin_server_admin/main.go b/gin_server_admin/main.go index 3f3c846..fd41793 100644 --- a/gin_server_admin/main.go +++ b/gin_server_admin/main.go @@ -73,7 +73,11 @@ func main() { } global.GVA_DB_HealthReport = initialize.GormMysqlChange("mysqlHealthReportDate") if global.GVA_DB_HealthReport != nil { - fmt.Printf("%v==>数据库mysqlBillboardDate初始化成功\n", global.GVA_DB_HealthReport) + fmt.Printf("%v==>数据库mysqlHealthReportDate初始化成功\n", global.GVA_DB_HealthReport) + } + global.GVA_DB_ApprovalProcess = initialize.GormMysqlChange("mysqlApprovalProcess") + if global.GVA_DB_ApprovalProcess != nil { + fmt.Printf("%v==>数据库mysqlApprovalProcess初始化成功\n", global.GVA_DB_ApprovalProcess) } // fmt.Printf("%v===>%v----->%v\n", global.GVA_CONFIG.WorkWechatId, global.GVA_CONFIG.WorkWechatSchool, global.GVA_CONFIG.WorkWechatMailList) // fmt.Printf("%v===>%v----->%v\n", global.GVA_CONFIG.WorkWechatIds, global.GVA_CONFIG.WorkWechatSchools, global.GVA_CONFIG.WorkWechatMailLists)MysqlHealthReportDate diff --git a/gin_server_admin/model/approvalprocess/approval_process.go b/gin_server_admin/model/approvalprocess/approval_process.go new file mode 100644 index 0000000..48dc43b --- /dev/null +++ b/gin_server_admin/model/approvalprocess/approval_process.go @@ -0,0 +1,39 @@ +package approvalprocess + +//审批流程图 + +type ApprovalProcess struct { + Id int64 `json:"id" gorm:"column:ap_id;type:bigint(20);;primaryKey;unique;not null;autoIncrement;index"` + Name string `json:"name" gorm:"column:ap_name;type:varchar(255);not null;comment:流程名称"` + Flow string `json:"flow" gorm:"column:ap_flow;type:longtext;not null;comment:流程主体"` + FlowJson string `json:"flowJson" gorm:"column:ap_flow_json;type:longtext;not null;comment:流程json"` + FlowXml string `json:"flowXml" gorm:"column:ap_flow_xml;type:longtext;not null;comment:流程xml"` + FlowSvg string `json:"flowSvg" gorm:"column:ap_flow_svg;type:longtext;not null;comment:流程svg"` + GetFlowJson string `json:"getFlowJson" gorm:"column:ap_get_flow_json;type:longtext;not null;comment:流程get_json"` + Time int64 `json:"time" gorm:"column:ap_time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` + EiteTime int64 `json:"eiteTime" gorm:"column:ap_eite;type:bigint(20) unsigned;default:0;not null;comment:编辑时间"` + Sate int `json:"state" gorm:"column:ap_state;type:tinyint(1) unsigned;default:1;not null;comment:状态(1:启用,2:禁用;3:删除)"` + Batch int64 `json:"batch" gorm:"column:ap_batch;type:bigint(30) unsigned;default:0;not null;comment:批次"` + EditionNum string `json:"editionNum" gorm:"column:ap_edition_num;type:varchar(255);not null;comment:版本"` +} + +func (ApprovalProcess *ApprovalProcess) TableName() string { + return "approval_process" +} + +//审批记录 +type ApprovalProcessLog struct { + Id int64 `json:"id" gorm:"column:apl_id;type:bigint(20);;primaryKey;unique;not null;autoIncrement;index"` + Process string `json:"process" gorm:"column:apl_process;type:longtext;not null;comment:当前执行的流程"` + CurrentNode string `json:"currentNode" gorm:"column:apl_current_node;type:varchar(255);not null;comment:当前审批节点"` + Title string `json:"title" gorm:"column:apl_title;type:varchar(255);not null;comment:审批名称"` + Time int64 `json:"time" gorm:"column:apl_time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` + EiteTime int64 `json:"eiteTime" gorm:"column:apl_eite_time;type:bigint(20) unsigned;default:0;not null;comment:编辑时间"` + ProcessNum int64 `json:"processNum" gorm:"column:apl_process_num;type:bigint(20) unsigned;default:0;not null;comment:当前执行流程的批次"` + IsEnd int `json:"isEnd" gorm:"column:apl_is_end;type:tinyint(1) unsigned;default:1;not null;comment:流程是否结束(1:未结束;2:结束)"` + Sate int `json:"state" gorm:"column:apl_state;type:tinyint(1) unsigned;default:1;not null;comment:状态(1:草稿;2:正常;3:删除)"` +} + +func (ApprovalProcessLog *ApprovalProcessLog) TableName() string { + return "approval_process_log" +} diff --git a/gin_server_admin/model/archivesmodel/archives.go b/gin_server_admin/model/archivesmodel/archives.go new file mode 100644 index 0000000..25f3acb --- /dev/null +++ b/gin_server_admin/model/archivesmodel/archives.go @@ -0,0 +1,120 @@ +package archivesmodel + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" +) + +//文档分类相关 +type ArchivesType struct { + Id int64 `json:"id" gorm:"column:at_id;type:bigint(20) unsigned;not null;comment:Id"` + Title string `json:"title" gorm:"column:at_title;type:varchar(255);comment:档案分类名称"` + Stater int `json:"stater" gorm:"column:at_stater;type:tinyint(1) unsigned;default:1;not null;comment:档案分类状态"` + ParentId int64 `json:"parentId" gorm:"column:at_parent_id;type:bigint(20) unsigned;default:0;not null;comment:档案分类父级"` + Time int64 `json:"time" gorm:"column:at_time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` + UID int64 `json:"uid" gorm:"column:at_uid;type:bigint(20) unsigned;default:0;not null;comment:添加人员"` + Sort int `json:"sort" gorm:"column:at_sort;type:smallint(3) unsigned;default:50;not null;comment:排序"` +} + +func (ArchivesType *ArchivesType) TableName() string { + return "archives_type" +} + +//获取文档详细信息 +func (a *ArchivesType) GetArchiveTypeInfo() (err error) { + err = global.GVA_DB_Master.Where("at_id = ?", a.Id).First(&a).Error + return +} + +//文档列表 +type ArchiveFile struct { + Id int64 `json:"id" gorm:"column:g_id;type:bigint(20) unsigned;not null;comment:Id"` + Title string `json:"title" gorm:"column:g_title;type:varchar(255);not null;comment:标题"` + Key string `json:"key" gorm:"column:g_key;type:varchar(255);default:null;comment:关键字"` + Describe string `json:"describe" gorm:"column:g_describe;type:mediumtext;comment:描述"` + Parent int64 `json:"parent" gorm:"column:g_parent;type:bigint(20) unsigned;default:0;not null;comment:父级"` + ParentSun int64 `json:"parentSun" gorm:"column:g_parent_sun;type:bigint(20) unsigned;default:0;not null;comment:分类"` + Source int `json:"source" gorm:"column:g_source;type:tinyint(1) unsigned;default:1;not null;comment:文档来源(1:原创;2:转载)"` + SourceUrl string `json:"sourceUrl" gorm:"column:g_source_url;type:varchar(255);default:null;comment:转载地址"` + Thumbnail string `json:"thumbnail" gorm:"column:g_thumbnail;type:varchar(255);default:null;comment:缩略图"` + Sort int64 `json:"sort" gorm:"column:g_sort;type:bigint(20) unsigned;default:50;not null;comment:排序"` + Comment int `json:"comment" gorm:"column:g_comment;type:tinyint(1) unsigned;default:1;not null;comment:评论设置(1:允许评论;2:禁止评论)"` + VisitStrat int `json:"visitStrat" gorm:"column:g_visit_strat;type:tinyint(1) unsigned;default:1;not null;comment:访问权限(1:公开;2:分厂;3:工段;4:自定义)"` + State int `json:"state" gorm:"column:g_state;type:tinyint(1) unsigned;default:1;not null;comment:状态(1:草稿;2:发表;3:下架;4:删除)"` + Time int64 `json:"time" gorm:"column:g_add_time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` + EiteTime int64 `json:"eiteTime" gorm:"column:g_eite_time;type:bigint(20) unsigned;default:0;not null;comment:修改时间"` + UserKey int64 `json:"userKey" gorm:"column:g_user_key;type:bigint(20) unsigned;default:0;not null;comment:编辑人员"` + FactoryID int64 `json:"factoryId" gorm:"column:g_bf_id;type:bigint(20) unsigned;default:0;not null;comment:分厂"` + PositionID int64 `json:"positionId" gorm:"column:g_ws_id;type:bigint(20) unsigned;default:0;not null;comment:工段"` + TeamId int64 `json:"teamId" gorm:"column:g_team;type:bigint(20) unsigned;default:0;not null;comment:班组"` + DownloadState int `json:"downloadState" gorm:"column:g_download_state;type:tinyint(1) unsigned;default:1;not null;comment:是否允许下载(1:允许;2:禁止)"` + Read int64 `json:"read" gorm:"column:g_read;type:int(9) unsigned;default:0;not null;comment:阅读量"` + Discuss int64 `json:"discuss" gorm:"column:g_com_sum;type:int(9) unsigned;default:0;not null;comment:评论数"` + Collection int64 `json:"collection" gorm:"column:g_collection_sum;type:int(9) unsigned;default:0;not null;comment:收藏数"` + Likes int64 `json:"likes" gorm:"column:g_likes;type:int(9) unsigned;default:0;not null;comment:点赞数"` + Recommend int `json:"recommend" gorm:"column:g_recommend;type:tinyint(1) unsigned;default:2;not null;comment:推荐(1:推荐,2:不推荐)"` + Content string `json:"content" gorm:"column:g_content;type:longtext;comment:图文详情"` + StepOn int64 `json:"stepOn" gorm:"column:g_step_on;type:int(9) unsigned;default:0;not null;comment:踩数量"` + Ranges string `json:"ranges" gorm:"column:g_range;type:mediumtext;comment:自定义可见范围"` + WriteFactoryID int64 `json:"writeFactoryId" gorm:"column:g_write_bfid;type:bigint(20) unsigned;default:0;not null;comment:写入分厂"` + TextName string `json:"textName" gorm:"column:g_text_name;type:varchar(255);default:'';comment:正文文档名称"` + TestUrl string `json:"testUrl" gorm:"column:g_test_url;type:varchar(255);default:'';comment:正文文档URL"` + PhysicsPath string `json:"physicsPath" gorm:"column:g_physics_path;type:varchar(255);default:null;comment:物理地址"` + WriteGroup int64 `json:"writeGroup" gorm:"column:g_write_group;type:bigint(20) unsigned;default:3;not null;comment:写入人员组织"` + OuterLink string `json:"outerLink" gorm:"column:g_outer_link;type:varchar(255);default:'';comment:外部链接"` +} + +func (ArchiveFile *ArchiveFile) TableName() string { + return "graphicform" +} + +//获取文档详细信息 +func (a *ArchiveFile) GetArchiveFileInfo() (err error) { + err = global.GVA_DB_BooImgkDate.Where("g_id = ?", a.Id).First(&a).Error + return +} + +//文档属性 +type BookAttribute struct { + Id int64 `json:"id" gorm:"column:b_id;type:bigint(20) unsigned;not null;autoIncrement;index;comment:Id"` + FileId int64 `json:"fileId" gorm:"column:b_file_id;type:bigint(20) unsigned;default:0;not null;comment:文档ID"` + UserId int64 `json:"userId" gorm:"column:b_userid;type:bigint(20) unsigned;default:0;not null;comment:阅读人ID"` + Time int64 `json:"time" gorm:"column:b_time;type:bigint(20) unsigned;default:0;not null;comment:阅读时间"` + Type int `json:"type" gorm:"column:b_type;type:tinyint(1) unsigned;default:1;not null;comment:类型 (1:阅读量;2:收藏数;3:赞;4:踩)"` + Stater int `json:"stater" gorm:"column:b_stater;type:tinyint(1) unsigned;default:1;not null;comment:状态(1:有效;2:无效)"` + EiteTime int64 `json:"eiteTime" gorm:"column:b_eite_time;type:bigint(20) unsigned;default:0;not null;comment:编辑时间"` + Source int `json:"source" gorm:"column:b_source;type:tinyint(1) unsigned;default:1;not null;comment:来源(1:文档类;2:文档类评论;3:问题;4:问题答案;5:问题答案评论)"` +} + +func (brchiveFile *BookAttribute) TableName() string { + return "bookattribute" +} + +//获取文档详细信息 +func (b *BookAttribute) GetBookAttributeInfo() (err error) { + err = global.GVA_DB_BooImgkDate.Where("b_id = ?", b.Id).First(&b).Error + return +} + +//评论列表 +type DiscussMsg struct { + Id int64 `json:"id" gorm:"column:dis_id;type:bigint(20) unsigned;not null;comment:Id"` + FileId int64 `json:"fileId" gorm:"column:dis_file_id;type:bigint(20) unsigned;default:0;not null;comment:文档ID"` + UserId int64 `json:"userId" gorm:"column:dis_user_id;type:bigint(20) unsigned;default:0;not null;comment:阅读人ID"` + Prent int64 `json:"prent" gorm:"column:dis_prent;type:bigint(20) unsigned;default:0;not null;comment:归属(0:评论源)"` + Content string `json:"cont" gorm:"column:dis_cont;type:text;comment:评论内容"` + Time int64 `json:"time" gorm:"column:dis_time;type:bigint(20) unsigned;default:0;not null;comment:时间"` + Stater int `json:"stater" gorm:"column:dis_stater;type:tinyint(1) unsigned;default:1;not null;comment:状态(1:审核;2:发布;3:下架;4:删除)"` + Source int `json:"source" gorm:"column:dis_source;type:tinyint(1) unsigned;default:1;not null;comment:来源(1:文档类;2:文档类评论;3:问题;4:问题答案;5:问题答案评论)"` + UserJson string `json:"userJson" gorm:"column:dis_user_json;type:mediumtext;comment:评论人基本信息"` + EiteTime int64 `json:"eiteTime" gorm:"column:dis_eite_time;type:bigint(20) unsigned;default:0;not null;comment:修改时间"` +} + +func (DiscussMsg *DiscussMsg) TableName() string { + return "discussmsg" +} + +//获取文档详细信息 +func (d *DiscussMsg) GetDiscussMsgInfo() (err error) { + err = global.GVA_DB_BooImgkDate.Where("b_id = ?", d.Id).First(&d).Error + return +} diff --git a/gin_server_admin/router/archive/archiverouter.go b/gin_server_admin/router/archive/archiverouter.go new file mode 100644 index 0000000..7be9724 --- /dev/null +++ b/gin_server_admin/router/archive/archiverouter.go @@ -0,0 +1,33 @@ +package archive + +import ( + v1 "github.com/flipped-aurora/gin-vue-admin/server/api/v1" + "github.com/gin-gonic/gin" +) + +type ArchiveStruct struct{} + +func (a *ArchiveStruct) InitGroupRouter(Router *gin.RouterGroup) { + groupCodeRouter := Router.Group("archive") + var authorityApi = v1.ApiGroupApp.ArchiveApi.ArchiveApiHandle + { + groupCodeRouter.POST("", authorityApi.Index) + groupCodeRouter.GET("", authorityApi.Index) + groupCodeRouter.POST("/", authorityApi.Index) + groupCodeRouter.GET("/", authorityApi.Index) + groupCodeRouter.POST("archivetypelist", authorityApi.ArchiveTypeList) //获取文档栏目列表 + groupCodeRouter.POST("addarchivetype", authorityApi.AddArchive) //添加栏目 + groupCodeRouter.POST("getarchiveinfo", authorityApi.GetArchiveInfo) //获取单个栏目信息 + groupCodeRouter.POST("eitearchivestate", authorityApi.EiteArchiveState) //改变栏目状态 + groupCodeRouter.POST("eitearchiveinfo", authorityApi.EiteArchiveInfo) //修改栏目信息 + + // groupCodeRouter.POST("archivefilelist", authorityApi.ArchiveFileList) //文章列表 + + } + + var arcjiveFileApi = v1.ApiGroupApp.ArchiveApi.GraphicInformation + { + groupCodeRouter.POST("archivefilelist", arcjiveFileApi.ArchiveFileList) //文章列表 + + } +} diff --git a/gin_server_admin/router/archive/enter.go b/gin_server_admin/router/archive/enter.go new file mode 100644 index 0000000..6325a53 --- /dev/null +++ b/gin_server_admin/router/archive/enter.go @@ -0,0 +1,5 @@ +package archive + +type RouterGroup struct { + ArchiveStruct +} diff --git a/gin_server_admin/router/enter.go b/gin_server_admin/router/enter.go index f53dd92..917c0d7 100644 --- a/gin_server_admin/router/enter.go +++ b/gin_server_admin/router/enter.go @@ -1,21 +1,25 @@ package router import ( + "github.com/flipped-aurora/gin-vue-admin/server/router/archive" "github.com/flipped-aurora/gin-vue-admin/server/router/autocode" "github.com/flipped-aurora/gin-vue-admin/server/router/example" "github.com/flipped-aurora/gin-vue-admin/server/router/examtestpage" "github.com/flipped-aurora/gin-vue-admin/server/router/shiyan" "github.com/flipped-aurora/gin-vue-admin/server/router/system" + "github.com/flipped-aurora/gin-vue-admin/server/router/uploaddownload" "github.com/flipped-aurora/gin-vue-admin/server/router/wechatcallbackrouter" ) type RouterGroup struct { - System system.RouterGroup - Example example.RouterGroup - Autocode autocode.RouterGroup - Shiyan shiyan.RouterGroup - GroupHandle examtestpage.RouterGroup - WeChatCallBacl wechatcallbackrouter.RouterGroup + System system.RouterGroup + Example example.RouterGroup + Autocode autocode.RouterGroup + Shiyan shiyan.RouterGroup + GroupHandle examtestpage.RouterGroup + WeChatCallBacl wechatcallbackrouter.RouterGroup + ArchiveStructApi archive.RouterGroup + FileUpDownLoad uploaddownload.RouterGroup //文件上传下载 } var RouterGroupApp = new(RouterGroup) diff --git a/gin_server_admin/router/shiyan/sys_shiyan.go b/gin_server_admin/router/shiyan/sys_shiyan.go index 22ab3e6..ee5b0f8 100644 --- a/gin_server_admin/router/shiyan/sys_shiyan.go +++ b/gin_server_admin/router/shiyan/sys_shiyan.go @@ -13,6 +13,10 @@ func (s *ShiyanRouter) InitShiyanRouter(Router *gin.RouterGroup) { { shiyanCodeRouter.POST("/", authorityApi.AddBaseMenu) // 删除回滚记录 shiyanCodeRouter.POST("/digui", authorityApi.DiGui) + shiyanCodeRouter.POST("/datamap", authorityApi.GormToMap) + shiyanCodeRouter.POST("/jsonstr", authorityApi.ReadJsonFiles) + shiyanCodeRouter.POST("/xml", authorityApi.XmlToJson) + shiyanCodeRouter.POST("/approve", authorityApi.EstablishApprove) //审批操作 } } diff --git a/gin_server_admin/router/uploaddownload/enter.go b/gin_server_admin/router/uploaddownload/enter.go new file mode 100644 index 0000000..e65a2cf --- /dev/null +++ b/gin_server_admin/router/uploaddownload/enter.go @@ -0,0 +1,5 @@ +package uploaddownload + +type RouterGroup struct { + FileUploadDownload +} diff --git a/gin_server_admin/router/uploaddownload/fileuplaoddown.go b/gin_server_admin/router/uploaddownload/fileuplaoddown.go new file mode 100644 index 0000000..fceb412 --- /dev/null +++ b/gin_server_admin/router/uploaddownload/fileuplaoddown.go @@ -0,0 +1,19 @@ +package uploaddownload + +import ( + v1 "github.com/flipped-aurora/gin-vue-admin/server/api/v1" + "github.com/gin-gonic/gin" +) + +type FileUploadDownload struct{} + +func (f *FileUploadDownload) InitGroupRouter(Router *gin.RouterGroup) { + groupCodeRouter := Router.Group("upordown") + var authorityApi = v1.ApiGroupApp.FileUploadOrDownloadApi.FileUploadDownload + { + groupCodeRouter.POST("", authorityApi.LongRangeFileUpload) //上传文件 + + // groupCodeRouter.POST("archivefilelist", authorityApi.ArchiveFileList) //文章列表 + + } +} diff --git a/gin_server_admin/shenpi-2.xml b/gin_server_admin/shenpi-2.xml new file mode 100644 index 0000000..706c903 --- /dev/null +++ b/gin_server_admin/shenpi-2.xml @@ -0,0 +1,99 @@ + + + + + 流程描述 + + SequenceFlow_1ubjhis + SequenceFlow_1g5ddlz + + + + SequenceFlow_1ubjhis + SequenceFlow_042i1f0 + + + SequenceFlow_042i1f0 + SequenceFlow_0kxnuqq + + + SequenceFlow_1g5ddlz + SequenceFlow_1rrokxg + + + SequenceFlow_0kxnuqq + SequenceFlow_1rrokxg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/gin_server_admin/shenpi-5.json b/gin_server_admin/shenpi-5.json new file mode 100644 index 0000000..281f442 --- /dev/null +++ b/gin_server_admin/shenpi-5.json @@ -0,0 +1,527 @@ +{ + "code": 103, + "data": { + "XMLName": { + "Space": "http://www.omg.org/spec/BPMN/20100524/MODEL", + "Local": "definitions" + }, + "Text": "", + "Bpmn2": "http://www.omg.org/spec/BPMN/20100524/MODEL", + "Xsi": "http://www.w3.org/2001/XMLSchema-instance", + "Bpmndi": "http://www.omg.org/spec/BPMN/20100524/DI", + "Dc": "http://www.omg.org/spec/DD/20100524/DC", + "Flowable": "http://flowable.org/bpmn", + "Di": "http://www.omg.org/spec/DD/20100524/DI", + "ID": "sample-diagram", + "TargetNamespace": "http://bpmn.io/schema/bpmn", + "SchemaLocation": "http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd", + "Process": { + "Text": "", + "ID": "流程ID", + "Name": "流程名称", + "Documentation": { + "Text": "流程描述" + }, + "StartEvent": { + "Text": "", + "ID": "开始ID", + "Name": "开始名称", + "Outgoing": [ + { + "Text": "条件1——ID" + }, + { + "Text": "条件2——ID" + } + ] + }, + "UserTask": [ + { + "Text": "", + "ID": "审批1——ID", + "Name": "审批1——名称(指定人员)", + "Assignee": "1001", + "CandidateGroups": "", + "CandidateUsers": "", + "Incoming": [ + { + "Text": "条件1——ID" + } + ], + "Outgoing": [ + { + "Text": "条件4——ID" + }, + { + "Text": "条件3——ID" + } + ] + }, + { + "Text": "", + "ID": "审批2——ID", + "Name": "审批2名称——(候选人)", + "Assignee": "", + "CandidateGroups": "", + "CandidateUsers": "1001,1002,1003", + "Incoming": [ + { + "Text": "条件4——ID" + } + ], + "Outgoing": [ + { + "Text": "结束指向1——ID" + } + ] + }, + { + "Text": "", + "ID": "审批3——ID", + "Name": "审批3——名称(岗位)", + "Assignee": "", + "CandidateGroups": "personnel", + "CandidateUsers": "", + "Incoming": [ + { + "Text": "条件2——ID" + } + ], + "Outgoing": [ + { + "Text": "条件6——ID" + } + ] + }, + { + "Text": "", + "ID": "审批4——ID", + "Name": "审批4名称——(经理)", + "Assignee": "", + "CandidateGroups": "manager", + "CandidateUsers": "", + "Incoming": [ + { + "Text": "条件6——ID" + }, + { + "Text": "条件3——ID" + } + ], + "Outgoing": [ + { + "Text": "结束指向2——ID" + } + ] + } + ], + "EndEvent": { + "Text": "", + "ID": "结束ID", + "Name": "结束名称", + "Incoming": [ + { + "Text": "结束指向1——ID" + }, + { + "Text": "结束指向2——ID" + } + ] + }, + "SequenceFlow": [ + { + "Text": "", + "ID": "条件1——ID", + "Name": "条件1——名称", + "SourceRef": "开始ID", + "TargetRef": "审批1——ID", + "ConditionExpression": { + "Text": "id>100", + "Type": "bpmn2:tFormalExpression" + } + }, + { + "Text": "", + "ID": "条件4——ID", + "Name": "条件4——名称", + "SourceRef": "审批1——ID", + "TargetRef": "审批2——ID", + "ConditionExpression": { + "Text": "!=100", + "Type": "bpmn2:tFormalExpression" + } + }, + { + "Text": "", + "ID": "结束指向1——ID", + "Name": "结束指向1——名称", + "SourceRef": "审批2——ID", + "TargetRef": "结束ID", + "ConditionExpression": { + "Text": "lll", + "Type": "bpmn2:tFormalExpression" + } + }, + { + "Text": "", + "ID": "条件2——ID", + "Name": "条件2——ID", + "SourceRef": "开始ID", + "TargetRef": "审批3——ID", + "ConditionExpression": { + "Text": "ID<100", + "Type": "bpmn2:tFormalExpression" + } + }, + { + "Text": "", + "ID": "条件6——ID", + "Name": "条件6——名称", + "SourceRef": "审批3——ID", + "TargetRef": "审批4——ID", + "ConditionExpression": { + "Text": "250", + "Type": "bpmn2:tFormalExpression" + } + }, + { + "Text": "", + "ID": "结束指向2——ID", + "Name": "结束指向2——名称", + "SourceRef": "审批4——ID", + "TargetRef": "结束ID", + "ConditionExpression": { + "Text": "rrrr", + "Type": "bpmn2:tFormalExpression" + } + }, + { + "Text": "", + "ID": "条件3——ID", + "Name": "条件3——名称", + "SourceRef": "审批1——ID", + "TargetRef": "审批4——ID", + "ConditionExpression": { + "Text": "ID=100", + "Type": "bpmn2:tFormalExpression" + } + } + ] + }, + "BPMNDiagram": { + "Text": "", + "ID": "BPMNDiagram_1", + "BPMNPlane": { + "Text": "", + "ID": "BPMNPlane_1", + "BpmnElement": "流程ID", + "BPMNShape": [ + { + "Text": "", + "ID": "StartEvent_01ydzqe_di", + "BpmnElement": "开始ID", + "Bounds": { + "Text": "", + "X": "142", + "Y": "212", + "Width": "36", + "Height": "36" + }, + "BPMNLabel": { + "Text": "", + "Bounds": { + "Text": "", + "X": "149", + "Y": "255", + "Width": "22", + "Height": "14" + } + } + }, + { + "Text": "", + "ID": "UserTask_10pidv1_di", + "BpmnElement": "审批1——ID", + "Bounds": { + "Text": "", + "X": "220", + "Y": "90", + "Width": "100", + "Height": "80" + }, + "BPMNLabel": { + "Text": "", + "Bounds": { + "Text": "", + "X": "", + "Y": "", + "Width": "", + "Height": "" + } + } + }, + { + "Text": "", + "ID": "UserTask_17p1zqm_di", + "BpmnElement": "审批2——ID", + "Bounds": { + "Text": "", + "X": "440", + "Y": "90", + "Width": "100", + "Height": "80" + }, + "BPMNLabel": { + "Text": "", + "Bounds": { + "Text": "", + "X": "", + "Y": "", + "Width": "", + "Height": "" + } + } + }, + { + "Text": "", + "ID": "UserTask_0vur320_di", + "BpmnElement": "审批3——ID", + "Bounds": { + "Text": "", + "X": "220", + "Y": "330", + "Width": "100", + "Height": "80" + }, + "BPMNLabel": { + "Text": "", + "Bounds": { + "Text": "", + "X": "", + "Y": "", + "Width": "", + "Height": "" + } + } + }, + { + "Text": "", + "ID": "UserTask_10m2y3g_di", + "BpmnElement": "审批4——ID", + "Bounds": { + "Text": "", + "X": "440", + "Y": "330", + "Width": "100", + "Height": "80" + }, + "BPMNLabel": { + "Text": "", + "Bounds": { + "Text": "", + "X": "", + "Y": "", + "Width": "", + "Height": "" + } + } + }, + { + "Text": "", + "ID": "EndEvent_1ss6r1e_di", + "BpmnElement": "结束ID", + "Bounds": { + "Text": "", + "X": "632", + "Y": "222", + "Width": "36", + "Height": "36" + }, + "BPMNLabel": { + "Text": "", + "Bounds": { + "Text": "", + "X": "639", + "Y": "265", + "Width": "22", + "Height": "14" + } + } + } + ], + "BPMNEdge": [ + { + "Text": "", + "ID": "SequenceFlow_1a144xd_di", + "BpmnElement": "条件1——ID", + "Waypoint": [ + { + "Text": "", + "X": "178", + "Y": "230" + }, + { + "Text": "", + "X": "199", + "Y": "230" + }, + { + "Text": "", + "X": "199", + "Y": "130" + }, + { + "Text": "", + "X": "220", + "Y": "130" + } + ] + }, + { + "Text": "", + "ID": "SequenceFlow_1f488nn_di", + "BpmnElement": "条件4——ID", + "Waypoint": [ + { + "Text": "", + "X": "320", + "Y": "130" + }, + { + "Text": "", + "X": "440", + "Y": "130" + } + ] + }, + { + "Text": "", + "ID": "SequenceFlow_1su08qu_di", + "BpmnElement": "结束指向1——ID", + "Waypoint": [ + { + "Text": "", + "X": "540", + "Y": "130" + }, + { + "Text": "", + "X": "586", + "Y": "130" + }, + { + "Text": "", + "X": "586", + "Y": "230" + }, + { + "Text": "", + "X": "635", + "Y": "230" + } + ] + }, + { + "Text": "", + "ID": "SequenceFlow_1sn3aag_di", + "BpmnElement": "条件2——ID", + "Waypoint": [ + { + "Text": "", + "X": "178", + "Y": "230" + }, + { + "Text": "", + "X": "199", + "Y": "230" + }, + { + "Text": "", + "X": "199", + "Y": "370" + }, + { + "Text": "", + "X": "220", + "Y": "370" + } + ] + }, + { + "Text": "", + "ID": "SequenceFlow_13unl6c_di", + "BpmnElement": "条件6——ID", + "Waypoint": [ + { + "Text": "", + "X": "320", + "Y": "370" + }, + { + "Text": "", + "X": "440", + "Y": "370" + } + ] + }, + { + "Text": "", + "ID": "SequenceFlow_1y6oad7_di", + "BpmnElement": "结束指向2——ID", + "Waypoint": [ + { + "Text": "", + "X": "540", + "Y": "370" + }, + { + "Text": "", + "X": "586", + "Y": "370" + }, + { + "Text": "", + "X": "586", + "Y": "250" + }, + { + "Text": "", + "X": "635", + "Y": "250" + } + ] + }, + { + "Text": "", + "ID": "SequenceFlow_18hsq1p_di", + "BpmnElement": "条件3——ID", + "Waypoint": [ + { + "Text": "", + "X": "320", + "Y": "160" + }, + { + "Text": "", + "X": "380", + "Y": "160" + }, + { + "Text": "", + "X": "380", + "Y": "340" + }, + { + "Text": "", + "X": "440", + "Y": "340" + } + ] + } + ] + } + } + }, + "msg": "参数错误!" +} \ No newline at end of file diff --git a/gin_server_admin/shenpi.json b/gin_server_admin/shenpi.json new file mode 100644 index 0000000..7515f16 --- /dev/null +++ b/gin_server_admin/shenpi.json @@ -0,0 +1,501 @@ + { + "XMLName": { + "Space": "http://www.omg.org/spec/BPMN/20100524/MODEL", + "Local": "definitions" + }, + "Text": "", + "Bpmn2": "http://www.omg.org/spec/BPMN/20100524/MODEL", + "Xsi": "http://www.w3.org/2001/XMLSchema-instance", + "Bpmndi": "http://www.omg.org/spec/BPMN/20100524/DI", + "Dc": "http://www.omg.org/spec/DD/20100524/DC", + "Flowable": "http://flowable.org/bpmn", + "Di": "http://www.omg.org/spec/DD/20100524/DI", + "ID": "sample-diagram", + "TargetNamespace": "http://bpmn.io/schema/bpmn", + "SchemaLocation": "http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd", + "Process": { + "Text": "", + "ID": "流程ID", + "Name": "流程名称", + "Documentation": { + "Text": "流程描述" + }, + "StartEvent": { + "Text": "", + "ID": "开始ID", + "Name": "开始名称", + "Outgoing": [ + { + "Text": "条件1——ID" + }, + { + "Text": "条件2——ID" + } + ] + }, + "UserTask": [ + { + "Text": "", + "ID": "审批1——ID", + "Name": "审批1——名称(指定人员)", + "Assignee": "1001", + "CandidateGroups": "", + "CandidateUsers": "", + "Incoming": { + "Text": "条件1——ID" + }, + "Outgoing": { + "Text": "条件3——ID" + } + }, + { + "Text": "", + "ID": "审批2——ID", + "Name": "审批2名称——(候选人)", + "Assignee": "", + "CandidateGroups": "", + "CandidateUsers": "1002,1003,1001", + "Incoming": { + "Text": "SequenceFlow_1f488nn" + }, + "Outgoing": { + "Text": "SequenceFlow_1su08qu" + } + }, + { + "Text": "", + "ID": "审批3——ID", + "Name": "审批3——名称(岗位)", + "Assignee": "", + "CandidateGroups": "personnel", + "CandidateUsers": "", + "Incoming": { + "Text": "条件2——ID" + }, + "Outgoing": { + "Text": "SequenceFlow_13unl6c" + } + }, + { + "Text": "", + "ID": "审批4——ID", + "Name": "审批4名称——(经理)", + "Assignee": "", + "CandidateGroups": "manager", + "CandidateUsers": "", + "Incoming": { + "Text": "条件3——ID" + }, + "Outgoing": { + "Text": "SequenceFlow_1y6oad7" + } + } + ], + "EndEvent": { + "Text": "", + "ID": "结束ID", + "Name": "结束名称", + "Incoming": [ + { + "Text": "SequenceFlow_1su08qu" + }, + { + "Text": "SequenceFlow_1y6oad7" + } + ] + }, + "SequenceFlow": [ + { + "Text": "", + "ID": "条件1——ID", + "Name": "条件1——名称", + "SourceRef": "开始ID", + "TargetRef": "审批1——ID", + "ConditionExpression": { + "Text": "id>100", + "Type": "bpmn2:tFormalExpression" + } + }, + { + "Text": "", + "ID": "SequenceFlow_1f488nn", + "Name": "", + "SourceRef": "审批1——ID", + "TargetRef": "审批2——ID", + "ConditionExpression": { + "Text": "", + "Type": "" + } + }, + { + "Text": "", + "ID": "SequenceFlow_1su08qu", + "Name": "", + "SourceRef": "审批2——ID", + "TargetRef": "结束ID", + "ConditionExpression": { + "Text": "", + "Type": "" + } + }, + { + "Text": "", + "ID": "条件2——ID", + "Name": "条件2——ID", + "SourceRef": "开始ID", + "TargetRef": "审批3——ID", + "ConditionExpression": { + "Text": "ID<100", + "Type": "bpmn2:tFormalExpression" + } + }, + { + "Text": "", + "ID": "SequenceFlow_13unl6c", + "Name": "", + "SourceRef": "审批3——ID", + "TargetRef": "审批4——ID", + "ConditionExpression": { + "Text": "", + "Type": "" + } + }, + { + "Text": "", + "ID": "SequenceFlow_1y6oad7", + "Name": "", + "SourceRef": "审批4——ID", + "TargetRef": "结束ID", + "ConditionExpression": { + "Text": "", + "Type": "" + } + }, + { + "Text": "", + "ID": "条件3——ID", + "Name": "条件3——名称", + "SourceRef": "审批1——ID", + "TargetRef": "审批4——ID", + "ConditionExpression": { + "Text": "ID=100", + "Type": "bpmn2:tFormalExpression" + } + } + ] + }, + "BPMNDiagram": { + "Text": "", + "ID": "BPMNDiagram_1", + "BPMNPlane": { + "Text": "", + "ID": "BPMNPlane_1", + "BpmnElement": "流程ID", + "BPMNShape": [ + { + "Text": "", + "ID": "StartEvent_01ydzqe_di", + "BpmnElement": "开始ID", + "Bounds": { + "Text": "", + "X": "142", + "Y": "212", + "Width": "36", + "Height": "36" + }, + "BPMNLabel": { + "Text": "", + "Bounds": { + "Text": "", + "X": "149", + "Y": "255", + "Width": "22", + "Height": "14" + } + } + }, + { + "Text": "", + "ID": "UserTask_10pidv1_di", + "BpmnElement": "审批1——ID", + "Bounds": { + "Text": "", + "X": "220", + "Y": "90", + "Width": "100", + "Height": "80" + }, + "BPMNLabel": { + "Text": "", + "Bounds": { + "Text": "", + "X": "", + "Y": "", + "Width": "", + "Height": "" + } + } + }, + { + "Text": "", + "ID": "UserTask_17p1zqm_di", + "BpmnElement": "审批2——ID", + "Bounds": { + "Text": "", + "X": "440", + "Y": "90", + "Width": "100", + "Height": "80" + }, + "BPMNLabel": { + "Text": "", + "Bounds": { + "Text": "", + "X": "", + "Y": "", + "Width": "", + "Height": "" + } + } + }, + { + "Text": "", + "ID": "UserTask_0vur320_di", + "BpmnElement": "审批3——ID", + "Bounds": { + "Text": "", + "X": "220", + "Y": "330", + "Width": "100", + "Height": "80" + }, + "BPMNLabel": { + "Text": "", + "Bounds": { + "Text": "", + "X": "", + "Y": "", + "Width": "", + "Height": "" + } + } + }, + { + "Text": "", + "ID": "UserTask_10m2y3g_di", + "BpmnElement": "审批4——ID", + "Bounds": { + "Text": "", + "X": "440", + "Y": "330", + "Width": "100", + "Height": "80" + }, + "BPMNLabel": { + "Text": "", + "Bounds": { + "Text": "", + "X": "", + "Y": "", + "Width": "", + "Height": "" + } + } + }, + { + "Text": "", + "ID": "EndEvent_1ss6r1e_di", + "BpmnElement": "结束ID", + "Bounds": { + "Text": "", + "X": "632", + "Y": "222", + "Width": "36", + "Height": "36" + }, + "BPMNLabel": { + "Text": "", + "Bounds": { + "Text": "", + "X": "639", + "Y": "265", + "Width": "22", + "Height": "14" + } + } + } + ], + "BPMNEdge": [ + { + "Text": "", + "ID": "SequenceFlow_1a144xd_di", + "BpmnElement": "条件1——ID", + "Waypoint": [ + { + "Text": "", + "X": "178", + "Y": "230" + }, + { + "Text": "", + "X": "199", + "Y": "230" + }, + { + "Text": "", + "X": "199", + "Y": "130" + }, + { + "Text": "", + "X": "220", + "Y": "130" + } + ] + }, + { + "Text": "", + "ID": "SequenceFlow_1f488nn_di", + "BpmnElement": "SequenceFlow_1f488nn", + "Waypoint": [ + { + "Text": "", + "X": "320", + "Y": "130" + }, + { + "Text": "", + "X": "440", + "Y": "130" + } + ] + }, + { + "Text": "", + "ID": "SequenceFlow_1su08qu_di", + "BpmnElement": "SequenceFlow_1su08qu", + "Waypoint": [ + { + "Text": "", + "X": "540", + "Y": "130" + }, + { + "Text": "", + "X": "586", + "Y": "130" + }, + { + "Text": "", + "X": "586", + "Y": "230" + }, + { + "Text": "", + "X": "635", + "Y": "230" + } + ] + }, + { + "Text": "", + "ID": "SequenceFlow_1sn3aag_di", + "BpmnElement": "条件2——ID", + "Waypoint": [ + { + "Text": "", + "X": "178", + "Y": "230" + }, + { + "Text": "", + "X": "199", + "Y": "230" + }, + { + "Text": "", + "X": "199", + "Y": "370" + }, + { + "Text": "", + "X": "220", + "Y": "370" + } + ] + }, + { + "Text": "", + "ID": "SequenceFlow_13unl6c_di", + "BpmnElement": "SequenceFlow_13unl6c", + "Waypoint": [ + { + "Text": "", + "X": "320", + "Y": "370" + }, + { + "Text": "", + "X": "440", + "Y": "370" + } + ] + }, + { + "Text": "", + "ID": "SequenceFlow_1y6oad7_di", + "BpmnElement": "SequenceFlow_1y6oad7", + "Waypoint": [ + { + "Text": "", + "X": "540", + "Y": "370" + }, + { + "Text": "", + "X": "586", + "Y": "370" + }, + { + "Text": "", + "X": "586", + "Y": "250" + }, + { + "Text": "", + "X": "635", + "Y": "250" + } + ] + }, + { + "Text": "", + "ID": "SequenceFlow_18hsq1p_di", + "BpmnElement": "条件3——ID", + "Waypoint": [ + { + "Text": "", + "X": "320", + "Y": "160" + }, + { + "Text": "", + "X": "380", + "Y": "160" + }, + { + "Text": "", + "X": "380", + "Y": "340" + }, + { + "Text": "", + "X": "440", + "Y": "340" + } + ] + } + ] + } + } + } \ No newline at end of file diff --git a/gin_server_admin/shenpi1.json b/gin_server_admin/shenpi1.json new file mode 100644 index 0000000..6468f1f --- /dev/null +++ b/gin_server_admin/shenpi1.json @@ -0,0 +1,347 @@ +{ + "definitions": { + "process": { + "documentation": { + "__prefix": "bpmn2", + "__text": "流程描述" + }, + "startEvent": { + "outgoing": [ + { + "__prefix": "bpmn2", + "__text": "SequenceFlow_1ubjhis" + }, + { + "__prefix": "bpmn2", + "__text": "SequenceFlow_1g5ddlz" + } + ], + "id": "begin", + "name": "开始", + "__prefix": "bpmn2" + }, + "userTask": [ + { + "incoming": { + "__prefix": "bpmn2", + "__text": "SequenceFlow_1ubjhis" + }, + "outgoing": { + "__prefix": "bpmn2", + "__text": "SequenceFlow_042i1f0" + }, + "id": "shen_pi_1", + "name": "审批1", + "flowable:assignee": "1001", + "__prefix": "bpmn2" + }, + { + "incoming": { + "__prefix": "bpmn2", + "__text": "SequenceFlow_042i1f0" + }, + "outgoing": { + "__prefix": "bpmn2", + "__text": "SequenceFlow_0kxnuqq" + }, + "id": "shen_pi_2", + "name": "审批2", + "flowable:candidateGroups": "personnel", + "__prefix": "bpmn2" + }, + { + "incoming": { + "__prefix": "bpmn2", + "__text": "SequenceFlow_1g5ddlz" + }, + "outgoing": { + "__prefix": "bpmn2", + "__text": "SequenceFlow_1rrokxg" + }, + "id": "shen_pi_3", + "name": "审批3", + "flowable:candidateUsers": "1001,1002", + "__prefix": "bpmn2" + } + ], + "endEvent": { + "incoming": [ + { + "__prefix": "bpmn2", + "__text": "SequenceFlow_0kxnuqq" + }, + { + "__prefix": "bpmn2", + "__text": "SequenceFlow_1rrokxg" + } + ], + "id": "end", + "name": "结束", + "__prefix": "bpmn2" + }, + "sequenceFlow": [ + { + "id": "SequenceFlow_1ubjhis", + "sourceRef": "begin", + "targetRef": "shen_pi_1", + "__prefix": "bpmn2" + }, + { + "id": "SequenceFlow_1g5ddlz", + "sourceRef": "begin", + "targetRef": "shen_pi_3", + "__prefix": "bpmn2" + }, + { + "id": "SequenceFlow_042i1f0", + "sourceRef": "shen_pi_1", + "targetRef": "shen_pi_2", + "__prefix": "bpmn2" + }, + { + "id": "SequenceFlow_0kxnuqq", + "sourceRef": "shen_pi_2", + "targetRef": "end", + "__prefix": "bpmn2" + }, + { + "id": "SequenceFlow_1rrokxg", + "sourceRef": "shen_pi_3", + "targetRef": "end", + "__prefix": "bpmn2" + } + ], + "id": "liu_cheng", + "name": "流程", + "__prefix": "bpmn2" + }, + "BPMNDiagram": { + "BPMNPlane": { + "BPMNShape": [ + { + "Bounds": { + "x": "102", + "y": "162", + "width": "36", + "height": "36", + "__prefix": "dc" + }, + "BPMNLabel": { + "Bounds": { + "x": "109", + "y": "205", + "width": "22", + "height": "14", + "__prefix": "dc" + }, + "__prefix": "bpmndi" + }, + "id": "StartEvent_01ydzqe_di", + "bpmnElement": "begin", + "__prefix": "bpmndi" + }, + { + "Bounds": { + "x": "210", + "y": "30", + "width": "100", + "height": "80", + "__prefix": "dc" + }, + "id": "UserTask_0s3acj5_di", + "bpmnElement": "shen_pi_1", + "__prefix": "bpmndi" + }, + { + "Bounds": { + "x": "470", + "y": "30", + "width": "100", + "height": "80", + "__prefix": "dc" + }, + "id": "UserTask_0lps88c_di", + "bpmnElement": "shen_pi_2", + "__prefix": "bpmndi" + }, + { + "Bounds": { + "x": "310", + "y": "270", + "width": "100", + "height": "80", + "__prefix": "dc" + }, + "id": "UserTask_0dhr1b8_di", + "bpmnElement": "shen_pi_3", + "__prefix": "bpmndi" + }, + { + "Bounds": { + "x": "642", + "y": "162", + "width": "36", + "height": "36", + "__prefix": "dc" + }, + "BPMNLabel": { + "Bounds": { + "x": "649", + "y": "205", + "width": "22", + "height": "14", + "__prefix": "dc" + }, + "__prefix": "bpmndi" + }, + "id": "EndEvent_1s5z0sm_di", + "bpmnElement": "end", + "__prefix": "bpmndi" + } + ], + "BPMNEdge": [ + { + "waypoint": [ + { + "x": "138", + "y": "180", + "__prefix": "di" + }, + { + "x": "174", + "y": "180", + "__prefix": "di" + }, + { + "x": "174", + "y": "70", + "__prefix": "di" + }, + { + "x": "210", + "y": "70", + "__prefix": "di" + } + ], + "id": "SequenceFlow_1ubjhis_di", + "bpmnElement": "SequenceFlow_1ubjhis", + "__prefix": "bpmndi" + }, + { + "waypoint": [ + { + "x": "138", + "y": "180", + "__prefix": "di" + }, + { + "x": "224", + "y": "180", + "__prefix": "di" + }, + { + "x": "224", + "y": "310", + "__prefix": "di" + }, + { + "x": "310", + "y": "310", + "__prefix": "di" + } + ], + "id": "SequenceFlow_1g5ddlz_di", + "bpmnElement": "SequenceFlow_1g5ddlz", + "__prefix": "bpmndi" + }, + { + "waypoint": [ + { + "x": "310", + "y": "70", + "__prefix": "di" + }, + { + "x": "470", + "y": "70", + "__prefix": "di" + } + ], + "id": "SequenceFlow_042i1f0_di", + "bpmnElement": "SequenceFlow_042i1f0", + "__prefix": "bpmndi" + }, + { + "waypoint": [ + { + "x": "570", + "y": "70", + "__prefix": "di" + }, + { + "x": "606", + "y": "70", + "__prefix": "di" + }, + { + "x": "606", + "y": "180", + "__prefix": "di" + }, + { + "x": "642", + "y": "180", + "__prefix": "di" + } + ], + "id": "SequenceFlow_0kxnuqq_di", + "bpmnElement": "SequenceFlow_0kxnuqq", + "__prefix": "bpmndi" + }, + { + "waypoint": [ + { + "x": "410", + "y": "310", + "__prefix": "di" + }, + { + "x": "526", + "y": "310", + "__prefix": "di" + }, + { + "x": "526", + "y": "180", + "__prefix": "di" + }, + { + "x": "642", + "y": "180", + "__prefix": "di" + } + ], + "id": "SequenceFlow_1rrokxg_di", + "bpmnElement": "SequenceFlow_1rrokxg", + "__prefix": "bpmndi" + } + ], + "id": "BPMNPlane_1", + "bpmnElement": "liu_cheng", + "__prefix": "bpmndi" + }, + "id": "BPMNDiagram_1", + "__prefix": "bpmndi" + }, + "xmlns:bpmn2": "http://www.omg.org/spec/BPMN/20100524/MODEL", + "xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance", + "xmlns:bpmndi": "http://www.omg.org/spec/BPMN/20100524/DI", + "xmlns:dc": "http://www.omg.org/spec/DD/20100524/DC", + "xmlns:flowable": "http://flowable.org/bpmn", + "xmlns:di": "http://www.omg.org/spec/DD/20100524/DI", + "id": "sample-diagram", + "targetNamespace": "http://bpmn.io/schema/bpmn", + "xsi:schemaLocation": "http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd", + "__prefix": "bpmn2" + } +} \ No newline at end of file diff --git a/gin_server_admin/shipi-4.ini b/gin_server_admin/shipi-4.ini new file mode 100644 index 0000000..8e498db --- /dev/null +++ b/gin_server_admin/shipi-4.ini @@ -0,0 +1,2 @@ + +流程描述条件1——ID条件2——ID条件1——IDSequenceFlow_1f488nn条件3——IDSequenceFlow_1f488nnSequenceFlow_1su08qu条件2——IDSequenceFlow_13unl6cSequenceFlow_13unl6c条件3——IDSequenceFlow_1y6oad7SequenceFlow_1su08quSequenceFlow_1y6oad7id>100ID<100ID=100 \ No newline at end of file diff --git a/gin_server_admin/uploads/file/e8c0653fea13f91bf3c48159f7c24f78_20211221133334.jpg b/gin_server_admin/uploads/file/e8c0653fea13f91bf3c48159f7c24f78_20211221133334.jpg new file mode 100644 index 0000000..ee82af6 Binary files /dev/null and b/gin_server_admin/uploads/file/e8c0653fea13f91bf3c48159f7c24f78_20211221133334.jpg differ diff --git a/gin_server_admin/uploads/file/eccbc87e4b5ce2fe28308fd9f2a7baf3_20211222085813.jpg b/gin_server_admin/uploads/file/eccbc87e4b5ce2fe28308fd9f2a7baf3_20211222085813.jpg new file mode 100644 index 0000000..f5432ce Binary files /dev/null and b/gin_server_admin/uploads/file/eccbc87e4b5ce2fe28308fd9f2a7baf3_20211222085813.jpg differ diff --git a/gin_server_admin/utils/redishandel/myredis.go b/gin_server_admin/utils/redishandel/myredis.go index 7fcc99d..c782194 100644 --- a/gin_server_admin/utils/redishandel/myredis.go +++ b/gin_server_admin/utils/redishandel/myredis.go @@ -85,7 +85,12 @@ func (r *RedisStoreType) HashSet(hashName, hashKey, hashVal string) bool { if err != nil { return false } - global.GVA_REDIS.PExpire(r.Context, r.PreKey+hashName, r.Expiration) + if r.Expiration == 0 { + global.GVA_REDIS.Persist(r.Context, r.PreKey+hashName) + } else { + global.GVA_REDIS.PExpire(r.Context, r.PreKey+hashName, r.Expiration) + } + // global.GVA_REDIS.PExpire(r.Context, r.PreKey+hashName, r.Expiration) return true } @@ -101,7 +106,12 @@ func (r *RedisStoreType) HashMsetAdd(hashName string, hashVal map[string]interfa if err != nil { return false } - global.GVA_REDIS.PExpire(r.Context, r.PreKey+hashName, r.Expiration) + if r.Expiration == 0 { + global.GVA_REDIS.Persist(r.Context, r.PreKey+hashName) + } else { + global.GVA_REDIS.PExpire(r.Context, r.PreKey+hashName, r.Expiration) + } + // fmt.Printf("错误sss=========》%v\n", hashVal) return true } @@ -112,7 +122,12 @@ func (r *RedisStoreType) HashMsetAddAry(hashName string, hashVal []map[string]in if err != nil { return false } - global.GVA_REDIS.PExpire(r.Context, r.PreKey+hashName, r.Expiration) + if r.Expiration == 0 { + global.GVA_REDIS.Persist(r.Context, r.PreKey+hashName) + } else { + global.GVA_REDIS.PExpire(r.Context, r.PreKey+hashName, r.Expiration) + } + // global.GVA_REDIS.PExpire(r.Context, r.PreKey+hashName, r.Expiration) // fmt.Printf("错误sss=========》%v\n", hashVal) return true } diff --git a/gin_server_admin/其他支持文件/文档类栏目管理.zip b/gin_server_admin/其他支持文件/文档类栏目管理.zip new file mode 100644 index 0000000..851b3f5 Binary files /dev/null and b/gin_server_admin/其他支持文件/文档类栏目管理.zip differ diff --git a/gin_server_admin/其他支持文件/文档类栏目管理/恒信动态.txt b/gin_server_admin/其他支持文件/文档类栏目管理/恒信动态.txt new file mode 100644 index 0000000..2a93c29 --- /dev/null +++ b/gin_server_admin/其他支持文件/文档类栏目管理/恒信动态.txt @@ -0,0 +1,62 @@ +[ + { + // 栏目id + id:1, + // 栏目名称 + columnr_name:'精益6S管理', + // 排序 + sort:'1', + // 状态 + state:false + }, + { + // 栏目id + id:2, + // 栏目名称 + columnr_name:'疫情防控', + // 排序 + sort:'2', + // 状态 + state:true + }, + { + // 栏目id + id:3, + // 栏目名称 + columnr_name:'新闻动态', + // 排序 + sort:'3', + // 状态 + state:true + }, + { + // 栏目id + id:4, + // 栏目名称 + columnr_name:'检查通报', + // 排序 + sort:'4', + // 状态 + state:true + }, + { + // 栏目id + id:5, + // 栏目名称 + columnr_name:'通知公告', + // 排序 + sort:'5', + // 状态 + state:true + }, + { + // 栏目id + id:6, + // 栏目名称 + columnr_name:'会议纪要', + // 排序 + sort:'6', + // 状态 + state:false + }, + ], \ No newline at end of file diff --git a/gin_server_admin/其他支持文件/文档类栏目管理/恒信课堂.txt b/gin_server_admin/其他支持文件/文档类栏目管理/恒信课堂.txt new file mode 100644 index 0000000..e69de29 diff --git a/gin_server_admin/其他支持文件/文档类栏目管理/知识库.txt b/gin_server_admin/其他支持文件/文档类栏目管理/知识库.txt new file mode 100644 index 0000000..c857ee7 --- /dev/null +++ b/gin_server_admin/其他支持文件/文档类栏目管理/知识库.txt @@ -0,0 +1 @@ +同顶级栏目/恒信动态相同 \ No newline at end of file diff --git a/gin_server_admin/其他支持文件/文档类栏目管理/顶级栏目管理.txt b/gin_server_admin/其他支持文件/文档类栏目管理/顶级栏目管理.txt new file mode 100644 index 0000000..60571a8 --- /dev/null +++ b/gin_server_admin/其他支持文件/文档类栏目管理/顶级栏目管理.txt @@ -0,0 +1,33 @@ + +[ + { + // 栏目id + id:1, + // 栏目名称 + columnr_name:'恒信动态', + // 排序 + sort:'1', + // 状态 + state:true + }, + { + // 栏目id + id:2, + // 栏目名称 + columnr_name:'知识库', + // 排序 + sort:'2', + // 状态 + state:true + }, + { + // 栏目id + id:3, + // 栏目名称 + columnr_name:'恒信课堂', + // 排序 + sort:'3', + // 状态 + state:true + }, + ], \ No newline at end of file