event_breed.go 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566
  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.EarNumber, 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.EarNumber, 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 MatingBatch(c *gin.Context) {
  133. var req pasturePb.EventMatingBatch
  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.Items, valid.Required, valid.Each(valid.By(func(value interface{}) error {
  140. item := value.(pasturePb.EventMating)
  141. return valid.ValidateStruct(&item,
  142. valid.Field(&item.EarNumber, valid.Required),
  143. valid.Field(&item.OperationId, valid.Required),
  144. valid.Field(&item.FrozenSemenNumber, valid.Required),
  145. valid.Field(&item.MatingAt, valid.Required),
  146. valid.Field(&item.FrozenSemenCount, valid.Required, valid.Min(1)),
  147. )
  148. }))),
  149. ); err != nil {
  150. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  151. return
  152. }
  153. if err := middleware.BackendOperation(c).OpsService.MatingBatch(c, &req); err != nil {
  154. apierr.ClassifiedAbort(c, err)
  155. return
  156. }
  157. ginutil.JSONResp(c, &operationPb.CommonOK{
  158. Code: http.StatusOK,
  159. Msg: "ok",
  160. Data: &operationPb.Success{Success: true},
  161. })
  162. }
  163. func EstrusEventList(c *gin.Context) {
  164. var req pasturePb.SearchEventRequest
  165. if err := ginutil.BindProto(c, &req); err != nil {
  166. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  167. return
  168. }
  169. pagination := &pasturePb.PaginationModel{
  170. Page: int32(c.GetInt(middleware.Page)),
  171. PageSize: int32(c.GetInt(middleware.PageSize)),
  172. PageOffset: int32(c.GetInt(middleware.PageOffset)),
  173. }
  174. res, err := middleware.Dependency(c).StoreEventHub.OpsService.EstrusList(c, &req, pagination)
  175. if err != nil {
  176. apierr.ClassifiedAbort(c, err)
  177. return
  178. }
  179. ginutil.JSONResp(c, res)
  180. }
  181. func EstrusBatchMating(c *gin.Context) {
  182. var req pasturePb.EventEstrusBatch
  183. if err := ginutil.BindProto(c, &req); err != nil {
  184. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  185. return
  186. }
  187. if err := valid.ValidateStruct(&req,
  188. valid.Field(&req.Items, valid.Required, valid.Each(valid.By(func(value interface{}) error {
  189. item := value.(pasturePb.EventEstrusItems)
  190. return valid.ValidateStruct(&item,
  191. valid.Field(&item.EarNumber, valid.Required),
  192. valid.Field(&item.EstrusAt, valid.Required),
  193. valid.Field(&item.IsMating, valid.Required),
  194. valid.Field(&item.OperationId, valid.Required),
  195. )
  196. }))),
  197. ); err != nil {
  198. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  199. return
  200. }
  201. if err := middleware.BackendOperation(c).OpsService.EstrusBatchMating(c, &req); err != nil {
  202. apierr.ClassifiedAbort(c, err)
  203. return
  204. }
  205. ginutil.JSONResp(c, &operationPb.CommonOK{
  206. Code: http.StatusOK,
  207. Msg: "ok",
  208. Data: &operationPb.Success{Success: true},
  209. })
  210. }
  211. func NeckRingNoEstrusBatch(c *gin.Context) {
  212. var req pasturePb.NeckRingNoEstrusBatchRequest
  213. if err := ginutil.BindProto(c, &req); err != nil {
  214. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  215. return
  216. }
  217. if err := valid.ValidateStruct(&req,
  218. valid.Field(&req.EarNumbers, valid.Required, valid.Required),
  219. ); err != nil {
  220. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  221. return
  222. }
  223. if err := middleware.BackendOperation(c).OpsService.NeckRingNoEstrusBatch(c, &req); err != nil {
  224. apierr.ClassifiedAbort(c, err)
  225. return
  226. }
  227. ginutil.JSONResp(c, &operationPb.CommonOK{
  228. Code: http.StatusOK,
  229. Msg: "ok",
  230. Data: &operationPb.Success{Success: true},
  231. })
  232. }
  233. func SameTimeCreate(c *gin.Context) {
  234. var req pasturePb.EventSameTime
  235. if err := ginutil.BindProto(c, &req); err != nil {
  236. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  237. return
  238. }
  239. if err := valid.ValidateStruct(&req,
  240. valid.Field(&req.Id, valid.Required),
  241. valid.Field(&req.DrugsId, valid.Required),
  242. valid.Field(&req.OperationId, valid.Required),
  243. valid.Field(&req.SameTimeAt, valid.Required),
  244. ); err != nil {
  245. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  246. return
  247. }
  248. if err := middleware.BackendOperation(c).OpsService.SameTimeCreate(c, &req); err != nil {
  249. apierr.ClassifiedAbort(c, err)
  250. return
  251. }
  252. ginutil.JSONResp(c, &operationPb.CommonOK{
  253. Code: http.StatusOK,
  254. Msg: "ok",
  255. Data: &operationPb.Success{Success: true},
  256. })
  257. }
  258. func SameTimeBatch(c *gin.Context) {
  259. var req pasturePb.EventSameTimeBatch
  260. if err := ginutil.BindProto(c, &req); err != nil {
  261. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  262. return
  263. }
  264. if err := valid.ValidateStruct(&req,
  265. valid.Field(&req.OperationId, valid.Required),
  266. valid.Field(&req.DrugsId, valid.Required),
  267. valid.Field(&req.SameTimeAt, valid.Required),
  268. valid.Field(&req.CowIds, valid.Required),
  269. ); err != nil {
  270. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  271. return
  272. }
  273. if err := middleware.BackendOperation(c).OpsService.SameTimeBatch(c, &req); err != nil {
  274. apierr.ClassifiedAbort(c, err)
  275. return
  276. }
  277. ginutil.JSONResp(c, &operationPb.CommonOK{
  278. Code: http.StatusOK,
  279. Msg: "ok",
  280. Data: &operationPb.Success{Success: true},
  281. })
  282. }
  283. func SameTimeList(c *gin.Context) {
  284. var req pasturePb.SearchEventRequest
  285. if err := ginutil.BindProto(c, &req); err != nil {
  286. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  287. return
  288. }
  289. pagination := &pasturePb.PaginationModel{
  290. Page: int32(c.GetInt(middleware.Page)),
  291. PageSize: int32(c.GetInt(middleware.PageSize)),
  292. PageOffset: int32(c.GetInt(middleware.PageOffset)),
  293. }
  294. res, err := middleware.Dependency(c).StoreEventHub.OpsService.SameTimeList(c, &req, pagination)
  295. if err != nil {
  296. apierr.ClassifiedAbort(c, err)
  297. return
  298. }
  299. ginutil.JSONResp(c, res)
  300. }
  301. func AbortionCreateBatch(c *gin.Context) {
  302. var req pasturePb.EventAbortionBatch
  303. if err := ginutil.BindProto(c, &req); err != nil {
  304. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  305. return
  306. }
  307. if err := valid.ValidateStruct(&req,
  308. valid.Field(&req.Items, valid.Required, valid.Each(valid.By(func(value interface{}) error {
  309. item := value.(pasturePb.EventAbortionItem)
  310. return valid.ValidateStruct(&item,
  311. valid.Field(&item.EarNumber, valid.Required),
  312. valid.Field(&item.IsAfterbirth, valid.Required),
  313. valid.Field(&item.AbortionReasons, valid.Required),
  314. valid.Field(&item.AbortionAt, valid.Required),
  315. valid.Field(&item.OperationId, valid.Required),
  316. )
  317. }))),
  318. ); err != nil {
  319. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  320. return
  321. }
  322. if err := middleware.BackendOperation(c).OpsService.AbortionCreateBatch(c, &req); err != nil {
  323. apierr.ClassifiedAbort(c, err)
  324. return
  325. }
  326. ginutil.JSONResp(c, &operationPb.CommonOK{
  327. Code: http.StatusOK,
  328. Msg: "ok",
  329. Data: &operationPb.Success{Success: true},
  330. })
  331. }
  332. func AbortionList(c *gin.Context) {
  333. var req pasturePb.SearchEventRequest
  334. if err := ginutil.BindProto(c, &req); err != nil {
  335. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  336. return
  337. }
  338. pagination := &pasturePb.PaginationModel{
  339. Page: int32(c.GetInt(middleware.Page)),
  340. PageSize: int32(c.GetInt(middleware.PageSize)),
  341. PageOffset: int32(c.GetInt(middleware.PageOffset)),
  342. }
  343. res, err := middleware.Dependency(c).StoreEventHub.OpsService.AbortionList(c, &req, pagination)
  344. if err != nil {
  345. apierr.ClassifiedAbort(c, err)
  346. return
  347. }
  348. ginutil.JSONResp(c, res)
  349. }
  350. func WeaningCreateBatch(c *gin.Context) {
  351. var req pasturePb.EventWeaningBatch
  352. if err := ginutil.BindProto(c, &req); err != nil {
  353. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  354. return
  355. }
  356. if err := valid.ValidateStruct(&req,
  357. valid.Field(&req.Items, valid.Required, valid.Each(valid.By(func(value interface{}) error {
  358. item := value.(pasturePb.WeaningItem)
  359. return valid.ValidateStruct(&item,
  360. valid.Field(&item.EarNumber, valid.Required),
  361. valid.Field(&item.Weight, valid.Required),
  362. valid.Field(&item.WeaningAt, valid.Required),
  363. valid.Field(&item.OperationId, valid.Required),
  364. valid.Field(&item.PenId, valid.Required),
  365. )
  366. }))),
  367. ); err != nil {
  368. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  369. return
  370. }
  371. if err := middleware.BackendOperation(c).OpsService.WeaningBatch(c, &req); err != nil {
  372. apierr.ClassifiedAbort(c, err)
  373. return
  374. }
  375. ginutil.JSONResp(c, &operationPb.CommonOK{
  376. Code: http.StatusOK,
  377. Msg: "ok",
  378. Data: &operationPb.Success{Success: true},
  379. })
  380. }
  381. func DryMilkBatch(c *gin.Context) {
  382. var req pasturePb.EventMilkBatch
  383. if err := ginutil.BindProto(c, &req); err != nil {
  384. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  385. return
  386. }
  387. if err := valid.ValidateStruct(&req,
  388. valid.Field(&req.Items, valid.Required, valid.Each(valid.By(func(value interface{}) error {
  389. item := value.(pasturePb.EventMilkItem)
  390. return valid.ValidateStruct(&item,
  391. valid.Field(&item.CowId, valid.Required),
  392. valid.Field(&item.DryMilkAt, valid.Required),
  393. valid.Field(&item.PenId, valid.Required),
  394. valid.Field(&item.OperationId, valid.Required),
  395. )
  396. }))),
  397. ); err != nil {
  398. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  399. return
  400. }
  401. if err := middleware.Dependency(c).StoreEventHub.OpsService.DryMilkBatch(c, &req); err != nil {
  402. apierr.ClassifiedAbort(c, err)
  403. return
  404. }
  405. ginutil.JSONResp(c, &operationPb.CommonOK{
  406. Code: http.StatusOK,
  407. Msg: "ok",
  408. Data: &operationPb.Success{Success: true},
  409. })
  410. }
  411. func DryMilkList(c *gin.Context) {
  412. var req pasturePb.SearchEventRequest
  413. if err := ginutil.BindProto(c, &req); err != nil {
  414. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  415. return
  416. }
  417. pagination := &pasturePb.PaginationModel{
  418. Page: int32(c.GetInt(middleware.Page)),
  419. PageSize: int32(c.GetInt(middleware.PageSize)),
  420. PageOffset: int32(c.GetInt(middleware.PageOffset)),
  421. }
  422. res, err := middleware.Dependency(c).StoreEventHub.OpsService.DryMilkList(c, &req, pagination)
  423. if err != nil {
  424. apierr.ClassifiedAbort(c, err)
  425. return
  426. }
  427. ginutil.JSONResp(c, res)
  428. }
  429. func ForbiddenMatingBatch(c *gin.Context) {
  430. var req pasturePb.EventForbiddenMatingBatch
  431. if err := ginutil.BindProto(c, &req); err != nil {
  432. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  433. return
  434. }
  435. if err := valid.ValidateStruct(&req,
  436. valid.Field(&req.Items, valid.Required, valid.Each(valid.By(func(value interface{}) error {
  437. item := value.(pasturePb.ForbiddenMatingItem)
  438. return valid.ValidateStruct(&item,
  439. valid.Field(&item.EarNumber, valid.Required),
  440. valid.Field(&item.ForbiddenMatingAt, valid.Required),
  441. valid.Field(&item.ForbiddenMatingReasonsKind, valid.Required),
  442. valid.Field(&item.OperationId, valid.Required),
  443. )
  444. }))),
  445. ); err != nil {
  446. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  447. return
  448. }
  449. if err := middleware.Dependency(c).StoreEventHub.OpsService.ForbiddenMatingBatch(c, &req); err != nil {
  450. apierr.ClassifiedAbort(c, err)
  451. return
  452. }
  453. ginutil.JSONResp(c, &operationPb.CommonOK{
  454. Code: http.StatusOK,
  455. Msg: "ok",
  456. Data: &operationPb.Success{Success: true},
  457. })
  458. }
  459. func ForbiddenMatingList(c *gin.Context) {
  460. var req pasturePb.SearchEventRequest
  461. if err := ginutil.BindProto(c, &req); err != nil {
  462. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  463. return
  464. }
  465. pagination := &pasturePb.PaginationModel{
  466. Page: int32(c.GetInt(middleware.Page)),
  467. PageSize: int32(c.GetInt(middleware.PageSize)),
  468. PageOffset: int32(c.GetInt(middleware.PageOffset)),
  469. }
  470. res, err := middleware.Dependency(c).StoreEventHub.OpsService.ForbiddenMatingList(c, &req, pagination)
  471. if err != nil {
  472. apierr.ClassifiedAbort(c, err)
  473. return
  474. }
  475. ginutil.JSONResp(c, res)
  476. }
  477. func UnForbiddenMating(c *gin.Context) {
  478. var req pasturePb.EventUnForbiddenMatingRequest
  479. if err := ginutil.BindProto(c, &req); err != nil {
  480. apierr.AbortBadRequest(c, http.StatusBadRequest, err)
  481. return
  482. }
  483. err := middleware.Dependency(c).StoreEventHub.OpsService.UnForbiddenMating(c, &req)
  484. if err != nil {
  485. apierr.ClassifiedAbort(c, err)
  486. return
  487. }
  488. ginutil.JSONResp(c, &operationPb.CommonOK{
  489. Code: http.StatusOK,
  490. Msg: "ok",
  491. Data: &operationPb.Success{Success: true},
  492. })
  493. }