Browse Source

goods: 出库单详情1

Yi 4 months ago
parent
commit
3cf776e6b4
4 changed files with 126 additions and 94 deletions
  1. 0 93
      http/handler/goods/drugs.go
  2. 105 0
      http/handler/goods/outbound.go
  3. 5 1
      http/route/goods_api.go
  4. 16 0
      module/backend/goods.go

+ 0 - 93
http/handler/goods/drugs.go

@@ -3,7 +3,6 @@ package goods
 import (
 	"kpt-pasture/http/middleware"
 	"net/http"
-	"strconv"
 
 	operationPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/operation"
 	"gitee.com/xuyiping_admin/pkg/valid"
@@ -167,95 +166,3 @@ func NeckRingCreateOrUpdate(c *gin.Context) {
 		Data: &operationPb.Success{Success: true},
 	})
 }
-
-func OutboundApply(c *gin.Context) {
-	var req pasturePb.OutboundApplyItem
-	if err := ginutil.BindProto(c, &req); err != nil {
-		apierr.AbortBadRequest(c, http.StatusBadRequest, err)
-		return
-	}
-
-	if err := valid.ValidateStruct(&req,
-		valid.Field(&req.OutType, valid.Required),
-		valid.Field(&req.Goods, valid.Required),
-	); err != nil {
-		apierr.AbortBadRequest(c, http.StatusBadRequest, err)
-		return
-	}
-
-	if err := middleware.BackendOperation(c).OpsService.OutboundApply(c, &req); err != nil {
-		apierr.ClassifiedAbort(c, err)
-		return
-	}
-
-	ginutil.JSONResp(c, &operationPb.CommonOK{
-		Code: http.StatusOK,
-		Msg:  "ok",
-		Data: &operationPb.Success{Success: true},
-	})
-}
-
-func OutboundList(c *gin.Context) {
-	var req pasturePb.SearchOutboundApplyRequest
-	if err := ginutil.BindProto(c, &req); err != nil {
-		apierr.AbortBadRequest(c, http.StatusBadRequest, err)
-		return
-	}
-
-	pagination := &pasturePb.PaginationModel{
-		Page:       int32(c.GetInt(middleware.Page)),
-		PageSize:   int32(c.GetInt(middleware.PageSize)),
-		PageOffset: int32(c.GetInt(middleware.PageOffset)),
-	}
-
-	res, err := middleware.Dependency(c).StoreEventHub.OpsService.OutboundList(c, &req, pagination)
-	if err != nil {
-		apierr.ClassifiedAbort(c, err)
-		return
-	}
-	ginutil.JSONResp(c, res)
-}
-
-func OutboundAudit(c *gin.Context) {
-	var req pasturePb.OutboundApplyAuditRequest
-	if err := ginutil.BindProto(c, &req); err != nil {
-		apierr.AbortBadRequest(c, http.StatusBadRequest, err)
-		return
-	}
-
-	if err := valid.ValidateStruct(&req,
-		valid.Field(&req.Id, valid.Required),
-		valid.Field(&req.AuditStatus, valid.Required),
-	); err != nil {
-		apierr.AbortBadRequest(c, http.StatusBadRequest, err)
-		return
-	}
-
-	if err := middleware.BackendOperation(c).OpsService.OutboundAudit(c, &req); err != nil {
-		apierr.ClassifiedAbort(c, err)
-		return
-	}
-
-	ginutil.JSONResp(c, &operationPb.CommonOK{
-		Code: http.StatusOK,
-		Msg:  "ok",
-		Data: &operationPb.Success{Success: true},
-	})
-}
-
-func OutboundDetail(c *gin.Context) {
-	idStr := c.Query("id")
-	id, _ := strconv.ParseInt(idStr, 10, 64)
-	if err := valid.Validate(id, valid.Required); err != nil {
-		apierr.AbortBadRequest(c, http.StatusBadRequest, err)
-		return
-	}
-
-	res, err := middleware.BackendOperation(c).OpsService.OutboundDetail(c, id)
-	if err != nil {
-		apierr.ClassifiedAbort(c, err)
-		return
-	}
-
-	ginutil.JSONResp(c, res)
-}

+ 105 - 0
http/handler/goods/outbound.go

@@ -1 +1,106 @@
 package goods
