|
@@ -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 = ""
|
|
|
+ }
|
|
|
+
|
|
|
+}
|