feat:完善项目信息
This commit is contained in:
@ -83,28 +83,70 @@ func (c *Index) distribution(src []*model.DataAreaDistributionInfo) map[string]*
|
||||
out[v.Province] = &InstanceDistributionDetailInfo{
|
||||
Code: v.Province,
|
||||
Name: config2.MemoryForAreaInfo[config.DefaultChinaAreaCode][v.Province],
|
||||
Industry: nil,
|
||||
Industry: make(map[string]int, 0),
|
||||
Count: 1,
|
||||
Children: make(map[string]*InstanceDistributionDetailInfo, 0),
|
||||
}
|
||||
goto NEXT
|
||||
goto NEXT1
|
||||
}
|
||||
out[v.Province].Count++
|
||||
NEXT:
|
||||
if _, has = out[v.Province].Children[v.City]; !has {
|
||||
out[v.Province].Children[v.City] = &InstanceDistributionDetailInfo{
|
||||
Code: v.City,
|
||||
Count: 1,
|
||||
Name: config2.MemoryForAreaInfo[v.Province][v.City],
|
||||
Industry: industrys,
|
||||
NEXT1:
|
||||
if v.City != "" {
|
||||
if _, has = out[v.Province].Children[v.City]; !has {
|
||||
out[v.Province].Children[v.City] = &InstanceDistributionDetailInfo{
|
||||
Code: v.City,
|
||||
Count: 1,
|
||||
Name: config2.MemoryForAreaInfo[v.Province][v.City],
|
||||
Industry: make(map[string]int, 0),
|
||||
Children: make(map[string]*InstanceDistributionDetailInfo, 0),
|
||||
}
|
||||
goto NEXT2
|
||||
}
|
||||
continue
|
||||
out[v.Province].Children[v.City].Count++
|
||||
} else {
|
||||
out[v.Province].Industry = industrys
|
||||
}
|
||||
NEXT2:
|
||||
if v.District != "" {
|
||||
if _, has = out[v.Province].Children[v.City].Children[v.District]; !has {
|
||||
out[v.Province].Children[v.City].Children[v.District] = &InstanceDistributionDetailInfo{
|
||||
Code: v.District,
|
||||
Count: 1,
|
||||
Name: config2.MemoryForAreaInfo[v.City][v.District],
|
||||
Industry: industrys,
|
||||
}
|
||||
continue
|
||||
}
|
||||
out[v.Province].Children[v.City].Children[v.District].Count++
|
||||
} else {
|
||||
out[v.Province].Children[v.City].Industry = industrys
|
||||
}
|
||||
out[v.Province].Children[v.City].Count++
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func (c *Index) filterIndustry(src *InstanceDistributionDetailInfo, out map[string]int) {
|
||||
if len(src.Children) > 0 {
|
||||
for _, v := range src.Children {
|
||||
for key, val := range v.Industry {
|
||||
if _, has := out[key]; !has {
|
||||
out[key] = val
|
||||
continue
|
||||
}
|
||||
out[key] += val
|
||||
}
|
||||
c.filterIndustry(v, out)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Index) filter(src map[string]*InstanceDistributionDetailInfo) {
|
||||
for _, v := range src {
|
||||
c.filterIndustry(v, v.Industry)
|
||||
c.filter(v.Children)
|
||||
}
|
||||
}
|
||||
|
||||
// static 数量统计
|
||||
func (c *Index) static() (*InstanceStaticInfo, error) {
|
||||
out := new(InstanceStaticInfo)
|
||||
@ -159,7 +201,10 @@ func (c *Index) DistributionExpert(province, city string) (map[string]*InstanceD
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return c.distribution(out), nil
|
||||
_out := c.distribution(out)
|
||||
c.filter(_out)
|
||||
|
||||
return _out, nil
|
||||
}
|
||||
|
||||
// DistributionLaboratory 实验室分布
|
||||
@ -170,7 +215,10 @@ func (c *Index) DistributionLaboratory(province, city string) (map[string]*Insta
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return c.distribution(out), nil
|
||||
_out := c.distribution(out)
|
||||
c.filter(_out)
|
||||
|
||||
return _out, nil
|
||||
}
|
||||
|
||||
// DistributionDemand 需求信息
|
||||
@ -181,7 +229,10 @@ func (c *Index) DistributionDemand(province, city string) (map[string]*InstanceD
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return c.distribution(out), nil
|
||||
_out := c.distribution(out)
|
||||
c.filter(_out)
|
||||
|
||||
return _out, nil
|
||||
}
|
||||
|
||||
// DistributionPatent 专利信息
|
||||
@ -192,18 +243,24 @@ func (c *Index) DistributionPatent(province, city string) (map[string]*InstanceD
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return c.distribution(out), nil
|
||||
_out := c.distribution(out)
|
||||
c.filter(_out)
|
||||
|
||||
return _out, nil
|
||||
}
|
||||
|
||||
// DistributionAchievement 技术成果信息
|
||||
func (c *Index) DistributionAchievement(province, city string) (map[string]*InstanceDistributionDetailInfo, error) {
|
||||
mSysPatent := model.NewSysPatent()
|
||||
out, err := mSysPatent.Distribution()
|
||||
mTechnologyAchievement := model.NewTechnologyAchievement()
|
||||
out, err := mTechnologyAchievement.Distribution()
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return c.distribution(out), nil
|
||||
_out := c.distribution(out)
|
||||
c.filter(_out)
|
||||
|
||||
return _out, nil
|
||||
}
|
||||
|
||||
// Instance 首页信息
|
||||
|
||||
@ -4,5 +4,6 @@ package model
|
||||
type DataAreaDistributionInfo struct {
|
||||
Province string `json:"province"`
|
||||
City string `json:"city"`
|
||||
District string `json:"district"`
|
||||
Industry string `json:"industry"`
|
||||
}
|
||||
|
||||
@ -73,9 +73,9 @@ func (m *ManageLaboratory) Distribution() ([]*DataAreaDistributionInfo, error) {
|
||||
out := make([]*DataAreaDistributionInfo, 0)
|
||||
|
||||
err := orm.GetDB().Table(m.TableName()).
|
||||
Select("province", "city", "GROUP_CONCAT(industry SEPARATOR '&') AS industry").
|
||||
Group("province").Group("city").
|
||||
Order("province "+model.OrderModeToAsc).Order("city "+model.OrderModeToAsc).
|
||||
Select("province", "city", "district", "GROUP_CONCAT(industry SEPARATOR '&') AS industry").
|
||||
Group("province").Group("city").Group("district").
|
||||
Order("province "+model.OrderModeToAsc).Order("city "+model.OrderModeToAsc).Order("district "+model.OrderModeToAsc).
|
||||
Where("examine_status = ?", model.ExamineStatusForAgree).
|
||||
Scan(&out).Error
|
||||
|
||||
|
||||
@ -71,7 +71,7 @@ func (m *SysPatent) Distribution() ([]*DataAreaDistributionInfo, error) {
|
||||
out := make([]*DataAreaDistributionInfo, 0)
|
||||
|
||||
err := orm.GetDB().Table(m.TableName()+" AS p").
|
||||
Select("e.province", "e.city", "GROUP_CONCAT(p_c.industry_detail SEPARATOR '&') AS industry").
|
||||
Select("e.province", "e.city", "e.district", "GROUP_CONCAT(p_c.industry_detail SEPARATOR '&') AS industry").
|
||||
Joins(fmt.Sprintf("RIGHT JOIN %s AS p_c ON p.ipc_code = p_c.ipc AND p_c.is_deleted = %d",
|
||||
model.NewSysPatentClassify().TableName(), model.DeleteStatusForNot)).
|
||||
Joins(fmt.Sprintf("RIGHT JOIN %s AS u_p ON p.id = u_p.patent_id AND u_p.is_deleted = %d",
|
||||
@ -80,8 +80,9 @@ func (m *SysPatent) Distribution() ([]*DataAreaDistributionInfo, error) {
|
||||
Joins(fmt.Sprintf("LEFT JOIN %s AS e ON u_e.expert_id = e.id", model.NewManageExpert().TableName())).
|
||||
Where("p.is_deleted = ?", model.DeleteStatusForNot).
|
||||
Where("p.shelf_status = ?", model.ShelfStatusForUp).
|
||||
Group("e.province").Group("e.city").
|
||||
Order("e.province " + model.OrderModeToAsc).Order("e.city " + model.OrderModeToAsc).Scan(&out).Error
|
||||
Group("e.province").Group("e.city").Group("e.district").
|
||||
Order("e.province " + model.OrderModeToAsc).Order("e.city " + model.OrderModeToAsc).Order("e.district " + model.OrderModeToAsc).
|
||||
Scan(&out).Error
|
||||
return out, err
|
||||
}
|
||||
|
||||
|
||||
@ -68,11 +68,11 @@ func (m *TechnologyAchievement) Distribution() ([]*DataAreaDistributionInfo, err
|
||||
out := make([]*DataAreaDistributionInfo, 0)
|
||||
|
||||
err := orm.GetDB().Table(m.TableName()+" AS a").
|
||||
Select("e.province", "e.city", "GROUP_CONCAT(a.industry SEPARATOR '&') AS industry").
|
||||
Select("e.province", "e.city", "e.district", "GROUP_CONCAT(a.industry SEPARATOR '&') AS industry").
|
||||
Joins(fmt.Sprintf("LEFT JOIN %s AS u_e ON a.uid = u_e.uid", model.NewUserExpert().TableName())).
|
||||
Joins(fmt.Sprintf("LEFT JOIN %s AS e ON u_e.expert_id = e.id", model.NewManageExpert().TableName())).
|
||||
Group("e.province").Group("e.city").
|
||||
Order("e.province "+model.OrderModeToAsc).Order("e.city "+model.OrderModeToAsc).
|
||||
Group("e.province").Group("e.city").Group("e.district").
|
||||
Order("e.province "+model.OrderModeToAsc).Order("e.city "+model.OrderModeToAsc).Order("e.district "+model.OrderModeToAsc).
|
||||
Where("a.status = ?", model.TechnologyAchievementStatusForAgree).
|
||||
Where("a.shelf_status = ?", model.ShelfStatusForUp).
|
||||
Scan(&out).Error
|
||||
|
||||
@ -15,11 +15,11 @@ func (m *TechnologyDemand) Distribution() ([]*DataAreaDistributionInfo, error) {
|
||||
out := make([]*DataAreaDistributionInfo, 0)
|
||||
|
||||
err := orm.GetDB().Table(m.TableName()+" AS d").
|
||||
Select("e.province", "e.city", "GROUP_CONCAT(d.industry SEPARATOR '&') AS industry").
|
||||
Select("e.province", "e.city", "e.district", "GROUP_CONCAT(d.industry SEPARATOR '&') AS industry").
|
||||
Joins(fmt.Sprintf("LEFT JOIN %s AS u_e ON d.uid = u_e.uid", model.NewUserExpert().TableName())).
|
||||
Joins(fmt.Sprintf("LEFT JOIN %s AS e ON u_e.expert_id = e.id", model.NewManageExpert().TableName())).
|
||||
Group("e.province").Group("e.city").
|
||||
Order("e.province "+model.OrderModeToAsc).Order("e.city "+model.OrderModeToAsc).
|
||||
Group("e.province").Group("e.city").Group("e.district").
|
||||
Order("e.province "+model.OrderModeToAsc).Order("e.city "+model.OrderModeToAsc).Order("e.district "+model.OrderModeToAsc).
|
||||
Where("d.status = ?", model.TechnologyDemandStatusForAgree).
|
||||
Scan(&out).Error
|
||||
|
||||
|
||||
Reference in New Issue
Block a user