|
@@ -82,10 +82,6 @@ func (f *Front) ProjectSave() {
|
|
stype := f.GetString("s_type") //新建项目类型:数据库导入、excel导入
|
|
stype := f.GetString("s_type") //新建项目类型:数据库导入、excel导入
|
|
s_sourceinfoTmp := f.GetString("s_sourceinfo") //数据表
|
|
s_sourceinfoTmp := f.GetString("s_sourceinfo") //数据表
|
|
s_sourceinfo := "f_sourceinfo_" + s_sourceinfoTmp
|
|
s_sourceinfo := "f_sourceinfo_" + s_sourceinfoTmp
|
|
- if !util.Mgo.CreateIndex(s_sourceinfo, util.SourceInfoIndexArr) { //创建数据源表同时生成字段索引
|
|
|
|
- f.ServeJson(map[string]interface{}{"success": false, "msg": "数据源表创建失败"})
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
if stype != "edit" && s_sourceinfo == "" {
|
|
if stype != "edit" && s_sourceinfo == "" {
|
|
f.ServeJson(map[string]interface{}{"success": false, "msg": "缺少数据存储表名"})
|
|
f.ServeJson(map[string]interface{}{"success": false, "msg": "缺少数据存储表名"})
|
|
return
|
|
return
|
|
@@ -831,8 +827,8 @@ func ImportDataByExcel(s_sourceinfo string, mf multipart.File, success *bool, ms
|
|
sheet := xls.Sheets[0]
|
|
sheet := xls.Sheets[0]
|
|
rows := sheet.Rows
|
|
rows := sheet.Rows
|
|
idcolnum := -1
|
|
idcolnum := -1
|
|
- cellFieldName := map[int]string{} //记录客户需求字段所在的列
|
|
|
|
- idInfoMap := map[string]map[string]interface{}{} //记录数据id及需要保存的字段信息
|
|
|
|
|
|
+ cellFieldName := map[int]string{} //记录客户需求字段所在的列
|
|
|
|
+ idInfoArr := []util.Data{} //记录数据id及需要保存的字段信息
|
|
for rn, row := range rows {
|
|
for rn, row := range rows {
|
|
if rn == 0 {
|
|
if rn == 0 {
|
|
for index, cell := range row.Cells {
|
|
for index, cell := range row.Cells {
|
|
@@ -871,17 +867,21 @@ func ImportDataByExcel(s_sourceinfo string, mf multipart.File, success *bool, ms
|
|
break
|
|
break
|
|
}
|
|
}
|
|
id = util.SE.DecodeString(id) //解密后id
|
|
id = util.SE.DecodeString(id) //解密后id
|
|
- idInfoMap[id] = tmp
|
|
|
|
|
|
+ idInfoArr = append(idInfoArr, util.Data{
|
|
|
|
+ ID: id,
|
|
|
|
+ Info: tmp,
|
|
|
|
+ })
|
|
|
|
+ //idInfoMap[id] = tmp
|
|
}
|
|
}
|
|
- importDataNum = len(idInfoMap)
|
|
|
|
|
|
+ importDataNum = len(idInfoArr)
|
|
qu.Debug("Load Excel Count:", importDataNum)
|
|
qu.Debug("Load Excel Count:", importDataNum)
|
|
if importDataNum > 0 {
|
|
if importDataNum > 0 {
|
|
- GetDataById(idInfoMap, "excel", s_sourceinfo, success, msg, successNum)
|
|
|
|
|
|
+ GetDataById(idInfoArr, "excel", s_sourceinfo, success, msg, successNum)
|
|
} else {
|
|
} else {
|
|
*success = false
|
|
*success = false
|
|
*msg = "查询数据失败"
|
|
*msg = "查询数据失败"
|
|
}
|
|
}
|
|
- idInfoMap = map[string]map[string]interface{}{}
|
|
|
|
|
|
+ idInfoArr = []util.Data{}
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
@@ -894,7 +894,7 @@ func ImportDataByColl(s_sourceinfo, historyid string, success *bool, msg *string
|
|
ch := make(chan bool, 3)
|
|
ch := make(chan bool, 3)
|
|
wg := &sync.WaitGroup{}
|
|
wg := &sync.WaitGroup{}
|
|
lock := &sync.Mutex{}
|
|
lock := &sync.Mutex{}
|
|
- idInfoMap := map[string]map[string]interface{}{} //记录数据id及需要保存的字段信息
|
|
|
|
|
|
+ idInfoArr := []util.Data{} //记录数据id及需要保存的字段信息
|
|
query := map[string]interface{}{
|
|
query := map[string]interface{}{
|
|
"historyId": historyid,
|
|
"historyId": historyid,
|
|
}
|
|
}
|
|
@@ -927,7 +927,11 @@ func ImportDataByColl(s_sourceinfo, historyid string, success *bool, msg *string
|
|
rulenameMap[r] = true
|
|
rulenameMap[r] = true
|
|
}
|
|
}
|
|
//rulename = append(rulename, qu.ObjToString(tmp["rulename"])) //规则名称
|
|
//rulename = append(rulename, qu.ObjToString(tmp["rulename"])) //规则名称
|
|
- idInfoMap[id] = needField
|
|
|
|
|
|
+ //idInfoMap[id] = needField
|
|
|
|
+ idInfoArr = append(idInfoArr, util.Data{
|
|
|
|
+ ID: id,
|
|
|
|
+ Info: needField,
|
|
|
|
+ })
|
|
lock.Unlock()
|
|
lock.Unlock()
|
|
}(tmp)
|
|
}(tmp)
|
|
if n%100 == 0 {
|
|
if n%100 == 0 {
|
|
@@ -939,28 +943,32 @@ func ImportDataByColl(s_sourceinfo, historyid string, success *bool, msg *string
|
|
for r, _ := range rulenameMap {
|
|
for r, _ := range rulenameMap {
|
|
rulename = append(rulename, r)
|
|
rulename = append(rulename, r)
|
|
}
|
|
}
|
|
- importDataNum = len(idInfoMap) //查询数据总数
|
|
|
|
|
|
+ importDataNum = len(idInfoArr) //查询数据总数
|
|
if importDataNum > 0 {
|
|
if importDataNum > 0 {
|
|
- GetDataById(idInfoMap, "coll", s_sourceinfo, success, msg, successNum)
|
|
|
|
|
|
+ GetDataById(idInfoArr, "coll", s_sourceinfo, success, msg, successNum)
|
|
} else {
|
|
} else {
|
|
*msg = "查询数据失败"
|
|
*msg = "查询数据失败"
|
|
}
|
|
}
|
|
- idInfoMap = map[string]map[string]interface{}{}
|
|
|
|
|
|
+ idInfoArr = []util.Data{}
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
//GetDataById 通过id集从bidding、extract、project获取数据所有信息
|
|
//GetDataById 通过id集从bidding、extract、project获取数据所有信息
|
|
-func GetDataById(idsInfo map[string]map[string]interface{}, importType, s_sourceinfo string, success *bool, msg *string, successNum *int64) {
|
|
|
|
|
|
+func GetDataById(idInfoArr []util.Data, importType, s_sourceinfo string, success *bool, msg *string, successNum *int64) {
|
|
*success = true
|
|
*success = true
|
|
var msgArr []string
|
|
var msgArr []string
|
|
wg := &sync.WaitGroup{}
|
|
wg := &sync.WaitGroup{}
|
|
lock := &sync.Mutex{}
|
|
lock := &sync.Mutex{}
|
|
ch := make(chan bool, 10)
|
|
ch := make(chan bool, 10)
|
|
- num := int64(0) //计数
|
|
|
|
- for id, info := range idsInfo {
|
|
|
|
|
|
+ //num := int64(0) //计数
|
|
|
|
+ if !util.Mgo.CreateIndex(s_sourceinfo, util.SourceInfoIndexArr) { //创建数据源表同时生成字段索引
|
|
|
|
+ qu.Debug("创建数据源表:", s_sourceinfo, "失败")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ for i, data := range idInfoArr {
|
|
wg.Add(1)
|
|
wg.Add(1)
|
|
ch <- true
|
|
ch <- true
|
|
- go func(id string, tmp map[string]interface{}) {
|
|
|
|
|
|
+ func(index int, tmpData util.Data) {
|
|
defer func() {
|
|
defer func() {
|
|
wg.Done()
|
|
wg.Done()
|
|
<-ch
|
|
<-ch
|
|
@@ -976,6 +984,8 @@ func GetDataById(idsInfo map[string]map[string]interface{}, importType, s_source
|
|
*/
|
|
*/
|
|
tagInfoMap := map[string]interface{}{} //记录数据已标注过的信息
|
|
tagInfoMap := map[string]interface{}{} //记录数据已标注过的信息
|
|
baseInfoMap := map[string]interface{}{} //记录其他信息
|
|
baseInfoMap := map[string]interface{}{} //记录其他信息
|
|
|
|
+ id := tmpData.ID
|
|
|
|
+ tmp := tmpData.Info
|
|
//1.查bidding
|
|
//1.查bidding
|
|
tmpBidColl := util.BidColl1 //bidding
|
|
tmpBidColl := util.BidColl1 //bidding
|
|
//查询bidding
|
|
//查询bidding
|
|
@@ -1115,7 +1125,7 @@ func GetDataById(idsInfo map[string]map[string]interface{}, importType, s_source
|
|
lock.Lock()
|
|
lock.Lock()
|
|
*success = false
|
|
*success = false
|
|
if importType == "excel" {
|
|
if importType == "excel" {
|
|
- msgArr = append(msgArr, "第"+fmt.Sprint(num+2)+"行未导入id:"+id)
|
|
|
|
|
|
+ msgArr = append(msgArr, "第"+fmt.Sprint(index+2)+"行未导入id:"+id)
|
|
//*msg += "第" + fmt.Sprint(num+2) + "行未保存成功数据_id:" + id + ";\n"
|
|
//*msg += "第" + fmt.Sprint(num+2) + "行未保存成功数据_id:" + id + ";\n"
|
|
} else {
|
|
} else {
|
|
msgArr = append(msgArr, "未导入id:"+id)
|
|
msgArr = append(msgArr, "未导入id:"+id)
|
|
@@ -1127,7 +1137,7 @@ func GetDataById(idsInfo map[string]map[string]interface{}, importType, s_source
|
|
lock.Lock()
|
|
lock.Lock()
|
|
*success = false
|
|
*success = false
|
|
if importType == "excel" {
|
|
if importType == "excel" {
|
|
- msgArr = append(msgArr, "第"+fmt.Sprint(num+2)+"行未查询id:"+id)
|
|
|
|
|
|
+ msgArr = append(msgArr, "第"+fmt.Sprint(index+2)+"行未查询id:"+id)
|
|
//*msg += "第" + fmt.Sprint(num+2) + "行未查询到数据:" + id + ";\n"
|
|
//*msg += "第" + fmt.Sprint(num+2) + "行未查询到数据:" + id + ";\n"
|
|
} else {
|
|
} else {
|
|
msgArr = append(msgArr, "未查询id:"+id)
|
|
msgArr = append(msgArr, "未查询id:"+id)
|
|
@@ -1135,11 +1145,12 @@ func GetDataById(idsInfo map[string]map[string]interface{}, importType, s_source
|
|
}
|
|
}
|
|
lock.Unlock()
|
|
lock.Unlock()
|
|
}
|
|
}
|
|
- }(id, info)
|
|
|
|
|
|
+ }(i, data)
|
|
}
|
|
}
|
|
wg.Wait()
|
|
wg.Wait()
|
|
sort.Strings(msgArr)
|
|
sort.Strings(msgArr)
|
|
- *msg = strings.Join(msgArr, ";\n")
|
|
|
|
|
|
+ *msg = strings.Join(msgArr, ";<br>")
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
// UpdateMarkColl 更新数据
|
|
// UpdateMarkColl 更新数据
|