api/v1/product.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
api/v1/salesDetails.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
main.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
model/grpc_init/crm_aps_init.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
model/response/salesDetails.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
proto/crm_srm.proto | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
proto/crm_srm/crm_srm.pb.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
proto/crm_srm/crm_srm_grpc.pb.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
router/salesDetails.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
api/v1/product.go
@@ -156,6 +156,31 @@ ctx.Ok() return } first, err := model.NewSalesDetailsSearch().SetPreload(true).SetNumber(number).First() if err != nil { ctx.FailWithMsg(ecode.DBErr, "查询销售明细出错") return } productInfo := make([]response.SalesDetailsProductInfo, 0) amountMap := make(map[string]int64) overMap := make(map[string]int64) for _, p := range first.Products { amountMap[p.Number] = 0 overMap[p.Number] = 0 var sdpi response.SalesDetailsProductInfo sdpi.ProductId = p.Number sdpi.ProductName = p.Name sdpi.Specs = p.Specs sdpi.Unit = p.Unit sdpi.Amount = p.Amount sdpi.Cost = p.Cost sdpi.Price = p.Price sdpi.Total = p.Total sdpi.Profit = p.Profit sdpi.Margin = p.Margin productInfo = append(productInfo, sdpi) } client := product.NewProductServiceClient(grpc_init.CrmApsGrpcServiceConn) info, err := client.GetProductOrder(ctx.GetCtx(), &product.GetProductOrderRequest{SalesDetailsNumber: number}) if err != nil { @@ -164,6 +189,7 @@ return } var result response.Info //制造信息 var list []response.WorkOrderInfo for _, orderInfo := range info.List { var wo response.WorkOrderInfo @@ -179,10 +205,20 @@ wo.Unit = orderInfo.Unit wo.Amount = orderInfo.Amount wo.FinishAmount = orderInfo.FinishAmount amountMap[orderInfo.ProductId] = amountMap[orderInfo.ProductId] + orderInfo.Amount overMap[orderInfo.ProductId] = overMap[orderInfo.ProductId] + orderInfo.FinishAmount list = append(list, wo) } for i := 0; i < len(productInfo); i++ { productInfo[i].MakeAmount = amountMap[productInfo[i].ProductId] amountMap[productInfo[i].ProductId] = 0 productInfo[i].MakeFinishAmount = overMap[productInfo[i].ProductId] productInfo[i].FinishAmount = productInfo[i].FinishAmount + overMap[productInfo[i].ProductId] overMap[productInfo[i].ProductId] = 0 } result.MakeInfo = list //采购信息 var purchaseInfo []response.Purchase for _, pl := range info.PurchaseList { var p response.Purchase @@ -197,10 +233,20 @@ p.Unit = pl.Unit p.Amount = pl.Amount p.FinishAmount = pl.FinishAmount amountMap[pl.ProductId] = amountMap[pl.ProductId] + pl.Amount overMap[pl.ProductId] = overMap[pl.ProductId] + pl.FinishAmount purchaseInfo = append(purchaseInfo, p) } for i := 0; i < len(productInfo); i++ { productInfo[i].PurchaseAmount = amountMap[productInfo[i].ProductId] amountMap[productInfo[i].ProductId] = 0 productInfo[i].PurchaseFinishAmount = overMap[productInfo[i].ProductId] productInfo[i].FinishAmount = productInfo[i].FinishAmount + overMap[productInfo[i].ProductId] overMap[productInfo[i].ProductId] = 0 } result.PurchaseInfo = purchaseInfo //委外信息 var outsourcingList []response.OutsourcingInfo for _, outsourcingInfo := range info.OutsourcingList { var oi response.OutsourcingInfo @@ -215,8 +261,18 @@ oi.Unit = outsourcingInfo.Unit oi.Amount = outsourcingInfo.Amount oi.FinishAmount = outsourcingInfo.FinishAmount amountMap[outsourcingInfo.ProductId] = amountMap[outsourcingInfo.ProductId] + outsourcingInfo.Amount overMap[outsourcingInfo.ProductId] = overMap[outsourcingInfo.ProductId] + outsourcingInfo.FinishAmount outsourcingList = append(outsourcingList, oi) } for i := 0; i < len(productInfo); i++ { productInfo[i].OutsourcingAmount = amountMap[productInfo[i].ProductId] amountMap[productInfo[i].ProductId] = 0 productInfo[i].OutsourcingFinishAmount = overMap[productInfo[i].ProductId] productInfo[i].FinishAmount = productInfo[i].FinishAmount + overMap[productInfo[i].ProductId] overMap[productInfo[i].ProductId] = 0 } result.OutsourcingInfo = outsourcingList result.ProductInfo = productInfo ctx.OkWithDetailed(result) } api/v1/salesDetails.go
@@ -11,7 +11,6 @@ "aps_crm/pkg/logx" "aps_crm/pkg/structx" "aps_crm/proto/crm_aps" "aps_crm/proto/crm_srm" "aps_crm/proto/product_inventory" "aps_crm/utils" "github.com/gin-gonic/gin" @@ -385,113 +384,4 @@ return } ctx.Ok() } // GetSalesDetailsProductInfo // // @Tags SalesDetails // @Summary 获取销售明细产品信息 // @Produce application/json // @Param number path string true "明细编码" // @Success 200 {object} response.ListResponse // // @Router /api/salesDetails/getSalesDetailsProductInfo/{number} [get] func (s *SalesDetailsApi) GetSalesDetailsProductInfo(c *gin.Context) { ctx, ok := contextx.NewContext(c, nil) if !ok { return } number := c.Param("number") first, err := model.NewSalesDetailsSearch().SetPreload(true).SetNumber(number).First() if err != nil { ctx.FailWithMsg(ecode.DBErr, "查询销售明细出错") return } resp := make([]response.SalesDetailsProductInfo, 0) amountMap := make(map[string]int64) overMap := make(map[string]int64) for _, product := range first.Products { amountMap[product.Number] = 0 overMap[product.Number] = 0 var sdpi response.SalesDetailsProductInfo sdpi.ProductId = product.Number sdpi.ProductName = product.Name sdpi.Specs = product.Specs sdpi.Unit = product.Unit sdpi.Amount = product.Amount sdpi.Cost = product.Cost sdpi.Price = product.Price sdpi.Total = product.Total sdpi.Profit = product.Profit sdpi.Margin = product.Margin resp = append(resp, sdpi) } srmClient := crm_srm.NewCrmAndSrmServiceClient(grpc_init.CrmSrmGrpcServiceConn) info, err := srmClient.CrmGetPurchaseInfo(c, &crm_srm.CrmGetPurchaseInfoRequest{SalesDetailsNumber: number}) if err != nil { logx.Errorf("grpc CrmGetPurchaseInfo err: %v", err.Error()) ctx.FailWithMsg(ecode.UnknownErr, "内部错误") return } //采购数量 for _, purchaseInfo := range info.Info { amount := amountMap[purchaseInfo.ProductId] amount += purchaseInfo.Amount amountMap[purchaseInfo.ProductId] = amount over := overMap[purchaseInfo.ProductId] over += purchaseInfo.FinishAmount overMap[purchaseInfo.ProductId] = over } for i := 0; i < len(resp); i++ { resp[i].PurchaseAmount = amountMap[resp[i].ProductId] amountMap[resp[i].ProductId] = 0 resp[i].PurchaseFinishAmount = overMap[resp[i].ProductId] resp[i].FinishAmount = resp[i].FinishAmount + overMap[resp[i].ProductId] overMap[resp[i].ProductId] = 0 } apsClient := crm_aps.NewCrmAndApsGrpcServiceClient(grpc_init.CrmApsGrpcServiceConn) productInfo, err := apsClient.CrmGetMakeAndOutsourcingProductInfo(c, &crm_aps.CrmGetMakeAndOutsourcingProductInfoRequest{SalesDetailsNumber: number}) if err != nil { logx.Errorf("grpc CrmGetMakeAndOutsourcingProductInfo err: %v", err.Error()) ctx.FailWithMsg(ecode.UnknownErr, "内部错误") return } //制造数量 for _, makeInfo := range productInfo.Info { if makeInfo.Type == 2 { amount := amountMap[makeInfo.ProductId] amount += makeInfo.Amount amountMap[makeInfo.ProductId] = amount over := overMap[makeInfo.ProductId] over += makeInfo.FinishAmount overMap[makeInfo.ProductId] = over } } for i := 0; i < len(resp); i++ { resp[i].MakeAmount = amountMap[resp[i].ProductId] amountMap[resp[i].ProductId] = 0 resp[i].MakeFinishAmount = overMap[resp[i].ProductId] resp[i].FinishAmount = resp[i].FinishAmount + overMap[resp[i].ProductId] overMap[resp[i].ProductId] = 0 } //委外数量 for _, outsourcingInfo := range productInfo.Info { if outsourcingInfo.Type == 3 { amount := amountMap[outsourcingInfo.ProductId] amount += outsourcingInfo.Amount amountMap[outsourcingInfo.ProductId] = amount over := overMap[outsourcingInfo.ProductId] over += outsourcingInfo.FinishAmount overMap[outsourcingInfo.ProductId] = over } } for i := 0; i < len(resp); i++ { resp[i].OutsourcingAmount = amountMap[resp[i].ProductId] amountMap[resp[i].ProductId] = 0 resp[i].OutsourcingFinishAmount = overMap[resp[i].ProductId] resp[i].FinishAmount = resp[i].FinishAmount + overMap[resp[i].ProductId] overMap[resp[i].ProductId] = 0 } ctx.OkWithDetailed(resp) } main.go
@@ -54,7 +54,6 @@ go middleware.InitUserConn() go grpc_init.InitProductInventoryServiceConn() go grpc_init.InitCrmApsGrpcServiceConn() go grpc_init.InitCrmSrmGrpcServiceConn() //启动grpc服务 go func() { ln, err := net.Listen("tcp", ":"+conf.Conf.System.GrpcPort) @@ -89,7 +88,6 @@ grpc_init.CloseProductInventoryServiceConn() middleware.CloseUserConn() grpc_init.CloseCrmApsGrpcServiceConn() grpc_init.CloseCrmSrmGrpcServiceConn() logx.Infof("aps-crm exited...") os.Exit(0) model/grpc_init/crm_aps_init.go
@@ -10,7 +10,6 @@ var ( ProductInventoryServiceConn *grpc.ClientConn CrmApsGrpcServiceConn *grpc.ClientConn CrmSrmGrpcServiceConn *grpc.ClientConn ) func InitCrmApsGrpcServiceConn() { @@ -40,20 +39,5 @@ func CloseProductInventoryServiceConn() { if ProductInventoryServiceConn != nil { ProductInventoryServiceConn.Close() } } func InitCrmSrmGrpcServiceConn() { var err error CrmSrmGrpcServiceConn, err = grpc.Dial(conf.Conf.GrpcServiceAddr.SRM, grpc.WithTransportCredentials(insecure.NewCredentials())) if err != nil { logx.Errorf("grpc dial product service error: %v", err.Error()) return } } func CloseCrmSrmGrpcServiceConn() { if CrmSrmGrpcServiceConn != nil { CrmSrmGrpcServiceConn.Close() } } model/response/salesDetails.go
@@ -3,9 +3,10 @@ import "github.com/shopspring/decimal" type Info struct { MakeInfo []WorkOrderInfo `json:"makeInfo"` PurchaseInfo []Purchase `json:"purchaseInfo"` OutsourcingInfo []OutsourcingInfo `json:"outsourcingInfo"` MakeInfo []WorkOrderInfo `json:"makeInfo"` PurchaseInfo []Purchase `json:"purchaseInfo"` OutsourcingInfo []OutsourcingInfo `json:"outsourcingInfo"` ProductInfo []SalesDetailsProductInfo `json:"productInfo"` } type WorkOrderInfo struct { proto/crm_srm.proto
File was deleted proto/crm_srm/crm_srm.pb.go
File was deleted proto/crm_srm/crm_srm_grpc.pb.go
File was deleted router/salesDetails.go
@@ -19,8 +19,7 @@ salesDetailsRouter.POST("list", salesDetailsApi.List) // 获取销售明细单列表 salesDetailsRouter.GET("getProductInventoryInfo/:number", salesDetailsApi.GetProductInventoryInfo) // 获取产品库存信息 //salesDetailsRouter.POST("createOperation", salesDetailsApi.CreateOperation) // 创建产品出库信息 salesDetailsRouter.GET("getApsProjectList", salesDetailsApi.GetApsProjectList) // 获取aps项目列表 salesDetailsRouter.POST("sendSalesDetailsToOtherSystem", salesDetailsApi.SendSalesDetailsToOtherSystem) // 推送销售明细信息到其他系统 // 创建产品出库信息 salesDetailsRouter.GET("getSalesDetailsProductInfo/:number", salesDetailsApi.GetSalesDetailsProductInfo) // 获取销售明细产品信息 // 创建产品出库信息 salesDetailsRouter.GET("getApsProjectList", salesDetailsApi.GetApsProjectList) // 获取aps项目列表 salesDetailsRouter.POST("sendSalesDetailsToOtherSystem", salesDetailsApi.SendSalesDetailsToOtherSystem) // 推送销售明细信息到其他系统 // 创建产品出库信息 } }