73 lines
2.0 KiB
Go
73 lines
2.0 KiB
Go
|
|
package logic
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"fmt"
|
||
|
|
|
||
|
|
"muyu-apiserver/rpc/inventory/internal/svc"
|
||
|
|
"muyu-apiserver/rpc/inventory/pb"
|
||
|
|
|
||
|
|
"github.com/zeromicro/go-zero/core/logx"
|
||
|
|
"google.golang.org/grpc/codes"
|
||
|
|
"google.golang.org/grpc/status"
|
||
|
|
)
|
||
|
|
|
||
|
|
type GetStockCheckLogic struct {
|
||
|
|
ctx context.Context
|
||
|
|
svcCtx *svc.ServiceContext
|
||
|
|
logx.Logger
|
||
|
|
}
|
||
|
|
|
||
|
|
func NewGetStockCheckLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetStockCheckLogic {
|
||
|
|
return &GetStockCheckLogic{
|
||
|
|
ctx: ctx,
|
||
|
|
svcCtx: svcCtx,
|
||
|
|
Logger: logx.WithContext(ctx),
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (l *GetStockCheckLogic) GetStockCheck(in *pb.GetStockCheckReq) (*pb.StockCheckInfo, error) {
|
||
|
|
check, err := l.svcCtx.StockCheckModel.FindOneByCheckId(l.ctx, in.CheckId)
|
||
|
|
if err != nil {
|
||
|
|
return nil, status.Error(codes.NotFound, "stock check not found")
|
||
|
|
}
|
||
|
|
|
||
|
|
details, err := l.svcCtx.CheckDetailModel.FindByCheckId(l.ctx, in.CheckId)
|
||
|
|
if err != nil {
|
||
|
|
return nil, status.Error(codes.Internal, err.Error())
|
||
|
|
}
|
||
|
|
|
||
|
|
pbDetails := make([]*pb.StockCheckDetailInfo, 0, len(details))
|
||
|
|
for _, d := range details {
|
||
|
|
productName := ""
|
||
|
|
product, err := l.svcCtx.ProductModel.FindOneByProductId(l.ctx, d.ProductId)
|
||
|
|
if err == nil {
|
||
|
|
productName = product.ProductName
|
||
|
|
}
|
||
|
|
|
||
|
|
pbDetails = append(pbDetails, &pb.StockCheckDetailInfo{
|
||
|
|
DetailId: d.DetailId,
|
||
|
|
CheckId: d.CheckId,
|
||
|
|
ProductId: d.ProductId,
|
||
|
|
ProductName: productName,
|
||
|
|
SystemQuantity: fmt.Sprintf("%.2f", d.SystemQuantity),
|
||
|
|
ActualQuantity: fmt.Sprintf("%.2f", d.ActualQuantity),
|
||
|
|
DiffQuantity: fmt.Sprintf("%.2f", d.DiffQuantity),
|
||
|
|
DiffAmount: fmt.Sprintf("%.2f", d.DiffAmount),
|
||
|
|
Remark: d.Remark.String,
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
return &pb.StockCheckInfo{
|
||
|
|
CheckId: check.CheckId,
|
||
|
|
CheckNo: check.CheckNo,
|
||
|
|
CheckDate: check.CheckDate.Format("2006-01-02"),
|
||
|
|
Checker: check.Checker,
|
||
|
|
Status: check.Status,
|
||
|
|
Remark: check.Remark.String,
|
||
|
|
CreatedAt: check.CreatedAt.Format("2006-01-02 15:04:05"),
|
||
|
|
UpdatedAt: check.UpdatedAt.Format("2006-01-02 15:04:05"),
|
||
|
|
Details: pbDetails,
|
||
|
|
}, nil
|
||
|
|
}
|