OrderBiDto.cs 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555
  1. using Hotline.Settings;
  2. using Hotline.Share.Dtos.CallCenter;
  3. using Hotline.Share.Enums.Order;
  4. using Hotline.Share.Requests;
  5. using Microsoft.VisualBasic;
  6. using System.Data;
  7. using XF.Utility.EnumExtensions;
  8. namespace Hotline.Share.Dtos.Order
  9. {
  10. public class OrderBiOrgDataListVo
  11. {
  12. public string OrgName { get; set; }
  13. public string OrgId { get; set; }
  14. /// <summary>
  15. /// 业务已办超期
  16. /// </summary>
  17. public int HandlerExtendedNum { get; set; }
  18. /// <summary>
  19. /// 会签已办超期
  20. /// </summary>
  21. public int CounterHandlerExtendedNum { get; set; }
  22. /// <summary>
  23. /// 业务待办超期
  24. /// </summary>
  25. public int NoHandlerExtendedNum { get; set; }
  26. /// <summary>
  27. /// 会签待办超期
  28. /// </summary>
  29. public int CounterNoHandlerExtendedNum { get; set; }
  30. public int Subtotal => HandlerExtendedNum + CounterHandlerExtendedNum + NoHandlerExtendedNum + CounterNoHandlerExtendedNum;
  31. //public int Subtotal { get; set; }
  32. }
  33. public class OrderBiCentreDataListVo
  34. {
  35. /// <summary>
  36. /// 用户名
  37. /// </summary>
  38. public string UserName { get; set; }
  39. /// <summary>
  40. /// 用户ID
  41. /// </summary>
  42. public string UserId { get; set; }
  43. /// <summary>
  44. /// 中心归档件
  45. /// </summary>
  46. public int CentreArchive { get; set; }
  47. /// <summary>
  48. /// 转办信件
  49. /// </summary>
  50. public int CentreCareOf { get; set; }
  51. /// <summary>
  52. /// 待转办
  53. /// </summary>
  54. public int NoCentreCareOf { get; set; }
  55. /// <summary>
  56. /// 无效件
  57. /// </summary>
  58. public int Invalid { get; set; }
  59. /// <summary>
  60. /// 重复件
  61. /// </summary>
  62. public int Repeat { get; set; }
  63. //public int Subtotal => CentreArchive + CentreCareOf + NoCentreCareOf + Invalid + Repeat;
  64. public int Subtotal { get; set; }
  65. }
  66. public class OrderBiSpecialListVo
  67. {
  68. public string Cause { get; set; }
  69. public int OrderNum { get; set; }
  70. public DateTime MaxSpecialTime { get; set; }
  71. }
  72. public class HotspotDataLsitVo
  73. {
  74. public string Name { get; set; }
  75. public string Id { get; set; }
  76. public int Num { get; set; }
  77. public bool Sublevel { get; set; }
  78. public List<HotspotDataLsitVo> Children { get; set; }
  79. public int ChainNum { get; set; }
  80. public string ChainRate { get; set; }
  81. }
  82. public class AcceptTypeTop10Volod
  83. {
  84. /// <summary>
  85. /// 热点名称
  86. /// </summary>
  87. public string Name { get; set; }
  88. /// <summary>
  89. /// 受理类型ID
  90. /// </summary>
  91. public string Id { get; set; }
  92. /// <summary>
  93. /// 受理类型名称
  94. /// </summary>
  95. public string AcceptName { get; set; }
  96. /// <summary>
  97. /// 数量
  98. /// </summary>
  99. public int Num { get; set; }
  100. }
  101. public class AcceptTypeTop10Vo
  102. {
  103. /// <summary>
  104. /// 热点名称
  105. /// </summary>
  106. public string Name { get; set; }
  107. /// <summary>
  108. /// 有效受理
  109. /// </summary>
  110. public int ValidAccept { get; set; }
  111. /// <summary>
  112. /// 咨询
  113. /// </summary>
  114. public int Consult { get; set; }
  115. /// <summary>
  116. /// 举报
  117. /// </summary>
  118. public int Report { get; set; }
  119. /// <summary>
  120. /// 投诉
  121. /// </summary>
  122. public int Complaint { get; set; }
  123. /// <summary>
  124. /// 求助
  125. /// </summary>
  126. public int SeekHelp { get; set; }
  127. /// <summary>
  128. /// 建议
  129. /// </summary>
  130. public int Suggest { get; set; }
  131. /// <summary>
  132. /// 意见
  133. /// </summary>
  134. public int Opinion { get; set; }
  135. /// <summary>
  136. /// 其他
  137. /// </summary>
  138. public int Rests { get; set; }
  139. /// <summary>
  140. /// 惠民帮助
  141. /// </summary>
  142. public int BenefitThePeople { get; set; }
  143. /// <summary>
  144. /// 表扬
  145. /// </summary>
  146. public int Praise { get; set; }
  147. }
  148. public class BiOrderDelayDataDto
  149. {
  150. /// <summary>
  151. /// 部门名称
  152. /// </summary>
  153. public string OrgName { get; set; }
  154. /// <summary>
  155. /// 部门code
  156. /// </summary>
  157. public string OrgCode { get; set; }
  158. /// <summary>
  159. /// 小计
  160. /// </summary>
  161. public int AllTotal => PassTotal + NoPassTotal + ExaminingTotal + WithdrawTotal;
  162. /// <summary>
  163. /// 已同意次数
  164. /// </summary>
  165. public int PassTotal { get; set; }
  166. /// <summary>
  167. /// 未同意次数
  168. /// </summary>
  169. public int NoPassTotal { get; set; }
  170. /// <summary>
  171. /// 审批中次数
  172. /// </summary>
  173. public int ExaminingTotal { get; set; }
  174. /// <summary>
  175. /// 撤销次数
  176. /// </summary>
  177. public int WithdrawTotal { get; set; }
  178. }
  179. public class VisitMeasureStatisticsDto
  180. {
  181. /// <summary>
  182. /// 智能回访量
  183. /// </summary>
  184. public int AiVisitCount { get; set; }
  185. /// <summary>
  186. /// 智能回访满意量
  187. /// </summary>
  188. public int AiVisitSatisfiedCount { get; set; }
  189. /// <summary>
  190. /// 智能回访不满意量
  191. /// </summary>
  192. public int AiVisitNoSatisfiedCount { get; set; }
  193. /// <summary>
  194. /// 智能回访失败量
  195. /// </summary>
  196. public int AIVisitFailCount { get; set; }
  197. public List<VisitMeasureStatisticsModelDto> VisitMeasureStatisticsModelList { get; set; }
  198. }
  199. public class VisitMeasureStatisticsModelDto
  200. {
  201. /// <summary>
  202. /// 回访员
  203. /// </summary>
  204. public string VisitName { get; set; }
  205. /// <summary>
  206. /// 电话回访
  207. /// </summary>
  208. public int CallVisitCount { get; set; }
  209. /// <summary>
  210. /// 人工回访
  211. /// </summary>
  212. public int ArtificialVisitCount { get; set; }
  213. /// <summary>
  214. /// 总回访量
  215. /// </summary>
  216. public int SumCount { get; set; }
  217. }
  218. /// <summary>
  219. /// 坐席满意度明细表
  220. /// </summary>
  221. public class SeatSatisfactionStatisticsListDetailDto
  222. {
  223. /// <summary>
  224. /// 用户名
  225. /// </summary>
  226. public string UserName { get; set; }
  227. /// <summary>
  228. /// id
  229. /// </summary>
  230. public string UserId { get; set; }
  231. /// <summary>
  232. /// 默认满意
  233. /// </summary>
  234. public int DefaultSatisfied { get; set; }
  235. public int DefaultSatisfiedKey { get; set; } = 0;
  236. public string DefaultSatisfiedRate => CalcRate(DefaultSatisfied);
  237. /// <summary>
  238. /// 非常不满意
  239. /// </summary>
  240. public int VeryNoSatisfied { get; set; }
  241. public int VeryNoSatisfiedKey { get; set; } = 1;
  242. public string VeryNoSatisfiedRate => CalcRate(VeryNoSatisfied);
  243. /// <summary>
  244. /// 不满意
  245. /// </summary>
  246. public int NoSatisfied { get; set; }
  247. public int NoSatisfiedKey { get; set; } = 2;
  248. public string NoSatisfiedRate => CalcRate(NoSatisfied);
  249. /// <summary>
  250. /// 一般
  251. /// </summary>
  252. public int Normal { get; set; }
  253. public int NormalKey { get; set; } = 3;
  254. public string NormalRate => CalcRate(Normal);
  255. /// <summary>
  256. /// 满意
  257. /// </summary>
  258. public int Satisfied { get; set; }
  259. public int SatisfiedKey { get; set; } = 4;
  260. public string SatisfiedRate => CalcRate(Satisfied);
  261. /// <summary>
  262. /// 非常满意
  263. /// </summary>
  264. public int VerySatisfied { get; set; }
  265. public int VerySatisfiedKey { get; set; } = 5;
  266. public string VerySatisfiedRate => CalcRate(VerySatisfied);
  267. /// <summary>
  268. /// 未接通
  269. /// </summary>
  270. public int NoConnect { get; set; }
  271. public int NoConnectKey { get; set; } = 6;
  272. public string NoConnectRate => CalcRate(NoConnect);
  273. /// <summary>
  274. /// 未做评价
  275. /// </summary>
  276. public int NoEvaluate { get; set; }
  277. public int NoEvaluateKey { get; set; } = 7;
  278. public string NoEvaluateRate => CalcRate(NoEvaluate);
  279. /// <summary>
  280. /// 小计
  281. /// </summary>
  282. public int Count => DefaultSatisfied + NoSatisfied + Satisfied + VerySatisfied + NoConnect + NoEvaluate;
  283. /// <summary>
  284. /// 总满意率
  285. /// </summary>
  286. public string CountRate => CalcRate(DefaultSatisfied + Satisfied + VerySatisfied + NoConnect + NoEvaluate);
  287. public string CalcRate(int num)
  288. {
  289. int counNum = DefaultSatisfied + NoSatisfied + Satisfied + VerySatisfied + NoConnect + NoEvaluate;
  290. if (num == 0 || counNum == 0)
  291. {
  292. return "0.000%";
  293. }
  294. return Math.Round((num / (double)counNum) * 100, 2) + "%";
  295. }
  296. }
  297. /// <summary>
  298. /// 坐席满意度
  299. /// </summary>
  300. public class SeatSatisfactionStatisticsDto
  301. {
  302. public ESeatEvaluate? SeatEvaluate { get; set; }
  303. public string? SeatSatisfactionName => SeatEvaluate?.GetDescription();
  304. /// <summary>
  305. /// 数量
  306. /// </summary>
  307. public int Count { get; set; }
  308. }
  309. /// <summary>
  310. /// 满意度
  311. /// </summary>
  312. public class SeatSatisfactionStatisticsEvaluateDto
  313. {
  314. /// <summary>
  315. /// 满意
  316. /// </summary>
  317. public int Satisfied { get; set; }
  318. /// <summary>
  319. /// 不满意
  320. /// </summary>
  321. public int NoSatisfied { get; set; }
  322. /// <summary>
  323. /// 满意率
  324. /// </summary>
  325. public double SatisfactionRate => CalcVerySatisfiedRate();
  326. public double CalcVerySatisfiedRate()
  327. {
  328. if (Satisfied == 0 || (Satisfied + NoSatisfied) == 0)
  329. {
  330. return 0.000;
  331. }
  332. return Math.Round((Satisfied / (double)(Satisfied + NoSatisfied)) * 100, 2);
  333. }
  334. }
  335. public class VisitAndOrgSatisfactionStatisticsResultDto
  336. {
  337. public List<VisitAndOrgSatisfactionStatisticsDto> DataList { get; set; }
  338. public VisitAndOrgSatisfactionStatisticsDto CountySumModel { get; set; }
  339. public VisitAndOrgSatisfactionStatisticsDto CitySumModel { get; set; }
  340. public VisitAndOrgSatisfactionStatisticsDto SumModel { get; set; }
  341. }
  342. public class OrgVisitDetailListResp
  343. {
  344. /// <summary>
  345. /// 回访子ID
  346. /// </summary>
  347. public string Id { get; set; }
  348. /// <summary>
  349. /// 工单ID
  350. /// </summary>
  351. public string OrderId { get; set; }
  352. /// <summary>
  353. /// 回访ID
  354. /// </summary>
  355. public string VisitId { get; set; }
  356. /// <summary>
  357. /// 工单编号
  358. /// </summary>
  359. public string No { get; set; }
  360. /// <summary>
  361. /// 重办次数
  362. /// </summary>
  363. public int? ReTransactNum { get; set; }
  364. /// <summary>
  365. /// 甄别状态
  366. /// </summary>
  367. public EScreenStatus? OrderScreenStatus { get; set; }
  368. public string? OrderScreenStatusText => OrderScreenStatus.HasValue && OrderScreenStatus != null ? OrderScreenStatus?.GetDescription() : "未甄别";
  369. /// <summary>
  370. /// 回访内容
  371. /// </summary>
  372. public string VisitContent { get; set; }
  373. /// <summary>
  374. /// 热点全称
  375. /// </summary>
  376. public string HotspotSpliceName { get; set; }
  377. /// <summary>
  378. /// 一级部门
  379. /// </summary>
  380. public string OrgLevelOneName { get; set; }
  381. /// <summary>
  382. /// 办结部门
  383. /// </summary>
  384. public string CurrentHandleOrgName { get; set; }
  385. /// <summary>
  386. /// 受理时间
  387. /// </summary>
  388. public DateTime CreationTime { get; set; }
  389. /// <summary>
  390. /// 工单标题
  391. /// </summary>
  392. public string Title { get; set; }
  393. /// <summary>
  394. /// 回访人
  395. /// </summary>
  396. public string VisitUser { get; set; }
  397. /// <summary>
  398. /// 回访部门
  399. /// </summary>
  400. public string VisitOrgName { get; set; }
  401. /// <summary>
  402. /// 回访方式
  403. /// </summary>
  404. public EVisitType? VisitType { get; set; }
  405. public string? VisitTypeText => VisitType?.GetDescription();
  406. /// <summary>
  407. /// 回访时间
  408. /// </summary>
  409. public DateTime? VisitTime { get; set; }
  410. /// <summary>
  411. /// 满意度
  412. /// 如果入参 EAttitudeType = 1 是 办件结果
  413. /// 如果入参 EAttitudeType = 2 是 办事态度
  414. /// </summary>
  415. public string OrgProcessingResults { get; set; }
  416. /// <summary>
  417. /// 受理内容
  418. /// </summary>
  419. public string Content { get; set; }
  420. /// <summary>
  421. /// 承办意见
  422. /// </summary>
  423. public string FileOpinion { get; set; }
  424. /// <summary>
  425. /// 办结时间
  426. /// </summary>
  427. public DateTime? FiledTime { get; set; }
  428. /// <summary>
  429. /// 接办部门
  430. /// </summary>
  431. public string ActualHandleOrgName { get; set; }
  432. /// <summary>
  433. /// 是否省工单(空为全部 true为省工单 false为市工单)
  434. /// </summary>
  435. public bool IsProvinceOrder { get; set; }
  436. public string IsProvinceText => IsProvinceOrder ? "省工单" : "市工单";
  437. }
  438. public class VisitAndOrgSatisfactionStatisticsDto
  439. {
  440. public string OrgName { get; set; }
  441. public string OrgCode { get; set; }
  442. public EOrgType? OrgType { get; set; }
  443. public string OrgTypeText => OrgType?.GetDescription();
  444. /// <summary>
  445. /// 总数
  446. /// </summary>
  447. public int TotalSumCount { get; set; }
  448. /// <summary>
  449. /// 总满意度
  450. /// </summary>
  451. //public double TotalSumRate => Math.Round(VerySatisfiedRate + SatisfiedRate + RegardedAsSatisfiedRate+ DefaultSatisfiedRate, 2) ;
  452. public double TotalSumRate => CalcTotalSumRate();
  453. public double CalcTotalSumRate()
  454. {
  455. //if ((VerySatisfiedCount + SatisfiedCount + RegardedAsSatisfiedCount + DefaultSatisfiedCount + NoSatisfiedCount) == 0)
  456. // return 0;
  457. // return Math.Round(((double)VerySatisfiedCount + SatisfiedCount + RegardedAsSatisfiedCount + DefaultSatisfiedCount) / (VerySatisfiedCount + SatisfiedCount + RegardedAsSatisfiedCount + DefaultSatisfiedCount + NoSatisfiedCount) * 100, 2);
  458. if (TotalSumCount - NoSatisfiedCount <= 0)
  459. return 0;
  460. return Math.Round((((double)TotalSumCount - NoSatisfiedCount) / TotalSumCount) * 100, 2);
  461. }
  462. public string TotalSumRateText => TotalSumRate + "%";
  463. /// <summary>
  464. /// 非常满意数
  465. /// </summary>
  466. public int VerySatisfiedCount { get; set; }
  467. /// <summary>
  468. /// 非常满意Key
  469. /// </summary>
  470. public string VerySatisfiedKey => "5";
  471. /// <summary>
  472. /// 非常满意率
  473. /// </summary>
  474. public double VerySatisfiedRate => CalcVerySatisfiedRate();
  475. public double CalcVerySatisfiedRate()
  476. {
  477. if (VerySatisfiedCount == 0 || TotalSumCount == 0)
  478. {
  479. return 0;
  480. }
  481. return Math.Round((VerySatisfiedCount / (double)TotalSumCount) * 100, 2);
  482. }
  483. public string VerySatisfiedRateText => VerySatisfiedRate + "%";
  484. /// <summary>
  485. /// 满意数
  486. /// </summary>
  487. public int SatisfiedCount { get; set; }
  488. /// <summary>
  489. /// 满意Key
  490. /// </summary>
  491. public string SatisfiedKey => "4";
  492. /// <summary>
  493. /// 满意率
  494. /// </summary>
  495. public double SatisfiedRate => CalcSatisfiedRate();
  496. public double CalcSatisfiedRate()
  497. {
  498. if (SatisfiedCount == 0 || TotalSumCount == 0)
  499. {
  500. return 0;
  501. }
  502. return Math.Round((SatisfiedCount / (double)TotalSumCount) * 100, 2);
  503. }
  504. public string SatisfiedRateText => SatisfiedRate + "%";
  505. /// <summary>
  506. /// 视为满意数
  507. /// </summary>
  508. public int RegardedAsSatisfiedCount { get; set; }
  509. /// <summary>
  510. /// 视为满意Key
  511. /// </summary>
  512. public string RegardedAsSatisfiedKey => "-1";
  513. /// <summary>
  514. /// 视为满意率
  515. /// </summary>
  516. public double RegardedAsSatisfiedRate => CalcRegardedAsSatisfiedRate();
  517. public double CalcRegardedAsSatisfiedRate()
  518. {
  519. if (RegardedAsSatisfiedCount == 0 || TotalSumCount == 0)
  520. {
  521. return 0;
  522. }
  523. return Math.Round((RegardedAsSatisfiedCount / (double)TotalSumCount) * 100, 2);
  524. }
  525. public string RegardedAsSatisfiedRateText => RegardedAsSatisfiedRate + "%";
  526. /// <summary>
  527. /// 默认满意数
  528. /// </summary>
  529. public int DefaultSatisfiedCount { get; set; }
  530. /// <summary>
  531. /// 默认满意Key
  532. /// </summary>
  533. public string DefaultSatisfiedKey => "0";
  534. /// <summary>
  535. /// 默认满意率
  536. /// </summary>
  537. public double DefaultSatisfiedRate => CalcDefaultSatisfiedRate();
  538. public double CalcDefaultSatisfiedRate()
  539. {
  540. if (DefaultSatisfiedCount == 0 || TotalSumCount == 0)
  541. {
  542. return 0;
  543. }
  544. return Math.Round((DefaultSatisfiedCount / (double)TotalSumCount) * 100, 2);
  545. }
  546. public string DefaultSatisfiedRateText => DefaultSatisfiedRate + "%";
  547. /// <summary>
  548. /// 不满意数
  549. /// </summary>
  550. public int NoSatisfiedCount { get; set; }
  551. /// <summary>
  552. /// 不满意Key
  553. /// </summary>
  554. public string NoSatisfiedKey => "2";
  555. /// <summary>
  556. /// 不满意率
  557. /// </summary>
  558. public double NoSatisfiedRate => CalcNoSatisfiedRate();
  559. public double CalcNoSatisfiedRate()
  560. {
  561. if (NoSatisfiedCount == 0 || TotalSumCount == 0)
  562. {
  563. return 0;
  564. }
  565. return Math.Round((NoSatisfiedCount / (double)TotalSumCount) * 100, 2);
  566. }
  567. public string NoSatisfiedRateText => NoSatisfiedRate + "%";
  568. /// <summary>
  569. /// 未做评价数
  570. /// </summary>
  571. public int NoEvaluateCount { get; set; }
  572. /// <summary>
  573. /// 未做评价Key
  574. /// </summary>
  575. public string NoEvaluateKey => "7";
  576. /// <summary>
  577. /// 未做评价率
  578. /// </summary>
  579. public double NoEvaluateRate => CalcNoEvaluateRate();
  580. public double CalcNoEvaluateRate()
  581. {
  582. if (NoEvaluateCount == 0 || TotalSumCount == 0)
  583. {
  584. return 0;
  585. }
  586. return Math.Round((NoEvaluateCount / (double)TotalSumCount) * 100, 2);
  587. }
  588. public string NoEvaluateRateText => NoEvaluateRate + "%";
  589. /// <summary>
  590. /// 未接通数
  591. /// </summary>
  592. public int NoPutThroughCount { get; set; }
  593. /// <summary>
  594. /// 未接通Key
  595. /// </summary>
  596. public string NoPutThroughKey => "6";
  597. /// <summary>
  598. /// 未接通率
  599. /// </summary>
  600. public double NoPutThroughRate => CalcNoPutThroughRate();
  601. public double CalcNoPutThroughRate()
  602. {
  603. if (NoPutThroughCount == 0 || TotalSumCount == 0)
  604. {
  605. return 0;
  606. }
  607. return Math.Round((NoPutThroughCount / (double)TotalSumCount) * 100, 2);
  608. }
  609. public string NoPutThroughRateText => NoPutThroughRate + "%";
  610. /// <summary>
  611. /// 一般数
  612. /// </summary>
  613. public int NormalCount { get; set; }
  614. /// <summary>
  615. /// 一般Key
  616. /// </summary>
  617. public string NormalKey => "3";
  618. /// <summary>
  619. /// 一般率
  620. /// </summary>
  621. public double NormalRate => CalcNormalRate();
  622. public double CalcNormalRate()
  623. {
  624. if (NormalCount == 0 || TotalSumCount == 0)
  625. {
  626. return 0.000;
  627. }
  628. return Math.Round((NormalCount / (double)TotalSumCount) * 100, 3);
  629. }
  630. public string NormalRateText => NormalRate + "%";
  631. /// <summary>
  632. /// 非常不满意数
  633. /// </summary>
  634. public int VeryNoSatisfiedCount { get; set; }
  635. /// <summary>
  636. /// 非常不满意数Key
  637. /// </summary>
  638. public string VeryNoSatisfiedKey => "1";
  639. /// <summary>
  640. /// 非常不满意率
  641. /// </summary>
  642. public double VeryNoSatisfiedRate => CalcVeryNoSatisfiedRate();
  643. public double CalcVeryNoSatisfiedRate()
  644. {
  645. if (VeryNoSatisfiedCount == 0 || TotalSumCount == 0)
  646. {
  647. return 0.000;
  648. }
  649. return Math.Round((VeryNoSatisfiedCount / (double)TotalSumCount) * 100, 3);
  650. }
  651. public string VeryNoSatisfiedRateText => VeryNoSatisfiedRate + "%";
  652. }
  653. public class BiOrderSendVo
  654. {
  655. public string UserId { get; set; }
  656. public string UserName { get; set; }
  657. /// <summary>
  658. /// 派单量
  659. /// </summary>
  660. public int SendOrderNum { get; set; }
  661. /// <summary>
  662. /// 待派单量
  663. /// </summary>
  664. public int NoSendOrderNum { get; set; }
  665. /// <summary>
  666. /// 重办量
  667. /// </summary>
  668. public int ReSendOrderNum { get; set; }
  669. public string AccuracyRate { get; set; }
  670. }
  671. public class OrderReTransactVo
  672. {
  673. /// <summary>
  674. /// 时间
  675. /// </summary>
  676. public string Time { get; set; }
  677. /// <summary>
  678. /// 部门名称
  679. /// </summary>
  680. public string OrgName { get; set; }
  681. /// <summary>
  682. /// 部门id
  683. /// </summary>
  684. public string OrgId { get; set; }
  685. /// <summary>
  686. /// 次数
  687. /// </summary>
  688. public int Num { get; set; }
  689. }
  690. public class SecondaryHandlingVo
  691. {
  692. /// <summary>
  693. /// 部门名称
  694. /// </summary>
  695. public string OrgName { get; set; }
  696. /// <summary>
  697. /// 部门id
  698. /// </summary>
  699. public string OrgId { get; set; }
  700. /// <summary>
  701. /// 次数
  702. /// </summary>
  703. public int Num { get; set; }
  704. }
  705. public class SecondaryHandlingSatisfactionVo
  706. {
  707. /// <summary>
  708. /// 部门名称
  709. /// </summary>
  710. public string OrgName { get; set; }
  711. /// <summary>
  712. /// 部门id
  713. /// </summary>
  714. public string OrgId { get; set; }
  715. /// <summary>
  716. /// 部门类型
  717. /// </summary>
  718. public EOrgType OrgType { get; set; }
  719. public string OrgTypeText => OrgType.GetDescription();
  720. /// <summary>
  721. /// 总数
  722. /// </summary>
  723. public int TotalSumCount { get; set; }
  724. /// <summary>
  725. /// 总满意度
  726. /// </summary>
  727. public double TotalSumRate => Math.Round(VerySatisfiedRate + SatisfiedRate + RegardedAsSatisfiedRate + DefaultSatisfiedRate, 2);
  728. public string TotalSumRateText => TotalSumRate + "%";
  729. /// <summary>
  730. /// 非常满意数
  731. /// </summary>
  732. public int VerySatisfiedCount { get; set; }
  733. /// <summary>
  734. /// 非常满意率
  735. /// </summary>
  736. public double VerySatisfiedRate => CalcVerySatisfiedRate();
  737. public double CalcVerySatisfiedRate()
  738. {
  739. if (VerySatisfiedCount == 0 || TotalSumCount == 0)
  740. {
  741. return 0.000;
  742. }
  743. return Math.Round((VerySatisfiedCount / (double)TotalSumCount) * 100, 2);
  744. }
  745. public string VerySatisfiedRateText => VerySatisfiedRate + "%";
  746. /// <summary>
  747. /// 满意数
  748. /// </summary>
  749. public int SatisfiedCount { get; set; }
  750. /// <summary>
  751. /// 满意率
  752. /// </summary>
  753. public double SatisfiedRate => CalcSatisfiedRate();
  754. public double CalcSatisfiedRate()
  755. {
  756. if (SatisfiedCount == 0 || TotalSumCount == 0)
  757. {
  758. return 0.000;
  759. }
  760. return Math.Round((SatisfiedCount / (double)TotalSumCount) * 100, 3);
  761. }
  762. public string SatisfiedRateText => SatisfiedRate + "%";
  763. /// <summary>
  764. /// 视为满意数
  765. /// </summary>
  766. public int RegardedAsSatisfiedCount { get; set; }
  767. /// <summary>
  768. /// 视为满意率
  769. /// </summary>
  770. public double RegardedAsSatisfiedRate => CalcRegardedAsSatisfiedRate();
  771. public double CalcRegardedAsSatisfiedRate()
  772. {
  773. if (RegardedAsSatisfiedCount == 0 || TotalSumCount == 0)
  774. {
  775. return 0.000;
  776. }
  777. return Math.Round((RegardedAsSatisfiedCount / (double)TotalSumCount) * 100, 3);
  778. }
  779. public string RegardedAsSatisfiedRateText => RegardedAsSatisfiedRate + "%";
  780. /// <summary>
  781. /// 默认满意数
  782. /// </summary>
  783. public int DefaultSatisfiedCount { get; set; }
  784. /// <summary>
  785. /// 默认满意率
  786. /// </summary>
  787. public double DefaultSatisfiedRate => CalcDefaultSatisfiedRate();
  788. public double CalcDefaultSatisfiedRate()
  789. {
  790. if (DefaultSatisfiedCount == 0 || TotalSumCount == 0)
  791. {
  792. return 0.000;
  793. }
  794. return Math.Round((DefaultSatisfiedCount / (double)TotalSumCount) * 100, 3);
  795. }
  796. public string DefaultSatisfiedRateText => DefaultSatisfiedRate + "%";
  797. /// <summary>
  798. /// 不满意数
  799. /// </summary>
  800. public int NoSatisfiedCount { get; set; }
  801. /// <summary>
  802. /// 不满意率
  803. /// </summary>
  804. public double NoSatisfiedRate => CalcNoSatisfiedRate();
  805. public double CalcNoSatisfiedRate()
  806. {
  807. if (NoSatisfiedCount == 0 || TotalSumCount == 0)
  808. {
  809. return 0.000;
  810. }
  811. return Math.Round((NoSatisfiedCount / (double)TotalSumCount) * 100, 3);
  812. }
  813. public string NoSatisfiedRateText => NoSatisfiedRate + "%";
  814. /// <summary>
  815. /// 未做评价数
  816. /// </summary>
  817. public int NoEvaluateCount { get; set; }
  818. /// <summary>
  819. /// 未做评价率
  820. /// </summary>
  821. public double NoEvaluateRate => CalcNoEvaluateRate();
  822. public double CalcNoEvaluateRate()
  823. {
  824. if (NoEvaluateCount == 0 || TotalSumCount == 0)
  825. {
  826. return 0.000;
  827. }
  828. return Math.Round((NoEvaluateCount / (double)TotalSumCount) * 100, 3);
  829. }
  830. public string NoEvaluateRateText => NoEvaluateRate + "%";
  831. /// <summary>
  832. /// 未接通数
  833. /// </summary>
  834. public int NoPutThroughCount { get; set; }
  835. /// <summary>
  836. /// 未接通率
  837. /// </summary>
  838. public double NoPutThroughRate => CalcNoPutThroughRate();
  839. public double CalcNoPutThroughRate()
  840. {
  841. if (NoPutThroughCount == 0 || TotalSumCount == 0)
  842. {
  843. return 0.000;
  844. }
  845. return Math.Round((NoPutThroughCount / (double)TotalSumCount) * 100, 3);
  846. }
  847. public string NoPutThroughRateText => NoPutThroughRate + "%";
  848. /// <summary>
  849. /// 一般数
  850. /// </summary>
  851. public int NormalCount { get; set; }
  852. /// <summary>
  853. /// 一般率
  854. /// </summary>
  855. public double NormalRate => CalcNormalRate();
  856. public double CalcNormalRate()
  857. {
  858. if (NormalCount == 0 || TotalSumCount == 0)
  859. {
  860. return 0.000;
  861. }
  862. return Math.Round((NormalCount / (double)TotalSumCount) * 100, 3);
  863. }
  864. public string NormalRateText => NormalRate + "%";
  865. /// <summary>
  866. /// 非常不满意数
  867. /// </summary>
  868. public int VeryNoSatisfiedCount { get; set; }
  869. /// <summary>
  870. /// 非常不满意率
  871. /// </summary>
  872. public double VeryNoSatisfiedRate => CalcVeryNoSatisfiedRate();
  873. public double CalcVeryNoSatisfiedRate()
  874. {
  875. if (VeryNoSatisfiedCount == 0 || TotalSumCount == 0)
  876. {
  877. return 0.000;
  878. }
  879. return Math.Round((VeryNoSatisfiedCount / (double)TotalSumCount) * 100, 3);
  880. }
  881. public string VeryNoSatisfiedRateText => VeryNoSatisfiedRate + "%";
  882. }
  883. public class OrderSourceVo
  884. {
  885. /// <summary>
  886. /// 信件来源
  887. /// </summary>
  888. public string Source { get; set; }
  889. /// <summary>
  890. /// 数量
  891. /// </summary>
  892. public int Num { get; set; }
  893. /// <summary>
  894. /// 总数
  895. /// </summary>
  896. public int TotalSumCount { get; set; }
  897. /// <summary>
  898. /// 占比
  899. /// </summary>
  900. public double Rate => GetRate();
  901. public double GetRate()
  902. {
  903. if (Num == 0 || TotalSumCount == 0)
  904. {
  905. return 0.000;
  906. }
  907. return Math.Round((Num / (double)TotalSumCount) * 100, 2);
  908. }
  909. public string RateText => GetRate() + "%";
  910. }
  911. public class VisitAndHotspotSatisfactionStatisticsDto
  912. {
  913. public string HotspotId { get; set; }
  914. public string HotspotName { get; set; }
  915. /// <summary>
  916. /// 总数
  917. /// </summary>
  918. public int TotalSumCount { get; set; }
  919. /// <summary>
  920. /// 总满意度
  921. /// </summary>
  922. public double TotalSumRate => Math.Round(VerySatisfiedRate + SatisfiedRate + RegardedAsSatisfiedRate + DefaultSatisfiedRate, 2);
  923. public string TotalSumRateText => TotalSumRate + "%";
  924. /// <summary>
  925. /// 非常满意数
  926. /// </summary>
  927. public int VerySatisfiedCount { get; set; }
  928. /// <summary>
  929. /// 非常满意Key
  930. /// </summary>
  931. public string VerySatisfiedKey => "5";
  932. /// <summary>
  933. /// 非常满意率
  934. /// </summary>
  935. public double VerySatisfiedRate => CalcVerySatisfiedRate();
  936. public double CalcVerySatisfiedRate()
  937. {
  938. if (VerySatisfiedCount == 0 || TotalSumCount == 0)
  939. {
  940. return 0;
  941. }
  942. return Math.Round((VerySatisfiedCount / (double)TotalSumCount) * 100, 2);
  943. }
  944. public string VerySatisfiedRateText => VerySatisfiedRate + "%";
  945. /// <summary>
  946. /// 满意数
  947. /// </summary>
  948. public int SatisfiedCount { get; set; }
  949. /// <summary>
  950. /// 满意Key
  951. /// </summary>
  952. public string SatisfiedKey => "4";
  953. /// <summary>
  954. /// 满意率
  955. /// </summary>
  956. public double SatisfiedRate => CalcSatisfiedRate();
  957. public double CalcSatisfiedRate()
  958. {
  959. if (SatisfiedCount == 0 || TotalSumCount == 0)
  960. {
  961. return 0;
  962. }
  963. return Math.Round((SatisfiedCount / (double)TotalSumCount) * 100, 2);
  964. }
  965. public string SatisfiedRateText => SatisfiedRate + "%";
  966. /// <summary>
  967. /// 视为满意数
  968. /// </summary>
  969. public int RegardedAsSatisfiedCount { get; set; }
  970. /// <summary>
  971. /// 视为满意Key
  972. /// </summary>
  973. public string RegardedAsSatisfiedKey => "-1";
  974. /// <summary>
  975. /// 视为满意率
  976. /// </summary>
  977. public double RegardedAsSatisfiedRate => CalcRegardedAsSatisfiedRate();
  978. public double CalcRegardedAsSatisfiedRate()
  979. {
  980. if (RegardedAsSatisfiedCount == 0 || TotalSumCount == 0)
  981. {
  982. return 0;
  983. }
  984. return Math.Round((RegardedAsSatisfiedCount / (double)TotalSumCount) * 100, 2);
  985. }
  986. public string RegardedAsSatisfiedRateText => RegardedAsSatisfiedRate + "%";
  987. /// <summary>
  988. /// 默认满意数
  989. /// </summary>
  990. public int DefaultSatisfiedCount { get; set; }
  991. /// <summary>
  992. /// 默认满意Key
  993. /// </summary>
  994. public string DefaultSatisfiedKey => "0";
  995. /// <summary>
  996. /// 默认满意率
  997. /// </summary>
  998. public double DefaultSatisfiedRate => CalcDefaultSatisfiedRate();
  999. public double CalcDefaultSatisfiedRate()
  1000. {
  1001. if (DefaultSatisfiedCount == 0 || TotalSumCount == 0)
  1002. {
  1003. return 0;
  1004. }
  1005. return Math.Round((DefaultSatisfiedCount / (double)TotalSumCount) * 100, 2);
  1006. }
  1007. public string DefaultSatisfiedRateText => DefaultSatisfiedRate + "%";
  1008. /// <summary>
  1009. /// 不满意数
  1010. /// </summary>
  1011. public int NoSatisfiedCount { get; set; }
  1012. /// <summary>
  1013. /// 不满意Key
  1014. /// </summary>
  1015. public string NoSatisfiedKey => "2";
  1016. /// <summary>
  1017. /// 不满意率
  1018. /// </summary>
  1019. public double NoSatisfiedRate => CalcNoSatisfiedRate();
  1020. public double CalcNoSatisfiedRate()
  1021. {
  1022. if (NoSatisfiedCount == 0 || TotalSumCount == 0)
  1023. {
  1024. return 0;
  1025. }
  1026. return Math.Round((NoSatisfiedCount / (double)TotalSumCount) * 100, 2);
  1027. }
  1028. public string NoSatisfiedRateText => NoSatisfiedRate + "%";
  1029. /// <summary>
  1030. /// 未做评价数
  1031. /// </summary>
  1032. public int NoEvaluateCount { get; set; }
  1033. /// <summary>
  1034. /// 未做评价Key
  1035. /// </summary>
  1036. public string NoEvaluateKey => "7";
  1037. /// <summary>
  1038. /// 未做评价率
  1039. /// </summary>
  1040. public double NoEvaluateRate => CalcNoEvaluateRate();
  1041. public double CalcNoEvaluateRate()
  1042. {
  1043. if (NoEvaluateCount == 0 || TotalSumCount == 0)
  1044. {
  1045. return 0;
  1046. }
  1047. return Math.Round((NoEvaluateCount / (double)TotalSumCount) * 100, 2);
  1048. }
  1049. public string NoEvaluateRateText => NoEvaluateRate + "%";
  1050. /// <summary>
  1051. /// 未接通数
  1052. /// </summary>
  1053. public int NoPutThroughCount { get; set; }
  1054. /// <summary>
  1055. /// 未接通Key
  1056. /// </summary>
  1057. public string NoPutThroughKey => "6";
  1058. /// <summary>
  1059. /// 未接通率
  1060. /// </summary>
  1061. public double NoPutThroughRate => CalcNoPutThroughRate();
  1062. public double CalcNoPutThroughRate()
  1063. {
  1064. if (NoPutThroughCount == 0 || TotalSumCount == 0)
  1065. {
  1066. return 0;
  1067. }
  1068. return Math.Round((NoPutThroughCount / (double)TotalSumCount) * 100, 2);
  1069. }
  1070. public string NoPutThroughRateText => NoPutThroughRate + "%";
  1071. }
  1072. public class OrderSourceHeaderVo
  1073. {
  1074. /// <summary>
  1075. /// 日期
  1076. /// </summary>
  1077. public string? Time { get; set; }
  1078. /// <summary>
  1079. /// 日期(不显示)
  1080. /// </summary>
  1081. public string? TimeSort { get; set; }
  1082. /// <summary>
  1083. /// 小计
  1084. /// </summary>
  1085. public int? Subtotal => Phone + Web + Rests + Created + WeChat + App + WisdomYB + Platform + Platform12328 + MayorAndNetizens + MediaYB + Platform12345 + Interaction + ServiceYB + CityTransfer + Platform110 + NoService + Iyb;
  1086. /// <summary>
  1087. /// 电话
  1088. /// </summary>
  1089. public int? Phone { get; set; }
  1090. /// <summary>
  1091. /// 因特网
  1092. /// </summary>
  1093. public int? Web { get; set; }
  1094. /// <summary>
  1095. /// 其他
  1096. /// </summary>
  1097. public int? Rests { get; set; }
  1098. /// <summary>
  1099. /// 自建
  1100. /// </summary>
  1101. public int? Created { get; set; }
  1102. /// <summary>
  1103. /// 微信
  1104. /// </summary>
  1105. public int? WeChat { get; set; }
  1106. /// <summary>
  1107. /// APP
  1108. /// </summary>
  1109. public int? App { get; set; }
  1110. /// <summary>
  1111. /// 智慧宜宾
  1112. /// </summary>
  1113. public int? WisdomYB { get; set; }
  1114. /// <summary>
  1115. /// 综治平台
  1116. /// </summary>
  1117. public int? Platform { get; set; }
  1118. /// <summary>
  1119. /// 省12328平台
  1120. /// </summary>
  1121. public int? Platform12328 { get; set; }
  1122. /// <summary>
  1123. /// 市长和网民
  1124. /// </summary>
  1125. public int? MayorAndNetizens { get; set; }
  1126. /// <summary>
  1127. /// 宜宾融媒体
  1128. /// </summary>
  1129. public int? MediaYB { get; set; }
  1130. /// <summary>
  1131. /// 省12345平台
  1132. /// </summary>
  1133. public int? Platform12345 { get; set; }
  1134. /// <summary>
  1135. /// 省政民互动
  1136. /// </summary>
  1137. public int? Interaction { get; set; }
  1138. /// <summary>
  1139. /// 宜办事
  1140. /// </summary>
  1141. public int? ServiceYB { get; set; }
  1142. /// <summary>
  1143. /// 市州互转
  1144. /// </summary>
  1145. public int? CityTransfer { get; set; }
  1146. /// <summary>
  1147. /// 宜宾110平台
  1148. /// </summary>
  1149. public int? Platform110 { get; set; }
  1150. /// <summary>
  1151. /// 办不成事反映窗口
  1152. /// </summary>
  1153. public int? NoService { get; set; }
  1154. // <summary>
  1155. /// i宜宾
  1156. /// </summary>
  1157. public int? Iyb { get; set; }
  1158. }
  1159. public class OrderScreenApplyVo
  1160. {
  1161. /// <summary>
  1162. /// 提起时间
  1163. /// </summary>
  1164. public string ApplyTime { get; set; }
  1165. /// <summary>
  1166. /// 提起人
  1167. /// </summary>
  1168. public string ApplyUserName { get; set; }
  1169. /// <summary>
  1170. /// 部门名称
  1171. /// </summary>
  1172. public string ApplyOrgName { get; set; }
  1173. /// <summary>
  1174. /// 数量
  1175. /// </summary>
  1176. public int ApplyNum { get; set; }
  1177. }
  1178. public class OrderScreenAuditVo
  1179. {
  1180. /// <summary>
  1181. /// 审批人
  1182. /// </summary>
  1183. public string AuditName { get; set; }
  1184. /// <summary>
  1185. /// 审批数量
  1186. /// </summary>
  1187. public int AuditNum { get; set; }
  1188. /// <summary>
  1189. /// 退回数量
  1190. /// </summary>
  1191. public int AuditBackNum { get; set; }
  1192. /// <summary>
  1193. /// 小计
  1194. /// </summary>
  1195. public int Total => AuditNum + AuditBackNum;
  1196. }
  1197. public class OrderCenterAcceptVo : OrderCenterBaseVo
  1198. {
  1199. /// <summary>
  1200. /// 日期
  1201. /// </summary>
  1202. public string Time { get; set; }
  1203. }
  1204. public class OrderCenterAcceptUserVo : OrderCenterBaseVo
  1205. {
  1206. /// <summary>
  1207. /// 值班坐席
  1208. /// </summary>
  1209. public string AcceptUserName { get; set; }
  1210. }
  1211. public class OrderCenterAcceptHourVo : OrderCenterBaseVo
  1212. {
  1213. /// <summary>
  1214. /// 时间段
  1215. /// </summary>
  1216. public string Hour { get; set; }
  1217. }
  1218. public class OrderCenterBaseVo
  1219. {
  1220. /// <summary>
  1221. /// 受理总件
  1222. /// </summary>
  1223. public int AcceptNum { get; set; }
  1224. /// <summary>
  1225. /// 有效件
  1226. /// </summary>
  1227. public int ValidNum { get; set; }
  1228. /// <summary>
  1229. /// 重复件
  1230. /// </summary>
  1231. public int RepetitionNum { get; set; }
  1232. /// <summary>
  1233. /// 无效件
  1234. /// </summary>
  1235. public int InvalidNum { get; set; }
  1236. /// <summary>
  1237. /// 已办件
  1238. /// </summary>
  1239. public int HandleNum { get; set; }
  1240. /// <summary>
  1241. /// 待办件
  1242. /// </summary>
  1243. public int NoHandleNum { get; set; }
  1244. /// <summary>
  1245. /// 退回件
  1246. /// </summary>
  1247. public int BackNum { get; set; }
  1248. /// <summary>
  1249. /// 值班坐席
  1250. /// </summary>
  1251. public int DutyDeskNum { get; set; }
  1252. }
  1253. }