+
+import (
+	"kpt-pasture/http/middleware"
+	"net/http"
+	"strconv"
+
+	pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
+	operationPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/operation"
+	"gitee.com/xuyiping_admin/pkg/apierr"
+	"gitee.com/xuyiping_admin/pkg/ginutil"
+	"gitee.com/xuyiping_admin/pkg/valid"
+	"github.com/gin-gonic/gin"
+)
+
+func OutboundApply(c *gin.Context) {
+	var req pasturePb.OutboundApplyItem
+	if err := ginutil.BindProto(c, &req); err != nil {
+		apierr.AbortBadRequest(c, http.StatusBadRequest, err)
+		return
+	}
+
+	if err := valid.ValidateStruct(&req,
+		valid.Field(&req.OutType, valid.Required),
+		valid.Field(&req.Goods, valid.Required),
+	); err != nil {
+		apierr.AbortBadRequest(c, http.StatusBadRequest, err)
+		return
+	}
+
+	if err := middleware.BackendOperation(c).OpsService.OutboundApply(c, &req); err != nil {
+		apierr.ClassifiedAbort(c, err)
+		return
+	}
+
+	ginutil.JSONResp(c, &operationPb.CommonOK{
+		Code: http.StatusOK,
+		Msg:  "ok",
+		Data: &operationPb.Success{Success: true},
+	})
+}
+
+func OutboundList(c *gin.Context) {
+	var req pasturePb.SearchOutboundApplyRequest
+	if err := ginutil.BindProto(c, &req); err != nil {
+		apierr.AbortBadRequest(c, http.StatusBadRequest, err)
+		return
+	}
+
+	pagination := &pasturePb.PaginationModel{
+		Page:       int32(c.GetInt(middleware.Page)),
+		PageSize:   int32(c.GetInt(middleware.PageSize)),
+		PageOffset: int32(c.GetInt(middleware.PageOffset)),
+	}
+
+	res, err := middleware.Dependency(c).StoreEventHub.OpsService.OutboundList(c, &req, pagination)
+	if err != nil {
+		apierr.ClassifiedAbort(c, err)
+		return
+	}
+	ginutil.JSONResp(c, res)
+}
+
+func OutboundAudit(c *gin.Context) {
+	var req pasturePb.OutboundApplyAuditRequest
+	if err := ginutil.BindProto(c, &req); err != nil {
+		apierr.AbortBadRequest(c, http.StatusBadRequest, err)
+		return
+	}
+
+	if err := valid.ValidateStruct(&req,
+		valid.Field(&req.Id, valid.Required),
+		valid.Field(&req.AuditStatus, valid.Required),
+	); err != nil {
+		apierr.AbortBadRequest(c, http.StatusBadRequest, err)
+		return
+	}
+
+	if err := middleware.BackendOperation(c).OpsService.OutboundAudit(c, &req); err != nil {
+		apierr.ClassifiedAbort(c, err)
+		return
+	}
+
+	ginutil.JSONResp(c, &operationPb.CommonOK{
+		Code: http.StatusOK,
+		Msg:  "ok",
+		Data: &operationPb.Success{Success: true},
+	})
+}
+
+func OutboundDetail(c *gin.Context) {
+	idStr := c.Query("id")
+	id, _ := strconv.ParseInt(idStr, 10, 64)
+	if err := valid.Validate(id, valid.Required); err != nil {
+		apierr.AbortBadRequest(c, http.StatusBadRequest, err)
+		return
+	}
+
+	res, err := middleware.BackendOperation(c).OpsService.OutboundDetail(c, id)
+	if err != nil {
+		apierr.ClassifiedAbort(c, err)
+		return
+	}
+
+	ginutil.JSONResp(c, res)
+}

+ 5 - 1
http/route/goods_api.go

@@ -13,16 +13,20 @@ func GoodsManageAPI(opts ...func(engine *gin.Engine)) func(s *gin.Engine) {
 		}
 		// goods API 组  物品管理
 		goodsRoute := authRouteGroup(s, "/api/v1/goods/")
+		// 药品相关
 		goodsRoute.POST("/drugs/list", goods.DrugsList)
 		goodsRoute.POST("/drugs/createOrUpdate", goods.DrugsCreateOrUpdate)
+		// 医疗器械相关
 		goodsRoute.POST("/medical/equipment/list", goods.MedicalEquipmentList)
 		goodsRoute.POST("/medical/equipment/createOrUpdate", goods.MedicalEquipmentCreateOrUpdate)
+		// 脖环相关
 		goodsRoute.POST("/neck/ring/list", goods.NeckRingList)
 		goodsRoute.POST("/neck/ring/createOrUpdate", goods.NeckRingCreateOrUpdate)
+		// 出库相关
 		goodsRoute.POST("/outbound/apply", goods.OutboundApply)
 		goodsRoute.POST("/outbound/list", goods.OutboundList)
 		goodsRoute.POST("/outbound/audit", goods.OutboundAudit)
 		goodsRoute.POST("/outbound/cancel", goods.OutboundAudit)
-		goodsRoute.POST("/outbound/detail", goods.OutboundDetail)
+		goodsRoute.GET("/outbound/detail/:id", goods.OutboundDetail)
 	}
 }

+ 16 - 0
module/backend/goods.go

@@ -301,6 +301,22 @@ func (s *StoreEntry) OutboundList(ctx context.Context, req *pasturePb.SearchOutb
 		pref.Where("applicant_at BETWEEN ? AND ?", startUnix, endUnix)
 	}
 
+	if req.Number != "" {
+		pref.Where("number like ?", fmt.Sprintf("%s%s%s", "%", req.Number, "%"))
+	}
+
+	if req.AuditStatus > 0 {
+		pref.Where("audit_status = ?", req.AuditStatus)
+	}
+
+	if req.ApplicantId > 0 {
+		pref.Where("applicant_id = ?", req.ApplicantId)
+	}
+
+	if req.ExamineId > 0 {
+		pref.Where("examine_id = ?", req.ExamineId)
+	}
+
 	if err := pref.Order("id desc").
 		Count(&count).
 		Limit(int(pagination.PageSize)).