|
@@ -17,6 +17,7 @@ import (
|
|
|
"hongze/hz_crm_api/services"
|
|
|
"hongze/hz_crm_api/services/alarm_msg"
|
|
|
contractService "hongze/hz_crm_api/services/contract"
|
|
|
+ cygxService "hongze/hz_crm_api/services/cygx"
|
|
|
fmsService "hongze/hz_crm_api/services/fms"
|
|
|
"hongze/hz_crm_api/services/statistic_report"
|
|
|
"hongze/hz_crm_api/utils"
|
|
@@ -111,6 +112,225 @@ func getQueryParams(condition string, pars []interface{}, sysUser *system.Admin,
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+// getQueryParamsInit 获取基础查询信息(最开始关联的销售信息)
|
|
|
+func getQueryParamsInit(condition string, pars []interface{}, sysUser *system.Admin, tableAlias string) (newCondition string, newPars []interface{}) {
|
|
|
+ if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN {
|
|
|
+ condition += " AND " + tableAlias + "product_id=?"
|
|
|
+ pars = append(pars, 1)
|
|
|
+ } else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
|
|
|
+ condition += " AND " + tableAlias + "product_id=?"
|
|
|
+ pars = append(pars, 2)
|
|
|
+ } else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FINANCE {
|
|
|
+ //超级管理员账户,不做条件限制
|
|
|
+ } else {
|
|
|
+ //如果不是研究员,那么去找对应的 部门、小组、销售
|
|
|
+ if sysUser.Authority == 0 {
|
|
|
+ //普通用户
|
|
|
+ condition += " AND a.seller_id_init=?"
|
|
|
+ pars = append(pars, sysUser.AdminId)
|
|
|
+ } else if sysUser.Authority == 1 {
|
|
|
+ //部门主管
|
|
|
+ condition += " AND " + tableAlias + "department_id=?"
|
|
|
+ pars = append(pars, sysUser.DepartmentId)
|
|
|
+ } else if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP {
|
|
|
+ //权益小组负责人
|
|
|
+ condition += " AND " + tableAlias + "group_id=?"
|
|
|
+ pars = append(pars, sysUser.GroupId)
|
|
|
+ } else if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP {
|
|
|
+ //ficc销售主管
|
|
|
+ pid, err := company.GetParentIdFromGroup(sysUser.GroupId)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var ids []*string
|
|
|
+ if pid != nil && *pid != 0 {
|
|
|
+ ids, err = company.GetGroupIdsByParentId(*pid)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err.Error())
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ ids, err = company.GetGroupIdsByParentId(sysUser.GroupId)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err.Error())
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var idSlice []string
|
|
|
+ var sid string
|
|
|
+ for _, id := range ids {
|
|
|
+ idSlice = append(idSlice, *id)
|
|
|
+ }
|
|
|
+ //加入父级groupId
|
|
|
+ if *pid > 0 {
|
|
|
+ idSlice = append(idSlice, strconv.Itoa(*pid))
|
|
|
+ } else {
|
|
|
+ idSlice = append(idSlice, strconv.Itoa(sysUser.GroupId))
|
|
|
+ }
|
|
|
+ sid = strings.Join(idSlice, ",")
|
|
|
+ condition += " AND " + tableAlias + `group_id IN (` + sid + `) `
|
|
|
+ fmt.Println("condition:", condition)
|
|
|
+ //pars = append(pars, sysUser.GroupId)
|
|
|
+ } else if sysUser.Authority == 4 {
|
|
|
+ //ficc小组负责人
|
|
|
+ condition += " AND " + tableAlias + "group_id=?"
|
|
|
+ pars = append(pars, sysUser.GroupId)
|
|
|
+ } else {
|
|
|
+ //不知道什么类型的用户(后面新增的位置类型客户)
|
|
|
+ condition += " AND a.seller_id_init=?"
|
|
|
+ pars = append(pars, sysUser.AdminId)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ newCondition = condition
|
|
|
+ newPars = pars
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// getQueryParams 获取基础查询信息(最开始关联的销售信息)
|
|
|
+func getQueryParamsLast(condition string, pars []interface{}, sysUser *system.Admin, tableAlias string) (newCondition string, newPars []interface{}) {
|
|
|
+ if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN {
|
|
|
+ condition += " AND " + tableAlias + "product_id=?"
|
|
|
+ pars = append(pars, 1)
|
|
|
+ } else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
|
|
|
+ condition += " AND " + tableAlias + "product_id=?"
|
|
|
+ pars = append(pars, 2)
|
|
|
+ } else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FINANCE {
|
|
|
+ //超级管理员账户,不做条件限制
|
|
|
+ } else {
|
|
|
+ //如果不是研究员,那么去找对应的 部门、小组、销售
|
|
|
+ if sysUser.Authority == 0 {
|
|
|
+ //普通用户
|
|
|
+ condition += " AND c.seller_id_last=?"
|
|
|
+ pars = append(pars, sysUser.AdminId)
|
|
|
+ } else if sysUser.Authority == 1 {
|
|
|
+ //部门主管
|
|
|
+ condition += " AND " + tableAlias + "department_id=?"
|
|
|
+ pars = append(pars, sysUser.DepartmentId)
|
|
|
+ } else if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP {
|
|
|
+ //权益小组负责人
|
|
|
+ condition += " AND " + tableAlias + "group_id=?"
|
|
|
+ pars = append(pars, sysUser.GroupId)
|
|
|
+ } else if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP {
|
|
|
+ //ficc销售主管
|
|
|
+ pid, err := company.GetParentIdFromGroup(sysUser.GroupId)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var ids []*string
|
|
|
+ if pid != nil && *pid != 0 {
|
|
|
+ ids, err = company.GetGroupIdsByParentId(*pid)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err.Error())
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ ids, err = company.GetGroupIdsByParentId(sysUser.GroupId)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err.Error())
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var idSlice []string
|
|
|
+ var sid string
|
|
|
+ for _, id := range ids {
|
|
|
+ idSlice = append(idSlice, *id)
|
|
|
+ }
|
|
|
+ //加入父级groupId
|
|
|
+ if *pid > 0 {
|
|
|
+ idSlice = append(idSlice, strconv.Itoa(*pid))
|
|
|
+ } else {
|
|
|
+ idSlice = append(idSlice, strconv.Itoa(sysUser.GroupId))
|
|
|
+ }
|
|
|
+ sid = strings.Join(idSlice, ",")
|
|
|
+ condition += " AND " + tableAlias + `group_id IN (` + sid + `) `
|
|
|
+ fmt.Println("condition:", condition)
|
|
|
+ //pars = append(pars, sysUser.GroupId)
|
|
|
+ } else if sysUser.Authority == 4 {
|
|
|
+ //ficc小组负责人
|
|
|
+ condition += " AND " + tableAlias + "group_id=?"
|
|
|
+ pars = append(pars, sysUser.GroupId)
|
|
|
+ } else {
|
|
|
+ //不知道什么类型的用户(后面新增的位置类型客户)
|
|
|
+ condition += " AND c.seller_id_last=?"
|
|
|
+ pars = append(pars, sysUser.AdminId)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ newCondition = condition
|
|
|
+ newPars = pars
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// getQueryParamsLastCompanyProduct 获取基础查询信息(最后一次正式转试用的时间点)
|
|
|
+func getQueryParamsLastCompanyProduct(condition string, pars []interface{}, sysUser *system.Admin, tableAlias string) (newCondition string, newPars []interface{}) {
|
|
|
+ if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN {
|
|
|
+ condition += " AND " + tableAlias + "product_id=?"
|
|
|
+ pars = append(pars, 1)
|
|
|
+ } else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
|
|
|
+ condition += " AND " + tableAlias + "product_id=?"
|
|
|
+ pars = append(pars, 2)
|
|
|
+ } else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FINANCE {
|
|
|
+ //超级管理员账户,不做条件限制
|
|
|
+ } else {
|
|
|
+ //如果不是研究员,那么去找对应的 部门、小组、销售
|
|
|
+ if sysUser.Authority == 0 {
|
|
|
+ //普通用户
|
|
|
+ condition += " AND " + tableAlias + "seller_id_last=?"
|
|
|
+ pars = append(pars, sysUser.AdminId)
|
|
|
+ } else if sysUser.Authority == 1 {
|
|
|
+ //部门主管
|
|
|
+ condition += " AND " + tableAlias + "department_id=?"
|
|
|
+ pars = append(pars, sysUser.DepartmentId)
|
|
|
+ } else if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP {
|
|
|
+ //权益小组负责人
|
|
|
+ condition += " AND " + tableAlias + "group_id=?"
|
|
|
+ pars = append(pars, sysUser.GroupId)
|
|
|
+ } else if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP {
|
|
|
+ //ficc销售主管
|
|
|
+ pid, err := company.GetParentIdFromGroup(sysUser.GroupId)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var ids []*string
|
|
|
+ if pid != nil && *pid != 0 {
|
|
|
+ ids, err = company.GetGroupIdsByParentId(*pid)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err.Error())
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ ids, err = company.GetGroupIdsByParentId(sysUser.GroupId)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err.Error())
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var idSlice []string
|
|
|
+ var sid string
|
|
|
+ for _, id := range ids {
|
|
|
+ idSlice = append(idSlice, *id)
|
|
|
+ }
|
|
|
+ //加入父级groupId
|
|
|
+ if *pid > 0 {
|
|
|
+ idSlice = append(idSlice, strconv.Itoa(*pid))
|
|
|
+ } else {
|
|
|
+ idSlice = append(idSlice, strconv.Itoa(sysUser.GroupId))
|
|
|
+ }
|
|
|
+ sid = strings.Join(idSlice, ",")
|
|
|
+ condition += " AND " + tableAlias + `group_id IN (` + sid + `) `
|
|
|
+ fmt.Println("condition:", condition)
|
|
|
+ //pars = append(pars, sysUser.GroupId)
|
|
|
+ } else if sysUser.Authority == 4 {
|
|
|
+ //ficc小组负责人
|
|
|
+ condition += " AND " + tableAlias + "group_id=?"
|
|
|
+ pars = append(pars, sysUser.GroupId)
|
|
|
+ } else {
|
|
|
+ //不知道什么类型的用户(后面新增的位置类型客户)
|
|
|
+ condition += " AND " + tableAlias + "seller_id_last=?"
|
|
|
+ pars = append(pars, sysUser.AdminId)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ newCondition = condition
|
|
|
+ newPars = pars
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
// Home
|
|
|
// @Title 获取首页工作台数据
|
|
|
// @Description 获取首页工作台数据接口
|
|
@@ -2339,35 +2559,218 @@ func StackCompanyListExport(this *StatisticReportController, dataType string, re
|
|
|
br.Msg = "导出成功"
|
|
|
}
|
|
|
|
|
|
-// 获取历史的数据
|
|
|
-func getHistoryStackCompanyList(sysUser *system.Admin, currentIndex, pageSize, isConfirm, companyAscribeId int, adminId, regionType, companyType, dataType, tryOutType, date, keyword string) (returnData response.StackCompanyListResp, err error) {
|
|
|
- if date == "" {
|
|
|
- err = errors.New("请选择日期")
|
|
|
+// StackCompanyListExportRai 获取存量客户数据报表导出
|
|
|
+func StackCompanyListExportRai(this *StatisticReportController, dataType string, resp response.StackCompanyListResp, br *models.BaseResponse) {
|
|
|
+ dir, err := os.Executable()
|
|
|
+ exPath := filepath.Dir(dir)
|
|
|
+ downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
|
|
|
+ xlsxFile := xlsx.NewFile()
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "生成文件失败"
|
|
|
+ br.ErrMsg = "生成文件失败"
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
- var startSize int
|
|
|
- if pageSize <= 0 {
|
|
|
- pageSize = utils.PageSize20
|
|
|
- }
|
|
|
- if currentIndex <= 0 {
|
|
|
- currentIndex = 1
|
|
|
+ style := xlsx.NewStyle()
|
|
|
+ alignment := xlsx.Alignment{
|
|
|
+ Horizontal: "center",
|
|
|
+ Vertical: "center",
|
|
|
+ WrapText: true,
|
|
|
}
|
|
|
- startSize = utils.StartIndex(currentIndex, pageSize)
|
|
|
|
|
|
- var condition string
|
|
|
- var pars []interface{}
|
|
|
+ style.Alignment = alignment
|
|
|
+ style.ApplyAlignment = true
|
|
|
|
|
|
- //条件
|
|
|
- condition += ` AND date = ? `
|
|
|
- pars = append(pars, date)
|
|
|
+ sheel, err := xlsxFile.AddSheet("存量客户数据")
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "新增Sheet失败"
|
|
|
+ br.ErrMsg = "新增Sheet失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ sheel.SetColWidth(0, 0, 30)
|
|
|
+ sheel.SetColWidth(1, 1, 15)
|
|
|
+ sheel.SetColWidth(2, 2, 15)
|
|
|
+ sheel.SetColWidth(3, 3, 18)
|
|
|
|
|
|
- var conditionAscribRai string // 处理权益未续约客户检索列表SQL查询条件
|
|
|
- var parsAscribeRai []interface{}
|
|
|
- //是否确认续约 CRM 13.9
|
|
|
- if isConfirm != -1 {
|
|
|
- var conditionConfirm string
|
|
|
- var parsConfirm []interface{}
|
|
|
+ //统计数据
|
|
|
+ statisticRow := sheel.AddRow()
|
|
|
+
|
|
|
+ cell1 := statisticRow.AddCell()
|
|
|
+ cell1.SetStyle(style)
|
|
|
+ cell1.SetValue(fmt.Sprint("新签客户数:", resp.NewCompanyTotal))
|
|
|
+
|
|
|
+ cell2 := statisticRow.AddCell()
|
|
|
+ cell2.SetStyle(style)
|
|
|
+ cell2.SetValue(fmt.Sprint("续约客户数:", resp.RenewalCompanyTotal))
|
|
|
+
|
|
|
+ cell3 := statisticRow.AddCell()
|
|
|
+ cell3.SetStyle(style)
|
|
|
+ cell3.SetValue(fmt.Sprint("未续约客户数:", resp.NotRenewalCompanyTotal))
|
|
|
+ //表头
|
|
|
+
|
|
|
+ titleRow := sheel.AddRow()
|
|
|
+
|
|
|
+ cellName := titleRow.AddCell()
|
|
|
+ cellName.SetStyle(style)
|
|
|
+ cellName.SetValue("客户名称")
|
|
|
+
|
|
|
+ cellProName := titleRow.AddCell()
|
|
|
+ cellProName.SetStyle(style)
|
|
|
+ cellProName.SetValue("客户类型")
|
|
|
+
|
|
|
+ cellSellerName := titleRow.AddCell()
|
|
|
+ cellSellerName.SetStyle(style)
|
|
|
+ cellSellerName.SetValue("所属销售")
|
|
|
+
|
|
|
+ switch dataType {
|
|
|
+ case "未续约客户":
|
|
|
+ cellTime := titleRow.AddCell()
|
|
|
+ cellTime.SetStyle(style)
|
|
|
+ cellTime.SetValue("最近合同到期时间")
|
|
|
+
|
|
|
+ cellRemark := titleRow.AddCell()
|
|
|
+ cellRemark.SetStyle(style)
|
|
|
+ cellRemark.SetValue("未续约说明")
|
|
|
+
|
|
|
+ cellDay := titleRow.AddCell()
|
|
|
+ cellDay.SetStyle(style)
|
|
|
+ cellDay.SetValue("超出过期天数")
|
|
|
+
|
|
|
+ cellAscribeContent := titleRow.AddCell()
|
|
|
+ cellAscribeContent.SetStyle(style)
|
|
|
+ cellAscribeContent.SetValue("不续约归因")
|
|
|
+
|
|
|
+ cellContent := titleRow.AddCell()
|
|
|
+ cellContent.SetStyle(style)
|
|
|
+ cellContent.SetValue("详细原因")
|
|
|
+ default:
|
|
|
+
|
|
|
+ cellShareSeller := titleRow.AddCell()
|
|
|
+ cellShareSeller.SetStyle(style)
|
|
|
+ cellShareSeller.SetValue("服务销售")
|
|
|
+
|
|
|
+ cellTime := titleRow.AddCell()
|
|
|
+ cellTime.SetStyle(style)
|
|
|
+ cellTime.SetValue("合同期限")
|
|
|
+
|
|
|
+ cellMoney := titleRow.AddCell()
|
|
|
+ cellMoney.SetStyle(style)
|
|
|
+ cellMoney.SetValue("合同金额")
|
|
|
+
|
|
|
+ cellPermissionName := titleRow.AddCell()
|
|
|
+ cellPermissionName.SetStyle(style)
|
|
|
+ cellPermissionName.SetValue("签约套餐")
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, v := range resp.List {
|
|
|
+ dataRow := sheel.AddRow()
|
|
|
+ dataRow.SetHeight(20)
|
|
|
+
|
|
|
+ cellDataName := dataRow.AddCell()
|
|
|
+ cellDataName.SetStyle(style)
|
|
|
+ cellDataName.SetValue(v.CompanyName)
|
|
|
+
|
|
|
+ cellDataProName := dataRow.AddCell()
|
|
|
+ cellDataProName.SetStyle(style)
|
|
|
+ cellDataProName.SetValue(v.ProductName)
|
|
|
+
|
|
|
+ cellDataSellerName := dataRow.AddCell()
|
|
|
+ cellDataSellerName.SetStyle(style)
|
|
|
+ cellDataSellerName.SetValue(v.SellerName)
|
|
|
+
|
|
|
+ if dataType != "未续约客户" {
|
|
|
+ cellDataShareSeller := dataRow.AddCell()
|
|
|
+ cellDataShareSeller.SetStyle(style)
|
|
|
+ cellDataShareSeller.SetValue(v.ShareSeller)
|
|
|
+ }
|
|
|
+
|
|
|
+ cellDataTime := dataRow.AddCell()
|
|
|
+ cellDataTime.SetStyle(style)
|
|
|
+ switch dataType {
|
|
|
+ case "新签客户":
|
|
|
+ cellDataTime.SetValue(fmt.Sprint(v.StartDate, " ~ ", v.EndDate))
|
|
|
+ case "续约客户":
|
|
|
+ cellDataTime.SetValue(fmt.Sprint(v.StartDate, " ~ ", v.EndDate))
|
|
|
+ case "未续约客户":
|
|
|
+ cellDataTime.SetValue(v.EndDate)
|
|
|
+
|
|
|
+ //未续约说明
|
|
|
+ cellDataRemark := dataRow.AddCell()
|
|
|
+ cellDataRemark.SetStyle(style)
|
|
|
+ cellDataRemark.SetValue(v.RenewalReason)
|
|
|
+
|
|
|
+ cellDay := dataRow.AddCell()
|
|
|
+ cellDay.SetStyle(style)
|
|
|
+ cellDay.SetValue(v.ExpireDay)
|
|
|
+ }
|
|
|
+
|
|
|
+ if dataType == "新签客户" || dataType == "续约客户" {
|
|
|
+ cellMoney := dataRow.AddCell()
|
|
|
+ cellMoney.SetStyle(style)
|
|
|
+ cellMoney.SetValue(v.Money)
|
|
|
+
|
|
|
+ cellPermissionName := dataRow.AddCell()
|
|
|
+ cellPermissionName.SetStyle(style)
|
|
|
+ cellPermissionName.SetValue(v.PermissionName)
|
|
|
+ }
|
|
|
+
|
|
|
+ switch dataType {
|
|
|
+ case "未续约客户":
|
|
|
+ cellAscribeContent := dataRow.AddCell()
|
|
|
+ cellAscribeContent.SetStyle(style)
|
|
|
+ cellAscribeContent.SetValue(v.AscribeContent)
|
|
|
+
|
|
|
+ cellContent := dataRow.AddCell()
|
|
|
+ cellContent.SetStyle(style)
|
|
|
+ cellContent.SetValue(v.Content)
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ err = xlsxFile.Save(downLoadnFilePath)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "保存文件失败"
|
|
|
+ br.ErrMsg = "保存文件失败"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ randStr := time.Now().Format(utils.FormatDateTimeUnSpace)
|
|
|
+ downloadFileName := "存量客户数据_" + randStr + ".xlsx"
|
|
|
+ this.Ctx.Output.Download(downLoadnFilePath, downloadFileName)
|
|
|
+ defer func() {
|
|
|
+ os.Remove(downLoadnFilePath)
|
|
|
+ }()
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "导出成功"
|
|
|
+}
|
|
|
+
|
|
|
+// 获取历史的数据
|
|
|
+func getHistoryStackCompanyList(sysUser *system.Admin, currentIndex, pageSize, isConfirm, companyAscribeId int, adminId, regionType, companyType, dataType, tryOutType, date, keyword string) (returnData response.StackCompanyListResp, err error) {
|
|
|
+ if date == "" {
|
|
|
+ err = errors.New("请选择日期")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ var startSize int
|
|
|
+ if pageSize <= 0 {
|
|
|
+ pageSize = utils.PageSize20
|
|
|
+ }
|
|
|
+ if currentIndex <= 0 {
|
|
|
+ currentIndex = 1
|
|
|
+ }
|
|
|
+ startSize = utils.StartIndex(currentIndex, pageSize)
|
|
|
+
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+
|
|
|
+ //条件
|
|
|
+ condition += ` AND date = ? `
|
|
|
+ pars = append(pars, date)
|
|
|
+
|
|
|
+ var conditionAscribRai string // 处理权益未续约客户检索列表SQL查询条件
|
|
|
+ var parsAscribeRai []interface{}
|
|
|
+ //是否确认续约 CRM 13.9
|
|
|
+ if isConfirm != -1 {
|
|
|
+ var conditionConfirm string
|
|
|
+ var parsConfirm []interface{}
|
|
|
|
|
|
companyConfirmList, e := company.GetCompanyNoRenewedAscribeList(conditionConfirm, parsConfirm, 0, 0)
|
|
|
if e != nil && e.Error() != utils.ErrNoRow() {
|
|
@@ -3802,6 +4205,9 @@ func (this *StatisticReportController) IncrementalCompanyList() {
|
|
|
item.AscribeContent = mapGetCompanyAscribeContent[fmt.Sprint("CID_", item.CompanyId, "PID_", item.ProductId)]
|
|
|
item.Content = mapContent[fmt.Sprint("CID_", item.CompanyId, "PID_", item.ProductId)]
|
|
|
item.IsShowNoRenewedNote = mapNoRenewedNote[fmt.Sprint("CID_", item.CompanyId, "PID_", item.ProductId)]
|
|
|
+ if item.ProductId == utils.COMPANY_PRODUCT_RAI_ID { //权益客户的销售,按照创建时候对应的销售展示
|
|
|
+ item.SellerName = item.SellerNameInit
|
|
|
+ }
|
|
|
}
|
|
|
list = tmpList
|
|
|
dataTotal = total
|
|
@@ -5734,7 +6140,7 @@ func (this *StatisticReportController) InvoicePaymentList() {
|
|
|
}
|
|
|
if sellerIdstr != "" {
|
|
|
//sellerIds := strings.Split(sellerIdstr, ",")
|
|
|
- cond += ` AND (c.seller_id in (` +sellerIdstr+ `) OR d.seller_id in (` +sellerIdstr+ `))`
|
|
|
+ cond += ` AND (c.seller_id in (` + sellerIdstr + `) OR d.seller_id in (` + sellerIdstr + `))`
|
|
|
//pars = append(pars, sellerIds, sellerIds)
|
|
|
}
|
|
|
// 套餐筛选
|
|
@@ -6530,3 +6936,475 @@ func (this *StatisticReportController) UnusualRenewCompanyList() {
|
|
|
br.Msg = "获取成功"
|
|
|
br.Data = resp
|
|
|
}
|
|
|
+
|
|
|
+// StackCompanyListRai
|
|
|
+// @Title 获取权益存量客户数据列表
|
|
|
+// @Description 获取权益存量客户数据列表接口
|
|
|
+// @Param PageSize query int true "每页数据条数"
|
|
|
+// @Param CurrentIndex query int true "当前页页码,从1开始"
|
|
|
+// @Param Keyword query string true "客户名称"
|
|
|
+// @Param AdminId query string true "销售id,多个用英文逗号隔开,空字符串为全部"
|
|
|
+// @Param RegionType query string false "所属区域:传空字符串或者不传为全部,'国内','海外'"
|
|
|
+// @Param DataType query string false "报表类型,枚举值:`新签客户`,`续约客户`,`未续约客户`"
|
|
|
+// @Param TryOutType query string false " '试用', '非试用' 非试用即为冻结/流失"
|
|
|
+// @Param IsExport query bool false "是否导出excel,默认是false"
|
|
|
+// @Param CompanyAscribeId query int false "归因ID"
|
|
|
+// @Success 200 {object} response.StackCompanyListResp
|
|
|
+// @router /stack_company_list_rai [get]
|
|
|
+func (this *StatisticReportController) StackCompanyListRai() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+
|
|
|
+ sysUser := this.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ pageSize, _ := this.GetInt("PageSize")
|
|
|
+ currentIndex, _ := this.GetInt("CurrentIndex")
|
|
|
+
|
|
|
+ //是否导出报表
|
|
|
+ isExport, _ := this.GetBool("IsExport")
|
|
|
+ if isExport {
|
|
|
+ pageSize = 10000
|
|
|
+ currentIndex = 1
|
|
|
+ }
|
|
|
+
|
|
|
+ adminId := this.GetString("AdminId")
|
|
|
+ regionType := this.GetString("RegionType")
|
|
|
+ companyType := this.GetString("CompanyType")
|
|
|
+ dataType := this.GetString("DataType")
|
|
|
+ tryOutType := this.GetString("TryOutType")
|
|
|
+ keyword := this.GetString("Keyword")
|
|
|
+
|
|
|
+ companyAscribeId, _ := this.GetInt("CompanyAscribeId", -1) // CRM 13.9
|
|
|
+
|
|
|
+ var resp response.StackCompanyListResp
|
|
|
+ //历史统计数据
|
|
|
+ //获取实时统计数据(今天数据)
|
|
|
+ tmpResp, err := getTodayStackCompanyListV2Rai(sysUser, currentIndex, pageSize, companyAscribeId, adminId, regionType, companyType, dataType, tryOutType, keyword)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp = tmpResp
|
|
|
+
|
|
|
+ //导出excel
|
|
|
+ if isExport {
|
|
|
+ StackCompanyListExportRai(this, dataType, resp, br)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+}
|
|
|
+
|
|
|
+func getTodayStackCompanyListV2Rai(sysUser *system.Admin, currentIndex, pageSize, companyAscribeId int, adminId, regionType, companyType, dataType, tryOutType, keyword string) (returnData response.StackCompanyListResp, err error) {
|
|
|
+ var startSize int
|
|
|
+ if pageSize <= 0 {
|
|
|
+ pageSize = utils.PageSize20
|
|
|
+ }
|
|
|
+ if currentIndex <= 0 {
|
|
|
+ currentIndex = 1
|
|
|
+ }
|
|
|
+ startSize = utils.StartIndex(currentIndex, pageSize)
|
|
|
+
|
|
|
+ var condition, listCondition string
|
|
|
+ var pars, listPars []interface{}
|
|
|
+
|
|
|
+ today := utils.GetToday(utils.FormatDate)
|
|
|
+ //条件
|
|
|
+ var conditionAscribRai string // 处理权益未续约客户检索列表SQL查询条件
|
|
|
+ var parsAscribeRai []interface{}
|
|
|
+
|
|
|
+ //归因ID CRM 13.9
|
|
|
+ if companyAscribeId > 0 {
|
|
|
+ var conditionAscribe string
|
|
|
+ var parsAscribe []interface{}
|
|
|
+ conditionAscribe = " AND company_ascribe_id = ? "
|
|
|
+ parsAscribe = append(parsAscribe, companyAscribeId)
|
|
|
+ companyNoRenewedAscribeList, e := company.GetCompanyNoRenewedAscribeList(conditionAscribe, parsAscribe, 0, 0)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ err = errors.New("GetCompanyNoRenewedAscribeList" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var companyIds []int
|
|
|
+ if len(companyNoRenewedAscribeList) == 0 {
|
|
|
+ companyIds = append(companyIds, 0) // 给一个不存在的ID
|
|
|
+ } else {
|
|
|
+ for _, v := range companyNoRenewedAscribeList {
|
|
|
+ companyIds = append(companyIds, v.CompanyId)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ conditionAscribRai += ` AND c.company_id IN (` + utils.GetOrmInReplace(len(companyIds)) + `)`
|
|
|
+ parsAscribeRai = append(parsAscribeRai, companyIds)
|
|
|
+ }
|
|
|
+
|
|
|
+ //if adminId != "" {
|
|
|
+ // //condition += ` AND c.seller_id in (` + adminId + `) `
|
|
|
+ // //pars = append(pars, adminId)
|
|
|
+ //} else {
|
|
|
+ // //根据当前角色来获取查询条件
|
|
|
+ // condition, pars = getQueryParamsInit(condition, pars, sysUser, "c.")
|
|
|
+ //
|
|
|
+ //}
|
|
|
+ if regionType != "" {
|
|
|
+ condition += ` AND b.region_type = ? `
|
|
|
+ pars = append(pars, regionType)
|
|
|
+ }
|
|
|
+ //关键字搜索
|
|
|
+ if keyword != "" {
|
|
|
+ condition += ` and b.company_name like "%` + keyword + `%" `
|
|
|
+ }
|
|
|
+
|
|
|
+ condition += ` AND a.product_id = ? `
|
|
|
+ pars = append(pars, 2)
|
|
|
+
|
|
|
+ var dataTotal, newCompanyTotal, renewalCompanyTotal, notRenewalCompanyTotal int
|
|
|
+ var notRenewalTryOut, notRenewalNotTryOut int
|
|
|
+ var list []*models.IncrementalList
|
|
|
+
|
|
|
+ //var condition1 string
|
|
|
+ //var pars1 []interface{}
|
|
|
+ //新签客户数
|
|
|
+ {
|
|
|
+ //if adminId != "" {
|
|
|
+ // //condition += ` AND c.seller_id in (` + adminId + `) `
|
|
|
+ // //pars = append(pars, adminId)
|
|
|
+ //} else {
|
|
|
+ // //根据当前角色来获取查询条件
|
|
|
+ // condition, pars = getQueryParamsInit(condition, pars, sysUser, "c.")
|
|
|
+ //
|
|
|
+ //}
|
|
|
+ condition1 := condition
|
|
|
+ pars1 := pars
|
|
|
+ if adminId != "" {
|
|
|
+ condition1 += ` AND a.seller_id_init in (` + adminId + `) `
|
|
|
+ } else {
|
|
|
+ condition1, pars1 = getQueryParamsInit(condition1, pars1, sysUser, "c.")
|
|
|
+ //condition1 += condition2
|
|
|
+ //pars1 = append(pars1, pars2)
|
|
|
+ }
|
|
|
+
|
|
|
+ //condition1 += condition
|
|
|
+ //pars1 := pars
|
|
|
+ //condition1 += ` AND c.status = "正式" `
|
|
|
+ condition1 += ` AND a.start_date <= ? AND a.end_date >= ? `
|
|
|
+ pars1 = append(pars1, today, today)
|
|
|
+ condition1 += ` AND a.contract_type = ? `
|
|
|
+ pars1 = append(pars1, "新签合同")
|
|
|
+
|
|
|
+ total, countErr := models.GetIncrementalNewCompanyCount(condition1, pars1)
|
|
|
+ if countErr != nil && countErr.Error() != utils.ErrNoRow() {
|
|
|
+ err = countErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ newCompanyTotal = total
|
|
|
+
|
|
|
+ if dataType == "新签客户" {
|
|
|
+ //页表页数据总和
|
|
|
+ total, countErr = models.GetTodayStackCompanyProductCount(condition1, pars1)
|
|
|
+ if countErr != nil && countErr.Error() != utils.ErrNoRow() {
|
|
|
+ err = countErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ dataTotal = total
|
|
|
+ listCondition = condition1
|
|
|
+ listPars = pars1
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //续约客户数
|
|
|
+ {
|
|
|
+ condition1 := condition
|
|
|
+ pars1 := pars
|
|
|
+ if adminId != "" {
|
|
|
+ condition1 += ` AND a.seller_id_init in (` + adminId + `) `
|
|
|
+ } else {
|
|
|
+ condition1, pars1 = getQueryParamsInit(condition1, pars1, sysUser, "c.")
|
|
|
+ }
|
|
|
+ //condition1 += condition
|
|
|
+ //pars1 = append(pars1, pars)
|
|
|
+ //pars1 := pars
|
|
|
+ //condition1 += ` AND c.status = "正式" `
|
|
|
+ condition1 += ` AND a.start_date <= ? AND a.end_date >= ? `
|
|
|
+ pars1 = append(pars1, today, today)
|
|
|
+ condition1 += ` AND a.contract_type = ? `
|
|
|
+ pars1 = append(pars1, "续约合同")
|
|
|
+
|
|
|
+ //额外条件(续约合同的起始日期包含在所选时间段内且不包含在新签合同存续期内的客户)
|
|
|
+ pars1 = append(pars1, today)
|
|
|
+ total, countErr := models.GetIncrementalNewCompanyCountV2(condition1, pars1)
|
|
|
+ if countErr != nil && countErr.Error() != utils.ErrNoRow() {
|
|
|
+ err = countErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ renewalCompanyTotal = total
|
|
|
+
|
|
|
+ if dataType == "续约客户" {
|
|
|
+ //页表页数据总和
|
|
|
+ total, countErr = models.GetTodayStackCompanyProductCountV2(condition1, pars1)
|
|
|
+ if countErr != nil && countErr.Error() != utils.ErrNoRow() {
|
|
|
+ err = countErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ dataTotal = total
|
|
|
+ listCondition = condition1
|
|
|
+ listPars = pars1
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //未续约客户数
|
|
|
+ {
|
|
|
+ condition1 := condition
|
|
|
+ pars1 := pars
|
|
|
+ if adminId != "" {
|
|
|
+ //condition1 += ` AND a.seller_id_last in (` + adminId + `) `
|
|
|
+ condition1 += ` AND c.seller_id_last in (` + adminId + `) `
|
|
|
+ } else {
|
|
|
+ condition1, pars1 = getQueryParamsLastCompanyProduct(condition1, pars1, sysUser, "c.")
|
|
|
+ }
|
|
|
+
|
|
|
+ //condition1 += condition
|
|
|
+ //pars1 = append(pars1, pars)
|
|
|
+
|
|
|
+ //condition1 := condition
|
|
|
+ //pars1 := pars
|
|
|
+ condition1 += ` AND c.status not in ("永续","正式") AND a.create_time <= ? `
|
|
|
+ pars1 = append(pars1, time.Now().Format(utils.FormatDateTime))
|
|
|
+ condition1 += ` AND a.operation = 'try_out' `
|
|
|
+
|
|
|
+ total, countErr := models.GetIncrementalCompanyCountByOperationRecord(condition1, pars1)
|
|
|
+ if countErr != nil && countErr.Error() != utils.ErrNoRow() {
|
|
|
+ err = countErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ notRenewalCompanyTotal = total
|
|
|
+ condition1 += conditionAscribRai
|
|
|
+ pars1 = append(pars1, parsAscribeRai)
|
|
|
+ if dataType == "未续约客户" {
|
|
|
+ //页表页数据总和
|
|
|
+ //统计数据
|
|
|
+ for _, v := range []string{"试用", "非试用"} {
|
|
|
+ totalCondition1 := condition1
|
|
|
+ totalPars1 := pars1
|
|
|
+ var tmpTotal int
|
|
|
+ if v == "试用" {
|
|
|
+ totalCondition1 += ` AND c.status = "试用" `
|
|
|
+ tmpTotal, err = models.GetIncrementalCompanyProductCountByOperationRecord(totalCondition1, totalPars1)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ notRenewalTryOut = tmpTotal
|
|
|
+ } else if v == "非试用" {
|
|
|
+ totalCondition1 += ` AND c.status IN ("冻结","流失") `
|
|
|
+ tmpTotal, err = models.GetIncrementalCompanyProductCountByOperationRecord(totalCondition1, totalPars1)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ notRenewalNotTryOut = tmpTotal
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ //列表数据数量
|
|
|
+ if tryOutType == "试用" {
|
|
|
+ condition1 += ` AND c.status = "试用" `
|
|
|
+ total = notRenewalTryOut
|
|
|
+ } else if tryOutType == "非试用" {
|
|
|
+ condition1 += ` AND c.status IN ("冻结","流失") `
|
|
|
+ total = notRenewalNotTryOut
|
|
|
+ }
|
|
|
+
|
|
|
+ //total, countErr := models.GetIncrementalCompanyProductCountByOperationRecord(condition1, pars1)
|
|
|
+ //if countErr != nil && countErr.Error() != utils.ErrNoRow() {
|
|
|
+ // err = countErr
|
|
|
+ // return
|
|
|
+ //}
|
|
|
+
|
|
|
+ dataTotal = total
|
|
|
+ listCondition = condition1
|
|
|
+ listPars = pars1
|
|
|
+ if tryOutType == "试用" {
|
|
|
+ listCondition += ` AND c.status = "试用" `
|
|
|
+ } else if tryOutType == "非试用" {
|
|
|
+ listCondition += ` AND c.status IN ("冻结","流失") `
|
|
|
+ }
|
|
|
+ tmpList, countErr := models.GetIncrementalCompanyListByOperationRecordLast(listCondition, listPars, startSize, pageSize)
|
|
|
+ if countErr != nil {
|
|
|
+ err = countErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for i := 0; i < len(tmpList); i++ {
|
|
|
+ endDateTime, parseErr := time.Parse(utils.FormatDateTime, tmpList[i].CreateTime)
|
|
|
+ if parseErr != nil {
|
|
|
+ err = parseErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ tmpList[i].EndDate = endDateTime.Format(utils.FormatDate)
|
|
|
+ }
|
|
|
+ list = tmpList
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ switch dataType {
|
|
|
+ case "新签客户":
|
|
|
+ tmpList, countErr := models.GetTodayStackCompanyList(listCondition, listPars, startSize, pageSize)
|
|
|
+ if countErr != nil {
|
|
|
+ err = countErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ list = tmpList
|
|
|
+ case "续约客户":
|
|
|
+ tmpList, countErr := models.GetTodayStackCompanyListV2(listCondition, listPars, startSize, pageSize)
|
|
|
+ if countErr != nil {
|
|
|
+ err = countErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ list = tmpList
|
|
|
+ }
|
|
|
+
|
|
|
+ if dataType == "续约客户" {
|
|
|
+ var ids []string
|
|
|
+ oldCompanyMap := make(map[int]*models.IncrementalList)
|
|
|
+ oldMoneyMap := make(map[int]float64)
|
|
|
+ countMap := make(map[int]int)
|
|
|
+ for _, item := range list {
|
|
|
+ ids = append(ids, strconv.Itoa(item.CompanyId))
|
|
|
+ }
|
|
|
+ if len(ids) > 0 {
|
|
|
+ idStr := strings.Join(ids, ",")
|
|
|
+ lists, contractErr := models.GetLastContractMoney(idStr)
|
|
|
+ if contractErr != nil {
|
|
|
+ err = contractErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, item := range lists {
|
|
|
+ _, countOk := countMap[item.CompanyId]
|
|
|
+ _, ok := oldCompanyMap[item.CompanyId]
|
|
|
+ if !ok {
|
|
|
+ oldCompanyMap[item.CompanyId] = item
|
|
|
+ oldMoneyMap[item.CompanyId] = item.Money
|
|
|
+ } else if !countOk {
|
|
|
+ countMap[item.CompanyId] = 1
|
|
|
+ oldCompanyMap[item.CompanyId] = item
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //给list赋值
|
|
|
+ for _, item := range list {
|
|
|
+ if item.ProductName == "权益" {
|
|
|
+ oldMoney, _ := oldMoneyMap[item.CompanyId]
|
|
|
+ lastContract, _ := oldCompanyMap[item.CompanyId]
|
|
|
+ if oldMoney > lastContract.Money {
|
|
|
+ item.PackageDifference = "增加套餐"
|
|
|
+ } else if oldMoney < lastContract.Money {
|
|
|
+ item.PackageDifference = "减少套餐"
|
|
|
+ } else {
|
|
|
+ item.PackageDifference = "维持套餐"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ var ascribecompanyIds []int
|
|
|
+ for _, item := range list {
|
|
|
+ ascribecompanyIds = append(ascribecompanyIds, item.CompanyId)
|
|
|
+ }
|
|
|
+ //归因标签
|
|
|
+ mapGetCompanyAscribeContent, mapContent := services.GetCompanyAscribeContentMap(ascribecompanyIds)
|
|
|
+ mapNoRenewedNote := services.GetCompanyNoRenewedNoteMap(ascribecompanyIds)
|
|
|
+ mapIsUserMaker := cygxService.GetCompanyProductIsUserMakerByCompanyIds(ascribecompanyIds) //根据公司ID获取近四周之内有决策人互动的客户
|
|
|
+ for _, item := range list {
|
|
|
+ item.AscribeContent = mapGetCompanyAscribeContent[fmt.Sprint("CID_", item.CompanyId, "PID_", item.ProductId)]
|
|
|
+ item.Content = mapContent[fmt.Sprint("CID_", item.CompanyId, "PID_", item.ProductId)]
|
|
|
+ item.IsShowNoRenewedNote = mapNoRenewedNote[fmt.Sprint("CID_", item.CompanyId, "PID_", item.ProductId)]
|
|
|
+ }
|
|
|
+
|
|
|
+ listLen := len(list)
|
|
|
+ var companyContractIds []int
|
|
|
+ for i := 0; i < listLen; i++ {
|
|
|
+ item := list[i]
|
|
|
+
|
|
|
+ //剩余可用天数
|
|
|
+ expireDay := "0"
|
|
|
+ endDateTime, _ := time.Parse(utils.FormatDate, item.EndDate)
|
|
|
+ var sub time.Duration
|
|
|
+ if dataType != "未续约客户" {
|
|
|
+ endDateTime = endDateTime.AddDate(0, 0, 1)
|
|
|
+ sub = endDateTime.Sub(time.Now())
|
|
|
+ //if sub < 0 {
|
|
|
+ // sub = 0
|
|
|
+ //}
|
|
|
+ } else {
|
|
|
+ sub = time.Now().Sub(endDateTime)
|
|
|
+ }
|
|
|
+ expireDay = fmt.Sprintf("%v", int(sub.Hours()/24))
|
|
|
+ list[i].ExpireDay = expireDay
|
|
|
+ companyContractIds = append(companyContractIds, item.CompanyContractId)
|
|
|
+ }
|
|
|
+
|
|
|
+ //合并合同所对应的权限
|
|
|
+ mappermissionName, err := cygxService.GetCompanyContractPermissionNameMapById(companyContractIds)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range list {
|
|
|
+ v.PermissionName = mappermissionName[v.CompanyContractId]
|
|
|
+ }
|
|
|
+
|
|
|
+ var stackCompanyStatisticList []*models.StackCompanyStatisticList
|
|
|
+ for _, v := range list {
|
|
|
+ stackCompanyStatistic := models.StackCompanyStatisticList{
|
|
|
+ Type: dataType,
|
|
|
+ CompanyId: v.CompanyId,
|
|
|
+ CompanyName: v.CompanyName,
|
|
|
+ ProductId: v.ProductId,
|
|
|
+ ProductName: v.ProductName,
|
|
|
+ ContractNum: v.Count,
|
|
|
+ SellerId: v.SellerId,
|
|
|
+ SellerName: v.SellerNameInit,
|
|
|
+ ShareSeller: v.ShareSellerInit,
|
|
|
+ Date: today,
|
|
|
+ StartDate: v.StartDate,
|
|
|
+ EndDate: v.EndDate,
|
|
|
+ RegionType: v.RegionType,
|
|
|
+ //CreateTime :v.CreateTime,
|
|
|
+ CreateTimeStr: v.CreateTime,
|
|
|
+ ExpireDay: v.ExpireDay,
|
|
|
+ RenewalReason: v.RenewalReason,
|
|
|
+ RenewalTodo: v.RenewalTodo,
|
|
|
+ Status: v.Status,
|
|
|
+ PackageDifference: v.PackageDifference,
|
|
|
+ AscribeContent: v.AscribeContent,
|
|
|
+ IsShowNoRenewedNote: v.IsShowNoRenewedNote,
|
|
|
+ Content: v.Content,
|
|
|
+ PermissionName: mappermissionName[v.CompanyContractId],
|
|
|
+ Money: v.Money,
|
|
|
+ IsUserMaker: mapIsUserMaker[v.CompanyId],
|
|
|
+ }
|
|
|
+ stackCompanyStatisticList = append(stackCompanyStatisticList, &stackCompanyStatistic)
|
|
|
+ }
|
|
|
+ page := paging.GetPaging(currentIndex, pageSize, dataTotal)
|
|
|
+ resp := response.StackCompanyListResp{
|
|
|
+ Paging: page,
|
|
|
+ List: stackCompanyStatisticList,
|
|
|
+ NewCompanyTotal: newCompanyTotal,
|
|
|
+ RenewalCompanyTotal: renewalCompanyTotal,
|
|
|
+ NotRenewalCompanyTotal: notRenewalCompanyTotal,
|
|
|
+ NotRenewalTryOut: notRenewalTryOut,
|
|
|
+ NotRenewalNotTryOut: notRenewalNotTryOut,
|
|
|
+ }
|
|
|
+ return resp, err
|
|
|
+}
|