event_breed.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403
  1. package event
  2. import (
  3. "kpt-pasture/http/middleware"
  4. "net/http"
  5. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  6. operationPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/operation"
  7. "gitee.com/xuyiping_admin/pkg/apierr"
  8. "gitee.com/xuyiping_admin/pkg/ginutil"
  9. "gitee.com/xuyiping_admin/pkg/valid"
  10. "github.com/gin-gonic/gin"
  11. )
  12. func CalvingEventList(c *gin.Context) {
  13. var req pasturePb.SearchEventRequest
  14. if err := ginutil.BindProto(c, &req); err != nil {
  15. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  16. return
  17. }
  18. pagination := &pasturePb.PaginationModel{
  19. Page: int32(c.GetInt(middleware.Page)),
  20. PageSize: int32(c.GetInt(middleware.PageSize)),
  21. PageOffset: int32(c.GetInt(middleware.PageOffset)),
  22. }
  23. res, err := middleware.Dependency(c).StoreEventHub.OpsService.CalvingList(c, &req, pagination)
  24. if err != nil {
  25. apierr.ClassifiedAbort(c, err)
  26. return
  27. }
  28. ginutil.JSONResp(c, res)
  29. }
  30. func CalvingEventCreate(c *gin.Context) {
  31. var req pasturePb.EventCalving
  32. if err := ginutil.BindProto(c, &req); err != nil {
  33. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  34. return
  35. }
  36. if err := valid.ValidateStruct(&req,
  37. valid.Field(&req.CowId, valid.Required),
  38. valid.Field(&req.CalvingAt, valid.Required),
  39. valid.Field(&req.ChildNumber, valid.Required),
  40. valid.Field(&req.CalvingLevel, valid.Required),
  41. valid.Field(&req.CalfItemList, valid.Required, valid.Each(valid.By(func(value interface{}) error {
  42. s := value.(pasturePb.CalfItem)
  43. return valid.ValidateStruct(&s,
  44. valid.Field(&s.Sex, valid.Required),
  45. valid.Field(&s.Weight, valid.Required),
  46. valid.Field(&s.IsLive, valid.Required),
  47. valid.Field(&s.IsAdoption, valid.Required),
  48. )
  49. }))),
  50. valid.Field(&req.OperationId, valid.Required),
  51. ); err != nil {
  52. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  53. return
  54. }
  55. if err := middleware.BackendOperation(c).OpsService.CalvingCreate(c, &req); err != nil {
  56. apierr.ClassifiedAbort(c, err)
  57. return
  58. }
  59. ginutil.JSONResp(c, &operationPb.CommonOK{
  60. Code: http.StatusOK,
  61. Msg: "ok",
  62. Data: &operationPb.Success{Success: true},
  63. })
  64. }
  65. func PregnantCheckEventList(c *gin.Context) {
  66. var req pasturePb.SearchEventRequest
  67. if err := ginutil.BindProto(c, &req); err != nil {
  68. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  69. return
  70. }
  71. pagination := &pasturePb.PaginationModel{
  72. Page: int32(c.GetInt(middleware.Page)),
  73. PageSize: int32(c.GetInt(middleware.PageSize)),
  74. PageOffset: int32(c.GetInt(middleware.PageOffset)),
  75. }
  76. res, err := middleware.Dependency(c).StoreEventHub.OpsService.PregnantCheckList(c, &req, pagination)
  77. if err != nil {
  78. apierr.ClassifiedAbort(c, err)
  79. return
  80. }
  81. ginutil.JSONResp(c, res)
  82. }
  83. func PregnantCheckEventCreateBatch(c *gin.Context) {
  84. var req pasturePb.EventPregnantCheckBatch
  85. if err := ginutil.BindProto(c, &req); err != nil {
  86. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  87. return
  88. }
  89. if err := valid.ValidateStruct(&req,
  90. valid.Field(&req.Items, valid.Required, valid.Each(valid.By(func(value interface{}) error {
  91. item := value.(pasturePb.EventPregnantCheckRequest)
  92. return valid.ValidateStruct(&item,
  93. valid.Field(&item.CowId, valid.Required),
  94. valid.Field(&item.PregnantCheckAt, valid.Required),
  95. valid.Field(&item.PregnantCheckResult, valid.Required),
  96. valid.Field(&item.PregnantCheckMethod, valid.Required),
  97. valid.Field(&item.OperationId, valid.Required),
  98. )
  99. }))),
  100. ); err != nil {
  101. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  102. return
  103. }
  104. if err := middleware.BackendOperation(c).OpsService.PregnantCheckCreateBatch(c, &req); err != nil {
  105. apierr.ClassifiedAbort(c, err)
  106. return
  107. }
  108. ginutil.JSONResp(c, &operationPb.CommonOK{
  109. Code: http.StatusOK,
  110. Msg: "ok",
  111. Data: &operationPb.Success{Success: true},
  112. })
  113. }
  114. func MatingEventList(c *gin.Context) {
  115. var req pasturePb.SearchEventRequest
  116. if err := ginutil.BindProto(c, &req); err != nil {
  117. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  118. return
  119. }
  120. pagination := &pasturePb.PaginationModel{
  121. Page: int32(c.GetInt(middleware.Page)),
  122. PageSize: int32(c.GetInt(middleware.PageSize)),
  123. PageOffset: int32(c.GetInt(middleware.PageOffset)),
  124. }
  125. res, err := middleware.Dependency(c).StoreEventHub.OpsService.MatingList(c, &req, pagination)
  126. if err != nil {
  127. apierr.ClassifiedAbort(c, err)
  128. return
  129. }
  130. ginutil.JSONResp(c, res)
  131. }
  132. func MatingCreate(c *gin.Context) {
  133. var req pasturePb.EventMating
  134. if err := ginutil.BindProto(c, &req); err != nil {
  135. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  136. return
  137. }
  138. if err := valid.ValidateStruct(&req,
  139. valid.Field(&req.CowIds, valid.Required),
  140. valid.Field(&req.OperationId, valid.Required),
  141. valid.Field(&req.FrozenSemenNumber, valid.Required),
  142. valid.Field(&req.MatingAt, valid.Required),
  143. valid.Field(&req.FrozenSemenCount, valid.Required, valid.Min(1)),
  144. ); err != nil {
  145. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  146. return
  147. }
  148. if err := middleware.BackendOperation(c).OpsService.MatingCreate(c, &req); err != nil {
  149. apierr.ClassifiedAbort(c, err)
  150. return
  151. }
  152. ginutil.JSONResp(c, &operationPb.CommonOK{
  153. Code: http.StatusOK,
  154. Msg: "ok",
  155. Data: &operationPb.Success{Success: true},
  156. })
  157. }
  158. func EstrusEventList(c *gin.Context) {
  159. var req pasturePb.EstrusItemsRequest
  160. if err := ginutil.BindProto(c, &req); err != nil {
  161. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  162. return
  163. }
  164. pagination := &pasturePb.PaginationModel{
  165. Page: int32(c.GetInt(middleware.Page)),
  166. PageSize: int32(c.GetInt(middleware.PageSize)),
  167. PageOffset: int32(c.GetInt(middleware.PageOffset)),
  168. }
  169. res, err := middleware.Dependency(c).StoreEventHub.OpsService.EstrusList(c, &req, pagination)
  170. if err != nil {
  171. apierr.ClassifiedAbort(c, err)
  172. return
  173. }
  174. ginutil.JSONResp(c, res)
  175. }
  176. func EstrusBatchMating(c *gin.Context) {
  177. var req pasturePb.EventNaturalEstrusBatch
  178. if err := ginutil.BindProto(c, &req); err != nil {
  179. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  180. return
  181. }
  182. if err := valid.ValidateStruct(&req,
  183. valid.Field(&req.Items, valid.Required, valid.Each(valid.By(func(value interface{}) error {
  184. item := value.(pasturePb.EventNaturalEstrusItems)
  185. return valid.ValidateStruct(&item,
  186. valid.Field(&item.CowId, valid.Required),
  187. valid.Field(&item.EstrusAt, valid.Required),
  188. valid.Field(&item.IsMating, valid.Required),
  189. valid.Field(&item.OperationId, valid.Required),
  190. )
  191. }))),
  192. ); err != nil {
  193. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  194. return
  195. }
  196. if err := middleware.BackendOperation(c).OpsService.EstrusBatchMating(c, &req); err != nil {
  197. apierr.ClassifiedAbort(c, err)
  198. return
  199. }
  200. ginutil.JSONResp(c, &operationPb.CommonOK{
  201. Code: http.StatusOK,
  202. Msg: "ok",
  203. Data: &operationPb.Success{Success: true},
  204. })
  205. }
  206. func SameTimeCreate(c *gin.Context) {
  207. var req pasturePb.EventSameTime
  208. if err := ginutil.BindProto(c, &req); err != nil {
  209. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  210. return
  211. }
  212. if err := valid.ValidateStruct(&req,
  213. valid.Field(&req.Id, valid.Required),
  214. valid.Field(&req.DrugsId, valid.Required),
  215. valid.Field(&req.OperationId, valid.Required),
  216. valid.Field(&req.SameTimeAt, valid.Required),
  217. ); err != nil {
  218. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  219. return
  220. }
  221. if err := middleware.BackendOperation(c).OpsService.SameTimeCreate(c, &req); err != nil {
  222. apierr.ClassifiedAbort(c, err)
  223. return
  224. }
  225. ginutil.JSONResp(c, &operationPb.CommonOK{
  226. Code: http.StatusOK,
  227. Msg: "ok",
  228. Data: &operationPb.Success{Success: true},
  229. })
  230. }
  231. func SameTimeBatch(c *gin.Context) {
  232. var req pasturePb.EventSameTimeBatch
  233. if err := ginutil.BindProto(c, &req); err != nil {
  234. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  235. return
  236. }
  237. if err := valid.ValidateStruct(&req,
  238. valid.Field(&req.OperationId, valid.Required),
  239. valid.Field(&req.DrugsId, valid.Required),
  240. valid.Field(&req.SameTimeAt, valid.Required),
  241. valid.Field(&req.CowIds, valid.Required),
  242. ); err != nil {
  243. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  244. return
  245. }
  246. if err := middleware.BackendOperation(c).OpsService.SameTimeBatch(c, &req); err != nil {
  247. apierr.ClassifiedAbort(c, err)
  248. return
  249. }
  250. ginutil.JSONResp(c, &operationPb.CommonOK{
  251. Code: http.StatusOK,
  252. Msg: "ok",
  253. Data: &operationPb.Success{Success: true},
  254. })
  255. }
  256. func SameTimeList(c *gin.Context) {
  257. var req pasturePb.SearchEventRequest
  258. if err := ginutil.BindProto(c, &req); err != nil {
  259. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  260. return
  261. }
  262. pagination := &pasturePb.PaginationModel{
  263. Page: int32(c.GetInt(middleware.Page)),
  264. PageSize: int32(c.GetInt(middleware.PageSize)),
  265. PageOffset: int32(c.GetInt(middleware.PageOffset)),
  266. }
  267. res, err := middleware.Dependency(c).StoreEventHub.OpsService.SameTimeList(c, &req, pagination)
  268. if err != nil {
  269. apierr.ClassifiedAbort(c, err)
  270. return
  271. }
  272. ginutil.JSONResp(c, res)
  273. }
  274. func AbortionCreateBatch(c *gin.Context) {
  275. var req pasturePb.EventAbortionBatch
  276. if err := ginutil.BindProto(c, &req); err != nil {
  277. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  278. return
  279. }
  280. if err := valid.ValidateStruct(&req,
  281. valid.Field(&req.Items, valid.Required, valid.Each(valid.By(func(value interface{}) error {
  282. item := value.(pasturePb.EventAbortionItem)
  283. return valid.ValidateStruct(&item,
  284. valid.Field(&item.CowId, valid.Required),
  285. valid.Field(&item.IsAfterbirth, valid.Required),
  286. valid.Field(&item.AbortionReasons, valid.Required),
  287. valid.Field(&item.AbortionAt, valid.Required),
  288. valid.Field(&item.OperationId, valid.Required),
  289. )
  290. }))),
  291. ); err != nil {
  292. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  293. return
  294. }
  295. if err := middleware.BackendOperation(c).OpsService.AbortionCreateBatch(c, &req); err != nil {
  296. apierr.ClassifiedAbort(c, err)
  297. return
  298. }
  299. ginutil.JSONResp(c, &operationPb.CommonOK{
  300. Code: http.StatusOK,
  301. Msg: "ok",
  302. Data: &operationPb.Success{Success: true},
  303. })
  304. }
  305. func AbortionList(c *gin.Context) {
  306. var req pasturePb.SearchEventRequest
  307. if err := ginutil.BindProto(c, &req); err != nil {
  308. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  309. return
  310. }
  311. pagination := &pasturePb.PaginationModel{
  312. Page: int32(c.GetInt(middleware.Page)),
  313. PageSize: int32(c.GetInt(middleware.PageSize)),
  314. PageOffset: int32(c.GetInt(middleware.PageOffset)),
  315. }
  316. res, err := middleware.Dependency(c).StoreEventHub.OpsService.AbortionList(c, &req, pagination)
  317. if err != nil {
  318. apierr.ClassifiedAbort(c, err)
  319. return
  320. }
  321. ginutil.JSONResp(c, res)
  322. }
  323. func WeaningCreateBatch(c *gin.Context) {
  324. var req pasturePb.EventWeaningBatch
  325. if err := ginutil.BindProto(c, &req); err != nil {
  326. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  327. return
  328. }
  329. if err := valid.ValidateStruct(&req,
  330. valid.Field(&req.WeaningAt, valid.Required),
  331. valid.Field(&req.OperationId, valid.Required),
  332. valid.Field(&req.PenId, valid.Required),
  333. valid.Field(&req.Items, valid.Required, valid.Each(valid.By(func(value interface{}) error {
  334. item := value.(pasturePb.WeaningItem)
  335. return valid.ValidateStruct(&item,
  336. valid.Field(&item.CowId, valid.Required),
  337. valid.Field(&item.Weight, valid.Required),
  338. )
  339. }))),
  340. ); err != nil {
  341. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  342. return
  343. }
  344. if err := middleware.BackendOperation(c).OpsService.WeaningBatch(c, &req); err != nil {
  345. apierr.ClassifiedAbort(c, err)
  346. return
  347. }
  348. ginutil.JSONResp(c, &operationPb.CommonOK{
  349. Code: http.StatusOK,
  350. Msg: "ok",
  351. Data: &operationPb.Success{Success: true},
  352. })
  353. }