|
@@ -98,18 +98,17 @@ func (f *Front) ProjectSave() {
|
|
|
}
|
|
|
//保存项目信息
|
|
|
set = map[string]interface{}{
|
|
|
- "s_name": s_name, //项目名称
|
|
|
- "s_entname": s_entname, //公司名称
|
|
|
- "s_departname": s_departname, //部门名称
|
|
|
- "s_rulename": strings.Join(s_rulename, ","), //规则名称
|
|
|
- "i_importnum": importDataNum, //导入数量
|
|
|
- "s_sourceinfo": s_sourceinfo, //源数据表
|
|
|
- "s_sourcetaskinfo": "s_sourcetaskinfo_" + s_sourceinfoTmp, //源数据表
|
|
|
- "s_createname": username, //创建人
|
|
|
- "s_status": "未开始", //项目状态
|
|
|
- "i_createtime": time.Now().Unix(), //创建时间
|
|
|
- "s_importtype": "excel", //导入类型
|
|
|
- "b_isassessment": false, //是否进行了质量评估
|
|
|
+ "s_name": s_name, //项目名称
|
|
|
+ "s_entname": s_entname, //公司名称
|
|
|
+ "s_departname": s_departname, //部门名称
|
|
|
+ "s_rulename": strings.Join(s_rulename, ","), //规则名称
|
|
|
+ "i_importnum": importDataNum, //导入数量
|
|
|
+ "s_sourceinfo": s_sourceinfo, //源数据表
|
|
|
+ "s_createname": username, //创建人
|
|
|
+ "s_status": "未开始", //项目状态
|
|
|
+ "i_createtime": time.Now().Unix(), //创建时间
|
|
|
+ "s_importtype": "excel", //导入类型
|
|
|
+ "b_isassessment": false, //是否进行了质量评估
|
|
|
}
|
|
|
} else if stype == "coll" { //数据库导入
|
|
|
historyid := f.GetString("s_historyid")
|
|
@@ -121,19 +120,18 @@ func (f *Front) ProjectSave() {
|
|
|
qu.Debug(s_departname, s_entname, s_rulename, importDataNum)
|
|
|
//保存项目信息
|
|
|
set = map[string]interface{}{
|
|
|
- "s_name": s_name, //项目名称
|
|
|
- "s_entname": s_entname, //公司名称
|
|
|
- "s_departname": s_departname, //部门名称
|
|
|
- "s_rulename": strings.Join(s_rulename, ","), //规则名称
|
|
|
- "i_importnum": importDataNum, //导入数量
|
|
|
- "s_sourceinfo": s_sourceinfo, //源数据表
|
|
|
- "s_sourcetaskinfo": "s_sourcetaskinfo_" + s_sourceinfoTmp, //源数据表
|
|
|
- "s_createname": username, //创建人
|
|
|
- "s_status": "未开始", //项目状态
|
|
|
- "i_createtime": time.Now().Unix(), //创建时间
|
|
|
- "s_importtype": "coll", //导入类型
|
|
|
- "s_historyid": historyid, //源数据集标识
|
|
|
- "b_isassessment": false, //是否进行了质量评估
|
|
|
+ "s_name": s_name, //项目名称
|
|
|
+ "s_entname": s_entname, //公司名称
|
|
|
+ "s_departname": s_departname, //部门名称
|
|
|
+ "s_rulename": strings.Join(s_rulename, ","), //规则名称
|
|
|
+ "i_importnum": importDataNum, //导入数量
|
|
|
+ "s_sourceinfo": s_sourceinfo, //源数据表
|
|
|
+ "s_createname": username, //创建人
|
|
|
+ "s_status": "未开始", //项目状态
|
|
|
+ "i_createtime": time.Now().Unix(), //创建时间
|
|
|
+ "s_importtype": "coll", //导入类型
|
|
|
+ "s_historyid": historyid, //源数据集标识
|
|
|
+ "b_isassessment": false, //是否进行了质量评估
|
|
|
}
|
|
|
} else if stype == "edit" { //编辑保存
|
|
|
success = true
|
|
@@ -262,8 +260,7 @@ func (f *Front) ProjectTaskList() {
|
|
|
} else {
|
|
|
project, _ := util.Mgo.FindById(util.PROJECTCOLLNAME, projectid, map[string]interface{}{"s_sourceinfo": 1})
|
|
|
if project != nil && len(*project) > 0 {
|
|
|
- sourceinfo := qu.ObjToString((*project)["s_sourceinfo"]) //数据源表
|
|
|
- qu.Debug(sourceinfo)
|
|
|
+ sourceinfo := qu.ObjToString((*project)["s_sourceinfo"]) //数据源表
|
|
|
okAllDataNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"b_istagging": false}) //达标数据总量
|
|
|
okIsGiveDataNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"b_istagging": false, "b_isgivegroup": true}) //达标数据已分发量
|
|
|
okNotGiveDataNum := okAllDataNum - okIsGiveDataNum //达标待分发量
|
|
@@ -317,13 +314,12 @@ func (f *Front) ProjectTaskSave() {
|
|
|
username := qu.ObjToString(user["s_login"]) //当前登录用户
|
|
|
projectid := f.GetString("s_projectid") //项目标识
|
|
|
project, _ := util.Mgo.FindById(util.PROJECTCOLLNAME, projectid, nil)
|
|
|
- projectname := qu.ObjToString((*project)["s_name"]) //项目名称
|
|
|
- sourceinfo := qu.ObjToString((*project)["s_sourceinfo"]) //源数据表
|
|
|
- sourcetaskinfo := qu.ObjToString((*project)["s_sourcetaskinfo"]) //任务日志表
|
|
|
+ projectname := qu.ObjToString((*project)["s_name"]) //项目名称
|
|
|
+ sourceinfo := qu.ObjToString((*project)["s_sourceinfo"]) //源数据表
|
|
|
group := f.GetString("s_group")
|
|
|
qu.Debug(group)
|
|
|
stype := f.GetString("s_type")
|
|
|
- qu.Debug("项目id:", projectid, " 项目名称:", projectname, "sourcetaskinfo:", sourcetaskinfo)
|
|
|
+ qu.Debug("项目id:", projectid, " 项目名称:", projectname)
|
|
|
if err := json.Unmarshal([]byte(group), &groupArr); err != nil {
|
|
|
qu.Debug("GroupInfo Unmarshal Failed:", err)
|
|
|
msg = "用户组信息解析失败"
|
|
@@ -345,24 +341,23 @@ func (f *Front) ProjectTaskSave() {
|
|
|
}
|
|
|
groupIdTask[groupTaskIdStr] = gt
|
|
|
groupTask := map[string]interface{}{
|
|
|
- "_id": groupTaskId, //生成任务id
|
|
|
- "s_projectid": projectid, //项目标识
|
|
|
- "s_projectname": projectname, //项目名称
|
|
|
- "s_status": "未开始", //任务状态
|
|
|
- "s_personid": qu.ObjToString(groupInfo["s_personid"]), //任务负责人标识
|
|
|
- "s_personname": qu.ObjToString(groupInfo["s_personname"]), //任务负责人
|
|
|
- "s_groupname": qu.ObjToString(groupInfo["s_groupname"]), //用户组名称
|
|
|
- "s_groupid": groupId, //用户组标识
|
|
|
- "i_givenum": givenum, //分发数据量
|
|
|
- "s_createname": username, //创建人
|
|
|
- "i_createtime": time.Now().Unix(), //创建时间
|
|
|
- "s_progress": "0%", //完成进度
|
|
|
- "s_sourceinfo": sourceinfo, //源数据表
|
|
|
- "s_sourcetaskinfo": sourcetaskinfo, //任务日志表
|
|
|
- "s_stype": "group", //任务类型
|
|
|
- "s_entname": qu.ObjToString((*project)["s_entname"]), //公司名称
|
|
|
- "s_departname": qu.ObjToString((*project)["s_departname"]), //部门名称
|
|
|
- "s_rulename": qu.ObjToString((*project)["s_rulename"]), //规则名称
|
|
|
+ "_id": groupTaskId, //生成任务id
|
|
|
+ "s_projectid": projectid, //项目标识
|
|
|
+ "s_projectname": projectname, //项目名称
|
|
|
+ "s_status": "未开始", //任务状态
|
|
|
+ "s_personid": qu.ObjToString(groupInfo["s_personid"]), //任务负责人标识
|
|
|
+ "s_personname": qu.ObjToString(groupInfo["s_personname"]), //任务负责人
|
|
|
+ "s_groupname": qu.ObjToString(groupInfo["s_groupname"]), //用户组名称
|
|
|
+ "s_groupid": groupId, //用户组标识
|
|
|
+ "i_givenum": givenum, //分发数据量
|
|
|
+ "s_createname": username, //创建人
|
|
|
+ "i_createtime": time.Now().Unix(), //创建时间
|
|
|
+ "s_progress": "0%", //完成进度
|
|
|
+ "s_sourceinfo": sourceinfo, //源数据表
|
|
|
+ "s_stype": "group", //任务类型
|
|
|
+ "s_entname": qu.ObjToString((*project)["s_entname"]), //公司名称
|
|
|
+ "s_departname": qu.ObjToString((*project)["s_departname"]), //部门名称
|
|
|
+ "s_rulename": qu.ObjToString((*project)["s_rulename"]), //规则名称
|
|
|
}
|
|
|
taskArr = append(taskArr, groupTask)
|
|
|
}
|
|
@@ -385,7 +380,7 @@ func (f *Front) ProjectTaskSave() {
|
|
|
success = util.Mgo.SaveBulk(util.TASKCOLLNAME, taskArr...)
|
|
|
if success {
|
|
|
msg = "任务分发成功"
|
|
|
- UpdateSourceinfo(sourceinfo, sourcetaskinfo, stype, groupIdTask) //用户组分发任务成功后,给数据源打上用户组标识,同时生成任务临时表
|
|
|
+ UpdateSourceinfo(sourceinfo, stype, groupIdTask) //用户组分发任务成功后,给数据源打上用户组标识,同时生成任务临时表
|
|
|
} else {
|
|
|
msg = "任务分发失败"
|
|
|
}
|
|
@@ -647,8 +642,8 @@ func DeleleDataTagInfo(sourceinfo string) {
|
|
|
lock.Unlock()
|
|
|
}
|
|
|
|
|
|
-// UpdateSourceinfo 用户组分发任务成功后,给数据源打上用户组标识,同时生成任务临时表
|
|
|
-func UpdateSourceinfo(sourceinfo, sourcetaskinfo, stype string, groupIdInfo map[string]util.Task) {
|
|
|
+// UpdateSourceinfo 用户组分发任务成功后,给数据源打上用户组标识
|
|
|
+func UpdateSourceinfo(sourceinfo, stype string, groupIdInfo map[string]util.Task) {
|
|
|
defer qu.Catch()
|
|
|
for groupTaskId, tInfo := range groupIdInfo {
|
|
|
groupId := tInfo.UserId
|
|
@@ -669,7 +664,6 @@ func UpdateSourceinfo(sourceinfo, sourcetaskinfo, stype string, groupIdInfo map[
|
|
|
fields := map[string]interface{}{
|
|
|
"v_baseinfo": 1,
|
|
|
}
|
|
|
- saveArr := []map[string]interface{}{}
|
|
|
updateArr := [][]map[string]interface{}{}
|
|
|
qu.Debug("Query:", query)
|
|
|
it := sess.DB(util.Mgo.DbName).C(sourceinfo).Find(&query).Select(&fields).Limit(int64(num)).Iter()
|
|
@@ -682,40 +676,23 @@ func UpdateSourceinfo(sourceinfo, sourcetaskinfo, stype string, groupIdInfo map[
|
|
|
<-ch
|
|
|
wg.Done()
|
|
|
}()
|
|
|
- id := mongodb.BsonIdToSId(tmp["_id"])
|
|
|
- title := ""
|
|
|
- if baseinfo, ok := tmp["v_baseinfo"].(map[string]interface{}); ok {
|
|
|
- title = qu.ObjToString(baseinfo["title"])
|
|
|
- }
|
|
|
update := []map[string]interface{}{}
|
|
|
update = append(update, map[string]interface{}{"_id": tmp["_id"]})
|
|
|
update = append(update, map[string]interface{}{
|
|
|
"$set": map[string]interface{}{
|
|
|
"s_groupid": groupId,
|
|
|
+ "s_grouptaskid": groupTaskId,
|
|
|
"b_isgivegroup": true,
|
|
|
"i_updatetime": time.Now().Unix(),
|
|
|
},
|
|
|
})
|
|
|
- save := map[string]interface{}{
|
|
|
- "s_infoid": id,
|
|
|
- "s_infotitle": title,
|
|
|
- "s_groupid": groupId,
|
|
|
- "i_createtime": time.Now().Unix(),
|
|
|
- "b_iscomplete": false,
|
|
|
- "s_grouptaskid": groupTaskId,
|
|
|
- "b_isgiveuser": false,
|
|
|
- }
|
|
|
lock.Lock()
|
|
|
updateArr = append(updateArr, update)
|
|
|
- saveArr = append(saveArr, save)
|
|
|
+ //saveArr = append(saveArr, save)
|
|
|
if len(updateArr) > 500 {
|
|
|
util.Mgo.UpdateBulk(sourceinfo, updateArr...)
|
|
|
updateArr = [][]map[string]interface{}{}
|
|
|
}
|
|
|
- if len(saveArr) > 500 {
|
|
|
- util.Mgo.SaveBulk(sourcetaskinfo, saveArr...)
|
|
|
- saveArr = []map[string]interface{}{}
|
|
|
- }
|
|
|
lock.Unlock()
|
|
|
}(tmp)
|
|
|
if n%100 == 0 {
|
|
@@ -729,10 +706,6 @@ func UpdateSourceinfo(sourceinfo, sourcetaskinfo, stype string, groupIdInfo map[
|
|
|
util.Mgo.UpdateBulk(sourceinfo, updateArr...)
|
|
|
updateArr = [][]map[string]interface{}{}
|
|
|
}
|
|
|
- if len(saveArr) > 0 {
|
|
|
- util.Mgo.SaveBulk(sourcetaskinfo, saveArr...)
|
|
|
- saveArr = []map[string]interface{}{}
|
|
|
- }
|
|
|
lock.Unlock()
|
|
|
}
|
|
|
}
|
|
@@ -1013,10 +986,10 @@ func GetDataById(idsInfo map[string]map[string]interface{}, importType, s_source
|
|
|
baseInfoMap["v_taginfo"] = tagInfoMap
|
|
|
}
|
|
|
baseInfoMap["i_createtime"] = time.Now().Unix()
|
|
|
- baseInfoMap["b_isgivegroup"] = false //是否分配
|
|
|
+ baseInfoMap["b_isgivegroup"] = false //是否分配给用户组
|
|
|
baseInfoMap["b_istag"] = false //是否已标注
|
|
|
baseInfoMap["b_cleartag"] = false //是否清理标注信息
|
|
|
-
|
|
|
+ baseInfoMap["b_isgiveuser"] = false //是否分配给用户
|
|
|
if util.Mgo.SaveByOriID(s_sourceinfo, baseInfoMap) {
|
|
|
atomic.AddInt64(successNum, 1) //保存成功计数
|
|
|
} else {
|