using Newtonsoft.Json; using NFine.Code; using NFine.Data.Extensions; using NFine.Domain._03_Entity.SRM; using NFine.Domain.Entity.ProductManage; using NFine.Domain.IRepository.ProductManage; using NFine.Repository; using NFine.Repository.ProductManage; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.Common; using System.Data.SqlClient; using System.IO; using System.Linq; using System.Net; using System.Net.Mail; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using System.Text; namespace NFine.Application.SRM { public class POSignBacksApp : RepositoryFactory { public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam) { DataTable dt = new DataTable(); var queryParam = queryJson.ToJObject(); List parameter = new List(); string EATTRIBUTE = SqlHelper.GetEATTRIBUTE("ICSPurchaseOrder","a").TrimEnd(','); string sql = @" SELECT DISTINCT POCode ,CONVERT(NVARCHAR(15),CreateDateTime,23) AS PODate ,c.ProjectCode ,a.VenCode ,d.VenName ,CreatePerson ,a.Filename AS Filename ,a.uploadcomment AS uploadcomment ,MAX(a.uploadFrequency) AS uploadFrequency ,MAX(a.DownloadFrequency) AS DownloadFrequency ,case when a.SignBackStatus=1 or ISNULL(a.SignBackStatus,'')='' then '未回签' WHEN a.SignBackStatus=2 then '待确认'WHEN a.SignBackStatus=3 then '已确认'WHEN a.SignBackStatus=4 then '退回' END as signBackstate ,a.WorkPoint ,a.BackComment ,case when a.SignBackStatus=1 or ISNULL(a.SignBackStatus,'')='' then '未回签' WHEN a.SignBackStatus=2 then '待确认'WHEN a.SignBackStatus=3 then '已确认'WHEN a.SignBackStatus=4 then '退回' END as STATUS ," + EATTRIBUTE + ""; sql+=@" FROM dbo.ICSPurchaseOrder a LEFT JOIN ICSINVENTORY b on a.InvCode=b.INVCODE and a.WorkPoint=b.WorkPoint LEFT JOIN dbo.ICSExtension c ON a.ExtensionID=c.ID AND a.WorkPoint=c.WorkPoint LEFT JOIN dbo.ICSVendor d ON a.VenCode=d.VenCode AND a.WorkPoint=d.WorkPoint WHERE 1=1 and a.ReleaseState='1' --and a.Status<>'3' "; if (!string.IsNullOrWhiteSpace(queryJson)) { // if (!string.IsNullOrWhiteSpace(queryParam["ORDERNO"].ToString())) //{ // sql += " and ORDERNO like '%" + queryParam["ORDERNO"].ToString() + "%' "; //} if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString())) { sql += " and a.POCode like '%" + queryParam["POCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString())) { sql += " and a.CreateDateTime >='" + queryParam["BeginDate"].ToString() + "' "; } if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString())) { sql += " and a.CreateDateTime <='" + queryParam["EndDate"].ToString() + "'"; } if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString())) { sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString())) { sql += " and d.VenName like '%" + queryParam["VenName"].ToString() + "%'"; } if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString())) { sql += " and b.InvCode like '%" + queryParam["InvCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString())) { sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%'"; } if (!string.IsNullOrWhiteSpace(queryParam["EATTRIBUTE12"].ToString())) { sql += " and a.EATTRIBUTE12 like '%" + queryParam["EATTRIBUTE12"].ToString() + "%'"; } if (!string.IsNullOrWhiteSpace(queryParam["U8Status"].ToString())) { string U8Status = queryParam["U8Status"].ToString(); if (U8Status == "0") sql += " and isnull(Status,'')<>'3'"; else if (U8Status == "2") sql += " and isnull(Status,'')='3'"; } //if (!string.IsNullOrWhiteSpace(queryParam["CreatePerson"].ToString())) //{ // sql += " and CreatePerson like '%" + queryParam["CreatePerson"].ToString() + "%'"; //} if (!string.IsNullOrWhiteSpace(queryParam["ReleaseState"].ToString())) { string ReleaseState = queryParam["ReleaseState"].ToString(); if (ReleaseState == "1") sql += " and a.SignBackStatus = '1'"; else if (ReleaseState == "2") sql += " and a.SignBackStatus = '2'"; else if (ReleaseState == "3") sql += " and a.SignBackStatus = '3'"; else if (ReleaseState == "0") sql += " and (ISNULL(a.SignBackStatus,'') = ''OR ISNULL(a.SignBackStatus,'') = '1')"; else if (ReleaseState == "4") { sql += " and ISNULL(a.SignBackStatus,0) = '4'"; } } if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor")) { sql += " and a.VenCode in (SELECT VenCode FROM ICSVendor where VenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "' AND a.WorkPoint=ICSVendor.WorkPoint)"; } //else //{ // if (NFine.Code.OperatorProvider.Provider.GetCurrent().IsSystem == false) // { // sql += " and CreatePerson='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'"; // } //} string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location; sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")"; sql += @" GROUP BY POCode,CreateDateTime,c.ProjectCode,a.VenCode,d.VenName,a.SignBackStatus,CreatePerson,a.Filename,a.uploadcomment,a.BackComment,a.WorkPoint,ArriveDate ,a.EATTRIBUTE7,a.EATTRIBUTE8, a.EATTRIBUTE9,a.EATTRIBUTE10 ,a.EATTRIBUTE11 ,a.EATTRIBUTE12 "; } return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam); } public string ChridenList(string keyValue, string WorkPoint) { keyValue = keyValue.Substring(1, keyValue.Length - 2); WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2); string msg = ""; string sql = "SELECT ArriveDate,Status FROM dbo.ICSPurchaseOrder WHERE PoCode='{0}' and WorkPoint='{1}'"; sql = string.Format(sql, keyValue, WorkPoint); DataTable dt = SqlHelper.GetDataTableBySql(sql); for (int i = 0; i < dt.Rows.Count; i++) { if (dt.Rows[i]["Status"].ToString() != "3")//判断是否关闭 { if (dt.Rows[i]["ArriveDate"].ToString() == "" || dt.Rows[i]["ArriveDate"].ToString() == null) { msg = "请先填写交期一!"; } } } return msg; } public DataTable GetGridJsonCommint(string queryJson, ref Pagination jqgridparam) { //string ParentId = ""; DataTable dt = new DataTable(); var queryParam = queryJson.ToJObject(); List parameter = new List(); string EATTRIBUTE = SqlHelper.GetEATTRIBUTE("ICSPurchaseOrder", "a").TrimEnd(','); string sql = @" SELECT DISTINCT POCode ,CONVERT(NVARCHAR(15),CreateDateTime,23) AS PODate ,e.ProjectCode ,a.VenCode ,d.VenName ,ReleaseState ,CreatePerson ,a.Filename Filename ,a.uploadcomment uploadcomment ,MAX(a.uploadFrequency) AS uploadFrequency ,MAX(a.DownloadFrequency) AS DownloadFrequency ,case when a.SignBackStatus=1or ISNULL(a.SignBackStatus,'')='' then '未回签' WHEN a.SignBackStatus=2 then '确认中'WHEN a.SignBackStatus=3 then '已回签' WHEN a.SignBackStatus=4 then '退回' END as signBackstate ,a.WorkPoint,a.BackComment ,case when a.SignBackStatus=1or ISNULL(a.SignBackStatus,'')='' then '未回签' WHEN a.SignBackStatus=2 then '确认中'WHEN a.SignBackStatus=3 then '已回签' WHEN a.SignBackStatus=4 then '退回' END as STATUS ," + EATTRIBUTE + ""; sql+=@" FROM dbo.ICSPurchaseOrder a LEFT JOIN dbo.Sys_SRM_User b ON a.VenCode=b.F_VenCode AND a.WorkPoint=b.F_Location LEFT JOIN ICSINVENTORY c on a.InvCode=c.INVCODE and a.WorkPoint=c.WorkPoint LEFT JOIN dbo.ICSVendor d ON a.VenCode=d.VenCode AND a.WorkPoint=d.WorkPoint LEFT JOIN dbo.ICSExtension e ON a.ExtensionID=e.ID AND a.WorkPoint=e.WorkPoint WHERE 1=1 and a.ReleaseState='1' "; if (!string.IsNullOrWhiteSpace(queryJson)) { //if (!string.IsNullOrWhiteSpace(queryParam["ORDERNO"].ToString())) //{ // sql += " and a.ORDERNO like '%" + queryParam["ORDERNO"].ToString() + "%' "; //} if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString())) { sql += " and a.POCode like '%" + queryParam["POCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString())) { sql += " and a.CreateDateTime >='" + queryParam["BeginDate"].ToString() + "' "; } if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString())) { sql += " and a.CreateDateTime <='" + queryParam["EndDate"].ToString() + "'"; } if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString())) { sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString())) { sql += " and d.VenName like '%" + queryParam["VenName"].ToString() + "%'"; } if (!string.IsNullOrWhiteSpace(queryParam["CreatePerson"].ToString())) { sql += " and a.CreatePerson like '%" + queryParam["CreatePerson"].ToString() + "%'"; } if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString())) { sql += " and c.InvCode like '%" + queryParam["InvCode"].ToString() + "%' "; } if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString())) { sql += " and c.InvName like '%" + queryParam["InvName"].ToString() + "%'"; } if (!string.IsNullOrWhiteSpace(queryParam["EATTRIBUTE12"].ToString())) { sql += " and a.EATTRIBUTE12 like '%" + queryParam["EATTRIBUTE12"].ToString() + "%'"; } if (!string.IsNullOrWhiteSpace(queryParam["U8Status"].ToString())) { string U8Status = queryParam["U8Status"].ToString(); if (U8Status == "0") sql += " and isnull(STATUS,'')<>'3'"; else if (U8Status == "1") sql += " and isnull(STATUS,'')='3'"; } if (!string.IsNullOrWhiteSpace(queryParam["ReleaseState"].ToString())) { string ReleaseState = queryParam["ReleaseState"].ToString(); if (ReleaseState == "2") sql += " and a.SignBackStatus = '2'"; else if (ReleaseState == "3") sql += " and a.SignBackStatus = '3'"; else if (ReleaseState == "4") sql += " and (ISNULL(a.SignBackStatus,'')='' OR ISNULL(a.SignBackStatus,'') = '1')"; else if (ReleaseState == "5") sql += " and ISNULL(a.SignBackStatus,'')='4'"; } //else //{ // sql += " and SignBackState in('2','3')"; //} if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor")) { sql += " and a.VenCode in (SELECT VenCode FROM ICSVendor where VenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'AND a.WorkPoint=ICSVendor.WorkPoint)"; } //else //{ // sql += " and CreatePerson='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'"; //} string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location; sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")"; //ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode); } if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin") { sql = SqlHelper.OrganizeByVendor_F_ParentIdByCommint(sql, NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode); } else { sql += " GROUP BY POCode,CreateDateTime,e.ProjectCode,a.VenCode,d.VenName,ReleaseState,CreatePerson,a.Filename,a.uploadcomment ,a.SignBackStatus,a.WorkPoint ,a.EATTRIBUTE7,a.EATTRIBUTE8, a.EATTRIBUTE9,a.EATTRIBUTE10 ,a.EATTRIBUTE11 ,a.EATTRIBUTE12,a.BackComment"; } return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam); } /// /// 子表查询 /// /// /// /// public DataTable GetSubGridJson(string queryJson, ref Pagination jqgridparam) { DataTable dt = new DataTable(); //var queryParam = queryJson.ToJObject(); List parameter = new List(); string sql = @"SELECT a.Sequence,a.InvCode,b.INVNAME,b.INVSTD,b.InvUnit,a.Quantity, CONVERT(NVARCHAR(50), a.PlanArriveDate,23) as PreArriveDate,CONVERT(NVARCHAR(50),a.ArriveDate,23) as ArriveDate, CONVERT(NVARCHAR(50), a.DeliveryDate,23) as Free5,c.ProjectCode FROM dbo.ICSPurchaseOrder a LEFT JOIN dbo.ICSINVENTORY b ON a.InvCode=b.INVCODE AND a.WorkPoint=b.WorkPoint LEFT JOIN dbo.ICSExtension c ON a.ExtensionID=c.id AND a.WorkPoint=c.WorkPoint WHERE a.POCode='" + queryJson + "'and (isnull(a.Status,'')<>'关闭'and isnull(a.Status,'')<>'弃审')"; return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam); } /// /// 提交备注信息 /// /// /// /// public int UpdatePOBackRemark(string ReturnRemark, string POCode) { string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location; string sql = string.Empty; sql = @"UPDATE ICSPurchaseOrder SET uploadcomment= '{1}' WHERE POCode = '{0}'"; sql = string.Format(sql, POCode, ReturnRemark); return SqlHelper.ExecuteNonQuery(sql); } /// /// 采购人员确定订单回签 /// /// /// /// public void POBackCommit(string queryJson) { try { ICSPO_PoMain[] list = JsonConvert.DeserializeObject(queryJson); //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location; string sql = string.Empty; string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString; SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString); conn.Open(); SqlTransaction sqlTran = conn.BeginTransaction(); SqlCommand cmd = new SqlCommand(); cmd.Transaction = sqlTran; cmd.Connection = conn; try { string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode; string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.Replace("'", ""); //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location; foreach (var obj in list) { sql = @"UPDATE ICSPurchaseOrder SET SignBackStatus= 3,MTIME=GETDATE() WHERE POCode =@POCode and @WorkPoint=@WorkPoint"; SqlParameter[] sp_Detail = { new SqlParameter("@POCode",obj.POCode), new SqlParameter("@WorkPoint",WorkPoint.TrimEnd(',')), }; SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd); } cmd.Transaction.Commit(); } catch (Exception ex) { cmd.Transaction.Rollback(); throw new Exception(ex.Message); } finally { if (conn.State == ConnectionState.Open) { conn.Close(); } conn.Dispose(); } } catch (Exception ex) { throw new Exception(ex.Message); } } /// /// 上传文件变更订单状态为确认中,新增上传次数 /// /// /// /// /// public string UpLoadFile(string PoCode, string FileName, string FilePath, string ReturnRemark, string WorkPoint) { string msg = ""; try { int countRemak = UpdatePOBackRemark(ReturnRemark, PoCode); if (countRemak <= 0) { msg = "上传失败"; } //更新上传次数 string sqls = @"UPDATE dbo.ICSPurchaseOrder SET uploadFrequency=ISNULL(uploadFrequency,0)+1 WHERE PoCode = '" + PoCode.TrimEnd(',') + "' and WorkPoint='" + WorkPoint + "'"; int counts = SqlHelper.ExecuteNonQuery(sqls); if (counts <= 0) msg = "上传失败"; string sql = @"UPDATE ICSPurchaseOrder SET Filename = '{1}',FilePath = '{2}',SignBackStatus=2 WHERE POCode = '{0}'"; sql = string.Format(sql, PoCode, FileName, FilePath); int count = SqlHelper.ExecuteNonQuery(sql); if (count <= 0) msg = "上传失败"; } catch (Exception ex) { msg = ex.Message.ToString(); } return msg; } /// /// 上传文件变更订单状态为确认中,新增上传次数 /// /// /// /// /// public string UpLoadFileCommint(string PoCode, string FileName, string FilePath, string ReturnRemark, string WorkPoint) { string msg = ""; try { int countRemak = UpdatePOBackRemark(ReturnRemark, PoCode); if (countRemak <= 0) { msg = "上传失败"; } //更新上传次数 string sqls = @"UPDATE dbo.ICSPurchaseOrder SET uploadFrequency=ISNULL(uploadFrequency,0)+1 WHERE PoCode = '" + PoCode.TrimEnd(',') + "' and WorkPoint='" + WorkPoint + "'"; int counts = SqlHelper.ExecuteNonQuery(sqls); if (counts <= 0) msg = "上传失败"; string sql = @"UPDATE ICSPurchaseOrder SET FileName = '{1}',FilePath = '{2}',SignBackStatus=3 WHERE POCode = '{0}'"; sql = string.Format(sql, PoCode, FileName, FilePath); int count = SqlHelper.ExecuteNonQuery(sql); if (count <= 0) msg = "上传失败"; } catch (Exception ex) { msg = ex.Message.ToString(); } return msg; } public void BackCommit(string keyValue) { string sql = string.Empty; try { string Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode; string MuserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName; ICSPO_PoMain[] list = JsonConvert.DeserializeObject(keyValue); string MailOpen = ConfigurationManager.ConnectionStrings["MailOpen"].ConnectionString; //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(','); string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString; SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString); conn.Open(); SqlTransaction sqlTran = conn.BeginTransaction(); SqlCommand cmd = new SqlCommand(); cmd.Transaction = sqlTran; cmd.Connection = conn; try { foreach (var obj in list) { sql = @" UPDATE ICSPurchaseOrder SET SignBackStatus='4',BackComment=@BackCommit WHERE POCODE=@POCODE"; SqlParameter[] sp_Detail = { new SqlParameter("@POCODE",obj.POCode), new SqlParameter("@BackCommit",obj.EATTRIBUTE6) }; SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd); string sqlEmail = @"SELECT DISTINCT c.F_Email,b.VenName from ICSPurchaseOrder(NOLOCK) a LEFT JOIN dbo.ICSVendor(NOLOCK) b ON a.VenCode=b.VenCode AND a.WorkPoint=b.WorkPoint LEFT JOIN dbo.Sys_SRM_User(NOLOCK) c ON b.VenCode=c.F_VenCode AND b.WorkPoint=c.F_Location Where PoCode='{0}'"; sqlEmail = string.Format(sqlEmail, obj.POCode); DataTable dtEmail = SqlHelper.GetDataTableBySql(sqlEmail); if (dtEmail.Rows.Count > 0) { for (int i = 0; i < dtEmail.Rows.Count; i++) { if (!string.IsNullOrWhiteSpace(dtEmail.Rows[i]["F_Email"].ToString())) { if (MailOpen == "true") { string SendHost = ConfigurationManager.ConnectionStrings["SendHost"].ConnectionString; string StrSendPort = ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString; int SendPort = 25; if (!string.IsNullOrEmpty(StrSendPort)) SendPort = Convert.ToInt32(ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString); string SendDisplayName = ConfigurationManager.ConnectionStrings["SendDisplayName"].ConnectionString; string SendAddress = ConfigurationManager.ConnectionStrings["SendAddress"].ConnectionString; string SendPassword = ConfigurationManager.ConnectionStrings["SendPassword"].ConnectionString; string TOAddress = dtEmail.Rows[i]["F_Email"].ToString(); string[] Partint = TOAddress.Split(';'); if (!string.IsNullOrEmpty(TOAddress)) { foreach (var p in Partint) { string CCAddress = ""; string Subject = "有来自华恒SRM平台信息"; bool isBodyHtml = false; string F_RealName = dtEmail.Rows[i]["VenName"].ToString(); //string StarTime = dr["StarTime"].ToString(); string NowDate = DateTime.Now.GetDateTimeFormats('D')[0].ToString(); string body = "尊敬的" + F_RealName + ":"; body += " \r\n 你的采购订单订单:" + obj.POCode + "被回签确认退回,请前往系统查看详情!。"; body += "\r\n"; body += " 顺颂商祺!"; body += "\r\n"; body += " 华恒焊接(昆山)股份有限公司"; body += "\r\n"; body += " " + NowDate; string StrConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString; if (!string.IsNullOrEmpty(p.ToString())) { try { //MailHelper.SendEmail(StrConn, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, p.ToString(), CCAddress, Subject, isBodyHtml, body); } catch (Exception ex) { throw new Exception("供应商:" + F_RealName + "邮件发送失败! \r\n" + ex.Message); } } } } } } } } } cmd.Transaction.Commit(); } catch (Exception ex) { cmd.Transaction.Rollback(); throw new Exception(ex.Message); } finally { if (conn.State == ConnectionState.Open) { conn.Close(); } conn.Dispose(); } } catch (Exception ex) { throw new Exception(ex.Message); } } } }