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.

1381 lines
72 KiB

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