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.

1380 lines
72 KiB

3 days ago
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Linq;
  3. using NFine.Code;
  4. using NFine.Data.Extensions;
  5. using NFine.Domain._03_Entity.SRM;
  6. using NFine.Repository;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Configuration;
  10. using System.Data;
  11. using System.Data.Common;
  12. using System.Data.SqlClient;
  13. using System.IO;
  14. using System.Linq;
  15. using System.Net;
  16. using System.Net.Mail;
  17. using System.Net.Security;
  18. using System.Security.Cryptography.X509Certificates;
  19. using System.Text;
  20. using System.Threading.Tasks;
  21. using NFine.Domain._03_Entity.SRM;
  22. namespace NFine.Application.SRM
  23. {
  24. public class BicDoc_PublishApp : RepositoryFactory<ICSVendor>
  25. {
  26. string GUID = Guid.NewGuid().ToString();
  27. //列表查询
  28. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  29. {
  30. DataTable dt = new DataTable();
  31. var queryParam = queryJson.ToJObject();
  32. List<DbParameter> parameter = new List<DbParameter>();
  33. string sql = @" SELECT
  34. a.ID,
  35. a.BidCode ,
  36. a.BidName ,
  37. a.BidUser UserName ,
  38. a.StarTime ,
  39. a.EndTime ,
  40. a.BidStatus ,
  41. a.BidStatus AS BidStatuss,
  42. a.Remark ,
  43. c.F_RealName UserName1 ,
  44. a.OpenTime ,a.MTIME,
  45. a.WorkPoint,
  46. a.BidTime
  47. FROM ICSBidDoc a
  48. LEFT JOIN Sys_SRM_User b ON a.BidUser=b.F_Account
  49. LEFT JOIN Sys_SRM_User c ON a.Tenders=c.F_Account
  50. WHERE 1=1 and a.Status<>'0' ";
  51. if (!string.IsNullOrWhiteSpace(queryJson))
  52. {
  53. if (!string.IsNullOrWhiteSpace(queryParam["BidCode"].ToString()))
  54. {
  55. sql += " and a.BidCode like '%" + queryParam["BidCode"].ToString() + "%' ";
  56. }
  57. if (!string.IsNullOrWhiteSpace(queryParam["TimeFrom"].ToString()))
  58. {
  59. sql += " and a.StarTime >= '" + queryParam["TimeFrom"].ToString() + "' ";
  60. }
  61. if (!string.IsNullOrWhiteSpace(queryParam["TimeTo"].ToString()))
  62. {
  63. sql += " and a.EndTime <= '" + queryParam["TimeTo"].ToString() + "' ";
  64. }
  65. if (!string.IsNullOrWhiteSpace(queryParam["BidStatus"].ToString()))
  66. {
  67. //if (queryParam["BidStatus"].ToString() == "已结束")
  68. //{
  69. sql += " and a.BidStatus ='" + queryParam["BidStatus"].ToString() + "'";
  70. //}
  71. //else if (queryParam["BidStatus"].ToString() == "已保存" || queryParam["BidStatus"].ToString() == "招标中" || queryParam["BidStatus"].ToString() == "已关闭")
  72. //{
  73. // sql += " and (a.BidStatus ='" + queryParam["BidStatus"].ToString() + "'and a.BidTime IS NOT NULL) ";
  74. //}
  75. //else if (queryParam["BidStatus"].ToString() == "已决标")
  76. //{
  77. // sql += " and (a.BidStatus ='" + queryParam["BidStatus"].ToString() + "' and a.BidTime IS NOT NULL) ";
  78. //}
  79. }
  80. }
  81. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  82. {
  83. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  84. }
  85. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  86. //{
  87. // sql += " and a.SupplierCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  88. //}
  89. sql += " group by a.ID,a.MTIME, a.BidCode ,a.BidName , a.BidUser,a.StarTime ,a.EndTime ,a.BidStatus ,a.Remark , c.F_RealName ,a.OpenTime ,a.WorkPoint,a.BidTime";
  90. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  91. }
  92. //查询招标人列表
  93. public DataTable GetBidUser(string WorkPoint)
  94. {
  95. string ItemCode = string.Empty;
  96. string F_EnCode = string.Empty;
  97. string sqlItem = @"SELECT '' as F_ItemCode,'' as F_ItemName
  98. Union
  99. select F_ItemCode,b.F_ItemName from [dbo].[Sys_SRM_Items] a
  100. LEFT JOIN [dbo].[Sys_SRM_ItemsDetail] b on a.F_Id=b.F_itemID
  101. where F_EnCode like '%{0}%'";
  102. sqlItem = string.Format(sqlItem, WorkPoint);
  103. DataTable table = SqlHelper.GetDataTableBySql(sqlItem);
  104. return table;
  105. }
  106. //获取招标书标的列表
  107. public DataTable GetBidDocBDInfoByCode(string ID, ref Pagination jqgridparam)
  108. {
  109. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  110. DataTable dt = new DataTable();
  111. List<DbParameter> parameter = new List<DbParameter>();
  112. ID = ID.TrimStart('"').TrimEnd('"');
  113. string sql = @" SELECT b.ID ,b.InvCode INVCODE,b.Quantity,b.DeliveryTime,b.RowNO
  114. ,c.INVNAME , c.InvUnit ,case when isnull(b.cCode,'')='' then 'ERP' else '' end as Source,b.Remark,c.InvStd,b.cCode FROM ICSBidDoc a
  115. LEFT JOIN ICSBidDocBD b ON a.BidCode = b.BidCode and b.WorkPoint=b.WorkPoint
  116. left JOIN ICSINVENTORY c on b.InvCode = c.INVCODE and b.WorkPoint=c.WorkPoint
  117. WHERE a.ID= '{0}' and a.WorkPoint in ({1})and b.BidCode !='' ";
  118. sql = string.Format(sql, ID, WorkPoint.TrimEnd(','));
  119. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  120. }
  121. public DataTable GetBidDocBDInfoByBidCode(string BidCode, ref Pagination jqgridparam, string WorkPoint)
  122. {
  123. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  124. DataTable dt = new DataTable();
  125. List<DbParameter> parameter = new List<DbParameter>();
  126. BidCode = BidCode.TrimStart('"').TrimEnd('"');
  127. string sql = @"SELECT a.ID ,a.InvCode INVCODE,a.Quantity,a.DeliveryTime,a.RowNO
  128. ,b.INVNAME , b.INVUOM ,a.Remark,b.InvStd ,
  129. case when isnull(a.cCode,'')='' then 'ERP' else '' end as Source
  130. from ICSBidDocBD a
  131. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.INVCODE and a.WorkPoint=b.WorkPoint
  132. LEFT JOIN ICSBidDoc c ON a.BidCode = c.BidCode and b.WorkPoint=c.WorkPoint
  133. WHERE a.BidCode= '{0}' and a.WorkPoint in ('{1}')";
  134. sql = string.Format(sql, BidCode, WorkPoint);
  135. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  136. }
  137. //获取招标书供应商列表
  138. public DataTable GetBidDocGYSInfoByCode(string ID, ref Pagination jqgridparam, string WorkPoint)
  139. {
  140. DataTable dt = new DataTable();
  141. List<DbParameter> parameter = new List<DbParameter>();
  142. ID = ID.TrimStart('"').TrimEnd('"');
  143. string sql = @"SELECT a.ID,a.SupplierCode cVenCode,b.VenName AS cVenName ,'ERP' Source,a.RowNO--,case when EarnestMoney='1' Then '是'Else'否' End as EarnestMoney
  144. FROM ICSBidDocGYS a
  145. LEFT JOIN ICSVendor b on a.SupplierCode=b.VenCode and a.WorkPoint=b.WorkPoint
  146. LEFT JOIN ICSBidDoc c ON a.BidCode = c.BidCode and b.WorkPoint=c.WorkPoint
  147. WHERE c.ID = '{0}' and a.WorkPoint = '{1}' ";
  148. sql = string.Format(sql, ID, WorkPoint);
  149. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  150. }
  151. //选择物料列表
  152. public DataTable GetItemList(string queryJson, ref Pagination jqgridparam, string WorkPoint)
  153. {
  154. var queryParam = queryJson.ToJObject();
  155. List<DbParameter> parameter = new List<DbParameter>();
  156. string sql = @"SELECT ID,INVCODE ,INVNAME , InvUnit ,'ERP' Source,InvStd
  157. FROM ICSINVENTORY WHERE 1=1 and ISNULL(ClassName,'')!='' ";
  158. if (!string.IsNullOrEmpty(queryJson))
  159. {
  160. if (!string.IsNullOrWhiteSpace(queryParam["INVCODE"].ToString()))
  161. sql += " and INVCODE like '%" + queryParam["INVCODE"].ToString() + "%'";
  162. if (!string.IsNullOrWhiteSpace(queryParam["INVNAME"].ToString()))
  163. sql += " and INVNAME like '%" + queryParam["INVNAME"].ToString() + "%'";
  164. }
  165. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  166. sql += " and WorkPoint=('" + WorkPoint + "')";
  167. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  168. }
  169. //获取主表信息
  170. public DataRow GetFormDetail(string tmpID, string WorkPoint)
  171. {
  172. DataRow dr = null;
  173. string sql = string.Empty;
  174. try
  175. {
  176. sql = @"SELECT * FROM ICSBidDoc
  177. WHERE ID='" + tmpID + "' and WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  178. dr = SqlHelper.GetDataRowBySql(sql);
  179. return dr;
  180. }
  181. catch (Exception ex)
  182. {
  183. throw new Exception(ex.Message);
  184. }
  185. }
  186. //选择供应商列表
  187. public DataTable GetVendorList(string queryJson, ref Pagination jqgridparam, string WorkPoint)
  188. {
  189. var queryParam = queryJson.ToJObject();
  190. List<DbParameter> parameter = new List<DbParameter>();
  191. string sql = @" SELECT DISTINCT VenCode AS cVenCode ,VenName AS cVenName ,'ERP' Source--,case when EarnestMoney='1' Then '是'Else'否' End as EarnestMoney
  192. FROM ICSVendor WHERE 1=1";
  193. if (!string.IsNullOrEmpty(queryJson))
  194. {
  195. if (!string.IsNullOrWhiteSpace(queryParam["cVenCode"].ToString()))
  196. sql += " and VenCode like '%" + queryParam["cVenCode"].ToString() + "%'";
  197. if (!string.IsNullOrWhiteSpace(queryParam["cVenName"].ToString()))
  198. sql += " and VenName like '%" + queryParam["cVenName"].ToString() + "%'";
  199. }
  200. sql += " and WorkPoint in ('" + WorkPoint + "')";
  201. //权限设置
  202. if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
  203. {
  204. sql = SqlHelper.OrganizeByVendor_F_ParentId(sql, NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  205. }
  206. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  207. }
  208. //保存
  209. public void SaveDetail(ICSBicDoc details)
  210. {
  211. string sql = string.Empty;
  212. try
  213. {
  214. List<ICSBidDocBD> list_BD = JsonConvert.DeserializeObject<List<ICSBidDocBD>>(details.arrayBidDocBD);
  215. List<ICSBidDocGYS> list_GYS = JsonConvert.DeserializeObject<List<ICSBidDocGYS>>(details.arrayBidDocGYS);
  216. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  217. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  218. conn.Open();
  219. SqlTransaction sqlTran = conn.BeginTransaction();
  220. SqlCommand cmd = new SqlCommand();
  221. cmd.Transaction = sqlTran;
  222. cmd.Connection = conn;
  223. try
  224. {
  225. string Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  226. string MuserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  227. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  228. sql = "select * from ICSBidDoc where BidCode='" + details.BidCode + "' and ID!='" + details.ID + "' and WorkPoint='" + details.WorkPoint + "'";
  229. DataTable dt = SqlCommandHelper.SQlReturnData(sql, cmd);
  230. if (dt != null && dt.Rows.Count > 0)
  231. {
  232. throw new Exception("招标书编号已存在");
  233. }
  234. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSBidDoc WHERE ID=@ID)
  235. BEGIN
  236. INSERT INTO dbo.ICSBidDoc
  237. ( ID, BidCode, BidName, BidUser, StarTime, EndTime, BidStatus, BidType, Remark,
  238. LogTime, LogUser, WorkPoint, MUSER, MUSERName, MTIME,Status)
  239. VALUES ( @ID, @BidCode, @BidName , @BidUser , @StarTime , @EndTime , @BidStatus , @BidType , @Remark ,
  240. getdate() , @LogUser , @WorkPoint ,@MUSER , @MUSERName , getdate(),@Status)
  241. INSERT INTO dbo.ICSBidLog
  242. ( ID, BidCode, LogType, LogDes, LogTime, LogUser, WorkPoint, MUSER, MUSERName, MTIME )
  243. VALUES ( newid(), @BidCode, '' , '-' , getdate() , @LogUser , @WorkPoint ,@MUSER , @MUSERName , getdate())
  244. END
  245. ELSE
  246. BEGIN
  247. UPDATE dbo.ICSBidDoc SET
  248. BidCode=@BidCode , BidName=@BidName ,BidUser=@BidUser, StarTime=@StarTime , EndTime=@EndTime , Remark=@Remark ,
  249. BidStatus=@BidStatus, BidType=@BidType , LogUser=@LogUser , LogTime=GETDATE(),Status=@Status WHERE ID=@ID
  250. INSERT INTO dbo.ICSBidLog
  251. ( ID, BidCode, LogType, LogDes, LogTime, LogUser, WorkPoint, MUSER, MUSERName, MTIME )
  252. VALUES ( newid(), @BidCode, '' , '-' , getdate() , @LogUser , @WorkPoint ,@MUSER , @MUSERName , getdate())
  253. END";
  254. SqlParameter[] sp_Detail = {
  255. new SqlParameter("@ID",details.ID),
  256. new SqlParameter("@BidCode",details.BidCode),
  257. new SqlParameter("@BidName",details.BidName),
  258. new SqlParameter("@BidUser",details.BidUser),
  259. new SqlParameter("@StarTime",details.StarTime),
  260. new SqlParameter("@EndTime",details.EndTime),
  261. //new SqlParameter("@ZTBCount",details.ZTBCount),
  262. new SqlParameter("@BidStatus","已保存"),
  263. new SqlParameter("@BidType","企业"),
  264. new SqlParameter("@Remark",details.Remark),
  265. new SqlParameter("@LogUser",Muser),
  266. new SqlParameter("@WorkPoint",details.WorkPoint),
  267. new SqlParameter("@Status","1"),
  268. new SqlParameter("@MUSER",Muser),
  269. new SqlParameter("@MUSERName",MuserName)
  270. };
  271. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
  272. #region 标的
  273. foreach (ICSBidDocBD BD in list_BD)
  274. {
  275. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSBidDocBD WHERE BidCode=@BidCode and InvCode=@InvCode)
  276. BEGIN
  277. INSERT INTO dbo.ICSBidDocBD( ID, BidCode, InvCode, ItemType, Remark, Quantity, DeliveryTime, RowNo,
  278. WorkPoint, MUSER, MUSERName, MTIME,cCode)
  279. VALUES ( @ID, @BidCode, @InvCode, @ItemType, @Remark, @Quantity, @DeliveryTime, @RowNo,
  280. @WorkPoint, @MUSER, @MUSERName, GETDATE(),@cCode)
  281. --UPDATE ICSPU_AppVouch SET BidCode=@BidCode WHERE cCode=@cCode and cInvCode=@InvCode and WorkPoint=@WorkPoint
  282. END
  283. ELSE
  284. BEGIN
  285. UPDATE dbo.ICSBidDocBD SET BidCode=@BidCode,InvCode=@InvCode,ItemType=@ItemType,
  286. Remark=@Remark,Quantity=@Quantity , DeliveryTime=@DeliveryTime,RowNo=@RowNo,cCode=@cCode
  287. WHERE ID=@ID
  288. --UPDATE ICSPU_AppVouch SET BidCode=@BidCode WHERE cCode=@cCode and cInvCode=@InvCode and WorkPoint=@WorkPoint
  289. END";
  290. SqlParameter[] sp_BD = {
  291. new SqlParameter("@ID",BD.ID),
  292. new SqlParameter("@BidCode",details.BidCode),
  293. new SqlParameter("@InvCode",BD.InvCode),
  294. new SqlParameter("@ItemType",BD.ItemType),
  295. new SqlParameter("@Remark",BD.Remark),
  296. new SqlParameter("@Quantity",BD.Quantity),
  297. new SqlParameter("@DeliveryTime",BD.DeliveryTime),
  298. new SqlParameter("@RowNo",BD.RowNo),
  299. new SqlParameter("@WorkPoint",details.WorkPoint),
  300. new SqlParameter("@MUSER",Muser),
  301. new SqlParameter("@MUSERName",MuserName),
  302. new SqlParameter("@cCode",BD.cCode)
  303. };
  304. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_BD, cmd);
  305. }
  306. #endregion
  307. #region 临时物料
  308. foreach (ICSBidDocBD BD in list_BD)
  309. {
  310. if (BD.Source == "手工")
  311. {
  312. sql = @"INSERT INTO dbo.ICSINVENTORY
  313. (
  314. ID
  315. ,INVCODE
  316. ,INVNAME
  317. ,InvUnit
  318. ,INVSTD
  319. ,ClassCode
  320. ,ClassName
  321. ,MUSER
  322. ,MUSERName
  323. ,MTIME
  324. ,WorkPoint
  325. )
  326. VALUES (
  327. @ID
  328. ,@INVCODE
  329. ,@INVNAME
  330. ,@InvUnit
  331. ,@INVSTD
  332. ,@ClassCode
  333. ,@ClassName
  334. ,@MUSER
  335. ,@MUSERName
  336. ,Getdate()
  337. ,@WorkPoint
  338. )
  339. ";
  340. SqlParameter[] sp_INv = {
  341. new SqlParameter("@ID",BD.ID),
  342. new SqlParameter("@INVCODE",BD.InvCode),
  343. new SqlParameter("@INVNAME",BD.INVNAME),
  344. new SqlParameter("@InvUnit",BD.INVUOM),
  345. new SqlParameter("@INVSTD",BD.InvStd),
  346. //new SqlParameter("@INVTYPE","生产类型"),
  347. new SqlParameter("@ClassCode","生产类型"),
  348. new SqlParameter("@ClassName","生产类型"),
  349. new SqlParameter("@WorkPoint",details.WorkPoint),
  350. new SqlParameter("@MUSER",Muser),
  351. new SqlParameter("@MUSERName",MuserName),
  352. //new SqlParameter("@WorkPoint",BD.cCode)
  353. };
  354. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_INv, cmd);
  355. }
  356. }
  357. #endregion
  358. #region 供应商
  359. foreach (ICSBidDocGYS GYS in list_GYS)
  360. {
  361. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSBidDocGYS WHERE ID=@ID)
  362. BEGIN
  363. INSERT INTO dbo.ICSBidDocGYS (ID, BidCode, SupplierCode, RowNo, ResultConfirmed, WorkPoint, MUSER, MUSERName, MTIME )
  364. VALUES (@ID, @BidCode, @SupplierCode, @RowNo, @ResultConfirmed, @WorkPoint, @MUSER, @MUSERName,GETDATE())
  365. END
  366. ELSE
  367. BEGIN
  368. UPDATE dbo.ICSBidDocGYS SET BidCode=@BidCode, SupplierCode=@SupplierCode, RowNo=@RowNo,
  369. ResultConfirmed=@ResultConfirmed WHERE ID=@ID
  370. END";
  371. SqlParameter[] sp_GYS = {
  372. new SqlParameter("@ID",GYS.ID),
  373. new SqlParameter("@BidCode",details.BidCode),
  374. new SqlParameter("@SupplierCode",GYS.SupplierCode),
  375. new SqlParameter("@RowNo",GYS.RowNo),
  376. new SqlParameter("@ResultConfirmed",GYS.ResultConfirmed),
  377. new SqlParameter("@WorkPoint",details.WorkPoint),
  378. new SqlParameter("@MUSER",Muser),
  379. new SqlParameter("@MUSERName",MuserName),
  380. };
  381. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_GYS, cmd);
  382. //投标信息
  383. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSBidInfo WHERE BidCode=@BidCode and SupplierCode=@SupplierCode)
  384. BEGIN
  385. INSERT INTO dbo.ICSBidInfo (ID, BidCode, SupplierCode, IsSub, WorkPoint, MUSER, MUSERName, MTIME)
  386. VALUES (@ID, @BidCode, @SupplierCode, 0, @WorkPoint, @MUSER, @MUSERName,GETDATE())
  387. END
  388. ELSE
  389. BEGIN
  390. UPDATE dbo.ICSBidInfo SET BidCode=@BidCode, SupplierCode=@SupplierCode, IsSub=0 WHERE BidCode=@BidCode and SupplierCode=@SupplierCode
  391. END";
  392. SqlParameter[] sp_BidInfo = {
  393. new SqlParameter("@ID",GYS.ID),
  394. //new SqlParameter("@TBCount",details.ZTBCount),
  395. new SqlParameter("@BidCode",details.BidCode),
  396. new SqlParameter("@SupplierCode",GYS.SupplierCode),
  397. new SqlParameter("@WorkPoint",details.WorkPoint),
  398. new SqlParameter("@MUSER",Muser),
  399. new SqlParameter("@MUSERName",MuserName),
  400. };
  401. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_BidInfo, cmd);
  402. #region 是否付定金
  403. //sql = @"Update ICSVendor set EarnestMoney=@EarnestMoney Where cVenCode=@VenCode ";
  404. //SqlParameter[] paras = new SqlParameter[]
  405. // {
  406. // new SqlParameter("@EarnestMoney",SqlDbType.NVarChar),
  407. // new SqlParameter("@VenCode", SqlDbType.NVarChar)
  408. // };
  409. //paras[0].Value = GYS.IsDid;
  410. //paras[1].Value = GYS.VenCode;
  411. //SqlCommandHelper.CmdExecuteNonQuery(sql, paras, cmd);
  412. #endregion
  413. }
  414. #endregion
  415. cmd.Transaction.Commit();
  416. }
  417. catch (Exception ex)
  418. {
  419. cmd.Transaction.Rollback();
  420. throw new Exception(ex.Message);
  421. }
  422. finally
  423. {
  424. if (conn.State == ConnectionState.Open)
  425. {
  426. conn.Close();
  427. }
  428. conn.Dispose();
  429. }
  430. }
  431. catch (Exception ex)
  432. {
  433. throw new Exception(ex.Message);
  434. }
  435. }
  436. //开标
  437. public int UpDateByDocNo(string ID, string BidCode, string WorkPoint)
  438. {
  439. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  440. string MUSERName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  441. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  442. ID = ID.TrimStart('"').TrimEnd('"').TrimEnd(',');
  443. BidCode = BidCode.TrimStart('"').TrimEnd('"').TrimEnd(',');
  444. string MailOpen = ConfigurationManager.ConnectionStrings["MailOpen"].ConnectionString;
  445. if (MailOpen == "true")
  446. {
  447. string SendHost = ConfigurationManager.ConnectionStrings["SendHost"].ConnectionString;
  448. string StrSendPort = ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString;
  449. int SendPort = 25;
  450. if (!string.IsNullOrEmpty(StrSendPort))
  451. SendPort = Convert.ToInt32(ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString);
  452. string SendDisplayName = ConfigurationManager.ConnectionStrings["SendDisplayName"].ConnectionString;
  453. string SendAddress = ConfigurationManager.ConnectionStrings["SendAddress"].ConnectionString;
  454. string SendPassword = ConfigurationManager.ConnectionStrings["SendPassword"].ConnectionString;
  455. string sqlEmail = @"SELECT SupplierCode,c.F_Email,c.F_RealName,a.StarTime,a.EndTime,a.BidCode FROM ICSBidDoc a
  456. LEFT JOIN ICSBidInfo b ON b.BidCode=a.BidCode and a.WorkPoint=b.WorkPoint
  457. LEFT JOIN SYS_SRM_USER c ON b.SupplierCode=c.F_VenCode AND b.WorkPoint=c.F_location
  458. WHERE a.BIdCode=" + BidCode + " and a.WorkPoint='" + WorkPoint + "'";
  459. DataTable dt = SqlHelper.GetDataTableBySql(sqlEmail);
  460. foreach (DataRow dr in dt.Rows)
  461. {
  462. string cVenCode = dr["SupplierCode"].ToString();
  463. string TOAddress = dr["F_Email"].ToString();
  464. string[] Partint = TOAddress.Split(';');
  465. if (!string.IsNullOrEmpty(TOAddress))
  466. {
  467. foreach (var p in Partint)
  468. {
  469. string CCAddress = "";
  470. string Subject = "有来自佑伦SRM平台新发布的标书信息";
  471. bool isBodyHtml = false;
  472. string F_RealName = dr["F_RealName"].ToString();
  473. //string StarTime = dr["StarTime"].ToString();
  474. string EndTime = dr["EndTime"].ToString();
  475. string BidCodeName = dr["BidCode"].ToString();
  476. string NowDate = DateTime.Now.GetDateTimeFormats('D')[0].ToString();
  477. string body = F_RealName + ":";
  478. body += "\r\n";
  479. body += " \r\n\r\n\r\n 您有一个 招投书 待投标 ,招标书编号:" + BidCodeName + ",投标截止时间:" + EndTime + ",请尽快登录SRM进行投标!";
  480. body += "\r\n";
  481. body += " 顺颂商祺!";
  482. body += "\r\n";
  483. body += " 佑伦真空设备科技有限公司";
  484. body += "\r\n";
  485. body += " " + NowDate;
  486. string StrConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  487. if (!string.IsNullOrEmpty(TOAddress))
  488. {
  489. try
  490. {
  491. SendEmail(StrConn, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, p.ToString(), CCAddress, Subject, isBodyHtml, body);
  492. }
  493. catch (Exception ex)
  494. {
  495. throw new Exception("供应商:" + cVenCode + "邮件发送失败! \r\n" + ex.Message);
  496. }
  497. }
  498. }
  499. }
  500. }
  501. }
  502. string sql = string.Empty;
  503. sql = @"UPDATE dbo.ICSBidDoc SET OpenTime=GETDATE() ,
  504. Tenders='{0}', BidStatus='' , LogUser='{0}' , LogTime=GETDATE() WHERE ID in ({1})
  505. INSERT INTO dbo.ICSBidLog
  506. ( ID, BidCode, LogType, LogDes, LogTime, LogUser, WorkPoint, MUSER, MUSERName, MTIME )
  507. SELECT newid(), BidCode, '', '-', GETDATE(), '{0}', '{3}', '{0}', '{4}', GETDATE()
  508. FROM ICSBidLog WHERE BidCode in ({2}) and LogDes='-'";
  509. sql = string.Format(sql, MUSER, ID, BidCode, WorkPoint, MUSERName);
  510. return SqlHelper.ExecuteNonQuery(sql);
  511. }
  512. public static void SendEmail(string ConnectionString, string SendHost, int SendPort, string SendDisplayName, string SendAddress, string SendPassword, string TOAddress, string CCAddress, string Subject, bool IsBodyHtml, string Body)
  513. {
  514. try
  515. {
  516. SmtpClient smtpClient = new SmtpClient
  517. {
  518. //EnableSsl = false,
  519. UseDefaultCredentials = false,
  520. Host = SendHost,
  521. Port = SendPort,
  522. Credentials = new NetworkCredential(SendAddress, SendPassword)
  523. };
  524. MailMessage mailMessage = new MailMessage
  525. {
  526. Subject = Subject,
  527. SubjectEncoding = Encoding.GetEncoding("utf-8"),
  528. BodyEncoding = Encoding.GetEncoding("utf-8"),
  529. From = new MailAddress(SendAddress, SendDisplayName),
  530. IsBodyHtml = IsBodyHtml,
  531. Body = Body
  532. };
  533. string[] array = TOAddress.Split(new char[]
  534. {
  535. ','
  536. });
  537. string[] array2 = array;
  538. for (int i = 0; i < array2.Length; i++)
  539. {
  540. string text = array2[i];
  541. if (!string.IsNullOrEmpty(text))
  542. {
  543. mailMessage.To.Add(text);
  544. }
  545. }
  546. string[] array3 = CCAddress.Split(new char[]
  547. {
  548. ','
  549. });
  550. array2 = array3;
  551. for (int i = 0; i < array2.Length; i++)
  552. {
  553. string text2 = array2[i];
  554. if (!string.IsNullOrEmpty(text2))
  555. {
  556. mailMessage.CC.Add(text2);
  557. }
  558. }
  559. ServicePointManager.ServerCertificateValidationCallback = ((object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) => true);
  560. smtpClient.Send(mailMessage);
  561. // InsertData(ConnectionString, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, TOAddress, CCAddress, Subject, IsBodyHtml, Body, "1", null);
  562. }
  563. catch (Exception ex)
  564. {
  565. //InsertData(ConnectionString, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, TOAddress, CCAddress, Subject, IsBodyHtml, Body, "2", ex.Message);
  566. throw;
  567. }
  568. }
  569. //删除招标书
  570. public string DeleteBidDoc(string BidCode, string WorkPoint)
  571. {
  572. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  573. string MUSERName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  574. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  575. BidCode = BidCode.TrimStart('"').TrimEnd('"').TrimEnd(',');
  576. string sql = string.Empty;
  577. sql = @"INSERT INTO dbo.ICSBidLog
  578. ( ID, BidCode, LogType, LogDes, LogTime, LogUser, WorkPoint, MUSER, MUSERName, MTIME )
  579. SELECT newid(), BidCode, '', '-', GETDATE(), '{0}', '{2}', '{0}', '{3}', GETDATE()
  580. FROM ICSBidLog WHERE BidCode in ({1}) and LogDes='-'
  581. delete FROM ICSBidInfo where BidCode in ({1})
  582. delete FROM ICSBidDocBD where BidCode in ({1})
  583. delete FROM ICSBidDocGYS where BidCode in ({1})
  584. delete FROM ICSBidDoc where BidCode in ({1})
  585. delete FROM ICSPU_AppVouch where BidCode in ({1})";
  586. sql = string.Format(sql, MUSER, BidCode, WorkPoint, MUSERName);
  587. string msg = "";
  588. try
  589. {
  590. SqlHelper.ExecuteNonQuery(sql);
  591. }
  592. catch (Exception ex)
  593. {
  594. msg = ex.Message;
  595. }
  596. return msg;
  597. }
  598. //关闭
  599. public int CloseBidding(string ID, string BidCode, string WorkPoint)
  600. {
  601. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  602. string MUSERName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  603. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  604. ID = ID.TrimStart('"').TrimEnd('"').TrimEnd(',');
  605. BidCode = BidCode.TrimStart('"').TrimEnd('"').TrimEnd(',');
  606. string sql = string.Empty;
  607. sql = @"UPDATE dbo.ICSBidDoc SET OpenTime=GETDATE() ,
  608. Tenders='{0}', BidStatus='' , LogUser='{0}' , LogTime=GETDATE() WHERE ID in ({1})
  609. update ICSBidInfo set IsLock=0 where BidCode in ({2})
  610. INSERT INTO dbo.ICSBidLog
  611. ( ID, BidCode, LogType, LogDes, LogTime, LogUser, WorkPoint, MUSER, MUSERName, MTIME )
  612. SELECT newid(), BidCode, '', '-', GETDATE(), '{0}', '{3}', '{0}', '{4}', GETDATE()
  613. FROM ICSBidLog WHERE BidCode in ({2}) and LogDes='-'";
  614. sql = string.Format(sql, MUSER, ID, BidCode, WorkPoint, MUSERName);
  615. return SqlHelper.ExecuteNonQuery(sql);
  616. }
  617. /// <summary>
  618. /// 删除招标书供应商数据
  619. /// </summary>
  620. /// <param name="keyValue"></param>
  621. /// <returns></returns>
  622. public string DeleteSup(string ID, string WorkPoint)
  623. {
  624. ID = ID.TrimStart('"').TrimEnd('"').TrimEnd(',');
  625. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  626. string msg = "";
  627. string sql = string.Format(@"DELETE
  628. FROM dbo.ICSBidDocGYS
  629. WHERE ID IN ('{0}') and WorkPoint ='{1}' ", ID, WorkPoint);
  630. try
  631. {
  632. SqlHelper.ExecuteNonQuery(sql);
  633. }
  634. catch (Exception ex)
  635. {
  636. msg = ex.Message;
  637. }
  638. return msg;
  639. }
  640. /// <summary>
  641. /// 删除招标书供应商数据
  642. /// </summary>
  643. /// <param name="keyValue"></param>
  644. /// <returns></returns>
  645. public string DeleteBD(string ID, string WorkPoint)
  646. {
  647. //ID = ID.TrimStart('"').TrimEnd('"').TrimEnd(',');
  648. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  649. string msg = "";
  650. string sql = string.Format(@"DELETE
  651. FROM dbo.ICSBidDocBD
  652. WHERE ID IN ('{0}') and WorkPoint ='{1}' ", ID, WorkPoint);
  653. try
  654. {
  655. SqlHelper.ExecuteNonQuery(sql);
  656. }
  657. catch (Exception ex)
  658. {
  659. msg = ex.Message;
  660. }
  661. return msg;
  662. }
  663. /// <summary>
  664. /// 上传招标文件
  665. /// </summary>
  666. /// <param name="keyValue"></param>
  667. /// <returns></returns>
  668. public int UpLoadFile(string FilePath, string FileName, string BidCode, string ID)
  669. {
  670. DataTable dt = new DataTable();
  671. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  672. string sql = "";
  673. sql += string.Format(@"update ICSBidDoc set FileName='{0}'
  674. where ID='{1}'",
  675. FilePath, ID);
  676. sql += "\r\n";
  677. StringBuilder Str = new StringBuilder(sql);
  678. return Repository().ExecuteBySql(Str);
  679. }
  680. public string ISHave(string InvCode)
  681. {
  682. string sql = @"SELECT * FROM ICSInventory WHERE InvCode='" + InvCode + "'";
  683. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  684. if (dt != null && dt.Rows.Count > 0)
  685. {
  686. return "0";
  687. }
  688. else
  689. {
  690. return "1";
  691. }
  692. }
  693. public string SetData_PR(String savePath, string ID, string BidCode, string WorkPoint)
  694. {
  695. string msg = "";
  696. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  697. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  698. conn.Open();
  699. SqlTransaction sqlTran = conn.BeginTransaction();
  700. SqlCommand cmd = new SqlCommand();
  701. cmd.Transaction = sqlTran;
  702. cmd.Connection = conn;
  703. //数据获取
  704. try
  705. {
  706. if (BidCode != "")
  707. {
  708. string sqls = "Delete ICSBidDocBD Where BidCode='" + BidCode + "'";
  709. int count = SqlHelper.ExecuteNonQuery(sqls);
  710. }
  711. string Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  712. string MuserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  713. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  714. string sql = "";
  715. int rowNO = 0;
  716. DataTable data = FileToExcel.ExcelToTable(savePath);
  717. var parent = data.DefaultView.ToTable(true, "物料编码", "物料名称", "计划采购数量", "单位", "交期", "备注");
  718. foreach (DataRow dr in parent.Rows)
  719. {
  720. rowNO = rowNO + 1;
  721. string GUID = Guid.NewGuid().ToString();
  722. if (string.IsNullOrWhiteSpace(dr["物料编码"].ToString()))
  723. throw new Exception("物料编码不能为空!");
  724. if (string.IsNullOrWhiteSpace(dr["物料名称"].ToString()))
  725. throw new Exception("物料名称不能为空!");
  726. if (string.IsNullOrWhiteSpace(dr["计划采购数量"].ToString()))
  727. throw new Exception("计划采购数量不能为空!");
  728. if (string.IsNullOrWhiteSpace(dr["单位"].ToString()))
  729. throw new Exception("单位不能为空!");
  730. if (string.IsNullOrWhiteSpace(dr["交期"].ToString()))
  731. throw new Exception("交期不能为空!");
  732. string ishave = ISHave(dr["物料编码"].ToString());
  733. if (ishave == "1")
  734. {
  735. msg += "物料" + dr["物料编码"].ToString() + "不存在!";
  736. continue;
  737. }
  738. else
  739. {
  740. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSBidDocBD WHERE ID=@ID)
  741. BEGIN
  742. INSERT INTO dbo.ICSBidDocBD( ID, BidCode, InvCode, ItemType, Remark, Quantity, DeliveryTime, RowNo,
  743. WorkPoint, MUSER, MUSERName, MTIME)
  744. VALUES ( @ID, @BidCode, @InvCode, @ItemType, @Remark, @Quantity, @DeliveryTime, @RowNo,
  745. @WorkPoint, @MUSER, @MUSERName, GETDATE())
  746. END
  747. ELSE
  748. BEGIN
  749. UPDATE dbo.ICSBidDocBD SET BidCode=@BidCode,InvCode=@InvCode,ItemType=@ItemType,
  750. Remark=@Remark,Quantity=@Quantity , DeliveryTime=@DeliveryTime,RowNo=@RowNo
  751. WHERE ID=@ID
  752. END";
  753. SqlParameter[] sp_BD = {
  754. new SqlParameter("@ID",GUID),
  755. new SqlParameter("@BidCode",BidCode),
  756. new SqlParameter("@InvCode",dr["物料编码"].ToString()),
  757. new SqlParameter("@ItemType",""),
  758. new SqlParameter("@Remark",dr["备注"].ToString()),
  759. new SqlParameter("@Quantity",dr["计划采购数量"].ToString()),
  760. new SqlParameter("@DeliveryTime",dr["交期"].ToString()),
  761. new SqlParameter("@RowNo",rowNO),
  762. new SqlParameter("@WorkPoint",WorkPoint),
  763. new SqlParameter("@MUSER",Muser),
  764. new SqlParameter("@MUSERName",MuserName),
  765. //sql += "Insert Into ICSFManger Values('{0}','{1}','{2}','{3}','{4}','','{9}',CONVERT(varchar(100), '{10}', 23))";
  766. //DataRow[] drs = data.Select("供应商编码+供应商名称+物料编码+物料名称='" + dr["供应商编码"].ToString() + dr["供应商名称"].ToString() + dr["物料编码"].ToString() + dr["物料名称"].ToString() + "'");
  767. //foreach (DataRow de in drs)
  768. //{
  769. // foreach (DataColumn dc in data.Columns)
  770. // {
  771. // if (dc.Caption == "供应商编码" || dc.Caption == "供应商名称" || dc.Caption == "物料编码" || dc.Caption == "物料名称" || dc.Caption == "交货量" || dc.Caption == "排程日期")
  772. // continue;
  773. // sql += @"Insert INto ICSFMangerDetail Values ('{5}','{6}','','{7}',{8},CONVERT(varchar(100), '{10}', 23),'{9}')";
  774. // sql = string.Format(sql, GUID, dr["供应商编码"].ToString(), dr["供应商名称"].ToString(), dr["物料编码"].ToString(), dr["物料名称"].ToString(), GUID, dc.Caption, de["交货量"].ToString(), de[dc.Caption].ToString(), MUSERNAME, DateTime.Now);
  775. // }
  776. //}
  777. };
  778. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_BD, cmd);
  779. }
  780. }
  781. cmd.Transaction.Commit();
  782. msg += "导入成功";
  783. }
  784. catch (Exception ex)
  785. {
  786. throw new Exception("" + ex.Message + "!");
  787. }
  788. finally
  789. {
  790. if (conn.State == ConnectionState.Open)
  791. {
  792. conn.Close();
  793. }
  794. conn.Dispose();
  795. }
  796. return msg;
  797. }
  798. public string InsertID(string ID,string WorkPoints)
  799. {
  800. string Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  801. string MuserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  802. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  803. string sql = @" INSERT INTO dbo.ICSBidDoc
  804. ( ID, BidCode, BidName, BidUser, StarTime, EndTime, BidStatus, BidType, Remark,
  805. LogTime, LogUser, WorkPoint, MUSER, MUSERName, MTIME,Status )
  806. VALUES ( '" + ID + "', '', '' ,'','' , '' , '' , '', '' , getdate() , '' , "+ WorkPoint.Trim(',') + ", '" + Muser + "' , '" + MuserName + "', getdate(),0)";
  807. int count = SqlHelper.ExecuteNonQuery(sql);
  808. return ID;
  809. }
  810. public DataTable GetSubGridJsonBid(string queryJson, ref Pagination jqgridparam, string WorkPoint)
  811. {
  812. DataTable dt = new DataTable();
  813. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  814. List<DbParameter> parameter = new List<DbParameter>();
  815. string sql = @" SELECT a.ID,b.INVCODE, b.INVNAME AS InvName,b.INVStd AS InvStd,b.INVUOM AS Unit,a.Quantity ,a.DeliveryTime,'ERP'as Source,a.ENTTRIBUTE1,d.cVenCode,d.cVenName
  816. FROM ICSBidDocBD a
  817. LEFT JOIN ICSInventory b ON a.InvCode = b.INVCODE and a.WorkPoint=b.WorkPoint
  818. left join ICSBidDocGYS c on a.BidCode=c.BidCode and b.WorkPoint=c.WorkPoint
  819. LEFT JOIN ICSVendor d on c.SupplierCode=d.cVenCode and c.WorkPoint=d.WorkPoint
  820. WHERE a.BidCode = '{0}' and a.WorkPoint = ({1})";
  821. sql = string.Format(sql, queryJson, WorkPoint);
  822. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  823. }
  824. /// <summary>
  825. /// 请购单信息
  826. /// </summary>
  827. /// <param name="queryJson"></param>
  828. /// <param name="jqgridparam"></param>
  829. /// <param name="WorkPoint"></param>
  830. /// <returns></returns>
  831. public DataTable GetBicDocByPU(string queryJson, ref Pagination jqgridparam, string WorkPoint)
  832. {
  833. var queryParam = queryJson.ToJObject();
  834. List<DbParameter> parameter = new List<DbParameter>();
  835. DataTable dt = new DataTable();
  836. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  837. string sql = @" SELECT
  838. ''as Source,
  839. ID,
  840. cCode,
  841. ivouchrowno,
  842. CONVERT(NVARCHAR(20),dDate,23) AS dDate,
  843. cInvCode,
  844. cInvName,
  845. cInvStd,
  846. INVUOM,
  847. CONVERT(NVARCHAR(20),dRequirDate,23) AS dRequirDate,
  848. CONVERT(NVARCHAR(20),dArriveDate,23) AS dArriveDate,
  849. fQuantity,
  850. WorkPoint,
  851. Free1
  852. FROM dbo.ICSPU_AppVouch WHERE BidCode is NUll ";
  853. if (!string.IsNullOrWhiteSpace(queryJson))
  854. {
  855. if (!string.IsNullOrWhiteSpace(queryParam["cCode"].ToString()))
  856. {
  857. sql += " and cCode like '%" + queryParam["cCode"].ToString() + "%' ";
  858. }
  859. if (!string.IsNullOrWhiteSpace(queryParam["BegiondDate"].ToString()))
  860. {
  861. sql += " and dDate >= '" + queryParam["BegiondDate"].ToString() + "' ";
  862. }
  863. if (!string.IsNullOrWhiteSpace(queryParam["EnddDate"].ToString()))
  864. {
  865. sql += " and dDate <= '" + queryParam["EnddDate"].ToString() + "' ";
  866. }
  867. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  868. {
  869. sql += " and cInvCode ='" + queryParam["InvCode"].ToString() + "' ";
  870. }
  871. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  872. {
  873. sql += " and cInvName ='" + queryParam["InvName"].ToString() + "' ";
  874. }
  875. if (!string.IsNullOrWhiteSpace(WorkPoint))
  876. {
  877. sql += " and WorkPoint ='" + WorkPoint + "' ";
  878. }
  879. }
  880. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  881. }
  882. public DataTable GetWorkPointByUser()
  883. {
  884. DataRow dr = null;
  885. string sql = string.Empty;
  886. string Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  887. try
  888. {
  889. sql = @"SELECT F_Location FROM sys_SRM_USer
  890. WHERE F_Account='" + Muser + "'";
  891. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  892. return dt;
  893. }
  894. catch (Exception ex)
  895. {
  896. throw new Exception(ex.Message);
  897. }
  898. }
  899. public string GetBidCode(string WorkPoint, string Vendor)
  900. {
  901. string BidCide = string.Empty;
  902. string sqlGetBidCide = @"SELECT a.F_ItemCode,a.F_ItemName,a.F_Description FROM Sys_SRM_ItemsDetail a
  903. LEFT JOIN Sys_SRM_Items b ON a.F_ItemId = b.F_Id
  904. WHERE b.F_EnCode = 'ZTBGZ01'";
  905. if (!string.IsNullOrWhiteSpace(WorkPoint))
  906. {
  907. sqlGetBidCide += "and a.F_ItemCode='" + WorkPoint + "'";
  908. }
  909. DataTable dtGetBidCide = SqlHelper.GetDataTableBySql(sqlGetBidCide);
  910. if (dtGetBidCide.Rows.Count <= 0 || dtGetBidCide.Rows[0]["F_Description"].ToString() == null)
  911. {
  912. throw new Exception("请先维护数据字典!");
  913. }
  914. string F_Description = dtGetBidCide.Rows.Count <= 0 || dtGetBidCide.Rows[0]["F_Description"].ToString() == null ? "" : dtGetBidCide.Rows[0]["F_Description"].ToString();
  915. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  916. if (!string.IsNullOrEmpty(WorkPoint))
  917. {
  918. string Date = DateTime.Now.ToString("yyyy");
  919. string Muoth = DateTime.Now.ToString("MM");
  920. string Day = DateTime.Now.ToString("dd");
  921. string Pre = F_Description + Date + Muoth + Day;
  922. BidCide = GetSerialCode(WorkPoint, "ICSBidDoc", "BidCode", Pre, 2);
  923. }
  924. if (!string.IsNullOrWhiteSpace(BidCide))
  925. {
  926. string sqlISHave = @"SELECT BidCode FROM ICSBidDoc a
  927. WHERE a.BidCode = '{0}'";
  928. sqlISHave = string.Format(sqlISHave, BidCide);
  929. DataTable dtIsHave = SqlHelper.GetDataTableBySql(sqlISHave);
  930. if (dtIsHave.Rows.Count > 0)
  931. {
  932. throw new Exception("标书已存在!");
  933. }
  934. }
  935. return BidCide;
  936. }
  937. public string GetBidItemCode(string WorkPoint, string Vendor)
  938. {
  939. string BidItemCode = string.Empty;
  940. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  941. if (!string.IsNullOrEmpty(WorkPoint))
  942. {
  943. string Date = DateTime.Now.ToString("yy");
  944. string Muoth = DateTime.Now.ToString("MM");
  945. string Day = DateTime.Now.ToString("dd");
  946. string Pre = "SRM" + WorkPoint;
  947. BidItemCode = GetSerialCode(WorkPoint, "ICSBidDoc", "BidCode", Pre, 5);
  948. }
  949. if (!string.IsNullOrWhiteSpace(BidItemCode))
  950. {
  951. string sqlISHave = @"SELECT InvCode FROM ICSINVENTORY a
  952. WHERE a.InvCode = '{0}'";
  953. sqlISHave = string.Format(sqlISHave, BidItemCode);
  954. DataTable dtIsHave = SqlHelper.GetDataTableBySql(sqlISHave);
  955. if (dtIsHave.Rows.Count > 0)
  956. {
  957. throw new Exception("正式物料已存在!");
  958. }
  959. }
  960. return BidItemCode;
  961. }
  962. public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  963. {
  964. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  965. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  966. return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  967. }
  968. public string SubmitOARejict(string BidCode, string WorkPoint)
  969. {
  970. string sql = "";
  971. string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  972. string msg = "";
  973. DataTable dt = new DataTable();
  974. var reqInterNme = "http://172.16.8.33/seeyon/rest/token/SRMTEST/25eba5c2-95e9-4bf8-92f5-0f42595255ba?loginName="+UserCode;
  975. var responseStr = httpGet(reqInterNme);
  976. try
  977. {
  978. string Pre = "HH-SRM" + WorkPoint;
  979. string BIDCodes = GetSerialCode(WorkPoint, "ICSBidDoc", "code", Pre, 3);
  980. //JObject res = (JObject)JsonConvert.DeserializeObject(dtsql.Rows[0]["searchKey"].ToString());
  981. JObject res = (JObject)JsonConvert.DeserializeObject(responseStr);
  982. string ID = res["id"].ToString();//获取Tockn
  983. JObject resultbidUser = (JObject)JsonConvert.DeserializeObject(res["bindingUser"].ToString());
  984. string id = resultbidUser["id"].ToString(); //用户ID
  985. string departmentId = resultbidUser["departmentId"].ToString(); //部门ID
  986. string postId = resultbidUser["postId"].ToString(); //岗位ID
  987. //string Message = res["Message"].ToString();
  988. if (!string.IsNullOrWhiteSpace(ID))
  989. {
  990. NFine.Domain._03_Entity.SRM.ICSBidDocOA.thirdAttachments ths = new NFine.Domain._03_Entity.SRM.ICSBidDocOA.thirdAttachments();
  991. List<NFine.Domain._03_Entity.SRM.ICSBidDocOA.thirdAttachments> thirdAttachments = new List<NFine.Domain._03_Entity.SRM.ICSBidDocOA.thirdAttachments>();
  992. NFine.Domain._03_Entity.SRM.ICSBidDocOA.datadetail dat = new NFine.Domain._03_Entity.SRM.ICSBidDocOA.datadetail();
  993. NFine.Domain._03_Entity.SRM.ICSBidDocOA.datass dds = new NFine.Domain._03_Entity.SRM.ICSBidDocOA.datass();
  994. string sqlFile = "SELECT FileName FROM ICSBidDoc Where BidCode='" + BidCode + "'and WorkPoint='" + WorkPoint + "'";
  995. DataTable dts = SqlHelper.GetDataTableBySql(sqlFile);
  996. string fileName = dts.Rows[0]["FileName"].ToString().TrimEnd(';');
  997. string[] PrintParas = fileName.Split(';');
  998. int subReference=0;
  999. Random rd = new Random();  //无参即为使用系统时钟为种子
  1000. subReference=rd.Next();
  1001. int sort = 1;
  1002. string fileUrl = "";
  1003. if (!string.IsNullOrWhiteSpace(fileName))
  1004. {
  1005. foreach (var p in PrintParas)
  1006. {
  1007. string filePath = System.Web.HttpContext.Current.Server.MapPath("~\\File\\ZTBFile\\" + BidCode + "\\" + p.ToString());
  1008. string APIURL = "http://172.16.8.33/seeyon/rest/attachment?token=" + ID;
  1009. var IDFile = UploadLog(filePath, APIURL);
  1010. JObject resFile = (JObject)JsonConvert.DeserializeObject(IDFile);
  1011. JArray result = (JArray)JsonConvert.DeserializeObject(resFile["atts"].ToString());
  1012. foreach (var item in result)
  1013. {
  1014. JObject jo = (JObject)item;
  1015. fileUrl = jo["fileUrl"].ToString(); //地址
  1016. }
  1017. //JObject result = (JObject)JsonConvert.DeserializeObject(resFile["atts"].ToString());//企业信息
  1018. ths.subReference = subReference;
  1019. ths.fileUrl = fileUrl;
  1020. ths.sort = sort;
  1021. thirdAttachments.Add(ths);
  1022. sort++;
  1023. }
  1024. dds.thirdAttachments.Add(ths);
  1025. }
  1026. ICSBidDocOA da = new ICSBidDocOA();
  1027. da.appName = "collaboration";
  1028. List<NFine.Domain._03_Entity.SRM.ICSBidDocOA.attachments> attachmentsdetail = new List<NFine.Domain._03_Entity.SRM.ICSBidDocOA.attachments>();
  1029. NFine.Domain._03_Entity.SRM.ICSBidDocOA.attachments attachments = new NFine.Domain._03_Entity.SRM.ICSBidDocOA.attachments();
  1030. attachments.ID = "";
  1031. attachmentsdetail.Add(attachments);
  1032. dat.templateCode = "SRM01";
  1033. dat.draft = "0";
  1034. dat.relateDoc = "";//(OA 公文附件 ID,默认为空,不使用)
  1035. dat.subject = "";//(OA 流程标题,默认为空,OA 端自动生成标题)
  1036. sql = @"SELECT a.SupplierCode,b.cVenName,b.cVenRegCode,b.Free1 FROM dbo.ICSBidDocGYS a
  1037. LEFT JOIN dbo.ICSVendor b ON a.SupplierCode=b.cVenCode AND a.WorkPoint=b.WorkPoint
  1038. WHERE BidCode='" + BidCode + "'and a.WorkPoint='" + WorkPoint + "'";
  1039. DataTable dtVenDor = SqlHelper.GetDataTableBySql(sql);
  1040. for (int i = 0; i < dtVenDor.Rows.Count; i++)
  1041. {
  1042. List<NFine.Domain._03_Entity.SRM.ICSBidDocOA.formson_0023> formson_0023 = new List<NFine.Domain._03_Entity.SRM.ICSBidDocOA.formson_0023>();
  1043. Domain._03_Entity.SRM.ICSBidDocOA.formson_0023 dm0023 = new Domain._03_Entity.SRM.ICSBidDocOA.formson_0023();
  1044. dm0023. = dtVenDor.Rows[i]["SupplierCode"].ToString();
  1045. dm0023. = dtVenDor.Rows[i]["cVenRegCode"].ToString();
  1046. dm0023. = dtVenDor.Rows[i]["cVenName"].ToString();
  1047. dm0023. = "";
  1048. dds.formson_0023.Add(dm0023);
  1049. }
  1050. sql = @"SELECT a.InvCode,b.INVNAME,b.INVSTD,b.INVUOM,a.Quantity,a.DeliveryTime,a.Remark FROM dbo.ICSBidDocBD a
  1051. LEFT JOIN dbo.ICSINVENTORY b ON a.InvCode=b.INVCODE AND a.WorkPoint=b.WorkPoint
  1052. WHERE BidCode='" + BidCode + "' and a.WorkPoint='" + WorkPoint + "'";
  1053. DataTable dtDB =SqlHelper.GetDataTableBySql(sql) ;
  1054. for (int i = 0; i < dtDB.Rows.Count; i++)
  1055. {
  1056. List<NFine.Domain._03_Entity.SRM.ICSBidDocOA.formson_0022> formson_0022 = new List<NFine.Domain._03_Entity.SRM.ICSBidDocOA.formson_0022>();
  1057. Domain._03_Entity.SRM.ICSBidDocOA.formson_0022 dm0022 = new Domain._03_Entity.SRM.ICSBidDocOA.formson_0022();
  1058. dm0022. = dtDB.Rows[i]["InvCode"].ToString();
  1059. dm0022. = dtDB.Rows[i]["INVNAME"].ToString();
  1060. dm0022. = dtDB.Rows[i]["INVSTD"].ToString();
  1061. dm0022. = dtDB.Rows[i]["INVUOM"].ToString();
  1062. dm0022. = Convert.ToDecimal(dtDB.Rows[i]["Quantity"].ToString());
  1063. dm0022. = Convert.ToDateTime(dtDB.Rows[i]["DeliveryTime"]).ToString("yyyy-MM-dd HH:mm:ss.fff");
  1064. dm0022. = dtDB.Rows[i]["Remark"].ToString();
  1065. dds.formson_0022.Add(dm0022);
  1066. }
  1067. sql = @"SELECT BidCode,BidName,StarTime,EndTime,b.ID,a.Remark FROM dbo.ICSBidDoc a
  1068. LEFT JOIN ICSOAEnum b ON a.WorkPoint=b.WorkPoint
  1069. WHERE a.BidCode='" + BidCode + "' and a.WorkPoint='" + WorkPoint + "'";
  1070. DataTable dtDBDoc = SqlHelper.GetDataTableBySql(sql);
  1071. Domain._03_Entity.SRM.ICSBidDocOA.formmain_0021 dm0021 = new Domain._03_Entity.SRM.ICSBidDocOA.formmain_0021();
  1072. dm0021. = DateTime.Now.ToString("yyyy-MM-dd");
  1073. dm0021. = dtDBDoc.Rows[0]["ID"].ToString();
  1074. dm0021. = BIDCodes;
  1075. dm0021. = id;
  1076. dm0021. = departmentId;
  1077. dm0021. = postId;
  1078. dm0021. = dtDBDoc.Rows[0]["BidCode"].ToString();
  1079. dm0021. = dtDBDoc.Rows[0]["BidName"].ToString();
  1080. dm0021. = dtDBDoc.Rows[0]["ID"].ToString();
  1081. dm0021. = id;
  1082. dm0021. = Convert.ToDateTime(dtDBDoc.Rows[0]["StarTime"]).ToString("yyyy-MM-dd HH:mm:ss.fff");
  1083. dm0021. = Convert.ToDateTime(dtDBDoc.Rows[0]["EndTime"]).ToString("yyyy-MM-dd HH:mm:ss.fff");
  1084. dm0021. = "";
  1085. dm0021. = "";
  1086. dm0021. = dtDBDoc.Rows[0]["Remark"].ToString();
  1087. dm0021. = subReference;
  1088. dds.formmain_0021 = dm0021;
  1089. dat.data = dds;
  1090. da.data = dat;
  1091. string input = JsonConvert.SerializeObject(da);
  1092. //}
  1093. string APIURLBid = "http://172.16.8.33/seeyon/rest/bpm/process/start?token=" + ID;
  1094. string resultBid = HttpPost(APIURLBid, input);
  1095. JObject resBId = (JObject)JsonConvert.DeserializeObject(resultBid);
  1096. string Code = resBId["code"].ToString();//获取Tockn
  1097. if (Code=="0")
  1098. {
  1099. sql = "Update ICSBidDoc set BidStatus='OA审核中' Where BidCode='" + BidCode + "'";
  1100. SqlHelper.CmdExecuteNonQueryLi(sql);
  1101. }
  1102. else
  1103. {
  1104. msg = "OA上传OA失败!";
  1105. }
  1106. }
  1107. else
  1108. {
  1109. msg="获取Token失败";
  1110. }
  1111. }
  1112. catch (Exception ex)
  1113. {
  1114. msg=ex.Message;
  1115. }
  1116. return msg;
  1117. }
  1118. /// <summary>
  1119. /// Http Get请求
  1120. /// </summary>
  1121. /// <param name="url"></param>
  1122. /// <param name="headerValue"></param>
  1123. /// <returns></returns>
  1124. static String httpGet(string url)
  1125. {
  1126. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  1127. WebHeaderCollection headers = new WebHeaderCollection();
  1128. //headers.Add("Token", headerValue[0]);
  1129. //headers.Add("Timespan", headerValue[1]);
  1130. request.UserAgent = null;
  1131. request.Headers = headers;
  1132. request.Method = "GET";
  1133. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  1134. var httpStatusCode = (int)response.StatusCode;
  1135. Console.WriteLine("返回码为 {0}", httpStatusCode);
  1136. if (httpStatusCode == 200)
  1137. {
  1138. Stream myResponseStream = response.GetResponseStream();
  1139. StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
  1140. string retString = myStreamReader.ReadToEnd();
  1141. myStreamReader.Close();
  1142. myResponseStream.Close();
  1143. return retString;
  1144. }
  1145. else
  1146. {
  1147. Console.WriteLine("未返回数据 {0}", httpStatusCode);
  1148. throw new Exception("no data response");
  1149. }
  1150. }
  1151. /// <summary>
  1152. /// Http P0st请求
  1153. /// </summary>
  1154. /// <param name="url"></param>
  1155. /// <param name="headerValue"></param>
  1156. /// <returns></returns>
  1157. public static string UploadLog(string file, string fileippath)
  1158. {
  1159. var uploadUrl = fileippath;
  1160. HttpWebRequest request = WebRequest.Create(uploadUrl) as HttpWebRequest;
  1161. request.AllowAutoRedirect = true;
  1162. request.Method = "POST";
  1163. //这段代码不是必须,请求头传输内容,看业务情况
  1164. //request.Headers.Add("iauth", ia);//加鉴权
  1165. string boundary = DateTime.Now.Ticks.ToString("X"); // 随机分隔线
  1166. request.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary;
  1167. byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n");
  1168. byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
  1169. int pos = file.LastIndexOf("\\");
  1170. string fileName = file.Substring(pos + 1);
  1171. //请求头部信息
  1172. StringBuilder sbHeader = new StringBuilder(string.Format("Content-Disposition:form-data;name=\"file\";filename=\"{0}\"\r\nContent-Type:application/octet-stream\r\n\r\n", fileName));
  1173. byte[] postHeaderBytes = Encoding.UTF8.GetBytes(sbHeader.ToString());
  1174. FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read);
  1175. byte[] bArr = new byte[fs.Length];
  1176. fs.Read(bArr, 0, bArr.Length);
  1177. fs.Close();
  1178. Stream postStream = request.GetRequestStream();
  1179. postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length);
  1180. postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
  1181. postStream.Write(bArr, 0, bArr.Length);
  1182. postStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length);
  1183. postStream.Close();
  1184. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  1185. Stream instream = response.GetResponseStream();
  1186. StreamReader sr = new StreamReader(instream, Encoding.UTF8);
  1187. string content = sr.ReadToEnd();
  1188. return content;
  1189. }
  1190. public class ASn
  1191. {
  1192. public byte[] File { get; set; }
  1193. //public string warehouseCode { get; set; }
  1194. }
  1195. public class DeleteICSAsndet
  1196. {
  1197. public List<ASn> icsasn = new List<ASn>();
  1198. }
  1199. public static string HttpPost(string url, string body)
  1200. {
  1201. try
  1202. {
  1203. Encoding encoding = Encoding.UTF8;
  1204. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  1205. request.Method = "POST";
  1206. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  1207. request.ContentType = "application/json; charset=utf-8";
  1208. byte[] buffer = encoding.GetBytes(body);
  1209. request.ContentLength = buffer.Length;
  1210. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  1211. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  1212. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  1213. {
  1214. return reader.ReadToEnd();
  1215. }
  1216. }
  1217. catch (WebException ex)
  1218. {
  1219. throw new Exception(ex.Message);
  1220. }
  1221. }
  1222. /// <summary>
  1223. /// 创建临时物料
  1224. /// </summary>
  1225. /// <param name="queryJson"></param>
  1226. /// <returns></returns>
  1227. // public string SubmitFormCFType(string queryJson)
  1228. // {
  1229. // string msg = string.Empty;
  1230. // try
  1231. // {
  1232. // DataTable dt = new DataTable();
  1233. // List<DbParameter> parameter = new List<DbParameter>();
  1234. // ICSBicItemFSC[] list = JsonConvert.DeserializeObject<ICSBicItemFSC[]>(queryJson);
  1235. // string sql = string.Empty;
  1236. // string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  1237. // SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  1238. // conn.Open();
  1239. // SqlTransaction sqlTran = conn.BeginTransaction();
  1240. // SqlCommand cmd = new SqlCommand();
  1241. // cmd.Transaction = sqlTran;
  1242. // cmd.Connection = conn;
  1243. // try
  1244. // {
  1245. // string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1246. // string UserCodeName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1247. // foreach (var obj in list)
  1248. // {
  1249. // sql = @"
  1250. // INSERT INTO dbo.ICSINVENTORY
  1251. // (
  1252. // ID
  1253. // ,INVCODE
  1254. // ,INVNAME
  1255. // ,INVUOM
  1256. // ,INVSTD
  1257. // ,INVTYPE
  1258. // ,INVCLASS
  1259. // ,INVEXPORTIMPORT
  1260. // ,MUSER
  1261. // ,MUSERName
  1262. // ,MTIME
  1263. // ,WorkPoint
  1264. // )
  1265. // VALUES
  1266. // (
  1267. // NEWID()
  1268. // ,@INVCODE
  1269. // ,@INVNAME
  1270. // ,@INVUOM
  1271. // ,@INVSTD
  1272. // ,@INVTYPE
  1273. // ,@INVCLASS
  1274. // ,@INVEXPORTIMPORT
  1275. // ,@MUSER
  1276. // ,@MUSERName
  1277. // ,GetDate()
  1278. // ,@WorkPoint
  1279. // ) ";
  1280. // SqlParameter[] sp_Detail = {
  1281. // //new SqlParameter("@ID",obj.ID),
  1282. // new SqlParameter("@INVCODE",obj.INVCODE),
  1283. // new SqlParameter("@INVNAME",obj.INVCODE),
  1284. // new SqlParameter("@INVSTD",obj.INVSTD),
  1285. // new SqlParameter("@INVUOM",obj.INVUOM),
  1286. // new SqlParameter("@INVTYPE","非生产物料"),
  1287. // new SqlParameter("@INVCLASS","非生产物料"),
  1288. // new SqlParameter("@INVEXPORTIMPORT","非生产物料"),
  1289. // new SqlParameter("@MUSER",UserCode),
  1290. // new SqlParameter("@MUSERName",UserCodeName),
  1291. // new SqlParameter("@WorkPoint",obj.WorkPoint),
  1292. // };
  1293. // SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
  1294. // }
  1295. // cmd.Transaction.Commit();
  1296. // }
  1297. // catch (Exception ex)
  1298. // {
  1299. // cmd.Transaction.Rollback();
  1300. // msg = ex.Message;
  1301. // }
  1302. // finally
  1303. // {
  1304. // if (conn.State == ConnectionState.Open)
  1305. // {
  1306. // conn.Close();
  1307. // }
  1308. // conn.Dispose();
  1309. // }
  1310. // }
  1311. // catch (Exception ex)
  1312. // {
  1313. // msg=ex.Message;
  1314. // }
  1315. // return msg;
  1316. // }
  1317. }
  1318. }