zhangqian
2024-07-31 155f70979af20ca520a55b89c6ec8cd46c43f8a5
service/inventory_report_forms.go
@@ -87,7 +87,9 @@
      data.Cost = material.Cost
      data.Unit = material.Unit
      data.Value = material.Amount.Mul(material.Cost)
      data.ProductType = material.CategoryName
      data.ProductCategory = material.CategoryName
      data.ProductType = material.Type
      data.ProductSpecs = material.Specs
      for _, amount := range productAmounts {
         if material.ID == amount.ProductId {
            data.Amount = data.Amount.Add(amount.Amount)
@@ -211,6 +213,7 @@
   var fileName string
   f := excelize.NewFile()
   unitData, unitIndexMap := GetAllUnits()
   // 自定义表头
   headers := []string{"产品", "产品类别", "单位成本", "总价值", "在库", "可用库存", "入库", "出库"}
   // 设置表头
@@ -219,12 +222,12 @@
      f.SetCellValue("Sheet1", cell, header)
   }
   f.SetCellValue("Sheet1", getColumnAlphabet(0)+"1", "产品")
   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.MergeCell("Sheet1", getColumnAlphabet(4)+"1", getColumnAlphabet(7)+"1") // 合并单元格
   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", "入库")
@@ -232,7 +235,6 @@
   f.SetCellValue("Sheet1", getColumnAlphabet(16)+"1", "出库")
   f.MergeCell("Sheet1", getColumnAlphabet(16)+"1", getColumnAlphabet(19)+"1") // 合并单元格
   unitData := []string{"件", "匹", "米", "重量"}
   for i, header := range unitData {
      f.SetCellValue("Sheet1", getColumnAlphabet(i+4)+"2", header)
      f.SetCellValue("Sheet1", getColumnAlphabet(i+8)+"2", header)
@@ -274,16 +276,20 @@
      f.SetCellValue("Sheet1", getColumnAlphabet(3)+column, v.Value)
      f.SetCellValue("Sheet1", getColumnAlphabet(4)+column, v.Amount)
      FillMoreUnitToExcel(v.Amount, v.AmountMoreUnits, 5, i+3, f)
      v.AmountMoreUnits = append(v.AmountMoreUnits, models.UnitItems{Amount: v.Amount, Unit: v.Unit})
      FillMoreUnitToExcel(v.AmountMoreUnits, 5, i+3, unitIndexMap, f)
      f.SetCellValue("Sheet1", getColumnAlphabet(8)+column, v.AvailableNumber)
      FillMoreUnitToExcel(v.AvailableNumber, v.AvailableNumberMoreUnits, 9, i+3, f)
      v.AvailableNumberMoreUnits = append(v.AvailableNumberMoreUnits, models.UnitItems{Amount: v.AvailableNumber, Unit: v.Unit})
      FillMoreUnitToExcel(v.AvailableNumberMoreUnits, 9, i+3, unitIndexMap, f)
      f.SetCellValue("Sheet1", getColumnAlphabet(12)+column, v.In)
      FillMoreUnitToExcel(v.In, v.AmountMoreUnits, 13, i+3, f)
      v.InMoreUnits = append(v.InMoreUnits, models.UnitItems{Amount: v.In, Unit: v.Unit})
      FillMoreUnitToExcel(v.InMoreUnits, 13, i+3, unitIndexMap, f)
      f.SetCellValue("Sheet1", getColumnAlphabet(16)+column, v.Out)
      FillMoreUnitToExcel(v.Out, v.AmountMoreUnits, 17, i+3, f)
      v.OutMoreUnits = append(v.OutMoreUnits, models.UnitItems{Amount: v.Out, Unit: v.Unit})
      FillMoreUnitToExcel(v.OutMoreUnits, 17, i+3, unitIndexMap, f)
   }
   fileName = fmt.Sprintf("库存报表%s.xlsx", time.Now().Format("2006-01-02-1504"))
@@ -298,7 +304,9 @@
func getColumnAlphabet(index int) string {
   const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
   if index <= 26 {
      return string(alphabet[index])
      return string(alphabet[index-1])
   }
   return getColumnAlphabet((index)/26) + getColumnAlphabet((index)%26+1)
   quotient := (index - 1) / 26
   remainder := (index - 1) % 26
   return getColumnAlphabet(quotient) + getColumnAlphabet(remainder+1)
}