zhangqian
2024-07-31 155f70979af20ca520a55b89c6ec8cd46c43f8a5
service/location_forms.go
@@ -27,15 +27,16 @@
      resp := new(response.LocationForms)
      resp.Amount = amount.Amount
      resp.LocationId = amount.LocationId
      resp.LocationName = amount.Location.Name
      resp.LocationName = amount.Location.JointName
      resp.ProduceId = amount.Product.ID
      resp.ProductName = amount.Product.Name
      resp.ProductTypeName = amount.ProductCategory.Name
      resp.Unit = amount.Product.Unit
      resp.Value = resp.Amount.Mul(amount.Product.Cost)
      if *amount.Product.MoreUnit {
         resp.AmountMoreUnits = CreateMoreUnit(resp.Amount, amount.Product.MoreUnitList)
      moreUnit := amount.Product.MoreUnit
      if moreUnit != nil && *moreUnit {
         resp.AmountMoreUnits = amount.MoreUnitList
      }
      result = append(result, resp)
@@ -45,10 +46,11 @@
}
func (slf *LocationFormsService) BuildSearch(params request.GetLocationForms) (search *models.LocationProductAmountSearch, err error) {
   ids := make([]int, 0)
   ids := params.LocationIds
   if params.LocationId != 0 {
      ids = append(ids, params.LocationId)
   } else {
   }
   if len(ids) == 0 {
      //查询位置
      locations, err := models.NewLocationSearch().SetJointName(params.WareHouseCode).SetType(3).FindAll()
      if err != nil {
@@ -99,33 +101,35 @@
   var fileName string
   f := excelize.NewFile()
   unitData, unitIndexMap := GetAllUnits()
   // 自定义表头
   headers := []interface{}{"位置", "产品", "产品类别", map[string][]string{"在库数量": {"件", "匹", "米", "重量"}}, "价值"}
   headers := []interface{}{"位置", "产品", "产品类别", map[string][]string{"在库数量": unitData}, "价值"}
   lastColumnNumber, err := SetExcelHeaders(headers, f)
   if err != nil {
      return "", err
   }
   f.MergeCell("Sheet1", "A1", "A2") // 合并单元格
   f.MergeCell("Sheet1", "B1", "B2") // 合并单元格
   f.MergeCell("Sheet1", "C1", "C2") // 合并单元格
   // 设置表头
   var i int
   for _, h := range headers {
      if v, ok := h.(string); ok {
         f.SetCellValue("Sheet1", getColumnAlphabet(i)+"1", v)
         i++
      } else if childHeaders, ok := h.(map[string][]string); ok {
         for title, list := range childHeaders {
            f.SetCellValue("Sheet1", getColumnAlphabet(i)+"1", title)
            for _, t := range list {
               f.SetCellValue("Sheet1", getColumnAlphabet(i)+"2", t)
               i++
            }
         }
      }
   titleStyle, err := SetHeaderStyle(f)
   if err != nil {
      return "", err
   }
   lastColumn := getColumnAlphabet(lastColumnNumber)
   f.SetCellStyle("Sheet1", "A1", lastColumn+"2", titleStyle)
   // 设置列宽
   f.SetColWidth("Sheet1", "A", "C", 30)
   for i, v := range dataList {
      column := strconv.Itoa(i + 2)
      f.SetCellValue("Sheet1", "A"+column, v.LocationName)
      f.SetCellValue("Sheet1", "B"+column, v.ProductName)
      f.SetCellValue("Sheet1", "C"+column, v.ProductTypeName)
      f.SetCellValue("Sheet1", "D"+column, v.Amount)
      FillMoreUnitToExcel(v.Amount, v.AmountMoreUnits, 4, i+2, f)
      row := strconv.Itoa(i + 3)
      f.SetCellValue("Sheet1", "A"+row, v.LocationName)
      f.SetCellValue("Sheet1", "B"+row, v.ProductName)
      f.SetCellValue("Sheet1", "C"+row, v.ProductTypeName)
      v.AmountMoreUnits = append(v.AmountMoreUnits, models.UnitItems{Amount: v.Amount, Unit: v.Unit})
      FillMoreUnitToExcel(v.AmountMoreUnits, 4, i+3, unitIndexMap, f)
      f.SetCellValue("Sheet1", getColumnAlphabet(4+len(unitData))+row, v.Value)
   }
   fileName = fmt.Sprintf("位置报表%s.xlsx", time.Now().Format("2006-01-02-1504"))