OrderBiDto.cs 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548
  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 { get; set; }
  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?.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. }
  433. public class VisitAndOrgSatisfactionStatisticsDto
  434. {
  435. public string OrgName { get; set; }
  436. public string OrgCode { get; set; }
  437. public EOrgType? OrgType { get; set; }
  438. public string OrgTypeText => OrgType?.GetDescription();
  439. /// <summary>
  440. /// 总数
  441. /// </summary>
  442. public int TotalSumCount { get; set; }
  443. /// <summary>
  444. /// 总满意度
  445. /// </summary>
  446. //public double TotalSumRate => Math.Round(VerySatisfiedRate + SatisfiedRate + RegardedAsSatisfiedRate+ DefaultSatisfiedRate, 2) ;
  447. public double TotalSumRate => CalcTotalSumRate();
  448. public double CalcTotalSumRate()
  449. {
  450. //if ((VerySatisfiedCount + SatisfiedCount + RegardedAsSatisfiedCount + DefaultSatisfiedCount + NoSatisfiedCount) == 0)
  451. // return 0;
  452. // return Math.Round(((double)VerySatisfiedCount + SatisfiedCount + RegardedAsSatisfiedCount + DefaultSatisfiedCount) / (VerySatisfiedCount + SatisfiedCount + RegardedAsSatisfiedCount + DefaultSatisfiedCount + NoSatisfiedCount) * 100, 2);
  453. if (TotalSumCount - NoSatisfiedCount <= 0)
  454. return 0;
  455. return Math.Round((((double)TotalSumCount - NoSatisfiedCount) / TotalSumCount) * 100, 2);
  456. }
  457. public string TotalSumRateText => TotalSumRate + "%";
  458. /// <summary>
  459. /// 非常满意数
  460. /// </summary>
  461. public int VerySatisfiedCount { get; set; }
  462. /// <summary>
  463. /// 非常满意Key
  464. /// </summary>
  465. public string VerySatisfiedKey => "5";
  466. /// <summary>
  467. /// 非常满意率
  468. /// </summary>
  469. public double VerySatisfiedRate => CalcVerySatisfiedRate();
  470. public double CalcVerySatisfiedRate()
  471. {
  472. if (VerySatisfiedCount == 0 || TotalSumCount == 0)
  473. {
  474. return 0;
  475. }
  476. return Math.Round((VerySatisfiedCount / (double)TotalSumCount) * 100, 2);
  477. }
  478. public string VerySatisfiedRateText => VerySatisfiedRate + "%";
  479. /// <summary>
  480. /// 满意数
  481. /// </summary>
  482. public int SatisfiedCount { get; set; }
  483. /// <summary>
  484. /// 满意Key
  485. /// </summary>
  486. public string SatisfiedKey => "4";
  487. /// <summary>
  488. /// 满意率
  489. /// </summary>
  490. public double SatisfiedRate => CalcSatisfiedRate();
  491. public double CalcSatisfiedRate()
  492. {
  493. if (SatisfiedCount == 0 || TotalSumCount == 0)
  494. {
  495. return 0;
  496. }
  497. return Math.Round((SatisfiedCount / (double)TotalSumCount) * 100, 2);
  498. }
  499. public string SatisfiedRateText => SatisfiedRate + "%";
  500. /// <summary>
  501. /// 视为满意数
  502. /// </summary>
  503. public int RegardedAsSatisfiedCount { get; set; }
  504. /// <summary>
  505. /// 视为满意Key
  506. /// </summary>
  507. public string RegardedAsSatisfiedKey => "-1";
  508. /// <summary>
  509. /// 视为满意率
  510. /// </summary>
  511. public double RegardedAsSatisfiedRate => CalcRegardedAsSatisfiedRate();
  512. public double CalcRegardedAsSatisfiedRate()
  513. {
  514. if (RegardedAsSatisfiedCount == 0 || TotalSumCount == 0)
  515. {
  516. return 0;
  517. }
  518. return Math.Round((RegardedAsSatisfiedCount / (double)TotalSumCount) * 100, 2);
  519. }
  520. public string RegardedAsSatisfiedRateText => RegardedAsSatisfiedRate + "%";
  521. /// <summary>
  522. /// 默认满意数
  523. /// </summary>
  524. public int DefaultSatisfiedCount { get; set; }
  525. /// <summary>
  526. /// 默认满意Key
  527. /// </summary>
  528. public string DefaultSatisfiedKey => "0";
  529. /// <summary>
  530. /// 默认满意率
  531. /// </summary>
  532. public double DefaultSatisfiedRate => CalcDefaultSatisfiedRate();
  533. public double CalcDefaultSatisfiedRate()
  534. {
  535. if (DefaultSatisfiedCount == 0 || TotalSumCount == 0)
  536. {
  537. return 0;
  538. }
  539. return Math.Round((DefaultSatisfiedCount / (double)TotalSumCount) * 100, 2);
  540. }
  541. public string DefaultSatisfiedRateText => DefaultSatisfiedRate + "%";
  542. /// <summary>
  543. /// 不满意数
  544. /// </summary>
  545. public int NoSatisfiedCount { get; set; }
  546. /// <summary>
  547. /// 不满意Key
  548. /// </summary>
  549. public string NoSatisfiedKey => "2";
  550. /// <summary>
  551. /// 不满意率
  552. /// </summary>
  553. public double NoSatisfiedRate => CalcNoSatisfiedRate();
  554. public double CalcNoSatisfiedRate()
  555. {
  556. if (NoSatisfiedCount == 0 || TotalSumCount == 0)
  557. {
  558. return 0;
  559. }
  560. return Math.Round((NoSatisfiedCount / (double)TotalSumCount) * 100, 2);
  561. }
  562. public string NoSatisfiedRateText => NoSatisfiedRate + "%";
  563. /// <summary>
  564. /// 未做评价数
  565. /// </summary>
  566. public int NoEvaluateCount { get; set; }
  567. /// <summary>
  568. /// 未做评价Key
  569. /// </summary>
  570. public string NoEvaluateKey => "7";
  571. /// <summary>
  572. /// 未做评价率
  573. /// </summary>
  574. public double NoEvaluateRate => CalcNoEvaluateRate();
  575. public double CalcNoEvaluateRate()
  576. {
  577. if (NoEvaluateCount == 0 || TotalSumCount == 0)
  578. {
  579. return 0;
  580. }
  581. return Math.Round((NoEvaluateCount / (double)TotalSumCount) * 100, 2);
  582. }
  583. public string NoEvaluateRateText => NoEvaluateRate + "%";
  584. /// <summary>
  585. /// 未接通数
  586. /// </summary>
  587. public int NoPutThroughCount { get; set; }
  588. /// <summary>
  589. /// 未接通Key
  590. /// </summary>
  591. public string NoPutThroughKey => "6";
  592. /// <summary>
  593. /// 未接通率
  594. /// </summary>
  595. public double NoPutThroughRate => CalcNoPutThroughRate();
  596. public double CalcNoPutThroughRate()
  597. {
  598. if (NoPutThroughCount == 0 || TotalSumCount == 0)
  599. {
  600. return 0;
  601. }
  602. return Math.Round((NoPutThroughCount / (double)TotalSumCount) * 100, 2);
  603. }
  604. public string NoPutThroughRateText => NoPutThroughRate + "%";
  605. /// <summary>
  606. /// 一般数
  607. /// </summary>
  608. public int NormalCount { get; set; }
  609. /// <summary>
  610. /// 一般Key
  611. /// </summary>
  612. public string NormalKey => "3";
  613. /// <summary>
  614. /// 一般率
  615. /// </summary>
  616. public double NormalRate => CalcNormalRate();
  617. public double CalcNormalRate()
  618. {
  619. if (NormalCount == 0 || TotalSumCount == 0)
  620. {
  621. return 0.000;
  622. }
  623. return Math.Round((NormalCount / (double)TotalSumCount) * 100, 3);
  624. }
  625. public string NormalRateText => NormalRate + "%";
  626. /// <summary>
  627. /// 非常不满意数
  628. /// </summary>
  629. public int VeryNoSatisfiedCount { get; set; }
  630. /// <summary>
  631. /// 非常不满意数Key
  632. /// </summary>
  633. public string VeryNoSatisfiedKey => "1";
  634. /// <summary>
  635. /// 非常不满意率
  636. /// </summary>
  637. public double VeryNoSatisfiedRate => CalcVeryNoSatisfiedRate();
  638. public double CalcVeryNoSatisfiedRate()
  639. {
  640. if (VeryNoSatisfiedCount == 0 || TotalSumCount == 0)
  641. {
  642. return 0.000;
  643. }
  644. return Math.Round((VeryNoSatisfiedCount / (double)TotalSumCount) * 100, 3);
  645. }
  646. public string VeryNoSatisfiedRateText => VeryNoSatisfiedRate + "%";
  647. }
  648. public class BiOrderSendVo
  649. {
  650. public string UserId { get; set; }
  651. public string UserName { get; set; }
  652. /// <summary>
  653. /// 派单量
  654. /// </summary>
  655. public int SendOrderNum { get; set; }
  656. /// <summary>
  657. /// 待派单量
  658. /// </summary>
  659. public int NoSendOrderNum { get; set; }
  660. /// <summary>
  661. /// 重办量
  662. /// </summary>
  663. public int ReSendOrderNum { get; set; }
  664. public string AccuracyRate { get; set; }
  665. }
  666. public class OrderReTransactVo
  667. {
  668. /// <summary>
  669. /// 时间
  670. /// </summary>
  671. public string Time { get; set; }
  672. /// <summary>
  673. /// 部门名称
  674. /// </summary>
  675. public string OrgName { get; set; }
  676. /// <summary>
  677. /// 部门id
  678. /// </summary>
  679. public string OrgId { get; set; }
  680. /// <summary>
  681. /// 次数
  682. /// </summary>
  683. public int Num { get; set; }
  684. }
  685. public class SecondaryHandlingVo
  686. {
  687. /// <summary>
  688. /// 部门名称
  689. /// </summary>
  690. public string OrgName { get; set; }
  691. /// <summary>
  692. /// 部门id
  693. /// </summary>
  694. public string OrgId { get; set; }
  695. /// <summary>
  696. /// 次数
  697. /// </summary>
  698. public int Num { get; set; }
  699. }
  700. public class SecondaryHandlingSatisfactionVo
  701. {
  702. /// <summary>
  703. /// 部门名称
  704. /// </summary>
  705. public string OrgName { get; set; }
  706. /// <summary>
  707. /// 部门id
  708. /// </summary>
  709. public string OrgId { get; set; }
  710. /// <summary>
  711. /// 部门类型
  712. /// </summary>
  713. public EOrgType OrgType { get; set; }
  714. public string OrgTypeText => OrgType.GetDescription();
  715. /// <summary>
  716. /// 总数
  717. /// </summary>
  718. public int TotalSumCount { get; set; }
  719. /// <summary>
  720. /// 总满意度
  721. /// </summary>
  722. public double TotalSumRate => Math.Round(VerySatisfiedRate + SatisfiedRate + RegardedAsSatisfiedRate + DefaultSatisfiedRate, 2);
  723. public string TotalSumRateText => TotalSumRate + "%";
  724. /// <summary>
  725. /// 非常满意数
  726. /// </summary>
  727. public int VerySatisfiedCount { get; set; }
  728. /// <summary>
  729. /// 非常满意率
  730. /// </summary>
  731. public double VerySatisfiedRate => CalcVerySatisfiedRate();
  732. public double CalcVerySatisfiedRate()
  733. {
  734. if (VerySatisfiedCount == 0 || TotalSumCount == 0)
  735. {
  736. return 0.000;
  737. }
  738. return Math.Round((VerySatisfiedCount / (double)TotalSumCount) * 100, 2);
  739. }
  740. public string VerySatisfiedRateText => VerySatisfiedRate + "%";
  741. /// <summary>
  742. /// 满意数
  743. /// </summary>
  744. public int SatisfiedCount { get; set; }
  745. /// <summary>
  746. /// 满意率
  747. /// </summary>
  748. public double SatisfiedRate => CalcSatisfiedRate();
  749. public double CalcSatisfiedRate()
  750. {
  751. if (SatisfiedCount == 0 || TotalSumCount == 0)
  752. {
  753. return 0.000;
  754. }
  755. return Math.Round((SatisfiedCount / (double)TotalSumCount) * 100, 3);
  756. }
  757. public string SatisfiedRateText => SatisfiedRate + "%";
  758. /// <summary>
  759. /// 视为满意数
  760. /// </summary>
  761. public int RegardedAsSatisfiedCount { get; set; }
  762. /// <summary>
  763. /// 视为满意率
  764. /// </summary>
  765. public double RegardedAsSatisfiedRate => CalcRegardedAsSatisfiedRate();
  766. public double CalcRegardedAsSatisfiedRate()
  767. {
  768. if (RegardedAsSatisfiedCount == 0 || TotalSumCount == 0)
  769. {
  770. return 0.000;
  771. }
  772. return Math.Round((RegardedAsSatisfiedCount / (double)TotalSumCount) * 100, 3);
  773. }
  774. public string RegardedAsSatisfiedRateText => RegardedAsSatisfiedRate + "%";
  775. /// <summary>
  776. /// 默认满意数
  777. /// </summary>
  778. public int DefaultSatisfiedCount { get; set; }
  779. /// <summary>
  780. /// 默认满意率
  781. /// </summary>
  782. public double DefaultSatisfiedRate => CalcDefaultSatisfiedRate();
  783. public double CalcDefaultSatisfiedRate()
  784. {
  785. if (DefaultSatisfiedCount == 0 || TotalSumCount == 0)
  786. {
  787. return 0.000;
  788. }
  789. return Math.Round((DefaultSatisfiedCount / (double)TotalSumCount) * 100, 3);
  790. }
  791. public string DefaultSatisfiedRateText => DefaultSatisfiedRate + "%";
  792. /// <summary>
  793. /// 不满意数
  794. /// </summary>
  795. public int NoSatisfiedCount { get; set; }
  796. /// <summary>
  797. /// 不满意率
  798. /// </summary>
  799. public double NoSatisfiedRate => CalcNoSatisfiedRate();
  800. public double CalcNoSatisfiedRate()
  801. {
  802. if (NoSatisfiedCount == 0 || TotalSumCount == 0)
  803. {
  804. return 0.000;
  805. }
  806. return Math.Round((NoSatisfiedCount / (double)TotalSumCount) * 100, 3);
  807. }
  808. public string NoSatisfiedRateText => NoSatisfiedRate + "%";
  809. /// <summary>
  810. /// 未做评价数
  811. /// </summary>
  812. public int NoEvaluateCount { get; set; }
  813. /// <summary>
  814. /// 未做评价率
  815. /// </summary>
  816. public double NoEvaluateRate => CalcNoEvaluateRate();
  817. public double CalcNoEvaluateRate()
  818. {
  819. if (NoEvaluateCount == 0 || TotalSumCount == 0)
  820. {
  821. return 0.000;
  822. }
  823. return Math.Round((NoEvaluateCount / (double)TotalSumCount) * 100, 3);
  824. }
  825. public string NoEvaluateRateText => NoEvaluateRate + "%";
  826. /// <summary>
  827. /// 未接通数
  828. /// </summary>
  829. public int NoPutThroughCount { get; set; }
  830. /// <summary>
  831. /// 未接通率
  832. /// </summary>
  833. public double NoPutThroughRate => CalcNoPutThroughRate();
  834. public double CalcNoPutThroughRate()
  835. {
  836. if (NoPutThroughCount == 0 || TotalSumCount == 0)
  837. {
  838. return 0.000;
  839. }
  840. return Math.Round((NoPutThroughCount / (double)TotalSumCount) * 100, 3);
  841. }
  842. public string NoPutThroughRateText => NoPutThroughRate + "%";
  843. /// <summary>
  844. /// 一般数
  845. /// </summary>
  846. public int NormalCount { get; set; }
  847. /// <summary>
  848. /// 一般率
  849. /// </summary>
  850. public double NormalRate => CalcNormalRate();
  851. public double CalcNormalRate()
  852. {
  853. if (NormalCount == 0 || TotalSumCount == 0)
  854. {
  855. return 0.000;
  856. }
  857. return Math.Round((NormalCount / (double)TotalSumCount) * 100, 3);
  858. }
  859. public string NormalRateText => NormalRate + "%";
  860. /// <summary>
  861. /// 非常不满意数
  862. /// </summary>
  863. public int VeryNoSatisfiedCount { get; set; }
  864. /// <summary>
  865. /// 非常不满意率
  866. /// </summary>
  867. public double VeryNoSatisfiedRate => CalcVeryNoSatisfiedRate();
  868. public double CalcVeryNoSatisfiedRate()
  869. {
  870. if (VeryNoSatisfiedCount == 0 || TotalSumCount == 0)
  871. {
  872. return 0.000;
  873. }
  874. return Math.Round((VeryNoSatisfiedCount / (double)TotalSumCount) * 100, 3);
  875. }
  876. public string VeryNoSatisfiedRateText => VeryNoSatisfiedRate + "%";
  877. }
  878. public class OrderSourceVo
  879. {
  880. /// <summary>
  881. /// 信件来源
  882. /// </summary>
  883. public string Source { get; set; }
  884. /// <summary>
  885. /// 数量
  886. /// </summary>
  887. public int Num { get; set; }
  888. /// <summary>
  889. /// 总数
  890. /// </summary>
  891. public int TotalSumCount { get; set; }
  892. /// <summary>
  893. /// 占比
  894. /// </summary>
  895. public double Rate => GetRate();
  896. public double GetRate()
  897. {
  898. if (Num == 0 || TotalSumCount == 0)
  899. {
  900. return 0.000;
  901. }
  902. return Math.Round((Num / (double)TotalSumCount) * 100, 2);
  903. }
  904. public string RateText => GetRate() + "%";
  905. }
  906. public class VisitAndHotspotSatisfactionStatisticsDto
  907. {
  908. public string HotspotId { get; set; }
  909. public string HotspotName { get; set; }
  910. /// <summary>
  911. /// 总数
  912. /// </summary>
  913. public int TotalSumCount { get; set; }
  914. /// <summary>
  915. /// 总满意度
  916. /// </summary>
  917. public double TotalSumRate => Math.Round(VerySatisfiedRate + SatisfiedRate + RegardedAsSatisfiedRate + DefaultSatisfiedRate, 2);
  918. public string TotalSumRateText => TotalSumRate + "%";
  919. /// <summary>
  920. /// 非常满意数
  921. /// </summary>
  922. public int VerySatisfiedCount { get; set; }
  923. /// <summary>
  924. /// 非常满意Key
  925. /// </summary>
  926. public string VerySatisfiedKey => "5";
  927. /// <summary>
  928. /// 非常满意率
  929. /// </summary>
  930. public double VerySatisfiedRate => CalcVerySatisfiedRate();
  931. public double CalcVerySatisfiedRate()
  932. {
  933. if (VerySatisfiedCount == 0 || TotalSumCount == 0)
  934. {
  935. return 0;
  936. }
  937. return Math.Round((VerySatisfiedCount / (double)TotalSumCount) * 100, 2);
  938. }
  939. public string VerySatisfiedRateText => VerySatisfiedRate + "%";
  940. /// <summary>
  941. /// 满意数
  942. /// </summary>
  943. public int SatisfiedCount { get; set; }
  944. /// <summary>
  945. /// 满意Key
  946. /// </summary>
  947. public string SatisfiedKey => "4";
  948. /// <summary>
  949. /// 满意率
  950. /// </summary>
  951. public double SatisfiedRate => CalcSatisfiedRate();
  952. public double CalcSatisfiedRate()
  953. {
  954. if (SatisfiedCount == 0 || TotalSumCount == 0)
  955. {
  956. return 0;
  957. }
  958. return Math.Round((SatisfiedCount / (double)TotalSumCount) * 100, 2);
  959. }
  960. public string SatisfiedRateText => SatisfiedRate + "%";
  961. /// <summary>
  962. /// 视为满意数
  963. /// </summary>
  964. public int RegardedAsSatisfiedCount { get; set; }
  965. /// <summary>
  966. /// 视为满意Key
  967. /// </summary>
  968. public string RegardedAsSatisfiedKey => "-1";
  969. /// <summary>
  970. /// 视为满意率
  971. /// </summary>
  972. public double RegardedAsSatisfiedRate => CalcRegardedAsSatisfiedRate();
  973. public double CalcRegardedAsSatisfiedRate()
  974. {
  975. if (RegardedAsSatisfiedCount == 0 || TotalSumCount == 0)
  976. {
  977. return 0;
  978. }
  979. return Math.Round((RegardedAsSatisfiedCount / (double)TotalSumCount) * 100, 2);
  980. }
  981. public string RegardedAsSatisfiedRateText => RegardedAsSatisfiedRate + "%";
  982. /// <summary>
  983. /// 默认满意数
  984. /// </summary>
  985. public int DefaultSatisfiedCount { get; set; }
  986. /// <summary>
  987. /// 默认满意Key
  988. /// </summary>
  989. public string DefaultSatisfiedKey => "0";
  990. /// <summary>
  991. /// 默认满意率
  992. /// </summary>
  993. public double DefaultSatisfiedRate => CalcDefaultSatisfiedRate();
  994. public double CalcDefaultSatisfiedRate()
  995. {
  996. if (DefaultSatisfiedCount == 0 || TotalSumCount == 0)
  997. {
  998. return 0;
  999. }
  1000. return Math.Round((DefaultSatisfiedCount / (double)TotalSumCount) * 100, 2);
  1001. }
  1002. public string DefaultSatisfiedRateText => DefaultSatisfiedRate + "%";
  1003. /// <summary>
  1004. /// 不满意数
  1005. /// </summary>
  1006. public int NoSatisfiedCount { get; set; }
  1007. /// <summary>
  1008. /// 不满意Key
  1009. /// </summary>
  1010. public string NoSatisfiedKey => "2";
  1011. /// <summary>
  1012. /// 不满意率
  1013. /// </summary>
  1014. public double NoSatisfiedRate => CalcNoSatisfiedRate();
  1015. public double CalcNoSatisfiedRate()
  1016. {
  1017. if (NoSatisfiedCount == 0 || TotalSumCount == 0)
  1018. {
  1019. return 0;
  1020. }
  1021. return Math.Round((NoSatisfiedCount / (double)TotalSumCount) * 100, 2);
  1022. }
  1023. public string NoSatisfiedRateText => NoSatisfiedRate + "%";
  1024. /// <summary>
  1025. /// 未做评价数
  1026. /// </summary>
  1027. public int NoEvaluateCount { get; set; }
  1028. /// <summary>
  1029. /// 未做评价Key
  1030. /// </summary>
  1031. public string NoEvaluateKey => "7";
  1032. /// <summary>
  1033. /// 未做评价率
  1034. /// </summary>
  1035. public double NoEvaluateRate => CalcNoEvaluateRate();
  1036. public double CalcNoEvaluateRate()
  1037. {
  1038. if (NoEvaluateCount == 0 || TotalSumCount == 0)
  1039. {
  1040. return 0;
  1041. }
  1042. return Math.Round((NoEvaluateCount / (double)TotalSumCount) * 100, 2);
  1043. }
  1044. public string NoEvaluateRateText => NoEvaluateRate + "%";
  1045. /// <summary>
  1046. /// 未接通数
  1047. /// </summary>
  1048. public int NoPutThroughCount { get; set; }
  1049. /// <summary>
  1050. /// 未接通Key
  1051. /// </summary>
  1052. public string NoPutThroughKey => "6";
  1053. /// <summary>
  1054. /// 未接通率
  1055. /// </summary>
  1056. public double NoPutThroughRate => CalcNoPutThroughRate();
  1057. public double CalcNoPutThroughRate()
  1058. {
  1059. if (NoPutThroughCount == 0 || TotalSumCount == 0)
  1060. {
  1061. return 0;
  1062. }
  1063. return Math.Round((NoPutThroughCount / (double)TotalSumCount) * 100, 2);
  1064. }
  1065. public string NoPutThroughRateText => NoPutThroughRate + "%";
  1066. }
  1067. public class OrderSourceHeaderVo
  1068. {
  1069. /// <summary>
  1070. /// 日期
  1071. /// </summary>
  1072. public string? Time { get; set; }
  1073. /// <summary>
  1074. /// 日期(不显示)
  1075. /// </summary>
  1076. public string? TimeSort { get; set; }
  1077. /// <summary>
  1078. /// 小计
  1079. /// </summary>
  1080. public int? Subtotal => Phone + Web + Rests + Created + WeChat + App + WisdomYB + Platform + Platform12328 + MayorAndNetizens + MediaYB + Platform12345 + Interaction + ServiceYB + CityTransfer + Platform110 + NoService + Iyb;
  1081. /// <summary>
  1082. /// 电话
  1083. /// </summary>
  1084. public int? Phone { get; set; }
  1085. /// <summary>
  1086. /// 因特网
  1087. /// </summary>
  1088. public int? Web { get; set; }
  1089. /// <summary>
  1090. /// 其他
  1091. /// </summary>
  1092. public int? Rests { get; set; }
  1093. /// <summary>
  1094. /// 自建
  1095. /// </summary>
  1096. public int? Created { get; set; }
  1097. /// <summary>
  1098. /// 微信
  1099. /// </summary>
  1100. public int? WeChat { get; set; }
  1101. /// <summary>
  1102. /// APP
  1103. /// </summary>
  1104. public int? App { get; set; }
  1105. /// <summary>
  1106. /// 智慧宜宾
  1107. /// </summary>
  1108. public int? WisdomYB { get; set; }
  1109. /// <summary>
  1110. /// 综治平台
  1111. /// </summary>
  1112. public int? Platform { get; set; }
  1113. /// <summary>
  1114. /// 省12328平台
  1115. /// </summary>
  1116. public int? Platform12328 { get; set; }
  1117. /// <summary>
  1118. /// 市长和网民
  1119. /// </summary>
  1120. public int? MayorAndNetizens { get; set; }
  1121. /// <summary>
  1122. /// 宜宾融媒体
  1123. /// </summary>
  1124. public int? MediaYB { get; set; }
  1125. /// <summary>
  1126. /// 省12345平台
  1127. /// </summary>
  1128. public int? Platform12345 { get; set; }
  1129. /// <summary>
  1130. /// 省政民互动
  1131. /// </summary>
  1132. public int? Interaction { get; set; }
  1133. /// <summary>
  1134. /// 宜办事
  1135. /// </summary>
  1136. public int? ServiceYB { get; set; }
  1137. /// <summary>
  1138. /// 市州互转
  1139. /// </summary>
  1140. public int? CityTransfer { get; set; }
  1141. /// <summary>
  1142. /// 宜宾110平台
  1143. /// </summary>
  1144. public int? Platform110 { get; set; }
  1145. /// <summary>
  1146. /// 办不成事反映窗口
  1147. /// </summary>
  1148. public int? NoService { get; set; }
  1149. // <summary>
  1150. /// i宜宾
  1151. /// </summary>
  1152. public int? Iyb { get; set; }
  1153. }
  1154. public class OrderScreenApplyVo
  1155. {
  1156. /// <summary>
  1157. /// 提起时间
  1158. /// </summary>
  1159. public string ApplyTime { get; set; }
  1160. /// <summary>
  1161. /// 提起人
  1162. /// </summary>
  1163. public string ApplyUserName { get; set; }
  1164. /// <summary>
  1165. /// 部门名称
  1166. /// </summary>
  1167. public string ApplyOrgName { get; set; }
  1168. /// <summary>
  1169. /// 数量
  1170. /// </summary>
  1171. public int ApplyNum { get; set; }
  1172. }
  1173. public class OrderScreenAuditVo
  1174. {
  1175. /// <summary>
  1176. /// 审批人
  1177. /// </summary>
  1178. public string AuditName { get; set; }
  1179. /// <summary>
  1180. /// 审批数量
  1181. /// </summary>
  1182. public int AuditNum { get; set; }
  1183. /// <summary>
  1184. /// 退回数量
  1185. /// </summary>
  1186. public int AuditBackNum { get; set; }
  1187. /// <summary>
  1188. /// 小计
  1189. /// </summary>
  1190. public int Total => AuditNum + AuditBackNum;
  1191. }
  1192. public class OrderCenterAcceptVo : OrderCenterBaseVo
  1193. {
  1194. /// <summary>
  1195. /// 日期
  1196. /// </summary>
  1197. public string Time { get; set; }
  1198. }
  1199. public class OrderCenterAcceptUserVo : OrderCenterBaseVo
  1200. {
  1201. /// <summary>
  1202. /// 值班坐席
  1203. /// </summary>
  1204. public string AcceptUserName { get; set; }
  1205. }
  1206. public class OrderCenterAcceptHourVo : OrderCenterBaseVo
  1207. {
  1208. /// <summary>
  1209. /// 时间段
  1210. /// </summary>
  1211. public string Hour { get; set; }
  1212. }
  1213. public class OrderCenterBaseVo
  1214. {
  1215. /// <summary>
  1216. /// 受理总件
  1217. /// </summary>
  1218. public int AcceptNum { get; set; }
  1219. /// <summary>
  1220. /// 有效件
  1221. /// </summary>
  1222. public int ValidNum { get; set; }
  1223. /// <summary>
  1224. /// 重复件
  1225. /// </summary>
  1226. public int RepetitionNum { get; set; }
  1227. /// <summary>
  1228. /// 无效件
  1229. /// </summary>
  1230. public int InvalidNum { get; set; }
  1231. /// <summary>
  1232. /// 已办件
  1233. /// </summary>
  1234. public int HandleNum { get; set; }
  1235. /// <summary>
  1236. /// 待办件
  1237. /// </summary>
  1238. public int NoHandleNum { get; set; }
  1239. /// <summary>
  1240. /// 退回件
  1241. /// </summary>
  1242. public int BackNum { get; set; }
  1243. /// <summary>
  1244. /// 值班坐席
  1245. /// </summary>
  1246. public int DutyDeskNum { get; set; }
  1247. }
  1248. }