|
|
@@ -1197,12 +1197,9 @@ func (this *OilGoodsAptitudeController) ImportExcel() {
|
|
|
|
|
|
session := utils.DBE.NewSession()
|
|
|
err := session.Begin()
|
|
|
- sessionsvc := goodsaptitude.GetOilGoodsAptitudeSession(session)
|
|
|
- defer func() {
|
|
|
- session.Close()
|
|
|
- }()
|
|
|
+ svc := goodsaptitude.GetOilGoodsAptitudeSession(session)
|
|
|
|
|
|
- err = sessionsvc.TruncateTable(Tmp_OilGoodsAptitudeName)
|
|
|
+ err = svc.TruncateTable(Tmp_OilGoodsAptitudeName)
|
|
|
|
|
|
if err != nil {
|
|
|
session.Rollback()
|
|
|
@@ -1212,7 +1209,7 @@ func (this *OilGoodsAptitudeController) ImportExcel() {
|
|
|
this.ServeJSON()
|
|
|
}
|
|
|
|
|
|
- err = sessionsvc.TruncateTable(Tmp_OilGoodsAptitudeClassName)
|
|
|
+ err = svc.TruncateTable(Tmp_OilGoodsAptitudeClassName)
|
|
|
|
|
|
if err != nil {
|
|
|
session.Rollback()
|
|
|
@@ -1227,7 +1224,7 @@ func (this *OilGoodsAptitudeController) ImportExcel() {
|
|
|
t := time.Now()
|
|
|
filePath := utils.Cfg.MustValue("file", "tmplateDir") + "xlsx/temp.xlsx"
|
|
|
xlFile, err := xlsx.OpenFile(filePath)
|
|
|
-
|
|
|
+ var errLineNum string
|
|
|
|
|
|
//excelFileName := "F:/物资类项目与资质对照表-2017.xlsx"
|
|
|
if err != nil {
|
|
|
@@ -1235,86 +1232,18 @@ func (this *OilGoodsAptitudeController) ImportExcel() {
|
|
|
}
|
|
|
var sheet = xlFile.Sheets[0]
|
|
|
|
|
|
- svc := goodsaptitude.GetOilGoodsAptitudeService(utils.DBE)
|
|
|
Fstrs := svc.GetFCode()
|
|
|
Fstrs = "GoodsLevel,GoodsDesc,Standard,CompanyType," + Fstrs
|
|
|
columnArr := strings.Split(Fstrs, ",")
|
|
|
- errLineNum := ""
|
|
|
+
|
|
|
+ defer func() {
|
|
|
+ session.Close()
|
|
|
+ }()
|
|
|
|
|
|
codemap := make(map[string]int)
|
|
|
for i := 3; i < len(sheet.Rows); i++ {
|
|
|
- cellsArr := sheet.Rows[i].Cells
|
|
|
-
|
|
|
- parentId := 0
|
|
|
- classId := 0
|
|
|
- cellsArrLen := len(cellsArr)
|
|
|
- cellD := strings.TrimSpace(cellsArr[3].String())
|
|
|
- var valstr = ""
|
|
|
- for idx, cell := range cellsArr {
|
|
|
- if idx < 4 {
|
|
|
- cellstr := cell.String()
|
|
|
- //fmt.Printf("%s\n", cellstr)
|
|
|
- if strings.TrimSpace(cellstr) == "" {
|
|
|
- break
|
|
|
- }
|
|
|
- cellArr := strings.Fields(cellstr)
|
|
|
-
|
|
|
- //id := sessionsvc.SelectGoodsAptitudeClassCode(cellArr[0])
|
|
|
-
|
|
|
- var entity goodsaptitudeclass.Tmp_OilGoodsAptitudeClass
|
|
|
- _, has := codemap[cellArr[0]]
|
|
|
- if !has {
|
|
|
- if idx != 0 {
|
|
|
- upcellstr := cellsArr[idx -1].String()
|
|
|
- upcellArr := strings.Fields(upcellstr)
|
|
|
- parentId = codemap[upcellArr[0]]
|
|
|
- }
|
|
|
- entity.Code = cellArr[0]
|
|
|
- entity.Name = cellArr[1]
|
|
|
- entity.Edition = "1"
|
|
|
- entity.ParentId = parentId
|
|
|
- entity.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
|
|
|
- entity.CreateBy = this.User.Realname
|
|
|
- entity.CreateOn = time.Now()
|
|
|
-
|
|
|
- _, err := sessionsvc.InsertEntityBytbl(Tmp_OilGoodsAptitudeClassName, &entity)
|
|
|
- if err != nil {
|
|
|
- errLineNum += strconv.Itoa(i + 1) + ","
|
|
|
- log.Println("Rollback1")
|
|
|
- elapsed := time.Since(t)
|
|
|
- fmt.Println(elapsed)
|
|
|
- break
|
|
|
- }
|
|
|
- classId = entity.Id
|
|
|
- if idx != 3 {
|
|
|
- codemap[cellArr[0]] = entity.Id
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if idx >= 4 {
|
|
|
- valstr += "'" + cellsArr[idx].String() + "',"
|
|
|
- }
|
|
|
- }
|
|
|
- if cellD != "" {
|
|
|
- valstr = strings.Trim(valstr, ",")
|
|
|
- valstr = strings.Replace(valstr, "是", "1", -1)
|
|
|
- log.Println(cellsArr[3].String() + "==" + valstr)
|
|
|
- var columnstr = ""
|
|
|
- for l := 0; l < cellsArrLen - 4; l++ {
|
|
|
- columnstr += columnArr[l] + ","
|
|
|
- }
|
|
|
- columnstr = strings.Trim(columnstr, ",")
|
|
|
-
|
|
|
- err = sessionsvc.InsertTmpGoodsAptitude(strconv.Itoa(classId), columnstr, valstr)
|
|
|
- if err != nil {
|
|
|
- errLineNum += strconv.Itoa(i + 1) + ","
|
|
|
- log.Println("Rollback2")
|
|
|
- elapsed := time.Since(t)
|
|
|
- fmt.Println(elapsed)
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
+ lineNo := strconv.Itoa(i + 1)
|
|
|
+ this.OperationCell(svc, lineNo, columnArr, codemap, sheet.Rows[i].Cells, &errLineNum)
|
|
|
}
|
|
|
os.Remove(filePath)
|
|
|
|
|
|
@@ -1324,15 +1253,88 @@ func (this *OilGoodsAptitudeController) ImportExcel() {
|
|
|
errorinfo.Message = "导入失败!错误行号:" + errLineNum
|
|
|
this.Data["json"] = &errorinfo
|
|
|
this.ServeJSON()
|
|
|
+ } else {
|
|
|
+ session.Commit()
|
|
|
+ elapsed := time.Since(t)
|
|
|
+ log.Println(elapsed)
|
|
|
+ errorinfo.Code = 0
|
|
|
+ errorinfo.Message = "导入成功!"
|
|
|
+ this.Data["json"] = &errorinfo
|
|
|
+ this.ServeJSON()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (this *OilGoodsAptitudeController) OperationCell(svc *goodsaptitude.OilGoodsAptitudeSession, lineNo string, columnArr []string, codemap map[string]int, cellsArr []*xlsx.Cell, errLineNum *string) {
|
|
|
+
|
|
|
+ defer func() {
|
|
|
+ if err := recover(); err != nil {
|
|
|
+ log.Println("err" + lineNo, err)
|
|
|
+ *errLineNum += lineNo + ","
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ parentId := 0
|
|
|
+ classId := 0
|
|
|
+ cellsArrLen := len(cellsArr)
|
|
|
+ cellD := strings.TrimSpace(cellsArr[3].String())
|
|
|
+ var valstr = ""
|
|
|
+ for idx, cell := range cellsArr {
|
|
|
+ if idx < 4 {
|
|
|
+ cellstr := cell.String()
|
|
|
+ //fmt.Printf("%s\n", cellstr)
|
|
|
+ if strings.TrimSpace(cellstr) == "" {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ cellArr := strings.Fields(cellstr)
|
|
|
+
|
|
|
+ //id := sessionsvc.SelectGoodsAptitudeClassCode(cellArr[0])
|
|
|
+
|
|
|
+ var entity goodsaptitudeclass.Tmp_OilGoodsAptitudeClass
|
|
|
+ _, has := codemap[cellArr[0]]
|
|
|
+ if !has {
|
|
|
+ if idx != 0 {
|
|
|
+ upcellstr := cellsArr[idx -1].String()
|
|
|
+ upcellArr := strings.Fields(upcellstr)
|
|
|
+ parentId = codemap[upcellArr[0]]
|
|
|
+ }
|
|
|
+ entity.Code = cellArr[0]
|
|
|
+ entity.Name = cellArr[1]
|
|
|
+ entity.Edition = "1"
|
|
|
+ entity.ParentId = parentId
|
|
|
+ entity.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
|
|
|
+ entity.CreateBy = this.User.Realname
|
|
|
+ entity.CreateOn = time.Now()
|
|
|
+
|
|
|
+ _, err := svc.InsertEntityBytbl(Tmp_OilGoodsAptitudeClassName, &entity)
|
|
|
+ if err != nil {
|
|
|
+ panic(err)
|
|
|
+ break
|
|
|
+ }
|
|
|
+ classId = entity.Id
|
|
|
+ if idx != 3 {
|
|
|
+ codemap[cellArr[0]] = entity.Id
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if idx >= 4 {
|
|
|
+ valstr += "'" + cellsArr[idx].String() + "',"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if cellD != "" {
|
|
|
+ valstr = strings.Trim(valstr, ",")
|
|
|
+ valstr = strings.Replace(valstr, "是", "1", -1)
|
|
|
+ log.Println(cellsArr[3].String() + "==" + valstr)
|
|
|
+ var columnstr = ""
|
|
|
+ for l := 0; l < cellsArrLen - 4; l++ {
|
|
|
+ columnstr += columnArr[l] + ","
|
|
|
+ }
|
|
|
+ columnstr = strings.Trim(columnstr, ",")
|
|
|
+
|
|
|
+ err := svc.InsertTmpGoodsAptitude(strconv.Itoa(classId), columnstr, valstr)
|
|
|
+ if err != nil {
|
|
|
+ panic(err)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- session.Commit()
|
|
|
- elapsed := time.Since(t)
|
|
|
- log.Println(elapsed)
|
|
|
- errorinfo.Code = 0
|
|
|
- errorinfo.Message = "导入成功!"
|
|
|
- this.Data["json"] = &errorinfo
|
|
|
- this.ServeJSON()
|
|
|
}
|
|
|
|
|
|
// @Title get 清空导入的信息
|