You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

708 lines
46 KiB

3 years ago
  1. using EasyBL.WebApi.Message;
  2. using Entity.Sugar;
  3. using Entity.ViewModels;
  4. using Newtonsoft.Json;
  5. using Newtonsoft.Json.Linq;
  6. using SqlSugar;
  7. using SqlSugar.Base;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Data;
  11. using System.Linq;
  12. using System.Text.RegularExpressions;
  13. namespace EasyBL.WEBAPP.CRM
  14. {
  15. public class Customers_QryService : ServiceBase
  16. {
  17. #region 客戶管理(分頁查詢)
  18. /// <summary>
  19. /// 客戶管理(分頁查詢)
  20. /// </summary>
  21. /// <param name="i_crm"></param>
  22. /// <returns></returns>
  23. public ResponseMessage QueryPage(RequestMessage i_crm)
  24. {
  25. ResponseMessage rm = null;
  26. string sMsg = null;
  27. var db = SugarBase.GetIntance();
  28. try
  29. {
  30. do
  31. {
  32. var pml = new PageModel
  33. {
  34. PageIndex = _fetchInt(i_crm, @"pageIndex"),
  35. PageSize = _fetchInt(i_crm, @"pageSize")
  36. };
  37. var iPageCount = 0;
  38. var sSortField = _fetchString(i_crm, @"sortField");
  39. var sSortOrder = _fetchString(i_crm, @"sortOrder");
  40. var sCustomerNO = _fetchString(i_crm, @"CustomerNO");
  41. var sUniCode = _fetchString(i_crm, @"UniCode");
  42. var sCustomerName = _fetchString(i_crm, @"CustomerName");
  43. var sCreateUser = _fetchString(i_crm, @"CreateUser");
  44. var sTransactionType = _fetchString(i_crm, @"TransactionType");
  45. var sEffective = _fetchString(i_crm, @"Effective");
  46. var sState = _fetchString(i_crm, @"State");
  47. var sIsAudit = _fetchString(i_crm, @"IsAudit");
  48. var sIndustry = _fetchString(i_crm, @"Industry");
  49. var sDateType = _fetchString(i_crm, @"DateType");
  50. var sDateStart = _fetchString(i_crm, @"DateStart");
  51. var sDateEnd = _fetchString(i_crm, @"DateEnd");
  52. //var sCreateDateStart = _fetchString(i_crm, @"CreateDateStart");
  53. //var sCreateDateEnd = _fetchString(i_crm, @"CreateDateEnd");
  54. //var sModifyDateStart = _fetchString(i_crm, @"ModifyDateStart");
  55. //var sModifyDateEnd = _fetchString(i_crm, @"ModifyDateEnd");
  56. var bExcel = _fetchBool(i_crm, @"Excel");
  57. var sExcelType = _fetchString(i_crm, @"ExcelType");
  58. string[] saEffective = null;
  59. string[] saIsAudit = null;
  60. string[] saTransactionType = null;
  61. if (!string.IsNullOrEmpty(sEffective))
  62. {
  63. saEffective = sEffective.Split(',');
  64. }
  65. if (!string.IsNullOrEmpty(sIsAudit))
  66. {
  67. saIsAudit = sIsAudit.Split(',');
  68. }
  69. if (!string.IsNullOrEmpty(sTransactionType))
  70. {
  71. saTransactionType = sTransactionType.Split(',');
  72. }
  73. //var rCreateDateStart = new DateTime();
  74. //var rCreateDateEnd = new DateTime();
  75. //var rModifyDateStart = new DateTime();
  76. //var rModifyDateEnd = new DateTime();
  77. //if (!string.IsNullOrEmpty(sCreateDateStart))
  78. //{
  79. // rCreateDateStart = SqlFunc.ToDate(sCreateDateStart);
  80. //}
  81. //if (!string.IsNullOrEmpty(sCreateDateEnd))
  82. //{
  83. // rCreateDateEnd = SqlFunc.ToDate(sCreateDateEnd).AddDays(1);
  84. //}
  85. //if (!string.IsNullOrEmpty(sModifyDateStart))
  86. //{
  87. // rModifyDateStart = SqlFunc.ToDate(sModifyDateStart);
  88. //}
  89. //if (!string.IsNullOrEmpty(sModifyDateEnd))
  90. //{
  91. // rModifyDateEnd = SqlFunc.ToDate(sModifyDateEnd).AddDays(1);
  92. //}
  93. var rDateStart = new DateTime();
  94. var rDateEnd = new DateTime();
  95. if (!string.IsNullOrEmpty(sDateStart))
  96. {
  97. rDateStart = SqlFunc.ToDate(sDateStart);
  98. }
  99. if (!string.IsNullOrEmpty(sDateEnd))
  100. {
  101. rDateEnd = SqlFunc.ToDate(sDateEnd).AddDays(1);
  102. }
  103. pml.DataList = db.Queryable<OTB_CRM_Customers, OTB_SYS_Members, OTB_CRM_CustomersMST>
  104. ((t1, t2, t3) =>
  105. new object[] {
  106. JoinType.Inner, t1.OrgID == t2.OrgID && t1.CreateUser == t2.MemberID,
  107. JoinType.Inner, t3.customer_guid == t1.guid
  108. }
  109. )
  110. .Where((t1, t2) => t1.UniCode.Contains(sUniCode) && SqlFunc.ContainsArray(saTransactionType, t1.TransactionType) && SqlFunc.ContainsArray(saEffective, t1.Effective) && SqlFunc.ContainsArray(saIsAudit, t1.IsAudit) && (t1.CustomerCName.Contains(sCustomerName) || t1.CustomerEName.Contains(sCustomerName) || t1.CustomerShotCName.Contains(sCustomerName)))
  111. //.WhereIF((i_crm.ORIGID == "SG" || i_crm.ORIGID == "SE"), (t1, t2, t3) => t1.OrgID == i_crm.ORIGID)
  112. .WhereIF((i_crm.ORIGID != "TE" && i_crm.ORIGID != "TG"), (t1, t2, t3) => t1.OrgID == i_crm.ORIGID)
  113. .WhereIF((i_crm.ORIGID == "TE" || i_crm.ORIGID == "TG"), (t1, t2, t3) => t1.OrgID == "TE" || t1.OrgID == "TG")
  114. .WhereIF(!string.IsNullOrEmpty(sCustomerNO), (t3) => t3.CustomerNO.Contains(sCustomerNO))
  115. .WhereIF(string.IsNullOrEmpty(sCustomerNO), (t3) => t3.Effective == "Y")
  116. .WhereIF(!string.IsNullOrEmpty(sCreateUser), (t1, t2) => t1.CreateUser == sCreateUser)
  117. .WhereIF(!string.IsNullOrEmpty(sDateStart) && sDateType == "1", (t1, t2) => t1.CreateDate >= rDateStart.Date)
  118. .WhereIF(!string.IsNullOrEmpty(sDateEnd) && sDateType == "1", (t1, t2) => t1.CreateDate <= rDateEnd.Date)
  119. .WhereIF(!string.IsNullOrEmpty(sDateStart) && sDateType == "2", (t1, t2) => t1.ModifyDate >= rDateStart.Date)
  120. .WhereIF(!string.IsNullOrEmpty(sDateEnd) && sDateType == "2", (t1, t2) => t1.ModifyDate <= rDateEnd.Date)
  121. //.WhereIF(!string.IsNullOrEmpty(sCreateDateStart), (t1, t2) => t1.CreateDate >= rCreateDateStart.Date)
  122. //.WhereIF(!string.IsNullOrEmpty(sCreateDateEnd), (t1, t2) => t1.CreateDate <= rCreateDateEnd.Date)
  123. //.WhereIF(!string.IsNullOrEmpty(sModifyDateStart), (t1, t2) => t1.ModifyDate >= rModifyDateStart.Date)
  124. //.WhereIF(!string.IsNullOrEmpty(sModifyDateEnd), (t1, t2) => t1.ModifyDate <= rModifyDateEnd.Date)
  125. .WhereIF(!string.IsNullOrEmpty(sState), (t1, t2) => t1.State == sState)
  126. .WhereIF(!string.IsNullOrEmpty(sIndustry), (t1, t2) => t1.Industry.Contains(sIndustry) || t1.IndustryStatistics.Contains(sIndustry))
  127. .Select((t1, t2) => new OTB_CRM_Customers
  128. {
  129. guid = SqlFunc.GetSelfAndAutoFill(t1.guid),
  130. CreateUserName = t2.MemberName
  131. })
  132. .MergeTable()
  133. .OrderBy(sSortField, sSortOrder)
  134. .ToPageList(pml.PageIndex, bExcel ? 100000 : pml.PageSize, ref iPageCount);
  135. pml.Total = iPageCount;
  136. rm = new SuccessResponseMessage(null, i_crm);
  137. if (bExcel)
  138. {
  139. var sFileName = "";
  140. var oHeader = new Dictionary<string, string>();
  141. var listMerge = new List<Dictionary<string, int>>();
  142. var dicAlain = new Dictionary<string, string>();
  143. var dt_new = new DataTable();
  144. var saCustomers1 = pml.DataList;
  145. var saCustomers = pml.DataList as List<OTB_CRM_Customers>;
  146. switch (sExcelType)
  147. {
  148. case "Cus_BasicInformation":
  149. {
  150. sFileName = "客戶基本資料";
  151. oHeader = new Dictionary<string, string>
  152. {
  153. { "RowIndex", "項次" },
  154. { "CustomerNO", "客戶代號" },
  155. { "CustomerCName", "公司中文名稱" },
  156. { "CustomerEName", "公司英文名稱" },
  157. { "CustomerShotCName", "客戶簡稱" },
  158. { "UniCode", "統一編號" },
  159. { "Telephone", "公司電話" },
  160. { "FAX", "公司傳真" },
  161. { "Address", "地址" },
  162. { "CreateUser", "創建人代號" },
  163. { "CreateUserName", "創建人名稱" },
  164. { "CreateDate", "創建時間" },
  165. { "IsAudit", "審核狀態" }
  166. };
  167. dt_new.Columns.Add("RowIndex");
  168. dt_new.Columns.Add("CustomerNO");
  169. dt_new.Columns.Add("CustomerCName");
  170. dt_new.Columns.Add("CustomerEName");
  171. dt_new.Columns.Add("CustomerShotCName");
  172. dt_new.Columns.Add("UniCode");
  173. dt_new.Columns.Add("Telephone");
  174. dt_new.Columns.Add("FAX");
  175. dt_new.Columns.Add("Address");
  176. dt_new.Columns.Add("CreateUser");
  177. dt_new.Columns.Add("CreateUserName");
  178. dt_new.Columns.Add("CreateDate");
  179. dt_new.Columns.Add("IsAudit");
  180. foreach (var customer in saCustomers)
  181. {
  182. var row_new = dt_new.NewRow();
  183. row_new["RowIndex"] = customer.RowIndex;
  184. row_new["CustomerNO"] = customer.CustomerNO;
  185. row_new["CustomerCName"] = customer.CustomerCName;
  186. row_new["CustomerEName"] = customer.CustomerEName;
  187. row_new["CustomerShotCName"] = customer.CustomerShotCName;
  188. row_new["UniCode"] = customer.UniCode;
  189. row_new["Telephone"] = customer.Telephone;
  190. row_new["FAX"] = customer.FAX;
  191. row_new["Address"] = customer.Address;
  192. row_new["CreateUser"] = customer.CreateUser;
  193. row_new["CreateUserName"] = customer.CreateUserName;
  194. row_new["CreateDate"] = Convert.ToDateTime(customer.CreateDate).ToString("yyyy/MM/dd"); ;
  195. row_new["IsAudit"] = customer.IsAudit == "Y" ? "已審核" : customer.IsAudit == "N" ? "未審核" : "審核中";
  196. dt_new.Rows.Add(row_new);
  197. }
  198. dicAlain = ExcelService.GetExportAlain(oHeader, "CustomerNO,UniCode,Telephone,FAX,CreateUser,CreateUserName,CreateDate,IsAudit");
  199. }
  200. break;
  201. case "Cus_Email":
  202. {
  203. sFileName = "客戶資料(名稱^Email)";
  204. oHeader = new Dictionary<string, string>
  205. {
  206. { "RowIndex", "項次" },
  207. { "CustomerCName", "公司中文名稱" },
  208. { "CustomerEName", "公司英文名稱" },
  209. { "Email", "Email" },
  210. { "Contactor", "聯絡人" },
  211. { "ContactorEmail", "聯絡人Email" }
  212. };
  213. dicAlain = ExcelService.GetExportAlain(oHeader, new string[] { "Email", "Contactor", "ContactorEmail" });
  214. dt_new.Columns.Add("RowIndex");
  215. dt_new.Columns.Add("CustomerCName");
  216. dt_new.Columns.Add("CustomerEName");
  217. dt_new.Columns.Add("Email");
  218. dt_new.Columns.Add("Contactor");
  219. dt_new.Columns.Add("ContactorEmail");
  220. var iChildIndex = 0;
  221. foreach (var customer in saCustomers)
  222. {
  223. var iLastIndex = iChildIndex;
  224. var row_new = dt_new.NewRow();
  225. row_new["RowIndex"] = customer.RowIndex;
  226. row_new["CustomerCName"] = customer.CustomerCName;
  227. row_new["CustomerEName"] = customer.CustomerEName;
  228. row_new["Email"] = customer.Email;
  229. row_new["Contactor"] = "";
  230. row_new["ContactorEmail"] = "";
  231. var jaContactors = (JArray)JsonConvert.DeserializeObject(customer.Contactors);
  232. if (jaContactors != null && jaContactors.Count > 0)
  233. {
  234. var idx = 0;
  235. foreach (JObject jo in jaContactors)
  236. {
  237. if (idx != 0)
  238. {
  239. row_new = dt_new.NewRow();
  240. row_new["RowIndex"] = "";
  241. row_new["CustomerCName"] = "";
  242. row_new["CustomerEName"] = "";
  243. row_new["Email"] = "";
  244. row_new["Contactor"] = jo["FullName"];
  245. row_new["ContactorEmail"] = jo["Email"];
  246. dt_new.Rows.InsertAt(row_new, iChildIndex);
  247. }
  248. else
  249. {
  250. row_new["Contactor"] = jo["FullName"];
  251. row_new["ContactorEmail"] = jo["Email"];
  252. dt_new.Rows.Add(row_new);
  253. }
  254. idx++;
  255. iChildIndex++;
  256. }
  257. if (jaContactors.Count > 1)
  258. {
  259. var dicMerge = new Dictionary<string, int>
  260. {
  261. { "FirstRow", iLastIndex + 3 },
  262. { "FirstCol", 0 },
  263. { "RowCount", jaContactors.Count },
  264. { "ColCount", 1 }
  265. };
  266. listMerge.Add(dicMerge);
  267. dicMerge = new Dictionary<string, int>
  268. {
  269. { "FirstRow", iLastIndex + 3 },
  270. { "FirstCol", 1 },
  271. { "RowCount", jaContactors.Count },
  272. { "ColCount", 1 }
  273. };
  274. listMerge.Add(dicMerge);
  275. dicMerge = new Dictionary<string, int>
  276. {
  277. { "FirstRow", iLastIndex + 3 },
  278. { "FirstCol", 2 },
  279. { "RowCount", jaContactors.Count },
  280. { "ColCount", 1 }
  281. };
  282. listMerge.Add(dicMerge);
  283. dicMerge = new Dictionary<string, int>
  284. {
  285. { "FirstRow", iLastIndex + 3 },
  286. { "FirstCol", 3 },
  287. { "RowCount", jaContactors.Count },
  288. { "ColCount", 1 }
  289. };
  290. listMerge.Add(dicMerge);
  291. }
  292. }
  293. else
  294. {
  295. dt_new.Rows.Add(row_new);
  296. iChildIndex++;
  297. }
  298. }
  299. }
  300. break;
  301. case "Cus_WenzhongCusFile":
  302. {
  303. sFileName = "文中客供商檔";
  304. oHeader = new Dictionary<string, string>
  305. {
  306. { "RowIndex", "項次" },
  307. { "CustomerNO", "客戶供應商代號" },
  308. { "CusField1", "客戶供應商類別" },
  309. { "CustomerShotCName", "客戶供應商簡稱" },
  310. { "CustomerCName", "客戶供應商全稱" },
  311. { "CusField2", "行業別" },
  312. { "CusField3", "類別科目代號" },
  313. { "UniCode", "統一編號" },
  314. { "CusField4", "稅籍編號" },
  315. { "CusField5", "郵遞區號" },
  316. { "InvoiceAddress", "發票地址" },
  317. { "Address", " 聯絡地址" },
  318. { "CusField6", "送貨地址" },
  319. { "CusField7", "電話(發票地址)" },
  320. { "Telephone", "電話(公司地址)" },
  321. { "CusField8", "電話(送貨地址)" },
  322. { "FAX", "傳真" },
  323. { "CusField9", "數據機種類" },
  324. { "CusField10", "傳呼機號碼" },
  325. { "CusField11", "行動電話" },
  326. { "CusField12", "網址" },
  327. { "CusField13", "負責人" },
  328. { "CusField14", "聯絡人" },
  329. { "Memo", "備註(30C" },
  330. { "CusField15", "銷售折數" },
  331. { "CusField16", "等級" },
  332. { "CusField17", "區域" },
  333. { "CusField18", "進貨折數" },
  334. { "CusField19", "部門|工地編號" },
  335. { "CusField20", "業務員代號" },
  336. { "CusField21", "服務人員" },
  337. { "CusField22", "建立日期" },
  338. { "CusField23", "最近交易日" },
  339. { "CusField24", "信用額度" },
  340. { "CusField25", "保證額度" },
  341. { "CusField26", "抵押額度" },
  342. { "CusField27", "已用額度" },
  343. { "CusField28", "開立發票方式" },
  344. { "CusField29", "收款方式" },
  345. { "CusField30", "匯款銀行代號" },
  346. { "CusField31", "匯款帳號" },
  347. { "CusField32", "結帳方式(作廢不使用)" },
  348. { "CusField33", "銷貨後幾個月結帳" },
  349. { "CusField34", "銷貨後逢幾日結帳" },
  350. { "CusField35", "結帳後幾個月收款" },
  351. { "CusField36", "結帳後逢幾日收款" },
  352. { "CusField37", "收款後幾個月兌現" },
  353. { "CusField38", "收款後逢幾日兌現" },
  354. { "CusField39", "進貨後幾個月結帳" },
  355. { "CusField40", "進貨後逢幾日結帳" },
  356. { "CusField41", "結帳後幾個月付款" },
  357. { "CusField42", "結帳後逢幾日付款" },
  358. { "CusField43", "付款後幾個月兌現" },
  359. { "CusField44", "付款後逢幾日兌現" },
  360. { "CusField45", "郵遞區號(聯絡地址)" },
  361. { "CusField46", "郵遞區號(送貨地址)" },
  362. { "CusField47", "職稱" },
  363. { "CusField48", "專案|項目編號" },
  364. { "CusField49", "請款客戶" },
  365. { "CusField50", "EAMIL ADDRS" },
  366. { "CusField51", "收款/付款方式(描述)" },
  367. { "CusField52", "交貨/收貨方式" },
  368. { "CusField53", "進出口交易方式" },
  369. { "CusField54", "交易幣別" },
  370. { "CusField55", "英文負責人" },
  371. { "CusField56", "英文聯絡人" },
  372. { "CusField57", "電子發票通知方式" },
  373. { "CusField58", "發票預設捐贈" },
  374. { "CusField59", "預設發票捐贈對象" },
  375. { "CusField60", "自定義欄位一" },
  376. { "CusField61", "自定義欄位二" },
  377. { "CusField62", "自定義欄位三" },
  378. { "CusField63", "自定義欄位四" },
  379. { "CusField64", "自定義欄位五" },
  380. { "CusField65", "自定義欄位六" },
  381. { "CusField66", "自定義欄位七" },
  382. { "CusField67", "自定義欄位八" },
  383. { "CusField68", "自定義欄位九" },
  384. { "CusField69", "自定義欄位十" },
  385. { "CusField71", "自定義欄位十一" },
  386. { "CusField72", "自定義欄位十二" },
  387. { "CusField73", "會員卡號" },
  388. { "CusField74", "客供商英文名稱" },
  389. { "CusField75", "客戶英文地址" },
  390. { "CusField76", "銷貨結帳終止日" },
  391. { "CusField77", "進貨結帳終止日" },
  392. { "CusField78", "銷貨收款週期選項" },
  393. { "CusField79", "進貨付款週期選項" },
  394. { "CusField80", "進貨收付條件" },
  395. { "CusField81", "客供商英文聯絡電話" },
  396. { "CusField82", "匯款戶名" },
  397. { "CusField83", "使用電子發票" },
  398. { "CusField84", "單價含稅否" },
  399. { "CusField85", "批次結帳" },
  400. { "CusField86", "發票服務平台登入密碼" },
  401. { "CusField87", "絡地址經度" },
  402. { "CusField88", "聯絡地址緯度" }
  403. };
  404. dt_new.Columns.Add("RowIndex");
  405. dt_new.Columns.Add("CustomerNO");
  406. dt_new.Columns.Add("CusField1");
  407. dt_new.Columns.Add("CustomerShotCName");
  408. dt_new.Columns.Add("CustomerCName");
  409. dt_new.Columns.Add("CusField2");
  410. dt_new.Columns.Add("CusField3");
  411. dt_new.Columns.Add("UniCode");
  412. dt_new.Columns.Add("CusField4");
  413. dt_new.Columns.Add("CusField5");
  414. dt_new.Columns.Add("InvoiceAddress");
  415. dt_new.Columns.Add("Address");
  416. dt_new.Columns.Add("CusField6");
  417. dt_new.Columns.Add("CusField7");
  418. dt_new.Columns.Add("Telephone");
  419. dt_new.Columns.Add("CusField8");
  420. dt_new.Columns.Add("FAX");
  421. dt_new.Columns.Add("CusField9");
  422. dt_new.Columns.Add("CusField10");
  423. dt_new.Columns.Add("CusField11");
  424. dt_new.Columns.Add("CusField12");
  425. dt_new.Columns.Add("CusField13");
  426. dt_new.Columns.Add("CusField14");
  427. dt_new.Columns.Add("Memo");
  428. dt_new.Columns.Add("CusField15");
  429. dt_new.Columns.Add("CusField16");
  430. dt_new.Columns.Add("CusField17");
  431. dt_new.Columns.Add("CusField18");
  432. dt_new.Columns.Add("CusField19");
  433. dt_new.Columns.Add("CusField20");
  434. dt_new.Columns.Add("CusField21");
  435. dt_new.Columns.Add("CusField22");
  436. dt_new.Columns.Add("CusField23");
  437. dt_new.Columns.Add("CusField24");
  438. dt_new.Columns.Add("CusField25");
  439. dt_new.Columns.Add("CusField26");
  440. dt_new.Columns.Add("CusField27");
  441. dt_new.Columns.Add("CusField28");
  442. dt_new.Columns.Add("CusField29");
  443. dt_new.Columns.Add("CusField30");
  444. dt_new.Columns.Add("CusField31");
  445. dt_new.Columns.Add("CusField32");
  446. dt_new.Columns.Add("CusField33");
  447. dt_new.Columns.Add("CusField34");
  448. dt_new.Columns.Add("CusField35");
  449. dt_new.Columns.Add("CusField36");
  450. dt_new.Columns.Add("CusField37");
  451. dt_new.Columns.Add("CusField38");
  452. dt_new.Columns.Add("CusField39");
  453. dt_new.Columns.Add("CusField40");
  454. dt_new.Columns.Add("CusField41");
  455. dt_new.Columns.Add("CusField42");
  456. dt_new.Columns.Add("CusField43");
  457. dt_new.Columns.Add("CusField44");
  458. dt_new.Columns.Add("CusField45");
  459. dt_new.Columns.Add("CusField46");
  460. dt_new.Columns.Add("CusField47");
  461. dt_new.Columns.Add("CusField48");
  462. dt_new.Columns.Add("CusField49");
  463. dt_new.Columns.Add("CusField50");
  464. dt_new.Columns.Add("CusField51");
  465. dt_new.Columns.Add("CusField52");
  466. dt_new.Columns.Add("CusField53");
  467. dt_new.Columns.Add("CusField54");
  468. dt_new.Columns.Add("CusField55");
  469. dt_new.Columns.Add("CusField56");
  470. dt_new.Columns.Add("CusField57");
  471. dt_new.Columns.Add("CusField58");
  472. dt_new.Columns.Add("CusField59");
  473. dt_new.Columns.Add("CusField60");
  474. dt_new.Columns.Add("CusField61");
  475. dt_new.Columns.Add("CusField62");
  476. dt_new.Columns.Add("CusField63");
  477. dt_new.Columns.Add("CusField64");
  478. dt_new.Columns.Add("CusField65");
  479. dt_new.Columns.Add("CusField66");
  480. dt_new.Columns.Add("CusField67");
  481. dt_new.Columns.Add("CusField68");
  482. dt_new.Columns.Add("CusField69");
  483. dt_new.Columns.Add("CusField70");
  484. dt_new.Columns.Add("CusField71");
  485. dt_new.Columns.Add("CusField72");
  486. dt_new.Columns.Add("CusField73");
  487. dt_new.Columns.Add("CusField74");
  488. dt_new.Columns.Add("CusField75");
  489. dt_new.Columns.Add("CusField76");
  490. dt_new.Columns.Add("CusField77");
  491. dt_new.Columns.Add("CusField78");
  492. dt_new.Columns.Add("CusField79");
  493. dt_new.Columns.Add("CusField80");
  494. dt_new.Columns.Add("CusField81");
  495. dt_new.Columns.Add("CusField82");
  496. dt_new.Columns.Add("CusField83");
  497. dt_new.Columns.Add("CusField84");
  498. dt_new.Columns.Add("CusField85");
  499. dt_new.Columns.Add("CusField86");
  500. dt_new.Columns.Add("CusField87");
  501. dt_new.Columns.Add("CusField88");
  502. foreach (var customer in saCustomers)
  503. {
  504. var sName = string.IsNullOrEmpty(customer.CustomerCName) ? customer.CustomerEName : customer.CustomerCName;
  505. var sEName = customer.CustomerEName;
  506. if (sName.Trim() == "")
  507. {
  508. sName = sEName;
  509. }
  510. var sMemo = customer.Memo;
  511. var sInvoiceAddress = customer.InvoiceAddress;
  512. var sAddress = customer.Address;
  513. var sTelephone = customer.Telephone;
  514. var row_new = dt_new.NewRow();
  515. row_new["RowIndex"] = customer.RowIndex;
  516. row_new["CustomerCName"] = Common.CutByteString(sName, 60);
  517. row_new["InvoiceAddress"] = Common.CutByteString(sInvoiceAddress, 60);
  518. row_new["Address"] = Common.CutByteString(sAddress, 60);
  519. row_new["Telephone"] = Common.CutByteString(sTelephone, 60);
  520. row_new["Memo"] = Common.CutByteString(sMemo, 30);
  521. row_new["CusField1"] = "0";
  522. row_new["CusField2"] = "";
  523. row_new["CusField3"] = "";
  524. row_new["CusField4"] = "";
  525. row_new["CusField5"] = "";
  526. row_new["CusField6"] = "";
  527. row_new["CusField7"] = "";
  528. row_new["CusField8"] = "";
  529. row_new["CusField9"] = "";
  530. row_new["CusField10"] = "";
  531. row_new["CusField11"] = "";
  532. row_new["CusField12"] = "";
  533. row_new["CusField13"] = "";
  534. row_new["CusField14"] = "";
  535. row_new["CusField15"] = "";
  536. row_new["CusField16"] = "";
  537. row_new["CusField17"] = "";
  538. row_new["CusField18"] = "";
  539. row_new["CusField19"] = "";
  540. var _CreateUser = customer.CreateUser;
  541. sCreateUser = _CreateUser.Split('.')[0];
  542. row_new["CusField20"] = Common.CutByteString(_CreateUser, 30); ;
  543. row_new["CusField21"] = "";
  544. row_new["CusField22"] = "";
  545. row_new["CusField23"] = "";
  546. row_new["CusField24"] = "";
  547. row_new["CusField25"] = "";
  548. row_new["CusField26"] = "";
  549. row_new["CusField27"] = "";
  550. row_new["CusField28"] = "B,C".IndexOf(customer.TransactionType.Trim()) > -1 ? "6" : "5";
  551. row_new["CusField29"] = "";
  552. row_new["CusField30"] = "";
  553. row_new["CusField31"] = "";
  554. row_new["CusField32"] = "";
  555. row_new["CusField33"] = "";
  556. row_new["CusField34"] = "";
  557. row_new["CusField35"] = "";
  558. row_new["CusField36"] = "";
  559. row_new["CusField37"] = "";
  560. row_new["CusField38"] = "";
  561. row_new["CusField39"] = "";
  562. row_new["CusField40"] = "";
  563. row_new["CusField41"] = "";
  564. row_new["CusField42"] = "";
  565. row_new["CusField43"] = "";
  566. row_new["CusField44"] = "";
  567. row_new["CusField45"] = "";
  568. row_new["CusField46"] = "";
  569. row_new["CusField47"] = "";
  570. row_new["CusField48"] = "";
  571. row_new["CusField49"] = customer.CustomerNO;
  572. row_new["CusField50"] = "";
  573. row_new["CusField51"] = "";
  574. row_new["CusField52"] = "";
  575. row_new["CusField53"] = "";
  576. row_new["CusField54"] = "";
  577. row_new["CusField55"] = "";
  578. row_new["CusField56"] = "";
  579. row_new["CusField57"] = "";
  580. row_new["CusField58"] = "";
  581. row_new["CusField59"] = "";
  582. row_new["CusField60"] = "";
  583. row_new["CusField61"] = "";
  584. row_new["CusField62"] = "";
  585. row_new["CusField63"] = "";
  586. row_new["CusField64"] = "";
  587. row_new["CusField65"] = "";
  588. row_new["CusField66"] = "";
  589. row_new["CusField67"] = "";
  590. row_new["CusField68"] = "";
  591. row_new["CusField69"] = "";
  592. row_new["CusField70"] = "";
  593. row_new["CusField71"] = "";
  594. row_new["CusField72"] = "";
  595. row_new["CusField73"] = "";
  596. row_new["CusField74"] = Common.CutByteString(customer.CustomerEName, 120);
  597. if (Regex.IsMatch(sAddress, "[\u4e00-\u9fa5]+"))
  598. {
  599. sAddress = "";
  600. }
  601. row_new["CusField75"] = Common.CutByteString(sAddress, 240);
  602. row_new["CusField76"] = "";
  603. row_new["CusField77"] = "";
  604. row_new["CusField78"] = "";
  605. row_new["CusField79"] = "";
  606. row_new["CusField80"] = "";
  607. row_new["CusField81"] = "";
  608. row_new["CusField82"] = "";
  609. row_new["CusField83"] = "";
  610. row_new["CusField84"] = "";
  611. row_new["CusField85"] = "";
  612. row_new["CusField86"] = "";
  613. row_new["CusField87"] = "";
  614. row_new["CusField88"] = "";
  615. dt_new.Rows.Add(row_new);
  616. }
  617. dicAlain = ExcelService.GetExportAlain(oHeader, "CustomerNO,UniCode,Telephone,FAX,CusField1");
  618. }
  619. break;
  620. default:
  621. {
  622. break;
  623. }
  624. }
  625. var bOk = new ExcelService().CreateExcelByTb(dt_new, out string sPath, oHeader, dicAlain, listMerge, sFileName);
  626. rm.DATA.Add(BLWording.REL, sPath);
  627. }
  628. else
  629. {
  630. rm.DATA.Add(BLWording.REL, pml);
  631. }
  632. } while (false);
  633. }
  634. catch (Exception ex)
  635. {
  636. sMsg = Util.GetLastExceptionMsg(ex);
  637. LogAndSendEmail(sMsg + "Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Customers_QryService), "", "QueryPage(客戶管理(分頁查詢))", "", "", "");
  638. }
  639. finally
  640. {
  641. if (null != sMsg)
  642. {
  643. rm = new ErrorResponseMessage(sMsg, i_crm);
  644. }
  645. }
  646. return rm;
  647. }
  648. #endregion 客戶管理(分頁查詢)
  649. #region 客戶管理(單筆查詢)
  650. /// <summary>
  651. /// 客戶管理(單筆查詢)
  652. /// </summary>
  653. /// <param name="i_crm"></param>
  654. /// <returns></returns>
  655. public ResponseMessage QueryOne(RequestMessage i_crm)
  656. {
  657. ResponseMessage rm = null;
  658. string sMsg = null;
  659. var db = SugarBase.GetIntance();
  660. try
  661. {
  662. do
  663. {
  664. var sId = _fetchString(i_crm, @"Guid");
  665. var oEntity = db.Queryable<OTB_CRM_Customers>().Single(x => x.guid == sId);
  666. rm = new SuccessResponseMessage(null, i_crm);
  667. rm.DATA.Add(BLWording.REL, oEntity);
  668. } while (false);
  669. }
  670. catch (Exception ex)
  671. {
  672. sMsg = Util.GetLastExceptionMsg(ex);
  673. LogAndSendEmail(sMsg + "Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Customers_QryService), "", "QueryOne(客戶管理(單筆查詢))", "", "", "");
  674. }
  675. finally
  676. {
  677. if (null != sMsg)
  678. {
  679. rm = new ErrorResponseMessage(sMsg, i_crm);
  680. }
  681. }
  682. return rm;
  683. }
  684. #endregion 客戶管理(單筆查詢)
  685. }
  686. }