animeic пре 2 година
родитељ
комит
398db8c8e0
5 измењених фајлова са 81 додато и 118 уклоњено
  1. BIN
      boxcost/.~生产成本表.xlsx
  2. 68 48
      boxcost/api/plan-cost-excel.go
  3. 12 69
      boxcost/api/plan.go
  4. 1 1
      boxcost/db/db.go
  5. BIN
      boxcost/生产成本表.xlsx

BIN
boxcost/.~生产成本表.xlsx


+ 68 - 48
boxcost/api/plan-cost-excel.go

@@ -25,7 +25,7 @@ type PlanCostExcel struct {
 func (b *PlanCostExcel) drawTitle() error {
 	tileIndex := b.Offset + 1
 	startCell := fmt.Sprintf("A%d", tileIndex)
-	err := b.Excel.MergeCell(b.SheetName, startCell, fmt.Sprintf("O%d", tileIndex))
+	err := b.Excel.MergeCell(b.SheetName, startCell, fmt.Sprintf("L%d", tileIndex))
 	if err != nil {
 		return err
 	}
@@ -133,16 +133,15 @@ func (b *PlanCostExcel) drawTableTitle() error {
 		return nil
 	}
 
-	drawCol("A", "产品名称")
-	drawCol("B", "产品配料名称")
-	drawCol2("C", "D", "材料/工序", "材料", "工序")
-	drawCol("E", "供应商名称")
-	drawCol3("F", "G", "H", "规格", "厚度(纸克)", "长", "宽")
-	drawCol("I", "单位")
-	drawCol2("J", "K", "数量", "下单数量", "成品数量")
-	drawCol2("L", "M", "单价(预算)", "单价1", "单价2")
-	drawCol("N", "预算金额")
-	drawCol("O", "汇总金额")
+	drawCol("A", "产品配料名称")
+	drawCol2("B", "C", "材料/工序", "材料", "工序")
+	drawCol("D", "供应商名称")
+	drawCol3("E", "F", "G", "规格", "厚度(纸克)", "长", "宽")
+	drawCol("H", "单位")
+	drawCol("I", "下单数量")
+	drawCol("J", "单价(预算)")
+	drawCol("K", "预算金额")
+	drawCol("L", "汇总金额")
 
 	return nil
 }
@@ -151,13 +150,14 @@ func (b *PlanCostExcel) drawTableContent() error {
 	row := b.Offset + 4
 
 	var DrawRow = func(rowIndex int, values ...string) {
-		charas := []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "G", "K", "L", "M", "N", "O"}
+		charas := []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"}
 		for i, c := range charas {
 			v := ""
 			if i < len(values) {
 				v = values[i]
 			}
 			b.Excel.SetCellValue(b.SheetName, fmt.Sprintf("%s%d", c, rowIndex), v)
+
 			val2Cel := fmt.Sprintf("%s%d", c, rowIndex)
 			b.Excel.SetCellStyle(b.SheetName, val2Cel, val2Cel, b.AlignCenterStyle)
 
@@ -166,7 +166,7 @@ func (b *PlanCostExcel) drawTableContent() error {
 	}
 	comps := b.Content.Pack.Components
 	if len(comps) > 0 {
-		row1 := row
+		// row1 := row
 		for _, comp := range comps {
 			if len(comp.Mats) > 0 {
 				startRow := row
@@ -177,17 +177,18 @@ func (b *PlanCostExcel) drawTableContent() error {
 						supplierName = mat.Supplier.SupplierInfo.Name
 
 					}
-					heigth := fmt.Sprintf("%.2f", mat.MatInfo.Heigth)
-					width := fmt.Sprintf("%.2f", mat.MatInfo.Width)
-					orderCount := fmt.Sprintf("%.2f", mat.Supplier.OrderCount)
-					price := fmt.Sprintf("%.2f", mat.MatInfo.Price)
-					calcName := ""
-					if mat.Supplier.Calc != nil {
-						calcName = mat.Supplier.Calc.Name
-					}
+					matHeigth := fmt.Sprintf("%d", mat.BatchSizeHeight)
+					b.FormatToEmpty(&matHeigth)
+					matWidth := fmt.Sprintf("%d", mat.BatchSizeWidth)
+					b.FormatToEmpty(&matWidth)
+					orderCount := fmt.Sprintf("%d", int(mat.Supplier.OrderCount))
+					b.FormatToEmpty(&orderCount)
 					orderPrice := fmt.Sprintf("%.2f", mat.Supplier.OrderPrice)
+					b.FormatToEmpty(&orderPrice)
+
 					orderRealPrice := fmt.Sprintf("%.2f", mat.Supplier.OrderRealPrice)
-					DrawRow(row, b.Content.Name, "", mat.MatInfo.Name, "", supplierName, mat.MatInfo.Norm, heigth, width, mat.MatInfo.Unit, orderCount, "-", calcName, price, orderPrice, orderRealPrice)
+					b.FormatToEmpty(&orderRealPrice)
+					DrawRow(row, "", mat.MatInfo.Name, "", supplierName, mat.MatInfo.Norm, matHeigth, matWidth, mat.MatInfo.Unit, orderCount, orderPrice, orderRealPrice, "")
 
 					row++
 					if len(mat.Crafts) > 0 {
@@ -198,43 +199,57 @@ func (b *PlanCostExcel) drawTableContent() error {
 								craftSupplierName = craft.Supplier.SupplierInfo.Name
 
 							}
-							carftOrderCount := fmt.Sprintf("%.2f", craft.Supplier.OrderCount)
-							carftCalcName := ""
-							if craft.Supplier.Calc != nil {
-								carftCalcName = craft.Supplier.Calc.Name
-							}
-							carftPrice := fmt.Sprintf("%.2f", craft.CraftInfo.Price)
+							carftOrderCount := fmt.Sprintf("%d", int(craft.Supplier.OrderCount))
+							b.FormatToEmpty(&carftOrderCount)
+							carftHeigth := fmt.Sprintf("%d", craft.BatchSizeHeight)
+							b.FormatToEmpty(&carftHeigth)
+							carftWidth := fmt.Sprintf("%d", craft.BatchSizeWidth)
+							b.FormatToEmpty(&carftWidth)
 							carftOrderPrice := fmt.Sprintf("%.2f", craft.Supplier.OrderPrice)
+							b.FormatToEmpty(&carftOrderPrice)
 							carftOrderRealPrice := fmt.Sprintf("%.2f", craft.Supplier.OrderRealPrice)
-							DrawRow(row, b.Content.Name, "", "", craft.CraftInfo.Name, craftSupplierName, craft.CraftInfo.Norm, "", "", craft.CraftInfo.Unit, carftOrderCount, "-", carftCalcName, carftPrice, carftOrderPrice, carftOrderRealPrice)
+							b.FormatToEmpty(&carftOrderRealPrice)
+							DrawRow(row, "", "", craft.CraftInfo.Name, craftSupplierName, craft.CraftInfo.Norm, carftHeigth, carftWidth, craft.CraftInfo.Unit, carftOrderCount, carftOrderPrice, carftOrderRealPrice, "")
 							row++
 
 						}
 					}
 				}
 				endRow := row - 1
-				startCell := fmt.Sprintf("%s%d", "B", startRow)
-				// left2Cell := fmt.Sprintf("%s%d", prefix2, row)
-				endCell := fmt.Sprintf("%s%d", "B", endRow)
-				b.Excel.MergeCell(b.SheetName, startCell, endCell)
-				err := b.Excel.SetCellStyle(b.SheetName, startCell, endCell, b.AlignCenterStyle)
+				// 组件名字
+				startACell := fmt.Sprintf("%s%d", "A", startRow)
+				endACell := fmt.Sprintf("%s%d", "A", endRow)
+				b.Excel.MergeCell(b.SheetName, startACell, endACell)
+				err := b.Excel.SetCellStyle(b.SheetName, startACell, endACell, b.AlignCenterStyle)
+				if err != nil {
+					return err
+				}
+				b.Excel.SetCellValue(b.SheetName, startACell, comp.Name)
+				// 组件汇总金额
+				startLCell := fmt.Sprintf("%s%d", "L", startRow)
+				endLCell := fmt.Sprintf("%s%d", "L", endRow)
+				b.Excel.MergeCell(b.SheetName, startLCell, endLCell)
+				err = b.Excel.SetCellStyle(b.SheetName, startLCell, endLCell, b.AlignCenterStyle)
 				if err != nil {
 					return err
 				}
-				b.Excel.SetCellValue(b.SheetName, startCell, comp.Name)
+				compTotalPrice := fmt.Sprintf("%.2f", comp.TotalPrice)
+				b.Excel.SetCellValue(b.SheetName, startLCell, compTotalPrice)
 
 			}
 		}
+		// 生产汇总金额
+		startACell := fmt.Sprintf("%s%d", "A", row)
+		endKCell := fmt.Sprintf("%s%d", "K", row)
+		endLCell := fmt.Sprintf("%s%d", "L", row)
+		b.Excel.MergeCell(b.SheetName, startACell, endKCell)
+		b.Excel.SetCellStyle(b.SheetName, startACell, endKCell, b.AlignCenterStyle)
+		b.Excel.SetCellValue(b.SheetName, startACell, "生产计划汇总金额")
+
+		b.Excel.SetCellStyle(b.SheetName, endLCell, endLCell, b.AlignCenterStyle)
+		planTotalPrice := fmt.Sprintf("%.2f", b.Content.TotalPrice)
+		b.Excel.SetCellValue(b.SheetName, endLCell, planTotalPrice)
 
-		endRow := row - 1
-		startCell := fmt.Sprintf("%s%d", "A", row1)
-		endCell := fmt.Sprintf("%s%d", "A", endRow)
-		b.Excel.MergeCell(b.SheetName, startCell, endCell)
-		err := b.Excel.SetCellStyle(b.SheetName, startCell, endCell, b.AlignCenterStyle)
-		if err != nil {
-			return err
-		}
-		b.Excel.SetCellValue(b.SheetName, startCell, b.Content.Name)
 	}
 
 	return nil
@@ -269,10 +284,15 @@ func NewPlanCostExcel(f *excelize.File) *PlanCostExcel {
 		AlignCenterStyle: styleLeft,
 	}
 
-	f.SetColWidth(b.SheetName, "A", "A", 17)
-	f.SetColWidth(b.SheetName, "B", "B", 13)
-	f.SetColWidth(b.SheetName, "C", "E", 12)
-	f.SetColWidth(b.SheetName, "F", "O", 9.5)
+	f.SetColWidth(b.SheetName, "A", "D", 12)
+	f.SetColWidth(b.SheetName, "E", "L", 10)
 	f.SetPageMargins(b.SheetName, excelize.PageMarginTop(0), excelize.PageMarginLeft(0), excelize.PageMarginRight(0))
 	return b
 }
