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.

3620 lines
195 KiB

4 weeks ago
6 days ago
4 weeks ago
6 days ago
4 weeks ago
6 days ago
4 weeks ago
6 days ago
4 weeks ago
6 days ago
4 weeks ago
3 weeks ago
4 weeks ago
6 days ago
4 weeks ago
3 weeks ago
4 weeks ago
3 weeks ago
4 weeks ago
3 weeks ago
4 weeks ago
3 weeks ago
4 weeks ago
3 weeks ago
4 weeks ago
6 days ago
4 weeks ago
  1. using NFine.Code;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Data.Common;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using NFine.Repository;
  10. using NFine.Domain._03_Entity.SRM;
  11. using System.Data.Odbc;
  12. using System.Data.SqlClient;
  13. using NFine.Data.Extensions;
  14. using System.IO;
  15. using System.Net;
  16. using Newtonsoft.Json.Linq;
  17. using Newtonsoft.Json;
  18. using System.Configuration;
  19. using System.Security.Cryptography.X509Certificates;
  20. using System.Net.Security;
  21. using System.Net.Mail;
  22. using System.Web.UI.WebControls;
  23. namespace NFine.Application.SRM
  24. {
  25. public class RFQManagerApp : RepositoryFactory<ICSVendor>
  26. {
  27. private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
  28. public static DataTable Invmes = new DataTable();
  29. public static DataTable Supplier = new DataTable();
  30. public DataTable GetGridJson(string Json, ref Pagination jqgridparam)
  31. {
  32. string ParentId = "";
  33. DataTable table = new DataTable();
  34. var Jobject = Json.ToJObject();
  35. List<DbParameter> parameter = new List<DbParameter>();
  36. string sqlwhere = "";
  37. if (!string.IsNullOrEmpty(Jobject["PruOrganize"].ToString()))
  38. {
  39. sqlwhere += " and c.PURCHUGNAME like '%" + Jobject["PruOrganize"].ToString() + "%' ";
  40. }
  41. if (!string.IsNullOrEmpty(Jobject["PruTeam"].ToString()))
  42. {
  43. sqlwhere += " and h.F_ItemName like '%" + Jobject["PruTeam"].ToString() + "%'";
  44. }
  45. if (!string.IsNullOrEmpty(Jobject["RFQCode"].ToString()))
  46. {
  47. sqlwhere += " and a.RFQCode like '%" + Jobject["RFQCode"].ToString() + "%'";
  48. }
  49. if (!string.IsNullOrEmpty(Jobject["RFQName"].ToString()))
  50. {
  51. sqlwhere += " and a.RFQName like '%" + Jobject["RFQName"].ToString() + "%'";
  52. }
  53. if (!string.IsNullOrEmpty(Jobject["SupplierCode"].ToString()))
  54. {
  55. sqlwhere += " and B.SupplierCode like '%" + Jobject["SupplierCode"].ToString() + "%'";
  56. }
  57. if (!string.IsNullOrEmpty(Jobject["SupplierName"].ToString()))
  58. {
  59. sqlwhere += " and b.SupplierName like '%" + Jobject["SupplierName"].ToString() + "%'";
  60. }
  61. if (!string.IsNullOrEmpty(Jobject["InvCode"].ToString()))
  62. {
  63. sqlwhere += " and e.itemcode like '%" + Jobject["InvCode"].ToString() + "%'";
  64. }
  65. if (!string.IsNullOrEmpty(Jobject["InvName"].ToString()))
  66. {
  67. sqlwhere += " and e.itemname like '%" + Jobject["InvName"].ToString() + "%'";
  68. }
  69. if (!string.IsNullOrEmpty(Jobject["InvStd"].ToString()))
  70. {
  71. sqlwhere += " and f.InvStd like '%" + Jobject["InvStd"].ToString() + "%'";
  72. }
  73. if (!string.IsNullOrEmpty(Jobject["TimeFrom"].ToString()))
  74. {
  75. sqlwhere += " and a.BEGINDATE>='" + Jobject["TimeFrom"].ToString() + "'";
  76. }
  77. if (!string.IsNullOrEmpty(Jobject["TimeTo"].ToString()))
  78. {
  79. sqlwhere += " and a.BEGINDATE<='" + Jobject["TimeTo"].ToString() + "'";
  80. }
  81. if (!string.IsNullOrEmpty(Jobject["ReleaseState"].ToString().Trim(',')) && Jobject["ReleaseState"].ToString().Trim(',') != "'Examine'" && Jobject["ReleaseState"].ToString().Trim(',') != "'HasExamine'")
  82. {
  83. sqlwhere += " and a.status in ('" + Jobject["ReleaseState"].ToString().TrimEnd('\'').TrimEnd(',') + "')";
  84. }
  85. //if (Jobject["status"].ToString().Trim(',') == "'Examine'")
  86. //{
  87. // sqlwhere += " and a.RFQCODE in (SELECT a.RFQCODE FROM ICSSORRFQ a where a.RFQCODE in (SELECT DISTINCT b.RFQCODE from ICSSORQUODETAILNORMAL b WHERE b.QUOSTATUS = 'Pending'))";
  88. //}
  89. //if (Jobject["status"].ToString().Trim(',') == "'HasExamine'")
  90. //{
  91. // sqlwhere += " and a.RFQCODE in (SELECT a.RFQCODE FROM ICSSORRFQ a where a.RFQCODE in (SELECT DISTINCT b.RFQCODE from ICSSORQUODETAILNORMAL b WHERE b.QUOSTATUS in ('PricingApprove','PricingReject')))";
  92. //}
  93. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  94. {
  95. sqlwhere += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  96. }
  97. string sql = @"select distinct a.RFQCODE,RFQNAME,
  98. case a.STATUS
  99. when 'Publish' then ''
  100. when 'Examine' then ''
  101. when 'HasExamine' THEN ''
  102. WHEN 'New' THEN ''
  103. when 'Close' then ''
  104. when 'PricingApprove' then ''
  105. when 'BZPricingApprove' then ''
  106. when 'Comparison' then ''
  107. when 'Pending' then ''
  108. when 'Back' then '退'
  109. end as STATUS,
  110. case a.STATUS
  111. when 'Publish' then ''
  112. when 'Examine' then ''
  113. when 'HasExamine' THEN ''
  114. WHEN 'New' THEN ''
  115. when 'Close' then ''
  116. when 'PricingApprove' then ''
  117. when 'BZPricingApprove' then ''
  118. when 'Comparison' then ''
  119. when 'Pending' then ''
  120. when 'Back' then '退'
  121. end as HIDDSTATUS,
  122. a.BEGINDATE,a.ENDDATE,a.CREATEUSER,a.CREATETIME,c.PURCHUGNAME,h.F_ItemName as PURTEAM,c.PURCHUGNAME as PURORG
  123. ,b.SupplierName as COMPANYNAME,A.LOGDATE,A.LOGUSER,A.workpoint
  124. ,a.ADDITION1
  125. ,a.ADDITION2
  126. from icsSORRFQ A
  127. left join BASE_SUPPLIER B ON B.SupplierCode = a.COMPANYCODE
  128. left join ICSPurChug c on c.PURCHUGCODE = a.PURCHUGCODE
  129. --left join ICSPURCHUGSON d on d.PURCHUGSONCODE = a.PURTeam
  130. left join icsSORRFQ2NORMALITEM e on e.RFQCODE=a.RFQCODE
  131. left join ICSINVENTORY f on f.INVCODE=e.ITEMCODE
  132. left join icsSORQUOTATION g on g.RFQCODE=a.Rfqcode
  133. left join Sys_SRM_ItemsDetail h on h.F_ItemCode=A.purteam
  134. where 1=1 " + sqlwhere;
  135. ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  136. if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
  137. {
  138. return SqlHelper.FindTablePageBySql_OtherTempbyLOGUSER(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
  139. }
  140. else
  141. {
  142. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  143. }
  144. }
  145. public DataTable GetGridJsonByBJ(string Json, ref Pagination jqgridparam)
  146. {
  147. DataTable table = new DataTable();
  148. var Jobject = Json.ToJObject();
  149. List<DbParameter> parameter = new List<DbParameter>();
  150. string ParentId = "";
  151. string sql = @"select distinct a.RFQCODE,RFQNAME,
  152. case a.STATUS
  153. when 'Publish' then ''
  154. when 'Examine' then ''
  155. when 'HasExamine' THEN ''
  156. WHEN 'New' THEN ''
  157. when 'Close' then ''
  158. when 'PricingApprove' then ''
  159. when 'BZPricingApprove' then ''
  160. when 'Comparison' then ''
  161. when 'Pending' then ''
  162. when 'Back' then '退'
  163. end as STATUS,
  164. case a.STATUS
  165. when 'Publish' then ''
  166. when 'Examine' then ''
  167. when 'HasExamine' THEN ''
  168. WHEN 'New' THEN ''
  169. when 'Close' then ''
  170. when 'PricingApprove' then ''
  171. when 'BZPricingApprove' then ''
  172. when 'Comparison' then ''
  173. when 'Pending' then ''
  174. when 'Back' then '退'
  175. end as HIDDSTATUS,
  176. a.BEGINDATE,a.ENDDATE,a.CREATEUSER,a.CREATETIME,c.PURCHUGNAME,h.F_ItemName as PURTEAM,c.PURCHUGNAME as PURORG
  177. ,b.SupplierName as COMPANYNAME,A.LOGDATE,A.LOGUSER,A.workpoint,A.memo,
  178. CASE WHEN i.XNum=j.BNum THEN '0' ELSE '1' END AS BSTATUS
  179. --,BJDFileName
  180. from icsSORRFQ A
  181. left join BASE_SUPPLIER B ON B.SupplierCode = a.COMPANYCODE
  182. left join ICSPurChug c on c.PURCHUGCODE = a.PURCHUGCODE
  183. --left join ICSPURCHUGSON d on d.PURCHUGSONCODE = a.PURTeam
  184. left join icsSORRFQ2NORMALITEM e on e.RFQCODE=a.RFQCODE
  185. left join ICSINVENTORY f on f.INVCODE=e.ITEMCODE
  186. LEFT JOIN ICSSORRFQ2VENDOR ven ON a.Rfqcode = ven.RFQCODE
  187. left join icsSORQUOTATION g on g.RFQCODE=a.Rfqcode AND ven.VENDORCODE = g.VENDORCODE
  188. left join Sys_SRM_ItemsDetail h on h.F_ItemCode=A.purteam
  189. LEFT JOIN (SELECT COUNT(*) AS XNum,RFQCODE,VENDORCODE FROM ICSSORRFQ2VENDOR a WHERE (ISNULL(venCodeStatus,'')='' and ISNULL(RFQCodeStatus,'')='') GROUP BY RFQCODE,VENDORCODE
  190. ) i ON a.RFQCODE=i.RFQCODE AND ven.VENDORCODE=i.VENDORCODE
  191. LEFT JOIN (SELECT COUNT(*) AS BNum,RFQCODE,VENDORCODE FROM icsSORQUOTATION a GROUP BY RFQCODE,VENDORCODE) j
  192. ON a.RFQCODE=j.RFQCODE AND ven.VENDORCODE=j.VENDORCODE
  193. where 1=1 ";
  194. if (!string.IsNullOrEmpty(Jobject["PruOrganize"].ToString()))
  195. {
  196. sql += " and c.PURCHUGNAME like '%" + Jobject["PruOrganize"].ToString() + "%' ";
  197. }
  198. if (!string.IsNullOrEmpty(Jobject["PruTeam"].ToString()))
  199. {
  200. sql += " and h.F_ItemName like '%" + Jobject["PruTeam"].ToString() + "%'";
  201. }
  202. if (!string.IsNullOrEmpty(Jobject["RFQCode"].ToString()))
  203. {
  204. sql += " and a.RFQCode like '%" + Jobject["RFQCode"].ToString() + "%'";
  205. }
  206. if (!string.IsNullOrEmpty(Jobject["RFQName"].ToString()))
  207. {
  208. sql += " and a.RFQName like '%" + Jobject["RFQName"].ToString() + "%'";
  209. }
  210. if (!string.IsNullOrEmpty(Jobject["SupplierCode"].ToString()))
  211. {
  212. sql += " and B.SupplierCode like '%" + Jobject["SupplierCode"].ToString() + "%'";
  213. }
  214. if (!string.IsNullOrEmpty(Jobject["SupplierName"].ToString()))
  215. {
  216. sql += " and b.SupplierName like '%" + Jobject["SupplierName"].ToString() + "%'";
  217. }
  218. if (!string.IsNullOrEmpty(Jobject["InvCode"].ToString()))
  219. {
  220. sql += " and e.itemcode like '%" + Jobject["InvCode"].ToString() + "%'";
  221. }
  222. if (!string.IsNullOrEmpty(Jobject["InvName"].ToString()))
  223. {
  224. sql += " and e.itemname like '%" + Jobject["InvName"].ToString() + "%'";
  225. }
  226. if (!string.IsNullOrEmpty(Jobject["InvStd"].ToString()))
  227. {
  228. sql += " and f.InvStd like '%" + Jobject["InvStd"].ToString() + "%'";
  229. }
  230. if (!string.IsNullOrEmpty(Jobject["TimeFrom"].ToString()))
  231. {
  232. sql += " and a.BEGINDATE>='" + Jobject["TimeFrom"].ToString() + "'";
  233. }
  234. if (!string.IsNullOrEmpty(Jobject["TimeTo"].ToString()))
  235. {
  236. sql += " and a.BEGINDATE<='" + Jobject["TimeTo"].ToString() + "'";
  237. }
  238. if (!string.IsNullOrEmpty(Jobject["status"].ToString().Trim(',')) && Jobject["status"].ToString().Trim(',') != "'Examine'" && Jobject["status"].ToString().Trim(',') != "'HasExamine'")
  239. {
  240. sql += " and a.status in (" + Jobject["status"].ToString().TrimEnd('\'').TrimEnd(',') + ")";
  241. }
  242. if (Jobject["status"].ToString().Trim(',') == "'Examine'")
  243. {
  244. sql += " and a.RFQCODE in (SELECT a.RFQCODE FROM ICSSORRFQ a where a.RFQCODE in (SELECT DISTINCT b.RFQCODE from ICSSORQUODETAILNORMAL b WHERE b.QUOSTATUS = 'Pending'))";
  245. }
  246. if (Jobject["status"].ToString().Trim(',') == "'HasExamine'")
  247. {
  248. sql += " and a.RFQCODE in (SELECT a.RFQCODE FROM ICSSORRFQ a where a.RFQCODE in (SELECT DISTINCT b.RFQCODE from ICSSORQUODETAILNORMAL b WHERE b.QUOSTATUS in ('PricingApprove','PricingReject')))";
  249. }
  250. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  251. {
  252. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  253. }
  254. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Business")
  255. //{
  256. // sql += " and c.PURCHUGNAME in(" + NFine.Code.OperatorProvider.Provider.GetCurrent().cPTName.TrimEnd(',') + ")";
  257. //}
  258. //ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  259. //if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
  260. //{
  261. // return SqlHelper.FindTablePageBySql_OtherTempByZZ(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
  262. //}
  263. //else
  264. //{
  265. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  266. //}
  267. //return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  268. }
  269. public DataTable GetPUROrganize(string workpoint)
  270. {
  271. string wheresql = "";
  272. if (!string.IsNullOrEmpty(workpoint))
  273. {
  274. wheresql += " and workpoint='" + workpoint + "'";
  275. }
  276. string sql = " select '' as purchugcode,''as purchugname from ICSPurChug Union select purchugcode,purchugname from ICSPurChug where 1=1 " + wheresql;
  277. return Repository().FindTableBySql(sql, null);
  278. }
  279. public DataTable GetPURTeam(string code)
  280. {
  281. string sql = @" SELECT '' AS purchugcode,'' AS purchugname
  282. union all
  283. SELECT DISTINCT a.F_Account AS purchugcode,F_RealName AS purchugname
  284. FROM sys_srm_user a
  285. LEFT JOIN sys_srm_Role b ON a.F_RoleId=b.F_ID
  286. WHERE b.F_EnCode='Purchasing Staff'";
  287. //if (!string.IsNullOrEmpty(code))
  288. //{
  289. // sql += " where F_EnCode='" + code + "'";
  290. //}
  291. return Repository().FindTableBySql(sql, null);
  292. }
  293. public DataRow GetRFQ(string Rfqcode)
  294. {
  295. string sql = @"select begindate,COSTANALYSISTEMPLATE,costtype,CONVERT(VARCHAR(10),
  296. createdate,120)AS createdate,createtime,createuser,ISUNIFYANALYSISTEMPLATE,
  297. logdate,logtime,loguser,poct,a.purchugcode,b.PURCHUGNAME,rfqname,status,
  298. purteam,a.workpoint,companycode,rfqcode,memo,a.FileName,a.HASCOSTDETAILS
  299. from ICSSORRFQ a
  300. LEFT JOIN dbo.ICSPurChug b ON a.PURCHUGCODE=b.PURCHUGCODE
  301. where rfqcode='" + Rfqcode + "'";
  302. DataTable table = Repository().FindTableBySql(sql, null);
  303. return table.Rows[0];
  304. }
  305. public string GetSercode(string workpoint)
  306. {
  307. string datetime = DateTime.Now.ToString("yyyyMMdd");
  308. SqlParameter[] para = { new SqlParameter("@WorkPoint", workpoint), new SqlParameter("@TbName", "ICSSORRFQ"), new SqlParameter("@CodeCol", "RFQCODE"), new SqlParameter("@Pre", "XJD" + datetime), new SqlParameter("@NumLen", 3) };
  309. DataTable table = Repository().FindTableByProc("Addins_GetSerialCode", para);
  310. return table.Rows[0][0].ToString();
  311. }
  312. public void updateS(string ID, string paymentcondition)
  313. {
  314. DataRow[] a = Supplier.Select("ID='" + ID + "'");
  315. foreach (var item in a)
  316. {
  317. item["供应商付款条件"] = paymentcondition;
  318. }
  319. //return "操作成功!";
  320. }
  321. public void updateiss(string ID, string isshowprice)
  322. {
  323. DataRow[] a = Supplier.Select("ID='" + ID + "'");
  324. foreach (var item in a)
  325. {
  326. item["是否显示参考价"] = isshowprice;
  327. }
  328. //return "操作成功!";
  329. }
  330. /// <summary>
  331. /// 新增询价单
  332. /// </summary>
  333. /// <param name="details"></param>
  334. public void AddRFQ(ICSSORRFQ details)
  335. {
  336. string sql = string.Empty;
  337. try
  338. {
  339. List<ICSSORRFQ2NORMALITEM> list_BD = JsonConvert.DeserializeObject<List<ICSSORRFQ2NORMALITEM>>(details.arrayBidDocBD);
  340. List<ICSSORRFQ2VENDOR> list_GYS = JsonConvert.DeserializeObject<List<ICSSORRFQ2VENDOR>>(details.arrayBidDocGYS);
  341. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  342. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  343. conn.Open();
  344. SqlTransaction sqlTran = conn.BeginTransaction();
  345. SqlCommand cmd = new SqlCommand();
  346. cmd.Transaction = sqlTran;
  347. cmd.Connection = conn;
  348. try
  349. {
  350. string Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  351. string MuserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  352. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  353. if (details.RFQstatus == "2")
  354. {
  355. sql = "select * from ICSSORRFQ where RFQCODE='" + details.RFQCODE + "' and WorkPoint='" + details.WorkPoint + "'";
  356. DataTable dt = SqlCommandHelper.SQlReturnData(sql, cmd);
  357. if (dt != null && dt.Rows.Count > 0)
  358. {
  359. throw new Exception("询价单已存在!");
  360. }
  361. }
  362. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQ WHERE RFQCODE=@RFQCODE and WorkPoint=@workpoint)
  363. BEGIN
  364. INSERT INTO dbo.ICSSORRFQ(
  365. begindate,COSTANALYSISTEMPLATE,costtype,createdate,createtime,
  366. createuser,ISUNIFYANALYSISTEMPLATE,logdate,logtime,loguser,
  367. poct,purchugcode,rfqname,status,purteam,
  368. workpoint,companycode,rfqcode,memo,HASCOSTDETAILS,FileName
  369. )
  370. VALUES (@begindate,@COSTANALYSISTEMPLATE,@costtype,getdate(),getdate() ,
  371. @createuser,@ISUNIFYANALYSISTEMPLATE,getdate(),getdate(),@loguser,
  372. @poct,@purchugcode,@rfqname,@status,@purteam,
  373. @workpoint,@companycode,@rfqcode,@memo,@HASCOSTDETAILS,@FileName)
  374. END
  375. ELSE
  376. BEGIN
  377. UPDATE dbo.ICSSORRFQ SET
  378. begindate=@begindate ,
  379. COSTANALYSISTEMPLATE=@COSTANALYSISTEMPLATE ,
  380. costtype=@costtype,
  381. ISUNIFYANALYSISTEMPLATE=@ISUNIFYANALYSISTEMPLATE ,
  382. logdate=getdate() ,
  383. logtime=getdate() ,
  384. loguser=@loguser,
  385. purchugcode=@purchugcode ,
  386. rfqname=@rfqname ,
  387. purteam=@purteam,
  388. memo=@memo,
  389. HASCOSTDETAILS=@HASCOSTDETAILS,
  390. FileName=@FileName
  391. WHERE RFQCODE=@RFQCODE AND WorkPoint=@workpoint
  392. END";
  393. SqlParameter[] sp_Detail = {
  394. new SqlParameter("@begindate",details.BEGINDATE),
  395. new SqlParameter("@COSTANALYSISTEMPLATE",details.COSTANALYSISTEMPLATE),
  396. new SqlParameter("@costtype",details.COSTTYPE),
  397. new SqlParameter("@createuser",MuserName),
  398. new SqlParameter("@ISUNIFYANALYSISTEMPLATE",details.ISUNIFYANALYSISTEMPLATE),
  399. new SqlParameter("@loguser",MuserName),
  400. //new SqlParameter("@ZTBCount",details.ZTBCount),
  401. new SqlParameter("@poct",details.POCT),
  402. new SqlParameter("@purchugcode",details.PURCHUGCODE),
  403. new SqlParameter("@rfqname",details.RFQNAME),
  404. new SqlParameter("@status","New"),
  405. new SqlParameter("@PURTeam",details.PURTeam),
  406. new SqlParameter("@workpoint",details.WorkPoint),
  407. new SqlParameter("@companycode",details.WorkPoint),
  408. new SqlParameter("@rfqcode",details.RFQCODE),
  409. new SqlParameter("@memo",details.MEMO),
  410. new SqlParameter("@HASCOSTDETAILS",details.HASCOSTDETAILS),
  411. new SqlParameter("@FileName",details.FileName),
  412. //new SqlParameter("@ENDDATE",details.ENDDATE)
  413. };
  414. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
  415. #region 标的
  416. foreach (ICSSORRFQ2NORMALITEM BD in list_BD)
  417. {
  418. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQ2NORMALITEM WHERE ID='" + BD.ID + @"' and WorkPoint='" + BD.WorkPoint + @"')
  419. BEGIN
  420. INSERT INTO dbo.ICSSORRFQ2NORMALITEM(
  421. COMPANYCODE,COSTANALYSISTEMPLATE,CREATEDATE,CREATETIME,CREATEUSER,
  422. HASCOSTDETAILS,ISINCLUDETAX,ITEMCLASSID,ITEMCODE,ITEMNAME,
  423. ITEMTYPE,LOGDATE,LOGTIME,LOGUSER,MEMO,
  424. PRINCINGITEMCODE,REFERPRICE,CURRENCY,REQUESTQUANTITY,RFQCODE,
  425. RFQITEMREFERCODE,UNIT,ID,workpoint,
  426. Requirements,ManuFacturer,ManuFacturerInvCode)
  427. VALUES (
  428. '" + details.WorkPoint + @"','" + BD.COSTANALYSISTEMPLATE + @"',getdate(),getdate(),'" + MuserName + @"',
  429. '" + BD.HASCOSTDETAILS + @"','" + BD.ISINCLUDETAX + @"','" + BD.ITEMCLASSID + @"','" + BD.ITEMCODE + @"','" + BD.ITEMNAME + @"',
  430. '" + BD.ITEMTYPE + @"',getdate(),getdate(),'" + MuserName + @"','" + BD.MEMO + @"',
  431. '" + BD.PRINCINGITEMCODE + @"', " + Convert.ToDecimal(BD.REFERPRICE) + @",'" + BD.CURRENCY + @"'," + Convert.ToDecimal(BD.REQUESTQUANTITY) + @",'" + details.RFQCODE + @"',
  432. '" + BD.RFQITEMREFERCODE + @"','" + BD.UNIT + @"',NewID(),'" + details.WorkPoint + @"',
  433. '" + BD.Requirements + @"','" + BD.ManuFacturer + @"','" + BD.ManuFacturerInvCode + @"'
  434. )
  435. END
  436. ELSE
  437. BEGIN
  438. UPDATE dbo.ICSSORRFQ2NORMALITEM SET
  439. MEMO='" + BD.MEMO + @"' ,
  440. Requirements='" + BD.Requirements + @"' ,
  441. REQUESTQUANTITY=" + Convert.ToDecimal(BD.REQUESTQUANTITY) + @",
  442. HASCOSTDETAILS='" + BD.HASCOSTDETAILS + @"' ,
  443. RFQITEMREFERCODE='" + BD.RFQITEMREFERCODE + @"' ,
  444. LOGDATE=getdate() ,
  445. LOGTIME=getdate(),
  446. LOGUSER='" + MuserName + @"' ,
  447. ManuFacturer='" + BD.ManuFacturer + @"',
  448. ManuFacturerInvCode='" + BD.ManuFacturerInvCode + @"'
  449. WHERE ID='" + BD.ID + @"' AND WorkPoint='" + BD.WorkPoint + @"'
  450. END
  451. ";
  452. SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
  453. }
  454. #endregion
  455. #region 临时物料
  456. foreach (ICSSORRFQ2NORMALITEM BD in list_BD)
  457. {
  458. if (BD.Source == "手工")
  459. {
  460. sql = @"INSERT INTO dbo.ICSINVENTORY
  461. (
  462. ID
  463. ,INVCODE
  464. ,INVNAME
  465. ,INVUOM
  466. ,INVSTD
  467. ,INVTYPE
  468. ,INVCLASS
  469. ,INVEXPORTIMPORT
  470. ,MUSER
  471. ,MUSERName
  472. ,MTIME
  473. ,WorkPoint
  474. )
  475. VALUES (
  476. @ID
  477. ,@INVCODE
  478. ,@INVNAME
  479. ,@INVUOM
  480. ,@INVSTD
  481. ,@INVTYPE
  482. ,@INVCLASS
  483. ,@INVEXPORTIMPORT
  484. ,@MUSER
  485. ,@MUSERName
  486. ,Getdate()
  487. ,@WorkPoint
  488. )
  489. ";
  490. SqlParameter[] sp_INv = {
  491. new SqlParameter("@ID",BD.ID),
  492. new SqlParameter("@INVCODE",BD.ITEMCODE),
  493. new SqlParameter("@INVNAME",BD.ITEMNAME),
  494. new SqlParameter("@INVUOM",BD.UNIT),
  495. new SqlParameter("@INVSTD",BD.InvStd),
  496. new SqlParameter("@INVTYPE","生产类型"),
  497. new SqlParameter("@INVCLASS","生产类型"),
  498. new SqlParameter("@INVEXPORTIMPORT","生产类型"),
  499. new SqlParameter("@WorkPoint",details.WorkPoint),
  500. new SqlParameter("@MUSER",Muser),
  501. new SqlParameter("@MUSERName",MuserName),
  502. //new SqlParameter("@WorkPoint",BD.cCode)
  503. };
  504. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_INv, cmd);
  505. }
  506. }
  507. #endregion
  508. #region 供应商
  509. foreach (ICSSORRFQ2VENDOR GYS in list_GYS)
  510. {
  511. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQ2VENDOR WHERE ID='" + GYS.ID + @"' and WorkPoint='" + GYS.WorkPoint + @"')
  512. BEGIN
  513. INSERT INTO dbo.ICSSORRFQ2VENDOR
  514. (COMPANYCODE,CREATEDATE,CREATETIME,CREATEUSER,CURRENCY,
  515. ISCLOSED,ISSHOWPRICE,LOCATIONCODE,LOGDATE,LOGTIME,
  516. LOGUSER,PAYMENTCONDITION,PRINCINGVENDORCODE,RFQCODE,TAXRATE
  517. ,VENDORCODE,VENDORTYPE,ADDITION1,ID,workpoint,addition2)
  518. VALUES
  519. ('" + details.WorkPoint + @"',getdate(),getdate(),'" + MuserName + @"','" + GYS.CURRENCY + @"',
  520. '" + GYS.ISCLOSED + @"','" + GYS.ISSHOWPRICE + @"','" + GYS.LOCATIONCODE + @"',getdate(),getdate(),
  521. '" + MuserName + @"','" + GYS.PAYMENTCONDITION + @"','" + GYS.PRINCINGVENDORCODE + @"','" + details.RFQCODE + @"','" + GYS.TAXRATE + @"'
  522. ,'" + GYS.VENDORCODE + @"','" + GYS.VENDORTYPE + @"','" + GYS.ADDITION1 + @"','" + GYS.ID + @"','" + details.WorkPoint + @"','" + details.ADDITION2 + @"')
  523. END
  524. ELSE
  525. BEGIN
  526. UPDATE dbo.ICSSORRFQ2VENDOR SET
  527. PAYMENTCONDITION='" + GYS.PAYMENTCONDITION + @"' ,
  528. ISSHOWPRICE='" + GYS.ISSHOWPRICE + @"',
  529. LOGDATE=getdate() ,
  530. LOGTIME=getdate(),
  531. LOGUSER='" + MuserName + @"'
  532. WHERE ID='" + GYS.ID + @"' AND WorkPoint='" + GYS.WorkPoint + @"'
  533. END
  534. ";
  535. SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
  536. }
  537. #endregion
  538. cmd.Transaction.Commit();
  539. }
  540. catch (Exception ex)
  541. {
  542. cmd.Transaction.Rollback();
  543. throw new Exception(ex.Message);
  544. }
  545. finally
  546. {
  547. if (conn.State == ConnectionState.Open)
  548. {
  549. conn.Close();
  550. }
  551. conn.Dispose();
  552. }
  553. }
  554. catch (Exception ex)
  555. {
  556. throw new Exception(ex.Message);
  557. }
  558. }
  559. public void Upload(string filepath)
  560. {
  561. }
  562. public DataTable Getinv(string invcode, ref Pagination jqgridparam, string workpoint, string InvName)
  563. {
  564. List<DbParameter> parameter = new List<DbParameter>();
  565. DataTable table = new DataTable();
  566. string wherestr = "";
  567. if (!string.IsNullOrEmpty(invcode))
  568. {
  569. wherestr += " and invcode like '%" + invcode + "%'";
  570. }
  571. if (!string.IsNullOrEmpty(InvName))
  572. {
  573. wherestr += " and invname like '%" + InvName + "%'";
  574. }
  575. string sql = "select invcode,invname,invstd,InvUnit invuom,ClassName invclass from icsinventory where workpoint='" + workpoint + "'" + wherestr;
  576. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  577. }
  578. public string GetNewid()
  579. {
  580. string sql = "select newid() AS ID";
  581. return Repository().FindTableBySql(sql, null).Rows[0]["ID"].ToString();
  582. }
  583. public void AddinvtoTemp(string json)
  584. {
  585. var data = json.ToJObject();
  586. if (Invmes.Columns.Count <= 0)
  587. {
  588. Invmes.Columns.Add("公司代码", typeof(string));
  589. Invmes.Columns.Add("成本分析模板", typeof(string));
  590. Invmes.Columns.Add("创建日期", typeof(string));
  591. Invmes.Columns.Add("创建时间", typeof(string));
  592. Invmes.Columns.Add("创建用户", typeof(string));
  593. Invmes.Columns.Add("成本明细", typeof(string));
  594. Invmes.Columns.Add("是否含税", typeof(string));
  595. Invmes.Columns.Add("物料分类代码", typeof(string));
  596. Invmes.Columns.Add("物料代码", typeof(string));
  597. Invmes.Columns.Add("物料名称", typeof(string));
  598. Invmes.Columns.Add("物料类型", typeof(string));
  599. Invmes.Columns.Add("物料规格", typeof(string));
  600. Invmes.Columns.Add("更新日期", typeof(string));
  601. Invmes.Columns.Add("更新时间", typeof(string));
  602. Invmes.Columns.Add("更新用户", typeof(string));
  603. Invmes.Columns.Add("备注", typeof(string));
  604. Invmes.Columns.Add("定价物料编码", typeof(string));
  605. Invmes.Columns.Add("参考价格", typeof(string));
  606. Invmes.Columns.Add("币种", typeof(string));
  607. Invmes.Columns.Add("预计需求量", typeof(string));
  608. Invmes.Columns.Add("询价单编码", typeof(string));
  609. Invmes.Columns.Add("文件路径", typeof(string));
  610. Invmes.Columns.Add("有效期开始", typeof(string));
  611. Invmes.Columns.Add("单位", typeof(string));
  612. Invmes.Columns.Add("ID", typeof(string));
  613. Invmes.Columns.Add("workpoint", typeof(string));
  614. Invmes.Columns.Add("技术要求", typeof(string));
  615. }
  616. if (!String.IsNullOrEmpty(data["id"].ToString()))
  617. {
  618. UpdateInvRow(data["id"].ToString(), json);
  619. }
  620. else
  621. {
  622. string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  623. DataRow newrow = Invmes.NewRow();
  624. newrow["公司代码"] = data["companycode"];
  625. newrow["成本分析模板"] = data["COSTANALYSISTEMPLATE"];
  626. newrow["创建日期"] = data["CREATEDATE"];
  627. newrow["创建时间"] = data["CreateTime"];
  628. newrow["创建用户"] = usercode;
  629. newrow["成本明细"] = data["HASCOSTDETAILS"];
  630. newrow["是否含税"] = data["ISINCLUDETAX"];
  631. newrow["物料分类代码"] = data["itemclass"];
  632. newrow["物料代码"] = data["itemcode"];
  633. newrow["物料名称"] = data["itemname"];
  634. newrow["物料类型"] = data["invtype"];
  635. newrow["物料规格"] = data["itemstd"];
  636. newrow["更新日期"] = data["logdate"];
  637. newrow["更新时间"] = data["logtime"];
  638. newrow["更新用户"] = usercode;
  639. newrow["备注"] = data["memo"];
  640. newrow["定价物料编码"] = data["PRINCINGITEMCODE"];
  641. newrow["参考价格"] = data["REFERPRICE"];
  642. newrow["币种"] = data["currency"];
  643. newrow["预计需求量"] = data["REQUESTQUANTITY"];
  644. newrow["询价单编码"] = data["RFQCODE"];
  645. newrow["文件路径"] = data["RFQITEMREFERCODE"];
  646. newrow["有效期开始"] = data["startdate"];
  647. newrow["单位"] = data["unit"];
  648. newrow["ID"] = GetNewid();
  649. newrow["workpoint"] = data["workpoint"];
  650. newrow["技术要求"] = data["Requirements"];
  651. Invmes.Rows.Add(newrow);
  652. }
  653. }
  654. /// <summary>
  655. /// 删除物料明细行
  656. /// </summary>
  657. /// <param name="json"></param>
  658. /// <returns></returns>
  659. public string DeleteInvTab(string keyValue)
  660. {
  661. string msg = string.Empty;
  662. try
  663. {
  664. //string wheresql = "(";
  665. ////string[] id = json.Split(',');
  666. ////for (int i = 0; i < id.Length; i++) {
  667. //// wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  668. ////}
  669. //wheresql = wheresql.Trim(',') + ")";
  670. string sql = "delete from icsSORRFQ2NORMALITEM where id in ('" + keyValue + "')";
  671. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  672. }
  673. catch (Exception ex)
  674. {
  675. msg = ex.Message + " 删除失败!";
  676. }
  677. return msg;
  678. }
  679. /// <summary>
  680. /// 清楚临时表
  681. /// </summary>
  682. public void ClearTempTab()
  683. {
  684. Invmes.Rows.Clear();
  685. Supplier.Rows.Clear();
  686. }
  687. public DataTable GetInvTable(string rfqno)
  688. {
  689. string sql = @"select companycode as 公司代码,COSTANALYSISTEMPLATE as 成本分析模板 ,CREATEDATE as 创建日期,
  690. CreateTime as ,CREATEUSER as ,HASCOSTDETAILS as ,ISINCLUDETAX as ,
  691. ITEMCLASSID as ,b.itemcode as ,b.itemname as ,
  692. CASE b.ITEMTYPE WHEN 'Real' then '' else '' end as ,a.invstd as ,
  693. logdate as ,logtime as ,LOGUSER as ,memo as ,PRINCINGITEMCODE as ,
  694. REFERPRICE as ,CURRENCY as ,REQUESTQUANTITY as ,RFQCODE as ,
  695. RFQITEMREFERCODE as ,startdate as ,Requirements as ,RFQITEMREFERCODE as HiddenFile,
  696. unit as ,B.ID,b.workpoint,ManuFacturer AS ,ManuFacturerInvCode AS from icsSORRFQ2NORMALITEM b
  697. left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
  698. where RFQCODE='" + rfqno + @"'
  699. ";
  700. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  701. DataTable dtCloned = table.Clone();
  702. foreach (DataColumn col in dtCloned.Columns)
  703. {
  704. col.DataType = typeof(string);
  705. }
  706. foreach (DataRow row in table.Rows)
  707. {
  708. DataRow newrow = dtCloned.NewRow();
  709. foreach (DataColumn column in dtCloned.Columns)
  710. {
  711. newrow[column.ColumnName] = row[column.ColumnName].ToString();
  712. }
  713. dtCloned.Rows.Add(newrow);
  714. }
  715. if (Invmes.Rows.Count > 0)
  716. {
  717. dtCloned.Merge(Invmes, false);
  718. }
  719. return dtCloned;
  720. }
  721. public DataRow GetInvRow(string id)
  722. {
  723. string sql = @"select companycode as 公司代码,COSTANALYSISTEMPLATE as 成本分析模板 ,CREATEDATE as 创建日期,CreateTime as 创建时间,CREATEUSER as 创建用户,HASCOSTDETAILS as 成本明细,ISINCLUDETAX as 是否含税,ITEMCLASSID as 物料分类代码,
  724. b.itemcode as ,b.itemname as ,CASE b.ITEMTYPE WHEN 'Real' then '' else '' end as ,a.invstd as ,logdate as ,logtime as ,LOGUSER as ,memo as ,PRINCINGITEMCODE as ,REFERPRICE as ,CURRENCY as ,REQUESTQUANTITY as ,RFQCODE as ,RFQITEMREFERCODE as ,startdate as ,Requirements as ,
  725. unit as ,B.ID,b.workpoint from icsSORRFQ2NORMALITEM b
  726. left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
  727. where B.id='" + id + "'";
  728. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  729. if (table.Rows.Count <= 0)
  730. {
  731. return Invmes.Select("ID='" + id + "'").Single();
  732. }
  733. else
  734. {
  735. return table.Rows[0];
  736. }
  737. }
  738. public void UpdateInvRow(string id, string json)
  739. {
  740. var data = json.ToJObject();
  741. string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  742. string sql = @"update icsSORRFQ2NORMALITEM set COSTANALYSISTEMPLATE='" + data["COSTANALYSISTEMPLATE"].ToString() + @"',
  743. HASCOSTDETAILS='" + data["HASCOSTDETAILS"].ToString() + @"',ISINCLUDETAX='" + data["ISINCLUDETAX"].ToString() + @"',itemcode='" + data["itemcode"].ToString() + @"',
  744. itemname='" + data["itemname"].ToString() + @"',ITEMTYPE='" + data["invtype"].ToString() + @"',logdate='" + data["logdate"].ToString() + "',logtime='" + data["logtime"].ToString() + @"',
  745. LOGUSER='" + usercode.ToString() + @",memo='" + data["memo"] + "',PRINCINGITEMCODE='" + data["PRINCINGITEMCODE"].ToString() + "',REQUESTQUANTITY='" + data["REQUESTQUANTITY"].ToString() + @"',
  746. RFQCODE='" + data["RFQCODE"].ToString() + "',RFQITEMREFERCODE='" + data["RFQITEMREFERCODE"].ToString() + "',STARTDATE='" + data["startdate"].ToString() + "',unit='" + data["unit"] + @"',CURRENCY='" + data["currency"].ToString() + @"',REFERPRICE='" + data["REFERPRICE"].ToString() + @"'
  747. WHERE ID='" + id + @"'
  748. ";
  749. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  750. if (count <= 0)
  751. {
  752. DataRow row = Invmes.Select("ID ='" + id + "'").Single();
  753. row["成本分析模板"] = data["COSTANALYSISTEMPLATE"];
  754. row["成本明细"] = data["HASCOSTDETAILS"];
  755. row["是否含税"] = data["ISINCLUDETAX"];
  756. row["物料分类代码"] = data["itemclass"];
  757. row["物料代码"] = data["itemcode"];
  758. row["物料名称"] = data["itemname"];
  759. row["物料类型"] = data["invtype"];
  760. row["物料规格"] = data["itemstd"];
  761. row["更新日期"] = data["logdate"];
  762. row["更新时间"] = data["logtime"];
  763. row["更新用户"] = usercode;
  764. row["备注"] = data["memo"];
  765. row["定价物料编码"] = data["PRINCINGITEMCODE"];
  766. row["预计需求量"] = data["REQUESTQUANTITY"];
  767. row["询价单编码"] = data["RFQCODE"];
  768. row["文件路径"] = data["RFQITEMREFERCODE"];
  769. row["有效期开始"] = data["startdate"];
  770. row["单位"] = data["unit"];
  771. }
  772. }
  773. public DataTable GetSup(string queryJson, ref Pagination jqgridparam)
  774. {
  775. string ParentId = "";
  776. var queryParam = queryJson.ToJObject();
  777. List<DbParameter> parameter = new List<DbParameter>();
  778. string sql = @"SELECT DISTINCT a.VenCode cvencode,a.VenName cvenname, VenExch_name as currency,a.VenPerson cvenperson, a.VenHand cvenhand,a.VenAddress cvenaddress,
  779. VenDisRate iVenTaxRate, VCName cVenType from ICSVendor a
  780. LEFT JOIN dbo.Sys_SRM_User b ON a.VenCode=b.F_VenCode AND a.WorkPoint=b.F_Location
  781. where 1=1 ";
  782. if (!string.IsNullOrWhiteSpace(queryParam["supcode"].ToString()))
  783. {
  784. sql += " and a.vencode like '%" + queryParam["supcode"].ToString() + "%'";
  785. }
  786. if (!string.IsNullOrWhiteSpace(queryParam["suppliername"].ToString()))
  787. {
  788. sql += " and a.venname like '%" + queryParam["suppliername"].ToString() + "%'";
  789. }
  790. if (!string.IsNullOrWhiteSpace(queryParam["WorkPoint"].ToString()))
  791. {
  792. sql += " and a.WorkPoint ='" + queryParam["WorkPoint"].ToString() + "'";
  793. }
  794. //if (!string.IsNullOrWhiteSpace(queryParam["Type"].ToString()))
  795. //{
  796. // if(queryParam["Type"].ToString()=="1"){
  797. // sql += " and LEN(VenRegCode)>14";
  798. // }
  799. //}
  800. if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
  801. {
  802. sql = SqlHelper.OrganizeByVendor_F_ParentId(sql, NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  803. }
  804. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  805. }
  806. public void AddSuptoTemp(string json)
  807. {
  808. JArray res = (JArray)JsonConvert.DeserializeObject(json.ToString());
  809. foreach (var item in res)
  810. {
  811. JObject data = (JObject)item;
  812. if (Supplier.Columns.Count <= 0)
  813. {
  814. Supplier.Columns.Add("公司代码", typeof(string));
  815. Supplier.Columns.Add("创建日期", typeof(string));
  816. Supplier.Columns.Add("创建时间", typeof(string));
  817. Supplier.Columns.Add("创建用户", typeof(string));
  818. Supplier.Columns.Add("供应商币别", typeof(string));
  819. Supplier.Columns.Add("是否关闭", typeof(string));
  820. Supplier.Columns.Add("是否所有物料已报价", typeof(string));
  821. Supplier.Columns.Add("是否显示参考价", typeof(string));
  822. Supplier.Columns.Add("供应商地点代码", typeof(string));
  823. Supplier.Columns.Add("更新日期", typeof(string));
  824. Supplier.Columns.Add("更新时间", typeof(string));
  825. Supplier.Columns.Add("更新用户", typeof(string));
  826. Supplier.Columns.Add("供应商付款条件", typeof(string));
  827. Supplier.Columns.Add("PRINCINGVENDORCODE", typeof(string));
  828. Supplier.Columns.Add("询价单编码", typeof(string));
  829. Supplier.Columns.Add("供应商税率", typeof(string));
  830. Supplier.Columns.Add("供应商代码", typeof(string));
  831. Supplier.Columns.Add("供应商名称", typeof(string));
  832. Supplier.Columns.Add("供应商类型", typeof(string));
  833. Supplier.Columns.Add("联系人", typeof(string));
  834. Supplier.Columns.Add("联系人电话", typeof(string));
  835. Supplier.Columns.Add("关闭原因", typeof(string));
  836. Supplier.Columns.Add("ID", typeof(string));
  837. Supplier.Columns.Add("workpoint", typeof(string));
  838. }
  839. if (!String.IsNullOrEmpty(data["id"].ToString()))
  840. {
  841. UpdateSupRow(data["id"].ToString(), json);
  842. }
  843. else
  844. {
  845. string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  846. DataRow newrow = Supplier.NewRow();
  847. newrow["公司代码"] = data["companycode"];
  848. newrow["创建日期"] = data["createdate"];
  849. newrow["创建时间"] = data["createtime"];
  850. newrow["创建用户"] = usercode;
  851. newrow["供应商币别"] = data["currency"];
  852. newrow["是否关闭"] = data["isclosed"];
  853. newrow["是否所有物料已报价"] = data["isquoted"];
  854. newrow["是否显示参考价"] = data["isshowprice"];
  855. newrow["供应商地点代码"] = data["locationcode"];
  856. newrow["更新日期"] = data["logdate"];
  857. newrow["更新时间"] = data["logtime"];
  858. newrow["更新用户"] = usercode;
  859. newrow["供应商付款条件"] = data["paymentcondition"];
  860. newrow["PRINCINGVENDORCODE"] = data["PRINCINGVENDORCODE"];
  861. newrow["询价单编码"] = data["rfqcode"];
  862. newrow["供应商税率"] = data["rate"];
  863. newrow["供应商代码"] = data["code"];
  864. newrow["供应商名称"] = data["name"];
  865. newrow["供应商类型"] = data["type"];
  866. newrow["联系人"] = data["person"];
  867. newrow["联系人电话"] = data["phone"];
  868. newrow["关闭原因"] = data["closereason"];
  869. newrow["ID"] = GetNewid();
  870. newrow["workpoint"] = data["workpoint"];
  871. Supplier.Rows.Add(newrow);
  872. }
  873. }
  874. }
  875. public void UpdateSupRow(string id, string json)
  876. {
  877. var data = json.ToJObject();
  878. string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  879. string sql = @"update icsSORRFQ2VENDOR set COMPANYCODE='" + data["companycode"].ToString() + @"',
  880. CURRENCY='" + data["currency"].ToString() + @"',ISCLOSED='" + data["isclosed"].ToString() + @"',ISQUOTED='" + data["isquoted"] + @"',
  881. ISSHOWPRICE='" + data["isshowprice"].ToString() + "',LOCATIONCODE='" + data["locationcode"].ToString() + "',LOGDATE='" + data["logdate"] + "',LOGTIME='" + data["logtime"].ToString() + "',LOGUSER='" + usercode + @"',
  882. PAYMENTCONDITION='" + data["paymentcondition"].ToString() + "', PRINCINGVENDORCODE='" + data["PRINCINGVENDORCODE"].ToString() + "',RFQCODE='" + data["rfqcode"] + "',TAXRATE='" + data["rate"].ToString() + "',VENDORCODE='" + data["code"] + "',VENDORTYPE='" + data["type"].ToString() + "',ADDITION1='" + data["closereason"].ToString() + @"'
  883. where id='" + id + "'";
  884. ;
  885. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  886. if (count <= 0)
  887. {
  888. DataRow newrow = Supplier.Select("ID ='" + id + "'").Single();
  889. newrow["公司代码"] = data["companycode"];
  890. newrow["供应商币别"] = data["currency"];
  891. newrow["是否关闭"] = data["isclosed"];
  892. newrow["是否所有物料已报价"] = data["isquoted"];
  893. newrow["是否显示参考价"] = data["isshowprice"];
  894. newrow["供应商地点代码"] = data["locationcode"];
  895. newrow["更新日期"] = data["logdate"];
  896. newrow["更新时间"] = data["logtime"];
  897. newrow["更新用户"] = usercode;
  898. newrow["供应商付款条件"] = data["paymentcondition"];
  899. newrow["PRINCINGVENDORCODE"] = data["PRINCINGVENDORCODE"];
  900. newrow["询价单编码"] = data["rfqcode"];
  901. newrow["供应商税率"] = data["rate"];
  902. newrow["供应商代码"] = data["code"];
  903. newrow["供应商名称"] = data["name"];
  904. newrow["供应商类型"] = data["type"];
  905. newrow["联系人"] = data["person"];
  906. newrow["联系人电话"] = data["phone"];
  907. newrow["关闭原因"] = data["closereason"];
  908. }
  909. }
  910. public DataTable GetSupTable(string rfqno)
  911. {
  912. string sql = @"select COMPANYCODE as 公司代码,CREATEDATE as 创建日期,CREATETIME as 创建时间,CREATEUSER as 创建用户,CURRENCY as 供应商币别,
  913. ISCLOSED as ,ISQUOTED as ,ISSHOWPRICE as ,locationcode as ,logdate as ,
  914. logtime as ,LOGUSER as ,paymentcondition as ,PRINCINGVENDORCODE,RFQCODE as ,TAXRATE as ,
  915. VENDORCODE as ,VenName as ,VENDORTYPE as ,VENPERSON AS ,venhand as ,ADDITION1 AS ,icsSORRFQ2VENDOR.ID,icsSORRFQ2VENDOR.workpoint
  916. FROM icsSORRFQ2VENDOR
  917. left join icsvendor on ICSVendor.vencode=icsSORRFQ2VENDOR.VENDORCODE AND icsSORRFQ2VENDOR.workpoint=icsvendor.workpoint
  918. where RFQCODE='" + rfqno + @"'
  919. ";
  920. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  921. DataTable dtCloned = table.Clone();
  922. foreach (DataColumn col in dtCloned.Columns)
  923. {
  924. col.DataType = typeof(string);
  925. }
  926. foreach (DataRow row in table.Rows)
  927. {
  928. DataRow newrow = dtCloned.NewRow();
  929. foreach (DataColumn column in dtCloned.Columns)
  930. {
  931. newrow[column.ColumnName] = row[column.ColumnName].ToString();
  932. }
  933. dtCloned.Rows.Add(newrow);
  934. }
  935. if (Supplier.Rows.Count > 0)
  936. {
  937. dtCloned.Merge(Supplier, false);
  938. }
  939. return dtCloned;
  940. }
  941. public DataRow GetSuprow(string id)
  942. {
  943. string sql = @"select COMPANYCODE as 公司代码,CREATEDATE as 创建日期,CREATETIME as 创建时间,CREATEUSER as 创建用户,CURRENCY as 供应商币别,
  944. ISCLOSED as ,ISQUOTED as ,ISSHOWPRICE as ,locationcode as ,logdate as ,
  945. logtime as ,LOGUSER as ,paymentcondition as ,PRINCINGVENDORCODE,RFQCODE as ,TAXRATE as ,
  946. VENDORCODE as ,cVenName as ,VENDORTYPE as ,CVENPERSON AS ,cvenhand as ,ADDITION1 AS ,ID,icsSORRFQ2VENDOR.workpoint FROM icsSORRFQ2VENDOR
  947. left join icsvendor on ICSVendor.cvencode=icsSORRFQ2VENDOR.VENDORCODE
  948. where icsSORRFQ2VENDOR.id='" + id + @"';
  949. ";
  950. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  951. if (table.Rows.Count <= 0)
  952. {
  953. return Supplier.Select("ID='" + id + "'").Single();
  954. }
  955. else
  956. {
  957. return table.Rows[0];
  958. }
  959. }
  960. public string DeleteSupTab(string keyValue)
  961. {
  962. string msg = string.Empty;
  963. try
  964. {
  965. string sql = @"delete from icsSORRFQ2VENDOR where id in ('" + keyValue + "')";
  966. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  967. }
  968. catch (Exception ex)
  969. {
  970. msg = ex.Message + " 删除失败!";
  971. }
  972. return msg;
  973. }
  974. /// <summary>
  975. /// 发布询价
  976. /// </summary>
  977. /// <param name="json"></param>
  978. /// <returns></returns>
  979. public string Publish(string json)
  980. {
  981. string msg = string.Empty;
  982. string wheresql = "(";
  983. string[] id = json.Split(',');
  984. for (int i = 0; i < id.Length; i++)
  985. {
  986. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  987. }
  988. wheresql = wheresql.Trim(',') + ")";
  989. //发送邮件通知供应商
  990. string MailOpen = ConfigurationManager.ConnectionStrings["MailOpen"].ConnectionString;
  991. if (MailOpen == "true")
  992. {
  993. string SendHost = ConfigurationManager.ConnectionStrings["SendHost"].ConnectionString;
  994. string StrSendPort = ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString;
  995. int SendPort = 25;
  996. if (!string.IsNullOrEmpty(StrSendPort))
  997. SendPort = Convert.ToInt32(ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString);
  998. string SendDisplayName = ConfigurationManager.ConnectionStrings["SendDisplayName"].ConnectionString;
  999. string SendAddress = ConfigurationManager.ConnectionStrings["SendAddress"].ConnectionString;
  1000. string SendPassword = ConfigurationManager.ConnectionStrings["SendPassword"].ConnectionString;
  1001. string sqlEmail = @"SELECT F_EMail,VenDorCode,F_RealName,a.RFQCODE FROM icsSORRFQ2VENDOR a
  1002. LEFT JOIN sys_SRM_User b ON a.VenDorCode=b.F_VenCode and a.workpoint=b.F_Location
  1003. where RFQCODE in " + wheresql + "";
  1004. DataTable dt = SqlHelper.GetDataTableBySql(sqlEmail);
  1005. foreach (DataRow dr in dt.Rows)
  1006. {
  1007. string cVenCode = dr["VenDorCode"].ToString();
  1008. string TOAddress = dr["F_Email"].ToString();
  1009. string[] Partint = TOAddress.Split(';');
  1010. if (!string.IsNullOrEmpty(TOAddress))
  1011. {
  1012. foreach (var p in Partint)
  1013. {
  1014. string CCAddress = "";
  1015. string Subject = "有来自佑伦SRM平台新发布的询价信息";
  1016. bool isBodyHtml = false;
  1017. string F_RealName = dr["F_RealName"].ToString();
  1018. //string StarTime = dr["StarTime"].ToString();
  1019. //string EndTime = dr["EndTime"].ToString();
  1020. string RFQCODE = dr["RFQCODE"].ToString();
  1021. string NowDate = DateTime.Now.GetDateTimeFormats('D')[0].ToString();
  1022. string body = F_RealName + ":";
  1023. body += " \r\n\r\n\r\n 您有一个询价单号:" + RFQCODE + "待报价 ,请进行登录 SRM进行报价!";
  1024. body += "\r\n";
  1025. body += " 顺颂商祺!";
  1026. body += "\r\n";
  1027. body += " 佑伦真空设备科技有限公司";
  1028. body += "\r\n";
  1029. body += " " + NowDate;
  1030. string StrConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  1031. if (!string.IsNullOrEmpty(TOAddress))
  1032. {
  1033. try
  1034. {
  1035. SendEmail(StrConn, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, p.ToString(), CCAddress, Subject, isBodyHtml, body);
  1036. }
  1037. catch (Exception ex)
  1038. {
  1039. throw new Exception("供应商:" + cVenCode + "邮件发送失败! \r\n" + ex.Message);
  1040. }
  1041. }
  1042. else
  1043. {
  1044. msg = "请先维护供应商:" + F_RealName + "邮箱!";
  1045. }
  1046. }
  1047. }
  1048. }
  1049. }
  1050. string sql = "update icsSORRFQ set STATUS='Publish' where RFQCODE in " + wheresql;
  1051. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1052. if (count > 0)
  1053. {
  1054. msg = "发布成功!";
  1055. }
  1056. else
  1057. {
  1058. msg = "发布失败!";
  1059. }
  1060. return msg;
  1061. }
  1062. 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)
  1063. {
  1064. try
  1065. {
  1066. SmtpClient smtpClient = new SmtpClient
  1067. {
  1068. //EnableSsl = false,
  1069. UseDefaultCredentials = false,
  1070. Host = SendHost,
  1071. Port = SendPort,
  1072. Credentials = new NetworkCredential(SendAddress, SendPassword)
  1073. };
  1074. MailMessage mailMessage = new MailMessage
  1075. {
  1076. Subject = Subject,
  1077. SubjectEncoding = Encoding.GetEncoding("utf-8"),
  1078. BodyEncoding = Encoding.GetEncoding("utf-8"),
  1079. From = new MailAddress(SendAddress, SendDisplayName),
  1080. IsBodyHtml = IsBodyHtml,
  1081. Body = Body
  1082. };
  1083. string[] array = TOAddress.Split(new char[]
  1084. {
  1085. ','
  1086. });
  1087. string[] array2 = array;
  1088. for (int i = 0; i < array2.Length; i++)
  1089. {
  1090. string text = array2[i];
  1091. if (!string.IsNullOrEmpty(text))
  1092. {
  1093. mailMessage.To.Add(text);
  1094. }
  1095. }
  1096. string[] array3 = CCAddress.Split(new char[]
  1097. {
  1098. ','
  1099. });
  1100. array2 = array3;
  1101. for (int i = 0; i < array2.Length; i++)
  1102. {
  1103. string text2 = array2[i];
  1104. if (!string.IsNullOrEmpty(text2))
  1105. {
  1106. mailMessage.CC.Add(text2);
  1107. }
  1108. }
  1109. ServicePointManager.ServerCertificateValidationCallback = ((object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) => true);
  1110. smtpClient.Send(mailMessage);
  1111. // InsertData(ConnectionString, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, TOAddress, CCAddress, Subject, IsBodyHtml, Body, "1", null);
  1112. }
  1113. catch (Exception ex)
  1114. {
  1115. //InsertData(ConnectionString, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, TOAddress, CCAddress, Subject, IsBodyHtml, Body, "2", ex.Message);
  1116. throw;
  1117. }
  1118. }
  1119. public string Close(string json)
  1120. {
  1121. string wheresql = "(";
  1122. string[] id = json.Split(',');
  1123. for (int i = 0; i < id.Length; i++)
  1124. {
  1125. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  1126. }
  1127. wheresql = wheresql.Trim(',') + ")";
  1128. string sql = "update icsSORRFQ set STATUS='Close' where RFQCODE in " + wheresql;
  1129. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1130. if (count > 0)
  1131. {
  1132. return "关闭成功!";
  1133. }
  1134. else
  1135. {
  1136. return "关闭失败!";
  1137. }
  1138. }
  1139. public string delete(string json)
  1140. {
  1141. try
  1142. {
  1143. string wheresql = "(";
  1144. string[] id = json.Split(',');
  1145. for (int i = 0; i < id.Length; i++)
  1146. {
  1147. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  1148. }
  1149. wheresql = wheresql.Trim(',') + ")";
  1150. string sql = "delete from icsSORRFQ where RFQCODE in" + wheresql;
  1151. sql += " delete from ICSSORRFQ2VENDOR where RFQCODE in" + wheresql;
  1152. sql += " delete from ICSSORRFQ2NORMALITEM where RFQCODE in" + wheresql;
  1153. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1154. if (count > 0)
  1155. {
  1156. return "删除成功!";
  1157. }
  1158. else
  1159. {
  1160. return "删除失败!";
  1161. }
  1162. }
  1163. catch (Exception ex)
  1164. {
  1165. return ex.Message + " 删除失败!";
  1166. }
  1167. }
  1168. public DataTable GetRfqAndBJ(string rfqno)
  1169. {
  1170. //获取已报价的供应商
  1171. string sql1 = "select VENDORCODE from icsSORQUOTATION where rfqcode='" + rfqno + "' and STATUS='Publish'";
  1172. DataTable table = Repository().FindDataSetBySql(sql1).Tables[0];
  1173. string vendorcode = "";
  1174. string novendorcode = "";
  1175. List<string> hasbj = new List<string>();
  1176. List<string> bjyet = new List<string>();
  1177. List<string> hasbj2 = new List<string>();
  1178. List<string> bjyet2 = new List<string>();
  1179. foreach (DataRow row in table.Rows)
  1180. {
  1181. vendorcode += row["VENDORCODE"].ToString() + ",";
  1182. hasbj.Add(row["VENDORCODE"].ToString());
  1183. bjyet.Add(row["VENDORCODE"].ToString());
  1184. }
  1185. vendorcode = vendorcode.Trim(',');
  1186. string sql2 = "select a.VENDORCODE as VENDORCODE from icsSORRFQ2VENDOR a left join ICSSORQUOTATION b on a.RFQCODE=b.RFQCODE and a.VENDORCODE=b.VENDORCODE where a.rfqcode='" + rfqno + "' and (b.STATUS='New' or isnull(b.STATUS,'')='') ";
  1187. DataTable table1 = Repository().FindDataSetBySql(sql2).Tables[0];
  1188. foreach (DataRow row1 in table1.Rows)
  1189. {
  1190. //if (hasbj2.Contains(row1["VENDORCODE"].ToString())) {
  1191. // bjyet2.Remove(row1["VENDORCODE"].ToString());
  1192. //}
  1193. novendorcode += row1["VENDORCODE"].ToString() + ",";
  1194. hasbj2.Add(row1["VENDORCODE"].ToString());
  1195. bjyet2.Add(row1["VENDORCODE"].ToString());
  1196. }
  1197. novendorcode = novendorcode.Trim(',');
  1198. //
  1199. string sql = @"select companycode as 公司代码,COSTANALYSISTEMPLATE as 成本分析模板 ,CREATEDATE as 创建日期,CreateTime as 创建时间,CREATEUSER as 创建用户,HASCOSTDETAILS as 成本明细,ISINCLUDETAX as 是否含税,ITEMCLASSID as 物料分类代码,
  1200. b.itemcode as ,b.itemname as , b.ITEMTYPE AS ,a.invstd as ,logdate as ,logtime as ,LOGUSER as ,memo as ,PRINCINGITEMCODE as ,REFERPRICE as ,CURRENCY as ,REQUESTQUANTITY as ,RFQCODE as ,RFQITEMREFERCODE as ,Convert(varchar(10),startdate,120) as ,
  1201. unit as ,B.ID,b.workpoint,'" + vendorcode + @"' as ,'" + novendorcode + @"' AS from icsSORRFQ2NORMALITEM b
  1202. left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
  1203. where RFQCODE='" + rfqno + @"'
  1204. ";
  1205. DataTable table3 = Repository().FindDataSetBySql(sql).Tables[0];
  1206. return table3;
  1207. }
  1208. public DataTable GetRfqSup(string rfqno)
  1209. {
  1210. string sql = @"select icsSORRFQ2VENDOR.COMPANYCODE as 公司代码,icsSORRFQ2VENDOR.CREATEDATE as 创建日期,icsSORRFQ2VENDOR.CREATETIME as 创建时间,icsSORRFQ2VENDOR.CREATEUSER as 创建用户,CURRENCY as 供应商币别,
  1211. ISCLOSED as ,ISQUOTED as ,ISSHOWPRICE as ,locationcode as ,icsSORRFQ2VENDOR.logdate as ,
  1212. icsSORRFQ2VENDOR.logtime as ,icsSORRFQ2VENDOR.LOGUSER as ,paymentcondition as ,PRINCINGVENDORCODE,icsSORRFQ2VENDOR.RFQCODE as ,TAXRATE as ,
  1213. icsSORRFQ2VENDOR.VENDORCODE as ,VenName as ,VENDORTYPE as ,VENPERSON AS ,venhand as ,icsSORRFQ2VENDOR.CauseOff AS ,icsSORRFQ2VENDOR.ID,icsSORRFQ2VENDOR.workpoint,c.QUOTATIONCODE as FROM icsSORRFQ2VENDOR
  1214. left join icsvendor on ICSVendor.vencode=icsSORRFQ2VENDOR.VENDORCODE and ICSVendor.WorkPoint=icsSORRFQ2VENDOR.WorkPoint
  1215. left join icsSORQUOTATION c on c.vendorcode=icsSORRFQ2VENDOR.VENDORCODE and c.rfqcode=icsSORRFQ2VENDOR.RFQCODE and c.WorkPoint=icsSORRFQ2VENDOR.WorkPoint
  1216. where icsSORRFQ2VENDOR.RFQCODE='" + rfqno + @"'
  1217. ";
  1218. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  1219. return table;
  1220. }
  1221. public DataTable GetRfqSup(string rfqno, string invcode, string workpoint, string queryJson, ref Pagination jqgridparam)
  1222. {
  1223. var Jobject = queryJson.ToJObject();
  1224. string sql = @"select icsSORRFQ2VENDOR.COMPANYCODE as 公司代码,icsSORRFQ2VENDOR.CREATEDATE as 创建日期,icsSORRFQ2VENDOR.CREATETIME as 创建时间,icsSORRFQ2VENDOR.CREATEUSER as 创建用户,icsSORRFQ2VENDOR.CURRENCY as 供应商币别,
  1225. ISCLOSED as ,ISQUOTED as ,ISSHOWPRICE as ,locationcode as ,icsSORRFQ2VENDOR.logdate as ,
  1226. icsSORRFQ2VENDOR.logtime as ,icsSORRFQ2VENDOR.LOGUSER as ,paymentcondition as ,PRINCINGVENDORCODE,icsSORRFQ2VENDOR.RFQCODE as ,TAXRATE as ,
  1227. icsSORRFQ2VENDOR.VENDORCODE as ,cVenName as ,VENDORTYPE as ,CVENPERSON AS ,cvenhand as ,isnull(d.VENDORREJECTREASON,'') AS ,icsSORRFQ2VENDOR.workpoint,c.QUOTATIONCODE as ,D.QUOPRICE AS ,
  1228. CASE D.QUOSTATUS
  1229. WHEN 'Pending' THEN ''
  1230. WHEN 'InitApprove' THEN ''
  1231. WHEN 'InitReject' THEN ''
  1232. WHEN 'PricingAppraising' THEN ''
  1233. WHEN 'PricingApprove' THEN ''
  1234. WHEN 'PricingReject' THEN ''
  1235. WHEN 'RFCancel' THEN ''
  1236. WHEN 'VendorCheck' THEN ''
  1237. end as ,
  1238. CASE D.QUOSTATUS
  1239. WHEN 'Pending' THEN ''
  1240. WHEN 'InitApprove' THEN ''
  1241. WHEN 'InitReject' THEN ''
  1242. WHEN 'PricingAppraising' THEN ''
  1243. WHEN 'PricingApprove' THEN ''
  1244. WHEN 'PricingReject' THEN ''
  1245. WHEN 'RFCancel' THEN ''
  1246. WHEN 'VendorCheck' THEN ''
  1247. end as Hidden,
  1248. d.QUOBUYERPRICE AS ,
  1249. COSTDETAILSREFERCODE AS ,
  1250. e.RFQITEMREFERCODE as ,
  1251. d.VENDORMEMO as ,e.ITEMCODE,e.ITEMNAME,d.ADDITION1 as PricingRemark
  1252. FROM icsSORRFQ2VENDOR
  1253. left join icsvendor on ICSVendor.cvencode=icsSORRFQ2VENDOR.VENDORCODE
  1254. left join icsSORQUOTATION c on c.vendorcode=icsSORRFQ2VENDOR.VENDORCODE and c.rfqcode=icsSORRFQ2VENDOR.RFQCODE
  1255. left join icsSORQUODETAILNORMAL d on d.QUOTATIONCODE=c.QUOTATIONCODE
  1256. left join icsSORRFQ2NORMALITEM e on e.RFQCODE=icsSORRFQ2VENDOR.RFQCODE and d.itemcode=e.itemcode
  1257. where icsSORRFQ2VENDOR.RFQCODE='" + rfqno + @"'AND ISNULL(c.QUOTATIONCODE,'')<>'' ";
  1258. List<DbParameter> parameter = new List<DbParameter>();
  1259. if (!string.IsNullOrEmpty(Jobject["InvCode"].ToString()))
  1260. {
  1261. sql += " and icsSORRFQ2VENDOR.VENDORCODE like '%" + Jobject["InvCode"].ToString() + "%' ";
  1262. }
  1263. if (!string.IsNullOrEmpty(Jobject["InvName"].ToString()))
  1264. {
  1265. sql += " and cVenName like '%" + Jobject["InvName"].ToString() + "%' ";
  1266. }
  1267. if (!string.IsNullOrEmpty(Jobject["ItemCode"].ToString()))
  1268. {
  1269. sql += " and e.ITEMCODE like '%" + Jobject["ItemCode"].ToString() + "%' ";
  1270. }
  1271. if (!string.IsNullOrEmpty(Jobject["ItemName"].ToString()))
  1272. {
  1273. sql += " and e.ITEMNAME like '%" + Jobject["ItemName"].ToString() + "%' ";
  1274. }
  1275. if (!string.IsNullOrWhiteSpace(workpoint))
  1276. {
  1277. sql += " and e.WorkPoint=" + workpoint + "";
  1278. }
  1279. //sql += " Order by e.ITEMCODE";
  1280. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1281. }
  1282. public string SaveSCprice(string json)
  1283. {
  1284. try
  1285. {
  1286. var jobject = JArray.Parse(json);
  1287. string result = "";
  1288. for (int i = 0; i < jobject.Count; i++)
  1289. {
  1290. decimal price = Convert.ToDecimal(jobject[i]["协商价格"]);
  1291. string sql = "update icsSORQUODETAILNORMAL set QUOBUYERPRICE=" + price + " where QUOTATIONCODE='" + jobject[i]["最新报价单号"] + "' and ITEMCODE='" + jobject[i]["Invcode"] + "' ";
  1292. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1293. if (count <= 0)
  1294. result = "保存失败";
  1295. else
  1296. result = "保存成功";
  1297. }
  1298. return result;
  1299. }
  1300. catch (Exception ex)
  1301. {
  1302. return ex.Message;
  1303. }
  1304. }
  1305. /// <summary>
  1306. /// 定价通过
  1307. /// </summary>
  1308. /// <param name="json"></param>
  1309. /// <returns></returns>
  1310. ///
  1311. public string AgreeCS(string json)
  1312. {
  1313. string ERPOpen = ConfigurationManager.ConnectionStrings["ERPOpen"].ConnectionString;
  1314. DateTime dDisableDate = new DateTime(2099, 12, 31, 0, 0, 0, 0);
  1315. string msg = "";
  1316. try
  1317. {
  1318. string GGUID = Guid.NewGuid().ToString();
  1319. var jobject = JArray.Parse(json);
  1320. bool IsInput;
  1321. string MessAge = string.Empty;
  1322. for (int i = 0; i < jobject.Count; i++)
  1323. {
  1324. var resultss = jobject[i]["ZBVendorCode"].ToArray();
  1325. ////string[] resultss = (string[])jobject[i]["ZBVendorCode"]//企业信息
  1326. //string[] resultss = (string[])VendorCode;
  1327. //var jobjects = JArray.Parse(jobject[i]["ZBVendorCode"].ToString());
  1328. for (int s = 0; s < resultss.Length; s++)
  1329. {
  1330. string Vendor = resultss[s].ToString();
  1331. string sql = "";
  1332. sql = @"SELECT ITEMCODE,ITEMNAME,UNIT,1 AS bTaxCost,1 AS iSupplyType,'人民币' cExch_Name,a.WorkPoint,'' AS dEnableDate,'' AS dDisableDate
  1333. ,a.QUOTATIONCODE,b.VENDORCODE FROM icsSORQUODETAILNORMAL a
  1334. LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1335. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1336. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  1337. DataTable dt = Repository().FindTableBySql(sql.ToString());
  1338. sql = @"SELECT 0 AS iLowerLimit, REQUESTQUANTITY AS iUpperLimit, QUOPRICE as iTaxUnitPrice ,b.VENDORMEMO AS iTaxRate,ROUND(ROUND( QUOPRICE,2)/(1+(b.VENDORMEMO/CAST(100 AS float))),2) AS iUnitPrice,a.WorkPoint,a.QUOTATIONCODE,b.VENDORCODE FROM icsSORQUODETAILNORMAL a
  1339. LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1340. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1341. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  1342. DataTable dtD = Repository().FindTableBySql(sql.ToString());
  1343. List<ICSSSSROCS> asnlist = new List<ICSSSSROCS>();
  1344. for (int k = 0; k < dt.Rows.Count; k++)
  1345. {
  1346. if (ERPOpen == "true")
  1347. {
  1348. ICSSSSROCS asn = new ICSSSSROCS();
  1349. asn.ID = GGUID;
  1350. asn.cInvCode = dt.Rows[k]["ITEMCODE"].ToString();
  1351. asn.cVenCode = dt.Rows[k]["VENDORCODE"].ToString();
  1352. asn.cComUnitCode = dt.Rows[k]["UNIT"].ToString();
  1353. //List.CompanyCode = EnCode;
  1354. asn.bTaxCost = Convert.ToInt32(dt.Rows[k]["bTaxCost"].ToString());
  1355. asn.iSupplyType = Convert.ToInt32(dt.Rows[k]["iSupplyType"].ToString());
  1356. asn.cExch_Name = dt.Rows[k]["cExch_Name"].ToString();
  1357. asn.WorkPoint = dt.Rows[k]["WorkPoint"].ToString();
  1358. asn.dEnableDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
  1359. asn.dDisableDate = dDisableDate;
  1360. DataRow[] drs = dtD.Select("QUOTATIONCODE='" + dt.Rows[k]["QUOTATIONCODE"].ToString() + "'");
  1361. for (int j = 0; j < drs.Length; j++)
  1362. {
  1363. CreateVendorInventoryPriceDetailEntity DetailList = new CreateVendorInventoryPriceDetailEntity();
  1364. DetailList.ID = GGUID;
  1365. DetailList.iLowerLimit = float.Parse(drs[j]["iLowerLimit"].ToString());
  1366. DetailList.iUpperLimit = float.Parse(drs[j]["iUpperLimit"].ToString());
  1367. DetailList.iUnitPrice = float.Parse(drs[j]["iUnitPrice"].ToString());
  1368. DetailList.iTaxRate = float.Parse(drs[j]["iTaxRate"].ToString());
  1369. DetailList.iTaxUnitPrice = float.Parse(drs[j]["iTaxUnitPrice"].ToString()); ;
  1370. DetailList.WorkPoint = drs[j]["WorkPoint"].ToString();
  1371. asn.list.Add(DetailList);
  1372. }
  1373. asnlist.Add(asn);
  1374. string input = JsonConvert.SerializeObject(asnlist);
  1375. string APIURL = ConfigurationManager.ConnectionStrings["XBJURL"].ConnectionString + "XBJInv_PriceByYL";
  1376. //string APIURL = "http://172.16.12.157:8100/api/XBJInv_Price";
  1377. //string APIURL = "http://localhost:19944//api/XBJInv_Price";
  1378. string result = HttpPost(APIURL, input);
  1379. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  1380. MessAge = Obj["Success"].ToString();
  1381. string Success = Obj["Message"].ToString();
  1382. if (MessAge.ToUpper() == "FALSE")
  1383. {
  1384. IsInput = false;
  1385. msg = Success;
  1386. }
  1387. else
  1388. {
  1389. IsInput = true;
  1390. sql = @"update a
  1391. set a.QUOSTATUS='PricingApprove'
  1392. from icsSORQUODETAILNORMAL a
  1393. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1394. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1395. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  1396. sql += " UPDATE icsSORRFQ SET STATUS='PricingApprove' where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  1397. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1398. if (count <= 0)
  1399. msg = "保存失败" + MessAge;
  1400. else
  1401. msg = "保存成功";
  1402. }
  1403. }
  1404. else
  1405. {
  1406. IsInput = true;
  1407. sql = @"update a
  1408. set a.QUOSTATUS='PricingApprove'
  1409. from icsSORQUODETAILNORMAL a
  1410. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1411. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1412. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  1413. sql += " UPDATE icsSORRFQ SET STATUS='PricingApprove' where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  1414. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1415. if (count <= 0)
  1416. msg = "保存失败" + MessAge;
  1417. else
  1418. msg = "保存成功";
  1419. }
  1420. }
  1421. }
  1422. }
  1423. }
  1424. catch (Exception ex)
  1425. {
  1426. return ex.Message;
  1427. }
  1428. return msg;
  1429. }
  1430. //public string AgreeCS(string json)
  1431. //{
  1432. // string ERPOpen = ConfigurationManager.ConnectionStrings["ERPOpen"].ConnectionString;
  1433. // DateTime dDisableDate = new DateTime(2099, 12, 31, 0, 0, 0, 0);
  1434. // string msg = "";
  1435. // try
  1436. // {
  1437. // string GGUID = Guid.NewGuid().ToString();
  1438. // var jobject = JArray.Parse(json);
  1439. // bool IsInput;
  1440. // string MessAge = string.Empty;
  1441. // int ivouchrowno = 1;
  1442. // for (int i = 0; i < jobject.Count; i++)
  1443. // {
  1444. // var resultss = jobject[i]["ZBVendorCode"].ToArray();
  1445. // string Vendors = resultss[0].ToString();
  1446. // ////string[] resultss = (string[])jobject[i]["ZBVendorCode"]//企业信息
  1447. // //string[] resultss = (string[])VendorCode;
  1448. // //var jobjects = JArray.Parse(jobject[i]["ZBVendorCode"].ToString());
  1449. // string sql = "";
  1450. // //sql = @"SELECT ITEMCODE,ITEMNAME,UNIT,,a.WorkPoint,'' AS dEnableDate,'' AS dDisableDate
  1451. // // ,a.QUOTATIONCODE,b.VENDORCODE FROM icsSORQUODETAILNORMAL a
  1452. // // LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1453. // // LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1454. // // where b.RFQCODE='" + jobject[i]["rfqno"] + "' ";
  1455. // //DataTable dt = Repository().FindTableBySql(sql.ToString());
  1456. // sql = @"SELECT 0 AS iLowerLimit, REQUESTQUANTITY AS iUpperLimit, QUOPRICE as iTaxUnitPrice ,b.VENDORMEMO AS iTaxRate,ROUND(ROUND( QUOPRICE,2)/(1+(b.VENDORMEMO/CAST(100 AS float))),2) AS iUnitPrice,a.WorkPoint,a.QUOTATIONCODE,b.VENDORCODE,ITEMCODE,'人民币' cExch_Name,
  1457. // 1 AS bTaxCost,1 AS iSupplyType
  1458. // FROM icsSORQUODETAILNORMAL a
  1459. // LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1460. // LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1461. // where b.RFQCODE='" + jobject[i]["rfqno"] + "' and c.VenName='" + Vendors + "'";
  1462. // DataTable dtD = Repository().FindTableBySql(sql.ToString());
  1463. // List<CreatePUPriceJustByYLEntity> asnlist = new List<CreatePUPriceJustByYLEntity>();
  1464. // log.Info("查询sql" + sql);
  1465. // if (ERPOpen == "true")
  1466. // {
  1467. // CreatePUPriceJustByYLEntity asn = new CreatePUPriceJustByYLEntity();
  1468. // asn.cmaker = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1469. // asn.cpersoncode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1470. // asn.cmainmemo = "";
  1471. // asn.cdepcode = "";
  1472. // //List.CompanyCode = EnCode;
  1473. // asn.bTaxCost = Convert.ToInt32(dtD.Rows[0]["bTaxCost"].ToString());
  1474. // asn.iSupplyType = Convert.ToInt32(dtD.Rows[0]["iSupplyType"].ToString());
  1475. // asn.WorkPoint = dtD.Rows[0]["WorkPoint"].ToString();
  1476. // for (int k = 0; k < dtD.Rows.Count; k++)
  1477. // {
  1478. // CreatePUPriceJustByYDetailsEntity DetailList = new CreatePUPriceJustByYDetailsEntity();
  1479. // DetailList.cvencode = dtD.Rows[k]["VENDORCODE"].ToString();
  1480. // DetailList.cinvcode = dtD.Rows[k]["ITEMCODE"].ToString();
  1481. // DetailList.dstartdate = DateTime.Now.ToString("yyyy-MM-dd");
  1482. // DetailList.fminquantity = float.Parse(dtD.Rows[k]["iLowerLimit"].ToString());
  1483. // DetailList.iUnitPrice = float.Parse(dtD.Rows[k]["iUnitPrice"].ToString());
  1484. // DetailList.iTaxRate = float.Parse(dtD.Rows[k]["iTaxRate"].ToString());
  1485. // DetailList.iTaxUnitPrice = float.Parse(dtD.Rows[k]["iTaxUnitPrice"].ToString()); ;
  1486. // DetailList.cexch_name = dtD.Rows[k]["cexch_name"].ToString();
  1487. // DetailList.ivouchrowno = ivouchrowno;
  1488. // ivouchrowno++;
  1489. // asn.list.Add(DetailList);
  1490. // }
  1491. // asnlist.Add(asn);
  1492. // string input = JsonConvert.SerializeObject(asnlist);
  1493. // log.Info("传入参数" + input);
  1494. // string APIURL = ConfigurationManager.ConnectionStrings["XBJURL"].ConnectionString + "PU_PriceJust";
  1495. // //string APIURL = "http://172.16.12.157:8100/api/PU_PriceJust";
  1496. // //string APIURL = "http://localhost:19944//api/PU_PriceJust";
  1497. // string result = HttpPost(APIURL, input);
  1498. // JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  1499. // log.Info("输出参数" + Obj);
  1500. // MessAge = Obj["Success"].ToString();
  1501. // string Success = Obj["Message"].ToString();
  1502. // if (MessAge.ToUpper() == "FALSE")
  1503. // {
  1504. // IsInput = false;
  1505. // msg = Success;
  1506. // }
  1507. // else
  1508. // {
  1509. // for (int s = 0; s < resultss.Length; s++)
  1510. // {
  1511. // string Vendor = resultss[s].ToString();
  1512. // IsInput = true;
  1513. // sql = @"update a
  1514. // set a.QUOSTATUS='PricingApprove'
  1515. // from icsSORQUODETAILNORMAL a
  1516. //left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1517. // LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1518. // where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  1519. // sql += " UPDATE icsSORRFQ SET STATUS='PricingApprove' where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  1520. // int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1521. // if (count <= 0)
  1522. // msg = "保存失败" + MessAge;
  1523. // else
  1524. // msg = "保存成功";
  1525. // }
  1526. // }
  1527. // }
  1528. // else
  1529. // {
  1530. // for (int s = 0; s < resultss.Length; s++)
  1531. // {
  1532. // string Vendor = resultss[s].ToString();
  1533. // IsInput = true;
  1534. // sql = @"update a
  1535. // set a.QUOSTATUS='PricingApprove'
  1536. // from icsSORQUODETAILNORMAL a
  1537. //left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1538. // LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1539. // where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  1540. // sql += " UPDATE icsSORRFQ SET STATUS='PricingApprove' where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  1541. // int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1542. // if (count <= 0)
  1543. // msg = "保存失败" + MessAge;
  1544. // else
  1545. // msg = "保存成功";
  1546. // }
  1547. // }
  1548. // }
  1549. // }
  1550. // catch (Exception ex)
  1551. // {
  1552. // log.Error(ex.Message);
  1553. // return ex.Message;
  1554. // }
  1555. // return msg;
  1556. //}
  1557. /// <summary>
  1558. /// 上传到OA
  1559. /// </summary>
  1560. /// <param name="json"></param>
  1561. /// <returns></returns>
  1562. public string AgreeByOA(string json)
  1563. {
  1564. var jobject = JArray.Parse(json);
  1565. string sql = "";
  1566. string sqls = "";
  1567. string msg = "";
  1568. try
  1569. {
  1570. #region 推送OA
  1571. string UserCodeOA = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1572. string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1573. sql = "select id from OA.dbo.org_member where code='" + UserCodeOA + "'";
  1574. log.Info("追加异常" + sql);
  1575. DataTable dtUserCodeOA = SqlHelper.GetDataTableBySql(sql);
  1576. if (dtUserCodeOA.Rows.Count <= 0)
  1577. {
  1578. log.Info(dtUserCodeOA.Rows.Count);
  1579. throw new Exception("发起账号OA系统中不存在!!");
  1580. }
  1581. DataTable dt = new DataTable();
  1582. var userInfo = new Dictionary<string, string>
  1583. {
  1584. {"userName", "ylzk-rest"},
  1585. {"password", "054d197d-73c2-4761-be58-a46efe6cd03f"},
  1586. {"loginName", UserCodeOA}
  1587. };
  1588. //var userInfo = new Dictionary<string, string>
  1589. // {
  1590. // {"userName", "ylzk-rest"},
  1591. // {"password", "054d197d-73c2-4761-be58-a46efe6cd03f"},
  1592. // {"loginName", "ylzk-rest"}
  1593. // };
  1594. // 序列化Dictionary为JSON字符串
  1595. string jsonString = JsonConvert.SerializeObject(userInfo, Formatting.Indented);
  1596. log.Info("获取Tocken传入参数:" + jsonString);
  1597. var reqInterNme = "https://oa.ylzk.com.cn:6443/seeyon/rest/token";
  1598. string responseStr = CertifiCationApp.HttpPost(reqInterNme, jsonString);
  1599. //var responseStr = httpGet(reqInterNme);
  1600. try
  1601. {
  1602. //JObject res = (JObject)JsonConvert.DeserializeObject(dtsql.Rows[0]["searchKey"].ToString());
  1603. JObject res = (JObject)JsonConvert.DeserializeObject(responseStr);
  1604. log.Info("输出Tocken参数:" + res);
  1605. string ID = res["id"].ToString();//获取Tockn
  1606. JObject resultbidUser = (JObject)JsonConvert.DeserializeObject(res["bindingUser"].ToString());
  1607. string id = resultbidUser["id"].ToString(); //用户ID
  1608. string departmentId = resultbidUser["departmentId"].ToString(); //部门ID
  1609. string postId = resultbidUser["postId"].ToString(); //岗位ID
  1610. //string Message = res["Message"].ToString();
  1611. if (!string.IsNullOrWhiteSpace(ID))
  1612. {
  1613. NFine.Domain._03_Entity.SRM.ICSSORRFQOA.datadetail dat = new NFine.Domain._03_Entity.SRM.ICSSORRFQOA.datadetail();
  1614. NFine.Domain._03_Entity.SRM.ICSSORRFQOA.datass dds = new NFine.Domain._03_Entity.SRM.ICSSORRFQOA.datass();
  1615. //string sqlFile = "SELECT Attachment1,Attachment2 FROM ICSPREVENDORProductionInspection Where TEMPVENDORCODE='" + TEMPVENDORCODE + "'and WorkPoint='" + WorkPoint + "'";
  1616. //DataTable dts = SqlHelper.GetDataTableBySql(sqlFile);
  1617. //string fileName = "" + dts.Rows[0]["Attachment1"].ToString() + ";" + dts.Rows[0]["Attachment2"].ToString();
  1618. //string[] PrintParas = fileName.Split(';');
  1619. int sort = 1;
  1620. string fileUrl = "";
  1621. ICSSORRFQOA da = new ICSSORRFQOA();
  1622. da.appName = "collaboration";
  1623. dat.templateCode = "gysbj";
  1624. dat.draft = "0";
  1625. dat.relateDoc = "";//(OA 公文附件 ID,默认为空,不使用)
  1626. dat.subject = "";//(OA 流程标题,默认为空,OA 端自动生成标题)
  1627. Domain._03_Entity.SRM.ICSSORRFQOA.formmain_0136 dm0021 = new Domain._03_Entity.SRM.ICSSORRFQOA.formmain_0136();
  1628. dm0021.field0001 = UserName;
  1629. dm0021.field0002 = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
  1630. dm0021.field0011 = jobject[0]["rfqno"].ToString();//询价单号
  1631. dds.formmain_0136 = dm0021;
  1632. dat.data = dds;
  1633. // sql = @"SELECT ROW_NUMBER() Over ( order by c.ITEMCODE desc ) As rowNum,c.ITEMCODE,c.ITEMNAME,f.InvStd,f.InvUnit
  1634. //,c.REQUESTQUANTITY,e.Remark,c.Material,c.PROCESS,c.SurfaceTreatment,c.Other,c.QUOPRICE
  1635. //,c.ADDITION1,d.VenName cVenName,b.VENDORCODE,ROUND(ROUND( QUOPRICE,2)/(1+(b.VENDORMEMO/CAST(100 AS float))),2) AS iUnitPrice,f.InvName
  1636. // FROM icsSORQUODETAILNORMAL c
  1637. // LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  1638. // LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  1639. // LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  1640. //left join ICSInventory f on c.ITEMCODE=f.InvCode and c.WorkPoint=f.WorkPoint
  1641. // WHERE b.RFQCODE='" + jobject[0]["rfqno"] + "'and d.VenName='" + Vendors + "'";
  1642. sql = @"SELECT ROW_NUMBER() Over ( order by c.ITEMCODE desc ) As rowNum,c.ITEMCODE,c.ITEMNAME,f.InvStd,f.InvUnit
  1643. ,c.REQUESTQUANTITY,e.Remark,c.Material,c.PROCESS,c.SurfaceTreatment,c.Other,c.QUOPRICE
  1644. ,c.ADDITION1,d.VenName cVenName,b.VENDORCODE,ROUND(ROUND( QUOPRICE,2)/(1+(b.VENDORMEMO/CAST(100 AS float))),2) AS iUnitPrice,c.RFQCODE,g.VenName AS djvencode,f.InvName,CAST(c.REQUESTQUANTITY * c.QUOPRICE AS DECIMAL(10, 4)) as field0021
  1645. ,h.SCQUOPRICE as field0026
  1646. FROM icsSORQUODETAILNORMAL c
  1647. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  1648. LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  1649. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  1650. left join ICSInventory f on c.ITEMCODE=f.InvCode and c.WorkPoint=f.WorkPoint
  1651. LEFT JOIN ( SELECT a.ITEMCODE,
  1652. STUFF((
  1653. SELECT DISTINCT ', ' + d2.VenName
  1654. FROM icsSORQUODETAILNORMAL a2
  1655. LEFT JOIN icsSORQUOTATION b2 ON a2.QUOTATIONCODE = b2.QUOTATIONCODE AND b2.WorkPoint = a2.WorkPoint
  1656. LEFT JOIN dbo.ICSVendor d2 ON b2.VENDORCODE = d2.VenCode AND b2.WorkPoint = d2.WorkPoint
  1657. WHERE a2.ITEMCODE = a.ITEMCODE AND a2.QUOSTATUS = 'PricingApproveByOA'
  1658. and a2.RFQCODE='" + jobject[0]["rfqno"] + @"'
  1659. FOR XML PATH(''), TYPE
  1660. ).value('.', 'NVARCHAR(MAX)'), 1, 2, '') AS VenName,
  1661. a.RFQCODE
  1662. FROM icsSORQUODETAILNORMAL a
  1663. WHERE a.QUOSTATUS = 'PricingApproveByOA'
  1664. GROUP BY a.ITEMCODE, a.RFQCODE)g ON c.RFQCODE=g.RFQCODE AND c.ITEMCODE=g.ITEMCODE
  1665. LEFT JOIN (SELECT
  1666. *
  1667. FROM (
  1668. SELECT
  1669. DISTINCT
  1670. ROW_NUMBER() OVER(PARTITION BY b.VENDORCODE,c.ITEMCODE ORDER BY a.CreateTime ASC) AS num,
  1671. d.VenName AS SupplierCode,
  1672. a.Price as SCQUOPRICE,
  1673. a.CreateTime as LOGDATE,
  1674. b.RFQCODE,
  1675. c.ITEMCODE
  1676. FROM
  1677. icsSORQUOTATION b
  1678. LEFT JOIN icsSORRFQ2VENDOR e ON b.RFQCODE=e.RFQCODE AND b.WorkPoint=e.WorkPoint AND b.VENDORCODE=e.VENDORCODE
  1679. LEFT JOIN icsSORQUODETAILNORMAL c ON c.RFQCODE=e.RFQCODE AND e.WorkPoint=c.WorkPoint AND c.QUOTATIONCODE=b.QUOTATIONCODE
  1680. LEFT JOIN dbo.ICSQuoteHistory a ON a.QuotationID=c.ID AND a.WorkPoint=c.WorkPoint
  1681. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  1682. WHERE
  1683. c.RFQCODE='" + jobject[0]["rfqno"] + @"'
  1684. ) AS subquery
  1685. ) h ON g.RFQCODE=h.RFQCODE AND d.VenName=h.SupplierCode and g.ITEMCODE=h.ITEMCODE and h.num='1'
  1686. WHERE c.RFQCODE='" + jobject[0]["rfqno"] + "'";
  1687. DataTable dtD = Repository().FindTableBySql(sql.ToString());
  1688. for (int k = 0; k < dtD.Rows.Count; k++)
  1689. {
  1690. List<NFine.Domain._03_Entity.SRM.ICSSORRFQOA.formson_0137> formson_0137 = new List<NFine.Domain._03_Entity.SRM.ICSSORRFQOA.formson_0137>();
  1691. Domain._03_Entity.SRM.ICSSORRFQOA.formson_0137 dm0022 = new Domain._03_Entity.SRM.ICSSORRFQOA.formson_0137();
  1692. dm0022.field0003 = dtD.Rows[k]["cVenName"].ToString();
  1693. dm0022.field0004 = dtD.Rows[k]["VENDORCODE"].ToString();
  1694. dm0022.field0005 = dtD.Rows[k]["InvName"].ToString();
  1695. dm0022.field0006 = dtD.Rows[k]["InvStd"].ToString();
  1696. dm0022.field0007 = Convert.ToDecimal(dtD.Rows[k]["QUOPRICE"].ToString());
  1697. dm0022.field0008 = Convert.ToDecimal(dtD.Rows[k]["iUnitPrice"].ToString());
  1698. dm0022.field0009 = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
  1699. dm0022.field0012 = Convert.ToDecimal(dtD.Rows[k]["rowNum"].ToString());
  1700. dm0022.field0013 = dtD.Rows[k]["ITEMCODE"].ToString();
  1701. dm0022.field0014 = dtD.Rows[k]["InvUnit"].ToString();
  1702. dm0022.field0015 = Convert.ToDecimal(dtD.Rows[k]["REQUESTQUANTITY"].ToString());
  1703. dm0022.field0016 = Convert.ToDecimal(dtD.Rows[k]["Material"].ToString());
  1704. dm0022.field0017 = Convert.ToDecimal(dtD.Rows[k]["PROCESS"].ToString());
  1705. dm0022.field0018 = Convert.ToDecimal(dtD.Rows[k]["SurfaceTreatment"].ToString());
  1706. dm0022.field0019 = Convert.ToDecimal(dtD.Rows[k]["Other"].ToString());
  1707. dm0022.field0020 = Convert.ToDecimal(dtD.Rows[k]["QUOPRICE"].ToString());
  1708. dm0022.field0021 = Convert.ToDecimal(dtD.Rows[k]["field0021"].ToString());
  1709. dm0022.field0022 = dtD.Rows[k]["ADDITION1"].ToString();
  1710. dm0022.field0024 = dtD.Rows[k]["djvencode"].ToString();
  1711. dm0022.field0026 = (dtD.Rows[k]["field0026"].ToString() == "" ? 0 : Convert.ToDecimal(dtD.Rows[k]["field0026"].ToString()));
  1712. dds.formson_0137.Add(dm0022);
  1713. }
  1714. da.data = dat;
  1715. string input = JsonConvert.SerializeObject(da);
  1716. log.Info("传入参数" + input);
  1717. //}
  1718. string APIURLBid = "https://oa.ylzk.com.cn:6443/seeyon/rest/bpm/process/start?token=" + ID;
  1719. string resultBid = CertifiCationApp.HttpPost(APIURLBid, input);
  1720. JObject resBId = (JObject)JsonConvert.DeserializeObject(resultBid);
  1721. log.Info("输出参数" + resBId);
  1722. string Code = resBId["code"].ToString();//获取Tockn
  1723. if (Code == "0")
  1724. {
  1725. // 获取 app_bussiness_data 字段的值
  1726. string appBussinessDataJson = resBId["data"]["app_bussiness_data"].ToString();
  1727. // 解析 app_bussiness_data 的 JSON 数据
  1728. JObject appBussinessDataObject = JObject.Parse(appBussinessDataJson);
  1729. // 提取 affairId 和 summaryId 的值
  1730. string affairId = appBussinessDataObject["affairId"].ToString();
  1731. string summaryId = appBussinessDataObject["summaryId"].ToString();
  1732. for (int i = 0; i < jobject.Count; i++)
  1733. {
  1734. var resultss = jobject[i]["ZBVendorCode"].ToArray();
  1735. for (int s = 0; s < resultss.Length; s++)
  1736. {
  1737. string Vendors = resultss[s].ToString();
  1738. //string Vendors = resultss[0].ToString();
  1739. sql += @"update a
  1740. set a.QUOSTATUS='PricingApproveByOA'
  1741. from icsSORQUODETAILNORMAL a
  1742. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1743. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1744. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendors + "'";
  1745. sql += " UPDATE icsSORRFQ SET STATUS='PricingApproveByOA',ADDITION1='" + affairId + "',ADDITION2=" + summaryId + " where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  1746. }
  1747. }
  1748. log.Info("修改状态sql:" + sql);
  1749. SqlHelper.CmdExecuteNonQueryLi(sql);
  1750. }
  1751. else
  1752. {
  1753. for (int i = 0; i < jobject.Count; i++)
  1754. {
  1755. var resultss = jobject[i]["ZBVendorCode"].ToArray();
  1756. for (int s = 0; s < resultss.Length; s++)
  1757. {
  1758. string Vendors = resultss[s].ToString();
  1759. //string Vendors = resultss[0].ToString();
  1760. sqls += @"update a
  1761. set a.QUOSTATUS='Publish'
  1762. from icsSORQUODETAILNORMAL a
  1763. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1764. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1765. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendors + "'";
  1766. sqls += " UPDATE icsSORRFQ SET STATUS='Publish' where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  1767. }
  1768. }
  1769. SqlHelper.CmdExecuteNonQueryLi(sqls);
  1770. msg = "OA上传OA失败!";
  1771. }
  1772. }
  1773. }
  1774. catch (Exception ex)
  1775. {
  1776. for (int i = 0; i < jobject.Count; i++)
  1777. {
  1778. var resultss = jobject[i]["ZBVendorCode"].ToArray();
  1779. for (int s = 0; s < resultss.Length; s++)
  1780. {
  1781. string Vendors = resultss[s].ToString();
  1782. //string Vendors = resultss[0].ToString();
  1783. sqls += @"update a
  1784. set a.QUOSTATUS='Publish'
  1785. from icsSORQUODETAILNORMAL a
  1786. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1787. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1788. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendors + "'";
  1789. sqls += " UPDATE icsSORRFQ SET STATUS='Publish' where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  1790. }
  1791. }
  1792. SqlHelper.CmdExecuteNonQueryLi(sqls);
  1793. log.Error(ex.Message);
  1794. msg = ex.Message;
  1795. }
  1796. #endregion
  1797. }
  1798. catch (Exception ex)
  1799. {
  1800. msg = "报错失败!" + ex.Message;
  1801. }
  1802. return msg;
  1803. }
  1804. /// <summary>
  1805. /// 上传到OA
  1806. /// </summary>
  1807. /// <param name="json"></param>
  1808. /// <returns></returns>
  1809. public string CleanAgreeByOA(string json)
  1810. {
  1811. var jobject = JArray.Parse(json);
  1812. string sql = "";
  1813. string sqls = "";
  1814. string msg = "";
  1815. try
  1816. {
  1817. #region 推送OA
  1818. string UserCodeOA = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1819. string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1820. sql = "select id from OA.dbo.org_member where code='" + UserCodeOA + "'";
  1821. log.Info("追加异常" + sql);
  1822. DataTable dtUserCodeOA = SqlHelper.GetDataTableBySql(sql);
  1823. if (dtUserCodeOA.Rows.Count <= 0)
  1824. {
  1825. log.Info(dtUserCodeOA.Rows.Count);
  1826. throw new Exception("发起账号OA系统中不存在!!");
  1827. }
  1828. DataTable dt = new DataTable();
  1829. var userInfo = new Dictionary<string, string>
  1830. {
  1831. {"userName", "ylzk-rest"},
  1832. {"password", "054d197d-73c2-4761-be58-a46efe6cd03f"},
  1833. {"loginName", UserCodeOA}
  1834. };
  1835. //var userInfo = new Dictionary<string, string>
  1836. // {
  1837. // {"userName", "ylzk-rest"},
  1838. // {"password", "054d197d-73c2-4761-be58-a46efe6cd03f"},
  1839. // {"loginName", "ylzk-rest"}
  1840. // };
  1841. // 序列化Dictionary为JSON字符串
  1842. string jsonString = JsonConvert.SerializeObject(userInfo, Formatting.Indented);
  1843. log.Info("获取Tocken传入参数:" + jsonString);
  1844. var reqInterNme = "https://oa.ylzk.com.cn:6443/seeyon/rest/token";
  1845. string responseStr = CertifiCationApp.HttpPost(reqInterNme, jsonString);
  1846. //var responseStr = httpGet(reqInterNme);
  1847. try
  1848. {
  1849. //JObject res = (JObject)JsonConvert.DeserializeObject(dtsql.Rows[0]["searchKey"].ToString());
  1850. JObject res = (JObject)JsonConvert.DeserializeObject(responseStr);
  1851. log.Info("输出Tocken参数:" + res);
  1852. string ID = res["id"].ToString();//获取Tockn
  1853. JObject resultbidUser = (JObject)JsonConvert.DeserializeObject(res["bindingUser"].ToString());
  1854. string id = resultbidUser["id"].ToString(); //用户ID
  1855. string departmentId = resultbidUser["departmentId"].ToString(); //部门ID
  1856. string postId = resultbidUser["postId"].ToString(); //岗位ID
  1857. //string Message = res["Message"].ToString();
  1858. if (!string.IsNullOrWhiteSpace(ID))
  1859. {
  1860. var cancelInfo = new Dictionary<string, string>
  1861. {
  1862. {"affairId", jobject[0]["ADDITION1"].ToString()},
  1863. {"summaryId",jobject[0]["ADDITION2"].ToString()},
  1864. {"loginName", UserCodeOA}
  1865. };
  1866. // 序列化Dictionary为JSON字符串
  1867. string canceljsonString = JsonConvert.SerializeObject(cancelInfo, Formatting.Indented);
  1868. log.Info("传入参数" + canceljsonString);
  1869. //}
  1870. string APIURLBid = "https://oa.ylzk.com.cn:6443/seeyon/rest/affair/cancel?token=" + ID;
  1871. string resultBid = CertifiCationApp.HttpPost(APIURLBid, canceljsonString);
  1872. log.Info("输出参数" + resultBid);
  1873. if (resultBid == "true")
  1874. {
  1875. for (int i = 0; i < jobject.Count; i++)
  1876. {
  1877. sqls += @"update a
  1878. set a.QUOSTATUS='Publish'
  1879. from icsSORQUODETAILNORMAL a
  1880. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1881. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1882. where b.RFQCODE='" + jobject[i]["RFQCODE"] + "'";
  1883. sqls += " UPDATE icsSORRFQ SET STATUS='Publish' where RFQCODE='" + jobject[i]["RFQCODE"] + "'";
  1884. }
  1885. SqlHelper.CmdExecuteNonQueryLi(sqls);
  1886. }
  1887. }
  1888. }
  1889. catch (Exception ex)
  1890. {
  1891. for (int i = 0; i < jobject.Count; i++)
  1892. {
  1893. sqls += @"update a
  1894. set a.QUOSTATUS='Publish'
  1895. from icsSORQUODETAILNORMAL a
  1896. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1897. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1898. where b.RFQCODE='" + jobject[i]["RFQCODE"] + "'";
  1899. sqls += " UPDATE icsSORRFQ SET STATUS='Publish' where RFQCODE='" + jobject[i]["RFQCODE"] + "'";
  1900. }
  1901. SqlHelper.CmdExecuteNonQueryLi(sqls);
  1902. log.Error(ex.Message);
  1903. msg = ex.Message;
  1904. }
  1905. #endregion
  1906. }
  1907. catch (Exception ex)
  1908. {
  1909. msg = "报错失败!" + ex.Message;
  1910. }
  1911. return msg;
  1912. }
  1913. public static string HttpPost(string url, string body)
  1914. {
  1915. try
  1916. {
  1917. Encoding encoding = Encoding.UTF8;
  1918. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  1919. request.Method = "POST";
  1920. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  1921. request.ContentType = "application/json; charset=utf-8";
  1922. byte[] buffer = encoding.GetBytes(body);
  1923. request.ContentLength = buffer.Length;
  1924. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  1925. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  1926. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  1927. {
  1928. return reader.ReadToEnd();
  1929. }
  1930. }
  1931. catch (WebException ex)
  1932. {
  1933. throw new Exception(ex.Message);
  1934. }
  1935. }
  1936. public string RejectCS(string json)
  1937. {
  1938. try
  1939. {
  1940. var jobject = JArray.Parse(json);
  1941. string result = "";
  1942. for (int i = 0; i < jobject.Count; i++)
  1943. {
  1944. string sql = "update icsSORQUODETAILNORMAL set QUOSTATUS='PricingReject' where QUOTATIONCODE='" + jobject[i]["最新报价单号"] + "' and ITEMCODE='" + jobject[i]["Invcode"] + "'";
  1945. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1946. if (count <= 0)
  1947. result = "保存失败";
  1948. else
  1949. result = "保存成功";
  1950. }
  1951. return result;
  1952. }
  1953. catch (Exception ex)
  1954. {
  1955. return ex.Message;
  1956. }
  1957. }
  1958. public String CreateBJ(string json)
  1959. {
  1960. try
  1961. {
  1962. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1963. WorkPoint = WorkPoint.Replace("'", "");
  1964. var jobject = JArray.Parse(json);
  1965. string Code = GetSercodeBJ(WorkPoint);
  1966. string result = "";
  1967. for (int i = 0; i < jobject.Count; i++)
  1968. {
  1969. string sql = "update icsSORQUODETAILNORMAL set COMPARECODE='" + Code + "',QUOSTATUS='PricingAppraising' where QUOTATIONCODE='" + jobject[i]["最新报价单号"] + "' and ITEMCODE='" + jobject[i]["Invcode"] + "'";
  1970. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1971. if (count <= 0)
  1972. result = "保存失败";
  1973. else
  1974. result = "保存成功";
  1975. }
  1976. return result;
  1977. }
  1978. catch (Exception ex)
  1979. {
  1980. return ex.Message;
  1981. }
  1982. }
  1983. public string GetSercodeBJ(string workpoint)
  1984. {
  1985. string datetime = DateTime.Now.ToString("yyyyMMdd");
  1986. SqlParameter[] para = { new SqlParameter("@WorkPoint", workpoint), new SqlParameter("@TbName", "ICSSORQUODETAILNORMAL"), new SqlParameter("@CodeCol", "COMPARECODE"), new SqlParameter("@Pre", "CPE" + datetime), new SqlParameter("@NumLen", 3) };
  1987. DataTable table = Repository().FindTableByProc("Addins_GetSerialCode", para);
  1988. return table.Rows[0][0].ToString();
  1989. }
  1990. public DataTable GetInvType()
  1991. {
  1992. string sql = "select F_ItemName from Sys_SRM_Itemsdetail where F_ItemId='488c96cb-49a5-4ea5-9d12-5a21b4db1d82'";
  1993. DataTable table = Repository().FindTableBySql(sql);
  1994. return table;
  1995. }
  1996. public DataTable GetCurrencty()
  1997. {
  1998. string sql = "SELECT * from Sys_SRM_ItemsDetail where F_ItemId in (select F_Id from Sys_SRM_Items where F_enCode='base_currency')";
  1999. DataTable table = Repository().FindTableBySql(sql);
  2000. return table;
  2001. }
  2002. public int CloseRFQPrice(string VenCode, string RFQNO, string ReturnRemark)
  2003. {
  2004. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  2005. string sql = string.Empty;
  2006. sql = @"UPDATE ICSSORRFQ2VENDOR SET ISCLOSED = '是',CauseOff='{0}' WHERE RFQCODE ='{1}' and VENDORCODE='{2}'";
  2007. sql = string.Format(sql, ReturnRemark, RFQNO, VenCode);
  2008. return SqlHelper.ExecuteNonQuery(sql);
  2009. }
  2010. /// <summary>
  2011. /// 获取动态列
  2012. /// </summary>
  2013. /// <param name="rfqcode"></param>
  2014. /// <param name="workpoint"></param>
  2015. /// <returns></returns>
  2016. public DataTable SelectSORRFQColumnName(string rfqcode, string workpoint)
  2017. {
  2018. string sql = @"declare @sql varchar(8000)
  2019. SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,Remark
  2020. into #Temp
  2021. FROM icsSORQUODETAILNORMAL c
  2022. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2023. LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  2024. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2025. WHERE c.RFQCODE='{0}' and c.WorkPoint='{1}'
  2026. select distinct cVenName as ColCaption,cVenName as ColFiledName from #Temp
  2027. drop table #Temp";
  2028. sql = string.Format(sql, rfqcode, workpoint);
  2029. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  2030. return dt;
  2031. }
  2032. /// <summary>
  2033. /// 查询
  2034. /// </summary>
  2035. /// <param name="rfqcode"></param>
  2036. /// <param name="workpoint"></param>
  2037. /// <param name="jqgridparam"></param>
  2038. /// <returns></returns>
  2039. public DataTable GetListSORRFQGridJsonTOZSUM(string rfqcode, string workpoint, ref Pagination jqgridparam)
  2040. {
  2041. string msg = string.Empty;
  2042. DataTable dt = new DataTable();
  2043. //var queryParam = queryJson.ToJObject();
  2044. List<DbParameter> parameter = new List<DbParameter>();
  2045. string sql = @" declare @sql varchar(8000)
  2046. SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.cVenName,c.REQUESTQUANTITY
  2047. into #TempSORRFQ
  2048. FROM icsSORQUODETAILNORMAL c
  2049. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2050. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.cVenCode AND b.WorkPoint=d.WorkPoint
  2051. WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
  2052. select @sql=isnull(@sql+',','')+' ['+cVenName+']'
  2053. from(select distinct cVenName from #TempSORRFQ)as a
  2054. set @sql='SELECT STUFF((select'','' + cVenName from (SELECT DISTINCT cVenName FROM #TempSORRFQ ) DD for xml path('''')),1,1,'''') as IsTou,*
  2055. FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
  2056. exec(@sql)";
  2057. sql = string.Format(sql, rfqcode, workpoint);
  2058. DataTable dtr = SqlHelper.FindTablePageBySql_OtherTempSORRFQ(sql.ToString(), " " + "#TempSORRFQ" + " ", " drop table #TempSORRFQ", parameter.ToArray(), ref jqgridparam);
  2059. return dtr;
  2060. }
  2061. public DataTable GetSubGridJsonCourseInfoSORRFQ(string rfqcode, string workpoint, string ITEMCODE, ref Pagination jqgridparam)
  2062. {
  2063. string sql = @" SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,c.WorkPoint,b.VENDORCODE,c.ADDITION1
  2064. ,Material,PROCESS,SurfaceTreatment,Other,c.AccountPeriod
  2065. FROM icsSORQUODETAILNORMAL c
  2066. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2067. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2068. WHERE c.RFQCODE='{0}' AND c.ITEMCODE='{1}'AND c.WorkPoint='{2}' ";
  2069. sql = string.Format(sql, rfqcode, ITEMCODE, workpoint);
  2070. return Repository().FindTablePageBySql(sql.ToString(), ref jqgridparam);
  2071. }
  2072. public DataTable SORRFQHistoryInfo(string rfqcode, string workpoint, string ITEMCODE, string VENDORCODE, ref Pagination jqgridparam)
  2073. {
  2074. DataTable dt = new DataTable();
  2075. List<DbParameter> parameter = new List<DbParameter>();
  2076. string sql = @" SELECT c.ITEMCODE,c.ITEMNAME,a.Price as QUOPRICE,d.VenName cVenName,c.WorkPoint,b.VENDORCODE,c.LOGUSER,a.CreateTime as LOGDATE FROM icsSORQUOTATION b
  2077. LEFT JOIN icsSORRFQ2VENDOR e ON b.RFQCODE=e.RFQCODE AND b.WorkPoint=e.WorkPoint AND b.VENDORCODE=e.VENDORCODE
  2078. LEFT JOIN icsSORQUODETAILNORMAL c ON c.RFQCODE=e.RFQCODE AND e.WorkPoint=c.WorkPoint AND c.QUOTATIONCODE=b.QUOTATIONCODE
  2079. LEFT JOIN dbo.ICSQuoteHistory a ON a.QuotationID=c.ID AND a.WorkPoint=c.WorkPoint
  2080. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2081. WHERE c.RFQCODE='{0}' AND c.workpoint='{1}'
  2082. AND c.ITEMCODE = '{2}'and b.VENDORCODE='{3}'";
  2083. sql = string.Format(sql, rfqcode, workpoint, ITEMCODE, VENDORCODE);
  2084. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2085. }
  2086. public DataTable SORRFQCourseHistoryInfoCahrs(string rfqcode, string workpoint, string ITEMCODE)
  2087. {
  2088. string sql = @" SELECT
  2089. DISTINCT
  2090. ROW_NUMBER() OVER(PARTITION BY b.VENDORCODE ORDER BY a.CreateTime ASC) AS num,d.VenName AS SupplierCode, a.Price as QUOPRICE,a.CreateTime as LOGDATE
  2091. FROM icsSORQUOTATION b
  2092. LEFT JOIN icsSORRFQ2VENDOR e ON b.RFQCODE=e.RFQCODE AND b.WorkPoint=e.WorkPoint AND b.VENDORCODE=e.VENDORCODE
  2093. LEFT JOIN icsSORQUODETAILNORMAL c ON c.RFQCODE=e.RFQCODE AND e.WorkPoint=c.WorkPoint AND c.QUOTATIONCODE=b.QUOTATIONCODE
  2094. LEFT JOIN dbo.ICSQuoteHistory a ON a.QuotationID=c.ID AND a.WorkPoint=c.WorkPoint
  2095. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2096. WHERE c.RFQCODE='{0}' AND c.workpoint='{1}' AND c.ITEMCODE ='{2}' ORDER BY a.CreateTime ASC ";
  2097. sql = string.Format(sql, rfqcode, workpoint, ITEMCODE);
  2098. return Repository().FindTableBySql(sql.ToString());
  2099. }
  2100. public DataTable GetMinPice(string RFQCODE, string ITEMCODE)
  2101. {
  2102. DataTable dt = new DataTable();
  2103. string sql = @"select min(QUOPRICE) as QUOPRICE from ICSSORQUODETAILNORMAL
  2104. WHERE 1=1
  2105. and RFQCODE='" + RFQCODE + "' and ITEMCODE='" + ITEMCODE + "'";
  2106. return Repository().FindTableBySql(sql.ToString());
  2107. }
  2108. public DataTable GetPOListExport(string rfqcode, string workpoint, ref Pagination jqgridparam)
  2109. {
  2110. List<DbParameter> parameter = new List<DbParameter>();
  2111. string sql = @" declare @sql varchar(8000)
  2112. SELECT c.ITEMCODE AS ,c.ITEMNAME AS ,CAST(c.QUOPRICE AS DECIMAL(18,4)) as QUOPRICE,d.cVenName,CAST(c.REQUESTQUANTITY AS DECIMAL(18,2)) AS
  2113. into #TempSORRFQ
  2114. FROM icsSORQUODETAILNORMAL c
  2115. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2116. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.cVenCode AND b.WorkPoint=d.WorkPoint
  2117. WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
  2118. select @sql=isnull(@sql+',','')+' ['+cVenName+']'
  2119. from(select distinct cVenName from #TempSORRFQ)as a
  2120. set @sql='SELECT *
  2121. FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
  2122. exec(@sql)";
  2123. sql = string.Format(sql, rfqcode, workpoint);
  2124. DataTable dtr = SqlHelper.FindTablePageBySql_OtherTempSORRFQbyChan(sql.ToString(), " " + "#TempSORRFQ" + " ", " drop table #TempSORRFQ", parameter.ToArray(), ref jqgridparam);
  2125. return dtr;
  2126. }
  2127. public DataTable GetPOListExport(string rfqno, string workpoint)
  2128. {
  2129. string sql = @"select
  2130. e.ITEMCODE as ,
  2131. e.ITEMNAME as ,
  2132. icsSORRFQ2VENDOR.VENDORCODE as ,
  2133. VenName as ,
  2134. CAST(D.QUOPRICE AS DECIMAL(18,4)) AS ,
  2135. d.ADDITION1 AS ,
  2136. e.REQUESTQUANTITY AS ,
  2137. f.InvStd AS ,
  2138. d.material as ,
  2139. d.PROCESS as ,
  2140. d.SurfaceTreatment as ,
  2141. d.Other as
  2142. FROM icsSORRFQ2VENDOR
  2143. left join icsvendor on ICSVendor.vencode=icsSORRFQ2VENDOR.VENDORCODE
  2144. left join icsSORQUOTATION c on c.vendorcode=icsSORRFQ2VENDOR.VENDORCODE and c.rfqcode=icsSORRFQ2VENDOR.RFQCODE
  2145. left join icsSORQUODETAILNORMAL d on d.QUOTATIONCODE=c.QUOTATIONCODE
  2146. left join icsSORRFQ2NORMALITEM e on e.RFQCODE=icsSORRFQ2VENDOR.RFQCODE and d.itemcode=e.itemcode
  2147. LEFT JOIN dbo.ICSInventory f ON e.ITEMCODE=f.InvCode AND e.WorkPoint=f.WorkPoint
  2148. where icsSORRFQ2VENDOR.RFQCODE='" + rfqno + @"'AND ISNULL(c.QUOTATIONCODE,'')<>'' order by e.ITEMCODE desc";
  2149. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  2150. return dt;
  2151. }
  2152. /// <summary>
  2153. /// 获取供应商-生效价格
  2154. /// </summary>
  2155. /// <param name="rfqno"></param>
  2156. /// <param name="workpoint"></param>
  2157. /// <returns></returns>
  2158. public DataTable GettPerson(string rfqno, string workpoint)
  2159. {
  2160. string sql = @"SELECT distinct d.VenName cVenName, d.VenName as SupplierCode
  2161. FROM icsSORQUODETAILNORMAL c
  2162. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2163. LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  2164. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2165. where c.RFQCODE ='{0}'and c.WorkPoint='{1}'
  2166. ";
  2167. sql = string.Format(sql, rfqno, workpoint);
  2168. DataTable table = SqlHelper.GetDataTableBySql(sql);
  2169. return table;
  2170. }
  2171. /// <summary>
  2172. /// 查询
  2173. /// </summary>
  2174. /// <param name="rfqcode"></param>
  2175. /// <param name="workpoint"></param>
  2176. /// <param name="jqgridparam"></param>
  2177. /// <returns></returns>
  2178. public DataTable GetListSORRFQ(string rfqno, string workpoint, ref Pagination jqgridparam)
  2179. {
  2180. string msg = string.Empty;
  2181. DataTable dt = new DataTable();
  2182. //var queryParam = queryJson.ToJObject();
  2183. List<DbParameter> parameter = new List<DbParameter>();
  2184. string sql = @" declare @sql varchar(8000)
  2185. SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,c.REQUESTQUANTITY,e.Remark
  2186. into #TempSORRFQ
  2187. FROM icsSORQUODETAILNORMAL c
  2188. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2189. LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  2190. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2191. WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
  2192. select @sql=isnull(@sql+',','')+' ['+cVenName+']'
  2193. from(select distinct cVenName from #TempSORRFQ)as a
  2194. set @sql='SELECT STUFF((select'','' + cVenName from (SELECT DISTINCT cVenName FROM #TempSORRFQ ) DD for xml path('''')),1,1,'''') as IsTou,*
  2195. FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
  2196. exec(@sql)";
  2197. sql = string.Format(sql, rfqno, workpoint);
  2198. DataTable dtr = SqlHelper.FindTablePageBySql_OtherTempSORRFQ(sql.ToString(), " " + "#TempSORRFQ" + " ", " drop table #TempSORRFQ", parameter.ToArray(), ref jqgridparam);
  2199. Dictionary<string, decimal> dic = new Dictionary<string, decimal>();
  2200. foreach (DataRow dr in dtr.Rows)
  2201. {
  2202. foreach (DataColumn col in dtr.Columns)
  2203. {
  2204. if (col.Caption == "ITEMCODE" || col.Caption == "ZBVendor" || col.Caption == "ITEMNAME" || col.Caption == "cVenName" || col.Caption == "QUOPRICE" || col.Caption == "IsTou" || col.Caption == "REQUESTQUANTITY" || col.Caption == "Remark")
  2205. continue;
  2206. if (dic.Keys.Contains(col.Caption))
  2207. dic[col.Caption] += Convert.ToDecimal(Convert.ToDecimal(string.IsNullOrWhiteSpace(dr[col.Caption].ToString()) ? 0 : dr[col.Caption]) * Convert.ToDecimal(dr["REQUESTQUANTITY"]));
  2208. else
  2209. {
  2210. dic.Add(col.Caption, Convert.ToDecimal(Convert.ToDecimal(string.IsNullOrWhiteSpace(dr[col.Caption].ToString()) ? 0 : dr[col.Caption]) * Convert.ToDecimal(dr["REQUESTQUANTITY"])));
  2211. }
  2212. }
  2213. }
  2214. if (!string.IsNullOrWhiteSpace(msg))
  2215. {
  2216. throw new Exception(msg);
  2217. }
  2218. DataRow drNew = dtr.NewRow();
  2219. string name = "";
  2220. decimal qty = decimal.MaxValue;
  2221. foreach (var item in dic)
  2222. {
  2223. drNew[item.Key] = item.Value;
  2224. if (Convert.ToDecimal(item.Value) < qty && Convert.ToDecimal(item.Value) > 0)
  2225. {
  2226. qty = Convert.ToDecimal(item.Value);
  2227. name = item.Key;
  2228. }
  2229. }
  2230. DataColumn dataColumn = new DataColumn("ZBVendor", typeof(string));
  2231. dataColumn.DefaultValue = name; //为列设置默认值
  2232. dtr.Columns.Add(dataColumn);
  2233. dtr.Rows.Add(drNew);
  2234. return dtr;
  2235. }
  2236. /// <summary>
  2237. /// 查询
  2238. /// </summary>
  2239. /// <param name="rfqcode"></param>
  2240. /// <param name="workpoint"></param>
  2241. /// <param name="jqgridparam"></param>
  2242. /// <returns></returns>
  2243. public DataTable GetListSORRFQByDJ(string rfqno, string workpoint, ref Pagination jqgridparam)
  2244. {
  2245. string msg = string.Empty;
  2246. DataTable dt = new DataTable();
  2247. //var queryParam = queryJson.ToJObject();
  2248. List<DbParameter> parameter = new List<DbParameter>();
  2249. string sql = @" declare @sql varchar(8000)
  2250. SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,c.REQUESTQUANTITY,e.Remark,'' AS ZBVendor
  2251. ,f.InvStd
  2252. into #TempSORRFQ
  2253. FROM icsSORQUODETAILNORMAL c
  2254. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2255. LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  2256. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2257. LEFT JOIN dbo.ICSInventory f ON e.ITEMCODE=f.InvCode AND e.WorkPoint=f.WorkPoint
  2258. WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
  2259. select @sql=isnull(@sql+',','')+' ['+cVenName+']'
  2260. from(select distinct cVenName from #TempSORRFQ)as a
  2261. set @sql='SELECT STUFF((select'','' + cVenName from (SELECT DISTINCT cVenName FROM #TempSORRFQ ) DD for xml path('''')),1,1,'''') as IsTou,*
  2262. FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
  2263. exec(@sql)";
  2264. sql = string.Format(sql, rfqno, workpoint);
  2265. DataTable dtr = SqlHelper.FindTablePageBySql_OtherTempSORRFQ(sql.ToString(), " " + "#TempSORRFQ" + " ", " drop table #TempSORRFQ", parameter.ToArray(), ref jqgridparam);
  2266. string name = "";
  2267. foreach (DataRow dr in dtr.Rows)
  2268. {
  2269. decimal qty = decimal.MaxValue;
  2270. foreach (DataColumn col in dtr.Columns)
  2271. {
  2272. if (col.Caption == "ITEMCODE" || col.Caption == "ZBVendor" || col.Caption == "ITEMNAME" || col.Caption == "cVenName" || col.Caption == "QUOPRICE" || col.Caption == "IsTou" || col.Caption == "REQUESTQUANTITY" || col.Caption == "Remark" || col.Caption == "InvStd")
  2273. continue;
  2274. if (Convert.ToDecimal(string.IsNullOrWhiteSpace(dr[col.Caption].ToString()) ? 0 : dr[col.Caption]) < qty && Convert.ToDecimal(string.IsNullOrWhiteSpace(dr[col.Caption].ToString()) ? 0 : dr[col.Caption]) > 0)
  2275. {
  2276. qty = Convert.ToDecimal(dr[col.Caption]);
  2277. name = col.Caption;
  2278. }
  2279. }
  2280. dr["ZBVendor"] = name;
  2281. }
  2282. //if (!string.IsNullOrWhiteSpace(msg))
  2283. //{
  2284. // throw new Exception(msg);
  2285. //}
  2286. //DataRow drNew = dtr.NewRow();
  2287. //string name = "";
  2288. //decimal qty = decimal.MaxValue;
  2289. //foreach (var item in dic)
  2290. //{
  2291. // drNew[item.Key] = item.Value;
  2292. // if (Convert.ToDecimal(item.Value) < qty && Convert.ToDecimal(item.Value) > 0)
  2293. // {
  2294. // qty = Convert.ToDecimal(item.Value);
  2295. // name = item.Key;
  2296. // }
  2297. //}
  2298. //DataColumn dataColumn = new DataColumn("ZBVendor", typeof(string));
  2299. //dataColumn.DefaultValue = name; //为列设置默认值
  2300. //dtr.Columns.Add(dataColumn);
  2301. //dtr.Rows.Add(drNew);
  2302. return dtr;
  2303. }
  2304. public DataTable GetSORRVenDorFile(string rfqcode)
  2305. {
  2306. //string Vendor = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
  2307. DataTable dt = new DataTable();
  2308. string sql = @"SELECT Filename FROM ICSSORRFQ WHERE RFQCODE='{0}'";
  2309. sql = string.Format(sql, rfqcode);
  2310. dt = SqlHelper.GetDataTableBySql(sql);
  2311. return dt;
  2312. }
  2313. /// <summary>
  2314. /// 查询
  2315. /// </summary>
  2316. /// <param name="rfqcode"></param>
  2317. /// <param name="workpoint"></param>
  2318. /// <param name="jqgridparam"></param>
  2319. /// <returns></returns>
  2320. public DataTable GetListSORRFQbyRemark(string rfqno, string workpoint)
  2321. {
  2322. string msg = string.Empty;
  2323. DataTable dt = new DataTable();
  2324. //var queryParam = queryJson.ToJObject();
  2325. List<DbParameter> parameter = new List<DbParameter>();
  2326. string sql = @" declare @sql varchar(8000)
  2327. SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,c.REQUESTQUANTITY,e.Remark
  2328. into #TempSORRFQ
  2329. FROM icsSORQUODETAILNORMAL c
  2330. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2331. LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  2332. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2333. WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
  2334. select @sql=isnull(@sql+',','')+' ['+cVenName+']'
  2335. from(select distinct cVenName from #TempSORRFQ)as a
  2336. set @sql='SELECT STUFF((select'','' + cVenName from (SELECT DISTINCT cVenName FROM #TempSORRFQ ) DD for xml path('''')),1,1,'''') as IsTou,*
  2337. FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
  2338. exec(@sql) drop table #TempSORRFQ ";
  2339. sql = string.Format(sql, rfqno, workpoint);
  2340. DataTable dtr = SqlHelper.GetDataTableBySql(sql.ToString());
  2341. return dtr;
  2342. }
  2343. /// <summary>
  2344. /// 获取采购订单信息
  2345. /// </summary>
  2346. /// <param name="rfqcode"></param>
  2347. /// <returns></returns>
  2348. public DataTable GetItemDocByPO(string queryJson, ref Pagination jqgridparam, string WorkPoint)
  2349. {
  2350. string ParentId = "";
  2351. var queryParam = queryJson.ToJObject();
  2352. List<DbParameter> parameter = new List<DbParameter>();
  2353. string sql = string.Empty;
  2354. if (!string.IsNullOrWhiteSpace(queryJson))
  2355. {
  2356. if (queryParam["status"].ToString() == "1")
  2357. {
  2358. sql = @"SELECT DISTINCT
  2359. a.id,
  2360. a.POCode,
  2361. a.Sequence,
  2362. b.InvCode,
  2363. a.Quantity,
  2364. a.CreateDateTime,
  2365. b.InvName,
  2366. b.InvStd,
  2367. a.PlanArriveDate,
  2368. b.InvUnit,
  2369. a.EATTRIBUTE13,
  2370. a.EATTRIBUTE14
  2371. FROM
  2372. dbo.ICSPurchaseOrder a
  2373. LEFT JOIN dbo.ICSInventory b ON a.InvCode = b.InvCode AND a.WorkPoint = b.WorkPoint
  2374. LEFT JOIN dbo.ICSWareHouseLotInfoLog c ON a.POCode = c.TransCode AND a.Sequence = c.TransSequence
  2375. WHERE
  2376. a.STATUS = '2'
  2377. AND EXISTS (
  2378. SELECT 1
  2379. FROM dbo.ICSWareHouseLotInfoLog c2
  2380. WHERE c2.TransCode = a.POCode AND c2.TransSequence = a.Sequence AND c2.Quantity = a.Quantity
  2381. ) ";
  2382. }
  2383. else if (queryParam["status"].ToString() == "2")
  2384. {
  2385. sql = @"SELECT DISTINCT
  2386. a.id,
  2387. a.POCode,
  2388. a.Sequence,
  2389. b.InvCode,
  2390. a.Quantity,
  2391. a.CreateDateTime,
  2392. b.InvName,
  2393. b.InvStd,
  2394. a.PlanArriveDate,
  2395. b.InvUnit,
  2396. a.EATTRIBUTE13,
  2397. a.EATTRIBUTE14
  2398. FROM
  2399. dbo.ICSPurchaseOrder a
  2400. LEFT JOIN dbo.ICSInventory b ON a.InvCode = b.InvCode AND a.WorkPoint = b.WorkPoint
  2401. LEFT JOIN dbo.ICSWareHouseLotInfoLog c ON a.POCode = c.TransCode AND a.Sequence = c.TransSequence
  2402. WHERE
  2403. a.STATUS = '2'
  2404. AND NOT EXISTS (
  2405. SELECT 1
  2406. FROM dbo.ICSWareHouseLotInfoLog c2
  2407. WHERE c2.TransCode = a.POCode
  2408. AND c2.TransSequence = a.Sequence
  2409. AND c2.Quantity = a.Quantity --
  2410. )";
  2411. }
  2412. else
  2413. {
  2414. sql = @"SELECT DISTINCT a.id,
  2415. a.POCode,
  2416. a.Sequence,
  2417. b.InvCode,
  2418. a.Quantity,
  2419. a.CreateDateTime,
  2420. b.InvName,
  2421. b.InvStd,
  2422. b.InvUnit,
  2423. PlanArriveDate,
  2424. a.EATTRIBUTE13,
  2425. a.EATTRIBUTE14
  2426. FROM dbo.ICSPurchaseOrder a
  2427. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  2428. Where 1=1 and a.STATUS='2'";
  2429. }
  2430. if (!string.IsNullOrWhiteSpace(queryParam["cPOID"].ToString()))
  2431. {
  2432. sql += " and a.POCode like '%" + queryParam["cPOID"].ToString() + "%' ";
  2433. }
  2434. if (!string.IsNullOrWhiteSpace(queryParam["BegiondDate"].ToString()))
  2435. {
  2436. sql += " and a.CreateDateTime >= '" + queryParam["BegiondDate"].ToString() + "' ";
  2437. }
  2438. if (!string.IsNullOrWhiteSpace(queryParam["EnddDate"].ToString()))
  2439. {
  2440. sql += " and a.CreateDateTime <= '" + queryParam["EnddDate"].ToString() + "' ";
  2441. }
  2442. if (!string.IsNullOrWhiteSpace(queryParam["cInvCode"].ToString()))
  2443. {
  2444. sql += " and b.InvCode ='" + queryParam["cInvCode"].ToString() + "' ";
  2445. }
  2446. if (!string.IsNullOrWhiteSpace(queryParam["cInvName"].ToString()))
  2447. {
  2448. sql += " and b.InvName ='" + queryParam["cInvName"].ToString() + "' ";
  2449. }
  2450. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  2451. //{
  2452. // sql += " and posrm.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  2453. //}
  2454. ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  2455. }
  2456. if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
  2457. {
  2458. return SqlHelper.FindTablePageBySql_OtherTemp(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
  2459. }
  2460. else
  2461. {
  2462. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2463. }
  2464. }
  2465. /// <summary>
  2466. /// 获取采购订单信息
  2467. /// </summary>
  2468. /// <param name="rfqcode"></param>
  2469. /// <returns></returns>
  2470. public DataTable GetRFByPU(string queryJson, ref Pagination jqgridparam, string WorkPoint)
  2471. {
  2472. var queryParam = queryJson.ToJObject();
  2473. List<DbParameter> parameter = new List<DbParameter>();
  2474. string sql = string.Empty;
  2475. //string Vendor = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
  2476. sql = @"SELECT a.F_ItemName,a.F_Description FROM Sys_SRM_ItemsDetail a
  2477. LEFT JOIN Sys_SRM_Items b ON a.F_ItemId = b.F_Id
  2478. WHERE b.F_EnCode = 'ERP001' and a.F_EnabledMark='1' and a.F_ItemCode='" + WorkPoint + "'";
  2479. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  2480. if (dt.Rows.Count > 0)
  2481. {
  2482. sql = @" select pu_AppHead.cCode,pu_AppBody.ivouchrowno,pu_AppBody.cInvCode,Inv.cInvName,Inv.cInvStd,
  2483. Umit.cComUnitName as INVUOM ,pu_AppBody.fQuantity,pu_AppHead.dDate,pu_AppBody.dRequirDate
  2484. ,pu_AppBody.dArriveDate,pu_AppBody.cbMemo,''as Source,pu_AppBody.cpersonnameexec
  2485. into #Temp
  2486. From {0}.dbo.pu_AppHead with(nolock)
  2487. inner join {0}.dbo.pu_AppBody with(nolock) on pu_AppHead.id=pu_AppBody.id
  2488. left join (select irequiretrackstyle as extend_b_cinvcode_v_inventory_irequiretrackstyle,bproductbill as extend_b_cinvcode_v_inventory_bproductbill,cinvcode as keyextend_b_cinvcode_v_inventory_cinvcode
  2489. from {0}.dbo.v_inventory) extend_b_cinvcode_v_inventory on keyextend_b_cinvcode_v_inventory_cinvcode=pu_appbody.cinvcode
  2490. LEFT JOIN {0}.dbo.Inventory Inv ON pu_AppBody.cInvCode=Inv.cInvCode
  2491. LEFT JOIN {0}.dbo.ComputationUnit Umit ON Inv.cComUnitCode = Umit.cComunitCode
  2492. Where 1=1
  2493. And ( 1=1 And (cVoucherState = N'') And (cAppAdvanceCondic = N'0')
  2494. ) and isnull(cbcloser,N'')=N''
  2495. ";
  2496. }
  2497. if (!string.IsNullOrWhiteSpace(queryParam["cCode"].ToString()))
  2498. {
  2499. sql += " and pu_AppHead.cCode like '%" + queryParam["cCode"].ToString() + "%' ";
  2500. }
  2501. if (!string.IsNullOrWhiteSpace(queryParam["BegiondDate"].ToString()))
  2502. {
  2503. sql += " and pu_AppHead.dDate >= '" + queryParam["BegiondDate"].ToString() + "' ";
  2504. }
  2505. if (!string.IsNullOrWhiteSpace(queryParam["EnddDate"].ToString()))
  2506. {
  2507. sql += " and pu_AppHead.dDate <= '" + queryParam["EnddDate"].ToString() + "' ";
  2508. }
  2509. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  2510. {
  2511. sql += " and pu_AppBody.cInvCode ='" + queryParam["InvCode"].ToString() + "' ";
  2512. }
  2513. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  2514. {
  2515. sql += " and Inv.cInvName ='" + queryParam["InvName"].ToString() + "' ";
  2516. }
  2517. if (!string.IsNullOrWhiteSpace(queryParam["cpersonnameexec"].ToString()))
  2518. {
  2519. sql += " and pu_AppBody.cpersonnameexec like '%" + queryParam["cpersonnameexec"].ToString() + "%' ";
  2520. }
  2521. sql = string.Format(sql, dt.Rows[0]["F_Description"].ToString());
  2522. DataTable dtr = SqlHelper.FindTablePageBySql_OtherTemp4(sql.ToString(), " " + "#Temp" + " ", " drop table #Temp", parameter.ToArray(), ref jqgridparam);
  2523. return dtr;
  2524. //return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2525. }
  2526. /// <summary>
  2527. /// 获取供应商列表-询报价
  2528. /// </summary>
  2529. /// <returns></returns>
  2530. public DataTable GetVendor(string rfqno, string workpoint)
  2531. {
  2532. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  2533. string sql = @"select '' as F_VenCode,'' as cVenName
  2534. union all
  2535. SELECT distinct a.VENDORCODE as F_VenCode,c.VenName as cVenName from ICSSORQUOTATION a
  2536. left join ICSSORQUODETAILNORMAL b on a.QUOTATIONCODE=b.QUOTATIONCODE and a.WorkPoint=b.WorkPoint
  2537. LEFT JOIN dbo.ICSVendor c ON a.VENDORCODE=c.VenCode AND a.WorkPoint=c.WorkPoint
  2538. WHERE a.RFQCODE='" + rfqno + "' and a.WorkPoint='" + workpoint + "' ";
  2539. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  2540. return dt;
  2541. }
  2542. /// <summary>
  2543. /// 退回
  2544. /// </summary>
  2545. /// <param name="POCodeRow"></param>
  2546. /// <param name="ArriveDate"></param>
  2547. /// <returns></returns>
  2548. public int WatchBJByDJBack(string rfqno, string Vendor, string workpoint)
  2549. {
  2550. int count = 0;
  2551. DataTable dt = new DataTable();
  2552. List<DbParameter> parameter = new List<DbParameter>();
  2553. string sql = string.Empty;
  2554. //keyValue = keyValue.Substring(1, keyValue.Length - 2);
  2555. //已改多站点
  2556. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  2557. string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  2558. sql += @" UPDATE b SET b.QUOSTATUS='Back' ,LOGUSER='" + UserCode + "'" +
  2559. ",LOGDATE='" + DateTime.Now.ToString("yyyy-MM-dd") + @"'
  2560. from ICSSORQUOTATION a
  2561. left join ICSSORQUODETAILNORMAL b on a.QUOTATIONCODE=b.QUOTATIONCODE and a.WorkPoint=b.WorkPoint
  2562. where a.RFQCODE ='" + rfqno + "'and a.VENDORCODE='" + Vendor + "' and a.WorkPoint='" + workpoint + "'";
  2563. StringBuilder Str = new StringBuilder(sql);
  2564. string MailOpen = ConfigurationManager.ConnectionStrings["MailOpen"].ConnectionString;
  2565. if (MailOpen == "true")
  2566. {
  2567. string SendHost = ConfigurationManager.ConnectionStrings["SendHost"].ConnectionString;
  2568. string StrSendPort = ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString;
  2569. int SendPort = 25;
  2570. if (!string.IsNullOrEmpty(StrSendPort))
  2571. SendPort = Convert.ToInt32(ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString);
  2572. string SendDisplayName = ConfigurationManager.ConnectionStrings["SendDisplayName"].ConnectionString;
  2573. string SendAddress = ConfigurationManager.ConnectionStrings["SendAddress"].ConnectionString;
  2574. string SendPassword = ConfigurationManager.ConnectionStrings["SendPassword"].ConnectionString;
  2575. string sqlEmail = @"SELECT a.VenCode,b.F_Email,a.VenName FROM dbo.ICSVendor a
  2576. LEFT JOIN dbo.Sys_SRM_User b ON a.VenCode=b.F_VenCode AND a.WorkPoint=b.F_Location
  2577. WHERE a.VenCode='" + Vendor + "'and a.WorkPoint='" + workpoint + "' ";
  2578. DataTable dtMail = SqlHelper.GetDataTableBySql(sqlEmail);
  2579. foreach (DataRow dr in dtMail.Rows)
  2580. {
  2581. string cVenCode = dr["VenCode"].ToString();
  2582. string TOAddress = dr["F_Email"].ToString();
  2583. string[] Partint = TOAddress.Split(';');
  2584. if (!string.IsNullOrEmpty(TOAddress))
  2585. {
  2586. foreach (var p in Partint)
  2587. {
  2588. string CCAddress = "";
  2589. string Subject = "有来自佑伦SRM平台信息";
  2590. bool isBodyHtml = false;
  2591. string F_RealName = dr["VenName"].ToString();
  2592. string NowDate = DateTime.Now.GetDateTimeFormats('D')[0].ToString();
  2593. string body = F_RealName + ":";
  2594. body += " \r\n\r\n\r\n 您有一个询价单号:" + rfqno + "对应的报价单已退回 ,请登录系统重新报价!";
  2595. body += "\r\n";
  2596. body += " 顺颂商祺!";
  2597. body += "\r\n";
  2598. body += " 佑伦真空设备科技有限公司";
  2599. body += "\r\n";
  2600. body += " " + NowDate;
  2601. string StrConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  2602. if (!string.IsNullOrEmpty(TOAddress))
  2603. {
  2604. try
  2605. {
  2606. SendEmail(StrConn, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, p.ToString(), CCAddress, Subject, isBodyHtml, body);
  2607. count = Repository().ExecuteBySql(Str);
  2608. }
  2609. catch (Exception ex)
  2610. {
  2611. throw new Exception("供应商:" + cVenCode + "邮件发送失败! \r\n" + ex.Message);
  2612. }
  2613. }
  2614. else
  2615. {
  2616. throw new Exception("请先维护供应商:" + F_RealName + "邮箱!");
  2617. }
  2618. }
  2619. }
  2620. }
  2621. }
  2622. else
  2623. {
  2624. count = Repository().ExecuteBySql(Str);
  2625. }
  2626. return count;
  2627. }
  2628. /// <summary>
  2629. /// 询价单子表查询
  2630. /// </summary>
  2631. /// <param name="queryJson"></param>
  2632. /// <param name="jqgridparam"></param>
  2633. /// <returns></returns>
  2634. public DataTable GetSubGridJson(string RFQCODE, ref Pagination jqgridparam, string WorkPoint)
  2635. {
  2636. DataTable dt = new DataTable();
  2637. List<DbParameter> parameter = new List<DbParameter>();
  2638. string sql = @"SELECT b.itemcode,b.itemname,b.ITEMTYPE,a.invstd,b.unit,REQUESTQUANTITY,memo FROM icsSORRFQ2NORMALITEM b
  2639. left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
  2640. where RFQCODE='{0}'";
  2641. sql = string.Format(sql, RFQCODE);
  2642. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2643. }
  2644. public string GetBidItemCode(string WorkPoint, string Vendor)
  2645. {
  2646. string BidItemCode = string.Empty;
  2647. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  2648. if (!string.IsNullOrEmpty(WorkPoint))
  2649. {
  2650. string Date = DateTime.Now.ToString("yy");
  2651. string Muoth = DateTime.Now.ToString("MM");
  2652. string Day = DateTime.Now.ToString("dd");
  2653. string Pre = "SRM" + WorkPoint;
  2654. BidItemCode = GetSerialCode(WorkPoint, "ICSBidDoc", "BidCode", Pre, 5);
  2655. }
  2656. if (!string.IsNullOrWhiteSpace(BidItemCode))
  2657. {
  2658. string sqlISHave = @"SELECT InvCode FROM ICSINVENTORY a
  2659. WHERE a.InvCode = '{0}'";
  2660. sqlISHave = string.Format(sqlISHave, BidItemCode);
  2661. DataTable dtIsHave = SqlHelper.GetDataTableBySql(sqlISHave);
  2662. if (dtIsHave.Rows.Count > 0)
  2663. {
  2664. throw new Exception("正式物料已存在!");
  2665. }
  2666. }
  2667. return BidItemCode;
  2668. }
  2669. public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  2670. {
  2671. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  2672. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  2673. return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  2674. }
  2675. public DataTable ExportAll(string PruOrganize, string PruTeam, string RFQCode, string RFQName, string SupplierCode, string SupplierName, string InvCode, string InvName, string InvStd, string TimeFrom, string TimeTo, string ReleaseState)
  2676. {
  2677. string sql = @"select distinct
  2678. a.RFQCODE ,
  2679. RFQNAME ,
  2680. case a.STATUS
  2681. when 'Publish' then ''
  2682. when 'Examine' then ''
  2683. when 'HasExamine' THEN ''
  2684. WHEN 'New' THEN ''
  2685. when 'Close' then ''
  2686. when 'PricingApprove' then ''
  2687. when 'PricingApproveByOA' then 'OA待审核'
  2688. when 'PricingApproveByOASH' then 'OA已审核'
  2689. when 'PricingApproveByOABack' then 'OA审核拒绝'
  2690. end as ,
  2691. h.F_ItemName as ,
  2692. c.PURCHUGNAME as ,
  2693. A.LOGDATE ,
  2694. A.LOGUSER ,
  2695. A.workpoint
  2696. from icsSORRFQ A
  2697. left join BASE_SUPPLIER B ON B.SupplierCode = a.COMPANYCODE
  2698. left join ICSPurChug c on c.PURCHUGCODE = a.PURCHUGCODE
  2699. --left join ICSPURCHUGSON d on d.PURCHUGSONCODE = a.PURTeam
  2700. left join icsSORRFQ2NORMALITEM e on e.RFQCODE=a.RFQCODE
  2701. left join ICSINVENTORY f on f.INVCODE=e.ITEMCODE
  2702. left join icsSORQUOTATION g on g.RFQCODE=a.Rfqcode
  2703. left join Sys_SRM_ItemsDetail h on h.F_ItemCode=A.purteam
  2704. where 1=1 ";
  2705. if (!string.IsNullOrEmpty(PruOrganize))
  2706. {
  2707. sql += " and c.PURCHUGNAME like '%" + PruOrganize + "%' ";
  2708. }
  2709. if (!string.IsNullOrEmpty(PruTeam))
  2710. {
  2711. sql += " and h.F_ItemName like '%" + PruTeam + "%'";
  2712. }
  2713. if (!string.IsNullOrEmpty(RFQCode))
  2714. {
  2715. sql += " and a.RFQCode like '%" + RFQCode + "%'";
  2716. }
  2717. if (!string.IsNullOrEmpty(RFQName))
  2718. {
  2719. sql += " and a.RFQName like '%" + RFQName + "%'";
  2720. }
  2721. if (!string.IsNullOrEmpty(SupplierCode))
  2722. {
  2723. sql += " and B.SupplierCode like '%" + SupplierCode + "%'";
  2724. }
  2725. if (!string.IsNullOrEmpty(SupplierName))
  2726. {
  2727. sql += " and b.SupplierName like '%" + SupplierName + "%'";
  2728. }
  2729. if (!string.IsNullOrEmpty(InvCode))
  2730. {
  2731. sql += " and e.itemcode like '%" + InvCode + "%'";
  2732. }
  2733. if (!string.IsNullOrEmpty(InvName))
  2734. {
  2735. sql += " and e.itemname like '%" + InvName + "%'";
  2736. }
  2737. if (!string.IsNullOrEmpty(InvStd))
  2738. {
  2739. sql += " and f.InvStd like '%" + InvStd + "%'";
  2740. }
  2741. if (!string.IsNullOrEmpty(TimeFrom))
  2742. {
  2743. sql += " and a.BEGINDATE>='" + TimeFrom + "'";
  2744. }
  2745. if (!string.IsNullOrEmpty(TimeTo))
  2746. {
  2747. sql += " and a.BEGINDATE<='" + TimeTo + "'";
  2748. }
  2749. if (!string.IsNullOrEmpty(ReleaseState.Trim(',')) && ReleaseState.Trim(',') != "'Examine'" && ReleaseState.Trim(',') != "'HasExamine'")
  2750. {
  2751. sql += " and a.status in ('" + ReleaseState.TrimEnd('\'').TrimEnd(',') + "')";
  2752. }
  2753. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  2754. {
  2755. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  2756. }
  2757. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  2758. return dt;
  2759. }
  2760. public string GetJsonVersion(string RFQCODE, string Version)
  2761. {
  2762. List<DbParameter> parameter = new List<DbParameter>();
  2763. // string sql = @"select
  2764. // a.RFQCODE+bb.ITEMCODE AS Costre, f.cVenCode,f.cVenName,F_MobilePhone,''税率,''账期,''货期,d.QUOPRICE 报价,''总报价,''总价,''价格降幅,''备注,''业务类型,bb.ITEMCODE,h.InvName
  2765. //INTO #TempA
  2766. // FROM dbo.ICSSORRFQ a
  2767. // LEFT JOIN dbo.icsSORRFQ2NORMALITEM bb ON a.RFQCODE=bb.RFQCODE AND a.workpoint=bb.WorkPoint
  2768. //LEFT JOIN dbo.ICSSORRFQ2VENDOR b ON a.RFQCODE=b.RFQCODE AND a.workpoint=b.WorkPoint
  2769. // LEFT JOIN icsSORQUOTATION c ON b.RFQCODE=c.RFQCODE AND b.VENDORCODE=c.VENDORCODE AND b.WorkPoint=c.WorkPoint
  2770. //LEFT JOIN icsSORQUODETAILNORMAL d ON d.QUOTATIONCODE=c.QUOTATIONCODE AND d.WorkPoint=c.WorkPoint AND bb.ItemCode=d.ItemCode AND a.RFQCODE=d.RFQCODE
  2771. //LEFT JOIN dbo.ICSVendor f ON b.VENDORCODE=f.cVenCode AND b.WorkPoint=f.WorkPoint
  2772. //LEFT JOIN dbo.Sys_SRM_User g ON f.cVenCode=g.F_VenCode AND d.WorkPoint=g.F_Location
  2773. //LEFT JOIN dbo.ICSInventory h ON bb.ITEMCODE=h.InvCode AND bb.WorkPoint=h.WorkPoint
  2774. //WHERE a.RFQCODE='" + RFQCODE + @"'
  2775. //SELECT distinct Costre, 业务类型,ITEMCODE as 料号,InvName as 料品名称 FROM #TempA
  2776. //SELECT Costre,cVenName as 供应商名称,F_MobilePhone as 联系人,''税率,''账期,''货期,报价,''总报价,''总价,''价格降幅,''备注 FROM #TempA ORDER BY cVenName,ITEMCODE
  2777. //DROP TABLE #TempA";
  2778. string sql = @"select
  2779. a.RFQCODE+bb.ITEMCODE AS Costre, f.VenCode,f.VenName,F_MobilePhone,c.VENDORMEMO AS , d.PlanDeliveryDate AS ,d.DeliveryDate AS ,d.QUOPRICE ,TotalPrice AS ,Bargaining AS ,TotalBargaining AS ,PriceReduction AS ,'',bb.ITEMCODE,h.InvName,f.VenPhone as ,f.VenLPerson as
  2780. INTO #TempA
  2781. FROM dbo.ICSSORRFQ a --
  2782. LEFT JOIN dbo.icsSORRFQ2NORMALITEM bb ON a.RFQCODE=bb.RFQCODE AND a.workpoint=bb.WorkPoint --
  2783. LEFT JOIN dbo.ICSSORRFQ2VENDOR b ON a.RFQCODE=b.RFQCODE AND a.workpoint=b.WorkPoint --
  2784. LEFT JOIN icsSORQUOTATION c ON b.RFQCODE=c.RFQCODE AND b.VENDORCODE=c.VENDORCODE AND b.WorkPoint=c.WorkPoint --
  2785. LEFT JOIN icsSORQUODETAILNORMAL_HISTORY d ON d.QUOTATIONCODE=c.QUOTATIONCODE AND d.WorkPoint=c.WorkPoint AND bb.ItemCode=d.ItemCode AND a.RFQCODE=d.RFQCODE --
  2786. LEFT JOIN dbo.ICSVendor f ON b.VENDORCODE=f.VenCode AND b.WorkPoint=f.WorkPoint
  2787. LEFT JOIN dbo.Sys_SRM_User g ON f.VenCode=g.F_VenCode AND d.WorkPoint=g.F_Location
  2788. LEFT JOIN dbo.ICSInventory h ON bb.ITEMCODE=h.InvCode AND bb.WorkPoint=h.WorkPoint
  2789. WHERE a.RFQCODE='" + RFQCODE + @"' and d.Version='" + Version + @"'
  2790. SELECT a.RFQCODE+bb.ITEMCODE AS Costre,'', bb.ITEMCODE,InvName,h.InvUnit AS ,bb.REQUESTQUANTITY AS ,bb.PlanFinishDate AS ,'' AS ,'' AS ,bb.ApprovedVendor AS ,bb.ApprovedPrice ,bb.ApprovedTotalPrice AS
  2791. INTO #TempB
  2792. FROM dbo.ICSSORRFQ a --
  2793. LEFT JOIN dbo.icsSORRFQ2NORMALITEM bb ON a.RFQCODE=bb.RFQCODE AND a.workpoint=bb.WorkPoint --
  2794. LEFT JOIN icsSORQUOTATION c ON bb.RFQCODE=c.RFQCODE AND bb.WorkPoint=c.WorkPoint --
  2795. LEFT JOIN icsSORQUODETAILNORMAL_HISTORY d ON d.QUOTATIONCODE=c.QUOTATIONCODE AND d.WorkPoint=c.WorkPoint AND bb.ItemCode=d.ItemCode AND a.RFQCODE=d.RFQCODE --
  2796. LEFT JOIN dbo.ICSInventory h ON bb.ITEMCODE=h.InvCode AND bb.WorkPoint=h.WorkPoint
  2797. WHERE a.RFQCODE='" + RFQCODE + @"' and d.Version='" + Version + @"'
  2798. SELECT distinct Costre, ,ITEMCODE as ,InvName as ,,,,,,,, FROM #TempB
  2799. SELECT Costre,VenName as ,, ,,,,,,,,, FROM #TempA ORDER BY VenName,ITEMCODE
  2800. DROP TABLE #TempA
  2801. DROP TABLE #TempB";
  2802. DataSet DSet = SqlHelper.GetDataSetBySql(sql);
  2803. string Inputstr = SqlHelper.DataSetToJson(DSet, "供应商信息", "Costre");
  2804. return Inputstr;
  2805. }
  2806. public string GetJson(string RFQCODE)
  2807. {
  2808. List<DbParameter> parameter = new List<DbParameter>();
  2809. // string sql = @"select
  2810. // a.RFQCODE+bb.ITEMCODE AS Costre, f.cVenCode,f.cVenName,F_MobilePhone,''税率,''账期,''货期,d.QUOPRICE 报价,''总报价,''总价,''价格降幅,''备注,''业务类型,bb.ITEMCODE,h.InvName
  2811. //INTO #TempA
  2812. // FROM dbo.ICSSORRFQ a
  2813. // LEFT JOIN dbo.icsSORRFQ2NORMALITEM bb ON a.RFQCODE=bb.RFQCODE AND a.workpoint=bb.WorkPoint
  2814. //LEFT JOIN dbo.ICSSORRFQ2VENDOR b ON a.RFQCODE=b.RFQCODE AND a.workpoint=b.WorkPoint
  2815. // LEFT JOIN icsSORQUOTATION c ON b.RFQCODE=c.RFQCODE AND b.VENDORCODE=c.VENDORCODE AND b.WorkPoint=c.WorkPoint
  2816. //LEFT JOIN icsSORQUODETAILNORMAL d ON d.QUOTATIONCODE=c.QUOTATIONCODE AND d.WorkPoint=c.WorkPoint AND bb.ItemCode=d.ItemCode AND a.RFQCODE=d.RFQCODE
  2817. //LEFT JOIN dbo.ICSVendor f ON b.VENDORCODE=f.cVenCode AND b.WorkPoint=f.WorkPoint
  2818. //LEFT JOIN dbo.Sys_SRM_User g ON f.cVenCode=g.F_VenCode AND d.WorkPoint=g.F_Location
  2819. //LEFT JOIN dbo.ICSInventory h ON bb.ITEMCODE=h.InvCode AND bb.WorkPoint=h.WorkPoint
  2820. //WHERE a.RFQCODE='" + RFQCODE + @"'
  2821. //SELECT distinct Costre, 业务类型,ITEMCODE as 料号,InvName as 料品名称 FROM #TempA
  2822. //SELECT Costre,cVenName as 供应商名称,F_MobilePhone as 联系人,''税率,''账期,''货期,报价,''总报价,''总价,''价格降幅,''备注 FROM #TempA ORDER BY cVenName,ITEMCODE
  2823. //DROP TABLE #TempA";
  2824. string sql = @"select
  2825. a.RFQCODE+bb.ITEMCODE AS Costre, f.VenCode cVenCode,f.VenName cVenName,F_MobilePhone,c.VENDORMEMO AS , d.PlanDeliveryDate AS ,d.DeliveryDate AS ,d.QUOPRICE ,TotalPrice AS ,Bargaining AS ,TotalBargaining AS ,PriceReduction AS ,'',bb.ITEMCODE,h.InvName,f.VenPhone as ,f.VenLPerson as
  2826. INTO #TempA
  2827. FROM dbo.ICSSORRFQ a --
  2828. LEFT JOIN dbo.icsSORRFQ2NORMALITEM bb ON a.RFQCODE=bb.RFQCODE AND a.workpoint=bb.WorkPoint --
  2829. LEFT JOIN dbo.ICSSORRFQ2VENDOR b ON a.RFQCODE=b.RFQCODE AND a.workpoint=b.WorkPoint --
  2830. LEFT JOIN icsSORQUOTATION c ON b.RFQCODE=c.RFQCODE AND b.VENDORCODE=c.VENDORCODE AND b.WorkPoint=c.WorkPoint --
  2831. LEFT JOIN icsSORQUODETAILNORMAL d ON d.QUOTATIONCODE=c.QUOTATIONCODE AND d.WorkPoint=c.WorkPoint AND bb.ItemCode=d.ItemCode AND a.RFQCODE=d.RFQCODE --
  2832. LEFT JOIN dbo.ICSVendor f ON b.VENDORCODE=f.VenCode AND b.WorkPoint=f.WorkPoint
  2833. LEFT JOIN dbo.Sys_SRM_User g ON f.VenCode=g.F_VenCode AND d.WorkPoint=g.F_Location
  2834. LEFT JOIN dbo.ICSInventory h ON bb.ITEMCODE=h.InvCode AND bb.WorkPoint=h.WorkPoint
  2835. WHERE a.RFQCODE='" + RFQCODE + @"'
  2836. SELECT a.RFQCODE+bb.ITEMCODE AS Costre,'', bb.ITEMCODE,InvName,'',h.InvUnit AS ,bb.REQUESTQUANTITY AS ,bb.PlanFinishDate AS ,'' AS ,'' AS ,bb.ApprovedVendor AS ,bb.ApprovedPrice ,bb.ApprovedTotalPrice AS
  2837. INTO #TempB
  2838. FROM dbo.ICSSORRFQ a --
  2839. LEFT JOIN dbo.icsSORRFQ2NORMALITEM bb ON a.RFQCODE=bb.RFQCODE AND a.workpoint=bb.WorkPoint --
  2840. LEFT JOIN icsSORQUOTATION c ON bb.RFQCODE=c.RFQCODE AND bb.WorkPoint=c.WorkPoint --
  2841. LEFT JOIN icsSORQUODETAILNORMAL d ON d.QUOTATIONCODE=c.QUOTATIONCODE AND d.WorkPoint=c.WorkPoint AND bb.ItemCode=d.ItemCode AND a.RFQCODE=d.RFQCODE --
  2842. LEFT JOIN dbo.ICSInventory h ON bb.ITEMCODE=h.InvCode AND bb.WorkPoint=h.WorkPoint
  2843. WHERE a.RFQCODE='" + RFQCODE + @"'
  2844. SELECT distinct Costre, ,ITEMCODE as ,InvName as ,,,,,,,,, FROM #TempB
  2845. SELECT Costre,cVenName as ,, ,,,,,,,,, FROM #TempA ORDER BY cVenName,ITEMCODE
  2846. DROP TABLE #TempA
  2847. DROP TABLE #TempB";
  2848. DataSet DSet = SqlHelper.GetDataSetBySql(sql);
  2849. string Inputstr = SqlHelper.DataSetToJson(DSet, "供应商信息", "Costre");
  2850. return Inputstr;
  2851. }
  2852. /// <summary>
  2853. /// 采购提交比价单
  2854. /// </summary>
  2855. /// <param name="json"></param>
  2856. /// <returns></returns>
  2857. public string CGAgree(string json, string result, string rfqno)
  2858. {
  2859. DateTime dDisableDate = new DateTime(2099, 12, 31, 0, 0, 0, 0);
  2860. string msg = "";
  2861. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  2862. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  2863. conn.Open();
  2864. SqlTransaction sqlTran = conn.BeginTransaction();
  2865. SqlCommand cmd = new SqlCommand();
  2866. cmd.Transaction = sqlTran;
  2867. cmd.Connection = conn;
  2868. try
  2869. {
  2870. string GGUID = Guid.NewGuid().ToString();
  2871. var jobject = JArray.Parse(json);
  2872. //List<CreatePriceList.UFIDAU9CustCustCreatePriceListSRVPriceDataData> comtextList = new List<CreatePriceList.UFIDAU9CustCustCreatePriceListSRVPriceDataData>();
  2873. string sql = "";
  2874. for (int i = 0; i < jobject.Count; i++)
  2875. {
  2876. var resultss = jobject[i]["ZBVendorCode"].ToArray();
  2877. string updateicsSORQUODETAILNORMAL = @"update a
  2878. set a.QUOSTATUS='Pending',a.QUOPRICE='" + jobject[i]["PricingPrice"].ToString() + @"'
  2879. from icsSORQUODETAILNORMAL a
  2880. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  2881. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  2882. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + jobject[i]["ZBVendorCode"] + "'";
  2883. SqlCommandHelper.CmdExecuteNonQuery(updateicsSORQUODETAILNORMAL, cmd);
  2884. string updateicsSORRFQL = " UPDATE icsSORRFQ SET STATUS='Pending' where RFQCODE='" + jobject[i]["rfqno"] + "'";
  2885. SqlCommandHelper.CmdExecuteNonQuery(updateicsSORRFQL, cmd);
  2886. string updateicsSORRFQ2NORMALITEM = " UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "',ApprovedTotalPrice='" + jobject[i]["ApprovedTotalPrice"] + "',ApprovedPrice='" + jobject[i]["PricingPrice"].ToString() + "',ApprovedVendor='" + jobject[i]["ZBVendorCode"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  2887. SqlCommandHelper.CmdExecuteNonQuery(updateicsSORRFQ2NORMALITEM, cmd);
  2888. }
  2889. JArray res = (JArray)JsonConvert.DeserializeObject(result);
  2890. foreach (var item in res)
  2891. {
  2892. JObject jo = (JObject)item;
  2893. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["供应商议价数据"].ToString());
  2894. foreach (var detail in resdetail)
  2895. {
  2896. JObject det = (JObject)detail;
  2897. sql = @"update a
  2898. set a.QUOSTATUS='Pending',a.Bargaining='" + det[""].ToString() + @"'
  2899. ,a.TotalBargaining='" + det[""].ToString() + @"'
  2900. ,a.PriceReduction='" + det[""].ToString() + @"'
  2901. from icsSORQUODETAILNORMAL a
  2902. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  2903. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  2904. where b.RFQCODE='" + rfqno + "' and ITEMCODE='" + jo[""].ToString() + "' and c.VenName='" + det[""].ToString() + "'";
  2905. SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
  2906. }
  2907. }
  2908. cmd.Transaction.Commit();
  2909. msg = "保存成功";
  2910. }
  2911. catch (Exception ex)
  2912. {
  2913. cmd.Transaction.Rollback();
  2914. msg = ex.Message;
  2915. }
  2916. finally
  2917. {
  2918. if (conn.State == ConnectionState.Open)
  2919. {
  2920. conn.Close();
  2921. }
  2922. conn.Dispose();
  2923. };
  2924. return msg;
  2925. }
  2926. public string BZAgree(string json, string Type)
  2927. {
  2928. DateTime dDisableDate = new DateTime(2099, 12, 31, 0, 0, 0, 0);
  2929. string msg = "";
  2930. try
  2931. {
  2932. string CREATETIME = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
  2933. string CREATEDATE = DateTime.Now.ToString("yyyy-MM-dd");
  2934. string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  2935. string GGUID = Guid.NewGuid().ToString();
  2936. var jobject = JArray.Parse(json);
  2937. //List<CreatePriceList.UFIDAU9CustCustCreatePriceListSRVPriceDataData> comtextList = new List<CreatePriceList.UFIDAU9CustCustCreatePriceListSRVPriceDataData>();
  2938. string currentMaxVersion = "";
  2939. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  2940. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  2941. conn.Open();
  2942. SqlTransaction sqlTran = conn.BeginTransaction();
  2943. SqlCommand cmd = new SqlCommand();
  2944. cmd.Transaction = sqlTran;
  2945. cmd.Connection = conn;
  2946. try
  2947. {
  2948. for (int i = 0; i < jobject.Count; i++)
  2949. {
  2950. string sql = @"SELECT 0 AS iLowerLimit, REQUESTQUANTITY AS iUpperLimit, QUOPRICE as iTaxUnitPrice ,b.VENDORMEMO AS iTaxRate,ROUND(ROUND( QUOPRICE,2)/(1+(b.VENDORMEMO/CAST(100 AS float))),2) AS iUnitPrice,a.WorkPoint,a.QUOTATIONCODE,b.VENDORCODE,ITEMCODE,'人民币' cExch_Name
  2951. ,a.Version
  2952. FROM icsSORQUODETAILNORMAL a
  2953. LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  2954. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  2955. LEFT JOIN ICSInventory d ON ITEMCODE=d.invCode
  2956. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + jobject[i]["ZBVendorCode"] + "'";
  2957. DataTable dtD = SqlCommandHelper.SQlReturnData(sql, cmd);
  2958. // 查询当前最大版本号
  2959. string maxVersionSql = @"SELECT ISNULL(MAX(Version), 'Revision.A/0') AS MaxVersion
  2960. FROM icsSORQUODETAILNORMAL a
  2961. LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  2962. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  2963. WHERE a.RFQCODE = '" + jobject[i]["rfqno"] + @"'
  2964. AND ITEMCODE = '" + jobject[i]["ITEMCODE"] + @"' ";
  2965. DataTable dtVersion = SqlCommandHelper.SQlReturnData(maxVersionSql, cmd);
  2966. currentMaxVersion = dtVersion.Rows[0]["MaxVersion"].ToString();
  2967. // 解析版本号并递增
  2968. int revisionNumber = 0;
  2969. if (!string.IsNullOrEmpty(currentMaxVersion) && currentMaxVersion.StartsWith("Revision.A/"))
  2970. {
  2971. string versionPart = currentMaxVersion.Split('/')[1];
  2972. if (int.TryParse(versionPart, out revisionNumber))
  2973. {
  2974. revisionNumber++;
  2975. }
  2976. }
  2977. string newVersion = "Revision.A/" + revisionNumber;
  2978. // 更新当前记录
  2979. string QUOSTATUS = "";
  2980. if (Type == "BZ")
  2981. {
  2982. QUOSTATUS = "BZPricingApprove";
  2983. }
  2984. else if (Type == "ZJL")
  2985. {
  2986. QUOSTATUS = "PricingApprove";
  2987. }
  2988. string updateSql = @"UPDATE a
  2989. SET a.QUOSTATUS='" + QUOSTATUS + @"',
  2990. a.QUOPRICE='" + jobject[i]["PricingPrice"].ToString() + @"',
  2991. a.Bargaining1='" + jobject[i]["Bargaining1"] + @"',
  2992. a.Bargaining2='" + jobject[i]["Bargaining2"] + @"',
  2993. a.Bargaining3='" + jobject[i]["Bargaining3"] + @"',
  2994. a.Version='" + newVersion + @"'
  2995. FROM icsSORQUODETAILNORMAL a
  2996. LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  2997. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  2998. WHERE b.RFQCODE='" + jobject[i]["rfqno"] + @"'
  2999. AND a.ITEMCODE='" + jobject[i]["ITEMCODE"] + @"'
  3000. AND c.VenName='" + jobject[i]["ZBVendorCode"] + @"'";
  3001. SqlCommandHelper.CmdExecuteNonQuery(updateSql, cmd);
  3002. // 更新RFQ状态和备注
  3003. string updateRfqSql = @"UPDATE icsSORRFQ SET STATUS='" + QUOSTATUS + @"' WHERE RFQCODE='" + jobject[i]["rfqno"] + @"'
  3004. UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + @"' WHERE RFQCODE='" + jobject[i]["rfqno"] + @"' AND ITEMCODE='" + jobject[i]["ITEMCODE"] + @"'";
  3005. SqlCommandHelper.CmdExecuteNonQuery(updateRfqSql, cmd);
  3006. log.Info("调接口开始");
  3007. if (Type == "ZJL")
  3008. {
  3009. //调用接口
  3010. }
  3011. }
  3012. // 保存当前记录到历史表
  3013. string insertHistorySql = @"INSERT INTO icsSORQUODETAILNORMAL_HISTORY
  3014. SELECT
  3015. ADDITION1,ADDITION2,BUYERMEMO,COMPANYCODE,COMPARECODE,COSTDETAILSREFERCODE,CURRENCY,CURRENTQUOINDICATOR,
  3016. ENDDATE,INITREJECTREASON,ISINCLUDETAX,ISSELECTED,ITEMCODE,ITEMNAME,ITEMTYPE,LOGDATE,LOGTIME,LOGUSER,
  3017. PRICINGREJECTREASON,QUOBUYERPRICE,QUOPRICE,QUOSTATUS,QUOTATIONCODE,QUOTEDATE,REFERPRICE,REQUESTQUANTITY,
  3018. RFQCODE,STARTDATE,TRANSPORTATIONTYPE,UNIT,VENDORMEMO,VENDORREJECTREASON,Model,WorkPoint,PURCHUGCODE,PPs,
  3019. PPstatus,'" + CREATETIME + "','" + CREATEDATE + "',XCPRICE,NEWID(),'" + UserName + @"',EATTRIBUTE11,EATTRIBUTE12,EATTRIBUTE13,EATTRIBUTE14,
  3020. EATTRIBUTE15,EATTRIBUTE16,EATTRIBUTE17,EATTRIBUTE18,EATTRIBUTE19,EATTRIBUTE20,EATTRIBUTE21,EATTRIBUTE22,
  3021. EATTRIBUTE23,EATTRIBUTE24,EATTRIBUTE25,EATTRIBUTE26,EATTRIBUTE27,EATTRIBUTE28,EATTRIBUTE29,EATTRIBUTE30
  3022. ,DeliveryDate,PlanDeliveryDate,TotalPrice,Bargaining,TotalBargaining,PriceReduction,BlankWeight,WeightUnitPrice,
  3023. RawMaterialPrice,ProcessingFee,OtherExpenses,ZJQUOPRICE,Freight,Bargaining1,Bargaining2,Bargaining3,'" + currentMaxVersion + @"'
  3024. FROM icsSORQUODETAILNORMAL a
  3025. WHERE a.RFQCODE='" + jobject[0]["rfqno"] + @"' ";
  3026. SqlCommandHelper.CmdExecuteNonQuery(insertHistorySql, cmd);
  3027. cmd.Transaction.Commit();
  3028. msg = "保存成功";
  3029. }
  3030. catch (Exception ex)
  3031. {
  3032. cmd.Transaction.Rollback();
  3033. throw new Exception(ex.Message);
  3034. }
  3035. finally
  3036. {
  3037. if (conn.State == ConnectionState.Open)
  3038. {
  3039. conn.Close();
  3040. }
  3041. conn.Dispose();
  3042. }
  3043. }
  3044. catch (Exception ex)
  3045. {
  3046. log.Error("传入参数异常: " + ex.Message);
  3047. msg = "系统异常: " + ex.Message;
  3048. }
  3049. return msg;
  3050. }
  3051. /// <summary>
  3052. /// 部长拒绝
  3053. /// </summary>
  3054. /// <param name="json"></param>
  3055. /// <returns></returns>
  3056. public string BackAgree(string json)
  3057. {
  3058. DateTime dDisableDate = new DateTime(2099, 12, 31, 0, 0, 0, 0);
  3059. string msg = "";
  3060. try
  3061. {
  3062. string GGUID = Guid.NewGuid().ToString();
  3063. var jobject = JArray.Parse(json);
  3064. string sql = "";
  3065. for (int i = 0; i < jobject.Count; i++)
  3066. {
  3067. var resultss = jobject[i]["ZBVendorCode"].ToArray();
  3068. try
  3069. {
  3070. if (jobject[i]["PricingPrice"].ToString() == "")
  3071. {
  3072. sql = @"update a
  3073. set a.QUOSTATUS='Back'
  3074. from icsSORQUODETAILNORMAL a
  3075. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  3076. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  3077. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + jobject[i]["ZBVendorCode"] + "'";
  3078. }
  3079. else
  3080. {
  3081. sql = @"update a
  3082. set a.QUOSTATUS='Back',a.QUOPRICE='" + jobject[i]["PricingPrice"].ToString() + @"'
  3083. from icsSORQUODETAILNORMAL a
  3084. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  3085. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  3086. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + jobject[i]["ZBVendorCode"] + "'";
  3087. }
  3088. sql += " UPDATE icsSORRFQ SET STATUS='Back' where RFQCODE='" + jobject[i]["rfqno"] + "'" +
  3089. " UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  3090. }
  3091. catch (Exception ex)
  3092. {
  3093. msg = "异常信息:" + ex.Message;
  3094. };
  3095. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  3096. if (count <= 0)
  3097. msg = "保存失败";
  3098. else
  3099. {
  3100. msg = "保存成功";
  3101. }
  3102. }
  3103. }
  3104. catch (Exception ex)
  3105. {
  3106. log.Error("传入参数" + ex.Message);
  3107. return ex.Message;
  3108. }
  3109. return msg;
  3110. }
  3111. /// <summary>
  3112. /// 部长修改
  3113. /// </summary>
  3114. /// <param name="json"></param>
  3115. /// <returns></returns>
  3116. public string SaveAgree(string json)
  3117. {
  3118. DateTime dDisableDate = new DateTime(2099, 12, 31, 0, 0, 0, 0);
  3119. string msg = "";
  3120. try
  3121. {
  3122. string GGUID = Guid.NewGuid().ToString();
  3123. var jobject = JArray.Parse(json);
  3124. string sql = "";
  3125. for (int i = 0; i < jobject.Count; i++)
  3126. {
  3127. var resultss = jobject[i]["ZBVendorCode"].ToArray();
  3128. try
  3129. {
  3130. // if (jobject[i]["PricingPrice"].ToString() == "")
  3131. // {
  3132. // sql = @"update a
  3133. // set a.QUOSTATUS='Back'
  3134. // from icsSORQUODETAILNORMAL a
  3135. //left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  3136. // LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.cVenCode AND b.WorkPoint=c.WorkPoint
  3137. // where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.cVenName='" + jobject[i]["ZBVendorCode"] + "'";
  3138. // }
  3139. // else
  3140. // {
  3141. // sql = @"update a
  3142. // set a.QUOSTATUS='Back',a.QUOPRICE='" + jobject[i]["PricingPrice"].ToString() + @"'
  3143. // from icsSORQUODETAILNORMAL a
  3144. //left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  3145. // LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.cVenCode AND b.WorkPoint=c.WorkPoint
  3146. // where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.cVenName='" + jobject[i]["ZBVendorCode"] + "'";
  3147. // }
  3148. sql += " UPDATE icsSORRFQ SET STATUS='Back' where RFQCODE='" + jobject[i]["rfqno"] + "'" +
  3149. " UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  3150. }
  3151. catch (Exception ex)
  3152. {
  3153. msg = "异常信息:" + ex.Message;
  3154. };
  3155. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  3156. if (count <= 0)
  3157. msg = "保存失败";
  3158. else
  3159. {
  3160. msg = "保存成功";
  3161. }
  3162. }
  3163. }
  3164. catch (Exception ex)
  3165. {
  3166. log.Error("传入参数" + ex.Message);
  3167. return ex.Message;
  3168. }
  3169. return msg;
  3170. }
  3171. /// <summary>
  3172. /// 部长撤销审核
  3173. /// </summary>
  3174. /// <param name="json"></param>
  3175. /// <returns></returns>
  3176. public string BZUpdateBJD(string json)
  3177. {
  3178. try
  3179. {
  3180. string wheresql = "(";
  3181. string[] id = json.Split(',');
  3182. for (int i = 0; i < id.Length; i++)
  3183. {
  3184. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  3185. }
  3186. wheresql = wheresql.Trim(',') + ")";
  3187. string sql = "UPDATE icsSORRFQ SET STATUS='Pending' WHERE RFQCODE in" + wheresql;
  3188. sql += @" UPDATE icsSORQUODETAILNORMAL SET QUOSTATUS='Pending' WHERE RFQCODE in" + wheresql;
  3189. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  3190. if (count > 0)
  3191. {
  3192. return "撤回成功!";
  3193. }
  3194. else
  3195. {
  3196. return "撤回失败!";
  3197. }
  3198. }
  3199. catch (Exception ex)
  3200. {
  3201. return ex.Message + " 撤回失败!";
  3202. }
  3203. }
  3204. public DataTable GetVersionList(string queryJson, ref Pagination jqgridparam)
  3205. {
  3206. DataTable dt = new DataTable();
  3207. var queryParam = queryJson.ToJObject();
  3208. List<DbParameter> parameter = new List<DbParameter>();
  3209. string sql = @" SELECT DISTINCT Version,CREATETIME,CREATEUSER FROM icsSORQUODETAILNORMAL_HISTORY WHERE 1=1 ";
  3210. if (!string.IsNullOrWhiteSpace(queryJson))
  3211. {
  3212. if (!string.IsNullOrWhiteSpace(queryParam["rfqno"].ToString()))
  3213. {
  3214. sql += " and RFQCODE in('" + queryParam["rfqno"].ToString().TrimEnd(',') + "') ";
  3215. }
  3216. }
  3217. sql += " ORDER BY Version; ";
  3218. return SqlHelper.GetDataTableBySql(sql);
  3219. }
  3220. public string SaveBZAgree(string result, string rfqno)
  3221. {
  3222. string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  3223. string CREATETIME = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
  3224. string CREATEDATE = DateTime.Now.ToString("yyyy-MM-dd");
  3225. DateTime dDisableDate = new DateTime(2099, 12, 31, 0, 0, 0, 0);
  3226. string msg = "";
  3227. string currentMaxVersion = "";
  3228. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  3229. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  3230. conn.Open();
  3231. SqlTransaction sqlTran = conn.BeginTransaction();
  3232. SqlCommand cmd = new SqlCommand();
  3233. cmd.Transaction = sqlTran;
  3234. cmd.Connection = conn;
  3235. try
  3236. {
  3237. JArray res = (JArray)JsonConvert.DeserializeObject(result);
  3238. foreach (var item in res)
  3239. {
  3240. JObject jo = (JObject)item;
  3241. // 查询当前最大版本号
  3242. string maxVersionSql = @"SELECT ISNULL(MAX(Version), 'Revision.A/0') AS MaxVersion
  3243. FROM icsSORQUODETAILNORMAL a
  3244. LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  3245. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  3246. WHERE a.RFQCODE = '" + rfqno + @"'
  3247. AND ITEMCODE = '" + jo[""].ToString() + @"' ";
  3248. DataTable dtVersion = SqlCommandHelper.SQlReturnData(maxVersionSql, cmd);
  3249. currentMaxVersion = dtVersion.Rows[0]["MaxVersion"].ToString();
  3250. // 解析版本号并递增
  3251. int revisionNumber = 0;
  3252. if (!string.IsNullOrEmpty(currentMaxVersion) && currentMaxVersion.StartsWith("Revision.A/"))
  3253. {
  3254. string versionPart = currentMaxVersion.Split('/')[1];
  3255. if (int.TryParse(versionPart, out revisionNumber))
  3256. {
  3257. revisionNumber++;
  3258. }
  3259. }
  3260. string newVersion = "Revision.A/" + revisionNumber;
  3261. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["供应商议价数据"].ToString());
  3262. foreach (var detail in resdetail)
  3263. {
  3264. JObject det = (JObject)detail;
  3265. string sql = @"update a
  3266. set a.QUOSTATUS='Pending',a.Bargaining='" + det[""].ToString() + @"'
  3267. ,a.TotalBargaining='" + det[""].ToString() + @"'
  3268. ,a.PriceReduction='" + det[""].ToString() + @"'
  3269. ,a.Version='" + newVersion + @"'
  3270. from icsSORQUODETAILNORMAL a
  3271. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  3272. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  3273. where b.RFQCODE='" + rfqno + "' and ITEMCODE='" + jo[""].ToString() + "' and c.VenName='" + det[""].ToString() + "'";
  3274. SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
  3275. }
  3276. }
  3277. // 保存当前记录到历史表
  3278. string insertHistorySqlhis = @"INSERT INTO icsSORQUODETAILNORMAL_HISTORY
  3279. SELECT
  3280. ADDITION1,ADDITION2,BUYERMEMO,COMPANYCODE,COMPARECODE,COSTDETAILSREFERCODE,CURRENCY,CURRENTQUOINDICATOR,
  3281. ENDDATE,INITREJECTREASON,ISINCLUDETAX,ISSELECTED,ITEMCODE,ITEMNAME,ITEMTYPE,LOGDATE,LOGTIME,LOGUSER,
  3282. PRICINGREJECTREASON,QUOBUYERPRICE,QUOPRICE,QUOSTATUS,QUOTATIONCODE,QUOTEDATE,REFERPRICE,REQUESTQUANTITY,
  3283. RFQCODE,STARTDATE,TRANSPORTATIONTYPE,UNIT,VENDORMEMO,VENDORREJECTREASON,Model,WorkPoint,PURCHUGCODE,PPs,
  3284. PPstatus,'" + CREATETIME + "','" + CREATEDATE + "',XCPRICE,NEWID(),'" + UserName + @"',EATTRIBUTE11,EATTRIBUTE12,EATTRIBUTE13,EATTRIBUTE14,
  3285. EATTRIBUTE15,EATTRIBUTE16,EATTRIBUTE17,EATTRIBUTE18,EATTRIBUTE19,EATTRIBUTE20,EATTRIBUTE21,EATTRIBUTE22,
  3286. EATTRIBUTE23,EATTRIBUTE24,EATTRIBUTE25,EATTRIBUTE26,EATTRIBUTE27,EATTRIBUTE28,EATTRIBUTE29,EATTRIBUTE30
  3287. ,DeliveryDate,PlanDeliveryDate,TotalPrice,Bargaining,TotalBargaining,PriceReduction,BlankWeight,WeightUnitPrice,
  3288. RawMaterialPrice,ProcessingFee,OtherExpenses,ZJQUOPRICE,Freight,Bargaining1,Bargaining2,Bargaining3,'" + currentMaxVersion + @"'
  3289. FROM icsSORQUODETAILNORMAL a
  3290. WHERE a.RFQCODE='" + rfqno + @"' ";
  3291. SqlCommandHelper.CmdExecuteNonQuery(insertHistorySqlhis, cmd);
  3292. cmd.Transaction.Commit();
  3293. msg = "保存成功";
  3294. }
  3295. catch (Exception ex)
  3296. {
  3297. cmd.Transaction.Rollback();
  3298. msg = ex.Message;
  3299. }
  3300. finally
  3301. {
  3302. if (conn.State == ConnectionState.Open)
  3303. {
  3304. conn.Close();
  3305. }
  3306. conn.Dispose();
  3307. };
  3308. return msg;
  3309. }
  3310. }
  3311. }