rai_data_summary.go 54 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363
  1. package statistic
  2. import (
  3. "fmt"
  4. "github.com/rdlucklib/rdluck_tools/paging"
  5. "hongze/hz_crm_api/controllers"
  6. "hongze/hz_crm_api/models"
  7. "hongze/hz_crm_api/models/company"
  8. "hongze/hz_crm_api/models/fms"
  9. "hongze/hz_crm_api/models/statistic_report"
  10. "hongze/hz_crm_api/models/system"
  11. "hongze/hz_crm_api/services"
  12. cygxService "hongze/hz_crm_api/services/cygx"
  13. "hongze/hz_crm_api/utils"
  14. "strconv"
  15. "strings"
  16. "time"
  17. )
  18. // 权益数据汇总
  19. // StatisticRaiDataSummaryController 权益数据汇总基类
  20. type StatisticRaiDataSummaryController struct {
  21. controllers.BaseAuthController
  22. }
  23. // MergeCompanyList
  24. // @Title 权益数据汇总
  25. // @Description 权益数据汇总统计列表接口
  26. // @Param AdminId query string true "开拓组销售id,多个用英文逗号隔开,空字符串为全部"
  27. // @Param ServiceAdminId query string true "服务组销售id,多个用英文逗号隔开,空字符串为全部"
  28. // @Param StartYear query int false "开始日期(年份)"
  29. // @Param EndYear query int false "结束日期(年份)"
  30. // @Param DataType query string false "报表类型,枚举值:`季度`,`年度`,`半年度`"
  31. // @Param DevelopButton query int false "开拓组开关,枚举值:1:开启,0:关闭 ,默认关闭"
  32. // @Param ServerButton query int false "服务组开关,枚举值:1:开启,0:关闭 ,默认关闭"
  33. // @Param ContractButtonType query string false "开关类型,:`新签`,`续约`,`收入` 多个用英文逗号隔开, "
  34. // @Param IsExport query bool false "是否导出excel,默认是false"
  35. // @Success 200 {object} statistic_report.RaiDataSummaryListResp
  36. // @router /rai_data_summary/list [get]
  37. func (this *StatisticRaiDataSummaryController) RaiDataSummaryList() {
  38. br := new(models.BaseResponse).Init()
  39. defer func() {
  40. this.Data["json"] = br
  41. this.ServeJSON()
  42. }()
  43. sysUser := this.SysUser
  44. if sysUser == nil {
  45. br.Msg = "请登录"
  46. br.ErrMsg = "请登录,SysUser Is Empty"
  47. br.Ret = 408
  48. return
  49. }
  50. dataType := this.GetString("DataType")
  51. adminId := this.GetString("AdminId")
  52. serviceAdminId := this.GetString("ServiceAdminId")
  53. startYear, _ := this.GetInt("StartYear")
  54. endYear, _ := this.GetInt("EndYear")
  55. developButton, _ := this.GetBool("DevelopButton")
  56. serverButton, _ := this.GetBool("ServerButton")
  57. dataTypeArr := []string{}
  58. if dataType == "季度" {
  59. dataTypeArr = []string{"Q1", "Q2", "Q3", "Q4"}
  60. } else if dataType == "半年度" {
  61. dataTypeArr = []string{"H1", "H2"}
  62. } else {
  63. dataTypeArr = []string{""}
  64. }
  65. condition := " AND role_type_code IN ('rai_seller','rai_group') AND enabled = 1 AND rai_enabled = 1 "
  66. var pars []interface{}
  67. if adminId != "" {
  68. serviceAdminId = ""
  69. condition += " AND admin_id IN (" + adminId + ") "
  70. }
  71. if serviceAdminId != "" {
  72. condition += " AND admin_id IN (" + serviceAdminId + ") "
  73. }
  74. if developButton && !serverButton && adminId == "" && serviceAdminId == "" { //开拓组筛选条件
  75. condition += " AND real_name NOT LIKE '%6%' "
  76. }
  77. if !developButton && serverButton && adminId == "" && serviceAdminId == "" { //服务组筛选条件
  78. condition += " AND real_name LIKE '%6%' "
  79. }
  80. sellerList, err := system.GetSysUserItemsOrderByCreated(condition, pars)
  81. if err != nil {
  82. br.Msg = "获取管理账号失败"
  83. br.ErrMsg = "获取管理账号失败,Err:" + err.Error()
  84. return
  85. }
  86. var sellerDevelop []*system.AdminItem // 开拓组销售
  87. var sellerService []*system.AdminItem // 服务组销售
  88. var sellerDevelopIds = make(map[int]bool) // 开拓组销售的map
  89. for _, v := range sellerList {
  90. if strings.Contains(v.RealName, "6") {
  91. sellerService = append(sellerService, v)
  92. } else {
  93. sellerDevelop = append(sellerDevelop, v)
  94. sellerDevelopIds[v.AdminId] = true
  95. }
  96. }
  97. //拼接起始时间查询
  98. startDate := fmt.Sprintf("%d-01-01", startYear)
  99. endDate := fmt.Sprintf("%d-12-31", endYear)
  100. //新签部分的数据
  101. var conditionRai string
  102. var parsRai []interface{}
  103. conditionRai = " AND a.product_id = 2 AND a.status = 1 AND a.start_date >= ? AND a.start_date <= ? "
  104. parsRai = append(parsRai, startDate, endDate)
  105. listRaiData, err := statistic_report.GetRaiDataSummaryList(conditionRai, parsRai)
  106. if err != nil {
  107. br.Msg = "获取数据信息失败"
  108. br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
  109. return
  110. }
  111. //续约部分的数据
  112. var conditionInherit string
  113. var parsInherit []interface{}
  114. conditionInherit = " AND a.product_id = 2 AND a.status = 1 AND a.inherit_end_date >= ? AND a.inherit_end_date <= ? "
  115. parsInherit = append(parsInherit, startDate, endDate)
  116. listInheritData, err := statistic_report.GetRaiDataSummaryInheritList(conditionInherit, parsInherit)
  117. if err != nil {
  118. br.Msg = "获取数据信息失败"
  119. br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
  120. return
  121. }
  122. //确认不续约、到期合同部分的数据
  123. var conditionEnd string
  124. var parsEnd []interface{}
  125. conditionEnd = " AND a.product_id = 2 AND a.status = 1 AND a.end_date >= ? AND a.end_date <= ? AND a.end_date <= ? "
  126. parsEnd = append(parsEnd, startDate, endDate, time.Now().Format(utils.FormatDate))
  127. listEndData, err := statistic_report.GetRaiDataSummaryList(conditionEnd, parsEnd)
  128. if err != nil {
  129. br.Msg = "获取数据信息失败"
  130. br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
  131. return
  132. }
  133. var conditionConfirm string
  134. var parsConfirm []interface{}
  135. mapNoRenewedcompanyContractIds := make(map[int]bool) //已经确定未续约的合同ID
  136. conditionConfirm = " AND company_ascribe_id != 9 "
  137. companyConfirmList, err := company.GetCompanyContractNoRenewedAscribeList(conditionConfirm, parsConfirm, 0, 0)
  138. if err != nil && err.Error() != utils.ErrNoRow() {
  139. br.Msg = "获取失败"
  140. br.ErrMsg = "获取失败,GetCompanyNoRenewedAscribeList Err:" + err.Error()
  141. return
  142. }
  143. for _, v := range companyConfirmList {
  144. mapNoRenewedcompanyContractIds[v.CompanyContractId] = true
  145. }
  146. mapAddTrialNum := make(map[string]float64) // 新增试用-(数据)
  147. mapNewContractMoney := make(map[string]float64) // 新签合同(金额)
  148. mapNewContractNum := make(map[string]int) // 新签合同(数量)
  149. mapExpiredContractMoney := make(map[string]float64) // 到期合同(金额)
  150. mapExpiredContractNum := make(map[string]int) // 到期合同(数量)
  151. mapRenewedContractMoney := make(map[string]float64) // 续约合同(金额)
  152. mapRenewedContractNum := make(map[string]int) // 续约合同(数量)
  153. confirmedNoRenewalContractMoney := make(map[string]float64) // 确认不续约合同(金额)
  154. confirmedNoRenewalContractNum := make(map[string]int) // 确认不续约合同(数量)
  155. mapSignedClientNum := make(map[string]int) // 签约客户(数量)
  156. mapSignedClientMoney := make(map[string]float64) // 签约客户(金额)
  157. mapInvoiceAmountMoney := make(map[string]float64) // 财务系统开票金额(金额)
  158. mapPaymentAmountMoney := make(map[string]float64) // 财务系统到款金额(金额)
  159. mapNewCustomerInvoicingMoney := make(map[string]float64) // 财务系统新客开票金额(金额)
  160. mapNewCustomerPaymentsReceivedMoney := make(map[string]float64) // 财务系统新客到款金额(金额)
  161. var keyMap string
  162. var keyMapTtoal string
  163. var keyMapTtoalServer string
  164. //新签部分的数据
  165. for _, v := range listRaiData {
  166. startDateTime := utils.StrDateToDate(v.StartDate)
  167. monthNum := startDateTime.Month()
  168. yearStr := strconv.Itoa(startDateTime.Year())
  169. if dataType == "季度" {
  170. if monthNum < 4 {
  171. yearStr += "Q1"
  172. } else if monthNum > 3 && monthNum < 7 {
  173. yearStr += "Q2"
  174. } else if monthNum > 6 && monthNum < 10 {
  175. yearStr += "Q3"
  176. } else if monthNum > 9 {
  177. yearStr += "Q4"
  178. }
  179. } else if dataType == "半年度" {
  180. if monthNum < 7 {
  181. yearStr += "H1"
  182. } else {
  183. yearStr += "H2"
  184. }
  185. }
  186. keyMap = fmt.Sprint(yearStr, "_", v.SellerIdLast)
  187. if sellerDevelopIds[v.SellerIdLast] == true {
  188. keyMapTtoal = fmt.Sprint(yearStr, "_Develop")
  189. } else {
  190. keyMapTtoal = fmt.Sprint(yearStr, "_Service")
  191. }
  192. if v.RaiContractType == "新签合同" {
  193. mapNewContractMoney[keyMap] += v.Money
  194. mapNewContractNum[keyMap]++
  195. mapNewContractMoney[keyMapTtoal] += v.Money
  196. mapNewContractNum[keyMapTtoal]++
  197. }
  198. //else if v.RaiContractType == "续约合同" {
  199. // mapRenewedContractMoney[keyMap] += v.Money
  200. // mapRenewedContractNum[keyMap]++
  201. //
  202. // mapRenewedContractMoney[keyMapTtoal] += v.Money
  203. // mapRenewedContractNum[keyMapTtoal]++
  204. //}
  205. //if startDateTime.Before(time.Now().AddDate(0, 0, -1)) { //到期合同数据
  206. // mapExpiredContractMoney[keyMap] += v.Money
  207. // mapExpiredContractNum[keyMap]++
  208. //
  209. // mapExpiredContractMoney[keyMapTtoal] += v.Money
  210. // mapExpiredContractNum[keyMapTtoal]++
  211. //}
  212. //
  213. //if mapNoRenewedcompanyContractIds[v.CompanyContractId] { // 确认不续约合同
  214. // confirmedNoRenewalContractMoney[keyMap] += v.Money
  215. // confirmedNoRenewalContractNum[keyMap]++
  216. //
  217. // confirmedNoRenewalContractMoney[keyMapTtoal] += v.Money
  218. // confirmedNoRenewalContractNum[keyMapTtoal]++
  219. //}
  220. mapSignedClientMoney[keyMap] += v.Money
  221. mapSignedClientNum[keyMap]++
  222. mapSignedClientMoney[keyMapTtoal] += v.Money
  223. mapSignedClientNum[keyMapTtoal]++
  224. }
  225. //续约部分的数据
  226. for _, v := range listInheritData {
  227. startDateTime := utils.StrDateToDate(v.InheritEndDate)
  228. monthNum := startDateTime.Month()
  229. yearStr := strconv.Itoa(startDateTime.Year())
  230. if dataType == "季度" {
  231. if monthNum < 4 {
  232. yearStr += "Q1"
  233. } else if monthNum > 3 && monthNum < 7 {
  234. yearStr += "Q2"
  235. } else if monthNum > 6 && monthNum < 10 {
  236. yearStr += "Q3"
  237. } else if monthNum > 9 {
  238. yearStr += "Q4"
  239. }
  240. } else if dataType == "半年度" {
  241. if monthNum < 7 {
  242. yearStr += "H1"
  243. } else {
  244. yearStr += "H2"
  245. }
  246. }
  247. keyMap = fmt.Sprint(yearStr, "_", v.SellerIdLast)
  248. if sellerDevelopIds[v.SellerIdLast] == true {
  249. keyMapTtoal = fmt.Sprint(yearStr, "_Develop")
  250. } else {
  251. keyMapTtoal = fmt.Sprint(yearStr, "_Service")
  252. }
  253. //续约合同 数据
  254. mapRenewedContractMoney[keyMap] += v.Money
  255. mapRenewedContractNum[keyMap]++
  256. mapRenewedContractMoney[keyMapTtoal] += v.Money
  257. mapRenewedContractNum[keyMapTtoal]++
  258. }
  259. //确认不续约、到期合同部分的数据
  260. for _, v := range listEndData {
  261. startDateTime := utils.StrDateToDate(v.EndDate)
  262. monthNum := startDateTime.Month()
  263. yearStr := strconv.Itoa(startDateTime.Year())
  264. if dataType == "季度" {
  265. if monthNum < 4 {
  266. yearStr += "Q1"
  267. } else if monthNum > 3 && monthNum < 7 {
  268. yearStr += "Q2"
  269. } else if monthNum > 6 && monthNum < 10 {
  270. yearStr += "Q3"
  271. } else if monthNum > 9 {
  272. yearStr += "Q4"
  273. }
  274. } else if dataType == "半年度" {
  275. if monthNum < 7 {
  276. yearStr += "H1"
  277. } else {
  278. yearStr += "H2"
  279. }
  280. }
  281. keyMap = fmt.Sprint(yearStr, "_", v.SellerIdLast)
  282. if sellerDevelopIds[v.SellerIdLast] == true {
  283. keyMapTtoal = fmt.Sprint(yearStr, "_Develop")
  284. } else {
  285. keyMapTtoal = fmt.Sprint(yearStr, "_Service")
  286. }
  287. //到期合同数据
  288. mapExpiredContractMoney[keyMap] += v.Money
  289. mapExpiredContractNum[keyMap]++
  290. mapExpiredContractMoney[keyMapTtoal] += v.Money
  291. mapExpiredContractNum[keyMapTtoal]++
  292. if mapNoRenewedcompanyContractIds[v.CompanyContractId] { // 确认不续约合同
  293. confirmedNoRenewalContractMoney[keyMap] += v.Money
  294. confirmedNoRenewalContractNum[keyMap]++
  295. confirmedNoRenewalContractMoney[keyMapTtoal] += v.Money
  296. confirmedNoRenewalContractNum[keyMapTtoal]++
  297. }
  298. }
  299. fmt.Println(confirmedNoRenewalContractNum)
  300. listFmsData, err := fms.GetContractRegisterListByStartDate(startDate, endDate)
  301. if err != nil {
  302. br.Msg = "获取数据信息失败"
  303. br.ErrMsg = "获取财务系统数据信息失败,Err:" + err.Error()
  304. return
  305. }
  306. for _, v := range listFmsData {
  307. startDateTime := v.StartDate
  308. monthNum := startDateTime.Month()
  309. yearStr := strconv.Itoa(startDateTime.Year())
  310. if dataType == "季度" {
  311. if monthNum < 4 {
  312. yearStr += "Q1"
  313. } else if monthNum > 3 && monthNum < 7 {
  314. yearStr += "Q2"
  315. } else if monthNum > 6 && monthNum < 10 {
  316. yearStr += "Q3"
  317. } else if monthNum > 9 {
  318. yearStr += "Q4"
  319. }
  320. } else if dataType == "半年度" {
  321. if monthNum < 7 {
  322. yearStr += "H1"
  323. } else {
  324. yearStr += "H2"
  325. }
  326. }
  327. keyMap = fmt.Sprint(yearStr, "_", v.RaiSellerId)
  328. if sellerDevelopIds[v.RaiSellerId] == true {
  329. keyMapTtoal = fmt.Sprint(yearStr, "_Develop")
  330. } else {
  331. keyMapTtoal = fmt.Sprint(yearStr, "_Service")
  332. }
  333. mapInvoiceAmountMoney[keyMap] += v.InvoicedAmount
  334. mapPaymentAmountMoney[keyMap] += v.PaymentAmount
  335. mapInvoiceAmountMoney[keyMapTtoal] += v.InvoicedAmount
  336. mapPaymentAmountMoney[keyMapTtoal] += v.PaymentAmount
  337. if v.ContractType == 1 {
  338. mapNewCustomerInvoicingMoney[keyMapTtoal] += v.InvoicedAmount
  339. mapNewCustomerPaymentsReceivedMoney[keyMapTtoal] += v.PaymentAmount
  340. }
  341. }
  342. conditionTry := ` AND a.create_time >= ? AND a.create_time <= ? AND a.operation in ( "add","receive","apply_receive" ) AND a.sys_user_id IN ( SELECT admin_id FROM admin WHERE role_type_code IN ( 'rai_seller', 'rai_group' , 'rai_admin') ) `
  343. var parsTry []interface{}
  344. parsTry = append(parsTry, startDate, endDate)
  345. //列表页数据
  346. tryList, err := models.GetIncrementalCompanyListByOperationRecordRai(conditionTry, parsTry, 0, 9999)
  347. if err != nil {
  348. br.Msg = "获取失败"
  349. br.ErrMsg = "获取失败,Err:" + err.Error()
  350. return
  351. }
  352. for _, v := range tryList {
  353. startDateTime := utils.StrTimeToTime(v.CreateTime)
  354. monthNum := startDateTime.Month()
  355. yearStr := strconv.Itoa(startDateTime.Year())
  356. if dataType == "季度" {
  357. if monthNum < 4 {
  358. yearStr += "Q1"
  359. } else if monthNum > 3 && monthNum < 7 {
  360. yearStr += "Q2"
  361. } else if monthNum > 6 && monthNum < 10 {
  362. yearStr += "Q3"
  363. } else if monthNum > 9 {
  364. yearStr += "Q4"
  365. }
  366. } else if dataType == "半年度" {
  367. if monthNum < 7 {
  368. yearStr += "H1"
  369. } else {
  370. yearStr += "H2"
  371. }
  372. }
  373. keyMap = fmt.Sprint(yearStr, "_", v.SysUserId)
  374. mapAddTrialNum[keyMap]++
  375. //var keyMapTtoal string
  376. sysUserId, _ := strconv.Atoi(v.SysUserId)
  377. if sellerDevelopIds[sysUserId] == true {
  378. keyMapTtoal = fmt.Sprint(yearStr, "_Develop")
  379. } else {
  380. keyMapTtoal = fmt.Sprint(yearStr, "_Service")
  381. }
  382. mapAddTrialNum[keyMapTtoal]++
  383. }
  384. resp := new(statistic_report.RaiDataSummaryListResp)
  385. var items []*statistic_report.RaiDataSummaryResp
  386. for i := startYear; i <= endYear; i++ {
  387. //if len(dataTypeArr) > 0 {
  388. for _, Dv := range dataTypeArr {
  389. item := new(statistic_report.RaiDataSummaryResp)
  390. item.DataType = fmt.Sprint(i, Dv)
  391. keyMapTtoal = fmt.Sprint(item.DataType, "_Develop")
  392. keyMapTtoalServer = fmt.Sprint(item.DataType, "_Server")
  393. for _, vS := range sellerDevelop {
  394. keyMap = fmt.Sprint(item.DataType, "_", vS.AdminId)
  395. sellerItem := new(statistic_report.RaiDataSummaryDetail)
  396. sellerItem.SellerId = vS.AdminId
  397. sellerItem.SellerName = vS.RealName
  398. sellerItem.AddTrialCount = fmt.Sprint(mapAddTrialNum[keyMap])
  399. sellerItem.NewContractData = fmt.Sprint(utils.SubFloatToString(mapNewContractMoney[keyMap], 2), " / ", mapNewContractNum[keyMap]) // 新签合同(金额/数量)-(数据)
  400. sellerItem.ExpiredContractData = fmt.Sprint(utils.SubFloatToString(mapExpiredContractMoney[keyMap], 2), " / ", mapExpiredContractNum[keyMap]) //"到期合同(金额/数量)-(数据)"
  401. sellerItem.RenewedContractData = fmt.Sprint(utils.SubFloatToString(mapRenewedContractMoney[keyMap], 2), " / ", mapRenewedContractNum[keyMap]) // "续约合同(金额/数量)-(数据)"
  402. var renewalRateMoey string
  403. var renewalRateNum string
  404. if mapRenewedContractMoney[keyMap] == 0 || mapExpiredContractMoney[keyMap] == 0 {
  405. renewalRateMoey = "0%"
  406. } else {
  407. renewalRateMoey = utils.SubFloatToString(mapRenewedContractMoney[keyMap]/mapExpiredContractMoney[keyMap]*100, 2) + "%"
  408. }
  409. if mapRenewedContractNum[keyMap] == 0 || mapExpiredContractNum[keyMap] == 0 {
  410. renewalRateNum = "0%"
  411. } else {
  412. renewalRateNum = utils.SubFloatToString(float64(mapRenewedContractNum[keyMap])/float64(mapExpiredContractNum[keyMap])*100, 2) + "%"
  413. }
  414. sellerItem.RenewalRateData = fmt.Sprint(renewalRateMoey, " / ", renewalRateNum) //"续约率(金额/数量)-(数据)"
  415. sellerItem.ConfirmedNoRenewalContractData = fmt.Sprint(utils.SubFloatToString(confirmedNoRenewalContractMoney[keyMap], 2), " / ", confirmedNoRenewalContractNum[keyMap]) //"确认不续约合同(金额/数量)-(数据)"
  416. var confirmNonRenewalRateMoey string
  417. var confirmNonRenewalRateNum string
  418. if confirmedNoRenewalContractMoney[keyMap] == 0 || mapExpiredContractMoney[keyMap] == 0 {
  419. confirmNonRenewalRateMoey = "0%"
  420. } else {
  421. confirmNonRenewalRateMoey = utils.SubFloatToString(confirmedNoRenewalContractMoney[keyMap]/mapExpiredContractMoney[keyMap]*100, 2) + "%"
  422. }
  423. if confirmedNoRenewalContractNum[keyMap] == 0 || mapExpiredContractNum[keyMap] == 0 {
  424. confirmNonRenewalRateNum = "0%"
  425. } else {
  426. confirmNonRenewalRateNum = utils.SubFloatToString(float64(confirmedNoRenewalContractNum[keyMap])/float64(mapExpiredContractNum[keyMap])*100, 2) + "%"
  427. }
  428. sellerItem.ConfirmNonRenewalRateData = fmt.Sprint(confirmNonRenewalRateMoey, " / ", confirmNonRenewalRateNum) //确认不续约率(金额/数量)-(数据)"
  429. sellerItem.SignedClientCount = fmt.Sprint(mapSignedClientNum[keyMap]) // 签约客户数量
  430. if mapSignedClientNum[keyMap] == 0 || mapSignedClientMoney[keyMap] == 0 {
  431. sellerItem.AverageRevenueCount = "0"
  432. } else {
  433. sellerItem.AverageRevenueCount = utils.SubFloatToString(mapSignedClientMoney[keyMap]/float64(mapSignedClientNum[keyMap]), 2) //客单价
  434. }
  435. sellerItem.InvoiceAmountCount = utils.SubFloatToString(mapInvoiceAmountMoney[keyMap], 2) //"开票金额-(数据)"
  436. sellerItem.PaymentReceivedCount = utils.SubFloatToString(mapPaymentAmountMoney[keyMap], 2) //"开票金额-(数据)"
  437. if mapInvoiceAmountMoney[keyMap] == 0 || mapPaymentAmountMoney[keyMap] == 0 {
  438. sellerItem.UnpaidRatioCount = "0%"
  439. } else {
  440. sellerItem.UnpaidRatioCount = utils.SubFloatToString((mapInvoiceAmountMoney[keyMap]-mapPaymentAmountMoney[keyMap])/mapInvoiceAmountMoney[keyMap]*100, 2) + "%" //"未到款比例-(数据)"
  441. }
  442. sellerItem.NewCustomerInvoicingCount = utils.SubFloatToString(mapNewCustomerInvoicingMoney[keyMap], 2) // "新客开票-(数据)"
  443. sellerItem.NewCustomerPaymentsReceivedCount = utils.SubFloatToString(mapNewCustomerPaymentsReceivedMoney[keyMap], 2) // "新客到款-(数据)"
  444. item.DataList = append(item.DataList, sellerItem)
  445. }
  446. if len(sellerDevelop) > 0 {
  447. sellerItem := new(statistic_report.RaiDataSummaryDetail)
  448. sellerItem.SellerName = "开拓组合计"
  449. sellerItem.AddTrialCount = fmt.Sprint(mapAddTrialNum[keyMapTtoal])
  450. sellerItem.NewContractData = fmt.Sprint(utils.SubFloatToString(mapNewContractMoney[keyMapTtoal], 2), " / ", mapNewContractNum[keyMapTtoal]) // 新签合同(金额/数量)-(数据)
  451. sellerItem.ExpiredContractData = fmt.Sprint(utils.SubFloatToString(mapExpiredContractMoney[keyMapTtoal], 2), " / ", mapExpiredContractNum[keyMapTtoal]) //"到期合同(金额/数量)-(数据)"
  452. sellerItem.RenewedContractData = fmt.Sprint(utils.SubFloatToString(mapRenewedContractMoney[keyMapTtoal], 2), " / ", mapRenewedContractNum[keyMapTtoal]) // "续约合同(金额/数量)-(数据)"
  453. var renewalRateMoey string
  454. var renewalRateNum string
  455. if mapRenewedContractMoney[keyMapTtoal] == 0 || mapExpiredContractMoney[keyMapTtoal] == 0 {
  456. renewalRateMoey = "0%"
  457. } else {
  458. renewalRateMoey = utils.SubFloatToString(mapRenewedContractMoney[keyMapTtoal]/mapExpiredContractMoney[keyMapTtoal]*100, 2) + "%"
  459. }
  460. if mapRenewedContractNum[keyMapTtoal] == 0 || mapExpiredContractNum[keyMapTtoal] == 0 {
  461. renewalRateNum = "0%"
  462. } else {
  463. renewalRateNum = utils.SubFloatToString(float64(mapRenewedContractNum[keyMapTtoal])/float64(mapExpiredContractNum[keyMapTtoal])*100, 2) + "%"
  464. }
  465. sellerItem.RenewalRateData = fmt.Sprint(renewalRateMoey, " / ", renewalRateNum) //"续约率(金额/数量)-(数据)"
  466. sellerItem.ConfirmedNoRenewalContractData = fmt.Sprint(utils.SubFloatToString(confirmedNoRenewalContractMoney[keyMapTtoal], 2), " / ", confirmedNoRenewalContractNum[keyMapTtoal]) //"确认不续约合同(金额/数量)-(数据)"
  467. var confirmNonRenewalRateMoey string
  468. var confirmNonRenewalRateNum string
  469. if confirmedNoRenewalContractMoney[keyMapTtoal] == 0 || mapExpiredContractMoney[keyMapTtoal] == 0 {
  470. confirmNonRenewalRateMoey = "0%"
  471. } else {
  472. confirmNonRenewalRateMoey = utils.SubFloatToString(confirmedNoRenewalContractMoney[keyMapTtoal]/mapExpiredContractMoney[keyMapTtoal]*100, 2) + "%"
  473. }
  474. if confirmedNoRenewalContractNum[keyMapTtoal] == 0 || mapExpiredContractNum[keyMapTtoal] == 0 {
  475. confirmNonRenewalRateNum = "0%"
  476. } else {
  477. confirmNonRenewalRateNum = utils.SubFloatToString(float64(confirmedNoRenewalContractNum[keyMapTtoal])/float64(mapExpiredContractNum[keyMapTtoal])*100, 2) + "%"
  478. }
  479. sellerItem.ConfirmNonRenewalRateData = fmt.Sprint(confirmNonRenewalRateMoey, " / ", confirmNonRenewalRateNum) //确认不续约率(金额/数量)-(数据)"
  480. sellerItem.SignedClientCount = fmt.Sprint(mapSignedClientNum[keyMapTtoal]) // 签约客户数量
  481. if mapSignedClientNum[keyMapTtoal] == 0 || mapSignedClientMoney[keyMapTtoal] == 0 {
  482. sellerItem.AverageRevenueCount = "0"
  483. } else {
  484. sellerItem.AverageRevenueCount = utils.SubFloatToString(mapSignedClientMoney[keyMapTtoal]/float64(mapSignedClientNum[keyMapTtoal]), 2) //客单价
  485. }
  486. sellerItem.InvoiceAmountCount = utils.SubFloatToString(mapInvoiceAmountMoney[keyMapTtoal], 2) //"开票金额-(数据)"
  487. sellerItem.PaymentReceivedCount = utils.SubFloatToString(mapPaymentAmountMoney[keyMapTtoal], 2) //"开票金额-(数据)"
  488. if mapInvoiceAmountMoney[keyMapTtoal] == 0 || mapPaymentAmountMoney[keyMapTtoal] == 0 {
  489. sellerItem.UnpaidRatioCount = "0%"
  490. } else {
  491. sellerItem.UnpaidRatioCount = utils.SubFloatToString((mapInvoiceAmountMoney[keyMapTtoal]-mapPaymentAmountMoney[keyMapTtoal])/mapInvoiceAmountMoney[keyMapTtoal]*100, 2) + "%" //"未到款比例-(数据)"
  492. }
  493. sellerItem.NewCustomerInvoicingCount = utils.SubFloatToString(mapNewCustomerInvoicingMoney[keyMapTtoal], 2) // "新客开票-(数据)"
  494. sellerItem.NewCustomerPaymentsReceivedCount = utils.SubFloatToString(mapNewCustomerPaymentsReceivedMoney[keyMapTtoal], 2) // "新客到款-(数据)"
  495. item.DataList = append(item.DataList, sellerItem)
  496. }
  497. for _, vS := range sellerService {
  498. sellerItem := new(statistic_report.RaiDataSummaryDetail)
  499. sellerItem.SellerId = vS.AdminId
  500. sellerItem.SellerName = vS.RealName
  501. sellerItem.AddTrialCount = fmt.Sprint(mapAddTrialNum[keyMap])
  502. sellerItem.NewContractData = fmt.Sprint(utils.SubFloatToString(mapNewContractMoney[keyMap], 2), " / ", mapNewContractNum[keyMap]) // 新签合同(金额/数量)-(数据)
  503. sellerItem.ExpiredContractData = fmt.Sprint(utils.SubFloatToString(mapExpiredContractMoney[keyMap], 2), " / ", mapExpiredContractNum[keyMap]) //"到期合同(金额/数量)-(数据)"
  504. sellerItem.RenewedContractData = fmt.Sprint(utils.SubFloatToString(mapRenewedContractMoney[keyMap], 2), " / ", mapRenewedContractNum[keyMap]) // "续约合同(金额/数量)-(数据)"
  505. var renewalRateMoey string
  506. var renewalRateNum string
  507. if mapRenewedContractMoney[keyMap] == 0 || mapExpiredContractMoney[keyMap] == 0 {
  508. renewalRateMoey = "0%"
  509. } else {
  510. renewalRateMoey = utils.SubFloatToString(mapRenewedContractMoney[keyMap]/mapExpiredContractMoney[keyMap]*100, 2) + "%"
  511. }
  512. if mapRenewedContractNum[keyMap] == 0 || mapExpiredContractNum[keyMap] == 0 {
  513. renewalRateNum = "0%"
  514. } else {
  515. renewalRateNum = utils.SubFloatToString(float64(mapRenewedContractNum[keyMap])/float64(mapExpiredContractNum[keyMap])*100, 2) + "%"
  516. }
  517. sellerItem.RenewalRateData = fmt.Sprint(renewalRateMoey, " / ", renewalRateNum) //"续约率(金额/数量)-(数据)"
  518. sellerItem.ConfirmedNoRenewalContractData = fmt.Sprint(utils.SubFloatToString(confirmedNoRenewalContractMoney[keyMap], 2), " / ", confirmedNoRenewalContractNum[keyMap]) //"确认不续约合同(金额/数量)-(数据)"
  519. var confirmNonRenewalRateMoey string
  520. var confirmNonRenewalRateNum string
  521. if confirmedNoRenewalContractMoney[keyMap] == 0 || mapExpiredContractMoney[keyMap] == 0 {
  522. confirmNonRenewalRateMoey = "0%"
  523. } else {
  524. confirmNonRenewalRateMoey = utils.SubFloatToString(confirmedNoRenewalContractMoney[keyMap]/mapExpiredContractMoney[keyMap]*100, 2) + "%"
  525. }
  526. if confirmedNoRenewalContractNum[keyMap] == 0 || mapExpiredContractNum[keyMap] == 0 {
  527. confirmNonRenewalRateNum = "0%"
  528. } else {
  529. confirmNonRenewalRateNum = utils.SubFloatToString(float64(confirmedNoRenewalContractNum[keyMap])/float64(mapExpiredContractNum[keyMap])*100, 2) + "%"
  530. }
  531. sellerItem.ConfirmNonRenewalRateData = fmt.Sprint(confirmNonRenewalRateMoey, " / ", confirmNonRenewalRateNum) //确认不续约率(金额/数量)-(数据)"
  532. sellerItem.SignedClientCount = fmt.Sprint(mapSignedClientNum[keyMap]) // 签约客户数量
  533. if mapSignedClientNum[keyMap] == 0 || mapSignedClientMoney[keyMap] == 0 {
  534. sellerItem.AverageRevenueCount = "0"
  535. } else {
  536. sellerItem.AverageRevenueCount = utils.SubFloatToString(mapSignedClientMoney[keyMap]/float64(mapSignedClientNum[keyMap]), 2) //客单价
  537. }
  538. sellerItem.InvoiceAmountCount = utils.SubFloatToString(mapInvoiceAmountMoney[keyMap], 2) //"开票金额-(数据)"
  539. sellerItem.PaymentReceivedCount = utils.SubFloatToString(mapPaymentAmountMoney[keyMap], 2) //"开票金额-(数据)"
  540. if mapInvoiceAmountMoney[keyMap] == 0 || mapPaymentAmountMoney[keyMap] == 0 {
  541. sellerItem.UnpaidRatioCount = "0%"
  542. } else {
  543. sellerItem.UnpaidRatioCount = utils.SubFloatToString((mapInvoiceAmountMoney[keyMap]-mapPaymentAmountMoney[keyMap])/mapInvoiceAmountMoney[keyMap]*100, 2) + "%" //"未到款比例-(数据)"
  544. }
  545. sellerItem.NewCustomerInvoicingCount = utils.SubFloatToString(mapNewCustomerInvoicingMoney[keyMap], 2) // "新客开票-(数据)"
  546. sellerItem.NewCustomerPaymentsReceivedCount = utils.SubFloatToString(mapNewCustomerPaymentsReceivedMoney[keyMap], 2) // "新客到款-(数据)"
  547. item.DataList = append(item.DataList, sellerItem)
  548. }
  549. if len(sellerService) > 0 {
  550. sellerItem := new(statistic_report.RaiDataSummaryDetail)
  551. sellerItem.SellerName = "服务组合计"
  552. sellerItem.AddTrialCount = fmt.Sprint(mapAddTrialNum[keyMapTtoalServer])
  553. sellerItem.NewContractData = fmt.Sprint(utils.SubFloatToString(mapNewContractMoney[keyMapTtoalServer], 2), " / ", mapNewContractNum[keyMapTtoalServer]) // 新签合同(金额/数量)-(数据)
  554. sellerItem.ExpiredContractData = fmt.Sprint(utils.SubFloatToString(mapExpiredContractMoney[keyMapTtoalServer], 2), " / ", mapExpiredContractNum[keyMapTtoalServer]) //"到期合同(金额/数量)-(数据)"
  555. sellerItem.RenewedContractData = fmt.Sprint(utils.SubFloatToString(mapRenewedContractMoney[keyMapTtoalServer], 2), " / ", mapRenewedContractNum[keyMapTtoalServer]) // "续约合同(金额/数量)-(数据)"
  556. var renewalRateMoey string
  557. var renewalRateNum string
  558. if mapRenewedContractMoney[keyMapTtoalServer] == 0 || mapExpiredContractMoney[keyMapTtoalServer] == 0 {
  559. renewalRateMoey = "0%"
  560. } else {
  561. renewalRateMoey = utils.SubFloatToString(mapRenewedContractMoney[keyMapTtoalServer]/mapExpiredContractMoney[keyMapTtoalServer]*100, 2) + "%"
  562. }
  563. if mapRenewedContractNum[keyMapTtoalServer] == 0 || mapExpiredContractNum[keyMapTtoalServer] == 0 {
  564. renewalRateNum = "0%"
  565. } else {
  566. renewalRateNum = utils.SubFloatToString(float64(mapRenewedContractNum[keyMapTtoalServer])/float64(mapExpiredContractNum[keyMapTtoalServer])*100, 2) + "%"
  567. }
  568. sellerItem.RenewalRateData = fmt.Sprint(renewalRateMoey, " / ", renewalRateNum) //"续约率(金额/数量)-(数据)"
  569. sellerItem.ConfirmedNoRenewalContractData = fmt.Sprint(utils.SubFloatToString(confirmedNoRenewalContractMoney[keyMapTtoalServer], 2), " / ", confirmedNoRenewalContractNum[keyMapTtoalServer]) //"确认不续约合同(金额/数量)-(数据)"
  570. var confirmNonRenewalRateMoey string
  571. var confirmNonRenewalRateNum string
  572. if confirmedNoRenewalContractMoney[keyMapTtoalServer] == 0 || mapExpiredContractMoney[keyMapTtoalServer] == 0 {
  573. confirmNonRenewalRateMoey = "0%"
  574. } else {
  575. confirmNonRenewalRateMoey = utils.SubFloatToString(confirmedNoRenewalContractMoney[keyMapTtoalServer]/mapExpiredContractMoney[keyMapTtoalServer]*100, 2) + "%"
  576. }
  577. if confirmedNoRenewalContractNum[keyMapTtoalServer] == 0 || mapExpiredContractNum[keyMapTtoalServer] == 0 {
  578. confirmNonRenewalRateNum = "0%"
  579. } else {
  580. confirmNonRenewalRateNum = utils.SubFloatToString(float64(confirmedNoRenewalContractNum[keyMapTtoalServer])/float64(mapExpiredContractNum[keyMapTtoalServer])*100, 2) + "%"
  581. }
  582. sellerItem.ConfirmNonRenewalRateData = fmt.Sprint(confirmNonRenewalRateMoey, " / ", confirmNonRenewalRateNum) //确认不续约率(金额/数量)-(数据)"
  583. sellerItem.SignedClientCount = fmt.Sprint(mapSignedClientNum[keyMapTtoalServer]) // 签约客户数量
  584. if mapSignedClientNum[keyMapTtoalServer] == 0 || mapSignedClientMoney[keyMapTtoalServer] == 0 {
  585. sellerItem.AverageRevenueCount = "0"
  586. } else {
  587. sellerItem.AverageRevenueCount = utils.SubFloatToString(mapSignedClientMoney[keyMapTtoalServer]/float64(mapSignedClientNum[keyMapTtoalServer]), 2) //客单价
  588. }
  589. sellerItem.InvoiceAmountCount = utils.SubFloatToString(mapInvoiceAmountMoney[keyMapTtoalServer], 2) //"开票金额-(数据)"
  590. sellerItem.PaymentReceivedCount = utils.SubFloatToString(mapPaymentAmountMoney[keyMapTtoalServer], 2) //"开票金额-(数据)"
  591. if mapInvoiceAmountMoney[keyMapTtoalServer] == 0 || mapPaymentAmountMoney[keyMapTtoalServer] == 0 {
  592. sellerItem.UnpaidRatioCount = "0%"
  593. } else {
  594. sellerItem.UnpaidRatioCount = utils.SubFloatToString((mapInvoiceAmountMoney[keyMapTtoalServer]-mapPaymentAmountMoney[keyMapTtoalServer])/mapInvoiceAmountMoney[keyMapTtoalServer]*100, 2) + "%" //"未到款比例-(数据)"
  595. }
  596. sellerItem.NewCustomerInvoicingCount = utils.SubFloatToString(mapNewCustomerInvoicingMoney[keyMapTtoalServer], 2) // "新客开票-(数据)"
  597. sellerItem.NewCustomerPaymentsReceivedCount = utils.SubFloatToString(mapNewCustomerPaymentsReceivedMoney[keyMapTtoalServer], 2) // "新客到款-(数据)"
  598. item.DataList = append(item.DataList, sellerItem)
  599. }
  600. items = append(items, item)
  601. }
  602. }
  603. resp.List = items
  604. br.Ret = 200
  605. br.Success = true
  606. br.Msg = "获取成功"
  607. br.Data = resp
  608. }
  609. // MergeCompanyList
  610. // @Title 权益数据汇总弹窗详情
  611. // @Description 权益数据汇总弹窗详情接口
  612. // @Param SellerId query int true "销售ID"
  613. // @Param DataType query string false "报表类型,枚举值:`季度`,`年度`,`半年度`"
  614. // @Param PopupType query string false "弹窗数据类型,枚举值:"
  615. // @Param PageSize query int true "每页数据条数"
  616. // @Param CurrentIndex query int true "当前页页码,从1开始"
  617. // @Success 200 {object} statistic_report.RaiDataSummaryPopupTypeResp
  618. // @router /rai_data_summary/detail [get]
  619. func (this *StatisticRaiDataSummaryController) RaiDataSummaryDetail() {
  620. br := new(models.BaseResponse).Init()
  621. defer func() {
  622. this.Data["json"] = br
  623. this.ServeJSON()
  624. }()
  625. sysUser := this.SysUser
  626. if sysUser == nil {
  627. br.Msg = "请登录"
  628. br.ErrMsg = "请登录,SysUser Is Empty"
  629. br.Ret = 408
  630. return
  631. }
  632. pageSize, _ := this.GetInt("PageSize")
  633. currentIndex, _ := this.GetInt("CurrentIndex")
  634. dataType := this.GetString("DataType")
  635. sellerId, _ := this.GetInt("SellerId")
  636. popupType := this.GetString("PopupType")
  637. var startSize int
  638. if pageSize <= 0 {
  639. pageSize = utils.PageSize20
  640. }
  641. if currentIndex <= 0 {
  642. currentIndex = 1
  643. }
  644. startSize = utils.StartIndex(currentIndex, pageSize)
  645. var startDate string
  646. var endDate string
  647. year := (dataType[:4])
  648. if strings.Contains(dataType, "Q1") {
  649. startDate = year + "-01-01"
  650. endDate = year + "-03-31"
  651. } else if strings.Contains(dataType, "Q2") {
  652. startDate = year + "-04-01"
  653. endDate = year + "-06-30"
  654. } else if strings.Contains(dataType, "Q3") {
  655. startDate = year + "-07-01"
  656. endDate = year + "-09-30"
  657. } else if strings.Contains(dataType, "Q4") {
  658. startDate = year + "-10-01"
  659. endDate = year + "-12-31"
  660. } else if strings.Contains(dataType, "H1") {
  661. startDate = year + "-01-01"
  662. endDate = year + "-06-31"
  663. } else if strings.Contains(dataType, "H2") {
  664. startDate = year + "-07-01"
  665. endDate = year + "-12-31"
  666. } else {
  667. startDate = year + "-01-01"
  668. endDate = year + "-12-31"
  669. }
  670. resp := new(statistic_report.RaiDataSummaryPopupTypeResp)
  671. var listResp []*statistic_report.RaiDataSummaryDetailResp
  672. var listGroup []*models.CompanyContractGroupList
  673. var trialTotal int
  674. var condition string
  675. var pars []interface{}
  676. switch popupType {
  677. case "新增试用":
  678. var parsTry []interface{}
  679. var conditionTry string
  680. if sellerId > 0 {
  681. conditionTry += ` AND a.sys_user_id = ? `
  682. parsTry = append(parsTry, sellerId)
  683. }
  684. conditionTry += ` AND a.create_time >= ? AND a.create_time <= ? AND a.operation in ( "add","receive","apply_receive" ) AND a.sys_user_id IN ( SELECT admin_id FROM admin WHERE role_type_code IN ( 'rai_seller', 'rai_group' , 'rai_admin') ) `
  685. parsTry = append(parsTry, startDate, endDate)
  686. total, err := models.GetIncrementalCompanyCountByOperationRecordRai(conditionTry, parsTry)
  687. if err != nil {
  688. br.Msg = "获取失败"
  689. br.ErrMsg = "获取新增试用客户数量失败,Err:" + err.Error()
  690. return
  691. }
  692. trialTotal = total
  693. //列表页数据
  694. tryList, err := models.GetIncrementalCompanyListByOperationRecordRai(conditionTry, parsTry, startSize, pageSize)
  695. if err != nil {
  696. br.Msg = "获取失败"
  697. br.ErrMsg = "获取失败,Err:" + err.Error()
  698. return
  699. }
  700. if len(tryList) > 0 {
  701. for _, v := range tryList {
  702. item := new(statistic_report.RaiDataSummaryDetailResp)
  703. v.SellerName = v.SysRealName
  704. if v.Operation == "add" {
  705. item.AddType = "新建"
  706. } else if v.Operation == "receive" || v.Operation == "apply_receive" {
  707. item.AddType = "领取"
  708. }
  709. item.CompanyName = v.CompanyName
  710. item.SellerName = v.SellerName
  711. item.CreateTime = v.CreateTime
  712. listResp = append(listResp, item)
  713. }
  714. }
  715. case "新签合同":
  716. if sellerId > 0 {
  717. condition += ` AND a.seller_id_init = ? `
  718. pars = append(pars, sellerId)
  719. }
  720. condition += ` AND a.status = 1 AND a.start_date >= ? AND a.start_date <= ? `
  721. pars = append(pars, startDate, endDate)
  722. condition += ` AND a.rai_contract_type = ? `
  723. pars = append(pars, "新签合同")
  724. total, err := company.GetIncrementalNewCompanyProductMergeCount(condition, pars)
  725. if err != nil && err.Error() != utils.ErrNoRow() {
  726. br.Msg = "获取失败"
  727. br.ErrMsg = "获取失败,Err:" + err.Error()
  728. return
  729. }
  730. trialTotal = total
  731. //列表页数据
  732. tmpList, err := models.GetIncrementalCompanyMergeList(condition, pars, startSize, pageSize)
  733. if err != nil {
  734. br.Msg = "获取失败"
  735. br.ErrMsg = "获取失败,Err:" + err.Error()
  736. return
  737. }
  738. if len(tmpList) > 0 {
  739. var companyContractIds []int
  740. for _, v := range tmpList {
  741. companyContractIds = append(companyContractIds, v.CompanyContractId)
  742. }
  743. //合并合同所对应的权限
  744. mappermissionName, err := cygxService.GetCompanyContractPermissionNameMapById(companyContractIds)
  745. if err != nil {
  746. br.Msg = "获取失败"
  747. br.ErrMsg = "获取失败,Err:" + err.Error()
  748. return
  749. }
  750. for _, v := range tmpList {
  751. item := new(statistic_report.RaiDataSummaryDetailResp)
  752. item.CompanyName = v.CompanyName
  753. item.SellerName = v.SellerNameInit
  754. item.StartDate = v.StartDate
  755. item.EndDate = v.EndDate
  756. item.Money = v.Money
  757. item.PermissionName = mappermissionName[v.CompanyContractId]
  758. listResp = append(listResp, item)
  759. }
  760. listGroup, err = models.GetCompanyContractGroupList(condition, pars)
  761. if err != nil {
  762. br.Msg = "获取失败"
  763. br.ErrMsg = "获取失败,Err:" + err.Error()
  764. return
  765. }
  766. }
  767. case "到期合同":
  768. if sellerId > 0 {
  769. condition += ` AND a.seller_id_last = ? `
  770. pars = append(pars, sellerId)
  771. }
  772. condition += ` AND a.status = 1 AND a.end_date >= ? AND a.end_date <= ? AND a.end_date < ? `
  773. pars = append(pars, startDate, endDate, time.Now().Format(utils.FormatDate))
  774. total, err := company.GetIncrementalNewCompanyProductMergeCount(condition, pars)
  775. if err != nil && err.Error() != utils.ErrNoRow() {
  776. br.Msg = "获取失败"
  777. br.ErrMsg = "获取失败,Err:" + err.Error()
  778. return
  779. }
  780. trialTotal = total
  781. //列表页数据
  782. tmpList, err := models.GetIncrementalCompanyMergeList(condition, pars, startSize, pageSize)
  783. if err != nil {
  784. br.Msg = "获取失败"
  785. br.ErrMsg = "获取失败,Err:" + err.Error()
  786. return
  787. }
  788. if len(tmpList) > 0 {
  789. var companyContractIds []int
  790. for _, v := range tmpList {
  791. companyContractIds = append(companyContractIds, v.CompanyContractId)
  792. }
  793. //合并合同所对应的权限
  794. mappermissionName, err := cygxService.GetCompanyContractPermissionNameMapById(companyContractIds)
  795. if err != nil {
  796. br.Msg = "获取失败"
  797. br.ErrMsg = "获取失败,Err:" + err.Error()
  798. return
  799. }
  800. for _, v := range tmpList {
  801. item := new(statistic_report.RaiDataSummaryDetailResp)
  802. item.CompanyName = v.CompanyName
  803. item.SellerName = v.SellerNameLast
  804. item.StartDate = v.StartDate
  805. item.EndDate = v.EndDate
  806. item.Money = v.Money
  807. item.PermissionName = mappermissionName[v.CompanyContractId]
  808. listResp = append(listResp, item)
  809. }
  810. listGroup, err = models.GetCompanyContractGroupList(condition, pars)
  811. if err != nil {
  812. br.Msg = "获取失败"
  813. br.ErrMsg = "获取失败,Err:" + err.Error()
  814. return
  815. }
  816. }
  817. case "续约合同":
  818. if sellerId > 0 {
  819. condition += ` AND a.seller_id_last = ? `
  820. pars = append(pars, sellerId)
  821. }
  822. condition += ` AND a.status = 1 AND a.inherit_end_date >= ? AND a.inherit_end_date <= ? AND inherit_company_contract_id > 0 `
  823. pars = append(pars, startDate, endDate)
  824. total, err := company.GetIncrementalNewCompanyProductMergeCount(condition, pars)
  825. if err != nil && err.Error() != utils.ErrNoRow() {
  826. br.Msg = "获取失败"
  827. br.ErrMsg = "获取失败,Err:" + err.Error()
  828. return
  829. }
  830. trialTotal = total
  831. //列表页数据
  832. tmpList, err := models.GetIncrementalCompanyMergeList(condition, pars, startSize, pageSize)
  833. if err != nil {
  834. br.Msg = "获取失败"
  835. br.ErrMsg = "获取失败,Err:" + err.Error()
  836. return
  837. }
  838. if len(tmpList) > 0 {
  839. var companyContractIds []int
  840. for _, v := range tmpList {
  841. companyContractIds = append(companyContractIds, v.CompanyContractId)
  842. }
  843. //合并合同所对应的权限
  844. mappermissionName, err := cygxService.GetCompanyContractPermissionNameMapById(companyContractIds)
  845. if err != nil {
  846. br.Msg = "获取失败"
  847. br.ErrMsg = "获取失败,Err:" + err.Error()
  848. return
  849. }
  850. for _, v := range tmpList {
  851. item := new(statistic_report.RaiDataSummaryDetailResp)
  852. item.CompanyName = v.CompanyName
  853. item.SellerName = v.SellerNameLast
  854. item.StartDate = v.StartDate
  855. item.EndDate = v.EndDate
  856. item.Money = v.Money
  857. item.PermissionName = mappermissionName[v.CompanyContractId]
  858. listResp = append(listResp, item)
  859. }
  860. listGroup, err = models.GetCompanyContractGroupList(condition, pars)
  861. if err != nil {
  862. br.Msg = "获取失败"
  863. br.ErrMsg = "获取失败,Err:" + err.Error()
  864. return
  865. }
  866. }
  867. case "续约率":
  868. var conditionEnd string
  869. var parsEnd []interface{}
  870. if sellerId > 0 {
  871. condition += ` AND a.seller_id_last = ? `
  872. pars = append(pars, sellerId)
  873. conditionEnd += ` AND a.seller_id_last = ? `
  874. parsEnd = append(pars, sellerId)
  875. }
  876. condition += ` AND a.status = 1 AND a.inherit_end_date >= ? AND a.inherit_end_date <= ? AND inherit_company_contract_id > 0 `
  877. pars = append(pars, startDate, endDate)
  878. listRaiData, err := statistic_report.GetRaiDataSummaryList(condition, pars)
  879. if err != nil {
  880. br.Msg = "获取数据信息失败"
  881. br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
  882. return
  883. }
  884. //到期合同数据
  885. conditionEnd += ` AND a.status = 1 AND a.end_date >= ? AND a.end_date <= ? AND a.end_date < ? `
  886. parsEnd = append(parsEnd, startDate, endDate, time.Now().Format(utils.FormatDate))
  887. listEndData, err := statistic_report.GetRaiDataSummaryList(condition, pars)
  888. if err != nil {
  889. br.Msg = "获取数据信息失败"
  890. br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
  891. return
  892. }
  893. var renewedContractMoney float64 // 续约金额
  894. var renewedContractCompany float64 // 续约客户数
  895. maprenewedContractCompany := make(map[int]bool)
  896. var expiredContractMoney float64 //到期金额
  897. var expiredContractCompany float64 // 到期客户数
  898. mapexpiredContractCompany := make(map[int]bool)
  899. for _, v := range listRaiData {
  900. renewedContractMoney += v.Money
  901. if !maprenewedContractCompany[v.CompanyId] {
  902. renewedContractCompany++
  903. maprenewedContractCompany[v.CompanyId] = true
  904. }
  905. //startDateTime := utils.StrDateToDate(v.StartDate)
  906. //if startDateTime.Before(time.Now().AddDate(0, 0, -1)) { //到期合同数据
  907. // expiredContractMoney += v.Money
  908. // if !mapexpiredContractCompany[v.CompanyId] {
  909. // expiredContractCompany++
  910. // mapexpiredContractCompany[v.CompanyId] = true
  911. // }
  912. //}
  913. }
  914. for _, v := range listEndData {
  915. expiredContractMoney += v.Money
  916. if !mapexpiredContractCompany[v.CompanyId] {
  917. expiredContractCompany++
  918. mapexpiredContractCompany[v.CompanyId] = true
  919. }
  920. }
  921. item := new(statistic_report.RaiDataSummaryDetailResp)
  922. item.TbaleNameAText = "金额续约率"
  923. item.RenewedContractMoney = fmt.Sprint(utils.SubFloatToString(renewedContractMoney, 2))
  924. item.ExpiredContractMoney = fmt.Sprint(utils.SubFloatToString(expiredContractMoney, 2))
  925. if renewedContractMoney == 0 || expiredContractMoney == 0 {
  926. item.RenewalRate = "0%"
  927. } else {
  928. item.RenewalRate = fmt.Sprint(utils.SubFloatToString(renewedContractMoney/expiredContractMoney*100, 2), "%")
  929. }
  930. listResp = append(listResp, item)
  931. item2 := new(statistic_report.RaiDataSummaryDetailResp)
  932. item2.TbaleNameAText = "客户续约率"
  933. item2.RenewedContractMoney = fmt.Sprint(renewedContractCompany)
  934. item2.ExpiredContractMoney = fmt.Sprint(expiredContractCompany)
  935. if renewedContractCompany == 0 || expiredContractCompany == 0 {
  936. item2.RenewalRate = "0%"
  937. } else {
  938. item2.RenewalRate = fmt.Sprint(utils.SubFloatToString(renewedContractCompany/expiredContractCompany*100, 2), "%")
  939. }
  940. listResp = append(listResp, item2)
  941. case "确认不续约合同":
  942. noRenewedcompanyContractIds := services.GetCompanyContractNoRenewedAscribeListArr()
  943. condition += ` AND a.company_contract_id IN (` + utils.GetOrmInReplace(len(noRenewedcompanyContractIds)) + `) ` // 已确认
  944. pars = append(pars, noRenewedcompanyContractIds)
  945. if sellerId > 0 {
  946. condition += ` AND a.seller_id_last = ? `
  947. pars = append(pars, sellerId)
  948. }
  949. condition += ` AND a.product_id = 2 AND a.status = 1 AND a.end_date >= ? AND a.end_date <= ? AND a.end_date <= ? `
  950. pars = append(pars, startDate, endDate, time.Now().Format(utils.FormatDate))
  951. total, err := company.GetIncrementalNewCompanyProductMergeCount(condition, pars)
  952. if err != nil && err.Error() != utils.ErrNoRow() {
  953. br.Msg = "获取失败"
  954. br.ErrMsg = "获取失败,Err:" + err.Error()
  955. return
  956. }
  957. trialTotal = total
  958. //列表页数据
  959. tmpList, err := models.GetIncrementalCompanyMergeList(condition, pars, startSize, pageSize)
  960. if err != nil {
  961. br.Msg = "获取失败"
  962. br.ErrMsg = "获取失败,Err:" + err.Error()
  963. return
  964. }
  965. if len(tmpList) > 0 {
  966. var companyContractIds []int
  967. for _, v := range tmpList {
  968. companyContractIds = append(companyContractIds, v.CompanyContractId)
  969. }
  970. //合并合同所对应的权限
  971. mappermissionName, err := cygxService.GetCompanyContractPermissionNameMapById(companyContractIds)
  972. if err != nil {
  973. br.Msg = "获取失败"
  974. br.ErrMsg = "获取失败,Err:" + err.Error()
  975. return
  976. }
  977. for _, v := range tmpList {
  978. item := new(statistic_report.RaiDataSummaryDetailResp)
  979. item.CompanyName = v.CompanyName
  980. item.SellerName = v.SellerNameInit
  981. item.StartDate = v.StartDate
  982. item.EndDate = v.EndDate
  983. item.Money = v.Money
  984. item.PermissionName = mappermissionName[v.CompanyContractId]
  985. listResp = append(listResp, item)
  986. }
  987. listGroup, err = models.GetCompanyContractGroupList(condition, pars)
  988. if err != nil {
  989. br.Msg = "获取失败"
  990. br.ErrMsg = "获取失败,Err:" + err.Error()
  991. return
  992. }
  993. }
  994. case "确认不续约率":
  995. noRenewedcompanyContractIdsMap := services.GetCompanyContractNoRenewedAscribeListMap()
  996. if sellerId > 0 {
  997. condition += ` AND a.seller_id_last = ? `
  998. pars = append(pars, sellerId)
  999. }
  1000. condition += ` AND a.product_id = 2 AND a.status = 1 AND a.start_date >= ? AND a.start_date <= ? AND a.end_date <= ? `
  1001. pars = append(pars, startDate, endDate, time.Now().Format(utils.FormatDate))
  1002. listRaiData, err := statistic_report.GetRaiDataSummaryList(condition, pars)
  1003. if err != nil {
  1004. br.Msg = "获取数据信息失败"
  1005. br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
  1006. return
  1007. }
  1008. var norenewedContractMoney float64 // 不续约金额
  1009. var norenewedContractCompany float64 // 不续约客户数
  1010. mapnorenewedContractCompany := make(map[int]bool)
  1011. var expiredContractMoney float64 //到期金额
  1012. var expiredContractCompany float64 // 到期客户数
  1013. mapexpiredContractCompany := make(map[int]bool)
  1014. for _, v := range listRaiData {
  1015. if noRenewedcompanyContractIdsMap[v.CompanyContractId] {
  1016. norenewedContractMoney += v.Money
  1017. if !mapnorenewedContractCompany[v.CompanyId] {
  1018. norenewedContractCompany++
  1019. mapnorenewedContractCompany[v.CompanyId] = true
  1020. }
  1021. startDateTime := utils.StrDateToDate(v.StartDate)
  1022. if startDateTime.Before(time.Now().AddDate(0, 0, -1)) { //到期合同数据
  1023. expiredContractMoney += v.Money
  1024. if !mapexpiredContractCompany[v.CompanyId] {
  1025. expiredContractCompany++
  1026. mapexpiredContractCompany[v.CompanyId] = true
  1027. }
  1028. }
  1029. }
  1030. }
  1031. item := new(statistic_report.RaiDataSummaryDetailResp)
  1032. item.TbaleNameAText = "金额不续约率"
  1033. item.RenewedContractMoney = fmt.Sprint(utils.SubFloatToString(norenewedContractMoney, 2))
  1034. item.ExpiredContractMoney = fmt.Sprint(utils.SubFloatToString(expiredContractMoney, 2))
  1035. if norenewedContractMoney == 0 || expiredContractMoney == 0 {
  1036. item.RenewalRate = "0%"
  1037. } else {
  1038. item.RenewalRate = fmt.Sprint(utils.SubFloatToString(norenewedContractMoney/expiredContractMoney*100, 2), "%")
  1039. }
  1040. listResp = append(listResp, item)
  1041. item2 := new(statistic_report.RaiDataSummaryDetailResp)
  1042. item2.TbaleNameAText = "客户不续约率"
  1043. item2.RenewedContractMoney = fmt.Sprint(norenewedContractCompany)
  1044. item2.ExpiredContractMoney = fmt.Sprint(expiredContractCompany)
  1045. if norenewedContractCompany == 0 || expiredContractCompany == 0 {
  1046. item2.RenewalRate = "0%"
  1047. } else {
  1048. item2.RenewalRate = fmt.Sprint(utils.SubFloatToString(norenewedContractCompany/expiredContractCompany*100, 2), "%")
  1049. }
  1050. listResp = append(listResp, item2)
  1051. case "签约客户数量":
  1052. if sellerId > 0 {
  1053. condition += ` AND a.seller_id_last = ? `
  1054. pars = append(pars, sellerId)
  1055. }
  1056. condition += " AND a.product_id = 2 AND a.status = 1 AND a.start_date >= ? AND a.start_date <= ? "
  1057. pars = append(pars, startDate, endDate)
  1058. listRaiData, err := statistic_report.GetRaiDataSummaryList(condition, pars)
  1059. if err != nil {
  1060. br.Msg = "获取数据信息失败"
  1061. br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
  1062. return
  1063. }
  1064. var renewedContractCompany int // 续约客户数
  1065. var renewedContract int // 续约合同数
  1066. maprenewedContractCompany := make(map[int]bool)
  1067. var newContractCompany int // 新签客户数
  1068. var newContract int // 新签合同数
  1069. mapenewContractCompany := make(map[int]bool)
  1070. for _, v := range listRaiData {
  1071. if v.RaiContractType == "新签合同" {
  1072. newContract++
  1073. if !mapenewContractCompany[v.CompanyId] {
  1074. newContractCompany++
  1075. mapenewContractCompany[v.CompanyId] = true
  1076. }
  1077. } else if v.RaiContractType == "续约合同" {
  1078. renewedContract++
  1079. if !maprenewedContractCompany[v.CompanyId] {
  1080. renewedContractCompany++
  1081. maprenewedContractCompany[v.CompanyId] = true
  1082. }
  1083. }
  1084. }
  1085. item := new(statistic_report.RaiDataSummaryDetailResp)
  1086. item.RenewedContractCompany = renewedContractCompany
  1087. item.RenewedContract = renewedContract
  1088. item.NewContractCompany = newContractCompany
  1089. item.NewContract = newContract
  1090. listResp = append(listResp, item)
  1091. case "客单价":
  1092. if sellerId > 0 {
  1093. condition += ` AND a.seller_id_last = ? `
  1094. pars = append(pars, sellerId)
  1095. }
  1096. condition += " AND a.product_id = 2 AND a.status = 1 AND a.start_date >= ? AND a.start_date <= ? "
  1097. pars = append(pars, startDate, endDate)
  1098. listRaiData, err := statistic_report.GetRaiDataSummaryList(condition, pars)
  1099. if err != nil {
  1100. br.Msg = "获取数据信息失败"
  1101. br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
  1102. return
  1103. }
  1104. var ontractMoney float64 // 签约总金额
  1105. var contractNum int // 签约客户数
  1106. for _, v := range listRaiData {
  1107. ontractMoney += v.Money
  1108. contractNum++
  1109. }
  1110. item := new(statistic_report.RaiDataSummaryDetailResp)
  1111. item.ContractMoney = fmt.Sprint(utils.SubFloatToString(ontractMoney, 2))
  1112. item.ContractNum = contractNum
  1113. listResp = append(listResp, item)
  1114. case "开票金额":
  1115. if sellerId > 0 {
  1116. condition += ` AND a.rai_seller_id = ? `
  1117. pars = append(pars, sellerId)
  1118. }
  1119. condition += " AND a.is_deleted = 0 AND a.start_date >= ? AND a.start_date <= ? AND invoiced_amount > 0 AND product_ids LIKE '%2%' "
  1120. pars = append(pars, startDate, endDate)
  1121. listFmsData, err := fms.GetContractRegisterList(condition, pars, startSize, pageSize)
  1122. if err != nil {
  1123. br.Msg = "获取数据信息失败"
  1124. br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
  1125. return
  1126. }
  1127. for _, v := range listFmsData {
  1128. item := new(statistic_report.RaiDataSummaryDetailResp)
  1129. item.CompanyName = v.CompanyName
  1130. item.SellerName = v.RaiSellerName
  1131. item.ContractCode = v.ContractCode
  1132. item.InvoicedAmount = v.InvoicedAmount
  1133. item.CreateTime = v.CreateTime.Format(utils.FormatDate)
  1134. listResp = append(listResp, item)
  1135. }
  1136. case "到款金额":
  1137. if sellerId > 0 {
  1138. condition += ` AND a.rai_seller_id = ? `
  1139. pars = append(pars, sellerId)
  1140. }
  1141. condition += " AND a.is_deleted = 0 AND a.start_date >= ? AND a.start_date <= ? AND payment_amount > 0 AND product_ids LIKE '%2%' "
  1142. pars = append(pars, startDate, endDate)
  1143. listFmsData, err := fms.GetContractRegisterList(condition, pars, startSize, pageSize)
  1144. if err != nil {
  1145. br.Msg = "获取数据信息失败"
  1146. br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
  1147. return
  1148. }
  1149. for _, v := range listFmsData {
  1150. item := new(statistic_report.RaiDataSummaryDetailResp)
  1151. item.CompanyName = v.CompanyName
  1152. item.SellerName = v.RaiSellerName
  1153. item.ContractCode = v.ContractCode
  1154. item.PaymentAmount = v.PaymentAmount
  1155. item.CreateTime = v.CreateTime.Format(utils.FormatDate)
  1156. listResp = append(listResp, item)
  1157. }
  1158. case "未到款比例":
  1159. if sellerId > 0 {
  1160. condition += ` AND a.rai_seller_id = ? `
  1161. pars = append(pars, sellerId)
  1162. }
  1163. condition += " AND a.is_deleted = 0 AND a.start_date >= ? AND a.start_date <= ? AND product_ids LIKE '%2%' "
  1164. pars = append(pars, startDate, endDate)
  1165. listFmsData, err := fms.GetContractRegisterAmountList(condition, pars)
  1166. if err != nil {
  1167. br.Msg = "获取数据信息失败"
  1168. br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
  1169. return
  1170. }
  1171. for _, v := range listFmsData {
  1172. item := new(statistic_report.RaiDataSummaryDetailResp)
  1173. item.InvoicedAmount = v.InvoicedAmount
  1174. item.PaymentAmount = v.PaymentAmount
  1175. item.NotReceivedtAmount = v.InvoicedAmount - v.PaymentAmount
  1176. item.CreateTime = v.CreateTime.Format(utils.FormatDate)
  1177. listResp = append(listResp, item)
  1178. }
  1179. case "新客开票":
  1180. if sellerId > 0 {
  1181. condition += ` AND a.rai_seller_id = ? `
  1182. pars = append(pars, sellerId)
  1183. }
  1184. condition += " AND a.is_deleted = 0 AND contract_type = 1 AND a.start_date >= ? AND a.start_date <= ? AND payment_amount > 0 AND product_ids LIKE '%2%' "
  1185. pars = append(pars, startDate, endDate)
  1186. listFmsData, err := fms.GetContractRegisterList(condition, pars, startSize, pageSize)
  1187. if err != nil {
  1188. br.Msg = "获取数据信息失败"
  1189. br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
  1190. return
  1191. }
  1192. for _, v := range listFmsData {
  1193. item := new(statistic_report.RaiDataSummaryDetailResp)
  1194. item.CompanyName = v.CompanyName
  1195. item.SellerName = v.RaiSellerName
  1196. item.ContractCode = v.ContractCode
  1197. item.PaymentAmount = v.PaymentAmount
  1198. item.CreateTime = v.CreateTime.Format(utils.FormatDate)
  1199. listResp = append(listResp, item)
  1200. }
  1201. case "新客到款":
  1202. if sellerId > 0 {
  1203. condition += ` AND a.rai_seller_id = ? `
  1204. pars = append(pars, sellerId)
  1205. }
  1206. condition += " AND a.is_deleted = 0 AND contract_type = 1 AND a.start_date >= ? AND a.start_date <= ? AND payment_amount > 0 AND product_ids LIKE '%2%' "
  1207. pars = append(pars, startDate, endDate)
  1208. listFmsData, err := fms.GetContractRegisterList(condition, pars, startSize, pageSize)
  1209. if err != nil {
  1210. br.Msg = "获取数据信息失败"
  1211. br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
  1212. return
  1213. }
  1214. for _, v := range listFmsData {
  1215. item := new(statistic_report.RaiDataSummaryDetailResp)
  1216. item.CompanyName = v.CompanyName
  1217. item.SellerName = v.RaiSellerName
  1218. item.ContractCode = v.ContractCode
  1219. item.PaymentAmount = v.PaymentAmount
  1220. item.CreateTime = v.CreateTime.Format(utils.FormatDate)
  1221. listResp = append(listResp, item)
  1222. }
  1223. }
  1224. if len(listResp) == 0 {
  1225. listResp = make([]*statistic_report.RaiDataSummaryDetailResp, 0)
  1226. }
  1227. if len(listGroup) > 0 {
  1228. for _, v := range listGroup {
  1229. if v.CompanyCount > 1 {
  1230. resp.CompanyMultiple++
  1231. }
  1232. }
  1233. resp.CompanyNum = len(listGroup)
  1234. }
  1235. resp.List = listResp
  1236. page := paging.GetPaging(currentIndex, pageSize, trialTotal)
  1237. resp.Paging = page
  1238. br.Ret = 200
  1239. br.Success = true
  1240. br.Msg = "获取成功"
  1241. br.Data = resp
  1242. }