+
+func (b *PlanCostExcel) FormatToEmpty(str *string) {
+	if *str == "0" || *str == "0.00" {
+		*str = ""
+	}
+
+}

+ 12 - 69
boxcost/api/plan.go

@@ -62,85 +62,28 @@ func DownLoadPlanCost(c *gin.Context, apictx *ApiSession) (interface{}, error) {
 	f.SetDefaultFont("宋体")
 	planCostExcel := NewPlanCostExcel(f)
 	planCostExcel.Content = &plan
-	planCostExcel.Title = fmt.Sprintf("生产成本表(%s)", "梦华月色8600盒")
-	// 					//设置对应的数据
-	// produceExcel.Offset = offset
+	planCostExcel.Title = fmt.Sprintf("生产成本表(%s)%d盒", plan.Name, plan.Total)
 	planCostExcel.Draws()
 
-	// info := model.Setting{}
-	// repo.RepoSeachDoc(apictx.CreateRepoCtx(), &repo.DocSearchOptions{
-	// 	CollectName: "infos",
-	// }, &info)
-
-	// offset := 0
-	// for _, mat := range curComp.Mats {
-	// 	// 采购单
-	// 	_purchaseId := mat.BillId
-	// 	purchaseId, err := primitive.ObjectIDFromHex(_purchaseId)
-	// 	if err == nil {
-	// 		purchase := model.PurchaseBill{}
-	// 		found, _ := repo.RepoSeachDoc(apictx.CreateRepoCtx(), &repo.DocSearchOptions{
-	// 			CollectName: repo.CollectionBillPurchase,
-	// 			Query:       repo.Map{"_id": purchaseId},
-	// 		}, &purchase)
-	// 		if found {
-	// 			purchaseExcel := NewPurchaseBill(f)
-	// 			purchaseExcel.Content = &purchase
-	// 			purchaseExcel.Title = fmt.Sprintf("%s原材料采购单", info.CompanyName)
-	// 			//设置对应的数据
-	// 			purchaseExcel.Offset = offset
-	// 			purchaseExcel.Draws()
-
-	// 			offset += 15
-	// 		}
-	// 	}
-	// 	if len(mat.Crafts) > 0 {
-	// 		for _, carft := range mat.Crafts {
-	// 			// 加工单
-	// 			_produceId := carft.BillId
-	// 			produceId, err := primitive.ObjectIDFromHex(_produceId)
-	// 			if err == nil {
-	// 				produce := model.ProduceBill{}
-	// 				found, _ := repo.RepoSeachDoc(apictx.CreateRepoCtx(), &repo.DocSearchOptions{
-	// 					CollectName: repo.CollectionBillProduce,
-	// 					Query:       repo.Map{"_id": produceId},
-	// 				}, &produce)
-	// 				if found {
-	// 					produceExcel := NewProduceBill(f)
-	// 					produceExcel.Content = &produce
-	// 					produceExcel.Title = fmt.Sprintf("%s加工单", info.CompanyName)
-	// 					//设置对应的数据
-	// 					produceExcel.Offset = offset
-	// 					produceExcel.Draws()
-
-	// 					offset += 15
-	// 				}
-
-	// 			}
-	// 		}
-	// 	}
-	// }
-
 	// 另存为
 	// _ = os.MkdirAll("excel", os.ModePerm)
 	// filename1 := time.Now().Format("20060102150405") + ".xlsx"
-	filename1 := "生产成本表.xlsx"
-	err = f.SaveAs(filename1)
-	if err != nil {
-		return nil, err
-	}
-
-	// c.Header("Content-Type", "application/octet-stream")
-	// c.Header("Content-Disposition", "attachment; filename="+"planCost.xlsx")
-	// c.Header("Content-Transfer-Encoding", "binary")
-
-	// err = f.Write(c.Writer)
+	// filename1 := "生产成本表.xlsx"
+	// err = f.SaveAs(filename1)
 	// if err != nil {
 	// 	return nil, err
 	// }
-	return plan, nil
 
+	c.Header("Content-Type", "application/octet-stream")
+	c.Header("Content-Disposition", "attachment; filename="+"planCost.xlsx")
+	c.Header("Content-Transfer-Encoding", "binary")
+
+	err = f.Write(c.Writer)
+	if err != nil {
+		return nil, err
+	}
 	return nil, nil
+
 }
 func DownLoadPlan(c *gin.Context, apictx *ApiSession) (interface{}, error) {
 	_planId := c.Query("id")

+ 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.NewMongoDBFromConfigDev("box-mongo")
+	inst, err := bus.NewMongoDBFromConfig("box-mongo")
 	if err != nil {
 		panic(err)
 	}

BIN
boxcost/生产成本表.xlsx