| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- package handlers
- import (
- "net/http"
- "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_stage_to_routes(e *echo.Echo) {
- group := e.Group("/processStage")
- group.Use(middleware.AuthMiddleware)
- group.POST("/getPage", processStageGetPage)
- group.POST("/getList", processStageGetList)
- group.POST("/save", processStageSave)
- group.POST("/update", processStageUpdate)
- group.POST("/remove", processStageRemove)
- }
- func processStageGetPage(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.ProcessStage{})
- if err != nil {
- utils.PrintSqlErr(err)
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", err.Error()))
- }
- list := utils.ConvertInterface[[]models.ProcessStage](result.Records)
- if len(list) == 0 {
- list = []models.ProcessStage{}
- }
- for i := range list {
- model := list[i]
- minioList, err := services.JdbcClient.GetMinioFile(model)
- if err != nil {
- utils.PrintSearchFileErr(err)
- }
- model.FileList = &minioList
- list[i] = model
- }
- result.Records = list
- return c.JSON(http.StatusOK, result)
- }
- func processStageGetList(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.ProcessStage{})
- if err != nil {
- utils.PrintSqlErr(err)
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", err.Error()))
- }
- list := utils.ConvertInterface[[]models.ProcessStage](result)
- if len(list) == 0 {
- return c.JSON(http.StatusOK, []string{})
- }
- return c.JSON(http.StatusOK, list)
- }
- func processStageSave(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.StatusBadRequest, utils.ErrorResponse("用户请先登录", ""))
- }
- stage := new(models.ProcessStage)
- if err := c.Bind(stage); err != nil {
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
- }
- err_msg := processStage_generateCode(stage, tx)
- if err_msg != "" {
- tx.Rollback()
- return c.JSON(http.StatusBadRequest, utils.ErrorResponse(err_msg, ""))
- }
- status := models.Status_Enable
- stage.Status = &status
- stage.CreateId = &user_id
- err := services.JdbcClient.JdbcInsert(stage, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- if stage.FileList == nil {
- tx.Commit()
- return c.JSON(http.StatusOK, stage)
- }
- fileList := *stage.FileList
- for _, file := range fileList {
- file.RefId = stage.ID
- refType := models.File_Ref_Type_Process_Stage
- 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, stage)
- }
- func processStageUpdate(c echo.Context) error {
- tx, _ := services.MYSQL_DB.Beginx()
- stage := new(models.ProcessStage)
- if err := c.Bind(stage); 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("用户请先登录", ""))
- }
- stage.UpdateId = &user_id
- err := services.JdbcClient.JdbcUpdateById(stage, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- if stage.FileList == nil {
- tx.Commit()
- return c.JSON(http.StatusOK, stage)
- }
- fileList := *stage.FileList
- for _, file := range fileList {
- file.RefId = stage.ID
- refType := models.File_Ref_Type_Process_Stage
- 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, stage)
- }
- func processStageRemove(c echo.Context) error {
- tx, _ := services.MYSQL_DB.Beginx()
- stage := new(models.ProcessStage)
- if err := c.Bind(stage); err != nil {
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
- }
- route_detail := new(models.ProcessRouteDetail)
- route_detail.StageId = stage.ID
- count, err := services.JdbcClient.GetJdbcCount(route_detail, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- if count > 0 {
- tx.Rollback()
- return c.JSON(http.StatusBadRequest, utils.ErrorResponse("当前工序已被绑定到工艺路线,请勿删除", ""))
- }
- err = services.JdbcClient.JdbcRemoveById(stage, tx)
- if err != nil {
- utils.PrintSqlErr(err)
- tx.Rollback()
- return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
- }
- minio_file := new(models.MinioFile)
- minio_file.RefId = stage.ID
- refType := models.File_Ref_Type_Process_Stage
- 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("系统错误", ""))
- }
- tx.Commit()
- return c.JSON(http.StatusOK, stage)
- }
- func processStage_generateCode(model *models.ProcessStage, 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.ProcessStage)
- 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_Stage, *model.TenantId, tx)
- if err != nil {
- return "自动生成编码失败"
- }
- modelParam := new(models.ProcessStage)
- 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 ""
- }
|