| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515 |
- package handlers
- import (
- "net/http"
- "sort"
- "easydo-echo_win7/models"
- "easydo-echo_win7/services"
- "easydo-echo_win7/utils"
- "easydo-echo_win7/middleware"
- "github.com/jmoiron/sqlx"
- "github.com/labstack/echo-contrib/session"
- "github.com/labstack/echo/v4"
- )
- func Add_process_route_to_routes(e *echo.Echo) {
- group := e.Group("/processRoute")
- group.Use(middleware.AuthMiddleware)
- group.POST("/getPage", processRouteGetPage)
- group.POST("/getList", processRouteGetList)
- group.POST("/save", processRouteSave)
- group.POST("/update", processRouteUpdate)
- group.POST("/remove", processRouteRemove)
- group.POST("/upgrade", processRouteUpgrade)
- group.POST("/regrade", processRouteRegrade)
- }
- func processRouteGetPage(c echo.Context) error {
- var paramMap map[string]interface{}
- if err := c.Bind(¶mMap); err != nil {
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
- }
- result, err := services.JdbcClient.GetJdbcPage(paramMap, models.ProcessRoute{})
- if err != nil {
- utils.PrintSqlErr(err)
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", err.Error()))
- }
- list := utils.ConvertInterface[[]models.ProcessRoute](result.Records)
- if len(list) == 0 {
- list = []models.ProcessRoute{}
- }
- for i := range list {
- model := list[i]
- minioList, err := services.JdbcClient.GetMinioFile(model)
- if err != nil {
- utils.PrintSearchFileErr(err)
- }
- model.FileList = &minioList
- detailParam := new(models.ProcessRouteDetail)
- detailParam.RouteId = model.ID
- result, err := services.JdbcClient.GetJdbcListByObject(detailParam)
- if err != nil {
- utils.PrintSqlErr(err)
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", err.Error()))
- }
- detail_list := utils.ConvertInterface[[]models.ProcessRouteDetail](result)
- for j := range detail_list {
- detail := detail_list[j]
- stage := new(models.ProcessStage)
- stage.ID = detail.StageId
- err = services.JdbcClient.GetJdbcModelById(stage)
- if err != nil {
- utils.PrintSqlErr(err)
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", err.Error()))
- }
- detail.ProcessStage = stage
- detail_list[j] = detail
- }
- model.DetailList = &detail_list
- routeParam := new(models.ProcessRoute)
- routeParam.ParentId = model.ID
- count, err := services.JdbcClient.GetJdbcCount(routeParam)
- if err != nil {
- utils.PrintSqlErr(err)
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", err.Error()))
- }
- if count > 0 {
- isHaveHistory := models.Common_Value_True_Value
- model.IsHaveHistory = &isHaveHistory
- } else {
- isHaveHistory := models.Common_Value_False_Value
- model.IsHaveHistory = &isHaveHistory
- }
- if model.InspectProgramId != nil && len(*model.InspectProgramId) > 0 {
- inspectProgram := new(models.QualityInspectProgram)
- inspectProgram.ID = model.InspectProgramId
- err = services.JdbcClient.GetJdbcModelById(inspectProgram)
- if err != nil {
- utils.PrintSqlErr(err)
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", err.Error()))
- }
- model.InspectProgram = inspectProgram
- }
- list[i] = model
- }
- result.Records = list
- return c.JSON(http.StatusOK, result)
- }
- func processRouteGetList(c echo.Context) error {
- var paramMap map[string]interface{}
- if err := c.Bind(¶mMap); err != nil {
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
- }
- result, err := services.JdbcClient.GetJdbcList(paramMap, models.ProcessRoute{})
- if err != nil {
- utils.PrintSqlErr(err)
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", err.Error()))
- }
- list := utils.ConvertInterface[[]models.ProcessRoute](result)
- if len(list) == 0 {
- return c.JSON(http.StatusOK, []string{})
- }
- return c.JSON(http.StatusOK, list)
- }
- func processRouteSave(c echo.Context) error {
- tx, _ := services.MYSQL_DB.Beginx()
- sess, _ := session.Get("auth_session", c)
- user_id, ok := sess.Values["user_id"].(int64)
- if !ok {
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("用户请先登录", ""))
- }
- route := new(models.ProcessRoute)
- if err := c.Bind(route); err != nil {
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
- }
- err_msg := processRoute_generateCode(route, tx)
- if err_msg != "" {
- tx.Rollback()
- return c.JSON(http.StatusBadRequest, utils.ErrorResponse(err_msg, ""))
- }
- status := models.Status_Enable
- route.Status = &status
- route.CreateId = &user_id
- parentId := models.Common_Value_Zero_String
- route.ParentId = &parentId
- services.JdbcClient.JdbcInsert(route, tx)
- detail_list := *route.DetailList
- for _, detail := range detail_list {
- detail.RouteId = route.ID
- err := services.JdbcClient.JdbcInsert(&detail, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- }
- if route.FileList == nil {
- tx.Commit()
- return c.JSON(http.StatusOK, route)
- }
- fileList := *route.FileList
- for _, file := range fileList {
- file.RefId = route.ID
- refType := models.File_Ref_Type_Process_Route
- file.RefType = &refType
- err := services.JdbcClient.JdbcInsert(&file, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- }
- tx.Commit()
- return c.JSON(http.StatusOK, route)
- }
- func processRouteUpdate(c echo.Context) error {
- tx, _ := services.MYSQL_DB.Beginx()
- route := new(models.ProcessRoute)
- if err := c.Bind(route); err != nil {
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
- }
- sess, _ := session.Get("auth_session", c)
- user_id, ok := sess.Values["user_id"].(int64)
- if !ok {
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("用户请先登录", ""))
- }
- route.UpdateId = &user_id
- err := services.JdbcClient.JdbcUpdateById(route, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- route_detial := new(models.ProcessRouteDetail)
- route_detial.RouteId = route.ID
- err = services.JdbcClient.JdbcRemove(route_detial, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- detail_list := *route.DetailList
- for _, detail := range detail_list {
- detail.RouteId = route.ID
- err := services.JdbcClient.JdbcInsert(&detail, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- }
- if route.FileList == nil {
- tx.Commit()
- return c.JSON(http.StatusOK, route)
- }
- fileList := *route.FileList
- for _, file := range fileList {
- file.RefId = route.ID
- refType := models.File_Ref_Type_Process_Route
- file.RefType = &refType
- err := services.JdbcClient.JdbcInsert(&file, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- }
- tx.Commit()
- return c.JSON(http.StatusOK, route)
- }
- func processRouteRemove(c echo.Context) error {
- tx, _ := services.MYSQL_DB.Beginx()
- route := new(models.ProcessRoute)
- if err := c.Bind(route); err != nil {
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
- }
- err := services.JdbcClient.JdbcRemoveById(route, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- minio_file := new(models.MinioFile)
- minio_file.RefId = route.ID
- refType := models.File_Ref_Type_Process_Route
- minio_file.RefType = &refType
- err = services.JdbcClient.JdbcRemove(minio_file, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- route_detial := new(models.ProcessRouteDetail)
- route_detial.RouteId = route.ID
- err = services.JdbcClient.JdbcRemove(route_detial, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- history := new(models.ProcessRoute)
- history.ParentId = route.ID
- history_result, _ := services.JdbcClient.GetJdbcListByObject(history, tx)
- history_list := utils.ConvertInterface[[]models.ProcessRoute](history_result)
- for _, history := range history_list {
- err := services.JdbcClient.JdbcRemoveById(history, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- route_detial := new(models.ProcessRouteDetail)
- route_detial.RouteId = history.ID
- err = services.JdbcClient.JdbcRemove(route_detial, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- }
- tx.Commit()
- return c.JSON(http.StatusOK, route)
- }
- func processRouteUpgrade(c echo.Context) error {
- tx, _ := services.MYSQL_DB.Beginx()
- route := new(models.ProcessRoute)
- if err := c.Bind(route); err != nil {
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
- }
- old_uuid := route.ID
- sess, _ := session.Get("auth_session", c)
- user_id, ok := sess.Values["user_id"].(int64)
- if !ok {
- return c.JSON(http.StatusBadRequest, utils.ErrorResponse("用户请先登录", ""))
- }
- err_msg := processRoute_generateCode(route, tx)
- if err_msg != "" {
- tx.Rollback()
- return c.JSON(http.StatusBadRequest, utils.ErrorResponse(err_msg, ""))
- }
- route.ID = nil
- status := models.Status_Enable
- route.Status = &status
- route.CreateId = &user_id
- parentId := models.Common_Value_Zero_String
- route.ParentId = &parentId
- err := services.JdbcClient.JdbcInsert(route, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- exist_route := new(models.ProcessRoute)
- exist_route.ID = old_uuid
- exist_route.ParentId = route.ID
- status = models.Status_Disable
- exist_route.Status = &status
- exist_route.UpdateId = &user_id
- err = services.JdbcClient.JdbcUpdateById(exist_route, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- child_route := new(models.ProcessRoute)
- child_route.ParentId = route.ID
- child_route.UpdateId = &user_id
- var paramMap = map[string]interface{}{
- "parentId": old_uuid,
- }
- err = services.JdbcClient.JdbcUpdate(child_route, paramMap, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- detail_list := *route.DetailList
- for _, detail := range detail_list {
- detail.RouteId = route.ID
- err := services.JdbcClient.JdbcInsert(&detail, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- }
- if route.FileList == nil {
- tx.Commit()
- return c.JSON(http.StatusOK, route)
- }
- fileList := *route.FileList
- for _, file := range fileList {
- file.RefId = route.ID
- refType := models.File_Ref_Type_Process_Route
- file.RefType = &refType
- err := services.JdbcClient.JdbcInsert(&file, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- }
- tx.Commit()
- return c.JSON(http.StatusOK, route)
- }
- func processRouteRegrade(c echo.Context) error {
- tx, _ := services.MYSQL_DB.Beginx()
- route := new(models.ProcessRoute)
- if err := c.Bind(route); err != nil {
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
- }
- children := new(models.ProcessRoute)
- children.ParentId = route.ID
- result, err := services.JdbcClient.GetJdbcListByObject(children, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", err.Error()))
- }
- children_list := utils.ConvertInterface[[]models.ProcessRoute](result)
- sess, _ := session.Get("auth_session", c)
- user_id, ok := sess.Values["user_id"].(int64)
- if !ok {
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("用户请先登录", ""))
- }
- if len(children_list) > 0 {
- //倒序
- sort.Slice(children_list, func(i, j int) bool {
- return *children_list[i].CreateTime > *children_list[j].CreateTime
- })
- child := &children_list[0]
- parentId := models.Common_Value_Zero_String
- child.ParentId = &parentId
- status := models.Status_Enable
- child.Status = &status
- child.UpdateId = &user_id
- err := services.JdbcClient.JdbcUpdateById(child, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- children = new(models.ProcessRoute)
- children.ParentId = child.ID
- paramMap := map[string]interface{}{
- "parentId": route.ID,
- }
- children.UpdateId = &user_id
- err = services.JdbcClient.JdbcUpdate(children, paramMap, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- err = services.JdbcClient.JdbcRemoveById(route, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- route_detail := new(models.ProcessRouteDetail)
- route_detail.RouteId = route.ID
- err = services.JdbcClient.JdbcRemove(route_detail, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- }
- tx.Commit()
- return c.JSON(http.StatusOK, route)
- }
- func processRoute_generateCode(model *models.ProcessRoute, tx *sqlx.Tx) string {
- sync := new(models.Synchronized)
- sync.Sync.Lock()
- defer sync.Sync.Unlock()
- if model.Code != nil && len(*model.Code) > 0 {
- modelParam := new(models.ProcessRoute)
- modelParam.Code = model.Code
- modelParam.TenantId = model.TenantId
- count, err := services.JdbcClient.GetJdbcCount(modelParam, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- return "SQL执行失败"
- }
- if count > 0 {
- return "编号已存在,请重新填写"
- }
- } else {
- for {
- code, err := services.GetFlowNo(models.Flow_No_Type_Process_Route, *model.TenantId, tx)
- if err != nil {
- return "自动生成编码失败"
- }
- modelParam := new(models.ProcessRoute)
- modelParam.Code = &code
- modelParam.TenantId = model.TenantId
- count, err := services.JdbcClient.GetJdbcCount(modelParam, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- return "SQL执行失败"
- }
- if count == 0 {
- model.Code = &code
- break
- }
- }
- }
- return ""
- }
|