zhangqian
2024-07-31 ae97356a9d0e190ad39513e913ed20eae306e28f
service/inventory_report_forms.go
@@ -215,81 +215,53 @@
   unitData, unitIndexMap := GetAllUnits()
   // 自定义表头
   headers := []string{"产品", "产品类别", "单位成本", "总价值", "在库", "可用库存", "入库", "出库"}
   headers := []interface{}{"产品", "产品类别", "单位成本", "总价值",
      map[string][]string{"在库": unitData},
      map[string][]string{"可用库存": unitData},
      map[string][]string{"入库": unitData},
      map[string][]string{"出库": unitData}}
   // 设置表头
   for i, header := range headers {
      cell := getColumnAlphabet(i) + "1"
      f.SetCellValue("Sheet1", cell, header)
   }
   f.SetCellValue("Sheet1", getColumnAlphabet(1)+"1", "产品")
   f.SetCellValue("Sheet1", getColumnAlphabet(2)+"1", "产品类别")
   f.SetCellValue("Sheet1", getColumnAlphabet(3)+"1", "单位成本")
   f.SetCellValue("Sheet1", getColumnAlphabet(4)+"1", "总价值")
   f.SetCellValue("Sheet1", getColumnAlphabet(5)+"1", "在库")
   f.MergeCell("Sheet1", getColumnAlphabet(5)+"1", getColumnAlphabet(7)+"1") // 合并单元格
   f.SetCellValue("Sheet1", getColumnAlphabet(8)+"1", "可用库存")
   f.MergeCell("Sheet1", getColumnAlphabet(8)+"1", getColumnAlphabet(11)+"1") // 合并单元格
   f.SetCellValue("Sheet1", getColumnAlphabet(12)+"1", "入库")
   f.MergeCell("Sheet1", getColumnAlphabet(12)+"1", getColumnAlphabet(15)+"1") // 合并单元格
   f.SetCellValue("Sheet1", getColumnAlphabet(16)+"1", "出库")
   f.MergeCell("Sheet1", getColumnAlphabet(16)+"1", getColumnAlphabet(19)+"1") // 合并单元格
   for i, header := range unitData {
      f.SetCellValue("Sheet1", getColumnAlphabet(i+4)+"2", header)
      f.SetCellValue("Sheet1", getColumnAlphabet(i+8)+"2", header)
      f.SetCellValue("Sheet1", getColumnAlphabet(i+12)+"2", header)
      f.SetCellValue("Sheet1", getColumnAlphabet(i+16)+"2", header)
   }
   // 设置表头样式
   style := &excelize.Style{
      Border: nil,
      Fill: excelize.Fill{
         Type:    "pattern",
         Pattern: 1,
         Shading: 0,
      },
      Font: &excelize.Font{
         Bold: true,
      },
      Alignment: &excelize.Alignment{
         Horizontal: "center",
      },
   }
   titleStyle, err := f.NewStyle(style)
   lastColumnNumber, err := SetExcelHeaders(headers, f)
   if err != nil {
      return
   }
   lastColumn := getColumnAlphabet(19)
   titleStyle, err := SetHeaderStyle(f)
   if err != nil {
      return
   }
   lastColumn := getColumnAlphabet(lastColumnNumber)
   f.SetCellStyle("Sheet1", "A1", lastColumn+"2", titleStyle)
   // 设置列宽
   f.SetColWidth("Sheet1", "A", "D", 30)
   f.SetColWidth("Sheet1", "E", lastColumn, 15)
   for i := 1; i <= 4; i++ {
      column := getColumnAlphabet(i)
      f.MergeCell("Sheet1", column+"1", column+"2") // 合并单元格
   }
   for i, v := range dataList {
      column := strconv.Itoa(i + 3)
      f.SetCellValue("Sheet1", getColumnAlphabet(0)+column, v.ProductName)
      f.SetCellValue("Sheet1", getColumnAlphabet(1)+column, v.ProductType)
      f.SetCellValue("Sheet1", getColumnAlphabet(2)+column, v.Cost)
      f.SetCellValue("Sheet1", getColumnAlphabet(3)+column, v.Value)
      rowNumber := i + 3
      column := strconv.Itoa(rowNumber)
      f.SetCellValue("Sheet1", getColumnAlphabet(1)+column, v.ProductName)
      f.SetCellValue("Sheet1", getColumnAlphabet(2)+column, v.ProductType)
      f.SetCellValue("Sheet1", getColumnAlphabet(3)+column, v.Cost)
      f.SetCellValue("Sheet1", getColumnAlphabet(4)+column, v.Value)
      f.SetCellValue("Sheet1", getColumnAlphabet(4)+column, v.Amount)
      v.AmountMoreUnits = append(v.AmountMoreUnits, models.UnitItems{Amount: v.Amount, Unit: v.Unit})
      FillMoreUnitToExcel(v.AmountMoreUnits, 5, i+3, unitIndexMap, f)
      FillMoreUnitToExcel(v.AmountMoreUnits, 5, rowNumber, unitIndexMap, f)
      f.SetCellValue("Sheet1", getColumnAlphabet(8)+column, v.AvailableNumber)
      v.AvailableNumberMoreUnits = append(v.AvailableNumberMoreUnits, models.UnitItems{Amount: v.AvailableNumber, Unit: v.Unit})
      FillMoreUnitToExcel(v.AvailableNumberMoreUnits, 9, i+3, unitIndexMap, f)
      FillMoreUnitToExcel(v.AvailableNumberMoreUnits, 5+len(unitData), rowNumber, unitIndexMap, f)
      f.SetCellValue("Sheet1", getColumnAlphabet(12)+column, v.In)
      v.InMoreUnits = append(v.InMoreUnits, models.UnitItems{Amount: v.In, Unit: v.Unit})
      FillMoreUnitToExcel(v.InMoreUnits, 13, i+3, unitIndexMap, f)
      FillMoreUnitToExcel(v.InMoreUnits, 5+len(unitData)*2, rowNumber, unitIndexMap, f)
      f.SetCellValue("Sheet1", getColumnAlphabet(16)+column, v.Out)
      v.OutMoreUnits = append(v.OutMoreUnits, models.UnitItems{Amount: v.Out, Unit: v.Unit})
      FillMoreUnitToExcel(v.OutMoreUnits, 17, i+3, unitIndexMap, f)
      FillMoreUnitToExcel(v.OutMoreUnits, 5+len(unitData)*3, rowNumber, unitIndexMap, f)
   }
   fileName = fmt.Sprintf("库存报表%s.xlsx", time.Now().Format("2006-01-02-1504"))