Form1.cs 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257
  1. using DynamicExpresso;
  2. using Microsoft.International.Converters.PinYinConverter;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.ComponentModel;
  6. using System.Configuration;
  7. using System.Data;
  8. using System.Diagnostics;
  9. using System.Drawing;
  10. using System.Drawing.Imaging;
  11. using System.Dynamic;
  12. using System.IO;
  13. using System.Linq;
  14. using System.Net.Http;
  15. using System.Net.Http.Json;
  16. using System.Text;
  17. using System.Text.Json;
  18. using System.Threading.Tasks;
  19. using System.Windows.Forms;
  20. using wispro.sp.entity;
  21. using wispro.sp.entity.workflowDefine;
  22. using wispro.sp.share;
  23. using wispro.sp.share.Utility;
  24. using wispro.sp.share.webViewObject;
  25. using wispro.sp.utility;
  26. namespace wispro.sp.winClient
  27. {
  28. public partial class Form1 : Form
  29. {
  30. public Form1()
  31. {
  32. InitializeComponent();
  33. }
  34. private void button1_Click(object sender, EventArgs e)
  35. {
  36. DateTime startTime = DateTime.Now;
  37. frmMerageExcel frm = new frmMerageExcel();
  38. if (frm.ShowDialog() == DialogResult.OK)
  39. {
  40. MessageBox.Show($"合并完成,合并后文件保存在:\r\n{frm.SaveFilePath}\r\n用时:{DateTime.Now - startTime }");
  41. }
  42. }
  43. private void button2_Click(object sender, EventArgs e)
  44. {
  45. OpenFileDialog ofd = new OpenFileDialog()
  46. {
  47. Multiselect = false,
  48. Filter = "*.xls|*.xlsx"
  49. };
  50. string strDinashuRegularFile = ConfigurationSettings.AppSettings["DinashuRegularFile"];
  51. if (ofd.ShowDialog() == DialogResult.OK)
  52. {
  53. new ExcelHelper().FillDianShu(ofd.FileName, strDinashuRegularFile);
  54. }
  55. MessageBox.Show("完成点数输入!");
  56. }
  57. private string[] InValidDoItem = new string[]
  58. {
  59. "案件异常-催缴年费",
  60. "案件异常-视为放弃取得专利权",
  61. "办理登记手续",
  62. "办理登记手续-确认客户是否委托",
  63. "代理所变更",
  64. "绘图",
  65. "技术确认",
  66. "缴年费",
  67. "请求保密审查",
  68. "请求费减",
  69. "请求实审",
  70. "取得申请号",
  71. "取得证书",
  72. "取得专利权评价报告",
  73. "确认官方审查状况",
  74. "询问放弃或复审",
  75. "知识点总结",
  76. "专利权人发明人申请人信息变更",
  77. "专利挖掘与布局",
  78. "我方文号前缀带J",
  79. "开卷",
  80. "请求提前公开",
  81. "取得国际检索报告",
  82. "委外检索",
  83. "中止程序",
  84. "终止",
  85. "案件异常-视为撤回",
  86. "进入国家阶段提醒",
  87. "请求恢复权利",
  88. "请求优先权",
  89. "取得【无效宣告请求审查决定】",
  90. "撤回",
  91. "请求退款",
  92. "确认是否委托申请与类型",
  93. "专利交易",
  94. "专利权评价报告",
  95. "专利权人发明人申请人信息变更+代理所变更"
  96. };
  97. private async Task InitRules(bool isSave)
  98. {
  99. List<BasePointRule> rules = new List<BasePointRule>();
  100. DataTable dt = wispro.sp.utility.NPOIExcel.ExcelToDataTable("ExcelFiles\\20211109-绩效点数规则-lcy-v1.xlsx", true);
  101. PerformanceItem item = new PerformanceItem() { CaseNo = "PAEPO2016277", DoItem= "提交检索主题声明", };
  102. foreach(DataRow row in dt.Rows)
  103. {
  104. BasePointRule rule = new BasePointRule()
  105. {
  106. Rule = row["规则"].ToString(),
  107. PointExpress = row["点数计算"].ToString(),
  108. Priority = int.Parse(row["优先级修订"].ToString()),
  109. Type = row["类型"].ToString()
  110. };
  111. try
  112. {
  113. var interpreter = new Interpreter();
  114. //item.ApplicationType
  115. Func<PerformanceItem, bool> func = interpreter.ParseAsDelegate<Func<PerformanceItem, bool>>(rule.Rule, "p");
  116. bool result = func.Invoke(item);
  117. if (result)
  118. {
  119. item.BasePoint = (double?)interpreter.Eval(rule.PointExpress);
  120. item.Type = rule.Type;
  121. System.Diagnostics.Debug.WriteLine("");
  122. }
  123. rules.Add(rule);
  124. }
  125. catch(Exception ex)
  126. {
  127. System.Diagnostics.Debug.WriteLine(rule.Rule + "\r\n" + ex.ToString());
  128. }
  129. }
  130. if (isSave)
  131. {
  132. foreach (BasePointRule rule in rules)
  133. {
  134. double d;
  135. if(double.TryParse(rule.PointExpress,out d))
  136. {
  137. rule.PointExpress = d.ToString("0.00");
  138. }
  139. await SaveBasePointRule(rule);
  140. }
  141. }
  142. }
  143. public async Task TestQueryFilter()
  144. {
  145. //QueryFilter filter = new QueryFilter();
  146. //filter.ConditionTree = new ExpressTree();
  147. //string ValueType = typeof(PerformanceItem).GetProperty("CaseNo").PropertyType.ToString();
  148. //FieldCondition condition1 = new FieldCondition() { FieldName = "CaseNo", Operator = OperatorEnum.Contains, Value = "PACN", ValueType = ValueType };
  149. //FieldCondition condition2 = new FieldCondition() { FieldName = "CaseNo", Operator = OperatorEnum.Contains, Value = "PAUS", ValueType = ValueType };
  150. //filter.ConditionTree.AddCondition(LogicEnum.And,condition1);
  151. //filter.ConditionTree.AddCondition(LogicEnum.Or, condition2);
  152. //System.Diagnostics.Debug.WriteLine(filter.ConditionTree.ToExpressString("s")); ;
  153. }
  154. enum enumTest
  155. {
  156. [Description("男")]
  157. man,
  158. [Description("女")]
  159. woman
  160. }
  161. private async void button3_Click(object sender, EventArgs e)
  162. {
  163. await UpdateStaff();
  164. await InitDepartment();
  165. //await GetTest();
  166. //await Compare2DB();
  167. //await RefreshPerformanceItem(1);
  168. //await RefreshPerformanceItem(2);
  169. //await RefreshPerformanceItem(3);
  170. //await UserField2String(lstAJQL);
  171. //await UserField2String(lstAJXS);
  172. //await UserField2String(lstDoItemXS);
  173. //await UserField2String(lstJXBL);
  174. //await UserField2String(lstRXSX);
  175. //await UserField2String(lstYZCQ);
  176. //await ImportUsers();
  177. //await InputPerformanceItem("c:\\temp\\21.01-21.11 工程师绩效报表-总表.xlsx", true, false, 0);
  178. }
  179. private PerformanceItem Row2Item_1(DataRow row, List<Staff> Staffs, CalMonth calMonth)
  180. {
  181. PerformanceItem item = new PerformanceItem();
  182. item.ApplicationType = row["申请类型"].ToString().Trim();
  183. if(item.ApplicationType != "发明")
  184. {
  185. return null;
  186. }
  187. item.CaseNo = row["我方文号"].ToString().Trim();
  188. if (calMonth != null)
  189. {
  190. item.CalMonth = calMonth;
  191. }
  192. else
  193. {
  194. if (row.Table.Columns.Contains("绩效核算月份"))
  195. {
  196. string strjxyf = row["绩效核算月份"].ToString().Trim();
  197. string[] temYFs = strjxyf.Split(new char[] { '.' });
  198. item.CalMonth = new CalMonth();
  199. item.CalMonth.Year = int.Parse(temYFs[0]);
  200. item.CalMonth.Month = int.Parse(temYFs[1]);
  201. item.CalMonth.Status = 4;
  202. }
  203. else
  204. {
  205. item.CalMonth = new CalMonth();
  206. item.Status = 0;
  207. item.CalMonth.Year = DateTime.Now.AddMonths(-1).Year;
  208. item.CalMonth.Month = DateTime.Now.AddMonths(-1).Month;
  209. }
  210. }
  211. item.ApplicationType = row["申请类型"].ToString().Trim();
  212. item.BusinessType = "普通新申请"; // row["业务类型"].ToString().Trim();
  213. item.AgentFeedbackMemo = "发明一次OA授权"; //row["备注(填表注意事项)"].ToString().Trim();
  214. item.DoItem = "发明一次OA授权"; //row["处理事项"].ToString().Trim();
  215. string strHandler = "";
  216. if (row.Table.Columns.Contains("处理人"))
  217. {
  218. strHandler = row["处理人"].ToString().Trim();
  219. }
  220. else
  221. {
  222. if (row.Table.Columns.Contains("案件处理人"))
  223. {
  224. strHandler = row["案件处理人"].ToString().Trim();
  225. }
  226. }
  227. string[] temHandlers = strHandler.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
  228. item.ItemStaffs = new List<ItemStaff>();
  229. foreach (string name in temHandlers)
  230. {
  231. ItemStaff itemStaff = new ItemStaff();
  232. int? iTem = GetStaff(name, Staffs);
  233. if ((iTem != null))
  234. {
  235. //itemStaff.Item = item;
  236. itemStaff.DoPersonId = iTem.Value;
  237. item.ItemStaffs.Add(itemStaff);
  238. }
  239. else
  240. {
  241. itemStaff.DoPerson = new Staff()
  242. {
  243. Name = name,
  244. Account = name,
  245. Password = "12345678",
  246. IsCalPerformsnce = false,
  247. Status = "正式员工",
  248. StaffGradeId = 4
  249. };
  250. item.ItemStaffs.Add(itemStaff);
  251. }
  252. }
  253. if (item.ItemStaffs.Count == 0)
  254. {
  255. System.Diagnostics.Debug.WriteLine($"没有处理人: {item.CaseNo}\t{item.DoItem}");
  256. }
  257. if (row.Table.Columns.Contains("核稿人"))
  258. {
  259. item.ReviewerId = GetStaff(row["核稿人"].ToString().Trim(), Staffs);
  260. }
  261. else
  262. {
  263. if (row.Table.Columns.Contains("案件核稿人"))
  264. {
  265. item.ReviewerId = GetStaff(row["案件核稿人"].ToString().Trim(), Staffs);
  266. }
  267. }
  268. item.Customer = new Customer() { Name = row["客户名称"].ToString().Trim() };
  269. item.ApplicationName = row["申请人"].ToString().Trim();
  270. item.CaseName = row["案件名称"].ToString().Trim();
  271. //案件备注
  272. item.CaseMemo = $"发文日期:{row["发文日期"].ToString().Trim()}\r\n客户文号:{row["客户文号"].ToString().Trim()}\r\n上传日期:{row["上传日期"].ToString().Trim()}\r\n文件描述:{row["文件描述"].ToString().Trim()}";
  273. return item;
  274. }
  275. private PerformanceItem Row2Item(DataRow row, List<Staff> Staffs,CalMonth calMonth)
  276. {
  277. PerformanceItem item = new PerformanceItem();
  278. item.CaseNo = row["我方文号"].ToString().Trim();
  279. if (calMonth != null)
  280. {
  281. item.CalMonth = calMonth;
  282. }
  283. else
  284. {
  285. if (row.Table.Columns.Contains("绩效核算月份"))
  286. {
  287. string strjxyf = row["绩效核算月份"].ToString().Trim();
  288. string[] temYFs = strjxyf.Split(new char[] { '.' });
  289. item.CalMonth = new CalMonth();
  290. item.CalMonth.Year = int.Parse(temYFs[0]);
  291. if (temYFs[1] == "1")
  292. {
  293. temYFs[1] = "10";
  294. }
  295. item.CalMonth.Month = int.Parse(temYFs[1]);
  296. item.CalMonth.Status = 4;
  297. }
  298. else
  299. {
  300. item.CalMonth = new CalMonth();
  301. item.Status = 0;
  302. item.CalMonth.Year = DateTime.Now.AddMonths(-1).Year;
  303. item.CalMonth.Month = DateTime.Now.AddMonths(-1).Month;
  304. }
  305. }
  306. item.ApplicationType = row["申请类型"].ToString().Trim();
  307. item.BusinessType = row["业务类型"].ToString().Trim();
  308. if (row.Table.Columns.Contains("备注(填表注意事项)"))
  309. item.AgentFeedbackMemo = row["备注(填表注意事项)"].ToString().Trim();
  310. item.DoItem = row["处理事项"].ToString().Trim();
  311. item.CaseStage = row["案件阶段"].ToString().Trim();
  312. item.CaseCoefficient = row["案件系数"].ToString().Trim();
  313. item.DoItemCoefficient = row["处理事项系数"].ToString().Trim();
  314. item.PreOastaffId = GetStaff(row["前一次OA处理人"].ToString().Trim(), Staffs);
  315. string strHandler = "";
  316. if (row.Table.Columns.Contains("处理人"))
  317. {
  318. strHandler = row["处理人"].ToString().Trim();
  319. }
  320. else
  321. {
  322. if (row.Table.Columns.Contains("案件处理人"))
  323. {
  324. strHandler = row["案件处理人"].ToString().Trim();
  325. }
  326. }
  327. string[] temHandlers = strHandler.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
  328. item.ItemStaffs = new List<ItemStaff>();
  329. foreach (string name in temHandlers)
  330. {
  331. ItemStaff itemStaff = new ItemStaff();
  332. string temName = name.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries)[0];
  333. int? iTem = GetStaff(temName, Staffs);
  334. if ((iTem != null))
  335. {
  336. //itemStaff.Item = item;
  337. itemStaff.DoPersonId = iTem.Value;
  338. item.ItemStaffs.Add(itemStaff);
  339. }
  340. else
  341. {
  342. itemStaff.DoPerson = new Staff()
  343. {
  344. Name = temName,
  345. Account = temName,
  346. Password = "12345678",
  347. IsCalPerformsnce = false,
  348. Status = "已离职",
  349. StaffGradeId = 4
  350. };
  351. item.ItemStaffs.Add(itemStaff);
  352. }
  353. }
  354. if (item.ItemStaffs.Count == 0)
  355. {
  356. System.Diagnostics.Debug.WriteLine($"没有处理人: {item.CaseNo}\t{item.DoItem}");
  357. }
  358. if (row.Table.Columns.Contains("核稿人"))
  359. {
  360. if (!string.IsNullOrEmpty(row["核稿人"].ToString().Trim()))
  361. {
  362. string temName = row["核稿人"].ToString().Trim().Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries)[0];
  363. item.ReviewerId = GetStaff(temName.Trim(), Staffs);
  364. }
  365. }
  366. else
  367. {
  368. if (row.Table.Columns.Contains("案件核稿人"))
  369. {
  370. if (!string.IsNullOrEmpty(row["案件核稿人"].ToString().Trim()))
  371. {
  372. string temName = row["案件核稿人"].ToString().Trim().Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries)[0];
  373. item.ReviewerId = GetStaff(temName.Trim(), Staffs);
  374. }
  375. }
  376. }
  377. if (!string.IsNullOrEmpty(row["点数"].ToString().Trim())) {
  378. item.BasePoint = double.Parse(row["点数"].ToString().Trim());
  379. }
  380. item.Customer = new Customer() { Name = row["客户名称"].ToString().Trim() };
  381. item.ApplicationName = row["申请人"].ToString().Trim();
  382. DateTime temDate = new DateTime();
  383. if (DateTime.TryParse(row["处理事项完成日"].ToString().Trim(), out temDate))
  384. {
  385. item.FinishedDate = temDate;
  386. }
  387. //定稿日
  388. if (DateTime.TryParse(row["定稿日"].ToString().Trim(), out temDate))
  389. {
  390. item.FinalizationDate = temDate;
  391. }
  392. //返稿日
  393. if (DateTime.TryParse(row["返稿日"].ToString().Trim(), out temDate))
  394. {
  395. item.ReturnDate = temDate;
  396. }
  397. //案件类型
  398. item.CaseType = row["案件类型"].ToString().Trim();
  399. //案件状态
  400. item.CaseState = row["案件状态"].ToString().Trim();
  401. //处理事项备注
  402. item.DoItemMemo = row["处理事项备注"].ToString().Trim();
  403. //处理状态
  404. item.DoItemState = row["处理状态"].ToString().Trim();
  405. //案件名称
  406. item.CaseName = row["案件名称"].ToString().Trim();
  407. //委案日期
  408. if (DateTime.TryParse(row["委案日期"].ToString().Trim(), out temDate))
  409. {
  410. item.EntrustingDate = temDate;
  411. }
  412. //客户期限
  413. if (DateTime.TryParse(row["客户期限"].ToString().Trim(), out temDate))
  414. {
  415. item.CustomerLimitDate = temDate;
  416. }
  417. //内部期限
  418. if (DateTime.TryParse(row["内部期限"].ToString().Trim(), out temDate))
  419. {
  420. item.InternalDate = temDate;
  421. }
  422. //初稿日
  423. if (DateTime.TryParse(row["初稿日"].ToString().Trim(), out temDate))
  424. {
  425. item.FirstDraftDate = temDate;
  426. }
  427. //备注(发文严重超期是否属客观原因,若为否,请填写原因)
  428. if (row.Table.Columns.Contains("备注(发文严重超期是否属客观原因,若为否,请填写原因)"))
  429. {
  430. item.OverDueMemo = row["备注(发文严重超期是否属客观原因,若为否,请填写原因)"].ToString().Trim();
  431. }
  432. //案件备注
  433. item.CaseMemo = row["案件备注"].ToString().Trim();
  434. return item;
  435. }
  436. private async Task InputPerformanceItem(string strExcelFile,bool isColumnName,bool ignorHideRows=false,int ColumnNameRow=0,CalMonth calMonth=null,bool isFirstOAFile=false)
  437. {
  438. DataTable dt = NPOIExcel.ExcelToDataTable(strExcelFile, isColumnName,ignorHideRows,ColumnNameRow);
  439. #region 删除重复行
  440. DataTable temdt = new DataTable();
  441. foreach (DataColumn col in dt.Columns)
  442. {
  443. DataColumn temCol = new DataColumn();
  444. temCol.ColumnName = col.ColumnName;
  445. temCol.DataType = col.DataType;
  446. temCol.Caption = col.Caption;
  447. temdt.Columns.Add(temCol);
  448. }
  449. new ExcelHelper().MerageDataTable(temdt, dt);
  450. #endregion
  451. List<Staff> Staffs =await GetStaffsAsync();
  452. foreach(DataRow row in temdt.Rows)
  453. {
  454. PerformanceItem item = null;
  455. if (isFirstOAFile)
  456. {
  457. item = Row2Item_1(row, Staffs, calMonth);
  458. }
  459. else
  460. {
  461. item = Row2Item(row, Staffs, calMonth);
  462. }
  463. if (item != null )
  464. {
  465. System.Diagnostics.Debug.WriteLine($"{DateTime.Now}\t{item.CaseNo}\t{item.CaseName}");
  466. if (!InValidDoItem.Contains(item.DoItem))
  467. {
  468. await SavePerformanceItem(item);
  469. }
  470. }
  471. }
  472. }
  473. private async Task Compare2DB()
  474. {
  475. if (Token == null)
  476. {
  477. await Login();
  478. }
  479. HttpClient http = CreateHttp();
  480. http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", Token.Token);
  481. var data = await http.GetFromJsonAsync<PerformanceItem>($"{strAPIBaseUri}/api/PerformanceItem/CompareExcel2DB");
  482. //await GetDoItemInfo("PACN2027395", "处理审查意见", "一通");
  483. }
  484. private async Task RefreshPerformanceItem(int Type)
  485. {
  486. if (Token == null)
  487. {
  488. await Login();
  489. }
  490. await RefreshItemAsync(Type);
  491. //await GetDoItemInfo("PACN2027395", "处理审查意见", "一通");
  492. }
  493. List<string> lstJXBL = new List<string>() {
  494. "柳芳","杨超","何倚雯","李姣","张庆玲","李建民","李申","李莉","刘桂兰"
  495. ,"唐双","瞿璨","张鹏","钟锦光","翁旋艺","钟子敏"
  496. };
  497. List<string> lstAJXS = new List<string>() {
  498. "柳芳","杨超","何倚雯","李姣","张庆玲","李建民","李申","李莉","刘桂兰"
  499. ,"唐双","瞿璨","张鹏","钟锦光","翁旋艺","钟子敏","邢丽霞",
  500. "李庆波","黄瑜","程利","黎坚怡","舒丽亚","管自英","张晓薇","刘希"
  501. };
  502. List<string> lstDoItemXS = new List<string>() {
  503. "吴继红","赖玲玲","郭竟微","陈鹤","王本鼎","高凌云","周煜祥","何丹风",
  504. "田婵玉","孙心洁","陈舒敏","邢丽霞"
  505. };
  506. List<string> lstAJQL = new List<string>() {
  507. "柳芳","杨超","何倚雯","李姣","张庆玲","李建民","李申","李莉","刘桂兰"
  508. ,"唐双","瞿璨","张鹏","钟锦光","翁旋艺","吴继红","赖玲玲","郭竟微","陈鹤",
  509. "王本鼎","高凌云","周煜祥","何丹风","田婵玉","孙心洁","陈舒敏","钟子敏",
  510. "李庆波","黄瑜","程利","黎坚怡","舒丽亚","管自英","张晓薇","刘希"
  511. };
  512. List<string> lstYZCQ = new List<string>() {
  513. "吴继红","赖玲玲","郭竟微","陈鹤","王本鼎","高凌云","周煜祥","何丹风",
  514. "田婵玉","孙心洁","陈舒敏"
  515. };
  516. List<string> lstRXSX = new List<string>() {
  517. "夏敏","柳芳","杨超","何倚雯","李姣","张庆玲","李建民","李申","李莉","刘桂兰"
  518. ,"唐双","瞿璨","张鹏","钟锦光","翁旋艺","钟子敏","李庆波","黄瑜","程利",
  519. "黎坚怡","舒丽亚","管自英","张晓薇","刘希"
  520. };
  521. private async Task UserField2String(List<string> lstList)
  522. {
  523. if (Token == null)
  524. {
  525. await Login();
  526. }
  527. //List<Staff> Reviewers = await getReviewers(14232, 1);
  528. //Reviewers = await getReviewers(14232, 5);
  529. List<Staff> Staffs = await GetStaffsAsync();
  530. List<UserField> lstUsers = new List<UserField>();
  531. foreach(var name in lstList)
  532. {
  533. lstUsers.Add(new UserField()
  534. {
  535. UserConditionType = UserConditionType.Staff,
  536. UserType = UserType.Staff,
  537. UserValue = GetStaff(name, Staffs).ToString()
  538. });
  539. }
  540. JsonSerializerOptions options = new() { IgnoreNullValues = true };
  541. var strJson = System.Text.Json.JsonSerializer.Serialize(lstUsers, lstUsers.GetType(), options);
  542. System.Diagnostics.Debug.WriteLine(strJson);
  543. }
  544. private int? GetStaff(string v, List<Staff> staffs)
  545. {
  546. if (!string.IsNullOrEmpty(v))
  547. {
  548. string[] temNames = v.Trim().Split(new char[] { '-' },StringSplitOptions.RemoveEmptyEntries);
  549. foreach (Staff sf in staffs)
  550. {
  551. if(sf.Name == temNames[0])
  552. {
  553. return sf.Id;
  554. }
  555. }
  556. }
  557. return null;
  558. }
  559. private async Task InitDepartment()
  560. {
  561. if (Token == null)
  562. {
  563. await Login();
  564. }
  565. string strUrl = $"{strAPIBaseUri}/api/Organization/InitUserDepartment";
  566. HttpClient http = CreateHttp();
  567. http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", Token.Token);
  568. var response = await http.GetAsync(strUrl);
  569. }
  570. private async Task UpdateStaff()
  571. {
  572. OpenFileDialog ofd = new OpenFileDialog();
  573. if (ofd.ShowDialog() == DialogResult.OK)
  574. {
  575. string fileName = ofd.FileName;
  576. DataTable dt = NPOIExcel.ExcelToDataTable(fileName, true, false,0);
  577. if (Token == null)
  578. {
  579. await Login();
  580. }
  581. foreach(DataRow row in dt.Rows)
  582. {
  583. Staff staff = new Staff();
  584. staff.Account = row["Account"].ToString();
  585. staff.Name = row["Name"].ToString().Trim();
  586. staff.Sex = row["Sex"].ToString().Trim();
  587. staff.Status = row["Status"].ToString().Trim();
  588. staff.Tel = row["Tel"].ToString();
  589. if (staff.Tel == "NULL")
  590. {
  591. staff.Tel = null;
  592. }
  593. staff.Mobile = row["Mobile"].ToString().Trim();
  594. if (staff.Mobile == "NULL")
  595. {
  596. staff.Mobile = null;
  597. }
  598. string temStatus = row["xm备注1"].ToString();
  599. if(!string.IsNullOrEmpty(temStatus) && temStatus != staff.Status)
  600. {
  601. staff.Status = temStatus;
  602. }
  603. if (staff.Status == "NULL")
  604. {
  605. staff.Status = null;
  606. }
  607. staff.IsOnJob = (row["IsOnJob"].ToString() == "1");
  608. staff.IsCalPerformsnce = (row["IsCalPerformsnce"].ToString() == "1");
  609. staff.IsCalPerformsnce = (row["是否计算绩效"].ToString() == "是");
  610. staff.Department = row["Department"].ToString().Trim();
  611. if (staff.Department == "NULL")
  612. {
  613. staff.Department = null;
  614. }
  615. staff.WorkPlace = row["WorkPlace"].ToString().Trim();
  616. if (staff.WorkPlace == "NULL")
  617. {
  618. staff.WorkPlace = null;
  619. }
  620. staff.Mail = row["Mail"].ToString().Trim();
  621. if (staff.Mail == "NULL")
  622. {
  623. staff.Mail = null;
  624. }
  625. staff.Memo = row["Memo"].ToString().Trim();
  626. if (staff.Memo == "NULL")
  627. {
  628. staff.Memo = null;
  629. }
  630. int temSGID;
  631. if (int.TryParse(row["StaffGradeId"].ToString().Trim(), out temSGID)){
  632. staff.StaffGradeId = temSGID;
  633. }
  634. DateTime temDate;
  635. if(DateTime.TryParse(row["EntyDate"].ToString(),out temDate))
  636. {
  637. staff.EntyDate = temDate;
  638. }
  639. // xm备注2 StaffGradeId EntyDate
  640. var temStaff = await GetStaff(staff.Name);
  641. bool isSaved = false;
  642. if (temStaff == null)
  643. {
  644. isSaved = true;
  645. //staff.Password = MD5Utility.GetMD5("12345678");
  646. }
  647. else
  648. {
  649. staff.Id = temStaff.Id;
  650. //staff.Password = temStaff.Password;
  651. isSaved =
  652. (staff.Name != temStaff.Name) ||
  653. (staff.Account != temStaff.Account) ||
  654. (staff.Department != temStaff.Department) ||
  655. (staff.EntyDate != temStaff.EntyDate) ||
  656. (staff.IsOnJob != temStaff.IsOnJob) ||
  657. (staff.Mail != temStaff.Mail) ||
  658. (staff.Mobile != temStaff.Mobile) ||
  659. (staff.Sex != temStaff.Sex) ||
  660. (staff.Status != temStaff.Status) ||
  661. (staff.Tel != temStaff.Tel) ||
  662. (staff.WorkPlace != temStaff.WorkPlace) ||
  663. (staff.StaffGradeId != temStaff.StaffGradeId) ||
  664. (staff.IsCalPerformsnce != temStaff.IsCalPerformsnce );
  665. }
  666. if (isSaved)
  667. {
  668. //staff.IsCalPerformsnce = (row["是否核算绩效"].ToString() == "是");
  669. //staff.Memo = row["备注"].ToString().Trim();
  670. //staff.StaffGradeId = row["姓名"].ToString();
  671. await SaveStaff(staff);
  672. }
  673. System.Diagnostics.Debug.WriteLine($"{staff.Account}\t{staff.Name}");
  674. }
  675. }
  676. }
  677. private async Task ImportUsers()
  678. {
  679. OpenFileDialog ofd = new OpenFileDialog();
  680. if (ofd.ShowDialog() == DialogResult.OK)
  681. {
  682. string fileName = ofd.FileName;
  683. DataTable dt = NPOIExcel.ExcelToDataTable(fileName, true, false, 1);
  684. if(Token == null)
  685. {
  686. await Login();
  687. }
  688. List<StaffGrade> staffGrades = await GetStaffGrades();
  689. foreach (DataRow row in dt.Rows)
  690. {
  691. Staff staff = new Staff();
  692. staff.Account = row["用户名"].ToString().Trim();
  693. staff.Name = row["姓名"].ToString().Trim();
  694. staff.Tel = row["电话号码"].ToString().Trim();
  695. staff.Mobile = row["手机号码"].ToString().Trim();
  696. staff.Sex = row["性别"].ToString().Trim();
  697. staff.Mail = row["邮箱"].ToString().Trim();
  698. string strGrade = row["工程师等级"].ToString().Trim(); // + "级";
  699. foreach (StaffGrade sg in staffGrades)
  700. {
  701. if (strGrade.Trim() == sg.Grade.Trim())
  702. {
  703. staff.StaffGradeId = sg.Id;
  704. break;
  705. }
  706. }
  707. staff.IsOnJob = (row["是否在职"].ToString().Trim() == "是");
  708. staff.Status = row["岗位状态"].ToString().Trim();
  709. staff.Department = row["部门"].ToString();
  710. staff.WorkPlace = row["工作地"].ToString();
  711. DateTime temDate;
  712. if (DateTime.TryParse(row["入职时间"].ToString(), out temDate))
  713. {
  714. staff.EntyDate = temDate;
  715. }
  716. var temStaff = await GetStaff(staff.Name);
  717. bool isSaved = false;
  718. if (temStaff == null)
  719. {
  720. isSaved = true;
  721. staff.Password = MD5Utility.GetMD5("12345678");
  722. }
  723. else
  724. {
  725. staff.Id = temStaff.Id;
  726. staff.Password = temStaff.Password;
  727. isSaved =
  728. (staff.Name != temStaff.Name) ||
  729. (staff.Account != temStaff.Account) ||
  730. (staff.Department != temStaff.Department) ||
  731. (staff.EntyDate != temStaff.EntyDate) ||
  732. (staff.IsOnJob != temStaff.IsOnJob) ||
  733. (staff.Mail != temStaff.Mail) ||
  734. (staff.Mobile != temStaff.Mobile) ||
  735. (staff.Sex != temStaff.Sex) ||
  736. (staff.Status != temStaff.Status) ||
  737. (staff.Tel != temStaff.Tel) ||
  738. (staff.WorkPlace != temStaff.WorkPlace) ||
  739. (staff.StaffGradeId != temStaff.StaffGradeId);
  740. }
  741. if (isSaved)
  742. {
  743. //staff.IsCalPerformsnce = (row["是否核算绩效"].ToString() == "是");
  744. //staff.Memo = row["备注"].ToString().Trim();
  745. //staff.StaffGradeId = row["姓名"].ToString();
  746. await SaveStaff(staff);
  747. }
  748. }
  749. }
  750. }
  751. private string getPinYin(string str)
  752. {
  753. string retStr = "";
  754. for(int i = 0; i < str.Length; i++)
  755. {
  756. ChineseChar cc = new ChineseChar(str[i]);
  757. retStr = retStr + cc.Pinyins[0].ToLower().Replace("1","")
  758. .Replace("2", "").Replace("3", "").Replace("4", "");
  759. }
  760. return retStr;
  761. }
  762. string strAPIBaseUri = "https://47.106.221.167"; // "http://localhost:39476";//
  763. userToken Token;
  764. public async Task GetTest()
  765. {
  766. await Login();
  767. string strUrl = $"{strAPIBaseUri}/api/PerformanceItem/CurrentData2Excel";
  768. HttpClient http = CreateHttp();
  769. http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", Token.Token);
  770. var response = await http.GetFromJsonAsync<FileProcessTask>(strUrl);
  771. while (!response.Finished)
  772. {
  773. response = await http.GetFromJsonAsync<FileProcessTask>($"{strAPIBaseUri}/api/FileProcesTask/Get?Id={response.Id}");
  774. System.Diagnostics.Debug.WriteLine($"{response.Processed}/{response.Size}");
  775. System.Threading.Thread.Sleep(2000);
  776. }
  777. byte[] data = await http.GetByteArrayAsync($"{strAPIBaseUri}/api/FileProcesTask/Download?Id={response.Id}");
  778. using (var file = System.IO.File.Create(response.FilePath))
  779. {
  780. file.Write(data, 0, data.Length);
  781. }
  782. #region aaa
  783. //DataTable dt = utility.NPOIExcel.ExcelToDataTable("C:\\temp\\userList.xlsx", true, false, 0);
  784. //foreach (DataRow row in dt.Rows)
  785. //{
  786. // string strAccount = row["Account"].ToString();
  787. // System.Diagnostics.Debug.WriteLine(strAccount);
  788. // string strStatus = row["Status"].ToString();
  789. // if (string.IsNullOrEmpty(strStatus))
  790. // {
  791. // strStatus = "未知";
  792. // }
  793. // string strMail = row["Mail"].ToString();
  794. // if (strAccount != "陈金勇" && strAccount!="南通流程邮箱")
  795. // {
  796. // string strUrl = $"{strAPIBaseUri}/api/Account/Modify?accountName={strAccount}&status={strStatus}&mail={strMail}";
  797. // var response = await CreateHttp().GetFromJsonAsync<ApiSaveResponse>(strUrl);
  798. // }
  799. // else
  800. // {
  801. // Console.WriteLine("");
  802. // }
  803. //}
  804. #endregion
  805. //var strUrl = "https://47.106.221.167/api/PerformanceItem/CalMyStatistics?userid=98&year=2021&month=12";
  806. //var response =await CreateHttp().GetFromJsonAsync<List<StaffStatistics>>(strUrl);
  807. }
  808. public async Task Login()
  809. {
  810. share.webViewObject.loginDto dto = new share.webViewObject.loginDto();
  811. dto.Name = "caiyangl";
  812. dto.Password = "Lqftiu807005";
  813. var response =await CreateHttp().PostAsJsonAsync<loginDto>($"{strAPIBaseUri}/api/account/Login", dto);
  814. if (response.IsSuccessStatusCode)
  815. {
  816. Token = await response.Content.ReadFromJsonAsync<userToken>();
  817. }
  818. }
  819. public async Task<entity.workflowDefine.Workflow> GetWorkflow(int Id, HttpClient _httpClient)
  820. {
  821. var ret = await _httpClient.GetFromJsonAsync<entity.workflowDefine.Workflow>($"{strAPIBaseUri}/api/WorkflowEngine/GetWorkflow?workflowId={Id}");
  822. return ret;
  823. }
  824. public async Task<List<entity.workflowDefine.Step>> GetSteps(int Id, HttpClient _httpClient)
  825. {
  826. var ret = await _httpClient.GetFromJsonAsync<List<entity.workflowDefine.Step>>($"{strAPIBaseUri}/api/WorkflowEngine/GetSteps?workflowId={Id}");
  827. return ret;
  828. }
  829. public async Task<List<entity.workflowDefine.Action>> GetActions(int workflowId, HttpClient _httpClient)
  830. {
  831. var ret = await _httpClient.GetFromJsonAsync<List<entity.workflowDefine.Action>>($"{strAPIBaseUri}/api/WorkflowEngine/GetActions?workflowId={workflowId}");
  832. return ret;
  833. }
  834. public async Task<List<entity.workflowDefine.TrasferCondition>> GetTransfers(int workflowId, HttpClient _httpClient)
  835. {
  836. var ret = await _httpClient.GetFromJsonAsync<List<entity.workflowDefine.TrasferCondition>>($"{strAPIBaseUri}/api/WorkflowEngine/GetTrasfers?workflowId={workflowId}");
  837. return ret;
  838. }
  839. private async Task SaveStaff(Staff obj)
  840. {
  841. HttpClient http = CreateHttp();
  842. http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", Token.Token);
  843. var data = await http.PostAsJsonAsync<wispro.sp.entity.Staff>($"{strAPIBaseUri}/api/Staff/Save", obj);
  844. if (data.IsSuccessStatusCode)
  845. {
  846. ApiSaveResponse result = await data.Content.ReadFromJsonAsync<ApiSaveResponse>();
  847. //await Task.Delay(1000);
  848. if (result.Success)
  849. {
  850. }
  851. else
  852. {
  853. }
  854. }
  855. else
  856. {
  857. }
  858. }
  859. private async Task<Staff> GetStaff(string strName)
  860. {
  861. HttpClient http = CreateHttp();
  862. http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", Token.Token);
  863. try
  864. {
  865. var data = await http.GetFromJsonAsync<wispro.sp.entity.Staff>($"{strAPIBaseUri}/api/Staff/GetByName?Name={strName}");
  866. return data;
  867. }
  868. catch
  869. {
  870. return null;
  871. }
  872. }
  873. private async Task SaveBasePointRule(BasePointRule obj)
  874. {
  875. HttpClient http = CreateHttp();
  876. http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", Token.Token);
  877. var data = await http.PostAsJsonAsync<BasePointRule>($"{strAPIBaseUri}/api/BasePointRule/New", obj);
  878. if (data.IsSuccessStatusCode)
  879. {
  880. ApiSaveResponse result = await data.Content.ReadFromJsonAsync<ApiSaveResponse>();
  881. //await Task.Delay(1000);
  882. if (result.Success)
  883. {
  884. }
  885. else
  886. {
  887. System.Diagnostics.Debug.WriteLine($"保存错误: {obj.Rule}\t{obj.PointExpress}\r\n{result.ErrorMessage}");
  888. }
  889. }
  890. else
  891. {
  892. System.Diagnostics.Debug.WriteLine($"调用API错误: {obj.Type}\t{obj.Rule}");
  893. }
  894. }
  895. private async Task SavePerformanceItem(PerformanceItem obj)
  896. {
  897. HttpClient http = CreateHttp();
  898. http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", Token.Token);
  899. if (obj.CalMonth.Month == 10)
  900. {
  901. System.Diagnostics.Debug.WriteLine($"{obj.CalMonth.Year}-{obj.CalMonth.Month}\t{obj.CaseNo}");
  902. }
  903. var isExist = await http.PostAsJsonAsync<PerformanceItem>($"{strAPIBaseUri}/api/PerformanceItem/IsExist", obj);
  904. if (isExist.IsSuccessStatusCode && await isExist.Content.ReadFromJsonAsync<bool>()==false)
  905. {
  906. var data = await http.PostAsJsonAsync<PerformanceItem>($"{strAPIBaseUri}/api/PerformanceItem/New", obj);
  907. if (data.IsSuccessStatusCode)
  908. {
  909. ApiSaveResponse result = await data.Content.ReadFromJsonAsync<ApiSaveResponse>();
  910. //await Task.Delay(1000);
  911. if (result.Success)
  912. {
  913. }
  914. else
  915. {
  916. System.Diagnostics.Debug.WriteLine($"保存错误: {obj.CaseNo}\t{obj.DoItem}\r\n{result.ErrorMessage}");
  917. }
  918. }
  919. else
  920. {
  921. System.Diagnostics.Debug.WriteLine($"调用API错误: {obj.CaseNo}\t{obj.DoItem}");
  922. }
  923. }
  924. }
  925. private HttpClient CreateHttp()
  926. {
  927. HttpClientHandler clientHandler = new HttpClientHandler();
  928. clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; };
  929. return new HttpClient(clientHandler);
  930. }
  931. private async Task<List<StaffGrade>> GetStaffGrades()
  932. {
  933. HttpClient http = CreateHttp();
  934. http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", Token.Token);
  935. var _StaffGrade = await http.GetFromJsonAsync<List<StaffGrade>>($"{strAPIBaseUri}/api/StaffGrade/GetAll");
  936. return _StaffGrade;
  937. }
  938. private async Task<List<Staff>> GetStaffsAsync()
  939. {
  940. HttpClient http = CreateHttp();
  941. http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", Token.Token);
  942. ListApiResponse<Staff> data = await http.GetFromJsonAsync<ListApiResponse<Staff>>($"{strAPIBaseUri}/api/Staff/Query?pageIndex=1&pageSize=1000");
  943. return data.Results;
  944. }
  945. private async Task<PerformanceItem> RefreshItemAsync(int type)
  946. {
  947. HttpClient http = CreateHttp();
  948. http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", Token.Token);
  949. var data = await http.GetFromJsonAsync<PerformanceItem>($"{strAPIBaseUri}/api/PerformanceItem/RefreshFromIPEasy_Batch?type={type}");
  950. return data;
  951. }
  952. private async Task<List<Staff>> getReviewers(int itemId,int appealTypeId)
  953. {
  954. HttpClient http = CreateHttp();
  955. http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", Token.Token);
  956. List<Staff> data = await http.GetFromJsonAsync<List<Staff>>($"{strAPIBaseUri}/api/Staff/GetReviewers?itemId={itemId}&appealTypeId={appealTypeId}");
  957. return data;
  958. }
  959. private async Task<PerformanceItem> GetDoItemInfo(string CaseNo, string DoItem, string caseStage)
  960. {
  961. HttpClient http = CreateHttp();
  962. http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", Token.Token);
  963. PerformanceItem data = await http.GetFromJsonAsync<PerformanceItem>($"{strAPIBaseUri}/api/IPEasy/GetDoItemInfo?CaseNo={CaseNo}&DoItem={DoItem}&caseStage={caseStage}");
  964. return data;
  965. }
  966. private void button4_Click(object sender, EventArgs e)
  967. {
  968. Stopwatch watch = new Stopwatch();
  969. watch.Start();
  970. //每月绩效统计--发客户超过一个月未完成案件
  971. //DownloadReport("每月绩效统计--发客户超过一个月未完成案件", calMonth, false);
  972. //每月绩效统计--上个月递交完成案件
  973. //DownloadReport("每月绩效统计--上个月递交完成案件", calMonth, true);
  974. //每月绩效统计--中国一次OA授权表
  975. //DownloadReport("每月绩效统计--中国一次OA授权表", calMonth, true, true);
  976. //"每月绩效统计--专案进度跟踪~S卷", "每月绩效统计--专案开卷报表~S卷"
  977. wispro.sp.utility.IPEasyUtility.DownloadReport("每月绩效统计--发客户超过一个月未完成案件", false);
  978. wispro.sp.utility.IPEasyUtility.DownloadReport("每月绩效统计--上个月递交完成案件", true);
  979. wispro.sp.utility.IPEasyUtility.DownloadReport("每月绩效统计--中国一次OA授权表", true);
  980. wispro.sp.utility.IPEasyUtility.DownloadReport("每月绩效统计--专案进度跟踪~S卷", false);
  981. wispro.sp.utility.IPEasyUtility.DownloadReport("每月绩效统计--专案开卷报表~S卷", false);
  982. #region aaa
  983. //dynamic retObj = wispro.sp.utility.IPEasyUtility.GetPerformanceRecord("S2112392-洗碗机调查分析","提出报告");
  984. //PerformanceItem Item = new PerformanceItem();
  985. //Item.CaseName = retObj.CaseName;
  986. //Item.CaseNo = retObj.CaseNo;
  987. //Item.DoItem = retObj.DoItem;
  988. //Item.CustomerLimitDate = string.IsNullOrEmpty(retObj.CustomerLimitDate) ? null : DateTime.Parse(retObj.CustomerLimitDate);
  989. //Item.Customer = new Customer();
  990. //Item.Customer.Name = retObj.CustomerName;
  991. //Item.DoItemCoefficient = retObj.DoItemCoefficient;
  992. //Item.DoItemMemo = retObj.DoItemMemo;
  993. //Item.DoItemState = retObj.DoItemState;
  994. //Item.EntrustingDate = string.IsNullOrEmpty(retObj.EntrustingDate) ? null : DateTime.Parse(retObj.EntrustingDate);
  995. //Item.FinalizationDate = string.IsNullOrEmpty(retObj.FinalizationDate) ? null : DateTime.Parse(retObj.FinalizationDate);
  996. //Item.FinishedDate = string.IsNullOrEmpty(retObj.FinishedDate) ? null : DateTime.Parse(retObj.FinishedDate);
  997. ////Item.FirstDraftDate = string.IsNullOrEmpty(retObj.FirstDraftDate) ? null : DateTime.Parse(retObj.FirstDraftDate);
  998. //Item.InternalDate = string.IsNullOrEmpty(retObj.InternalDate) ? null : DateTime.Parse(retObj.InternalDate);
  999. //if (!string.IsNullOrEmpty(retObj.DoPersons))
  1000. //{
  1001. // Item.ItemStaffs = new List<ItemStaff>();
  1002. // string[] names = retObj.DoPersons.ToString().Split(new char[] { ','},StringSplitOptions.RemoveEmptyEntries);
  1003. // foreach(var name in names)
  1004. // {
  1005. // ItemStaff iStaff = new ItemStaff();
  1006. // iStaff.DoPerson = new Staff() { Name = name };
  1007. // Item.ItemStaffs.Add(iStaff);
  1008. // }
  1009. //}
  1010. //Item.ReturnDate = string.IsNullOrEmpty(retObj.ReturnDate) ? null : DateTime.Parse(retObj.ReturnDate);
  1011. //if (!string.IsNullOrEmpty(retObj.Reviewer))
  1012. //{
  1013. // Item.Reviewer = new Staff() { Name = retObj.Reviewer };
  1014. //}
  1015. //Item.ApplicationType = retObj.ApplicationType;
  1016. //Item.BusinessType = retObj.BusinessType;
  1017. //Item.CaseCoefficient = retObj.CaseCoefficient;
  1018. //Item.CaseMemo = retObj.CaseMemo;
  1019. //Item.CaseStage = retObj.CaseStage;
  1020. //Item.CaseState = retObj.CaseState;
  1021. //Item.CaseType = retObj.CaseType;
  1022. #endregion
  1023. watch.Stop();
  1024. System.Diagnostics.Debug.WriteLine("用时{0}毫秒", watch.ElapsedMilliseconds);//获取当前实例测量得出的总运行时间(以毫秒为单位)
  1025. //wispro.sp.utility.IPEasyUtility.DownloadReport("每月绩效统计--上个月递交完成案件", true);
  1026. //wispro.sp.utility.IPEasyUtility.DownloadReport("每月绩效统计--发客户超过一个月未完成案件", false);
  1027. //wispro.sp.utility.IPEasyUtility.DownloadReport("每月绩效统计--中国一次OA授权表", true);
  1028. ////每月绩效统计--发客户超过一个月未完成案件
  1029. //NewMethod("506aa7ad-c3f4-4ec6-9ec8-ff6b92dcd7c1", "每月绩效统计--发客户超过一个月未完成案件.xlsx", calMonth);
  1030. ////每月绩效统计--上个月递交完成案件
  1031. //NewMethod("d7308cd2-71e4-4444-9f47-f4d731ddb26a", "每月绩效统计--上个月递交完成案件.xlsx", calMonth);
  1032. ////每月绩效统计--中国一次OA授权表
  1033. //NewMethod("72454834-afdd-4b98-b42a-0bc912d07610", "每月绩效统计--中国一次OA授权表.xlsx", calMonth, true);
  1034. }
  1035. }
  1036. }