sale_plan.go 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. package handlers
  2. import (
  3. "fmt"
  4. "net/http"
  5. "easydo-echo_win7/models"
  6. "easydo-echo_win7/services"
  7. "easydo-echo_win7/utils"
  8. "easydo-echo_win7/middleware"
  9. "github.com/jmoiron/sqlx"
  10. "github.com/labstack/echo-contrib/session"
  11. "github.com/labstack/echo/v4"
  12. )
  13. func Add_sale_plan_to_routes(e *echo.Echo) {
  14. group := e.Group("/salePlan")
  15. group.Use(middleware.AuthMiddleware)
  16. group.POST("/getPage", salePlanGetPage)
  17. group.POST("/getList", salePlanGetList)
  18. group.POST("/save", salePlanSave)
  19. group.POST("/update", salePlanUpdate)
  20. group.POST("/remove", salePlanRemove)
  21. }
  22. func salePlanGetPage(c echo.Context) error {
  23. var paramMap map[string]interface{}
  24. if err := c.Bind(&paramMap); err != nil {
  25. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  26. }
  27. result, err := services.JdbcClient.GetJdbcPage(paramMap, models.SalePlan{})
  28. if err != nil {
  29. utils.PrintSqlErr(err)
  30. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  31. }
  32. list := utils.ConvertInterface[[]models.SalePlan](result.Records)
  33. if len(list) == 0 {
  34. list = []models.SalePlan{}
  35. }
  36. for i := range list {
  37. model := list[i]
  38. sqlStr := fmt.Sprintf("SELECT sum(actual_price) as actual_price FROM sale_order where order_date > '%s' and order_date < '%s' and status = '%s'",
  39. *model.BeginDate, *model.EndDate, models.Sale_Order_Status_Complete)
  40. row := services.MYSQL_DB.QueryRowx(sqlStr)
  41. sale_order := new(models.SaleOrder)
  42. err = services.JdbcClient.ScanRowToModel(row, sale_order)
  43. if err != nil {
  44. utils.PrintSqlErr(err)
  45. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  46. }
  47. if sale_order.ActualPrice == nil {
  48. totalActualPrice := models.Common_Value_Zere_Float
  49. model.TotalActualPrice = &totalActualPrice
  50. } else {
  51. model.TotalActualPrice = sale_order.ActualPrice
  52. }
  53. list[i] = model
  54. }
  55. result.Records = list
  56. return c.JSON(http.StatusOK, result)
  57. }
  58. func salePlanGetList(c echo.Context) error {
  59. var paramMap map[string]interface{}
  60. if err := c.Bind(&paramMap); err != nil {
  61. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  62. }
  63. result, err := services.JdbcClient.GetJdbcList(paramMap, models.SalePlan{})
  64. if err != nil {
  65. utils.PrintSqlErr(err)
  66. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  67. }
  68. list := utils.ConvertInterface[[]models.SalePlan](result)
  69. if len(list) == 0 {
  70. return c.JSON(http.StatusOK, []models.SalePlan{})
  71. }
  72. for i := range list {
  73. model := list[i]
  74. sqlStr := fmt.Sprintf("SELECT sum(actual_price) as actual_price FROM sale_order where order_date > '%s' and order_date < '%s' and status = '%s'",
  75. *model.BeginDate, *model.EndDate, models.Sale_Order_Status_Complete)
  76. row := services.MYSQL_DB.QueryRowx(sqlStr)
  77. sale_order := new(models.SaleOrder)
  78. err = services.JdbcClient.ScanRowToModel(row, sale_order)
  79. if err != nil {
  80. utils.PrintSqlErr(err)
  81. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  82. }
  83. if sale_order.ActualPrice == nil {
  84. totalActualPrice := models.Common_Value_Zere_Float
  85. model.TotalActualPrice = &totalActualPrice
  86. } else {
  87. model.TotalActualPrice = sale_order.ActualPrice
  88. }
  89. list[i] = model
  90. }
  91. return c.JSON(http.StatusOK, list)
  92. }
  93. func salePlanSave(c echo.Context) error {
  94. tx, _ := services.MYSQL_DB.Beginx()
  95. plan := new(models.SalePlan)
  96. if err := c.Bind(plan); err != nil {
  97. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  98. }
  99. essit_plan := new(models.SalePlan)
  100. essit_plan.BeginDate = plan.BeginDate
  101. essit_plan.EndDate = plan.EndDate
  102. essit_plan.Type = plan.Type
  103. count, err := services.JdbcClient.GetJdbcCount(essit_plan, tx)
  104. if err != nil {
  105. utils.PrintSqlErr(err)
  106. tx.Rollback()
  107. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  108. }
  109. if count > 0 {
  110. return c.JSON(http.StatusBadRequest, utils.ErrorResponse("该计划已存在,请勿重复添加", ""))
  111. }
  112. sess, _ := session.Get("auth_session", c)
  113. err_msg := salePlan_generateCode(plan, tx)
  114. if err_msg != "" {
  115. tx.Rollback()
  116. return c.JSON(http.StatusBadRequest, utils.ErrorResponse(err_msg, ""))
  117. }
  118. user_id, ok := sess.Values["user_id"].(int64)
  119. if !ok {
  120. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("用户请先登录", ""))
  121. }
  122. plan.CreateId = &user_id
  123. err = services.JdbcClient.JdbcInsert(plan, tx)
  124. if err != nil {
  125. utils.PrintSqlErr(err)
  126. tx.Rollback()
  127. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  128. }
  129. tx.Commit()
  130. return c.JSON(http.StatusOK, plan)
  131. }
  132. func salePlanUpdate(c echo.Context) error {
  133. sale_plan := new(models.SalePlan)
  134. if err := c.Bind(sale_plan); err != nil {
  135. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  136. }
  137. sess, _ := session.Get("auth_session", c)
  138. user_id, ok := sess.Values["user_id"].(int64)
  139. if !ok {
  140. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("用户请先登录", ""))
  141. }
  142. sale_plan.UpdateId = &user_id
  143. err := services.JdbcClient.JdbcUpdateById(sale_plan)
  144. if err != nil {
  145. utils.PrintSqlErr(err)
  146. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  147. }
  148. return c.JSON(http.StatusOK, sale_plan)
  149. }
  150. func salePlanRemove(c echo.Context) error {
  151. customer := new(models.SalePlan)
  152. if err := c.Bind(customer); err != nil {
  153. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  154. }
  155. err := services.JdbcClient.JdbcRemoveById(customer)
  156. if err != nil {
  157. utils.PrintSqlErr(err)
  158. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  159. }
  160. return c.JSON(http.StatusOK, customer)
  161. }
  162. func salePlan_generateCode(model *models.SalePlan, tx *sqlx.Tx) string {
  163. sync := new(models.Synchronized)
  164. sync.Sync.Lock()
  165. defer sync.Sync.Unlock()
  166. if model.Code != nil && len(*model.Code) > 0 {
  167. modelParam := new(models.SalePlan)
  168. modelParam.Code = model.Code
  169. modelParam.TenantId = model.TenantId
  170. count, err := services.JdbcClient.GetJdbcCount(modelParam, tx)
  171. if err != nil {
  172. utils.PrintSqlErr(err)
  173. return "SQL执行失败"
  174. }
  175. if count > 0 {
  176. return "编号已存在,请重新填写"
  177. }
  178. } else {
  179. for {
  180. code, err := services.GetFlowNo(models.Flow_No_Type_Sale_Plan, *model.TenantId, tx)
  181. if err != nil {
  182. return "自动生成编码失败"
  183. }
  184. modelParam := new(models.SalePlan)
  185. modelParam.Code = &code
  186. modelParam.TenantId = model.TenantId
  187. count, err := services.JdbcClient.GetJdbcCount(modelParam, tx)
  188. if err != nil {
  189. utils.PrintSqlErr(err)
  190. return "SQL执行失败"
  191. }
  192. if count == 0 {
  193. model.Code = &code
  194. break
  195. }
  196. }
  197. }
  198. return ""
  199. }