|
@@ -3,6 +3,7 @@ package marketAnalysis
|
|
import (
|
|
import (
|
|
. "app.yhyue.com/moapp/jybase/api"
|
|
. "app.yhyue.com/moapp/jybase/api"
|
|
qutil "app.yhyue.com/moapp/jybase/common"
|
|
qutil "app.yhyue.com/moapp/jybase/common"
|
|
|
|
+ elastic "app.yhyue.com/moapp/jybase/es"
|
|
"app.yhyue.com/moapp/jybase/go-xweb/httpsession"
|
|
"app.yhyue.com/moapp/jybase/go-xweb/httpsession"
|
|
"app.yhyue.com/moapp/jybase/go-xweb/xweb"
|
|
"app.yhyue.com/moapp/jybase/go-xweb/xweb"
|
|
"app.yhyue.com/moapp/jybase/mongodb"
|
|
"app.yhyue.com/moapp/jybase/mongodb"
|
|
@@ -59,33 +60,85 @@ func (this *AnalysisReportPdf) GetPdfDetail() {
|
|
log.Println("非白名单ip", requestIp)
|
|
log.Println("非白名单ip", requestIp)
|
|
return nil, fmt.Errorf("非法请求")
|
|
return nil, fmt.Errorf("非法请求")
|
|
}
|
|
}
|
|
|
|
+ rMap := make(map[string]interface{})
|
|
|
|
+ getQueryMap, timeRangeMap, t_err := func() (map[string]interface{}, map[string]int64, error) {
|
|
|
|
+ switch this.GetString("source") {
|
|
|
|
+ case "luago":
|
|
|
|
+ if entId := this.GetString("entId"); entId != "" {
|
|
|
|
+ ty := this.GetString("type")
|
|
|
|
+ if ty == "2" {
|
|
|
|
+ //lua变动信息获取
|
|
|
|
+ cepm := &entity.EntFollow{
|
|
|
|
+ HasPower: true,
|
|
|
|
+ }
|
|
|
|
+ entInfo, _, err := cepm.GetEntChangeList(entId, qutil.IntAll(this.GetString("showPart")))
|
|
|
|
+ if err == nil {
|
|
|
|
+ rMap["ent_change"] = entInfo
|
|
|
|
+ }
|
|
|
|
+ //lua通讯录获取
|
|
|
|
+ cepm1 := &entity.Portrait{}
|
|
|
|
+ entinfo, _ := db.Mgo_Ent.FindOneByField("qyxy_std", map[string]interface{}{"_id": entId}, map[string]interface{}{"company_name": 1})
|
|
|
|
+ if entinfo != nil {
|
|
|
|
+ rData, err := cepm1.GetContacts(qutil.InterfaceToStr((*entinfo)["company_name"]), 1)
|
|
|
|
+ if err == nil {
|
|
|
|
+ rMap["ent_contacts"] = rData
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return map[string]interface{}{
|
|
|
|
+ "type": 1,
|
|
|
|
+ "ent": entId,
|
|
|
|
+ }, nil, nil
|
|
|
|
+ }
|
|
|
|
+ if buyerId := this.GetString("buyerId"); buyerId != "" {
|
|
|
|
+ //根据采购单位id查询采购单位名称
|
|
|
|
+ list := elastic.Get("buyer", "buyer", fmt.Sprintf(`{"query":{"bool":{"must":[{"term":{"id":"%s"}}]}},"size":1,"_source":["name"]}`, buyerId))
|
|
|
|
+ if list == nil || len(*list) == 0 {
|
|
|
|
+ return nil, nil, fmt.Errorf("未知采购单位")
|
|
|
|
+ }
|
|
|
|
+ return map[string]interface{}{
|
|
|
|
+ "type": 2,
|
|
|
|
+ "ent": gconv.String((*list)[0]["name"]),
|
|
|
|
+ }, nil, nil
|
|
|
|
+ }
|
|
|
|
+ return nil, nil, fmt.Errorf("请求参数异常")
|
|
|
|
+ default: //pdf下载,需要从
|
|
|
|
+ var (
|
|
|
|
+ rid = this.GetString("sid") //pdf下载包获取数据信息
|
|
|
|
+ timeRangeMap = make(map[string]int64)
|
|
|
|
+ )
|
|
|
|
+ if rid == "" {
|
|
|
|
+ return nil, nil, fmt.Errorf("缺少参数")
|
|
|
|
+ }
|
|
|
|
+ if !mongodb.IsObjectIdHex(rid) {
|
|
|
|
+ rid = util.DecodeId(rid)
|
|
|
|
+ }
|
|
|
|
+ rData, _ := db.Mgo.FindById(MgoPdfName, rid, nil)
|
|
|
|
+ if rData == nil || len(*rData) == 0 {
|
|
|
|
+ return nil, nil, fmt.Errorf("未获取数据")
|
|
|
|
+ }
|
|
|
|
+ var (
|
|
|
|
+ timeRange = gconv.String((*rData)["timeRange"])
|
|
|
|
+ timeRangeArr = strings.Split(timeRange, "_")
|
|
|
|
+ )
|
|
|
|
|
|
- rid := this.GetString("sid") //获取信息id
|
|
|
|
- if rid == "" {
|
|
|
|
- return nil, fmt.Errorf("缺少参数")
|
|
|
|
- }
|
|
|
|
- if !mongodb.IsObjectIdHex(rid) {
|
|
|
|
- rid = util.DecodeId(rid)
|
|
|
|
- }
|
|
|
|
- rData, _ := db.Mgo.FindById(MgoPdfName, rid, nil)
|
|
|
|
- if rData == nil || len(*rData) == 0 {
|
|
|
|
- log.Println("rid==", rid)
|
|
|
|
- return nil, fmt.Errorf("未获取数据")
|
|
|
|
- }
|
|
|
|
- timeRangeMap := make(map[string]int64)
|
|
|
|
- timeRange := gconv.String((*rData)["timeRange"])
|
|
|
|
- timeRangeArr := strings.Split(timeRange, "_")
|
|
|
|
- if len(timeRangeArr) == 2 {
|
|
|
|
- start, _ := time.Parse(time.DateOnly, timeRangeArr[0])
|
|
|
|
- end, _ := time.Parse(time.DateOnly, timeRangeArr[1])
|
|
|
|
- timeRangeMap["start"] = start.Unix()
|
|
|
|
- timeRangeMap["end"] = end.Unix()
|
|
|
|
|
|
+ if len(timeRangeArr) == 2 {
|
|
|
|
+ start, _ := time.Parse(time.DateOnly, timeRangeArr[0])
|
|
|
|
+ end, _ := time.Parse(time.DateOnly, timeRangeArr[1])
|
|
|
|
+ timeRangeMap["start"] = start.Unix()
|
|
|
|
+ timeRangeMap["end"] = end.Unix()
|
|
|
|
+ }
|
|
|
|
+ return *rData, timeRangeMap, nil
|
|
|
|
+ }
|
|
|
|
+ }()
|
|
|
|
+ if t_err != nil {
|
|
|
|
+ return nil, t_err
|
|
}
|
|
}
|
|
- rMap := make(map[string]interface{})
|
|
|
|
|
|
+
|
|
wait := &sync.WaitGroup{}
|
|
wait := &sync.WaitGroup{}
|
|
var lock sync.Mutex
|
|
var lock sync.Mutex
|
|
var err error
|
|
var err error
|
|
- switch qutil.InterfaceToStr((*rData)["type"]) {
|
|
|
|
|
|
+ switch qutil.InterfaceToStr(getQueryMap["type"]) {
|
|
case "3":
|
|
case "3":
|
|
wait.Add(2)
|
|
wait.Add(2)
|
|
pid, _, _ := CheckPowerEquity(this.Session())
|
|
pid, _, _ := CheckPowerEquity(this.Session())
|
|
@@ -93,7 +146,7 @@ func (this *AnalysisReportPdf) GetPdfDetail() {
|
|
userId := qutil.ObjToString(sessVal["userId"])
|
|
userId := qutil.ObjToString(sessVal["userId"])
|
|
go func() { //分析数据
|
|
go func() { //分析数据
|
|
wait.Done()
|
|
wait.Done()
|
|
- mae := &MarketAnalysisEntity{MgoRecordId: qutil.InterfaceToStr((*rData)["rid"]), UId: userId, Pid: pid, MgoUserId: qutil.ObjToString(sessVal["mgoUserId"]), PositionId: qutil.IntAll(sessVal["positionId"])}
|
|
|
|
|
|
+ mae := &MarketAnalysisEntity{MgoRecordId: qutil.InterfaceToStr(getQueryMap["rid"]), UId: userId, Pid: pid, MgoUserId: qutil.ObjToString(sessVal["mgoUserId"]), PositionId: qutil.IntAll(sessVal["positionId"])}
|
|
rDataMap, err := mae.GetPdfPageApi()
|
|
rDataMap, err := mae.GetPdfPageApi()
|
|
if err != nil {
|
|
if err != nil {
|
|
log.Println("GetPdfPageApi", err.Error())
|
|
log.Println("GetPdfPageApi", err.Error())
|
|
@@ -106,7 +159,7 @@ func (this *AnalysisReportPdf) GetPdfDetail() {
|
|
}()
|
|
}()
|
|
go func() { //项目明细
|
|
go func() { //项目明细
|
|
defer wait.Done()
|
|
defer wait.Done()
|
|
- mae := &MarketAnalysisEntity{MgoRecordId: qutil.InterfaceToStr((*rData)["rid"]), UId: userId, Pid: pid, MgoUserId: qutil.ObjToString(sessVal["mgoUserId"]), PositionId: qutil.IntAll(sessVal["positionId"])}
|
|
|
|
|
|
+ mae := &MarketAnalysisEntity{MgoRecordId: qutil.InterfaceToStr(getQueryMap["rid"]), UId: userId, Pid: pid, MgoUserId: qutil.ObjToString(sessVal["mgoUserId"]), PositionId: qutil.IntAll(sessVal["positionId"])}
|
|
err = mae.GetAnalysisFromMgoDb()
|
|
err = mae.GetAnalysisFromMgoDb()
|
|
if err != nil {
|
|
if err != nil {
|
|
log.Println("GetAnalysisFromMgoDb err", err.Error())
|
|
log.Println("GetAnalysisFromMgoDb err", err.Error())
|
|
@@ -125,21 +178,21 @@ func (this *AnalysisReportPdf) GetPdfDetail() {
|
|
lock.Unlock()
|
|
lock.Unlock()
|
|
}()
|
|
}()
|
|
wait.Wait()
|
|
wait.Wait()
|
|
- (*rData)["rid"] = util.EncodeId(qutil.InterfaceToStr((*rData)["rid"]))
|
|
|
|
|
|
+ getQueryMap["rid"] = util.EncodeId(qutil.InterfaceToStr(getQueryMap["rid"]))
|
|
case "2": //采购
|
|
case "2": //采购
|
|
wait.Add(2)
|
|
wait.Add(2)
|
|
go func() { //分析数据
|
|
go func() { //分析数据
|
|
defer wait.Done()
|
|
defer wait.Done()
|
|
cepm := &entity.Portrait{}
|
|
cepm := &entity.Portrait{}
|
|
- cepm.UserId = qutil.InterfaceToStr((*rData)["user_id"])
|
|
|
|
|
|
+ cepm.UserId = qutil.InterfaceToStr(getQueryMap["user_id"])
|
|
rDataMap, err := cepm.BuyerPortraitData(&entity.PortraitScreen{
|
|
rDataMap, err := cepm.BuyerPortraitData(&entity.PortraitScreen{
|
|
- Ent: qutil.InterfaceToStr((*rData)["ent"]),
|
|
|
|
- Match: qutil.InterfaceToStr((*rData)["match"]),
|
|
|
|
- ExactMatch: qutil.InterfaceToStr((*rData)["exactMatch"]) == "1",
|
|
|
|
- MatchRange: qutil.InterfaceToStr((*rData)["matchRange"]),
|
|
|
|
- Area: qutil.InterfaceToStr((*rData)["area"]),
|
|
|
|
- ScopeClass: qutil.InterfaceToStr((*rData)["scopeClass"]),
|
|
|
|
- TimeRange: qutil.InterfaceToStr((*rData)["timeRange"]),
|
|
|
|
|
|
+ Ent: qutil.InterfaceToStr(getQueryMap["ent"]),
|
|
|
|
+ Match: qutil.InterfaceToStr(getQueryMap["match"]),
|
|
|
|
+ ExactMatch: qutil.InterfaceToStr(getQueryMap["exactMatch"]) == "1",
|
|
|
|
+ MatchRange: qutil.InterfaceToStr(getQueryMap["matchRange"]),
|
|
|
|
+ Area: qutil.InterfaceToStr(getQueryMap["area"]),
|
|
|
|
+ ScopeClass: qutil.InterfaceToStr(getQueryMap["scopeClass"]),
|
|
|
|
+ TimeRange: qutil.InterfaceToStr(getQueryMap["timeRange"]),
|
|
HasPower: true,
|
|
HasPower: true,
|
|
UserLevel: 1,
|
|
UserLevel: 1,
|
|
}, "")
|
|
}, "")
|
|
@@ -155,16 +208,16 @@ func (this *AnalysisReportPdf) GetPdfDetail() {
|
|
go func() { //项目明细
|
|
go func() { //项目明细
|
|
defer wait.Done()
|
|
defer wait.Done()
|
|
cepm := &entity.Portrait{}
|
|
cepm := &entity.Portrait{}
|
|
- cepm.UserId = qutil.InterfaceToStr((*rData)["user_id"])
|
|
|
|
|
|
+ cepm.UserId = qutil.InterfaceToStr(getQueryMap["user_id"])
|
|
rDataMap, count, _, err := cepm.GetBuyerNewMsg(&entity.PortraitProjectScreen{
|
|
rDataMap, count, _, err := cepm.GetBuyerNewMsg(&entity.PortraitProjectScreen{
|
|
Screen: &entity.PortraitScreen{
|
|
Screen: &entity.PortraitScreen{
|
|
- Ent: qutil.InterfaceToStr((*rData)["ent"]),
|
|
|
|
- Match: qutil.InterfaceToStr((*rData)["match"]),
|
|
|
|
- ExactMatch: qutil.InterfaceToStr((*rData)["exactMatch"]) == "1",
|
|
|
|
- MatchRange: qutil.InterfaceToStr((*rData)["matchRange"]),
|
|
|
|
- Area: qutil.InterfaceToStr((*rData)["area"]),
|
|
|
|
- ScopeClass: qutil.InterfaceToStr((*rData)["scopeClass"]),
|
|
|
|
- TimeRange: qutil.InterfaceToStr((*rData)["timeRange"]),
|
|
|
|
|
|
+ Ent: qutil.InterfaceToStr(getQueryMap["ent"]),
|
|
|
|
+ Match: qutil.InterfaceToStr(getQueryMap["match"]),
|
|
|
|
+ ExactMatch: qutil.InterfaceToStr(getQueryMap["exactMatch"]) == "1",
|
|
|
|
+ MatchRange: qutil.InterfaceToStr(getQueryMap["matchRange"]),
|
|
|
|
+ Area: qutil.InterfaceToStr(getQueryMap["area"]),
|
|
|
|
+ ScopeClass: qutil.InterfaceToStr(getQueryMap["scopeClass"]),
|
|
|
|
+ TimeRange: qutil.InterfaceToStr(getQueryMap["timeRange"]),
|
|
HasPower: true,
|
|
HasPower: true,
|
|
},
|
|
},
|
|
Free: false,
|
|
Free: false,
|
|
@@ -186,17 +239,17 @@ func (this *AnalysisReportPdf) GetPdfDetail() {
|
|
go func() { //分析数据
|
|
go func() { //分析数据
|
|
defer wait.Done()
|
|
defer wait.Done()
|
|
cepm := &entity.Portrait{}
|
|
cepm := &entity.Portrait{}
|
|
- cepm.UserId = qutil.InterfaceToStr((*rData)["user_id"])
|
|
|
|
|
|
+ cepm.UserId = qutil.InterfaceToStr(getQueryMap["user_id"])
|
|
rDataMap, err := cepm.WinnerPortraitData(&entity.PortraitScreen{
|
|
rDataMap, err := cepm.WinnerPortraitData(&entity.PortraitScreen{
|
|
- Ent: qutil.InterfaceToStr((*rData)["ent"]),
|
|
|
|
- Match: qutil.InterfaceToStr((*rData)["match"]),
|
|
|
|
- ExactMatch: qutil.InterfaceToStr((*rData)["exactMatch"]) == "1",
|
|
|
|
- MatchRange: qutil.InterfaceToStr((*rData)["matchRange"]),
|
|
|
|
- Area: qutil.InterfaceToStr((*rData)["area"]),
|
|
|
|
- ScopeClass: qutil.InterfaceToStr((*rData)["scopeClass"]),
|
|
|
|
- TimeRange: qutil.InterfaceToStr((*rData)["timeRange"]),
|
|
|
|
|
|
+ Ent: qutil.InterfaceToStr(getQueryMap["ent"]),
|
|
|
|
+ Match: qutil.InterfaceToStr(getQueryMap["match"]),
|
|
|
|
+ ExactMatch: qutil.InterfaceToStr(getQueryMap["exactMatch"]) == "1",
|
|
|
|
+ MatchRange: qutil.InterfaceToStr(getQueryMap["matchRange"]),
|
|
|
|
+ Area: qutil.InterfaceToStr(getQueryMap["area"]),
|
|
|
|
+ ScopeClass: qutil.InterfaceToStr(getQueryMap["scopeClass"]),
|
|
|
|
+ TimeRange: qutil.InterfaceToStr(getQueryMap["timeRange"]),
|
|
HasPower: true,
|
|
HasPower: true,
|
|
- BuyerClass: qutil.InterfaceToStr((*rData)["s_buyerClass"]),
|
|
|
|
|
|
+ BuyerClass: qutil.InterfaceToStr(getQueryMap["s_buyerClass"]),
|
|
})
|
|
})
|
|
if err != nil {
|
|
if err != nil {
|
|
log.Println("GetPdfDetail WinnerPortraitData===", err)
|
|
log.Println("GetPdfDetail WinnerPortraitData===", err)
|
|
@@ -210,18 +263,18 @@ func (this *AnalysisReportPdf) GetPdfDetail() {
|
|
go func() { //项目明细
|
|
go func() { //项目明细
|
|
defer wait.Done()
|
|
defer wait.Done()
|
|
cepm := &entity.Portrait{}
|
|
cepm := &entity.Portrait{}
|
|
- cepm.UserId = qutil.InterfaceToStr((*rData)["user_id"])
|
|
|
|
|
|
+ cepm.UserId = qutil.InterfaceToStr(getQueryMap["user_id"])
|
|
rDataMap, count, _, err := cepm.GetWinnerNewMsg(&entity.PortraitProjectScreen{
|
|
rDataMap, count, _, err := cepm.GetWinnerNewMsg(&entity.PortraitProjectScreen{
|
|
Screen: &entity.PortraitScreen{
|
|
Screen: &entity.PortraitScreen{
|
|
- Ent: qutil.InterfaceToStr((*rData)["ent"]),
|
|
|
|
- Match: qutil.InterfaceToStr((*rData)["match"]),
|
|
|
|
- ExactMatch: qutil.InterfaceToStr((*rData)["exactMatch"]) == "1",
|
|
|
|
- MatchRange: qutil.InterfaceToStr((*rData)["matchRange"]),
|
|
|
|
- Area: qutil.InterfaceToStr((*rData)["area"]),
|
|
|
|
- ScopeClass: qutil.InterfaceToStr((*rData)["scopeClass"]),
|
|
|
|
- TimeRange: qutil.InterfaceToStr((*rData)["timeRange"]),
|
|
|
|
|
|
+ Ent: qutil.InterfaceToStr(getQueryMap["ent"]),
|
|
|
|
+ Match: qutil.InterfaceToStr(getQueryMap["match"]),
|
|
|
|
+ ExactMatch: qutil.InterfaceToStr(getQueryMap["exactMatch"]) == "1",
|
|
|
|
+ MatchRange: qutil.InterfaceToStr(getQueryMap["matchRange"]),
|
|
|
|
+ Area: qutil.InterfaceToStr(getQueryMap["area"]),
|
|
|
|
+ ScopeClass: qutil.InterfaceToStr(getQueryMap["scopeClass"]),
|
|
|
|
+ TimeRange: qutil.InterfaceToStr(getQueryMap["timeRange"]),
|
|
HasPower: true,
|
|
HasPower: true,
|
|
- BuyerClass: qutil.InterfaceToStr((*rData)["s_buyerClass"]),
|
|
|
|
|
|
+ BuyerClass: qutil.InterfaceToStr(getQueryMap["s_buyerClass"]),
|
|
},
|
|
},
|
|
Free: false,
|
|
Free: false,
|
|
PageNum: 1,
|
|
PageNum: 1,
|
|
@@ -238,7 +291,7 @@ func (this *AnalysisReportPdf) GetPdfDetail() {
|
|
go func() {
|
|
go func() {
|
|
defer wait.Done()
|
|
defer wait.Done()
|
|
cepm := &entity.Portrait{}
|
|
cepm := &entity.Portrait{}
|
|
- entInfo, err := cepm.GetEntInfo(qutil.InterfaceToStr((*rData)["ent"]))
|
|
|
|
|
|
+ entInfo, err := cepm.GetEntInfo(qutil.InterfaceToStr(getQueryMap["ent"]))
|
|
if err == nil {
|
|
if err == nil {
|
|
lock.Lock()
|
|
lock.Lock()
|
|
rMap["entInfo"] = entInfo
|
|
rMap["entInfo"] = entInfo
|
|
@@ -248,9 +301,9 @@ func (this *AnalysisReportPdf) GetPdfDetail() {
|
|
wait.Wait()
|
|
wait.Wait()
|
|
|
|
|
|
}
|
|
}
|
|
- delete(*rData, "_id")
|
|
|
|
|
|
+ delete(getQueryMap, "_id")
|
|
rMap["timeRange"] = timeRangeMap
|
|
rMap["timeRange"] = timeRangeMap
|
|
- rMap["analysis_condition"] = rData
|
|
|
|
|
|
+ rMap["analysis_condition"] = getQueryMap
|
|
return rMap, err
|
|
return rMap, err
|
|
}()
|
|
}()
|
|
if errMsg != nil {
|
|
if errMsg != nil {
|