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.

561 lines
30 KiB

4 days ago
  1. using Newtonsoft.Json;
  2. using NFine.Code;
  3. using NFine.Data.Extensions;
  4. using NFine.Domain._03_Entity.SRM;
  5. using NFine.Domain.Entity.ProductManage;
  6. using NFine.Domain.IRepository.ProductManage;
  7. using NFine.Repository;
  8. using NFine.Repository.ProductManage;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Configuration;
  12. using System.Data;
  13. using System.Data.Common;
  14. using System.Data.SqlClient;
  15. using System.IO;
  16. using System.Linq;
  17. using System.Net;
  18. using System.Net.Mail;
  19. using System.Net.Security;
  20. using System.Security.Cryptography.X509Certificates;
  21. using System.Text;
  22. namespace NFine.Application.SRM
  23. {
  24. public class POSignBacksApp : RepositoryFactory<ICSPO_PoMain>
  25. {
  26. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  27. {
  28. DataTable dt = new DataTable();
  29. var queryParam = queryJson.ToJObject();
  30. List<DbParameter> parameter = new List<DbParameter>();
  31. string EATTRIBUTE = SqlHelper.GetEATTRIBUTE("ICSPurchaseOrder","a").TrimEnd(',');
  32. string sql = @" SELECT DISTINCT POCode
  33. ,CONVERT(NVARCHAR(15),CreateDateTime,23) AS PODate
  34. ,c.ProjectCode
  35. ,a.VenCode
  36. ,d.VenName
  37. ,CreatePerson
  38. ,a.Filename AS Filename
  39. ,a.uploadcomment AS uploadcomment
  40. ,MAX(a.uploadFrequency) AS uploadFrequency
  41. ,MAX(a.DownloadFrequency) AS DownloadFrequency
  42. ,case when a.SignBackStatus=1 or ISNULL(a.SignBackStatus,'')='' then '' WHEN a.SignBackStatus=2 then ''WHEN a.SignBackStatus=3 then ''WHEN a.SignBackStatus=4 then '退' END as signBackstate
  43. ,a.WorkPoint
  44. ,a.BackComment
  45. ,case when a.SignBackStatus=1 or ISNULL(a.SignBackStatus,'')='' then '' WHEN a.SignBackStatus=2 then ''WHEN a.SignBackStatus=3 then ''WHEN a.SignBackStatus=4 then '退' END as STATUS
  46. ," + EATTRIBUTE + "";
  47. sql+=@" FROM dbo.ICSPurchaseOrder a
  48. LEFT JOIN ICSINVENTORY b on a.InvCode=b.INVCODE and a.WorkPoint=b.WorkPoint
  49. LEFT JOIN dbo.ICSExtension c ON a.ExtensionID=c.ID AND a.WorkPoint=c.WorkPoint
  50. LEFT JOIN dbo.ICSVendor d ON a.VenCode=d.VenCode AND a.WorkPoint=d.WorkPoint
  51. WHERE 1=1 and a.ReleaseState='1' --and a.Status<>'3'
  52. ";
  53. if (!string.IsNullOrWhiteSpace(queryJson))
  54. {
  55. // if (!string.IsNullOrWhiteSpace(queryParam["ORDERNO"].ToString()))
  56. //{
  57. // sql += " and ORDERNO like '%" + queryParam["ORDERNO"].ToString() + "%' ";
  58. //}
  59. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  60. {
  61. sql += " and a.POCode like '%" + queryParam["POCode"].ToString() + "%' ";
  62. }
  63. if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
  64. {
  65. sql += " and a.CreateDateTime >='" + queryParam["BeginDate"].ToString() + "' ";
  66. }
  67. if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  68. {
  69. sql += " and a.CreateDateTime <='" + queryParam["EndDate"].ToString() + "'";
  70. }
  71. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  72. {
  73. sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  74. }
  75. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  76. {
  77. sql += " and d.VenName like '%" + queryParam["VenName"].ToString() + "%'";
  78. }
  79. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  80. {
  81. sql += " and b.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  82. }
  83. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  84. {
  85. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%'";
  86. }
  87. if (!string.IsNullOrWhiteSpace(queryParam["EATTRIBUTE12"].ToString()))
  88. {
  89. sql += " and a.EATTRIBUTE12 like '%" + queryParam["EATTRIBUTE12"].ToString() + "%'";
  90. }
  91. if (!string.IsNullOrWhiteSpace(queryParam["U8Status"].ToString()))
  92. {
  93. string U8Status = queryParam["U8Status"].ToString();
  94. if (U8Status == "0")
  95. sql += " and isnull(Status,'')<>'3'";
  96. else if (U8Status == "2")
  97. sql += " and isnull(Status,'')='3'";
  98. }
  99. //if (!string.IsNullOrWhiteSpace(queryParam["CreatePerson"].ToString()))
  100. //{
  101. // sql += " and CreatePerson like '%" + queryParam["CreatePerson"].ToString() + "%'";
  102. //}
  103. if (!string.IsNullOrWhiteSpace(queryParam["ReleaseState"].ToString()))
  104. {
  105. string ReleaseState = queryParam["ReleaseState"].ToString();
  106. if (ReleaseState == "1")
  107. sql += " and a.SignBackStatus = '1'";
  108. else if (ReleaseState == "2")
  109. sql += " and a.SignBackStatus = '2'";
  110. else if (ReleaseState == "3")
  111. sql += " and a.SignBackStatus = '3'";
  112. else if (ReleaseState == "0")
  113. sql += " and (ISNULL(a.SignBackStatus,'') = ''OR ISNULL(a.SignBackStatus,'') = '1')";
  114. else if (ReleaseState == "4")
  115. {
  116. sql += " and ISNULL(a.SignBackStatus,0) = '4'";
  117. }
  118. }
  119. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  120. {
  121. sql += " and a.VenCode in (SELECT VenCode FROM ICSVendor where VenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "' AND a.WorkPoint=ICSVendor.WorkPoint)";
  122. }
  123. //else
  124. //{
  125. // if (NFine.Code.OperatorProvider.Provider.GetCurrent().IsSystem == false)
  126. // {
  127. // sql += " and CreatePerson='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'";
  128. // }
  129. //}
  130. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  131. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  132. sql += @"
  133. GROUP BY POCode,CreateDateTime,c.ProjectCode,a.VenCode,d.VenName,a.SignBackStatus,CreatePerson,a.Filename,a.uploadcomment,a.BackComment,a.WorkPoint,ArriveDate ,a.EATTRIBUTE7,a.EATTRIBUTE8,
  134. a.EATTRIBUTE9,a.EATTRIBUTE10 ,a.EATTRIBUTE11 ,a.EATTRIBUTE12 ";
  135. }
  136. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  137. }
  138. public string ChridenList(string keyValue, string WorkPoint)
  139. {
  140. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  141. WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
  142. string msg = "";
  143. string sql = "SELECT ArriveDate,Status FROM dbo.ICSPurchaseOrder WHERE PoCode='{0}' and WorkPoint='{1}'";
  144. sql = string.Format(sql, keyValue, WorkPoint);
  145. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  146. for (int i = 0; i < dt.Rows.Count; i++)
  147. {
  148. if (dt.Rows[i]["Status"].ToString() != "3")//判断是否关闭
  149. {
  150. if (dt.Rows[i]["ArriveDate"].ToString() == "" || dt.Rows[i]["ArriveDate"].ToString() == null)
  151. {
  152. msg = "请先填写交期一!";
  153. }
  154. }
  155. }
  156. return msg;
  157. }
  158. public DataTable GetGridJsonCommint(string queryJson, ref Pagination jqgridparam)
  159. {
  160. //string ParentId = "";
  161. DataTable dt = new DataTable();
  162. var queryParam = queryJson.ToJObject();
  163. List<DbParameter> parameter = new List<DbParameter>();
  164. string EATTRIBUTE = SqlHelper.GetEATTRIBUTE("ICSPurchaseOrder", "a").TrimEnd(',');
  165. string sql = @" SELECT DISTINCT POCode
  166. ,CONVERT(NVARCHAR(15),CreateDateTime,23) AS PODate
  167. ,e.ProjectCode
  168. ,a.VenCode
  169. ,d.VenName
  170. ,ReleaseState
  171. ,CreatePerson
  172. ,a.Filename Filename
  173. ,a.uploadcomment uploadcomment
  174. ,MAX(a.uploadFrequency) AS uploadFrequency
  175. ,MAX(a.DownloadFrequency) AS DownloadFrequency
  176. ,case when a.SignBackStatus=1or ISNULL(a.SignBackStatus,'')='' then '' WHEN a.SignBackStatus=2 then ''WHEN a.SignBackStatus=3 then '' WHEN a.SignBackStatus=4 then '退' END as signBackstate
  177. ,a.WorkPoint,a.BackComment
  178. ,case when a.SignBackStatus=1or ISNULL(a.SignBackStatus,'')='' then '' WHEN a.SignBackStatus=2 then ''WHEN a.SignBackStatus=3 then '' WHEN a.SignBackStatus=4 then '退' END as STATUS
  179. ," + EATTRIBUTE + "";
  180. sql+=@" FROM dbo.ICSPurchaseOrder a
  181. LEFT JOIN dbo.Sys_SRM_User b ON a.VenCode=b.F_VenCode AND a.WorkPoint=b.F_Location
  182. LEFT JOIN ICSINVENTORY c on a.InvCode=c.INVCODE and a.WorkPoint=c.WorkPoint
  183. LEFT JOIN dbo.ICSVendor d ON a.VenCode=d.VenCode AND a.WorkPoint=d.WorkPoint
  184. LEFT JOIN dbo.ICSExtension e ON a.ExtensionID=e.ID AND a.WorkPoint=e.WorkPoint
  185. WHERE 1=1 and a.ReleaseState='1' ";
  186. if (!string.IsNullOrWhiteSpace(queryJson))
  187. {
  188. //if (!string.IsNullOrWhiteSpace(queryParam["ORDERNO"].ToString()))
  189. //{
  190. // sql += " and a.ORDERNO like '%" + queryParam["ORDERNO"].ToString() + "%' ";
  191. //}
  192. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  193. {
  194. sql += " and a.POCode like '%" + queryParam["POCode"].ToString() + "%' ";
  195. }
  196. if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
  197. {
  198. sql += " and a.CreateDateTime >='" + queryParam["BeginDate"].ToString() + "' ";
  199. }
  200. if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  201. {
  202. sql += " and a.CreateDateTime <='" + queryParam["EndDate"].ToString() + "'";
  203. }
  204. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  205. {
  206. sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  207. }
  208. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  209. {
  210. sql += " and d.VenName like '%" + queryParam["VenName"].ToString() + "%'";
  211. }
  212. if (!string.IsNullOrWhiteSpace(queryParam["CreatePerson"].ToString()))
  213. {
  214. sql += " and a.CreatePerson like '%" + queryParam["CreatePerson"].ToString() + "%'";
  215. }
  216. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  217. {
  218. sql += " and c.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  219. }
  220. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  221. {
  222. sql += " and c.InvName like '%" + queryParam["InvName"].ToString() + "%'";
  223. }
  224. if (!string.IsNullOrWhiteSpace(queryParam["EATTRIBUTE12"].ToString()))
  225. {
  226. sql += " and a.EATTRIBUTE12 like '%" + queryParam["EATTRIBUTE12"].ToString() + "%'";
  227. }
  228. if (!string.IsNullOrWhiteSpace(queryParam["U8Status"].ToString()))
  229. {
  230. string U8Status = queryParam["U8Status"].ToString();
  231. if (U8Status == "0")
  232. sql += " and isnull(STATUS,'')<>'3'";
  233. else if (U8Status == "1")
  234. sql += " and isnull(STATUS,'')='3'";
  235. }
  236. if (!string.IsNullOrWhiteSpace(queryParam["ReleaseState"].ToString()))
  237. {
  238. string ReleaseState = queryParam["ReleaseState"].ToString();
  239. if (ReleaseState == "2")
  240. sql += " and a.SignBackStatus = '2'";
  241. else if (ReleaseState == "3")
  242. sql += " and a.SignBackStatus = '3'";
  243. else if (ReleaseState == "4")
  244. sql += " and (ISNULL(a.SignBackStatus,'')='' OR ISNULL(a.SignBackStatus,'') = '1')";
  245. else if (ReleaseState == "5")
  246. sql += " and ISNULL(a.SignBackStatus,'')='4'";
  247. }
  248. //else
  249. //{
  250. // sql += " and SignBackState in('2','3')";
  251. //}
  252. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  253. {
  254. sql += " and a.VenCode in (SELECT VenCode FROM ICSVendor where VenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'AND a.WorkPoint=ICSVendor.WorkPoint)";
  255. }
  256. //else
  257. //{
  258. // sql += " and CreatePerson='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'";
  259. //}
  260. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  261. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  262. //ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  263. }
  264. if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
  265. {
  266. sql = SqlHelper.OrganizeByVendor_F_ParentIdByCommint(sql, NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  267. }
  268. else
  269. {
  270. sql += " GROUP BY POCode,CreateDateTime,e.ProjectCode,a.VenCode,d.VenName,ReleaseState,CreatePerson,a.Filename,a.uploadcomment ,a.SignBackStatus,a.WorkPoint ,a.EATTRIBUTE7,a.EATTRIBUTE8, a.EATTRIBUTE9,a.EATTRIBUTE10 ,a.EATTRIBUTE11 ,a.EATTRIBUTE12,a.BackComment";
  271. }
  272. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  273. }
  274. /// <summary>
  275. /// 子表查询
  276. /// </summary>
  277. /// <param name="queryJson"></param>
  278. /// <param name="jqgridparam"></param>
  279. /// <returns></returns>
  280. public DataTable GetSubGridJson(string queryJson, ref Pagination jqgridparam)
  281. {
  282. DataTable dt = new DataTable();
  283. //var queryParam = queryJson.ToJObject();
  284. List<DbParameter> parameter = new List<DbParameter>();
  285. string sql = @"SELECT a.Sequence,a.InvCode,b.INVNAME,b.INVSTD,b.InvUnit,a.Quantity,
  286. CONVERT(NVARCHAR(50), a.PlanArriveDate,23) as PreArriveDate,CONVERT(NVARCHAR(50),a.ArriveDate,23) as ArriveDate,
  287. CONVERT(NVARCHAR(50), a.DeliveryDate,23) as Free5,c.ProjectCode
  288. FROM dbo.ICSPurchaseOrder a
  289. LEFT JOIN dbo.ICSINVENTORY b ON a.InvCode=b.INVCODE AND a.WorkPoint=b.WorkPoint
  290. LEFT JOIN dbo.ICSExtension c ON a.ExtensionID=c.id AND a.WorkPoint=c.WorkPoint
  291. WHERE a.POCode='" + queryJson + "'and (isnull(a.Status,'')<>''and isnull(a.Status,'')<>'')";
  292. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  293. }
  294. /// <summary>
  295. /// 提交备注信息
  296. /// </summary>
  297. /// <param name="ReturnRemark"></param>
  298. /// <param name="POCode"></param>
  299. /// <returns></returns>
  300. public int UpdatePOBackRemark(string ReturnRemark, string POCode)
  301. {
  302. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  303. string sql = string.Empty;
  304. sql = @"UPDATE ICSPurchaseOrder SET uploadcomment= '{1}' WHERE POCode = '{0}'";
  305. sql = string.Format(sql, POCode, ReturnRemark);
  306. return SqlHelper.ExecuteNonQuery(sql);
  307. }
  308. /// <summary>
  309. /// 采购人员确定订单回签
  310. /// </summary>
  311. /// <param name="ReturnRemark"></param>
  312. /// <param name="POCode"></param>
  313. /// <returns></returns>
  314. public void POBackCommit(string queryJson)
  315. {
  316. try
  317. {
  318. ICSPO_PoMain[] list = JsonConvert.DeserializeObject<ICSPO_PoMain[]>(queryJson);
  319. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  320. string sql = string.Empty;
  321. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  322. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  323. conn.Open();
  324. SqlTransaction sqlTran = conn.BeginTransaction();
  325. SqlCommand cmd = new SqlCommand();
  326. cmd.Transaction = sqlTran;
  327. cmd.Connection = conn;
  328. try
  329. {
  330. string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  331. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.Replace("'", "");
  332. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  333. foreach (var obj in list)
  334. {
  335. sql = @"UPDATE ICSPurchaseOrder SET SignBackStatus= 3,MTIME=GETDATE() WHERE POCode =@POCode and @WorkPoint=@WorkPoint";
  336. SqlParameter[] sp_Detail = {
  337. new SqlParameter("@POCode",obj.POCode),
  338. new SqlParameter("@WorkPoint",WorkPoint.TrimEnd(',')),
  339. };
  340. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
  341. }
  342. cmd.Transaction.Commit();
  343. }
  344. catch (Exception ex)
  345. {
  346. cmd.Transaction.Rollback();
  347. throw new Exception(ex.Message);
  348. }
  349. finally
  350. {
  351. if (conn.State == ConnectionState.Open)
  352. {
  353. conn.Close();
  354. }
  355. conn.Dispose();
  356. }
  357. }
  358. catch (Exception ex)
  359. {
  360. throw new Exception(ex.Message);
  361. }
  362. }
  363. /// <summary>
  364. /// 上传文件变更订单状态为确认中,新增上传次数
  365. /// </summary>
  366. /// <param name="PoCode"></param>
  367. /// <param name="FileName"></param>
  368. /// <param name="FilePath"></param>
  369. /// <returns></returns>
  370. public string UpLoadFile(string PoCode, string FileName, string FilePath, string ReturnRemark, string WorkPoint)
  371. {
  372. string msg = "";
  373. try
  374. {
  375. int countRemak = UpdatePOBackRemark(ReturnRemark, PoCode);
  376. if (countRemak <= 0)
  377. {
  378. msg = "上传失败";
  379. }
  380. //更新上传次数
  381. string sqls = @"UPDATE dbo.ICSPurchaseOrder
  382. SET uploadFrequency=ISNULL(uploadFrequency,0)+1
  383. WHERE PoCode = '" + PoCode.TrimEnd(',') + "' and WorkPoint='" + WorkPoint + "'";
  384. int counts = SqlHelper.ExecuteNonQuery(sqls);
  385. if (counts <= 0)
  386. msg = "上传失败";
  387. string sql = @"UPDATE ICSPurchaseOrder SET Filename = '{1}',FilePath = '{2}',SignBackStatus=2 WHERE POCode = '{0}'";
  388. sql = string.Format(sql, PoCode, FileName, FilePath);
  389. int count = SqlHelper.ExecuteNonQuery(sql);
  390. if (count <= 0)
  391. msg = "上传失败";
  392. }
  393. catch (Exception ex)
  394. {
  395. msg = ex.Message.ToString();
  396. }
  397. return msg;
  398. }
  399. /// <summary>
  400. /// 上传文件变更订单状态为确认中,新增上传次数
  401. /// </summary>
  402. /// <param name="PoCode"></param>
  403. /// <param name="FileName"></param>
  404. /// <param name="FilePath"></param>
  405. /// <returns></returns>
  406. public string UpLoadFileCommint(string PoCode, string FileName, string FilePath, string ReturnRemark, string WorkPoint)
  407. {
  408. string msg = "";
  409. try
  410. {
  411. int countRemak = UpdatePOBackRemark(ReturnRemark, PoCode);
  412. if (countRemak <= 0)
  413. {
  414. msg = "上传失败";
  415. }
  416. //更新上传次数
  417. string sqls = @"UPDATE dbo.ICSPurchaseOrder
  418. SET uploadFrequency=ISNULL(uploadFrequency,0)+1
  419. WHERE PoCode = '" + PoCode.TrimEnd(',') + "' and WorkPoint='" + WorkPoint + "'";
  420. int counts = SqlHelper.ExecuteNonQuery(sqls);
  421. if (counts <= 0)
  422. msg = "上传失败";
  423. string sql = @"UPDATE ICSPurchaseOrder SET FileName = '{1}',FilePath = '{2}',SignBackStatus=3 WHERE POCode = '{0}'";
  424. sql = string.Format(sql, PoCode, FileName, FilePath);
  425. int count = SqlHelper.ExecuteNonQuery(sql);
  426. if (count <= 0)
  427. msg = "上传失败";
  428. }
  429. catch (Exception ex)
  430. {
  431. msg = ex.Message.ToString();
  432. }
  433. return msg;
  434. }
  435. public void BackCommit(string keyValue)
  436. {
  437. string sql = string.Empty;
  438. try
  439. {
  440. string Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  441. string MuserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  442. ICSPO_PoMain[] list = JsonConvert.DeserializeObject<ICSPO_PoMain[]>(keyValue);
  443. string MailOpen = ConfigurationManager.ConnectionStrings["MailOpen"].ConnectionString;
  444. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  445. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  446. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  447. conn.Open();
  448. SqlTransaction sqlTran = conn.BeginTransaction();
  449. SqlCommand cmd = new SqlCommand();
  450. cmd.Transaction = sqlTran;
  451. cmd.Connection = conn;
  452. try
  453. {
  454. foreach (var obj in list)
  455. {
  456. sql = @" UPDATE ICSPurchaseOrder SET SignBackStatus='4',BackComment=@BackCommit WHERE POCODE=@POCODE";
  457. SqlParameter[] sp_Detail = {
  458. new SqlParameter("@POCODE",obj.POCode),
  459. new SqlParameter("@BackCommit",obj.EATTRIBUTE6)
  460. };
  461. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
  462. string sqlEmail = @"SELECT DISTINCT c.F_Email,b.VenName from ICSPurchaseOrder(NOLOCK) a
  463. LEFT JOIN dbo.ICSVendor(NOLOCK) b ON a.VenCode=b.VenCode AND a.WorkPoint=b.WorkPoint
  464. LEFT JOIN dbo.Sys_SRM_User(NOLOCK) c ON b.VenCode=c.F_VenCode AND b.WorkPoint=c.F_Location
  465. Where PoCode='{0}'";
  466. sqlEmail = string.Format(sqlEmail, obj.POCode);
  467. DataTable dtEmail = SqlHelper.GetDataTableBySql(sqlEmail);
  468. if (dtEmail.Rows.Count > 0)
  469. {
  470. for (int i = 0; i < dtEmail.Rows.Count; i++)
  471. {
  472. if (!string.IsNullOrWhiteSpace(dtEmail.Rows[i]["F_Email"].ToString()))
  473. {
  474. if (MailOpen == "true")
  475. {
  476. string SendHost = ConfigurationManager.ConnectionStrings["SendHost"].ConnectionString;
  477. string StrSendPort = ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString;
  478. int SendPort = 25;
  479. if (!string.IsNullOrEmpty(StrSendPort))
  480. SendPort = Convert.ToInt32(ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString);
  481. string SendDisplayName = ConfigurationManager.ConnectionStrings["SendDisplayName"].ConnectionString;
  482. string SendAddress = ConfigurationManager.ConnectionStrings["SendAddress"].ConnectionString;
  483. string SendPassword = ConfigurationManager.ConnectionStrings["SendPassword"].ConnectionString;
  484. string TOAddress = dtEmail.Rows[i]["F_Email"].ToString();
  485. string[] Partint = TOAddress.Split(';');
  486. if (!string.IsNullOrEmpty(TOAddress))
  487. {
  488. foreach (var p in Partint)
  489. {
  490. string CCAddress = "";
  491. string Subject = "有来自华恒SRM平台信息";
  492. bool isBodyHtml = false;
  493. string F_RealName = dtEmail.Rows[i]["VenName"].ToString();
  494. //string StarTime = dr["StarTime"].ToString();
  495. string NowDate = DateTime.Now.GetDateTimeFormats('D')[0].ToString();
  496. string body = "尊敬的" + F_RealName + ":";
  497. body += " \r\n 你的采购订单订单:" + obj.POCode + "被回签确认退回,请前往系统查看详情!。";
  498. body += "\r\n";
  499. body += " 顺颂商祺!";
  500. body += "\r\n";
  501. body += " 华恒焊接(昆山)股份有限公司";
  502. body += "\r\n";
  503. body += " " + NowDate;
  504. string StrConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  505. if (!string.IsNullOrEmpty(p.ToString()))
  506. {
  507. try
  508. {
  509. //MailHelper.SendEmail(StrConn, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, p.ToString(), CCAddress, Subject, isBodyHtml, body);
  510. }
  511. catch (Exception ex)
  512. {
  513. throw new Exception("供应商:" + F_RealName + "邮件发送失败! \r\n" + ex.Message);
  514. }
  515. }
  516. }
  517. }
  518. }
  519. }
  520. }
  521. }
  522. }
  523. cmd.Transaction.Commit();
  524. }
  525. catch (Exception ex)
  526. {
  527. cmd.Transaction.Rollback();
  528. throw new Exception(ex.Message);
  529. }
  530. finally
  531. {
  532. if (conn.State == ConnectionState.Open)
  533. {
  534. conn.Close();
  535. }
  536. conn.Dispose();
  537. }
  538. }
  539. catch (Exception ex)
  540. {
  541. throw new Exception(ex.Message);
  542. }
  543. }
  544. }
  545. }