feat:完善项目信息

This commit is contained in:
henry
2022-01-06 10:43:27 +08:00
parent 7488e9526b
commit 1b0f71735b
15 changed files with 146 additions and 342 deletions

View File

@ -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 首页信息

View File

@ -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"`
}

View File

@ -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

View File

@ -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
}

View File

@ -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

View File

@ -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