|
@@ -2,318 +2,387 @@
|
|
|
package analysis
|
|
|
|
|
|
import (
|
|
|
- . "jy/src/jfw/modules/bigmember/src/config"
|
|
|
- "jy/src/jfw/modules/bigmember/src/entity"
|
|
|
- "jy/src/jfw/modules/bigmember/src/util"
|
|
|
- "regexp"
|
|
|
- "strconv"
|
|
|
- "strings"
|
|
|
- "time"
|
|
|
+ elastic "app.yhyue.com/moapp/jybase/es"
|
|
|
+ . "jy/src/jfw/modules/bigmember/src/config"
|
|
|
+ "jy/src/jfw/modules/bigmember/src/entity"
|
|
|
+ "jy/src/jfw/modules/bigmember/src/util"
|
|
|
+ "regexp"
|
|
|
+ "strconv"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
|
|
|
- . "app.yhyue.com/moapp/jybase/api"
|
|
|
- qutil "app.yhyue.com/moapp/jybase/common"
|
|
|
- . "app.yhyue.com/moapp/jybase/date"
|
|
|
- "app.yhyue.com/moapp/jybase/encrypt"
|
|
|
- "app.yhyue.com/moapp/jybase/go-xweb/xweb"
|
|
|
+ . "app.yhyue.com/moapp/jybase/api"
|
|
|
+ qutil "app.yhyue.com/moapp/jybase/common"
|
|
|
+ . "app.yhyue.com/moapp/jybase/date"
|
|
|
+ "app.yhyue.com/moapp/jybase/encrypt"
|
|
|
+ "app.yhyue.com/moapp/jybase/go-xweb/xweb"
|
|
|
)
|
|
|
|
|
|
type Analysis struct {
|
|
|
- *xweb.Action
|
|
|
- pName xweb.Mapper `xweb:"/analysis/projectName"` //根据项目名称关键词连带项目名称
|
|
|
- pInfo xweb.Mapper `xweb:"/analysis/projectInfo"` //根据项目名称获取项目信息
|
|
|
- csORRsList xweb.Mapper `xweb:"/potential/corList"` //潜在客户customers or 潜在竞争对手rivals
|
|
|
- rMyRivals xweb.Mapper `xweb:"/potential/rMyRivals"` //移除我的潜在竞争对手rivals
|
|
|
- decInfo xweb.Mapper `xweb:"/decision/decInfo"` //投标决策分析
|
|
|
- trialInfo xweb.Mapper `xweb:"/decision/trialInfo"` //投标决策分析-使用用户 剩余次数
|
|
|
- forArea xweb.Mapper `xweb:"/forecast/forArea"` //新项目预测省份城市
|
|
|
- forPList xweb.Mapper `xweb:"/forecast/forPList"` //新项目预测结果list
|
|
|
- forPContent xweb.Mapper `xweb:"/forecast/forPContent"` //新项目预测结果详情
|
|
|
- forDerive xweb.Mapper `xweb:"/forecast/forDerive"` //新项目预测导出
|
|
|
- fWData xweb.Mapper `xweb:"/forecast/forWData"` //中标预测分析
|
|
|
- fWStatus xweb.Mapper `xweb:"/forecast/forWStatus"` //查看中标预测状态
|
|
|
- fWResult xweb.Mapper `xweb:"/forecast/forWResult"` //中标预测结果
|
|
|
- fWOvertime xweb.Mapper `xweb:"/forecast/forWOvertime"` //中标预测超时处理
|
|
|
- bdInfoStatus xweb.Mapper `xweb:"/forecast/bdInfoStatus"` //中标预测-项目是否已完成招标
|
|
|
- freeDecInfo xweb.Mapper `xweb:"/decision/freeDecInfo"` //投标决策分析-免费用户
|
|
|
- potIndex xweb.Mapper `xweb:"/potential/index"` //潜在客户customers or 潜在竞争对手rivals 首页接口
|
|
|
- projectInfoByBW xweb.Mapper `xweb:"/decision/projectInfoByBW"` //投标决策分析-采购单位和中标企业 其他项目明细/类似项目明细
|
|
|
- decReviewExperts xweb.Mapper `xweb:"/decision/decReviewExperts"` //投标决策分析-评标专家
|
|
|
- getREProjects xweb.Mapper `xweb:"/decision/getREProjects"` //投标决策分析-评标专家de项目
|
|
|
- hotWinnerTop xweb.Mapper `xweb:"/decision/hotWinnerTop"` //投标决策分析-同类热点中标企业top10
|
|
|
+ *xweb.Action
|
|
|
+ pName xweb.Mapper `xweb:"/analysis/projectName"` //根据项目名称关键词连带项目名称
|
|
|
+ pInfo xweb.Mapper `xweb:"/analysis/projectInfo"` //根据项目名称获取项目信息
|
|
|
+ csORRsList xweb.Mapper `xweb:"/potential/corList"` //潜在客户customers or 潜在竞争对手rivals
|
|
|
+ rMyRivals xweb.Mapper `xweb:"/potential/rMyRivals"` //移除我的潜在竞争对手rivals
|
|
|
+ decInfo xweb.Mapper `xweb:"/decision/decInfo"` //投标决策分析
|
|
|
+ trialInfo xweb.Mapper `xweb:"/decision/trialInfo"` //投标决策分析-使用用户 剩余次数
|
|
|
+ forArea xweb.Mapper `xweb:"/forecast/forArea"` //新项目预测省份城市
|
|
|
+ forPList xweb.Mapper `xweb:"/forecast/forPList"` //新项目预测结果list
|
|
|
+ forPContent xweb.Mapper `xweb:"/forecast/forPContent"` //新项目预测结果详情
|
|
|
+ forDerive xweb.Mapper `xweb:"/forecast/forDerive"` //新项目预测导出
|
|
|
+ fWData xweb.Mapper `xweb:"/forecast/forWData"` //中标预测分析
|
|
|
+ fWStatus xweb.Mapper `xweb:"/forecast/forWStatus"` //查看中标预测状态
|
|
|
+ fWResult xweb.Mapper `xweb:"/forecast/forWResult"` //中标预测结果
|
|
|
+ fWOvertime xweb.Mapper `xweb:"/forecast/forWOvertime"` //中标预测超时处理
|
|
|
+ bdInfoStatus xweb.Mapper `xweb:"/forecast/bdInfoStatus"` //中标预测-项目是否已完成招标
|
|
|
+ freeDecInfo xweb.Mapper `xweb:"/decision/freeDecInfo"` //投标决策分析-免费用户
|
|
|
+ potIndex xweb.Mapper `xweb:"/potential/index"` //潜在客户customers or 潜在竞争对手rivals 首页接口
|
|
|
+ projectInfoByBW xweb.Mapper `xweb:"/decision/projectInfoByBW"` //投标决策分析-采购单位和中标企业 其他项目明细/类似项目明细
|
|
|
+ decReviewExperts xweb.Mapper `xweb:"/decision/decReviewExperts"` //投标决策分析-评标专家
|
|
|
+ getREProjects xweb.Mapper `xweb:"/decision/getREProjects"` //投标决策分析-评标专家de项目
|
|
|
+ hotWinnerTop xweb.Mapper `xweb:"/decision/hotWinnerTop"` //投标决策分析-同类热点中标企业top10
|
|
|
}
|
|
|
|
|
|
const (
|
|
|
- C_FW_qyxy = "qyxy_std" //中标预测-企业信息
|
|
|
- C_FPContent = "project_forecast" //新项目预测表
|
|
|
- C_FPList = "pushprojectforecast" //新项目预测
|
|
|
- FP_Limit = 10 //每页10条
|
|
|
- C_ForecastData = "forecast_info" //中标预测数据
|
|
|
- C_ForecastLog = "forecast_log" //中标预测日志
|
|
|
- C_PTLog = "potential_search" //潜在竞争对手或客户日志表
|
|
|
- C_FEnt = "follow_ent_monitor" //企业情报
|
|
|
- C_Member = "member"
|
|
|
- C_User = "user"
|
|
|
- C_Entniche_Rule = "entniche_rule"
|
|
|
- P_INDEX = "projectset"
|
|
|
- P_TYPE = "projectset"
|
|
|
- PSearch_PCount = 500 //潜在客户和潜在竞争对手数量
|
|
|
- PSearch_field = `buyer`
|
|
|
- P_limit = 2000 //查询两千个客户
|
|
|
- P_redis_time = 15 * 24 * 60 * 60 //redis存15天
|
|
|
- METHOD = "POST"
|
|
|
+ C_FW_qyxy = "qyxy_std" //中标预测-企业信息
|
|
|
+ C_FPContent = "project_forecast" //新项目预测表
|
|
|
+ C_FPList = "pushprojectforecast" //新项目预测
|
|
|
+ FP_Limit = 10 //每页10条
|
|
|
+ C_ForecastData = "forecast_info" //中标预测数据
|
|
|
+ C_ForecastLog = "forecast_log" //中标预测日志
|
|
|
+ C_PTLog = "potential_search" //潜在竞争对手或客户日志表
|
|
|
+ C_FEnt = "follow_ent_monitor" //企业情报
|
|
|
+ C_Member = "member"
|
|
|
+ C_User = "user"
|
|
|
+ C_Entniche_Rule = "entniche_rule"
|
|
|
+ P_INDEX = "projectset"
|
|
|
+ P_TYPE = "projectset"
|
|
|
+ PSearch_PCount = 500 //潜在客户和潜在竞争对手数量
|
|
|
+ PSearch_field = `buyer`
|
|
|
+ P_limit = 2000 //查询两千个客户
|
|
|
+ P_redis_time = 15 * 24 * 60 * 60 //redis存15天
|
|
|
+ METHOD = "POST"
|
|
|
)
|
|
|
|
|
|
func init() {
|
|
|
- now := time.Now()
|
|
|
- newDate := time.Date(now.Year()-Config.TimeSpan, 1, 1, 0, 0, 0, 0, time.Local).Unix()
|
|
|
- entity.P_Starttime = strconv.FormatInt(newDate, 10)
|
|
|
- if Config.RegWinner != "" {
|
|
|
- entity.RegWinner = regexp.MustCompile(Config.RegWinner)
|
|
|
- }
|
|
|
- entity.UIL = entity.NewUserInfoLock()
|
|
|
+ now := time.Now()
|
|
|
+ newDate := time.Date(now.Year()-Config.TimeSpan, 1, 1, 0, 0, 0, 0, time.Local).Unix()
|
|
|
+ entity.P_Starttime = strconv.FormatInt(newDate, 10)
|
|
|
+ if Config.RegWinner != "" {
|
|
|
+ entity.RegWinner = regexp.MustCompile(Config.RegWinner)
|
|
|
+ }
|
|
|
+ entity.UIL = entity.NewUserInfoLock()
|
|
|
}
|
|
|
|
|
|
// 根据项目名称获取项目信息
|
|
|
func (this *Analysis) PInfo() {
|
|
|
- defer qutil.Catch()
|
|
|
- var regMap = Result{
|
|
|
- Data: []map[string]interface{}{},
|
|
|
- Error_code: Error_code,
|
|
|
- Error_msg: "",
|
|
|
- }
|
|
|
- if this.Method() == METHOD {
|
|
|
- userId, _ := this.GetSession("userId").(string)
|
|
|
- var ptids = []string{}
|
|
|
- if this.GetString("ptid") != "" {
|
|
|
- ptids = encrypt.DecodeArticleId2ByCheck(this.GetString("ptid"))
|
|
|
- }
|
|
|
- var sourceinfoids = []string{}
|
|
|
- if this.GetString("sourceinfoid") != "" {
|
|
|
- sourceinfoids = encrypt.DecodeArticleId2ByCheck(this.GetString("sourceinfoid"))
|
|
|
- }
|
|
|
- // log.Println(ptids, "-----", sourceinfoids)
|
|
|
- if len(ptids) > 0 || len(sourceinfoids) > 0 {
|
|
|
- ptdatas := entity.GetProInfoById(ptids, sourceinfoids)
|
|
|
- ArrPS := map[string]interface{}{}
|
|
|
- if ptdatas != nil && len(ptdatas) > 0 {
|
|
|
- ptdata := ptdatas[0]
|
|
|
- projectname := qutil.ObjToString(ptdata["projectname"])
|
|
|
- buyerclass := qutil.ObjToString(ptdata["buyerclass"])
|
|
|
- purchasing := qutil.ObjToString(ptdata["purchasing"])
|
|
|
- area := qutil.ObjToString(ptdata["area"])
|
|
|
- city := qutil.ObjToString(ptdata["city"])
|
|
|
- buyer := qutil.ObjToString(ptdata["buyer"]) //采购单位
|
|
|
- ids := qutil.ObjArrToStringArr(ptdata["ids"].([]interface{}))
|
|
|
- s_subscopeclass := qutil.ObjToString(ptdata["s_subscopeclass"]) //项目行业
|
|
|
- buyerperson := qutil.ObjToString(ptdata["buyerperson"]) //采购联系人
|
|
|
- buyertel := qutil.ObjToString(ptdata["buyertel"]) //采购联系方式
|
|
|
- if this.GetString("D") == "" {
|
|
|
- var keyArr []map[string]interface{}
|
|
|
- var a_key []map[string]interface{}
|
|
|
+ defer qutil.Catch()
|
|
|
+ var regMap = Result{
|
|
|
+ Data: []map[string]interface{}{},
|
|
|
+ Error_code: Error_code,
|
|
|
+ Error_msg: "",
|
|
|
+ }
|
|
|
+ if this.Method() == METHOD {
|
|
|
+ userId, _ := this.GetSession("userId").(string)
|
|
|
+ var ptids = []string{}
|
|
|
+ if this.GetString("ptid") != "" {
|
|
|
+ ptids = encrypt.DecodeArticleId2ByCheck(this.GetString("ptid"))
|
|
|
+ }
|
|
|
+ var sourceinfoids = []string{}
|
|
|
+ if this.GetString("sourceinfoid") != "" {
|
|
|
+ sourceinfoids = encrypt.DecodeArticleId2ByCheck(this.GetString("sourceinfoid"))
|
|
|
+ }
|
|
|
+ // log.Println(ptids, "-----", sourceinfoids)
|
|
|
+ if len(ptids) > 0 || len(sourceinfoids) > 0 {
|
|
|
+ ptdatas := entity.GetProInfoById(ptids, sourceinfoids)
|
|
|
+ ArrPS := map[string]interface{}{}
|
|
|
+ if ptdatas != nil && len(ptdatas) > 0 {
|
|
|
+ ptdata := ptdatas[0]
|
|
|
+ projectname := qutil.ObjToString(ptdata["projectname"])
|
|
|
+ buyerclass := qutil.ObjToString(ptdata["buyerclass"])
|
|
|
+ purchasing := qutil.ObjToString(ptdata["purchasing"])
|
|
|
+ area := qutil.ObjToString(ptdata["area"])
|
|
|
+ city := qutil.ObjToString(ptdata["city"])
|
|
|
+ buyer := qutil.ObjToString(ptdata["buyer"]) //采购单位
|
|
|
+ ids := qutil.ObjArrToStringArr(ptdata["ids"].([]interface{}))
|
|
|
+ s_subscopeclass := qutil.ObjToString(ptdata["s_subscopeclass"]) //项目行业
|
|
|
+ buyerperson := qutil.ObjToString(ptdata["buyerperson"]) //采购联系人
|
|
|
+ buyertel := qutil.ObjToString(ptdata["buyertel"]) //采购联系方式
|
|
|
+ if this.GetString("D") == "" {
|
|
|
+ var keyArr []map[string]interface{}
|
|
|
+ var a_key []map[string]interface{}
|
|
|
|
|
|
- //查库获得大会员用户的信息
|
|
|
- o_mb := &map[string]interface{}{}
|
|
|
- o_mb = Compatible.Select(userId, `{"o_member_jy":1,"s_member_mainid":1,"i_member_sub_status":1}`)
|
|
|
- if o_mb != nil && (*o_mb) != nil && (*o_mb)["s_member_mainid"] != nil && qutil.IntAllDef((*o_mb)["i_member_sub_status"], 0) == 1 { //如果是子账号 查询主账号信息
|
|
|
- mainId := qutil.ObjToString((*o_mb)["s_member_mainid"])
|
|
|
- o_mb = Compatible.Select(mainId, `{"o_member_jy":1}`)
|
|
|
- }
|
|
|
- if o_mb != nil && (*o_mb)["o_member_jy"] != nil {
|
|
|
- o_member_jy := qutil.ObjToMap((*o_mb)["o_member_jy"])
|
|
|
- if (*o_member_jy)["a_items"] != nil {
|
|
|
- a_items := qutil.ObjArrToMapArr((*o_member_jy)["a_items"].([]interface{}))
|
|
|
- if len(a_items) > 0 {
|
|
|
- for _, v := range a_items {
|
|
|
- a_key = qutil.ObjArrToMapArr(v["a_key"].([]interface{}))
|
|
|
- L:
|
|
|
- for _, vv := range a_key {
|
|
|
- keys := qutil.ObjArrToStringArr(vv["key"].([]interface{}))
|
|
|
- for _, kv := range keys {
|
|
|
- if strings.Contains(projectname, kv) || strings.Contains(purchasing, kv) {
|
|
|
- keyArr = append(keyArr, vv)
|
|
|
- break L
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if len(keyArr) == 0 {
|
|
|
- if purchasing != "" {
|
|
|
- for _, v := range strings.Split(purchasing, ",") {
|
|
|
- keyArr = append(keyArr, map[string]interface{}{
|
|
|
- "key": []string{v},
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- ArrPS["buyerContent"] = keyArr
|
|
|
- var industry_arr = []string{}
|
|
|
- if s_subscopeclass != "" {
|
|
|
- for _, v := range strings.Split(s_subscopeclass, ",") {
|
|
|
- if v == "" {
|
|
|
- continue
|
|
|
- }
|
|
|
- industry_arr = append(industry_arr, v)
|
|
|
- }
|
|
|
- }
|
|
|
- ArrPS["industry"] = industry_arr
|
|
|
- if purchasing != "" && len(strings.Split(purchasing, ",")) > 0 {
|
|
|
- if len(strings.Split(purchasing, ",")) > 5 {
|
|
|
- ArrPS["purchasing"] = strings.Split(purchasing, ",")[:5]
|
|
|
- } else {
|
|
|
- ArrPS["purchasing"] = strings.Split(purchasing, ",")
|
|
|
- }
|
|
|
- } else {
|
|
|
- ArrPS["purchasing"] = []string{}
|
|
|
- }
|
|
|
- if area == "全国" {
|
|
|
- ArrPS["area"] = map[string]interface{}{}
|
|
|
- } else {
|
|
|
- ArrPS["area"] = map[string]interface{}{
|
|
|
- area: strings.Split(city, ","),
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- var keyArr []ViewKeyWord
|
|
|
- if purchasing != "" {
|
|
|
- key := strings.Split(purchasing, ",")
|
|
|
- if len(key) > 0 {
|
|
|
- //最多取10个
|
|
|
- if len(key) > 10 {
|
|
|
- key = key[:10]
|
|
|
- }
|
|
|
- for _, v := range key {
|
|
|
- keyArr = append(keyArr, ViewKeyWord{
|
|
|
- Keyword: []string{v},
|
|
|
- MatchWay: 1,
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- ArrPS["buyerContent"] = keyArr
|
|
|
- if s_subscopeclass != "" {
|
|
|
- ArrPS["s_subscopeclass"] = s_subscopeclass
|
|
|
- } else {
|
|
|
- ArrPS["s_subscopeclass"] = ""
|
|
|
- }
|
|
|
- ArrPS["bidamount"] = qutil.Float64All(ptdata["bidamount"]) //中标金额
|
|
|
- ArrPS["agency"] = qutil.ObjToString(ptdata["agency"]) //招标代理机构
|
|
|
- zbtime := ptdata["zbtime"]
|
|
|
- if zbtime != nil {
|
|
|
- ArrPS["zbtime"] = FormatDateWithObj(&zbtime, "2006/01/02") //招标时间
|
|
|
- }
|
|
|
- bidopentime := ptdata["bidopentime"]
|
|
|
- if bidopentime != nil {
|
|
|
- ArrPS["bidopentime"] = FormatDateWithObj(&bidopentime, "2006/01/02") //开标时间
|
|
|
- }
|
|
|
- ArrPS["area"] = area
|
|
|
- ArrPS["city"] = city
|
|
|
- ArrPS["bidcycle"] = ptdata["bidcycle"] //标书周期
|
|
|
- }
|
|
|
- var buyerclass_arr = []string{}
|
|
|
- if buyerclass != "" {
|
|
|
- for _, v := range strings.Split(buyerclass, ",") {
|
|
|
- if v == "其它" || v == "" {
|
|
|
- continue
|
|
|
- }
|
|
|
- buyerclass_arr = append(buyerclass_arr, v)
|
|
|
- }
|
|
|
- }
|
|
|
- ArrPS["buyerclass"] = buyerclass_arr
|
|
|
- ArrPS["projectname"] = projectname
|
|
|
- if len(sourceinfoids) > 0 {
|
|
|
- ArrPS["infoid"] = this.GetString("sourceinfoid")
|
|
|
- } else if len(ids) > 0 && ids[0] != "" {
|
|
|
- ArrPS["infoid"] = util.EncodeId(ids[0])
|
|
|
- }
|
|
|
- ArrPS["id"] = util.EncodeId(ptdata["_id"].(string))
|
|
|
- ArrPS["buyer"] = buyer
|
|
|
- ArrPS["budget"] = qutil.Float64All(ptdata["budget"]) //预算
|
|
|
- ArrPS["buyerperson"] = buyerperson
|
|
|
- ArrPS["buyertel"] = buyertel
|
|
|
- }
|
|
|
- regMap.Data = ArrPS
|
|
|
- } else {
|
|
|
- regMap.Error_code = Error_code_1002
|
|
|
- regMap.Error_msg = Error_msg_1002
|
|
|
- }
|
|
|
- } else {
|
|
|
- regMap.Error_code = Error_code_1005
|
|
|
- regMap.Error_msg = Error_msg_1005
|
|
|
- }
|
|
|
- this.ServeJson(regMap)
|
|
|
+ //查库获得大会员用户的信息
|
|
|
+ o_mb := &map[string]interface{}{}
|
|
|
+ o_mb = Compatible.Select(userId, `{"o_member_jy":1,"s_member_mainid":1,"i_member_sub_status":1}`)
|
|
|
+ if o_mb != nil && (*o_mb) != nil && (*o_mb)["s_member_mainid"] != nil && qutil.IntAllDef((*o_mb)["i_member_sub_status"], 0) == 1 { //如果是子账号 查询主账号信息
|
|
|
+ mainId := qutil.ObjToString((*o_mb)["s_member_mainid"])
|
|
|
+ o_mb = Compatible.Select(mainId, `{"o_member_jy":1}`)
|
|
|
+ }
|
|
|
+ if o_mb != nil && (*o_mb)["o_member_jy"] != nil {
|
|
|
+ o_member_jy := qutil.ObjToMap((*o_mb)["o_member_jy"])
|
|
|
+ if (*o_member_jy)["a_items"] != nil {
|
|
|
+ a_items := qutil.ObjArrToMapArr((*o_member_jy)["a_items"].([]interface{}))
|
|
|
+ if len(a_items) > 0 {
|
|
|
+ for _, v := range a_items {
|
|
|
+ a_key = qutil.ObjArrToMapArr(v["a_key"].([]interface{}))
|
|
|
+ L:
|
|
|
+ for _, vv := range a_key {
|
|
|
+ keys := qutil.ObjArrToStringArr(vv["key"].([]interface{}))
|
|
|
+ for _, kv := range keys {
|
|
|
+ if strings.Contains(projectname, kv) || strings.Contains(purchasing, kv) {
|
|
|
+ keyArr = append(keyArr, vv)
|
|
|
+ break L
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(keyArr) == 0 {
|
|
|
+ if purchasing != "" {
|
|
|
+ for _, v := range strings.Split(purchasing, ",") {
|
|
|
+ keyArr = append(keyArr, map[string]interface{}{
|
|
|
+ "key": []string{v},
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ArrPS["buyerContent"] = keyArr
|
|
|
+ var industry_arr = []string{}
|
|
|
+ if s_subscopeclass != "" {
|
|
|
+ for _, v := range strings.Split(s_subscopeclass, ",") {
|
|
|
+ if v == "" {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ industry_arr = append(industry_arr, v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ArrPS["industry"] = industry_arr
|
|
|
+ if purchasing != "" && len(strings.Split(purchasing, ",")) > 0 {
|
|
|
+ if len(strings.Split(purchasing, ",")) > 5 {
|
|
|
+ ArrPS["purchasing"] = strings.Split(purchasing, ",")[:5]
|
|
|
+ } else {
|
|
|
+ ArrPS["purchasing"] = strings.Split(purchasing, ",")
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ ArrPS["purchasing"] = []string{}
|
|
|
+ }
|
|
|
+ if area == "全国" {
|
|
|
+ ArrPS["area"] = map[string]interface{}{}
|
|
|
+ } else {
|
|
|
+ ArrPS["area"] = map[string]interface{}{
|
|
|
+ area: strings.Split(city, ","),
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ var keyArr []ViewKeyWord
|
|
|
+ if purchasing != "" {
|
|
|
+ key := strings.Split(purchasing, ",")
|
|
|
+ if len(key) > 0 {
|
|
|
+ //最多取10个
|
|
|
+ if len(key) > 10 {
|
|
|
+ key = key[:10]
|
|
|
+ }
|
|
|
+ for _, v := range key {
|
|
|
+ keyArr = append(keyArr, ViewKeyWord{
|
|
|
+ Keyword: []string{v},
|
|
|
+ MatchWay: 1,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ArrPS["buyerContent"] = keyArr
|
|
|
+ if s_subscopeclass != "" {
|
|
|
+ ArrPS["s_subscopeclass"] = s_subscopeclass
|
|
|
+ } else {
|
|
|
+ ArrPS["s_subscopeclass"] = ""
|
|
|
+ }
|
|
|
+ ArrPS["bidamount"] = qutil.Float64All(ptdata["bidamount"]) //中标金额
|
|
|
+ ArrPS["agency"] = qutil.ObjToString(ptdata["agency"]) //招标代理机构
|
|
|
+ zbtime := ptdata["zbtime"]
|
|
|
+ if zbtime != nil {
|
|
|
+ ArrPS["zbtime"] = FormatDateWithObj(&zbtime, "2006/01/02") //招标时间
|
|
|
+ }
|
|
|
+ bidopentime := ptdata["bidopentime"]
|
|
|
+ if bidopentime != nil {
|
|
|
+ ArrPS["bidopentime"] = FormatDateWithObj(&bidopentime, "2006/01/02") //开标时间
|
|
|
+ }
|
|
|
+ ArrPS["area"] = area
|
|
|
+ ArrPS["city"] = city
|
|
|
+ ArrPS["bidcycle"] = ptdata["bidcycle"] //标书周期
|
|
|
+ }
|
|
|
+ var buyerclass_arr = []string{}
|
|
|
+ if buyerclass != "" {
|
|
|
+ for _, v := range strings.Split(buyerclass, ",") {
|
|
|
+ if v == "其它" || v == "" {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ buyerclass_arr = append(buyerclass_arr, v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ArrPS["buyerclass"] = buyerclass_arr
|
|
|
+ ArrPS["projectname"] = projectname
|
|
|
+ if len(sourceinfoids) > 0 {
|
|
|
+ ArrPS["infoid"] = this.GetString("sourceinfoid")
|
|
|
+ } else if len(ids) > 0 && ids[0] != "" {
|
|
|
+ ArrPS["infoid"] = util.EncodeId(ids[0])
|
|
|
+ }
|
|
|
+ ArrPS["id"] = util.EncodeId(ptdata["_id"].(string))
|
|
|
+ ArrPS["buyer"] = buyer
|
|
|
+ ArrPS["budget"] = qutil.Float64All(ptdata["budget"]) //预算
|
|
|
+ ArrPS["buyerperson"] = buyerperson
|
|
|
+ ArrPS["buyertel"] = buyertel
|
|
|
+ } else if len(sourceinfoids) > 0 && strings.Contains(this.Refer(), "analysis_result") { //投标决策分析 如果没有项目,查询标讯信息
|
|
|
+ res := elastic.GetById(util.INDEX, util.TYPE, sourceinfoids[0])
|
|
|
+ if res != nil && len(*res) > 0 {
|
|
|
+ ptdata := (*res)[0]
|
|
|
+ projectname := qutil.ObjToString(ptdata["projectname"])
|
|
|
+ buyerclass := qutil.ObjToString(ptdata["buyerclass"])
|
|
|
+ purchasing := qutil.ObjToString(ptdata["purchasing"])
|
|
|
+ area := qutil.ObjToString(ptdata["area"])
|
|
|
+ city := qutil.ObjToString(ptdata["city"])
|
|
|
+ buyer := qutil.ObjToString(ptdata["buyer"]) //采购单位
|
|
|
+ s_subscopeclass := qutil.ObjToString(ptdata["s_subscopeclass"]) //项目行业
|
|
|
+ buyerperson := qutil.ObjToString(ptdata["buyerperson"]) //采购联系人
|
|
|
+ buyertel := qutil.ObjToString(ptdata["buyertel"]) //采购联系方式
|
|
|
+ var keyArr []ViewKeyWord
|
|
|
+ if purchasing != "" {
|
|
|
+ key := strings.Split(purchasing, ",")
|
|
|
+ if len(key) > 0 {
|
|
|
+ //最多取10个
|
|
|
+ if len(key) > 10 {
|
|
|
+ key = key[:10]
|
|
|
+ }
|
|
|
+ for _, v := range key {
|
|
|
+ keyArr = append(keyArr, ViewKeyWord{
|
|
|
+ Keyword: []string{v},
|
|
|
+ MatchWay: 1,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ArrPS["buyerContent"] = keyArr
|
|
|
+ if s_subscopeclass != "" {
|
|
|
+ ArrPS["s_subscopeclass"] = s_subscopeclass
|
|
|
+ } else {
|
|
|
+ ArrPS["s_subscopeclass"] = ""
|
|
|
+ }
|
|
|
+ ArrPS["bidamount"] = qutil.Float64All(ptdata["bidamount"]) //中标金额
|
|
|
+ ArrPS["agency"] = qutil.ObjToString(ptdata["agency"]) //招标代理机构
|
|
|
+ zbtime := ptdata["bidstarttime"]
|
|
|
+ if zbtime != nil {
|
|
|
+ ArrPS["zbtime"] = FormatDateWithObj(&zbtime, "2006/01/02") //招标时间
|
|
|
+ }
|
|
|
+ bidopentime := ptdata["bidopentime"]
|
|
|
+ if bidopentime != nil {
|
|
|
+ ArrPS["bidopentime"] = FormatDateWithObj(&bidopentime, "2006/01/02") //开标时间
|
|
|
+ }
|
|
|
+ ArrPS["area"] = area
|
|
|
+ ArrPS["city"] = city
|
|
|
+ ArrPS["bidcycle"] = ptdata["bidcycle"] //标书周期
|
|
|
+ var buyerclass_arr = []string{}
|
|
|
+ if buyerclass != "" {
|
|
|
+ for _, v := range strings.Split(buyerclass, ",") {
|
|
|
+ if v == "其它" || v == "" {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ buyerclass_arr = append(buyerclass_arr, v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ArrPS["buyerclass"] = buyerclass_arr
|
|
|
+ ArrPS["projectname"] = projectname
|
|
|
+ if len(sourceinfoids) > 0 {
|
|
|
+ ArrPS["infoid"] = this.GetString("sourceinfoid")
|
|
|
+ }
|
|
|
+ ArrPS["id"] = util.EncodeId(ptdata["_id"].(string))
|
|
|
+ ArrPS["buyer"] = buyer
|
|
|
+ ArrPS["budget"] = qutil.Float64All(ptdata["budget"]) //预算
|
|
|
+ ArrPS["buyerperson"] = buyerperson
|
|
|
+ ArrPS["buyertel"] = buyertel
|
|
|
+ }
|
|
|
+ }
|
|
|
+ regMap.Data = ArrPS
|
|
|
+ } else {
|
|
|
+ regMap.Error_code = Error_code_1002
|
|
|
+ regMap.Error_msg = Error_msg_1002
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ regMap.Error_code = Error_code_1005
|
|
|
+ regMap.Error_msg = Error_msg_1005
|
|
|
+ }
|
|
|
+ this.ServeJson(regMap)
|
|
|
}
|
|
|
|
|
|
// 根据项目名称获取项目名称
|
|
|
func (this *Analysis) PName() {
|
|
|
- defer qutil.Catch()
|
|
|
- var regMap = Result{
|
|
|
- Data: []map[string]interface{}{},
|
|
|
- Error_code: Error_code,
|
|
|
- Error_msg: "",
|
|
|
- }
|
|
|
- if this.Method() == METHOD {
|
|
|
- var pName = this.GetString("pName")
|
|
|
- var sType = this.GetString("sType")
|
|
|
- limit := Config.RdProLimit //匹配项目数量
|
|
|
- if limit == 0 {
|
|
|
- limit = 10
|
|
|
- }
|
|
|
- if pName != "" {
|
|
|
- if len([]rune(pName)) > 2 {
|
|
|
- pName = strings.ReplaceAll(pName, "\"", "")
|
|
|
- data := entity.GetProNameImmediate(sType, pName, limit)
|
|
|
- ArrPS := []map[string]interface{}{}
|
|
|
- if data != nil && len(data) > 0 {
|
|
|
- var pjtMap = map[string]bool{}
|
|
|
- var buyerMap = map[string]bool{}
|
|
|
- for _, r_data := range data {
|
|
|
- //过滤重复名称
|
|
|
- buyer := qutil.InterfaceToStr(r_data["buyer"])
|
|
|
- projectname, _ := r_data["projectname"].(string)
|
|
|
- if sType == "1" {
|
|
|
- if buyer == "" || buyerMap[buyer] {
|
|
|
- continue
|
|
|
- }
|
|
|
- } else {
|
|
|
- if projectname == "" || pjtMap[projectname] {
|
|
|
- continue
|
|
|
- }
|
|
|
- }
|
|
|
+ defer qutil.Catch()
|
|
|
+ var regMap = Result{
|
|
|
+ Data: []map[string]interface{}{},
|
|
|
+ Error_code: Error_code,
|
|
|
+ Error_msg: "",
|
|
|
+ }
|
|
|
+ if this.Method() == METHOD {
|
|
|
+ var pName = this.GetString("pName")
|
|
|
+ var sType = this.GetString("sType")
|
|
|
+ limit := Config.RdProLimit //匹配项目数量
|
|
|
+ if limit == 0 {
|
|
|
+ limit = 10
|
|
|
+ }
|
|
|
+ if pName != "" {
|
|
|
+ if len([]rune(pName)) > 2 {
|
|
|
+ pName = strings.ReplaceAll(pName, "\"", "")
|
|
|
+ data := entity.GetProNameImmediate(sType, pName, limit)
|
|
|
+ ArrPS := []map[string]interface{}{}
|
|
|
+ if data != nil && len(data) > 0 {
|
|
|
+ var pjtMap = map[string]bool{}
|
|
|
+ var buyerMap = map[string]bool{}
|
|
|
+ for _, r_data := range data {
|
|
|
+ //过滤重复名称
|
|
|
+ buyer := qutil.InterfaceToStr(r_data["buyer"])
|
|
|
+ projectname, _ := r_data["projectname"].(string)
|
|
|
+ if sType == "1" {
|
|
|
+ if buyer == "" || buyerMap[buyer] {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if projectname == "" || pjtMap[projectname] {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- if r_data["firsttime"] != nil {
|
|
|
- firsttime := r_data["firsttime"]
|
|
|
- r_data["firsttime"] = FormatDateWithObj(&firsttime, Date_Short_Layout)
|
|
|
- }
|
|
|
- if r_data["_id"] != nil {
|
|
|
- r_data["s_id"] = util.EncodeId(r_data["_id"].(string))
|
|
|
- delete(r_data, "_id")
|
|
|
- }
|
|
|
- if r_data["sourceinfoid"] != nil {
|
|
|
- r_data["sourceinfoid"] = util.EncodeId(r_data["sourceinfoid"].(string))
|
|
|
- }
|
|
|
- if sType == "1" {
|
|
|
- buyerMap[buyer] = true
|
|
|
- } else {
|
|
|
- pjtMap[projectname] = true
|
|
|
- }
|
|
|
- ArrPS = append(ArrPS, r_data)
|
|
|
- }
|
|
|
- }
|
|
|
- regMap.Data = ArrPS
|
|
|
- } else {
|
|
|
- regMap.Error_code = Error_code_1003
|
|
|
- regMap.Error_msg = Error_msg_1003
|
|
|
- }
|
|
|
- } else {
|
|
|
- regMap.Error_code = Error_code_1002
|
|
|
- regMap.Error_msg = Error_msg_1002
|
|
|
- }
|
|
|
- } else {
|
|
|
- regMap.Error_code = Error_code_1005
|
|
|
- regMap.Error_msg = Error_msg_1005
|
|
|
- }
|
|
|
- this.ServeJson(regMap)
|
|
|
+ if r_data["firsttime"] != nil {
|
|
|
+ firsttime := r_data["firsttime"]
|
|
|
+ r_data["firsttime"] = FormatDateWithObj(&firsttime, Date_Short_Layout)
|
|
|
+ }
|
|
|
+ if r_data["_id"] != nil {
|
|
|
+ r_data["s_id"] = util.EncodeId(r_data["_id"].(string))
|
|
|
+ delete(r_data, "_id")
|
|
|
+ }
|
|
|
+ if r_data["sourceinfoid"] != nil {
|
|
|
+ r_data["sourceinfoid"] = util.EncodeId(r_data["sourceinfoid"].(string))
|
|
|
+ }
|
|
|
+ if sType == "1" {
|
|
|
+ buyerMap[buyer] = true
|
|
|
+ } else {
|
|
|
+ pjtMap[projectname] = true
|
|
|
+ }
|
|
|
+ ArrPS = append(ArrPS, r_data)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ regMap.Data = ArrPS
|
|
|
+ } else {
|
|
|
+ regMap.Error_code = Error_code_1003
|
|
|
+ regMap.Error_msg = Error_msg_1003
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ regMap.Error_code = Error_code_1002
|
|
|
+ regMap.Error_msg = Error_msg_1002
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ regMap.Error_code = Error_code_1005
|
|
|
+ regMap.Error_msg = Error_msg_1005
|
|
|
+ }
|
|
|
+ this.ServeJson(regMap)
|
|
|
}
|