ziwen hai 1 ano
pai
achega
1d98d1b043
Modificáronse 2 ficheiros con 133 adicións e 1 borrados
  1. 5 1
      models/cygx/activity_special_trip_bill.go
  2. 128 0
      services/cygx/activity_special.go

+ 5 - 1
models/cygx/activity_special_trip_bill.go

@@ -130,7 +130,7 @@ func GetCygxActivitySpecialTripBillDetailList(condition string, pars []interface
 	return
 }
 
-type CygxActivitySpecialPointsBillResp struct {
+type CygxActivitySpecialPointsBillRespItem struct {
 	Id                  int    `gorm:"column:id;primary_key;AUTO_INCREMENT"`
 	Content             string `gorm:"column:content" `                                 // 内容说明
 	Total               string `gorm:"column:points;default:0;NOT NULL" `               // 合计
@@ -143,3 +143,7 @@ type CygxActivitySpecialPointsBillResp struct {
 	ChartPermissionId   int    `description:"行业id"`
 	ChartPermissionName string `description:"行业名称"`
 }
+
+type CygxActivitySpecialPointsBillResp struct {
+	List []*CygxActivitySpecialPointsBillRespItem
+}

+ 128 - 0
services/cygx/activity_special.go

@@ -397,3 +397,131 @@ func CheckActivitySpecialUpdatePower(adminId int, activityInfo *cygx.ActivitySpe
 	havePower = true
 	return
 }
+
+// GetChartPermissionSpecialSurplusByCompany 获取公司专项调研次数-分品种
+func GetChartPermissionSpecialSurplusByCompany(companyId int) (chartNumMap  map[int]int, err error) {
+	companyDetail, e := cygx.GetCompanyDetailByIdGroup(companyId)
+	if e != nil {
+		err = errors.New("GetCompanyDetailByIdGroup, Err: " + e.Error())
+	}
+	if companyDetail == nil {
+		return
+	}
+	if companyDetail.Status != "永续" && companyDetail.Status != "正式" {
+		return
+	}
+	var specialSurplus string
+	if companyDetail.Status == "永续" {
+		specialSurplus = "不限次数"
+	}
+	chartMap := map[int]string{utils.YI_YAO_ID:utils.YI_YAO_NAME, utils.XIAO_FEI_ID:utils.XIAO_FEI_NAME, utils.KE_JI_ID:utils.KE_JI_NAME, utils.ZHI_ZAO_ID:utils.ZHI_ZAO_NAME}
+	chartNumMap = map[int]int{utils.YI_YAO_ID:0, utils.XIAO_FEI_ID:0, utils.KE_JI_ID:0, utils.ZHI_ZAO_ID:0}
+	if companyDetail.Status == "正式" {
+		userType, packageType, _, _, _ := GetUserType(companyId)
+		if userType == 2 {
+			var condition string
+			var pars []interface{}
+
+			condition += ` AND company_id = ? `
+			pars = append(pars, companyId)
+
+			airborneList, e := cygx.GetActivitySpecialTripAirborneCountByActivitySpecial(condition, pars)
+			if e != nil {
+				err = errors.New("GetActivitySpecialTripAirborneCountByActivitySpecial, Err: " + e.Error())
+				return
+			}
+			ariborneMap := make(map[int]int)
+			for _, v := range airborneList {
+				ariborneMap[v.ChartPermissionId] = v.Count
+			}
+			//condition += ` AND is_valid = 1 `
+			//查询当年的数据
+			condition += ` AND create_time >= ?  `
+			pars = append(pars, time.Now().Format(utils.FormatYearDate)+"-01-01")
+			listTripBill, e := cygx.GetCygxActivitySpecialTripBill(condition, pars)
+			if e != nil {
+				err = errors.New("GetActivitySpecialTripCountByActivitySpecial, Err: " + e.Error())
+				return
+			}
+			TripBillNumMap := make(map[int]int)
+			for _, v := range listTripBill {
+				TripBillNumMap[v.ChartPermissionId] += v.BillDetailed
+			}
+			// CRM13.2 70w客户有16次专项调研, 45w有10次
+			packageTypeMap := map[int]int{1: 16, 2: 10}
+			totalTrip := packageTypeMap[packageType]
+
+			for k, _ := range chartNumMap {
+				tripRemaining := totalTrip - ariborneMap[k] + TripBillNumMap[k]
+				if tripRemaining < 0 {
+					tripRemaining = 0
+				}
+				specialSurplus += chartMap[k] + strconv.Itoa(tripRemaining) + "次,"
+			}
+			specialSurplus = strings.TrimRight(specialSurplus, ",")
+
+			//tripRemaining = 12 - tripTota
+		} else {
+			list, e := company.GetCompanyReportPermissionUpgrade(companyId, 2)
+			if e != nil && e.Error() != utils.ErrNoRow() {
+				err = errors.New("GetCompanyReportPermissionUpgrade, Err: " + e.Error())
+			}
+			if len(list) == 0 {
+				return
+			}
+			var chartPermissionIdSlice []string
+			mapChartName := make(map[string]int)
+			mapPermissionNameTrip := make(map[string]int)
+			//mapPermissionName := make(map[int]string)
+			for _, v := range list {
+				chartPermissionIdSlice = append(chartPermissionIdSlice, strconv.Itoa(v.ChartPermissionId))
+
+			}
+			chartList, e := models.GetChartPermissionByIds(chartPermissionIdSlice)
+			if e != nil {
+				err = errors.New("获取品种信息失败, Err:" + e.Error())
+				return
+			}
+			if len(chartList) == 0 {
+				return
+			}
+			airborneList, e := cygx.GetCygxActivitySpecialTripAirborneListByComapnyId(companyId)
+			if e != nil {
+				err = errors.New("获取品种信息失败, Err:" + e.Error())
+				return
+			}
+			for _, v := range airborneList {
+				mapPermissionNameTrip[v.ChartPermissionName] += 1
+			}
+
+			var condition string
+			var pars []interface{}
+
+			condition += ` AND company_id = ? `
+			pars = append(pars, companyId)
+
+			//查询当年的数据
+			condition += ` AND b.create_time >= ?  `
+			pars = append(pars, time.Now().Format(utils.FormatYearDate)+"-01-01")
+			listTripBill, e := cygx.GetCygxActivitySpecialTripBillList(condition, pars)
+			if e != nil {
+				err = errors.New("GetActivitySpecialTripCountByActivitySpecial, Err: " + e.Error())
+				return
+			}
+			//var TripBillNum int
+			for _, v := range listTripBill {
+				mapPermissionNameTrip[v.ChartPermissionName] += v.BillDetailed
+			}
+			for _, v := range chartList {
+				mapChartName[v.PermissionName] = 5 + mapPermissionNameTrip[v.ChartPermissionName]
+			}
+			for k, v := range mapChartName {
+				if v > 0 {
+					specialSurplus += k + strconv.Itoa(v) + "次+"
+				}
+			}
+			specialSurplus = strings.TrimRight(specialSurplus, "+")
+		}
+	}
+	return
+}