Browse Source

add serialNumber

animeic 2 years ago
parent
commit
381c2fdbf9

+ 15 - 0
boxcost/api/bill-produce.go

@@ -53,6 +53,11 @@ func CreateProduceBill(c *gin.Context, apictx *ApiSession) (interface{}, error)
 		return nil, errors.New("类型为空")
 	}
 
+	bill.SerialNumber, err = incrementer(apictx, bill.Type)
+	if err != nil {
+		return nil, err
+	}
+
 	bill.Status = "created"
 	bill.CreateTime = time.Now()
 	bill.UpdateTime = time.Now()
@@ -114,6 +119,16 @@ func UpdateProduceBill(c *gin.Context, apictx *ApiSession) (interface{}, error)
 	if bill.Id.Hex() == "" {
 		return nil, errors.New("id的为空")
 	}
+
+	// 如果更改类型
+	if len(bill.Type) > 0 {
+		bill.SerialNumber, err = incrementer(apictx, bill.Type)
+		if err != nil {
+			return nil, err
+		}
+
+	}
+
 	bill.UpdateTime = time.Now()
 	return repo.RepoUpdateSetDoc(apictx.CreateRepoCtx(), repo.CollectionBillProduce, bill.Id.Hex(), &bill)
 }

+ 12 - 0
boxcost/api/bill.go

@@ -61,6 +61,11 @@ func CreateBill(c *gin.Context, apictx *ApiSession) (interface{}, error) {
 		return nil, errors.New("类型为空")
 	}
 
+	bill.SerialNumber, err = incrementer(apictx, bill.Type)
+	if err != nil {
+		return nil, err
+	}
+
 	bill.Status = "created"
 	bill.CreateTime = time.Now()
 	bill.UpdateTime = time.Now()
@@ -121,6 +126,13 @@ func UpdateBill(c *gin.Context, apictx *ApiSession) (interface{}, error) {
 	if bill.Id.Hex() == "" {
 		return nil, errors.New("id的为空")
 	}
+	if len(bill.Type) > 0 {
+		bill.SerialNumber, err = incrementer(apictx, bill.Type)
+		if err != nil {
+			return nil, err
+		}
+
+	}
 	bill.UpdateTime = time.Now()
 	return repo.RepoUpdateSetDoc(apictx.CreateRepoCtx(), repo.CollectionBillPurchase, bill.Id.Hex(), &bill)
 }

+ 5 - 2
boxcost/api/test_print.go

@@ -1,7 +1,10 @@
 package api
 
-import "github.com/gin-gonic/gin"
+import (
+	"github.com/gin-gonic/gin"
+)
 
 func Printr(c *gin.Context, apictx *ApiSession) (interface{}, error) {
-	return "aaa", nil
+	return incrementer(apictx, "纸张类")
+
 }

+ 36 - 0
boxcost/api/utils.go

@@ -0,0 +1,36 @@
+package api
+
+import (
+	"box-cost/db/model"
+	"box-cost/db/repo"
+	"fmt"
+
+	"go.mongodb.org/mongo-driver/bson"
+)
+
+func incrementer(ctx *ApiSession, typeName string) (serial string, err error) {
+	// 获取类型
+	cate := &model.Category{}
+	found, err := repo.RepoSeachDoc(ctx.CreateRepoCtx(), &repo.DocSearchOptions{
+		CollectName: "cates",
+		Project:     []string{"letterName"},
+		Query:       repo.Map{"name": typeName},
+		Sort:        bson.M{"_id": -1},
+	}, cate)
+	if !found || err != nil {
+		return "", fmt.Errorf("未找到该分类")
+	}
+	// increment index加1
+	increment := &model.Increment{}
+	repo.RepoSeachDoc(ctx.CreateRepoCtx(), &repo.DocSearchOptions{
+		CollectName: repo.CollectionIncrement,
+		Project:     []string{"index"},
+		Sort:        bson.M{"_id": -1},
+	}, increment)
+	index := increment.Index + 1
+	repo.RepoAddDoc(ctx.CreateRepoCtx(), repo.CollectionIncrement, &model.Increment{Index: index})
+
+	// 拼接为序号
+	return fmt.Sprintf("%s-%05d", cate.LetterName, index), nil
+
+}

+ 1 - 1
boxcost/db/db.go

@@ -35,7 +35,7 @@ func (db *MongoDB) GetOrCreateDatabase(name string) *mongo.Database {
 }
 
 func NewMongoDB(bus *comm.NatsBus) *MongoDB {
-	inst, err := bus.NewMongoDBFromConfig("box-mongo")
+	inst, err := bus.NewMongoDBFromConfigDev("box-mongo")
 	if err != nil {
 		panic(err)
 	}

+ 6 - 0
boxcost/db/model/bill.go

@@ -53,6 +53,9 @@ type PurchaseBill struct {
 
 	//纸张类采购
 	Paper []*PaperBill `bson:"papers,omitempty" json:"papers"`
+
+	// 序号
+	SerialNumber string `bson:"serialNumber,omitempty" json:"serialNumber"`
 }
 
 // 工艺生产数据
@@ -111,4 +114,7 @@ type ProduceBill struct {
 
 	//纸张类采购
 	Produces []*ProduceBillData `bson:"produces,omitempty" json:"produces"`
+
+	// 序号
+	SerialNumber string `bson:"serialNumber,omitempty" json:"serialNumber"`
 }

+ 10 - 0
boxcost/db/model/increment.go

@@ -0,0 +1,10 @@
+package model
+
+import (
+	"go.mongodb.org/mongo-driver/bson/primitive"
+)
+
+type Increment struct {
+	Id    primitive.ObjectID `bson:"_id,omitempty" json:"_id"`
+	Index int32              `bson:"index,omitempty" json:"index"`
+}

+ 4 - 0
boxcost/db/repo/repo.go

@@ -30,6 +30,7 @@ const (
 
 	CollectionSupplierMatprice   = "supplier-mats"
 	CollectionSupplierCraftprice = "supplier-crafts"
+	CollectionIncrement          = "increment"
 )
 
 type Map map[string]interface{}
@@ -189,6 +190,9 @@ func RepoSeachDoc(ctx *RepoSession, param *DocSearchOptions, v interface{}) (boo
 		}
 		opt.SetProjection(prj)
 	}
+	if len(param.Sort) > 0 {
+		opt.Sort = param.Sort
+	}
 	filter := bson.M{}
 	if len(param.Query) > 0 {
 		for k, v := range param.Query {