diff --git a/Common/CK.SCP.Common.csproj b/Common/CK.SCP.Common.csproj index a1202e9..f34cec4 100644 --- a/Common/CK.SCP.Common.csproj +++ b/Common/CK.SCP.Common.csproj @@ -94,6 +94,7 @@ CktTextBox.cs + diff --git a/Common/MailManager.cs b/Common/MailManager.cs new file mode 100644 index 0000000..34afce6 --- /dev/null +++ b/Common/MailManager.cs @@ -0,0 +1,42 @@ +using CK.SCP.Utils; +using MailKit.Security; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CK.SCP.Common +{ + public class MailManager + { + /// + /// 发送邮件 + /// + /// + /// + /// + public static void SendMailOrders(string mails = "", string mailbody = "", string p_MailTitle = "") + { + try + { + List toList = new List(); + EmailAddress add = new EmailAddress(mails, mails); + toList.Add(add); + var smtpMailSender = new MailKitMailSender(SecureSocketOptions.StartTls); + smtpMailSender.BuildOrderMessage( + toList, + p_MailTitle, + mailbody, + "BBC" + ); + smtpMailSender.SendOrder(); + } + catch (Exception e) + { + LogHelper.Writlog(LogHelper.LogType.Error, typeof(MailManager), "MailManager", e.Message + e.InnerException?.Message); + throw e; + } + } + } +} diff --git a/Common/MyWebSmtpMail.cs b/Common/MyWebSmtpMail.cs index 2688946..a3c7ed8 100644 --- a/Common/MyWebSmtpMail.cs +++ b/Common/MyWebSmtpMail.cs @@ -88,29 +88,34 @@ namespace CK.SCP.Common } } - + /// + /// 材料邮件 + /// + /// + /// + /// public void SendOrdersEmail(string To, string Body, string Title) { mailMessage = new MailMessage(); mailMessage.To.Add(To); - mailMessage.From = new System.Net.Mail.MailAddress(this.from); + mailMessage.From = new MailAddress("faway_cyjdd@163.com"); mailMessage.Subject = Title; mailMessage.Body = Body; mailMessage.IsBodyHtml = true; - mailMessage.BodyEncoding = System.Text.Encoding.UTF8; - mailMessage.Priority = System.Net.Mail.MailPriority.Normal; + mailMessage.BodyEncoding = Encoding.UTF8; + mailMessage.Priority = MailPriority.Normal; if (mailMessage != null) { smtpClient = new SmtpClient(); if (!credentials) { - smtpClient.Credentials = new System.Net.NetworkCredential(username, password); + smtpClient.Credentials = new System.Net.NetworkCredential("faway_cyjdd@163.com", "XOVCAHAWSHYUNWWT"); } - smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; - smtpClient.Host = server; - smtpClient.Port = port; - smtpClient.EnableSsl = enablessl; + smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; + smtpClient.Host = "smtp.163.com"; + smtpClient.Port = 25; + smtpClient.EnableSsl = false; //smtpClient.Send(mailMessage); //smtpClient.SendAsync(mailMessage, null); @@ -122,14 +127,14 @@ namespace CK.SCP.Common smtpClient.UseDefaultCredentials = false; //指定邮箱账号和密码,需要注意的是,这个密码是你在QQ邮箱设置里开启服务的时候给你的那个授权码 - System.Net.NetworkCredential networkCredential = new System.Net.NetworkCredential(username, password); + System.Net.NetworkCredential networkCredential = new System.Net.NetworkCredential("faway_cyjdd@163.com", "XOVCAHAWSHYUNWWT"); smtpClient.Credentials = networkCredential; //发送邮件 smtpClient.Send(mailMessage); } - catch (System.Net.Mail.SmtpException ex) + catch (Exception ex) { throw ex; } @@ -218,6 +223,55 @@ namespace CK.SCP.Common } } + /// + /// 材料 + /// + /// + /// + /// + /// + public void BuildOrderMessage(List toAddressList, string subject, string body, string model) + { + _message = new MimeMessage(); + + _message.Sender = new MailboxAddress("faway_cyjdd@163.com", "faway_cyjdd@163.com"); + _message.From.Add(new MailboxAddress("faway_cyjdd@163.com", "faway_cyjdd@163.com")); + _message.Subject = subject; + _message.Body = new TextPart(TextFormat.Html) { Text = body }; + + foreach (var emailAddress in toAddressList) + { + if (model == "BCC")//抄送模式(抄送模式只发送一个邮件,避免大量发重复邮件) + { + _message.Bcc.Add(new MailboxAddress(emailAddress.Name, emailAddress.Address)); + } + else + { + _message.To.Add(new MailboxAddress(emailAddress.Name, emailAddress.Address)); + } + + } + } + /// + /// 材料 + /// + public void SendOrder() + { + try + { + _client.Connect("smtp.163.com", 25, _secureSocketOptions); + _client.Authenticate("faway_cyjdd@163.com", "XOVCAHAWSHYUNWWT"); + _client.Send(_message); + _client.Disconnect(true); + Console.WriteLine("MailKit Send Success:" + _message.To.Mailboxes.First()); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + Console.WriteLine(); + throw ex; + } + } public async Task SendAsync() diff --git a/Controller/SCP_MPO_CONTROLLER.cs b/Controller/SCP_MPO_CONTROLLER.cs index e4417df..3b6eaa0 100644 --- a/Controller/SCP_MPO_CONTROLLER.cs +++ b/Controller/SCP_MPO_CONTROLLER.cs @@ -185,7 +185,7 @@ namespace CK.SCP.Controller { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { - return db.V_TB_MPO_DETAIL.Where(p => p_lst.Contains(p.PurdocNO) && p.Ctype != "D").ToList(); + return db.V_TB_MPO_DETAIL.Where(p => p_lst.Contains(p.PurdocNO)).ToList(); } } @@ -497,6 +497,20 @@ namespace CK.SCP.Controller { MATERIALORDERS = db.TB_MATERIALORDERS_DETAIL.Where(q => q.PurdocNO == PurdocNO).ToList(); } + if (MATERIALORDERS.Count() > 0) + { + MATERIALORDERS.ForEach(q => + { + if (q.Ctype == "D") + { + q.CType_DESC = "是"; + } + else + { + q.CType_DESC = "否"; + } + }); + } return MATERIALORDERS; } @@ -547,8 +561,12 @@ namespace CK.SCP.Controller _detail.ITEMDELIVERYDATE = p.ItemDeliveryDate.ToString("yyyy-MM-dd"); _detail.GLACCTNODES = p.Glaccnum; _detail.COSTCENTERDES = p.CostCenterDes; + _detail.CType_DESC = p.CType_DESC; lsDetail.Add(_detail); - SUM += p.NetValue; + if (p.Ctype != "D") + { + SUM += p.NetValue; + } }); print.Total = SUM.ToString("F6"); var dt = ConvertHelper.ToDataTable(new List { print }); diff --git a/Models/ScpEntity/TB_MATERIALORDERS_DETAIL.cs b/Models/ScpEntity/TB_MATERIALORDERS_DETAIL.cs index c88faf4..22d14c5 100644 --- a/Models/ScpEntity/TB_MATERIALORDERS_DETAIL.cs +++ b/Models/ScpEntity/TB_MATERIALORDERS_DETAIL.cs @@ -57,6 +57,7 @@ namespace CK.SCP.Models.ScpEntity public string StoreLocation { get; set; } [DisplayName("ʱ")] public string UpdateTime { get; set; } - + [NotMapped] + public string CType_DESC { get; set; } } } diff --git a/Models/ScpEntity/V_MPO_PRINT.cs b/Models/ScpEntity/V_MPO_PRINT.cs index 0a16aaa..8dfc6fd 100644 --- a/Models/ScpEntity/V_MPO_PRINT.cs +++ b/Models/ScpEntity/V_MPO_PRINT.cs @@ -33,6 +33,7 @@ public string ITEMDELIVERYDATE { get; set; } public string GLACCTNODES { get; set; } public string COSTCENTERDES { get; set; } + public string CType_DESC { get; set; } } } diff --git a/SCP/SCP.csproj b/SCP/SCP.csproj index e9cbc57..6d2a8d1 100644 --- a/SCP/SCP.csproj +++ b/SCP/SCP.csproj @@ -2958,11 +2958,13 @@ + + @@ -2986,6 +2988,8 @@ + + @@ -5363,6 +5367,13 @@ SCP_INVOICE_EDIT.aspx + + SCP_MPO_DETAIL.aspx + ASPXCodeBehind + + + SCP_MPO_DETAIL.aspx + SCP_PART_LIFE.aspx ASPXCodeBehind @@ -5398,6 +5409,13 @@ SCP_ASN_DETAIL_View.aspx + + SCP_PO_MATERIAL.aspx + ASPXCodeBehind + + + SCP_PO_MATERIAL.aspx + SCP_PO_PLAN_EXTEND.aspx @@ -5558,6 +5576,20 @@ SCP_FORECAST.aspx + + SCP_MPO_DETAIL.aspx + ASPXCodeBehind + + + SCP_MPO_DETAIL.aspx + + + SCP_PO_MATERIAL.aspx + ASPXCodeBehind + + + SCP_PO_MATERIAL.aspx + SCP_PO_PLAN_EXTEND_VIEW.aspx ASPXCodeBehind diff --git a/SCP/Views/PlanData/SCP_MPO_DETAIL.aspx b/SCP/Views/PlanData/SCP_MPO_DETAIL.aspx new file mode 100644 index 0000000..48795b0 --- /dev/null +++ b/SCP/Views/PlanData/SCP_MPO_DETAIL.aspx @@ -0,0 +1,71 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SCP_MPO_DETAIL.aspx.cs" Inherits="SCP.Views.PlanData.SCP_MPO_DETAIL" %> + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SCP/Views/PlanData/SCP_MPO_DETAIL.aspx.cs b/SCP/Views/PlanData/SCP_MPO_DETAIL.aspx.cs new file mode 100644 index 0000000..de5d5df --- /dev/null +++ b/SCP/Views/PlanData/SCP_MPO_DETAIL.aspx.cs @@ -0,0 +1,169 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web.UI.WebControls; +using CK.SCP.Models.ScpEntity; +using CK.SCP.Controller; +using FineUI; +using CK.SCP.Models.Enums; + +namespace SCP.Views.PlanData +{ + public partial class SCP_MPO_DETAIL : PageBase + { + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + if (!string.IsNullOrEmpty(Request["PurdocNO"])) + { + BindDetail(); + } + else + { + Alert.Show("请选择数据后再查看明细!"); + return; + } + } + } + + public void SearchV_TB_PO_DETAIL(Action> p_action) + { + V_TB_MPO_DETAIL _entity = new V_TB_MPO_DETAIL(); + string purdocnolist =Request["PurdocNO"]; + _entity.purdocnolist = purdocnolist.Split(',').ToList(); + SCP_MPO_CONTROLLER.Get_V_TB_MPO_DETAIL_List(_entity,(_ret)=> { + if (_ret.State == ReturnStatus.Succeed) + { + p_action(_ret.Result); + } + }); + } + + + public void BindDetail() + { + SearchV_TB_PO_DETAIL((ret)=>{ + this.Grid_V_TB_MPO_DETAIL.RecordCount = ret.Count(); + var list = SortAndPage(ret, Grid_V_TB_MPO_DETAIL); + Grid_V_TB_MPO_DETAIL.DataSource = list.ToList(); + Grid_V_TB_MPO_DETAIL.DataBind(); + }); + } + + protected void Grid_V_TB_PO_DETAIL_PageIndexChange(object sender, GridPageEventArgs e) + { + BindDetail(); + } + protected void ddlGridPageSize_SelectedIndexChanged(object sender, EventArgs e) + { + Grid_V_TB_MPO_DETAIL.PageSize = Convert.ToInt32(ddlGridPageSize.SelectedValue); + + BindDetail(); + } + ///// + ///// 审批通过 + ///// + ///// + ///// + //protected void btnAccept_Click(object sender, EventArgs e) + //{ + // int[] selections = Grid_V_TB_MPO_DETAIL.SelectedRowIndexArray; + // List NOList = new List(); + // //List ctylist = new List(); + // List AcceptStatusList = new List(); + // if (selections.Count() ==0 ) + // { + // Alert.Show("您未选择数据进行审批"); + // return; + // } + // else + // { + // foreach (int rowIndex in selections) + // { + // NOList.Add(Grid_V_TB_MPO_DETAIL.DataKeys[rowIndex][1] as string); + // //ctylist.Add(Grid_V_TB_MPO_DETAIL.DataKeys[rowIndex][4] as string); + // var app = Grid_V_TB_MPO_DETAIL.DataKeys[rowIndex][3].ToString(); + // AcceptStatusList.Add(int.Parse(app)); + // } + // NOList = NOList.Distinct().ToList(); + // //if (ctylist.Contains("D")) + // //{ + // // Alert.Show("选择的数据包含已经作废的数据"); + // // return; + // //} + // if (AcceptStatusList.Contains((int)GeneralMaterialOrderState.Finish)) + // { + // Alert.Show("选择的数据包含已确认的数据"); + // return; + // } + + // var ret = SCP_MPO_CONTROLLER.Save_MPO_STATE(NOList, GeneralMaterialOrderState.Finish); + + // if (ret.State == ReturnStatus.Succeed) + // { + // Alert.Show("确认成功"); + // BindDetail(); + // } + // else + // { + // Alert.Show(string.Join("
", ret.MessageList)); + // return; + // } + // } + + + //} + ///// + ///// 取消审批 + ///// + ///// + ///// + //protected void btnCancel_Click(object sender, EventArgs e) + //{ + // int[] selections = Grid_V_TB_MPO_DETAIL.SelectedRowIndexArray; + // List NOList = new List(); + // List ctylist = new List(); + // List AcceptStatusList = new List(); + // if (selections.Count() == 0) + // { + // Alert.Show("您未选择数据进行取消审批"); + // return; + // } + // else + // { + // foreach (int rowIndex in selections) + // { + // NOList.Add(Grid_V_TB_MPO_DETAIL.DataKeys[rowIndex][1] as string); + // ctylist.Add(Grid_V_TB_MPO_DETAIL.DataKeys[rowIndex][4] as string); + // AcceptStatusList.Add(int.Parse(Grid_V_TB_MPO_DETAIL.DataKeys[rowIndex][3].ToString())); + // } + // NOList = NOList.Distinct().ToList(); + // if (ctylist.Contains("D")) + // { + // Alert.Show("选择的数据包含已经作废的数据"); + // return; + // } + // if (AcceptStatusList.Contains((int)GeneralMaterialOrderState.New)) + // { + // Alert.Show("选择的数据包含新建的数据"); + // return; + // } + // var ret = SCP_MPO_CONTROLLER.Save_MPO_STATE(NOList, GeneralMaterialOrderState.New); + + // if (ret.State == ReturnStatus.Succeed) + // { + // Alert.Show("取消成功"); + // BindDetail(); + // } + // else + // { + // Alert.Show(string.Join("
", ret.MessageList)); + // return; + // } + // } + //} + + } +} \ No newline at end of file diff --git a/SCP/Views/PlanData/SCP_MPO_DETAIL.aspx.designer.cs b/SCP/Views/PlanData/SCP_MPO_DETAIL.aspx.designer.cs new file mode 100644 index 0000000..f9b1736 --- /dev/null +++ b/SCP/Views/PlanData/SCP_MPO_DETAIL.aspx.designer.cs @@ -0,0 +1,98 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace SCP.Views.PlanData +{ + + + public partial class SCP_MPO_DETAIL + { + + /// + /// form1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// Panel1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUI.Panel Panel1; + + /// + /// Toolbar2 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUI.Toolbar Toolbar2; + + /// + /// BTN_REFRESH 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUI.Button BTN_REFRESH; + + /// + /// HF_GRID_INDEX 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUI.HiddenField HF_GRID_INDEX; + + /// + /// Grid_V_TB_MPO_DETAIL 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUI.Grid Grid_V_TB_MPO_DETAIL; + + /// + /// ToolbarSeparator1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUI.ToolbarSeparator ToolbarSeparator1; + + /// + /// ToolbarText1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUI.ToolbarText ToolbarText1; + + /// + /// ddlGridPageSize 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUI.DropDownList ddlGridPageSize; + } +} diff --git a/SCP/Views/PlanData/SCP_PO_MATERIAL.aspx b/SCP/Views/PlanData/SCP_PO_MATERIAL.aspx new file mode 100644 index 0000000..88cacaf --- /dev/null +++ b/SCP/Views/PlanData/SCP_PO_MATERIAL.aspx @@ -0,0 +1,119 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SCP_PO_MATERIAL.aspx.cs" Inherits="SCP.Views.PlanData.SCP_PO_MATERIAL" %> + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +