|
|
@ -8,8 +8,10 @@ import ( |
|
|
|
omMeta "LAPP_ACURA_MOM_BACKEND/meta/om" |
|
|
|
jitModel "LAPP_ACURA_MOM_BACKEND/models/jit" |
|
|
|
omModel "LAPP_ACURA_MOM_BACKEND/models/om" |
|
|
|
"LAPP_ACURA_MOM_BACKEND/utils" |
|
|
|
"errors" |
|
|
|
"fmt" |
|
|
|
"github.com/360EntSecGroup-Skylar/excelize/v2" |
|
|
|
"github.com/go-xorm/xorm" |
|
|
|
"sort" |
|
|
|
"strings" |
|
|
@ -472,12 +474,84 @@ func (impl *CustomizedQueryServiceImplement) ProductFamilyInventoryExportExcel(u |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
data := make([]interface{}, len(result)) |
|
|
|
for i, item := range result { |
|
|
|
data[i] = item |
|
|
|
return WriteExcelFile(result, "派生库存", "派生库存查询") |
|
|
|
} |
|
|
|
|
|
|
|
func WriteExcelFile(result []ProductFamilyInventoryQuery_ProductFamilyStatistics, sheetName string, prefixFilename string) (filepath string, err error) { |
|
|
|
file := excelize.NewFile() |
|
|
|
if sheetName != "Sheet1" { |
|
|
|
file.NewSheet(sheetName) |
|
|
|
file.DeleteSheet("Sheet1") |
|
|
|
} |
|
|
|
streamWriter, err := file.NewStreamWriter(sheetName) |
|
|
|
if err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
rowIndex := 1 |
|
|
|
if err = WriteExcelRow(streamWriter, &rowIndex, "派生号", "库存数量"); err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
for _, productFamily := range result { |
|
|
|
if err = WriteExcelRow(streamWriter, &rowIndex, productFamily.ProductFamilyId, productFamily.ProductFamilyId); err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
if len(productFamily.PackOrders) > 0 { |
|
|
|
if err = WriteExcelRow(streamWriter, &rowIndex, "", "库存数量", "包装单号", "包装状态", "包装时间", "发运单号", "发运时间", "发运模式"); err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
for _, packOrder := range productFamily.PackOrders { |
|
|
|
if err = WriteExcelRow(streamWriter, &rowIndex, "", packOrder.InventoryQuantity, packOrder.PackOrderId, packOrder.PackStatus, packOrder.PackTime, packOrder.ShipOrderId, packOrder.ShipTime, packOrder.ShipType); err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
if len(packOrder.Seats) > 0 { |
|
|
|
if err = WriteExcelRow(streamWriter, &rowIndex, "", "", "座椅条码"); err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
for _, seat := range packOrder.Seats { |
|
|
|
if err = WriteExcelRow(streamWriter, &rowIndex, "", "", seat.SerialOrderId); err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if err = streamWriter.Flush(); err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
return SaveExcelFile(file, prefixFilename) |
|
|
|
} |
|
|
|
|
|
|
|
func WriteExcelRow(streamWriter *excelize.StreamWriter, rowIndex *int, rowValues ...interface{}) (err error) { |
|
|
|
|
|
|
|
cell, _ := excelize.CoordinatesToCellName(1, *rowIndex) |
|
|
|
if err = streamWriter.SetRow(cell, rowValues); err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
*rowIndex++ |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
return grmi.SaveExcelFile(data, []string{}, "派生库存", "派生库存查询") |
|
|
|
func SaveExcelFile(file *excelize.File, prefixFilename string) (filepath string, err error) { |
|
|
|
|
|
|
|
filename := utils.MakeOrderSn(prefixFilename) + ".xlsx" |
|
|
|
dirname, err := utils.GetCurrentPath("web/public/uploadxlsx") |
|
|
|
if err != nil { |
|
|
|
return "", err |
|
|
|
} |
|
|
|
filepath = dirname + "/" + filename |
|
|
|
err = file.SaveAs(filepath) |
|
|
|
if err != nil { |
|
|
|
return "", err |
|
|
|
} |
|
|
|
pathLi := strings.Split(filepath, "web\\") |
|
|
|
if len(pathLi) != 2 { |
|
|
|
return "", errors.New("导出失败,请重试") |
|
|
|
} |
|
|
|
return pathLi[1], nil |
|
|
|
} |
|
|
|
|
|
|
|
/****************************************************************************** |
|
|
|