animeic 2 years ago
parent
commit
206037fab8

+ 4 - 3
boxcost/api/bill-produce-excel.go

@@ -208,9 +208,10 @@ func (b *ProduceBillExcel) drawTableContent() error {
 
 			deliveryTime := produce.DeliveryTime.Local().Format("2006-01-02")
 			DrawRow(row, produce.Name, produce.Norm, produce.Paper, produce.PaperSize, produce.PrintSize, fmt.Sprintf("%d", produce.OrderCount), confirmCount, priceStr, orderRealPrice, realPrice, deliveryTime, produce.Remark)
+			endRow = b.Row
 			row++
 			b.Row++
-			endRow = b.Row
+
 		}
 
 		// 多个工序 合并预算价格、实际价格
@@ -272,9 +273,9 @@ func (b *ProduceBillExcel) drawTableSignature() error {
 	})
 
 	// 制单人
-	billUserCell := fmt.Sprintf("A%d", row+3)
+	billUserCell := fmt.Sprintf("A%d", row+1)
 	b.Excel.SetCellValue(b.SheetName, billUserCell, "制单人:")
-	billUservCell := fmt.Sprintf("B%d", row+3)
+	billUservCell := fmt.Sprintf("B%d", row+1)
 	b.Excel.SetCellValue(b.SheetName, billUservCell, b.Content.UserName)
 
 	fontCell := fmt.Sprintf("H%d", row)

+ 2 - 1
boxcost/api/bill-produce.go

