warehouse.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package handlers
  2. import (
  3. "net/http"
  4. "easydo-echo_win7/models"
  5. "easydo-echo_win7/services"
  6. "easydo-echo_win7/utils"
  7. "github.com/jmoiron/sqlx"
  8. // "github.com/labstack/echo-contrib/session"
  9. "easydo-echo_win7/middleware"
  10. "github.com/labstack/echo/v4"
  11. )
  12. func Add_warehouse_to_routes(e *echo.Echo) {
  13. group := e.Group("/warehouse")
  14. group.Use(middleware.AuthMiddleware)
  15. group.POST("/getPage", warehouseGetPage)
  16. group.POST("/getList", warehouseGetList)
  17. group.POST("/save", warehouseSave)
  18. group.POST("/update", warehouseUpdate)
  19. group.POST("/remove", warehouseRemove)
  20. }
  21. func warehouseGetPage(c echo.Context) error {
  22. var paramMap map[string]interface{}
  23. if err := c.Bind(&paramMap); err != nil {
  24. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  25. }
  26. result, err := services.JdbcClient.GetJdbcPage(paramMap, models.Warehouse{})
  27. if err != nil {
  28. utils.PrintSqlErr(err)
  29. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  30. }
  31. list := utils.ConvertInterface[[]models.Warehouse](result.Records)
  32. if len(list) == 0 {
  33. list = []models.Warehouse{}
  34. }
  35. result.Records = list
  36. return c.JSON(http.StatusOK, result)
  37. }
  38. func warehouseGetList(c echo.Context) error {
  39. var paramMap map[string]interface{}
  40. if err := c.Bind(&paramMap); err != nil {
  41. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  42. }
  43. result, err := services.JdbcClient.GetJdbcList(paramMap, models.Warehouse{})
  44. if err != nil {
  45. utils.PrintSqlErr(err)
  46. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  47. }
  48. list := utils.ConvertInterface[[]models.Warehouse](result)
  49. if len(list) == 0 {
  50. return c.JSON(http.StatusOK, []models.Warehouse{})
  51. }
  52. return c.JSON(http.StatusOK, list)
  53. }
  54. func warehouseSave(c echo.Context) error {
  55. tx, _ := services.MYSQL_DB.Beginx()
  56. warehouse := new(models.Warehouse)
  57. if err := c.Bind(warehouse); err != nil {
  58. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  59. }
  60. err_msg := warehouse_generateCode(warehouse, tx)
  61. if err_msg != "" {
  62. tx.Rollback()
  63. return c.JSON(http.StatusBadRequest, utils.ErrorResponse(err_msg, ""))
  64. }
  65. err := services.JdbcClient.JdbcInsert(warehouse, tx)
  66. if err != nil {
  67. tx.Rollback()
  68. utils.PrintSqlErr(err)
  69. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  70. }
  71. tx.Commit()
  72. return c.JSON(http.StatusOK, warehouse)
  73. }
  74. func warehouseUpdate(c echo.Context) error {
  75. warehouse := new(models.Warehouse)
  76. if err := c.Bind(warehouse); err != nil {
  77. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  78. }
  79. err := services.JdbcClient.JdbcUpdateById(warehouse)
  80. if err != nil {
  81. utils.PrintSqlErr(err)
  82. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  83. }
  84. return c.JSON(http.StatusOK, warehouse)
  85. }
  86. func warehouseRemove(c echo.Context) error {
  87. tx, _ := services.MYSQL_DB.Beginx()
  88. warehouse := new(models.Warehouse)
  89. if err := c.Bind(warehouse); err != nil {
  90. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  91. }
  92. err := services.JdbcClient.JdbcRemoveById(warehouse, tx)
  93. if err != nil {
  94. utils.PrintSqlErr(err)
  95. tx.Rollback()
  96. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  97. }
  98. tx.Commit()
  99. return c.JSON(http.StatusOK, warehouse)
  100. }
  101. func warehouse_generateCode(model *models.Warehouse, tx *sqlx.Tx) string {
  102. sync := new(models.Synchronized)
  103. sync.Sync.Lock()
  104. defer sync.Sync.Unlock()
  105. if model.Code != nil && len(*model.Code) > 0 {
  106. modelParam := new(models.Warehouse)
  107. modelParam.Code = model.Code
  108. modelParam.TenantId = model.TenantId
  109. count, err := services.JdbcClient.GetJdbcCount(modelParam, tx)
  110. if err != nil {
  111. utils.PrintSqlErr(err)
  112. return "SQL执行失败"
  113. }
  114. if count > 0 {
  115. return "编号已存在,请重新填写"
  116. }
  117. } else {
  118. for {
  119. code, err := services.GetFlowNo(models.Flow_No_Type_Warehouse, *model.TenantId, tx)
  120. if err != nil {
  121. return "自动生成编码失败"
  122. }
  123. modelParam := new(models.Warehouse)
  124. modelParam.Code = &code
  125. modelParam.TenantId = model.TenantId
  126. count, err := services.JdbcClient.GetJdbcCount(modelParam, tx)
  127. if err != nil {
  128. utils.PrintSqlErr(err)
  129. return "SQL执行失败"
  130. }
  131. if count == 0 {
  132. model.Code = &code
  133. break
  134. }
  135. }
  136. }
  137. return ""
  138. }