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.

1688 lines
80 KiB

3 days ago
  1. using ICSSoft.SendMail;
  2. using Newtonsoft.Json;
  3. using Newtonsoft.Json.Linq;
  4. using NFine.Code;
  5. using NFine.Data.Extensions;
  6. using NFine.Domain._03_Entity.SRM;
  7. using NFine.Repository;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Configuration;
  11. using System.Data;
  12. using System.Data.Common;
  13. using System.Data.SqlClient;
  14. using System.Linq;
  15. using System.Text;
  16. using System.Threading.Tasks;
  17. using System.Xml.Linq;
  18. namespace NFine.Application.SRM
  19. {
  20. public class PerFormanceApp : RepositoryFactory<ICSVendor>
  21. {
  22. /// <summary>
  23. /// 获取绩效类型管理
  24. /// </summary>
  25. /// <param name="queryJson"></param>
  26. /// <param name="jqgridparam"></param>
  27. /// <returns></returns>
  28. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  29. {
  30. DataTable dt = new DataTable();
  31. var queryParam = queryJson.ToJObject();
  32. List<DbParameter> parameter = new List<DbParameter>();
  33. string sql = @"select
  34. ID
  35. ,MITEMCODE
  36. ,MITEMNAME
  37. ,MITEMDESCRIPTION
  38. ,MITEMSCORE as MITEMSCORE
  39. ,WorkPoint
  40. from ICSPERFTEMPLATEMITEM a
  41. WHERE 1=1";
  42. if (!string.IsNullOrWhiteSpace(queryJson))
  43. {
  44. if (!string.IsNullOrWhiteSpace(queryParam["WorkPoint"].ToString()))
  45. {
  46. sql += " and a.WorkPoint like '%" + queryParam["WorkPoint"].ToString() + "%' ";
  47. }
  48. if (!string.IsNullOrWhiteSpace(queryParam["MITEMCODE"].ToString()))
  49. {
  50. sql += " and a.MITEMCODE like '%" + queryParam["MITEMCODE"].ToString() + "%' ";
  51. }
  52. if (!string.IsNullOrWhiteSpace(queryParam["MITEMNAME"].ToString()))
  53. {
  54. sql += " and a.MITEMNAME like '%" + queryParam["MITEMNAME"].ToString() + "%' ";
  55. }
  56. }
  57. if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
  58. {
  59. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  60. }
  61. //sql += " group by ID, MITEMCODE,MITEMNAME,MITEMDESCRIPTION,WorkPoint";
  62. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  63. }
  64. public DataRow GetEMSCORE()
  65. {
  66. DataRow dr = null;
  67. List<DbParameter> parameter = new List<DbParameter>();
  68. string sql = @" select distinct
  69. 100-Sum(MITEMSCORE)as MITEMSCORE
  70. from ICSPERFTEMPLATEMITEM a
  71. WHERE 1=1
  72. ";
  73. dr = SqlHelper.GetDataRowBySql(sql);
  74. return dr;
  75. }
  76. /// <summary>
  77. /// 获取绩效打分
  78. /// </summary>
  79. /// <param name="queryJson"></param>
  80. /// <param name="jqgridparam"></param>
  81. /// <returns></returns>
  82. //public DataTable GetPerFormanceMark(string queryJson, ref Pagination jqgridparam)
  83. //{
  84. // DataTable dt = new DataTable();
  85. // var queryParam = queryJson.ToJObject();
  86. // List<DbParameter> parameter = new List<DbParameter>();
  87. // string sql = @"select DISTINCT
  88. // a.ID,
  89. // a.WorkPoint,
  90. // VENDORCODE,
  91. // b.VenName,
  92. // MITEMCODE,
  93. // MITEMNAME,
  94. // SCORE,
  95. // CONVERT(NVARCHAR(50),a.BeginDate,23) as BeginDate,
  96. // CONVERT(NVARCHAR(50),a.EndDate,23) as EndDate,
  97. // CHECKSTATUS,
  98. // CREATEDATE,
  99. // CREATETIME,
  100. // CREATEUSER,
  101. // MODIFIEDDATE,
  102. // MODIFIEDTIME,
  103. // MODIFIEDUSER,
  104. // ADDITION1,
  105. // ADDITION2
  106. // from ICSPERFCHECKRESULT a
  107. // LEFT JOIN ICSVendor b on a.VENDORCODE=b.VenCode AND a.WorkPoint=b.WorkPoint
  108. // WHERE 1=1";
  109. // if (!string.IsNullOrWhiteSpace(queryJson))
  110. // {
  111. // if (!string.IsNullOrWhiteSpace(queryParam["WorkPoint"].ToString()))
  112. // {
  113. // sql += " and a.WorkPoint like '%" + queryParam["WorkPoint"].ToString() + "%' ";
  114. // }
  115. // if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
  116. // {
  117. // sql += " and a.BeginDate > '" + queryParam["BeginDate"].ToString() + "' ";
  118. // }
  119. // if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  120. // {
  121. // sql += " and a.EndDate < '" + queryParam["EndDate"].ToString() + "' ";
  122. // }
  123. // if (!string.IsNullOrWhiteSpace(queryParam["CREATEDATE"].ToString()))
  124. // {
  125. // sql += " and a.CREATEDATE = '" + queryParam["CREATEDATE"].ToString() + "' ";
  126. // }
  127. // if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  128. // {
  129. // sql += " and a.VENDORCODE like '%" + queryParam["VenCode"].ToString() + "%' ";
  130. // }
  131. // if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  132. // {
  133. // sql += " and b.cVenName like '%" + queryParam["VenName"].ToString() + "%' ";
  134. // }
  135. // if (!string.IsNullOrWhiteSpace(queryParam["CREATEUSER"].ToString()))
  136. // {
  137. // sql += " and a.CREATEUSER like '%" + queryParam["CREATEUSER"].ToString() + "%' ";
  138. // }
  139. // }
  140. // if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
  141. // {
  142. // sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  143. // }
  144. // return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  145. //}
  146. /// <summary>
  147. /// 获取绩效打分
  148. /// </summary>
  149. /// <param name="queryJson"></param>
  150. /// <param name="jqgridparam"></param>
  151. /// <returns></returns>
  152. public DataTable GetPerFormanceMarkGrid(string queryJson, ref Pagination jqgridparam)
  153. {
  154. DataTable dt = new DataTable();
  155. var queryParam = queryJson.ToJObject();
  156. List<DbParameter> parameter = new List<DbParameter>();
  157. string sql = @"SELECT a.VENDORCODE
  158. ,b.VenName
  159. ,a.CHECKSTATUS
  160. ,a.CREATEUSER
  161. ,a.CREATEDATE
  162. ,SUM(a.SCORE)AS SCORE
  163. ,a.ADDITION1
  164. ,a.ADDITION2
  165. ,a.RatingAttachment
  166. ,a.WorkPoint
  167. ,a.PERFCode
  168. ,a.CHECKSTATUS as HIDDSTATUS
  169. ,a.ScoreUser
  170. FROM ICSPERFCHECKRESULT a
  171. LEFT JOIN dbo.ICSVendor b ON a.VENDORCODE=b.VenCode AND a.WorkPoint=b.WorkPoint
  172. WHERE 1=1
  173. ";
  174. if (!string.IsNullOrWhiteSpace(queryJson))
  175. {
  176. if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
  177. {
  178. sql += " and a.CREATEDATE > '" + queryParam["BeginDate"].ToString() + "' ";
  179. }
  180. if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  181. {
  182. sql += " and a.CREATEDATE < '" + queryParam["EndDate"].ToString() + "' ";
  183. }
  184. if (!string.IsNullOrWhiteSpace(queryParam["WorkPoint"].ToString()))
  185. {
  186. sql += " and a.WorkPoint like '%" + queryParam["WorkPoint"].ToString() + "%' ";
  187. }
  188. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  189. {
  190. sql += " and a.VENDORCODE like '%" + queryParam["VenCode"].ToString() + "%' ";
  191. }
  192. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  193. {
  194. sql += " and b.cVenName like '%" + queryParam["VenName"].ToString() + "%' ";
  195. }
  196. if (!string.IsNullOrWhiteSpace(queryParam["ADDITION1"].ToString()))
  197. {
  198. sql += " and a.ADDITION1 like '%" + queryParam["ADDITION1"].ToString() + "%' ";
  199. }
  200. if (!string.IsNullOrWhiteSpace(queryParam["ADDITION2"].ToString()))
  201. {
  202. sql += " and a.ADDITION2 like '%" + queryParam["ADDITION2"].ToString() + "%' ";
  203. }
  204. }
  205. if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
  206. {
  207. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  208. }
  209. //权限设置
  210. if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
  211. {
  212. sql = SqlHelper.OrganizeByVendor_F_ParentId(sql, NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  213. }
  214. sql += " GROUP BY a.VENDORCODE,b.VenName,a.CHECKSTATUS,a.CREATEUSER,a.CREATEDATE,a.ADDITION1,a.ADDITION2,a.RatingAttachment ,a.WorkPoint ,a.PERFCode,a.ScoreUser";
  215. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  216. }
  217. public DataTable GetPerFormanceMarkGridByVendor(string queryJson, ref Pagination jqgridparam)
  218. {
  219. DataTable dt = new DataTable();
  220. var queryParam = queryJson.ToJObject();
  221. List<DbParameter> parameter = new List<DbParameter>();
  222. string sql = @"SELECT a.VENDORCODE
  223. ,b.VenName
  224. ,a.CHECKSTATUS
  225. ,a.CREATEUSER
  226. ,a.CREATEDATE
  227. ,SUM(a.SCORE)AS SCORE
  228. ,a.ADDITION1
  229. ,a.ADDITION2
  230. ,a.FileName
  231. ,a.WorkPoint
  232. ,a.PERFCode
  233. ,a.CHECKSTATUS as HIDDSTATUS
  234. FROM ICSPERFCHECKRESULT a
  235. LEFT JOIN dbo.ICSVendor b ON a.VENDORCODE=b.VenCode AND a.WorkPoint=b.WorkPoint
  236. WHERE 1=1 and a.CHECKSTATUS='1'
  237. ";
  238. if (!string.IsNullOrWhiteSpace(queryJson))
  239. {
  240. if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
  241. {
  242. sql += " and a.CREATEDATE > '" + queryParam["BeginDate"].ToString() + "' ";
  243. }
  244. if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  245. {
  246. sql += " and a.CREATEDATE < '" + queryParam["EndDate"].ToString() + "' ";
  247. }
  248. if (!string.IsNullOrWhiteSpace(queryParam["WorkPoint"].ToString()))
  249. {
  250. sql += " and a.WorkPoint like '%" + queryParam["WorkPoint"].ToString() + "%' ";
  251. }
  252. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  253. {
  254. sql += " and a.VENDORCODE like '%" + queryParam["VenCode"].ToString() + "%' ";
  255. }
  256. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  257. {
  258. sql += " and b.cVenName like '%" + queryParam["VenName"].ToString() + "%' ";
  259. }
  260. if (!string.IsNullOrWhiteSpace(queryParam["ADDITION1"].ToString()))
  261. {
  262. sql += " and a.ADDITION1 like '%" + queryParam["ADDITION1"].ToString() + "%' ";
  263. }
  264. if (!string.IsNullOrWhiteSpace(queryParam["ADDITION2"].ToString()))
  265. {
  266. sql += " and a.ADDITION2 like '%" + queryParam["ADDITION2"].ToString() + "%' ";
  267. }
  268. }
  269. if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
  270. {
  271. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  272. }
  273. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor") || NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "TempVendor")
  274. {
  275. sql += " and a.VENDORCODE in (SELECT VenCode FROM ICSVendor where VenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
  276. }
  277. //权限设置
  278. if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
  279. {
  280. sql = SqlHelper.OrganizeByVendor_F_ParentIdBYDZ(sql, NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  281. }
  282. sql += " GROUP BY a.VENDORCODE,b.VenName,a.CHECKSTATUS,a.CREATEUSER,a.CREATEDATE,a.ADDITION1,a.ADDITION2,a.FileName ,a.WorkPoint ,a.PERFCode";
  283. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  284. }
  285. public DataTable GetPerFormanceMarkByMain(ref Pagination jqgridparam, string objArr, string WorkPoint)
  286. {
  287. DataTable dt = new DataTable();
  288. //var queryParam = queryJson.ToJObject();
  289. List<DbParameter> parameter = new List<DbParameter>();
  290. string sql = @" declare @sql varchar(8000)
  291. SELECT DISTINCT b.VenCode as VENDORCODE,b.VenName AS VenName,a.FileName,b.VenPhone,a.MITEMCODE, ISNULL(a.SCORE,0) as CastPrice,SUMSCORE
  292. into #Temp
  293. FROM ICSPERFCHECKRESULT a
  294. LEFT JOIN dbo.ICSVendor b ON a.VENDORCODE=b.VenCode AND a.WorkPoint=b.WorkPoint
  295. where a.PERFCode='{0}' and a.WorkPoint='{1}'
  296. select @sql=isnull(@sql+',','')+' ['+MITEMCODE+']'
  297. from(select distinct MITEMCODE from #Temp)as a
  298. set @sql='SELECT * FROM #Temp PIVOT(MAX(CastPrice) FOR MITEMCODE IN ('+@sql+'))a '
  299. exec(@sql)
  300. ";
  301. sql = string.Format(sql, objArr,WorkPoint);
  302. DataTable dtr = SqlHelper.FindTablePageBySql_OtherTemp3(sql.ToString(), " " + "#Temp" + " ", " drop table #Temp", parameter.ToArray(), ref jqgridparam);
  303. return dtr;
  304. //return SqlServerHelper.FindTablePageBySql_OtherTemp(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  305. }
  306. public DataTable GetPerFormanceMarkByMainUpdate(ref Pagination jqgridparam, string objArr, string WorkPoint)
  307. {
  308. DataTable dt = new DataTable();
  309. //var queryParam = queryJson.ToJObject();
  310. List<DbParameter> parameter = new List<DbParameter>();
  311. string sql = @" declare @sql varchar(8000)
  312. SELECT DISTINCT b.VenCode as VENDORCODE,b.VenName AS VenName,a.RatingAttachment,b.VenPhone,a.MITEMCODE, ISNULL(a.SCORE,0) as CastPrice,SUMSCORE,a.RatingAttachment AS RatingAttachmenthidden,a.Rating
  313. into #Temp
  314. FROM ICSPERFCHECKRESULT a
  315. LEFT JOIN dbo.ICSVendor b ON a.VENDORCODE=b.VenCode AND a.WorkPoint=b.WorkPoint
  316. where a.PERFCode='{0}' and a.WorkPoint='{1}'
  317. select @sql=isnull(@sql+',','')+' ['+MITEMCODE+']'
  318. from(select distinct MITEMCODE from #Temp)as a
  319. set @sql='SELECT * FROM #Temp PIVOT(MAX(CastPrice) FOR MITEMCODE IN ('+@sql+'))a '
  320. exec(@sql)
  321. ";
  322. sql = string.Format(sql, objArr, WorkPoint);
  323. DataTable dtr = SqlHelper.FindTablePageBySql_OtherTemp3(sql.ToString(), " " + "#Temp" + " ", " drop table #Temp", parameter.ToArray(), ref jqgridparam);
  324. return dtr;
  325. //return SqlServerHelper.FindTablePageBySql_OtherTemp(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  326. }
  327. public DataTable GetPerFormanceMark(string BidCode, ref Pagination jqgridparam)
  328. {
  329. DataTable dt = new DataTable();
  330. //var queryParam = queryJson.ToJObject();
  331. List<DbParameter> parameter = new List<DbParameter>();
  332. string sql = @"
  333. declare @sql varchar(8000)
  334. SELECT distinct d.BDID,a.InvCode,b.INVNAME,e.VenName as SupplierCode,isnull(d.CastPrice,0) as CastPrice,g.VendorFileName,g.BidCode,d.isCast
  335. into #Temp
  336. FROM ICSBidDocBD a
  337. LEFT JOIN ICSBidDoc g on a.BidCode=g.BidCode and a.WorkPoint=g.WorkPoint
  338. LEFT JOIN ICSINVENTORY b ON a.InvCode=b.InvCode and g.WorkPoint=b.WorkPoint
  339. LEFT JOIN ICSBidInfo c ON c.BidCode = a.BidCode and b.WorkPoint=c.WorkPoint
  340. LEFT JOIN ICSBidInfoDetail d ON d.InfoID = c.ID AND d.BDID = a.ID and c.WorkPoint=d.WorkPoint
  341. LEFT JOIN ICSVendor e ON e.VenCode = c.SupplierCode and a.WorkPoint=e.WorkPoint
  342. LEFT JOIN Sys_SRM_User f ON f.F_Account = e.cVenCode
  343. where a.BidCode='{0}'
  344. select @sql=isnull(@sql+',','')+' ['+SupplierCode+']'
  345. from(select distinct SupplierCode from #Temp)as a
  346. set @sql='SELECT *,'''' as ZBVendor FROM #Temp PIVOT(MAX(CastPrice) FOR SupplierCode IN ('+@sql+'))a Where a.BDID<>'''' and a.iscast<>0'
  347. exec(@sql)
  348. ";
  349. sql = string.Format(sql, BidCode);
  350. DataTable dtr = SqlHelper.FindTablePageBySql_OtherTemp2(sql.ToString(), " " + "#Temp" + " ", " drop table #Temp", parameter.ToArray(), ref jqgridparam);
  351. string name = "";
  352. foreach (DataRow dr in dtr.Rows)
  353. {
  354. decimal qty = decimal.MaxValue;
  355. foreach (DataColumn col in dtr.Columns)
  356. {
  357. if (col.Caption == "InvCode" || col.Caption == "ZBVendor" || col.Caption == "INVNAME" || col.Caption == "BDID" || col.Caption == "VendorFileName" || col.Caption == "BidCode" || col.Caption == "isCast")
  358. continue;
  359. 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)
  360. {
  361. qty = Convert.ToDecimal(dr[col.Caption]);
  362. name = col.Caption;
  363. }
  364. }
  365. dr["ZBVendor"] = name;
  366. }
  367. return dtr;
  368. //return SqlServerHelper.FindTablePageBySql_OtherTemp(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  369. }
  370. public DataTable GetPerFormanceMarkBYColumn(string BidCode)
  371. {
  372. string sql = @"SELECT MITEMCODE as ColCaption,MITEMNAME as ColFiledName FROM ICSPERFTEMPLATEMITEM";
  373. sql = string.Format(sql, BidCode);
  374. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  375. return dt;
  376. }
  377. /// <summary>
  378. /// 修改时获取主表信息
  379. /// </summary>
  380. /// <param name="tmpID"></param>
  381. /// <param name="WorkPoint"></param>
  382. /// <returns></returns>
  383. public DataRow GetList(string MITEMCODE, string WorkPoint)
  384. {
  385. DataRow dr = null;
  386. string sql = string.Empty;
  387. try
  388. {
  389. sql = @"SELECT * FROM ICSPERFTEMPLATEMITEM
  390. WHERE MITEMCODE='" + MITEMCODE + "' and WorkPoint = '" + WorkPoint + "'";
  391. dr = SqlHelper.GetDataRowBySql(sql);
  392. return dr;
  393. }
  394. catch (Exception ex)
  395. {
  396. throw new Exception(ex.Message);
  397. }
  398. }
  399. /// <summary>
  400. /// 创建绩效类型
  401. /// </summary>
  402. /// <param name="queryJson"></param>
  403. /// <param name="ID"></param>
  404. public void SubmitPERFTEMPLATEMItem(string queryJson, string ID)
  405. {
  406. try
  407. {
  408. DataTable dt = new DataTable();
  409. List<DbParameter> parameter = new List<DbParameter>();
  410. ICSPERFTEMPLATEMITEM[] list = JsonConvert.DeserializeObject<ICSPERFTEMPLATEMITEM[]>(queryJson);
  411. string sql = string.Empty;
  412. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  413. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  414. conn.Open();
  415. SqlTransaction sqlTran = conn.BeginTransaction();
  416. SqlCommand cmd = new SqlCommand();
  417. cmd.Transaction = sqlTran;
  418. cmd.Connection = conn;
  419. try
  420. {
  421. string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  422. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.Replace("'", "");
  423. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  424. sql = "select * from ICSPERFTEMPLATEMITEM where MITEMCODE='" + list[0].MITEMCODE + "'and ID!='" + ID + "'";
  425. dt = SqlCommandHelper.SQlReturnData(sql, cmd);
  426. if (dt != null && dt.Rows.Count > 0)
  427. {
  428. throw new Exception("绩效考核类型已存在!");
  429. }
  430. foreach (var obj in list)
  431. {
  432. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSPERFTEMPLATEMITEM WHERE ID=@ID)
  433. BEGIN
  434. INSERT INTO dbo.ICSPERFTEMPLATEMITEM
  435. (ID
  436. ,WorkPoint
  437. ,MITEMCODE
  438. ,MITEMDESCRIPTION
  439. ,MITEMNAME
  440. ,MITEMSCORE
  441. ,CREATEDATE
  442. ,CREATETIME
  443. ,CREATEUSER
  444. ,MODIFIEDDATE
  445. ,MODIFIEDTIME
  446. ,MODIFIEDUSER
  447. ,ADDITION1
  448. ,ADDITION2
  449. )
  450. VALUES
  451. (
  452. NEWID()
  453. ,@WorkPoint
  454. ,@MITEMCODE
  455. ,@MITEMDESCRIPTION
  456. ,@MITEMNAME
  457. ,@MITEMSCORE
  458. ,GETDATE()
  459. ,CONVERT(varchar,GETDATE(),120)
  460. ,@CREATEUSER
  461. ,''
  462. ,''
  463. ,''
  464. ,''
  465. ,'')
  466. END
  467. ELSE
  468. BEGIN
  469. UPDATE dbo.ICSPERFTEMPLATEMITEM SET
  470. MITEMCODE=@MITEMCODE
  471. ,MITEMDESCRIPTION=@MITEMDESCRIPTION
  472. ,MITEMNAME=@MITEMNAME
  473. ,MITEMSCORE=@MITEMSCORE
  474. ,MODIFIEDDATE=GETDATE()
  475. ,MODIFIEDTIME=CONVERT(varchar,GETDATE(),120)
  476. ,MODIFIEDUSER=@MODIFIEDUSER
  477. WHERE ID=@ID
  478. END";
  479. SqlParameter[] sp_Detail = {
  480. new SqlParameter("@ID",ID),
  481. new SqlParameter("@MITEMCODE",obj.MITEMCODE),
  482. new SqlParameter("@MITEMDESCRIPTION",obj.MITEMDESCRIPTION),
  483. new SqlParameter("@MITEMNAME",obj.MITEMNAME),
  484. new SqlParameter("@MITEMSCORE",obj.MITEMSCORE),
  485. new SqlParameter("@CREATEUSER",UserCode),
  486. //new SqlParameter("@MODIFIEDDATE",Muser),
  487. new SqlParameter("@WorkPoint",obj.WorkPoint),
  488. new SqlParameter("@MODIFIEDUSER",UserCode),
  489. };
  490. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
  491. }
  492. cmd.Transaction.Commit();
  493. }
  494. catch (Exception ex)
  495. {
  496. cmd.Transaction.Rollback();
  497. throw new Exception(ex.Message);
  498. }
  499. finally
  500. {
  501. if (conn.State == ConnectionState.Open)
  502. {
  503. conn.Close();
  504. }
  505. conn.Dispose();
  506. }
  507. }
  508. catch (Exception ex)
  509. {
  510. throw new Exception(ex.Message);
  511. }
  512. }
  513. /// <summary>
  514. /// 获取类别
  515. /// </summary>
  516. /// <returns></returns>
  517. public DataTable GetICSPERFTEMPLATEMITEM(string queryJson)
  518. {
  519. var queryParam = queryJson.ToJObject();
  520. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  521. string sql = @"
  522. SELECT DISTINCT
  523. ID,
  524. a.MITEMCODE,
  525. a.MITEMNAME
  526. FROM dbo.ICSPERFTEMPLATEMITEM a WHERE 1=1
  527. ";
  528. if (!string.IsNullOrWhiteSpace(queryJson))
  529. {
  530. if (!string.IsNullOrWhiteSpace(queryParam["MITEMCODE"].ToString()))
  531. {
  532. sql += " and a.MITEMCODE like '%" + queryParam["MITEMCODE"].ToString() + "%' ";
  533. }
  534. if (!string.IsNullOrWhiteSpace(queryParam["WorkPoint"].ToString()))
  535. {
  536. sql += " and a.WorkPoint = '" + queryParam["WorkPoint"].ToString() + "' ";
  537. }
  538. }
  539. //string role = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  540. //if (role != "admin")
  541. //{
  542. // sql += " and a.WorkPoint in(" + WorkPoint + ")";
  543. //}
  544. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  545. return dt;
  546. }
  547. /// <summary>
  548. /// 创建供应商与绩效类型
  549. /// </summary>
  550. /// <param name="queryJson"></param>
  551. /// <returns></returns>
  552. public void SubmitICSPERFTEMPLATEMITEM(string queryJson, string queryJson2)
  553. {
  554. try
  555. {
  556. DataTable dt = new DataTable();
  557. List<DbParameter> parameter = new List<DbParameter>();
  558. ICSPERFCHECKRESULT[] list = JsonConvert.DeserializeObject<ICSPERFCHECKRESULT[]>(queryJson);
  559. ICSVendor[] VendorList = JsonConvert.DeserializeObject<ICSVendor[]>(queryJson2);
  560. string sql = string.Empty;
  561. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  562. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  563. conn.Open();
  564. SqlTransaction sqlTran = conn.BeginTransaction();
  565. SqlCommand cmd = new SqlCommand();
  566. cmd.Transaction = sqlTran;
  567. cmd.Connection = conn;
  568. try
  569. {
  570. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.Trim(',');
  571. string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  572. foreach (var obj in list)
  573. {
  574. foreach (var itemwh in VendorList)
  575. {
  576. sql = "select * from ICSPERFCHECKRESULT where MITEMCODE='" + obj.MITEMCODE + "' and VENDORCODE = '" + itemwh.VenCode + "'";
  577. dt = SqlCommandHelper.SQlReturnData(sql, cmd);
  578. if (dt != null && dt.Rows.Count > 0)
  579. {
  580. throw new Exception("供应商已经关联资料");
  581. }
  582. sql = @"INSERT INTO dbo.ICSPERFCHECKRESULT
  583. (ID,
  584. WorkPoint,
  585. VENDORCODE,
  586. MITEMCODE,
  587. MITEMNAME,
  588. SCORE,
  589. BeginDate,
  590. EndDate,
  591. CHECKSTATUS,
  592. CREATEDATE,
  593. CREATETIME,
  594. CREATEUSER,
  595. MODIFIEDDATE,
  596. MODIFIEDTIME,
  597. MODIFIEDUSER,
  598. ADDITION1,
  599. ADDITION2
  600. )
  601. VALUES
  602. (
  603. NEWID(),
  604. @WorkPoint,
  605. @VENDORCODE,
  606. @MITEMCODE,
  607. @MITEMNAME,
  608. @SCORE,
  609. null,
  610. null,
  611. 'NEW',
  612. GETDATE(),
  613. CONVERT(varchar,GETDATE(),120),
  614. @CREATEUSER,
  615. '',
  616. '',
  617. '',
  618. '',
  619. '')
  620. ";
  621. SqlParameter[] sp_Detail = {
  622. new SqlParameter("@WorkPoint",obj.WorkPoint),
  623. new SqlParameter("@VENDORCODE",itemwh.VenCode),
  624. new SqlParameter("@MITEMCODE",obj.MITEMCODE),
  625. new SqlParameter("@MITEMNAME",obj.MITEMNAME),
  626. new SqlParameter("@SCORE","0"),
  627. new SqlParameter("@CREATEUSER",UserCode),
  628. };
  629. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
  630. }
  631. }
  632. cmd.Transaction.Commit();
  633. }
  634. catch (Exception ex)
  635. {
  636. cmd.Transaction.Rollback();
  637. throw new Exception(ex.Message);
  638. }
  639. finally
  640. {
  641. if (conn.State == ConnectionState.Open)
  642. {
  643. conn.Close();
  644. }
  645. conn.Dispose();
  646. }
  647. }
  648. catch (Exception ex)
  649. {
  650. throw new Exception(ex.Message);
  651. }
  652. }
  653. //删除认证项目
  654. public string DeletePerFormanceType(string ID)
  655. {
  656. string sql = string.Empty;
  657. string msg = "";
  658. ID = ID.Substring(1, ID.Length - 2);
  659. sql = @"delete FROM ICSPERFTEMPLATEMITEM where ID in ({0})";
  660. sql = string.Format(sql, ID.TrimEnd(','));
  661. try
  662. {
  663. SqlHelper.ExecuteNonQuery(sql);
  664. }
  665. catch (Exception ex)
  666. {
  667. msg = ex.Message;
  668. }
  669. return msg;
  670. }
  671. /// <summary>
  672. /// 保存打分
  673. /// </summary>
  674. /// <param name="queryJson"></param>
  675. /// <param name="ID"></param>
  676. public void SavePerFormance(string queryJson)
  677. {
  678. try
  679. {
  680. DataTable dt = new DataTable();
  681. List<DbParameter> parameter = new List<DbParameter>();
  682. ICSPERFCHECKRESULT[] list = JsonConvert.DeserializeObject<ICSPERFCHECKRESULT[]>(queryJson);
  683. string sql = string.Empty;
  684. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  685. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  686. conn.Open();
  687. SqlTransaction sqlTran = conn.BeginTransaction();
  688. SqlCommand cmd = new SqlCommand();
  689. cmd.Transaction = sqlTran;
  690. cmd.Connection = conn;
  691. try
  692. {
  693. string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  694. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.Replace("'", "");
  695. foreach (var obj in list)
  696. {
  697. sql = @" UPDATE dbo.ICSPERFCHECKRESULT SET
  698. BeginDate=@BeginDate
  699. ,EndDate=@EndDate
  700. ,SCORE=@SCORE
  701. ,MODIFIEDDATE=GETDATE()
  702. ,MODIFIEDTIME=CONVERT(varchar,GETDATE(),120)
  703. ,MODIFIEDUSER=@MODIFIEDUSER
  704. WHERE ID=@ID";
  705. SqlParameter[] sp_Detail = {
  706. new SqlParameter("@ID",obj.ID),
  707. new SqlParameter("@BeginDate",obj.BeginDate),
  708. new SqlParameter("@EndDate",Convert.ToDateTime(obj.EndDate).ToString("yyyy-MM-dd")),
  709. new SqlParameter("@SCORE",obj.SCORE),
  710. new SqlParameter("@MODIFIEDUSER",UserCode),
  711. };
  712. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
  713. }
  714. cmd.Transaction.Commit();
  715. }
  716. catch (Exception ex)
  717. {
  718. cmd.Transaction.Rollback();
  719. throw new Exception(ex.Message);
  720. }
  721. finally
  722. {
  723. if (conn.State == ConnectionState.Open)
  724. {
  725. conn.Close();
  726. }
  727. conn.Dispose();
  728. }
  729. }
  730. catch (Exception ex)
  731. {
  732. throw new Exception(ex.Message);
  733. }
  734. }
  735. /// <summary>
  736. /// 获取绩效查询
  737. /// </summary>
  738. /// <param name="queryJson"></param>
  739. /// <param name="jqgridparam"></param>
  740. /// <returns></returns>
  741. public DataTable GetPerFormanceMarkSearch(string queryJson, ref Pagination jqgridparam)
  742. {
  743. DataTable dt = new DataTable();
  744. var queryParam = queryJson.ToJObject();
  745. List<DbParameter> parameter = new List<DbParameter>();
  746. string sql = @"
  747. if exists(select * from tempdb..sysobjects where id = object_id('tempdb..#jixiao'))
  748. DROP TABLE #jixiao
  749. if exists(select * from tempdb..sysobjects where id = object_id('tempdb..#Scores'))
  750. DROP TABLE #Scores
  751. SELECT SUM(a.SCORE*(b.MITEMSCORE/100))AS Qty ,a.VENDORCODE,''AS type,c.VenName cVenName,a.WorkPoint
  752. INTO #jixiao
  753. FROM ICSPERFCHECKRESULT a
  754. LEFT JOIN ICSPERFTEMPLATEMITEM b ON a.MITEMCODE=b.MITEMCODE AND a.MITEMNAME=b.MITEMNAME AND a.WorkPoint=b.WorkPoint
  755. LEFT JOIN dbo.ICSVendor c ON a.VENDORCODE=c.VenCode AND a.WorkPoint=c.WorkPoint
  756. WHERE a.BeginDate>='" + queryParam["BeginDate"].ToString() + "' AND a.EndDate<='" + queryParam["EndDate"].ToString() + "'GROUP BY a.VENDORCODE,c.VenName,a.WorkPoint ";
  757. sql += @" UNION ALL
  758. SELECT CAST( cast(count(aa.LOTNO)-COUNT(c.LOTNO) as DECIMAL(20,2) )/cast( count(aa.LOTNO)as DECIMAL(20,2))*100 AS DECIMAL(20,2)) as Qty,aa.VenCode,'' AS type,aa.VenName,aa.WorkPoint
  759. FROM (SELECT a.VenCode,a.VenName,a.WorkPoint,d.LOTNO FROM ICSVendor a
  760. LEFT JOIN dbo.ICSASN b ON a.VenCode=b.VenCode AND a.WorkPoint=b.WorkPoint
  761. LEFT JOIN dbo.ICSASNDETAIL d ON b.ASNCode=d.ASNCode AND b.WorkPoint=d.WorkPoint
  762. WHERE convert(varchar(10),d.MTIME,23)>='" + queryParam["BeginDate"].ToString() + @"' AND convert(varchar(10),d.MTIME,23)<='" + queryParam["EndDate"].ToString() + @"'
  763. --where convert(varchar(10),d.createtime,23) BETWEEN '2022-09-01' and '2022-09-30'
  764. )aa
  765. left join (SELECT LotNO,WorkPoint,MTIME FROM ICSINSPECTION WHERE UnqualifiedQuantity<>0 GROUP BY LotNO,WorkPoint,MTIME ) c on aa.LOTNO=c.LotNO AND aa.WorkPoint=c.WorkPoint
  766. GROUP BY aa.VenCode,aa.VenName,aa.WorkPoint";
  767. sql += @" UNION ALL
  768. SELECT CAST( cast( count(a.Quantity)as DECIMAL(20,2))/cast(count(b.Quantity) as DECIMAL(20,2) )*100 AS DECIMAL(20,2)) as Qty,
  769. a.VenCode,'' AS type,c.VenName,a.WorkPoint
  770. FROM dbo.ICSPurchaseOrder a
  771. LEFT JOIN dbo.ICSDeliveryNotice b ON a.POID=b.POID AND a.WorkPoint=b.WorkPoint
  772. LEFT JOIN dbo.ICSVendor c ON a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
  773. WHERE b.MTIME>='" + queryParam["BeginDate"].ToString() + "' AND b.MTIME<='" + queryParam["EndDate"].ToString() + "' GROUP BY a.VenCode,c.VenName,a.WorkPoint ";
  774. sql += @" SELECT DISTINCT CASE WHEN c.SL>2 THEN 100*((MIN(a.UnitPrice)+MAX(a.UnitPrice)-a.UnitPrice)/MAX(a.UnitPrice)) else 100 End
  775. AS qty, a.VenCode,''AS type,d.VenName,a.WorkPoint
  776. FROM dbo.ICSPurchaseOrder a
  777. LEFT JOIN dbo.ICSINVENTORY b ON a.InvCode=b.INVCODE AND a.WorkPoint=b.WorkPoint
  778. LEFT JOIN (select count(b.VenCode)AS SL, b.InvCode FROM(SELECT InvCode,VenCode from ICSPurchaseOrder group by InvCode,VenCode) b GROUP BY b.InvCode) c ON a.INVCODE=c.INVCODE
  779. LEFT JOIN dbo.ICSVendor d ON a.VenCode=d.VenCode AND a.WorkPoint=d.WorkPoint
  780. WHERE a.CreateDateTime>='" + queryParam["BeginDate"].ToString() + "' AND a.CreateDateTime<='" + queryParam["EndDate"].ToString() + "'GROUP BY a.VenCode,b.INVCODE, c.SL,a.UnitPrice,d.VenName,a.WorkPoint";
  781. sql += @"
  782. SELECT a.VENDORCODE,SUM(a.Qty*(isnull(b.TARGETSCORE,0)/100))AS Sacor,a.WorkPoint INTO #Scores FROM #jixiao a LEFT JOIN ICSPERFNORMALTARGET b ON a.type=b.NORMALTARGETCATEGORY WHERE b.EffDate>='" + queryParam["BeginDate"].ToString() + "' AND b.DisDate<='" + queryParam["EndDate"].ToString() + "' GROUP BY a.VENDORCODE,a.WorkPoint";
  783. sql += @"
  784. SELECT t.cVenName,t.VENDORCODE, ISNULL(t.,0)AS , ISNULL(t.,0)AS ,ISNULL(t.,0)AS ,ISNULL( t.,0)AS
  785. into ##SUMCount FROM #jixiao
  786. PIVOT (
  787. SUM(qty) FOR type IN (,, , )
  788. )AS T
  789. SELECT a.cVenName,a.VENDORCODE,a.,a.,a.,a.,isnull(b.Sacor,0)Sacor,b.WorkPoint INTO ##SUMCounts FROM ##SUMCount a LEFT JOIN #Scores b ON a.VENDORCODE=b.VENDORCODE WHERE 1=1
  790. SELECT * from ##SUMCounts WHERE 1=1
  791. ";
  792. if (!string.IsNullOrWhiteSpace(queryJson))
  793. {
  794. if (!string.IsNullOrWhiteSpace(queryParam["WorkPoint"].ToString()))
  795. {
  796. sql += " and WorkPoint like '%" + queryParam["WorkPoint"].ToString() + "%' ";
  797. }
  798. //if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
  799. //{
  800. // sql += " and a.BeginDate > '" + queryParam["BeginDate"].ToString() + "' ";
  801. //}
  802. //if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  803. //{
  804. // sql += " and a.EndDate < '" + queryParam["EndDate"].ToString() + "' ";
  805. //}
  806. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  807. {
  808. sql += " and VENDORCODE like '%" + queryParam["VenCode"].ToString() + "%' ";
  809. }
  810. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  811. {
  812. sql += " and cVenName like '%" + queryParam["VenName"].ToString() + "%' ";
  813. }
  814. }
  815. if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
  816. {
  817. sql += " and WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  818. }
  819. sql = string.Format(sql);
  820. return SqlHelper.FindTablePageBySql_OtherTemps(sql.ToString(), " " + "##SUMCounts" + " ", "DROP TABLE ##SUMCount;DROP TABLE ##SUMCounts", parameter.ToArray(), ref jqgridparam);
  821. }
  822. public DataTable GetPerFormanceTarget(string queryJson, ref Pagination jqgridparam)
  823. {
  824. DataTable dt = new DataTable();
  825. var queryParam = queryJson.ToJObject();
  826. List<DbParameter> parameter = new List<DbParameter>();
  827. string sql = @"SELECT
  828. ID,
  829. WorkPoint,
  830. NORMALTARGETCATEGORY ,
  831. NORMALTARGETValue,
  832. TARGETSCORE,
  833. CONVERT(NVARCHAR(50),EffDate,23) as EffDate,
  834. CONVERT(NVARCHAR(50),DisDate,23) as DisDate,
  835. REMARK,
  836. CREATEDATE,
  837. CREATETIME,
  838. CREATEUSER,
  839. MODIFIEDDATE,
  840. MODIFIEDTIME,
  841. MODIFIEDUSER,
  842. ADDITION1,
  843. ADDITION2
  844. FROM ICSPERFNORMALTARGET WHERE 1=1";
  845. if (!string.IsNullOrWhiteSpace(queryJson))
  846. {
  847. if (!string.IsNullOrWhiteSpace(queryParam["NORMALTARGETCATEGORY"].ToString()))
  848. {
  849. sql += " and NORMALTARGETCATEGORY like '%" + queryParam["NORMALTARGETCATEGORY"].ToString() + "%' ";
  850. }
  851. if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
  852. {
  853. sql += " and EffDate > '" + queryParam["BeginDate"].ToString() + "' ";
  854. }
  855. if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  856. {
  857. sql += " and DisDate <'" + queryParam["EndDate"].ToString() + "' ";
  858. }
  859. }
  860. if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
  861. {
  862. sql += " and WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  863. }
  864. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  865. }
  866. /// <summary>
  867. /// 修改时获取主表信息
  868. /// </summary>
  869. /// <param name="tmpID"></param>
  870. /// <param name="WorkPoint"></param>
  871. /// <returns></returns>
  872. public DataRow GetPerFormanceTargetAdd(string ID)
  873. {
  874. DataRow dr = null;
  875. string sql = string.Empty;
  876. try
  877. {
  878. sql = @"SELECT * FROM ICSPERFNORMALTARGET
  879. WHERE ID='" + ID + "'";
  880. dr = SqlHelper.GetDataRowBySql(sql);
  881. return dr;
  882. }
  883. catch (Exception ex)
  884. {
  885. throw new Exception(ex.Message);
  886. }
  887. }
  888. /// <summary>
  889. /// 创建绩效权值
  890. /// </summary>
  891. /// <param name="queryJson"></param>
  892. /// <param name="ID"></param>
  893. public void SubmitPerFormanceTarget(string queryJson, string ID)
  894. {
  895. try
  896. {
  897. DataTable dt = new DataTable();
  898. List<DbParameter> parameter = new List<DbParameter>();
  899. ICSPERFNORMALTARGET[] list = JsonConvert.DeserializeObject<ICSPERFNORMALTARGET[]>(queryJson);
  900. string sql = string.Empty;
  901. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  902. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  903. conn.Open();
  904. SqlTransaction sqlTran = conn.BeginTransaction();
  905. SqlCommand cmd = new SqlCommand();
  906. cmd.Transaction = sqlTran;
  907. cmd.Connection = conn;
  908. try
  909. {
  910. string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  911. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.Replace("'", "");
  912. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  913. //sql = "select * from ICSPERFNORMALTARGET where MITEMCODE='" + list[0].MITEMCODE + "'and ID!='" + ID + "'";
  914. //dt = SqlCommandHelper.SQlReturnData(sql, cmd);
  915. //if (dt != null && dt.Rows.Count > 0)
  916. //{
  917. // throw new Exception("绩效考核类型已存在!");
  918. //}
  919. foreach (var obj in list)
  920. {
  921. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSPERFNORMALTARGET WHERE ID=@ID)
  922. BEGIN
  923. INSERT INTO dbo.ICSPERFNORMALTARGET
  924. (ID
  925. ,WorkPoint
  926. ,NORMALTARGETCATEGORY
  927. ,NORMALTARGETValue
  928. ,TARGETSCORE
  929. ,EffDate
  930. ,DisDate
  931. ,REMARK
  932. ,CREATEDATE
  933. ,CREATETIME
  934. ,CREATEUSER
  935. ,MODIFIEDDATE
  936. ,MODIFIEDTIME
  937. ,MODIFIEDUSER
  938. ,ADDITION1
  939. ,ADDITION2
  940. )
  941. VALUES
  942. (
  943. NEWID()
  944. ,@WorkPoint
  945. ,@NORMALTARGETCATEGORY
  946. ,@NORMALTARGETValue
  947. ,@TARGETSCORE
  948. ,@EffDate
  949. ,@DisDate
  950. ,@REMARK
  951. ,GETDATE()
  952. ,CONVERT(varchar,GETDATE(),120)
  953. ,@CREATEUSER
  954. ,''
  955. ,''
  956. ,''
  957. ,''
  958. ,'')
  959. END
  960. ELSE
  961. BEGIN
  962. UPDATE dbo.ICSPERFNORMALTARGET SET
  963. NORMALTARGETValue=@NORMALTARGETValue
  964. ,TARGETSCORE=@TARGETSCORE
  965. ,EffDate=@EffDate
  966. ,DisDate=@DisDate
  967. ,REMARK=@REMARK
  968. ,MODIFIEDDATE=GETDATE()
  969. ,MODIFIEDTIME=CONVERT(varchar,GETDATE(),120)
  970. ,MODIFIEDUSER=@MODIFIEDUSER
  971. WHERE ID=@ID
  972. END";
  973. SqlParameter[] sp_Detail = {
  974. new SqlParameter("@NORMALTARGETCATEGORY",obj.NORMALTARGETCATEGORY),
  975. new SqlParameter("@NORMALTARGETValue",obj.NORMALTARGETValue),
  976. new SqlParameter("@TARGETSCORE",obj.TARGETSCORE),
  977. new SqlParameter("@EffDate",obj.EffDate),
  978. new SqlParameter("@DisDate",obj.DisDate),
  979. new SqlParameter("@REMARK",obj.REMARK),
  980. new SqlParameter("@CREATEUSER",UserCode),
  981. new SqlParameter("@MODIFIEDUSER",UserCode),
  982. new SqlParameter("@ID",ID),
  983. new SqlParameter("@WorkPoint",obj.WorkPoint),
  984. };
  985. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
  986. }
  987. cmd.Transaction.Commit();
  988. }
  989. catch (Exception ex)
  990. {
  991. cmd.Transaction.Rollback();
  992. throw new Exception(ex.Message);
  993. }
  994. finally
  995. {
  996. if (conn.State == ConnectionState.Open)
  997. {
  998. conn.Close();
  999. }
  1000. conn.Dispose();
  1001. }
  1002. }
  1003. catch (Exception ex)
  1004. {
  1005. throw new Exception(ex.Message);
  1006. }
  1007. }
  1008. public string DeletePerFormance(string ID)
  1009. {
  1010. ID = ID.Substring(1, ID.Length - 2).TrimEnd(',');
  1011. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1012. string msg = "";
  1013. string sql = string.Format(@"DELETE
  1014. FROM dbo.ICSPERFCHECKRESULT
  1015. WHERE ID IN ({0}) ", ID);
  1016. try
  1017. {
  1018. SqlHelper.ExecuteNonQuery(sql);
  1019. }
  1020. catch (Exception ex)
  1021. {
  1022. msg = ex.Message;
  1023. }
  1024. return msg;
  1025. }
  1026. public decimal GetScore(string WorkPoint)
  1027. {
  1028. decimal SumScore = 0;
  1029. List<DbParameter> parameter = new List<DbParameter>();
  1030. string sql = @" select distinct
  1031. Sum(MITEMSCORE)as MITEMSCORE
  1032. from ICSPERFTEMPLATEMITEM a
  1033. WHERE 1=1 and WorkPoint='" + WorkPoint + "'";
  1034. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1035. if (dt.Rows.Count > 0)
  1036. {
  1037. SumScore = Convert.ToDecimal(dt.Rows[0]["MITEMSCORE"].ToString());
  1038. }
  1039. return SumScore;
  1040. }
  1041. public string GetScoreByTarget(string EffDate, string DisDate)
  1042. {
  1043. string SumScore = "";
  1044. List<DbParameter> parameter = new List<DbParameter>();
  1045. string sql = @"select distinct
  1046. ISNULL(Sum(TARGETSCORE),0)as MITEMSCORE
  1047. from ICSPERFNORMALTARGET a
  1048. where '" + EffDate + "' between CONVERT(varchar(12) ,EffDate, 23) and CONVERT(varchar(12) ,DisDate, 23) AND '" + DisDate + "' between CONVERT(varchar(12) ,EffDate, 23) and CONVERT(varchar(12) ,DisDate, 23)";
  1049. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1050. if (dt.Rows.Count > 0)
  1051. {
  1052. SumScore = dt.Rows[0]["MITEMSCORE"].ToString();
  1053. }
  1054. return SumScore;
  1055. }
  1056. public DataRow GetEMSCOREByTarget(string EffDate, string DisDate)
  1057. {
  1058. DataRow dr = null;
  1059. List<DbParameter> parameter = new List<DbParameter>();
  1060. string sql = @" select distinct
  1061. 100-ISNULL(Sum(TARGETSCORE),0)as MITEMSCORE
  1062. from ICSPERFNORMALTARGET a
  1063. where '" + EffDate + "' between CONVERT(varchar(12) ,EffDate, 23) and CONVERT(varchar(12) ,DisDate, 23) AND '" + DisDate + "' between CONVERT(varchar(12) ,EffDate, 23) and CONVERT(varchar(12) ,DisDate, 23)";
  1064. dr = SqlHelper.GetDataRowBySql(sql);
  1065. return dr;
  1066. }
  1067. public string DeleteICSPERFCHECKRESULT(string ID)
  1068. {
  1069. ID = ID.TrimStart('"').TrimEnd('"').TrimEnd(',');
  1070. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1071. string msg = "";
  1072. string sql = string.Format(@"DELETE
  1073. FROM dbo.ICSPERFCHECKRESULT
  1074. WHERE ID IN ('{0}') ", ID);
  1075. try
  1076. {
  1077. SqlHelper.ExecuteNonQuery(sql);
  1078. }
  1079. catch (Exception ex)
  1080. {
  1081. msg = ex.Message;
  1082. }
  1083. return msg;
  1084. }
  1085. public void SaveFormTiJiaoZB(string arrayShellFabricDetail,string Type)
  1086. {
  1087. string sql = string.Empty;
  1088. string DoCode = string.Empty;
  1089. string userCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1090. try
  1091. {
  1092. JArray res = (JArray)JsonConvert.DeserializeObject(arrayShellFabricDetail);
  1093. if (Type == "1")
  1094. {
  1095. foreach (var item in res)
  1096. {
  1097. JObject jo = (JObject)item;
  1098. string Issql = @"SELECT * from ICSPERFCHECKRESULT WHERE VENDORCODE='" + jo["VENDORCODE"].ToString() + "' and WorkPoint='" + jo["WorkPoint"].ToString() + "' and ADDITION1='" + jo["Year"].ToString() + "' and ADDITION2='" + jo["Moth"].ToString() + "'";
  1099. DataTable dt = SqlHelper.GetDataTableBySql(Issql);
  1100. if (dt.Rows.Count > 0)
  1101. {
  1102. throw new Exception("打分供应商" + jo["VENDORCODE"].ToString() + ",年份" + jo["Year"].ToString() + "月份" + jo["Moth"].ToString() + " 已打分!");
  1103. }
  1104. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  1105. string Pre = "PERF" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM") + DateTime.Now.ToString("dd");
  1106. string PERFCode = GetSerialCode(jo["WorkPoint"].ToString(), "ICSBidDoc", "BidCode", Pre, 3);
  1107. foreach (var detail in resdetail)
  1108. {
  1109. sql += @"INSERT INTO dbo.ICSPERFCHECKRESULT
  1110. (ID,WorkPoint,VENDORCODE,MITEMCODE,MITEMNAME,SCORE,ADDITION1,ADDITION2
  1111. ,CHECKSTATUS,CREATEDATE,CREATETIME,CREATEUSER,
  1112. MODIFIEDDATE,MODIFIEDTIME,MODIFIEDUSER,SUMSCORE
  1113. ,FileName,FilePath,Comment,PERFCode,RatingAttachment,Rating,PoOrgName,ScoreUser
  1114. )
  1115. VALUES
  1116. ( NEWID(),'" + jo["WorkPoint"].ToString() + "','" + jo["VENDORCODE"].ToString() + "','" + detail["colName"].ToString() + "','" + detail["collable"].ToString() + @"','" + detail["colValue"].ToString() + @"'
  1117. ,'" + jo["Year"].ToString() + "','" + jo["Moth"].ToString() + "',0,'" + DateTime.Now.ToString("yyyy-MM-dd") + "','" + DateTime.Now.ToString("yyyy-MM-dd") + "','" + userCode + @"'
  1118. ,'','','','" + jo["SUMSCORE"].ToString() + @"'
  1119. ,'','','" + jo["Comment"].ToString() + "','" + PERFCode + "','" + jo["RatingAttachment"].ToString() + "','" + jo["Rating"].ToString() + "','" + jo["PoOrgName"].ToString() + "', '" + jo["ScoreUser"].ToString() + "')";
  1120. }
  1121. }
  1122. }
  1123. else
  1124. {
  1125. foreach (var item in res)
  1126. {
  1127. JObject jo = (JObject)item;
  1128. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  1129. foreach (var detail in resdetail)
  1130. {
  1131. sql += @"UPDATE dbo.ICSPERFCHECKRESULT SET SCORE='" + detail["colValue"].ToString() + "',ADDITION1='" + jo["Year"].ToString() + "',ADDITION2='" + jo["Moth"].ToString() + "',SUMSCORE='"+ jo["SUMSCORE"].ToString() + "',Comment='"+ jo["Comment"].ToString() + "',RatingAttachment='"+ jo["RatingAttachment"].ToString() + "',Rating='"+ jo["Rating"].ToString() + "',PoOrgName='"+ jo["PoOrgName"].ToString() + "',ScoreUser='"+ jo["ScoreUser"].ToString() + "' WHERE PERFCode='"+ jo["objArr"].ToString() + "' and VENDORCODE='"+ jo["VENDORCODE"].ToString() + "' and MITEMCODE='"+ detail["colName"].ToString() + "'";
  1132. }
  1133. }
  1134. }
  1135. SqlHelper.CmdExecuteNonQueryLi(sql);
  1136. }
  1137. catch (Exception ex)
  1138. {
  1139. throw new Exception(ex.Message);
  1140. }
  1141. }
  1142. public void SaveFormMarkMaintenance(string queryJson)
  1143. {
  1144. string sql = string.Empty;
  1145. string DoCode = string.Empty;
  1146. string userCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1147. try
  1148. {
  1149. var queryParam = queryJson.ToJObject();
  1150. if (Convert.ToDecimal(queryParam["SUMSCORE"].ToString()) > 80)
  1151. {
  1152. sql += "Update ICSPERFCHECKRESULT set CHECKSTATUS='5',Rating='{0}',VendorRating='{1}' where PERFCode='{2}'";
  1153. }
  1154. else
  1155. {
  1156. sql += "Update ICSPERFCHECKRESULT set CHECKSTATUS='3',Rating='{0}',VendorRating='{1}' where PERFCode='{2}'";
  1157. }
  1158. sql = string.Format(sql, queryParam["CGComment"].ToString(), queryParam["CYSComment"].ToString(), queryParam["objArr"].ToString());
  1159. SqlHelper.CmdExecuteNonQueryLi(sql);
  1160. }
  1161. catch (Exception ex)
  1162. {
  1163. throw new Exception(ex.Message);
  1164. }
  1165. }
  1166. public void SaveFormOK(string queryJson)
  1167. {
  1168. string sql = string.Empty;
  1169. string DoCode = string.Empty;
  1170. string userCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1171. try
  1172. {
  1173. string wheresql = "(";
  1174. string[] id = queryJson.Split(',');
  1175. for (int i = 0; i < id.Length; i++)
  1176. {
  1177. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  1178. }
  1179. wheresql = wheresql.Trim(',') + ")";
  1180. sql += "Update ICSPERFCHECKRESULT set CHECKSTATUS='4' where PERFCode in {0}";
  1181. sql = string.Format(sql, wheresql);
  1182. SqlHelper.CmdExecuteNonQueryLi(sql);
  1183. }
  1184. catch (Exception ex)
  1185. {
  1186. throw new Exception(ex.Message);
  1187. }
  1188. }
  1189. public void SaveFormNG(string queryJson)
  1190. {
  1191. string sql = string.Empty;
  1192. string DoCode = string.Empty;
  1193. string userCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1194. try
  1195. {
  1196. string wheresql = "(";
  1197. string[] id = queryJson.Split(',');
  1198. for (int i = 0; i < id.Length; i++)
  1199. {
  1200. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  1201. }
  1202. wheresql = wheresql.Trim(',') + ")";
  1203. sql += "Update ICSPERFCHECKRESULT set CHECKSTATUS='5' where PERFCode in {0} ";
  1204. sql = string.Format(sql, wheresql);
  1205. SqlHelper.CmdExecuteNonQueryLi(sql);
  1206. }
  1207. catch (Exception ex)
  1208. {
  1209. throw new Exception(ex.Message);
  1210. }
  1211. }
  1212. public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  1213. {
  1214. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  1215. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  1216. return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  1217. }
  1218. /// <summary>
  1219. /// 发布打分
  1220. /// </summary>
  1221. /// <param name="json"></param>
  1222. /// <returns></returns>
  1223. public string PERFPublish(string json)
  1224. {
  1225. string msg = string.Empty;
  1226. try
  1227. {
  1228. string wheresql = "(";
  1229. string[] id = json.Split(',');
  1230. for (int i = 0; i < id.Length; i++)
  1231. {
  1232. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  1233. }
  1234. wheresql = wheresql.Trim(',') + ")";
  1235. //发送邮件通知供应商
  1236. string MailOpen = ConfigurationManager.ConnectionStrings["MailOpen"].ConnectionString;
  1237. if (MailOpen == "true")
  1238. {
  1239. string SendHost = ConfigurationManager.ConnectionStrings["SendHost"].ConnectionString;
  1240. string StrSendPort = ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString;
  1241. int SendPort = 25;
  1242. if (!string.IsNullOrEmpty(StrSendPort))
  1243. SendPort = Convert.ToInt32(ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString);
  1244. string SendDisplayName = ConfigurationManager.ConnectionStrings["SendDisplayName"].ConnectionString;
  1245. string SendAddress = ConfigurationManager.ConnectionStrings["SendAddress"].ConnectionString;
  1246. string SendPassword = ConfigurationManager.ConnectionStrings["SendPassword"].ConnectionString;
  1247. string sqlEmail = @"SELECT DISTINCT F_EMail,VenDorCode,F_RealName,a.PERFCode,SUM(a.SCORE) AS SCORE
  1248. ,a.ADDITION1,a.ADDITION2
  1249. FROM ICSPERFCHECKRESULT a
  1250. inner JOIN sys_SRM_User b ON a.VENDORCODE=b.F_VenCode and a.workpoint=b.F_Location
  1251. where PERFCode in " + wheresql + @"
  1252. GROUP BY F_EMail,VenDorCode,F_RealName,a.PERFCode,a.ADDITION1,a.ADDITION2
  1253. ";
  1254. DataTable dt = SqlHelper.GetDataTableBySql(sqlEmail);
  1255. foreach (DataRow dr in dt.Rows)
  1256. {
  1257. decimal SCORE = Convert.ToDecimal(dr["SCORE"].ToString());
  1258. string cVenCode = dr["VenDorCode"].ToString();
  1259. string TOAddress = dr["F_Email"].ToString();
  1260. string ADDITION1 = dr["ADDITION1"].ToString();
  1261. string ADDITION2 = dr["ADDITION2"].ToString();
  1262. string[] Partint = TOAddress.Split(';');
  1263. if (SCORE < 80)
  1264. {
  1265. if (!string.IsNullOrEmpty(TOAddress))
  1266. {
  1267. foreach (var p in Partint)
  1268. {
  1269. string CCAddress = "";
  1270. string Subject = "有来自佑伦SRM平台新发布的绩效打分信息";
  1271. bool isBodyHtml = false;
  1272. string F_RealName = dr["F_RealName"].ToString();
  1273. //string StarTime = dr["StarTime"].ToString();
  1274. //string EndTime = dr["EndTime"].ToString();
  1275. string PERFCode = dr["PERFCode"].ToString();
  1276. string NowDate = DateTime.Now.GetDateTimeFormats('D')[0].ToString();
  1277. string body = F_RealName + ":";
  1278. body += " \r\n\r\n\r\n " + cVenCode + "," + ADDITION1 + "年" + ADDITION2 + "月评分低于标准总分(80分)请到SRM系统及时处理!!";
  1279. body += "\r\n";
  1280. body += " 顺颂商祺!";
  1281. body += "\r\n";
  1282. body += " 佑伦真空设备科技有限公司";
  1283. body += "\r\n";
  1284. body += " " + NowDate;
  1285. string StrConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  1286. if (!string.IsNullOrEmpty(TOAddress))
  1287. {
  1288. try
  1289. {
  1290. ICSSendMail.SendEmail(StrConn, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, p.ToString(), CCAddress, Subject, isBodyHtml, body);
  1291. }
  1292. catch (Exception ex)
  1293. {
  1294. throw new Exception("供应商:" + cVenCode + "邮件发送失败! \r\n" + ex.Message);
  1295. }
  1296. }
  1297. else
  1298. {
  1299. msg = "请先维护供应商:" + F_RealName + "邮箱!";
  1300. }
  1301. }
  1302. }
  1303. }
  1304. }
  1305. }
  1306. string sql = "update ICSPERFCHECKRESULT set CHECKSTATUS='1' where PERFCode in " + wheresql;
  1307. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1308. if (count > 0)
  1309. {
  1310. msg = "发布成功!";
  1311. }
  1312. else
  1313. {
  1314. msg = "发布失败!";
  1315. }
  1316. }
  1317. catch (Exception ex)
  1318. {
  1319. msg = ex.Message;
  1320. }
  1321. return msg;
  1322. }
  1323. public string PERFClose(string json)
  1324. {
  1325. try
  1326. {
  1327. string wheresql = "(";
  1328. string[] id = json.Split(',');
  1329. for (int i = 0; i < id.Length; i++)
  1330. {
  1331. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  1332. }
  1333. wheresql = wheresql.Trim(',') + ")";
  1334. string sql = "update ICSPERFCHECKRESULT set CHECKSTATUS='2' where PERFCode in " + wheresql;
  1335. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1336. if (count > 0)
  1337. {
  1338. return "关闭成功!";
  1339. }
  1340. else
  1341. {
  1342. return "关闭失败!";
  1343. }
  1344. }
  1345. catch (Exception ex)
  1346. {
  1347. return ex.Message;
  1348. }
  1349. }
  1350. public string PERFdelete(string json)
  1351. {
  1352. string msg = string.Empty;
  1353. try
  1354. {
  1355. string wheresql = "(";
  1356. string[] id = json.Split(',');
  1357. for (int i = 0; i < id.Length; i++)
  1358. {
  1359. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  1360. }
  1361. wheresql = wheresql.Trim(',') + ")";
  1362. string sql = "delete from ICSPERFCHECKRESULT where PERFCode in" + wheresql;
  1363. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1364. if (count < 0)
  1365. {
  1366. msg = "删除失败!";
  1367. }
  1368. }
  1369. catch (Exception ex)
  1370. {
  1371. return ex.Message + " 删除失败!";
  1372. }
  1373. return msg;
  1374. }
  1375. public DataTable GetPerFormanceMarkInfo(string BidCode, string WorkPoint)
  1376. {
  1377. string sql = @"SELECT WorkPoint,CREATEUSER,ADDITION1,ADDITION2,Comment,CREATEDATE,
  1378. Rating,VendorRating,ScoreUser,PoOrgName
  1379. FROM ICSPERFCHECKRESULT
  1380. WHERE 1=1
  1381. and PERFCode='" + BidCode + "' and WorkPoint='" + WorkPoint + "'";
  1382. return Repository().FindTableBySql(sql.ToString());
  1383. }
  1384. public string SetData_PR(string savePath)
  1385. {
  1386. string msg = "";
  1387. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  1388. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  1389. conn.Open();
  1390. SqlTransaction sqlTran = conn.BeginTransaction();
  1391. SqlCommand cmd = new SqlCommand();
  1392. cmd.Transaction = sqlTran;
  1393. cmd.Connection = conn;
  1394. string PERFCode = string.Empty;
  1395. string Vencode = string.Empty;
  1396. //数据获取
  1397. try
  1398. {
  1399. string Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1400. string MuserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1401. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1402. string sql = "";
  1403. int rowNO = 0;
  1404. DataTable data = FileToExcel.ExcelToTable(savePath);
  1405. var parent = data.DefaultView.ToTable(true, "供应商编码", "供应商名称", "评语", "考核类别", "考核类别名称", "分值","总分", "打分年", "打分月", "组织", "采购组织", "打分人", "打分日期", "备注");
  1406. foreach (DataRow dr in parent.Rows)
  1407. {
  1408. rowNO = rowNO + 1;
  1409. string GUID = Guid.NewGuid().ToString();
  1410. if (string.IsNullOrWhiteSpace(dr["供应商编码"].ToString()))
  1411. throw new Exception("供应商编码不能为空!");
  1412. if (string.IsNullOrWhiteSpace(dr["供应商名称"].ToString()))
  1413. throw new Exception("供应商名称不能为空!");
  1414. if (string.IsNullOrWhiteSpace(dr["考核类别"].ToString()))
  1415. throw new Exception("考核类别不能为空!");
  1416. if (string.IsNullOrWhiteSpace(dr["考核类别名称"].ToString()))
  1417. throw new Exception("考核类别名称不能为空!");
  1418. if (string.IsNullOrWhiteSpace(dr["分值"].ToString()))
  1419. throw new Exception("分值不能为空!");
  1420. if (string.IsNullOrWhiteSpace(dr["总分"].ToString()))
  1421. throw new Exception("总分不能为空!");
  1422. if (string.IsNullOrWhiteSpace(dr["打分年"].ToString()))
  1423. throw new Exception("打分年不能为空!");
  1424. if (string.IsNullOrWhiteSpace(dr["打分月"].ToString()))
  1425. throw new Exception("打分月不能为空!");
  1426. if (string.IsNullOrWhiteSpace(dr["组织"].ToString()))
  1427. throw new Exception("组织不能为空!");
  1428. if (string.IsNullOrWhiteSpace(dr["采购组织"].ToString()))
  1429. throw new Exception("采购组织不能为空!");
  1430. string ishave = ISHave(dr["供应商编码"].ToString());
  1431. if (ishave == "1")
  1432. {
  1433. msg += "供应商编码" + dr["供应商编码"].ToString() + "不存在!";
  1434. continue;
  1435. }
  1436. else
  1437. {
  1438. if (Vencode != dr["供应商编码"].ToString())
  1439. {
  1440. string Pre = "PERF" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM") + DateTime.Now.ToString("dd");
  1441. PERFCode = GetSerialCode(dr["组织"].ToString(), "ICSBidDoc", "BidCode", Pre, 3);
  1442. }
  1443. sql = @"
  1444. INSERT INTO dbo.ICSPERFCHECKRESULT( ID,VENDORCODE,MITEMCODE,MITEMNAME,SCORE,CHECKSTATUS,CREATEDATE,CREATETIME,
  1445. CREATEUSER,ADDITION1,ADDITION2,SUMSCORE,Comment,PERFCode,Rating,ScoreUser,WorkPoint,PoOrgName,MODIFIEDDATE,MODIFIEDTIME,MODIFIEDUSER)
  1446. VALUES ( @ID,@VENDORCODE,@MITEMCODE,@MITEMNAME,@SCORE,@CHECKSTATUS,@CREATEDATE, @CREATETIME,@CREATEUSER,@ADDITION1, @ADDITION2,
  1447. @SUMSCORE,@Comment,@PERFCode,@Rating,@ScoreUser,@WorkPoint,@PoOrgName
  1448. ,@MODIFIEDDATE,@MODIFIEDTIME,@MODIFIEDUSER)";
  1449. SqlParameter[] sp_BD = {
  1450. new SqlParameter("@ID",GUID),
  1451. new SqlParameter("@VENDORCODE",dr["供应商编码"].ToString()),
  1452. new SqlParameter("@MITEMCODE",dr["考核类别"].ToString()),
  1453. new SqlParameter("@MITEMNAME",dr["考核类别名称"].ToString()),
  1454. new SqlParameter("@SCORE",dr["分值"].ToString()),
  1455. new SqlParameter("@CHECKSTATUS","0"),
  1456. new SqlParameter("@CREATEDATE",DateTime.Now.ToString("yyyy-MM-dd")),
  1457. new SqlParameter("@CREATETIME",DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")),
  1458. new SqlParameter("@CREATEUSER",MuserName),
  1459. new SqlParameter("@ADDITION1",dr["打分年"].ToString()),
  1460. new SqlParameter("@ADDITION2",dr["打分月"].ToString()),
  1461. new SqlParameter("@SUMSCORE",dr["总分"].ToString()),
  1462. new SqlParameter("@Comment",dr["备注"].ToString()),
  1463. new SqlParameter("@PERFCode",PERFCode),
  1464. new SqlParameter("@Rating",dr["评语"].ToString()),
  1465. new SqlParameter("@ScoreUser",dr["打分人"].ToString()),
  1466. new SqlParameter("@WorkPoint",dr["组织"].ToString()),
  1467. new SqlParameter("@PoOrgName",dr["采购组织"].ToString()),
  1468. new SqlParameter("@MODIFIEDDATE",""),
  1469. new SqlParameter("@MODIFIEDTIME",""),
  1470. new SqlParameter("@MODIFIEDUSER","")
  1471. };
  1472. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_BD, cmd);
  1473. }
  1474. Vencode = dr["供应商编码"].ToString();
  1475. }
  1476. cmd.Transaction.Commit();
  1477. msg += "导入成功";
  1478. }
  1479. catch (Exception ex)
  1480. {
  1481. throw new Exception("" + ex.Message + "!");
  1482. }
  1483. finally
  1484. {
  1485. if (conn.State == ConnectionState.Open)
  1486. {
  1487. conn.Close();
  1488. }
  1489. conn.Dispose();
  1490. }
  1491. return msg;
  1492. }
  1493. public string ISHave(string VenCode)
  1494. {
  1495. string sql = @"SELECT * FROM ICSVenDor WHERE VenCode='" + VenCode + "'";
  1496. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1497. if (dt != null && dt.Rows.Count > 0)
  1498. {
  1499. return "0";
  1500. }
  1501. else
  1502. {
  1503. return "1";
  1504. }
  1505. }
  1506. //选择供应商列表
  1507. public DataTable GetVendorList(string queryJson, ref Pagination jqgridparam, string WorkPoint, string year, string Moth, string Day)
  1508. {
  1509. var queryParam = queryJson.ToJObject();
  1510. List<DbParameter> parameter = new List<DbParameter>();
  1511. string sql = @"SELECT DISTINCT
  1512. a.VenCode AS cVenCode,
  1513. a.VenName AS cVenName,
  1514. 'ERP' AS Source,
  1515. isnull(b.HGV,0)as HGV ,
  1516. isnull(c.OnTimeRate,0) as OnTimeRate
  1517. --b.UnqualifiedQuantity,
  1518. --b.quantity,
  1519. --b.POCode
  1520. FROM
  1521. ICSVendor a
  1522. LEFT JOIN
  1523. ( SELECT ROUND( SUM(ISNULL(CASE WHEN
  1524. g.InvIQC ='1'
  1525. THEN ISNULL(e.QualifiedQuantity, 0)
  1526. WHEN g.InvIQC ='0' AND e.LotNo IS NULL
  1527. THEN ISNULL(c.DNQuantity, 0) END, 0))
  1528. / sum(c.DNQuantity), 2)* ISNULL(f.MITEMSCORE, 1) AS HGV
  1529. ,a.VenCode,
  1530. a.WorkPoint
  1531. FROM ICSPurchaseOrder a
  1532. inner JOIN ICSInventoryLotDetail b ON a.POCode = b.TransCode AND a.Sequence = b.TransSequence AND a.WorkPoint = b.WorkPoint
  1533. LEFT JOIN dbo.ICSASNDetail c on b.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1534. LEFT JOIN ICSInspection e ON b.LotNo = e.LotNo AND c.WorkPoint = e.WorkPoint and Enable=1
  1535. left join ICSPERFTEMPLATEMITEM f on f.MITEMNAME=''
  1536. LEFT JOIN dbo.ICSInventory g ON a.InvCode=g.InvCode AND a.WorkPoint=g.WorkPoint
  1537. LEFT JOIN ( SELECT MAX(MTIME)AS mtime ,ASNCode,WorkPoint FROM ICSDeliveryNotice WHERE DNType='1'and ASNCode is not null GROUP BY
  1538. ASNCode,WorkPoint ) d ON c.ASNCode = d.ASNCode AND c.WorkPoint = d.WorkPoint
  1539. WHERE c.DNQuantity>0 and d.mtime>='" + year +"-"+Moth+ "-01' and d.mtime<='" + year +"-"+Moth+"-"+Day+ @"'
  1540. GROUP BY
  1541. a.VenCode,
  1542. a.WorkPoint,
  1543. f.MITEMSCORE
  1544. ) b ON a.VenCode = b.VenCode AND a.WorkPoint = b.WorkPoint
  1545. left join (
  1546. SELECT
  1547. a.vencode,
  1548. --
  1549. SUM(CASE WHEN d.MTIME <= a.PlanArriveDate THEN e.Quantity ELSE NULL END) AS OnTimeLotCount,
  1550. --
  1551. ROUND(
  1552. CAST(SUM(CASE WHEN d.MTIME <= a.PlanArriveDate THEN e.Quantity ELSE NULL END) AS FLOAT)
  1553. / NULLIF(SUM(e.Quantity), 0) * f.MITEMSCORE, 2
  1554. ) AS OnTimeRate
  1555. FROM
  1556. ICSPurchaseOrder a
  1557. -- ICSInventoryLotDetail
  1558. INNER JOIN
  1559. ICSInventoryLotDetail b ON a.POCode = b.TransCode AND a.Sequence = b.TransSequence AND a.WorkPoint = b.WorkPoint
  1560. -- ICSInventoryLot
  1561. INNER JOIN
  1562. ICSInventoryLot e ON b.LotNo = e.LotNo AND b.WorkPoint = e.WorkPoint
  1563. -- ICSASNDetail
  1564. INNER JOIN
  1565. ICSASNDetail c ON b.LotNo = c.LotNo AND b.WorkPoint = c.WorkPoint
  1566. -- ICSDeliveryNotice MTIME
  1567. INNER JOIN
  1568. (
  1569. SELECT MAX(MTIME) AS mtime, ASNCode, WorkPoint
  1570. FROM ICSDeliveryNotice
  1571. WHERE DNType = '1' AND ASNCode IS NOT NULL
  1572. GROUP BY ASNCode, WorkPoint
  1573. ) d ON c.ASNCode = d.ASNCode AND c.WorkPoint = d.WorkPoint
  1574. -- ICSPERFTEMPLATEMITEM
  1575. LEFT JOIN
  1576. ICSPERFTEMPLATEMITEM f ON f.MITEMNAME = ''
  1577. where a.PlanArriveDate >= '" + year +"-"+Moth+ "-01' and a.PlanArriveDate<='" + year +"-"+Moth+"-"+Day+ @"'
  1578. group by a.vencode,f.MITEMSCORE
  1579. ) c on a.VenCode=c.vencode Where 1=1";
  1580. if (!string.IsNullOrEmpty(queryJson))
  1581. {
  1582. if (!string.IsNullOrWhiteSpace(queryParam["cVenCode"].ToString()))
  1583. sql += " and a.VenCode like '%" + queryParam["cVenCode"].ToString() + "%'";
  1584. if (!string.IsNullOrWhiteSpace(queryParam["cVenName"].ToString()))
  1585. sql += " and a.VenName like '%" + queryParam["cVenName"].ToString() + "%'";
  1586. }
  1587. sql += " and a.WorkPoint in ('" + WorkPoint + "')";
  1588. //权限设置
  1589. if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
  1590. {
  1591. sql = SqlHelper.OrganizeByVendor_F_ParentIdBYJX(sql, NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  1592. }
  1593. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1594. }
  1595. }
  1596. }