@@ -18,7 +18,7 @@ import (
 func BillProduce(r *GinRouter) {
 
 	// 创建单据
-	r.POST("/bill/produce/create", CreateProduceBill)
+	r.POSTJWT("/bill/produce/create", CreateProduceBill)
 
 	// 获取单据详情
 	r.GET("/bill/produce/detail/:id", GetProduceBill)
@@ -192,6 +192,7 @@ func UpdateProduceBill(c *gin.Context, apictx *ApiSession) (interface{}, error)
 	var bill model.ProduceBill
 	err := c.ShouldBindJSON(&bill)
 	if err != nil {
+		fmt.Println(err)
 		return nil, errors.New("参数错误")
 	}
 	if bill.Id.Hex() == "" {

+ 4 - 4
boxcost/api/bill-purchase-excel.go

@@ -173,7 +173,7 @@ func (b *PurchaseBillExcel) drawTableTitle() error {
 	drawCol("A", "采购项目")
 	drawCol("B", "规格(克)")
 
-	drawCol("E", "数量")
+	drawCol("E", "下单数量")
 	drawCol("F", "完成数量")
 
 	drawCol2("C", "D", "尺寸(mm)", "长", "宽")
@@ -247,7 +247,7 @@ func (b *PurchaseBillExcel) drawTableContent() error {
 				b.FormatToEmpty(&realAmount)
 			}
 
-			DrawRow(row, paper.Name, paper.Norm, paper.Height, paper.Width, fmt.Sprintf("%d", paper.Count), confirmCount, price, price2, budgetAmount, realAmount, deliveryTime, paper.Remark)
+			DrawRow(row, paper.Name, paper.Norm, paper.Height, paper.Width, fmt.Sprintf("%d", paper.OrderCount), confirmCount, price, price2, budgetAmount, realAmount, deliveryTime, paper.Remark)
 			row++
 			b.Row++
 		}
@@ -302,9 +302,9 @@ func (b *PurchaseBillExcel) drawTableSignature() error {
 	})
 
 	// 制单人
-	billUserCell := fmt.Sprintf("A%d", row+3)
+	billUserCell := fmt.Sprintf("A%d", row+1)
 	b.Excel.SetCellValue(b.SheetName, billUserCell, "制单人:")
-	billUservCell := fmt.Sprintf("B%d", row+3)
+	billUservCell := fmt.Sprintf("B%d", row+1)
 	b.Excel.SetCellValue(b.SheetName, billUservCell, b.Content.UserName)
 
 	fontCell := fmt.Sprintf("H%d", row)

+ 2 - 1
boxcost/api/bill.go

@@ -18,7 +18,7 @@ import (
 func Bill(r *GinRouter) {
 
 	// 创建单据
-	r.POST("/bill/purchase/create", CreateBill)
+	r.POSTJWT("/bill/purchase/create", CreateBill)
 
 	// 获取单据详情
 	r.GET("/bill/purchase/detail/:id", GetBill)
@@ -292,6 +292,7 @@ func UpdateBill(c *gin.Context, apictx *ApiSession) (interface{}, error) {
 	var bill model.PurchaseBill
 	err := c.ShouldBindJSON(&bill)
 	if err != nil {
+		fmt.Println(err)
 		return nil, errors.New("参数错误")
 	}
 	if bill.Id.Hex() == "" {

+ 107 - 98
boxcost/api/plan-cost-excel.go

@@ -194,7 +194,7 @@ func (b *PlanCostExcel) drawSupplierContent() error {
 							b.FormatToEmpty(&orderPrice)
 							// 预算金额
 							orderRealPrice := fmt.Sprintf("%.2f", mat.Supplier.OrderRealPrice)
-							perRealPrice += mat.Supplier.OrderRealPrice
+							perOrderRealPrice += mat.Supplier.OrderRealPrice
 							b.FormatToEmpty(&orderRealPrice)
 							// 实际金额
 							perRealPrice += mat.RealPrice
@@ -245,9 +245,8 @@ func (b *PlanCostExcel) drawSupplierContent() error {
 									// 实际金额 在外层合并单元格
 									realAmount := ""
 									b.drawRow(row, "", "", craft.CraftInfo.Name, supplierName, craft.CraftInfo.Norm, carftHeigth, carftWidth, craft.CraftInfo.Unit, orderCount, confirmCount, price, budgetAmount, realAmount)
-									row++
 									mergeEndRow = row
-
+									row++
 								}
 
 							}
@@ -285,60 +284,56 @@ func (b *PlanCostExcel) drawSupplierContent() error {
 			totalRealPrice += perRealPrice
 		}
 
-		// 工序数据
-		if b.Content.Process != nil {
-			// 生产汇总金额
-			startACell := fmt.Sprintf("%s%d", "A", row)
-			endMCell := fmt.Sprintf("%s%d", "K", row)
-			b.Excel.MergeCell(b.SheetName, startACell, endMCell)
-			b.Excel.SetCellStyle(b.SheetName, startACell, endMCell, b.AlignCenterStyle)
-			b.Excel.SetCellValue(b.SheetName, startACell, "额外工序")
-			row++
-			// 工序 外箱 手工费 表头
-			var drawCol = func(startCell, endCell string, value string) error {
-				left1Cell := fmt.Sprintf("%s%d", startCell, row)
-				left2Cell := fmt.Sprintf("%s%d", endCell, row+1)
-
-				err := b.Excel.MergeCell(b.SheetName, left1Cell, left2Cell)
-				if err != nil {
-					return err
-				}
-				err = b.Excel.SetCellStyle(b.SheetName, left1Cell, left2Cell, b.AlignCenterStyle)
-				if err != nil {
-					return err
-				}
+	}
 
-				return b.Excel.SetCellValue(b.SheetName, left1Cell, value)
+	// 工序数据
+	if b.Content.Process != nil {
+		if len(b.Content.Process) > 0 {
+			isSupplier := false
+			for _, ps := range b.Content.Process {
+				if supplierId == ps.Supplier.SupplierInfo.Id {
+					isSupplier = true
+					break
+				}
 			}
 
-			drawCol("B", "C", "材料/工序")
-			drawCol("D", "D", "供应商名称")
-			drawCol("E", "G", "规格")
-			drawCol("H", "H", "单位")
-			drawCol("I", "I", "下单数量")
-			drawCol("J", "J", "实际数量")
-			drawCol("K", "K", "单价")
-			drawCol("L", "L", "预算金额")
-			drawCol("M", "M", "实际金额")
-			row++
-
-			var DrawRow = func(rowIndex int, values ...string) {
-				charas := []string{"B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M"}
-				for i, c := range charas {
-					v := ""
-					if i < len(values) {
-						v = values[i]
+			if isSupplier {
+				// 生产汇总金额
+				startACell := fmt.Sprintf("%s%d", "A", row)
+				endMCell := fmt.Sprintf("%s%d", "K", row)
+				b.Excel.MergeCell(b.SheetName, startACell, endMCell)
+				b.Excel.SetCellStyle(b.SheetName, startACell, endMCell, b.AlignCenterStyle)
+				b.Excel.SetCellValue(b.SheetName, startACell, "额外工序")
+				row++
+				// 工序 外箱 手工费 表头
+				var drawCol = func(startCell, endCell string, value string) error {
+					left1Cell := fmt.Sprintf("%s%d", startCell, row)
+					left2Cell := fmt.Sprintf("%s%d", endCell, row)
+					err := b.Excel.MergeCell(b.SheetName, left1Cell, left2Cell)
+					if err != nil {
+						return err
 					}
-					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)
-					b.Excel.SetRowHeight(b.SheetName, rowIndex, 21)
+					err = b.Excel.SetCellStyle(b.SheetName, left1Cell, left2Cell, b.AlignCenterStyle)
+					if err != nil {
+						return err
+					}
+
+					return b.Excel.SetCellValue(b.SheetName, left1Cell, value)
 				}
-			}
 
-			if len(b.Content.Process) > 0 {
-				for _, ps := range b.Content.Process {
-					if supplierId == ps.Supplier.SupplierInfo.Id {
+				drawCol("A", "A", "")
+				drawCol("B", "C", "材料/工序")
+				drawCol("D", "E", "供应商名称")
+				drawCol("F", "G", "规格")
+				drawCol("H", "H", "单位")
+				drawCol("I", "I", "下单数量")
+				drawCol("J", "J", "实际数量")
+				drawCol("K", "K", "单价")
+				drawCol("L", "L", "预算金额")
+				drawCol("M", "M", "实际金额")
+				row++
+				if len(b.Content.Process) > 0 {
+					for _, ps := range b.Content.Process {
 						orderCount := fmt.Sprintf("%.2f", ps.Supplier.OrderCount)
 						confirmCount := fmt.Sprintf("%d", ps.ConfirmCount)
 						price := fmt.Sprintf("%.2f", ps.Supplier.OrderPrice)
@@ -348,9 +343,23 @@ func (b *PlanCostExcel) drawSupplierContent() error {
 						orderRealPrice := fmt.Sprintf("%.2f", ps.Supplier.OrderRealPrice)
 						b.FormatToEmpty(&orderRealPrice)
 						realPrice := fmt.Sprintf("%.2f", ps.RealPrice)
-						DrawRow(row, ps.ProcessInfo.Name, ps.Supplier.SupplierInfo.Name, ps.ProcessInfo.Norm, ps.ProcessInfo.Unit, orderCount, confirmCount, price, orderRealPrice, realPrice)
-						row++
+						supplierName := ""
+						if ps.Supplier.SupplierInfo != nil {
+							supplierName = ps.Supplier.SupplierInfo.Name
+						}
+
+						b.drawRow(row, "", "", "", "", "", "", "", ps.ProcessInfo.Unit, orderCount, confirmCount, price, orderRealPrice, realPrice)
 
+						b.Excel.MergeCell(b.SheetName, fmt.Sprintf("%s%d", "B", row), fmt.Sprintf("%s%d", "C", row))
+						b.Excel.SetCellValue(b.SheetName, fmt.Sprintf("%s%d", "B", row), ps.ProcessInfo.Name)
+
+						b.Excel.MergeCell(b.SheetName, fmt.Sprintf("%s%d", "D", row), fmt.Sprintf("%s%d", "E", row))
+						b.Excel.SetCellValue(b.SheetName, fmt.Sprintf("%s%d", "D", row), supplierName)
+
+						b.Excel.MergeCell(b.SheetName, fmt.Sprintf("%s%d", "F", row), fmt.Sprintf("%s%d", "G", row))
+						b.Excel.SetCellValue(b.SheetName, fmt.Sprintf("%s%d", "F", row), ps.ProcessInfo.Norm)
+
+						row++
 					}
 
 				}
@@ -359,29 +368,29 @@ func (b *PlanCostExcel) drawSupplierContent() error {
 
 		}
 
-		// 生产汇总金额
-		startACell := fmt.Sprintf("%s%d", "A", row)
-		endKCell := fmt.Sprintf("%s%d", "K", row)
-		LCell := fmt.Sprintf("%s%d", "L", row)
-		MCell := fmt.Sprintf("%s%d", "M", 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, LCell, LCell, b.AlignCenterStyle)
-		planOrderRealPrice := fmt.Sprintf("%.2f", totalOrderRealPrice)
-		b.FormatToEmpty(&planOrderRealPrice)
-		b.Excel.SetCellValue(b.SheetName, LCell, planOrderRealPrice)
-
-		// 生产实际汇总
-		b.Excel.SetCellStyle(b.SheetName, MCell, MCell, b.AlignCenterStyle)
-		planRealPrice := fmt.Sprintf("%.2f", totalRealPrice)
-		b.FormatToEmpty(&planRealPrice)
-		b.Excel.SetCellValue(b.SheetName, MCell, planRealPrice)
-
 	}
 
+	// 生产汇总金额
+	startACell := fmt.Sprintf("%s%d", "A", row)
+	endKCell := fmt.Sprintf("%s%d", "K", row)
+	LCell := fmt.Sprintf("%s%d", "L", row)
+	MCell := fmt.Sprintf("%s%d", "M", 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, LCell, LCell, b.AlignCenterStyle)
+	planOrderRealPrice := fmt.Sprintf("%.2f", totalOrderRealPrice)
+	b.FormatToEmpty(&planOrderRealPrice)
+	b.Excel.SetCellValue(b.SheetName, LCell, planOrderRealPrice)
+
+	// 生产实际汇总
+	b.Excel.SetCellStyle(b.SheetName, MCell, MCell, b.AlignCenterStyle)
+	planRealPrice := fmt.Sprintf("%.2f", totalRealPrice)
+	b.FormatToEmpty(&planRealPrice)
+	b.Excel.SetCellValue(b.SheetName, MCell, planRealPrice)
+
 	return nil
 }
 
@@ -436,7 +445,7 @@ func (b *PlanCostExcel) drawAllContent() error {
 					b.FormatToEmpty(&orderPrice)
 					// 预算金额
 					orderRealPrice := fmt.Sprintf("%.2f", mat.Supplier.OrderRealPrice)
-					perRealPrice += mat.Supplier.OrderRealPrice
+					perOrderRealPrice += mat.Supplier.OrderRealPrice
 					b.FormatToEmpty(&orderRealPrice)
 					// 实际金额
 					perRealPrice += mat.RealPrice
@@ -475,8 +484,9 @@ func (b *PlanCostExcel) drawAllContent() error {
 							// 实际金额 在外层合并单元格
 							realAmount := ""
 							b.drawRow(row, "", "", craft.CraftInfo.Name, supplierName, craft.CraftInfo.Norm, carftHeigth, carftWidth, craft.CraftInfo.Unit, orderCount, confirmCount, price, budgetAmount, realAmount)
-							row++
 							mergeEndRow = row
+							row++
+
 						}
 						// 多个工序 合并预算价格、实际价格
 						b.Excel.MergeCell(b.SheetName, fmt.Sprintf("L%d", mergeStartRow), fmt.Sprintf("L%d", mergeEndRow))
@@ -501,11 +511,10 @@ func (b *PlanCostExcel) drawAllContent() error {
 
 			// 预算
 			totalOrderRealPrice += perOrderRealPrice
-			// 预算
+			// 实际金额
 			totalRealPrice += perRealPrice
 		}
 	}
-
 	// 工序数据
 	if b.Content.Process != nil {
 		// 生产汇总金额
@@ -518,8 +527,7 @@ func (b *PlanCostExcel) drawAllContent() error {
 		// 工序 外箱 手工费 表头
 		var drawCol = func(startCell, endCell string, value string) error {
 			left1Cell := fmt.Sprintf("%s%d", startCell, row)
-			left2Cell := fmt.Sprintf("%s%d", endCell, row+1)
-
+			left2Cell := fmt.Sprintf("%s%d", endCell, row)
 			err := b.Excel.MergeCell(b.SheetName, left1Cell, left2Cell)
 			if err != nil {
 				return err
@@ -532,9 +540,10 @@ func (b *PlanCostExcel) drawAllContent() error {
 			return b.Excel.SetCellValue(b.SheetName, left1Cell, value)
 		}
 
+		drawCol("A", "A", "")
 		drawCol("B", "C", "材料/工序")
-		drawCol("D", "D", "供应商名称")
-		drawCol("E", "G", "规格")
+		drawCol("D", "E", "供应商名称")
+		drawCol("F", "G", "规格")
 		drawCol("H", "H", "单位")
 		drawCol("I", "I", "下单数量")
 		drawCol("J", "J", "实际数量")
@@ -542,21 +551,6 @@ func (b *PlanCostExcel) drawAllContent() error {
 		drawCol("L", "L", "预算金额")
 		drawCol("M", "M", "实际金额")
 		row++
-
-		var DrawRow = func(rowIndex int, values ...string) {
-			charas := []string{"B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M"}
-			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)
-				b.Excel.SetRowHeight(b.SheetName, rowIndex, 21)
-			}
-		}
-
 		if len(b.Content.Process) > 0 {
 			for _, ps := range b.Content.Process {
 				orderCount := fmt.Sprintf("%.2f", ps.Supplier.OrderCount)
@@ -568,7 +562,22 @@ func (b *PlanCostExcel) drawAllContent() error {
 				orderRealPrice := fmt.Sprintf("%.2f", ps.Supplier.OrderRealPrice)
 				b.FormatToEmpty(&orderRealPrice)
 				realPrice := fmt.Sprintf("%.2f", ps.RealPrice)
-				DrawRow(row, ps.ProcessInfo.Name, ps.Supplier.SupplierInfo.Name, ps.ProcessInfo.Norm, ps.ProcessInfo.Unit, orderCount, confirmCount, price, orderRealPrice, realPrice)
+				supplierName := ""
+				if ps.Supplier.SupplierInfo != nil {
+					supplierName = ps.Supplier.SupplierInfo.Name
+				}
+
+				b.drawRow(row, "", "", "", "", "", "", "", ps.ProcessInfo.Unit, orderCount, confirmCount, price, orderRealPrice, realPrice)
+
+				b.Excel.MergeCell(b.SheetName, fmt.Sprintf("%s%d", "B", row), fmt.Sprintf("%s%d", "C", row))
+				b.Excel.SetCellValue(b.SheetName, fmt.Sprintf("%s%d", "B", row), ps.ProcessInfo.Name)
+
+				b.Excel.MergeCell(b.SheetName, fmt.Sprintf("%s%d", "D", row), fmt.Sprintf("%s%d", "E", row))
+				b.Excel.SetCellValue(b.SheetName, fmt.Sprintf("%s%d", "D", row), supplierName)
+
+				b.Excel.MergeCell(b.SheetName, fmt.Sprintf("%s%d", "F", row), fmt.Sprintf("%s%d", "G", row))
+				b.Excel.SetCellValue(b.SheetName, fmt.Sprintf("%s%d", "F", row), ps.ProcessInfo.Norm)
+
 				row++
 			}
 

+ 11 - 0
boxcost/api/plan.go

@@ -232,7 +232,18 @@ func GetProductPlan(c *gin.Context, apictx *ApiSession) (interface{}, error) {
 
 	billStates := map[string]string{}
 
+	if len(plan.Process) > 0 {
+		for _, pp := range plan.Process {
+			ok, state := repo.RepoSeachDocMap(apictx.CreateRepoCtx(), &repo.DocSearchOptions{CollectName: repo.CollectionBillPurchase, Query: repo.Map{"_id": pp.BillId}, Project: []string{"status"}})
+			if ok {
+				billStates[pp.BillId] = state["status"].(string)
+			}
+		}
+
+	}
+
 	if plan.Pack != nil && plan.Pack.Components != nil {
+
 		for _, comp := range plan.Pack.Components {
 			if comp.Mats != nil {
 				for _, mat := range comp.Mats {

+ 1 - 1
boxcost/api/report-purchase-excel.go

@@ -248,7 +248,7 @@ func (b *ReportPurchaseExcel) drawTableContent() error {
 			b.FormatToEmpty(&realAmount)
 			b.RealCount += b.Content.RealAmount
 
-			DrawRow(row, paper.Name, paper.Norm, paper.Height, paper.Width, fmt.Sprintf("%d", paper.Count), confirmCount, price, price2, budgetAmount, realAmount, deliveryTime, paper.Remark)
+			DrawRow(row, paper.Name, paper.Norm, paper.Height, paper.Width, fmt.Sprintf("%d", paper.OrderCount), confirmCount, price, price2, budgetAmount, realAmount, deliveryTime, paper.Remark)
 			row++
 			b.Row++
 		}

+ 2 - 0
boxcost/boxcost.log

@@ -12,3 +12,5 @@
 {"level":"info","timestamp":"2022-12-21 11:21:28","message":"[<nil>]","service_name":"boxcost"}
 {"level":"info","timestamp":"2022-12-21 11:24:46","message":"[<nil>]","service_name":"boxcost"}
 {"level":"info","timestamp":"2023-01-18 10:09:00","message":"[<nil>]","service_name":"boxcost"}
+{"level":"info","timestamp":"2023-02-15 10:39:19","message":"[<nil>]","service_name":"boxcost"}
+{"level":"info","timestamp":"2023-02-15 10:43:36","message":"[<nil>]","service_name":"boxcost"}

+ 4 - 1
boxcost/db/model/bill.go

@@ -25,7 +25,7 @@ type PaperBill struct {
 	Price2Unit string  `bson:"price2Unit,omitempty" json:"price2Unit"`
 
 	//数量
-	Count int `bson:"count,omitempty" json:"count"`
+	// Count int `bson:"count,omitempty" json:"count"`
 
 	// 下单数量
 	OrderCount int `bson:"orderCount,omitempty" json:"orderCount"`
@@ -121,6 +121,9 @@ type ProduceBillData struct {
 
 	// 确认收货数量
 	ConfirmCount int `bson:"confirmCount,omitempty" json:"confirmCount"`
+
+	// 确认收货数量
+	BatchCount int `bson:"batchCount,omitempty" json:"batchCount"`
 }
 
 type ProduceBill struct {