From ef5993ae75775f41fb96a2567a6e2caa7d697278 Mon Sep 17 00:00:00 2001 From: wendy <408182087@qq.com> Date: Tue, 13 May 2025 11:18:34 +0800 Subject: [PATCH 1/2] =?UTF-8?q?20250513=20=E6=8E=92=E4=BA=A7=E8=AE=A1?= =?UTF-8?q?=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../版本日志/SGGLDB_V2025-05-13-001_bwj.sql | 94 +++ SGGL/BLL/BLL.csproj | 1 + .../ProductionSchedulingPlanService.cs | 124 ++++ SGGL/FineUIPro.Web/FineUIPro.Web.csproj | 8 + .../PreDesign/ProductionSchedulingPlan.aspx | 171 ++++++ .../ProductionSchedulingPlan.aspx.cs | 427 ++++++++++++++ .../ProductionSchedulingPlan.aspx.designer.cs | 233 ++++++++ SGGL/FineUIPro.Web/common/Menu_HJGL.xml | 1 + SGGL/Model/Model.cs | 547 ++++++++++++++++++ 9 files changed, 1606 insertions(+) create mode 100644 DataBase/版本日志/SGGLDB_V2025-05-13-001_bwj.sql create mode 100644 SGGL/BLL/HJGL/PreDesign/ProductionSchedulingPlanService.cs create mode 100644 SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx create mode 100644 SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx.cs create mode 100644 SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx.designer.cs diff --git a/DataBase/版本日志/SGGLDB_V2025-05-13-001_bwj.sql b/DataBase/版本日志/SGGLDB_V2025-05-13-001_bwj.sql new file mode 100644 index 00000000..92221b63 --- /dev/null +++ b/DataBase/版本日志/SGGLDB_V2025-05-13-001_bwj.sql @@ -0,0 +1,94 @@ + +insert into Sys_Menu(MenuId,MenuName,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed) +values('53948077-B51D-4FF3-BFB0-AB4E27C42875','Ųƻ','HJGL/PreDesign/ProductionSchedulingPlan.aspx',70,'1E36EA73-D536-4215-BFB9-A8771937BD89','Menu_HJGL',0,1,1) +go +insert into Sys_ButtonToMenu(ButtonToMenuId,MenuId,ButtonName,SortIndex) +values('824DDB94-628F-4A4D-9977-E38F039578AA','53948077-B51D-4FF3-BFB0-AB4E27C42875','',1) +insert into Sys_ButtonToMenu(ButtonToMenuId,MenuId,ButtonName,SortIndex) +values('5491A74E-F3EC-4C1D-AA5D-BB0283C7E36D','53948077-B51D-4FF3-BFB0-AB4E27C42875','޸',2) +insert into Sys_ButtonToMenu(ButtonToMenuId,MenuId,ButtonName,SortIndex) +values('9B72FF93-6E2F-41DF-8BA9-3A1C82923B3B','53948077-B51D-4FF3-BFB0-AB4E27C42875','ɾ',3) +insert into Sys_ButtonToMenu(ButtonToMenuId,MenuId,ButtonName,SortIndex) +values('8AD82894-12DA-47E8-8382-3E27633750E0','53948077-B51D-4FF3-BFB0-AB4E27C42875','',4) +go + +CREATE TABLE [dbo].[HJGL_ProductionSchedulingPlan]( + [ProductionSchedulingPlanId] [nvarchar](50) NOT NULL, + [ProjectId] [nvarchar](50) NULL, + [PipelineId] [nvarchar](50) NULL, + [FlowNum] [nvarchar](50) NULL, + [MainItemName] [nvarchar](50) NULL, + [Material] [nvarchar](50) NULL, + [Caliber] [nvarchar](50) NULL, + [Dain] [decimal](18, 2) NULL, + [TotalDyne] [decimal](18, 2) NULL, + [TotalPriority] [nvarchar](50) NULL, + [PriorityTotalDyne] [decimal](18, 2) NULL, + [PlanStartDate] [datetime] NULL, + [PlanEndDate] [datetime] NULL, + [Days] [int] NULL, + [AvgDailyWorkload] [numeric](18, 2) NULL, + CONSTRAINT [PK_HJGL_ProductionSchedulingPlan] PRIMARY KEY CLUSTERED +( + [ProductionSchedulingPlanId] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[HJGL_ProductionSchedulingPlan] WITH CHECK ADD CONSTRAINT [FK_HJGL_ProductionSchedulingPlan_Base_Project] FOREIGN KEY([ProjectId]) +REFERENCES [dbo].[Base_Project] ([ProjectId]) +GO + +ALTER TABLE [dbo].[HJGL_ProductionSchedulingPlan] CHECK CONSTRAINT [FK_HJGL_ProductionSchedulingPlan_Base_Project] +GO + +ALTER TABLE [dbo].[HJGL_ProductionSchedulingPlan] WITH CHECK ADD CONSTRAINT [FK_HJGL_ProductionSchedulingPlan_HJGL_Pipeline] FOREIGN KEY([PipelineId]) +REFERENCES [dbo].[HJGL_Pipeline] ([PipelineId]) +GO + +ALTER TABLE [dbo].[HJGL_ProductionSchedulingPlan] CHECK CONSTRAINT [FK_HJGL_ProductionSchedulingPlan_HJGL_Pipeline] +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Id' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'HJGL_ProductionSchedulingPlan', @level2type=N'COLUMN',@level2name=N'PipelineId' +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ˮκ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'HJGL_ProductionSchedulingPlan', @level2type=N'COLUMN',@level2name=N'FlowNum' +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'HJGL_ProductionSchedulingPlan', @level2type=N'COLUMN',@level2name=N'MainItemName' +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'HJGL_ProductionSchedulingPlan', @level2type=N'COLUMN',@level2name=N'Material' +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ھ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'HJGL_ProductionSchedulingPlan', @level2type=N'COLUMN',@level2name=N'Caliber' +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'HJGL_ProductionSchedulingPlan', @level2type=N'COLUMN',@level2name=N'Dain' +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ܴ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'HJGL_ProductionSchedulingPlan', @level2type=N'COLUMN',@level2name=N'TotalDyne' +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ȼ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'HJGL_ProductionSchedulingPlan', @level2type=N'COLUMN',@level2name=N'TotalPriority' +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ȼܴ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'HJGL_ProductionSchedulingPlan', @level2type=N'COLUMN',@level2name=N'PriorityTotalDyne' +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ƻʼʱ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'HJGL_ProductionSchedulingPlan', @level2type=N'COLUMN',@level2name=N'PlanStartDate' +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ƻʱ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'HJGL_ProductionSchedulingPlan', @level2type=N'COLUMN',@level2name=N'PlanEndDate' +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'HJGL_ProductionSchedulingPlan', @level2type=N'COLUMN',@level2name=N'Days' +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ƽÿ칤' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'HJGL_ProductionSchedulingPlan', @level2type=N'COLUMN',@level2name=N'AvgDailyWorkload' +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ųƻ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'HJGL_ProductionSchedulingPlan' +GO + + diff --git a/SGGL/BLL/BLL.csproj b/SGGL/BLL/BLL.csproj index e1b6c6a9..41380b65 100644 --- a/SGGL/BLL/BLL.csproj +++ b/SGGL/BLL/BLL.csproj @@ -407,6 +407,7 @@ + diff --git a/SGGL/BLL/HJGL/PreDesign/ProductionSchedulingPlanService.cs b/SGGL/BLL/HJGL/PreDesign/ProductionSchedulingPlanService.cs new file mode 100644 index 00000000..878660bf --- /dev/null +++ b/SGGL/BLL/HJGL/PreDesign/ProductionSchedulingPlanService.cs @@ -0,0 +1,124 @@ +using Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace BLL +{ + /// + /// 排产计划 + /// + public class ProductionSchedulingPlanService + { + /// + /// 根据主键获取排产计划 + /// + /// + /// + public static Model.HJGL_ProductionSchedulingPlan GetProductionSchedulingPlanById(string productionSchedulingPlanId) + { + return Funs.DB.HJGL_ProductionSchedulingPlan.FirstOrDefault(e => e.ProductionSchedulingPlanId == productionSchedulingPlanId); + } + + /// + /// 根据管线Id获取排产计划 + /// + /// + /// + /// + public static Model.HJGL_ProductionSchedulingPlan GetProductionSchedulingPlanByPipelineId(string projectId, string pipelineId) + { + return Funs.DB.HJGL_ProductionSchedulingPlan.FirstOrDefault(e => e.ProjectId == projectId && e.PipelineId == pipelineId); + } + + /// + /// 增加排产计划 + /// + /// + public static void AddProductionSchedulingPlan(Model.HJGL_ProductionSchedulingPlan plan) + { + SGGLDB db = Funs.DB; + Model.HJGL_ProductionSchedulingPlan newPlan = new HJGL_ProductionSchedulingPlan(); + newPlan.ProductionSchedulingPlanId = plan.ProductionSchedulingPlanId; + newPlan.ProjectId = plan.ProjectId; + newPlan.PipelineId = plan.PipelineId; + newPlan.FlowNum = plan.FlowNum; + newPlan.MainItemName = plan.MainItemName; + newPlan.Material = plan.Material; + newPlan.Caliber = plan.Caliber; + newPlan.Dain = plan.Dain; + newPlan.TotalDyne = plan.TotalDyne; + newPlan.TotalPriority = plan.TotalPriority; + newPlan.PriorityTotalDyne = plan.PriorityTotalDyne; + newPlan.PlanStartDate = plan.PlanStartDate; + newPlan.PlanEndDate = plan.PlanEndDate; + newPlan.Days = plan.Days; + newPlan.AvgDailyWorkload = plan.Days; + db.HJGL_ProductionSchedulingPlan.InsertOnSubmit(newPlan); + db.SubmitChanges(); + } + + /// + /// 修改排产计划 + /// + /// + public static void UpdateProductionSchedulingPlan(Model.HJGL_ProductionSchedulingPlan plan) + { + Model.SGGLDB db = Funs.DB; + Model.HJGL_ProductionSchedulingPlan newPlan = db.HJGL_ProductionSchedulingPlan.FirstOrDefault(e => e.ProductionSchedulingPlanId == plan.ProductionSchedulingPlanId); + if (newPlan != null) + { + newPlan.PipelineId = plan.PipelineId; + newPlan.FlowNum = plan.FlowNum; + newPlan.MainItemName = plan.MainItemName; + newPlan.Material = plan.Material; + newPlan.Caliber = plan.Caliber; + newPlan.Dain = plan.Dain; + newPlan.TotalDyne = plan.TotalDyne; + newPlan.TotalPriority = plan.TotalPriority; + newPlan.PriorityTotalDyne = plan.PriorityTotalDyne; + newPlan.PlanStartDate = plan.PlanStartDate; + newPlan.PlanEndDate = plan.PlanEndDate; + newPlan.Days = plan.Days; + newPlan.AvgDailyWorkload = plan.Days; + try + { + db.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict); + } + catch (System.Data.Linq.ChangeConflictException ex) + { + foreach (System.Data.Linq.ObjectChangeConflict occ in db.ChangeConflicts) + { + //以下是解决冲突的三种方法,选一种即可 + // 使用当前数据库中的值,覆盖Linq缓存中实体对象的值 + occ.Resolve(System.Data.Linq.RefreshMode.OverwriteCurrentValues); + // 使用Linq缓存中实体对象的值,覆盖当前数据库中的值 + occ.Resolve(System.Data.Linq.RefreshMode.KeepCurrentValues); + // 只更新实体对象中改变的字段的值,其他的保留不变 + occ.Resolve(System.Data.Linq.RefreshMode.KeepChanges); + } + // 这个地方要注意,Catch方法中,我们前面只是指明了怎样来解决冲突,这个地方还需要再次提交更新,这样的话,值 //才会提交到数据库。 + db.SubmitChanges(); + } + } + } + + /// + /// 根据主键删除排产计划 + /// + /// + public static void DeleteProductionSchedulingPlanById(string productionSchedulingPlanId) + { + SGGLDB db = Funs.DB; + Model.HJGL_ProductionSchedulingPlan plan = db.HJGL_ProductionSchedulingPlan.FirstOrDefault(e => e.ProductionSchedulingPlanId == productionSchedulingPlanId); + if (plan != null) + { + db.HJGL_ProductionSchedulingPlan.DeleteOnSubmit(plan); + db.SubmitChanges(); + } + } + } +} diff --git a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj index 7162b274..6c5fc43a 100644 --- a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj +++ b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj @@ -1558,6 +1558,7 @@ + @@ -10584,6 +10585,13 @@ PrePipelineQRCodeIn.aspx + + ProductionSchedulingPlan.aspx + ASPXCodeBehind + + + ProductionSchedulingPlan.aspx + TrainNumberManager.aspx ASPXCodeBehind diff --git a/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx b/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx new file mode 100644 index 00000000..37679631 --- /dev/null +++ b/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx @@ -0,0 +1,171 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ProductionSchedulingPlan.aspx.cs" Inherits="FineUIPro.Web.HJGL.PreDesign.ProductionSchedulingPlan" %> + + + + + + + 排产计划 + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <%-- + + + + --%> + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx.cs b/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx.cs new file mode 100644 index 00000000..45ea38ee --- /dev/null +++ b/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx.cs @@ -0,0 +1,427 @@ +using BLL; +using MiniExcelLibs; +using Model; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Data.SqlTypes; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Web; +using System.Web.WebSockets; + +namespace FineUIPro.Web.HJGL.PreDesign +{ + public partial class ProductionSchedulingPlan : PageBase + { + public int pageSize = 20; + public static DataTable GridDataTable = new DataTable(); + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString(); + this.InitTreeMenu();//加载树 + //HJGL_PipelineComponentService.InitMainItemDownList(drpState, true); + //HJGL_PipelineComponentService.InitMainItemDownProductionStateList(drpProductionState, true); + + //var pipeline = (from x in Funs.DB.HJGL_Pipeline + // where x.ProjectId == this.CurrUser.LoginProjectId + // select x.FlowingSection).Distinct().ToList(); + //this.drpFlowingSection.DataTextField = "Value"; + //this.drpFlowingSection.DataValueField = "Value"; + //this.drpFlowingSection.DataSource = pipeline; + //this.drpFlowingSection.DataBind(); + //Funs.FineUIPleaseSelect(drpFlowingSection); + } + } + + #region 加载树装置-单位-工作区 + /// + /// 加载树 + /// + private void InitTreeMenu() + { + this.tvControlItem.Nodes.Clear(); + + TreeNode rootNode1 = new TreeNode(); + rootNode1.NodeID = "1"; + rootNode1.Text = "建筑工程"; + rootNode1.CommandName = "建筑工程"; + rootNode1.Selectable = false; + this.tvControlItem.Nodes.Add(rootNode1); + + TreeNode rootNode2 = new TreeNode(); + rootNode2.NodeID = "2"; + rootNode2.Text = "安装工程"; + rootNode2.CommandName = "安装工程"; + rootNode2.Expanded = true; + this.tvControlItem.Nodes.Add(rootNode2); + + var pUnits = (from x in Funs.DB.Project_ProjectUnit where x.ProjectId == this.CurrUser.LoginProjectId select x).ToList(); + // 获取当前用户所在单位 + var currUnit = pUnits.FirstOrDefault(x => x.UnitId == this.CurrUser.UnitId); + + var unitWorkList = (from x in Funs.DB.WBS_UnitWork + where x.ProjectId == this.CurrUser.LoginProjectId + && x.SuperUnitWork == null && x.UnitId != null && x.ProjectType != null + select x).ToList(); + + List unitWork1 = null; + List unitWork2 = null; + + //// 当前为施工单位,只能操作本单位的数据 + //if (currUnit != null && currUnit.UnitType == Const.ProjectUnitType_2) + //{ + // unitWork1 = (from x in unitWorkList + // where x.UnitId == this.CurrUser.UnitId && x.ProjectType == "1" + // select x).ToList(); + // unitWork2 = (from x in unitWorkList + // where x.UnitId == this.CurrUser.UnitId && x.ProjectType == "2" + // select x).ToList(); + //} + //else + //{ + unitWork1 = (from x in unitWorkList where x.ProjectType == "1" select x).ToList(); + unitWork2 = (from x in unitWorkList where x.ProjectType == "2" select x).ToList(); + //} + + if (unitWork1.Count() > 0) + { + foreach (var q in unitWork1) + { + int a = (from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == q.UnitWorkId && x.PipeArea == "1" && x.PipelineCode.Contains(txtPipelineCode.Text.Trim()) select x.FlowingSection).Distinct().Count(); + var unitNamesUnitIds = BLL.UnitService.getUnitNamesUnitIds(q.UnitId); + TreeNode tn1 = new TreeNode(); + tn1.NodeID = q.UnitWorkId; + //tn1.Text = q.UnitWorkName + "【" + a.ToString() + "】" + "管线"; + tn1.Text = q.UnitWorkName; + tn1.ToolTip = "施工单位:" + unitNamesUnitIds; + tn1.CommandName = 1 + "|" + Funs.GetEndPageNumber(a, pageSize); + tn1.EnableClickEvent = true; + tn1.EnableExpandEvent = true; + rootNode1.Nodes.Add(tn1); + if (a > 0) + { + // BindNodes(tn1); + TreeNode newNode = new TreeNode(); + newNode.Text = "加载流水段..."; + newNode.NodeID = "加载流水段..."; + tn1.Nodes.Add(newNode); + } + //if (a > 0) + //{ + // BindNodes(tn1); + //} + } + } + if (unitWork2.Count() > 0) + { + foreach (var q in unitWork2) + { + int a = (from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == q.UnitWorkId && x.PipeArea == "1" && x.PipelineCode.Contains(txtPipelineCode.Text.Trim()) select x).Count(); + var unitNamesUnitIds = BLL.UnitService.getUnitNamesUnitIds(q.UnitId); + TreeNode tn2 = new TreeNode(); + tn2.NodeID = q.UnitWorkId; + tn2.Text = q.UnitWorkName + "【" + a.ToString() + "】" + "管线"; + if (q.UnitWorkId == this.hdUnitWorkId.Text) + { + tn2.Expanded = true; + } + tn2.ToolTip = "施工单位:" + unitNamesUnitIds; + tn2.CommandName = 1 + "|" + Funs.GetEndPageNumber(a, pageSize); + tn2.EnableClickEvent = true; + tn2.EnableExpandEvent = true; + rootNode2.Nodes.Add(tn2); + if (a > 0) + { + // BindNodes(tn1); + TreeNode newNode = new TreeNode(); + newNode.Text = "加载流水段..."; + newNode.NodeID = "加载流水段..."; + tn2.Nodes.Add(newNode); + } + //if (a > 0) + //{ + // BindNodes(tn2); + //} + } + } + } + + private void BindNodes(TreeNode node) + { + List pipeline = new List(); + var pipelines = from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.PipeArea == "1" select x; + pipeline = (from x in pipelines + where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == node.NodeID && x.PipelineCode.Contains(this.txtPipelineCode.Text.Trim()) + orderby x.PipelineCode + select x).ToList(); + int pageindex = int.Parse(node.CommandName.Split('|')[0]); + int pageCount = int.Parse(node.CommandName.Split('|')[1]); + if (pageindex <= pageCount) + { + pipeline = pipeline.Skip(pageSize * (pageindex - 1)).Take(pageSize).ToList(); + foreach (var item in pipeline) + { + var comCount = (from x in Funs.DB.HJGL_Pipeline_Component where x.PipelineId == item.PipelineId select x).Count(); + TreeNode newNode = new TreeNode(); + newNode.Text = item.PipelineCode + "【" + comCount.ToString() + " " + "组件" + "】"; + newNode.ToolTip = "管线号【组件数】"; + newNode.CommandName = "管线"; + newNode.NodeID = item.PipelineId; + newNode.EnableClickEvent = true; + node.Nodes.Add(newNode); + } + if (pageindex < pageCount) + { + TreeNode newNode = new TreeNode(); + newNode.Text = "加载"; + newNode.NodeID = SQLHelper.GetNewID(); + newNode.CommandName = "加载"; + newNode.Icon = Icon.ArrowDown; + newNode.EnableClickEvent = true; + node.Nodes.Add(newNode); + } + } + + + } + #endregion + protected void tvControlItem_TreeNodeExpanded(object sender, TreeNodeEventArgs e) + { + if (e.Node.Nodes[0].NodeID == "加载流水段...") + { + e.Node.Nodes.Clear(); + BindNodes(e.Node); + } + + } + #region 点击TreeView + /// + /// 点击TreeView + /// + /// + /// + protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e) + { + if (e.CommandName.Split('|').Length == 2) + { + this.hdUnitWorkId.Text = this.tvControlItem.SelectedNodeID; + } + else if (e.CommandName == "管线") + { + Model.HJGL_Pipeline pipeline = BLL.PipelineService.GetPipelineByPipelineId(this.tvControlItem.SelectedNodeID); + this.hdUnitWorkId.Text = string.Empty; + if (pipeline != null) + { + this.hdUnitWorkId.Text = this.tvControlItem.SelectedNode.ParentNode.NodeID; + SaveProductionSchedulingPlan(); + } + } + else if (e.CommandName == "加载") + { + string CommandName = e.Node.ParentNode.CommandName; + e.Node.ParentNode.CommandName = (int.Parse(CommandName.Split('|')[0]) + 1) + "|" + int.Parse(CommandName.Split('|')[1]); + TreeNode treeNode = e.Node.ParentNode; + treeNode.Nodes.Remove(e.Node); + BindNodes(e.Node.ParentNode); + } + this.BindGrid(); + } + + /// + /// 保存数据 + /// + /// + private void SaveProductionSchedulingPlan() + { + if (!string.IsNullOrEmpty(this.tvControlItem.SelectedNodeID)) + { + var schedulingPlan = BLL.ProductionSchedulingPlanService.GetProductionSchedulingPlanByPipelineId(this.CurrUser.LoginProjectId, this.tvControlItem.SelectedNodeID); + if (schedulingPlan == null) + { + Model.HJGL_ProductionSchedulingPlan newPlan = new HJGL_ProductionSchedulingPlan(); + newPlan.ProductionSchedulingPlanId = SQLHelper.GetNewID(typeof(Model.HJGL_ProductionSchedulingPlan)); + newPlan.ProjectId = this.CurrUser.LoginProjectId; + newPlan.PipelineId = this.tvControlItem.SelectedNodeID; + var pipeline = BLL.PipelineService.GetPipelineByPipelineId(this.tvControlItem.SelectedNodeID); + if (pipeline!=null) + { + newPlan.FlowNum = pipeline.FlowingSection; + if (!string.IsNullOrEmpty(pipeline.UnitWorkId)) + { + newPlan.MainItemName = BLL.UnitWorkService.getUnitWorkByUnitWorkId(pipeline.UnitWorkId).UnitWorkName; + } + if (!string.IsNullOrEmpty(pipeline.PipingClassId)) + { + newPlan.Material = BLL.Base_PipingClassService.GetPipingClassByPipingClassId(pipeline.PipingClassId).SteelType; + } + } + BLL.ProductionSchedulingPlanService.AddProductionSchedulingPlan(newPlan); + } + } + } + #endregion + + #region 数据绑定 + /// + /// 数据绑定 + /// + private void BindGrid() + { + if (tvControlItem.SelectedNode == null) return; + string strSql = @"SELECT p.ProductionSchedulingPlanId, + p.ProjectId, + p.PipelineId, + p.FlowNum, + p.MainItemName, + p.Material, + p.Caliber, + p.Dain, + p.TotalDyne, + p.TotalPriority, + p.PriorityTotalDyne, + p.PlanStartDate, + p.PlanEndDate, + p.Days, + p.AvgDailyWorkload, + pipeline.UnitWorkId + FROM HJGL_ProductionSchedulingPlan p + left join HJGL_Pipeline as pipeline on pipeline.PipelineId = p.PipelineId + WHERE 1=1 "; + List listStr = new List(); + + if (tvControlItem.SelectedNode.CommandName.Split('|').Length == 2) + { + strSql += " and pipeline.UnitWorkId =@UnitWorkId"; + listStr.Add(new SqlParameter("@UnitWorkId", this.tvControlItem.SelectedNodeID)); + + } + else if (tvControlItem.SelectedNode.CommandName == "管线") + { + strSql += " and p.PipelineId = @PipelineId "; + listStr.Add(new SqlParameter("@PipelineId", this.tvControlItem.SelectedNodeID)); + + } + SqlParameter[] parameter = listStr.ToArray(); + DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); + GridDataTable = tb; + // 2.获取当前分页数据 + Grid1.RecordCount = tb.Rows.Count; + var table = this.GetPagedDataTable(Grid1, tb); + Grid1.DataSource = table; + Grid1.DataBind(); + } + #endregion + + #region 分页排序 + #region 页索引改变事件 + /// + /// 页索引改变事件 + /// + /// + /// + protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) + { + BindGrid(); + } + #endregion + + #region 排序 + /// + /// 排序 + /// + /// + /// + protected void Grid1_Sort(object sender, GridSortEventArgs e) + { + BindGrid(); + } + #endregion + + #region 分页选择下拉改变事件 + /// + /// 分页选择下拉改变事件 + /// + /// + /// + protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) + { + Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); + BindGrid(); + } + #endregion + #endregion + + #region 维护事件 + protected void btnSearch_Click(object sender, EventArgs e) + { + BindGrid(); + } + + #endregion + + #region 关闭弹出窗口及刷新页面 + /// + /// 查询 + /// + /// + /// + protected void TextBox_TextChanged(object sender, EventArgs e) + { + this.BindGrid(); + } + protected void btnTreeFind_Click(object sender, EventArgs e) + { + this.InitTreeMenu(); + + } + #endregion + + #region 保存 + /// + /// 保存 + /// + /// + /// + protected void btnSave_Click(object sender, EventArgs e) + { + if (this.Grid1.Rows.Count > 0) + { + foreach (JObject mergedRow in Grid1.GetMergedData()) + { + JObject values = mergedRow.Value("values"); + int i = mergedRow.Value("index"); + string rowId = Grid1.Rows[i].RowID; + var newPlan = BLL.ProductionSchedulingPlanService.GetProductionSchedulingPlanById(rowId); + if (newPlan != null) + { + newPlan.TotalPriority = values.Value("TotalPriority"); + newPlan.PriorityTotalDyne = Funs.GetNewDecimal(values.Value("PriorityTotalDyne")); + newPlan.PlanStartDate = Funs.GetNewDateTime(values.Value("PlanStartDate")); + newPlan.PlanEndDate = Funs.GetNewDateTime(values.Value("PlanEndDate")); + newPlan.Days = Funs.GetNewInt(values.Value("Days")); + newPlan.AvgDailyWorkload = Funs.GetNewDecimal(values.Value("AvgDailyWorkload")); + BLL.ProductionSchedulingPlanService.UpdateProductionSchedulingPlan(newPlan); + } + } + ShowNotify("保存成功!", MessageBoxIcon.Success); + BindGrid(); + } + } + #endregion + + #region 导出 + protected void btnOut_Click(object sender, EventArgs e) + { + + + } + #endregion + } +} \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx.designer.cs b/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx.designer.cs new file mode 100644 index 00000000..7468eff7 --- /dev/null +++ b/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx.designer.cs @@ -0,0 +1,233 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.HJGL.PreDesign +{ + + + public partial class ProductionSchedulingPlan + { + + /// + /// form1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// Panel1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel Panel1; + + /// + /// panelLeftRegion 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel panelLeftRegion; + + /// + /// Toolbar1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar1; + + /// + /// txtPipelineCode 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtPipelineCode; + + /// + /// hdUnitWorkId 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.HiddenField hdUnitWorkId; + + /// + /// btnTreeFind 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnTreeFind; + + /// + /// tvControlItem 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Tree tvControlItem; + + /// + /// panelCenterRegion 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel panelCenterRegion; + + /// + /// Toolbar3 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar3; + + /// + /// ToolbarFill1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarFill ToolbarFill1; + + /// + /// btnSave 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnSave; + + /// + /// btnOut 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnOut; + + /// + /// Grid1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Grid Grid1; + + /// + /// txtTotalPriority 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtTotalPriority; + + /// + /// txtPriorityTotalDyne 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.NumberBox txtPriorityTotalDyne; + + /// + /// txtPlanStartDate 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DatePicker txtPlanStartDate; + + /// + /// txtPlanEndDate 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DatePicker txtPlanEndDate; + + /// + /// txtDays 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.NumberBox txtDays; + + /// + /// txtAvgDailyWorkload 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.NumberBox txtAvgDailyWorkload; + + /// + /// ToolbarSeparator1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1; + + /// + /// ToolbarText1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarText ToolbarText1; + + /// + /// ddlPageSize 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList ddlPageSize; + } +} diff --git a/SGGL/FineUIPro.Web/common/Menu_HJGL.xml b/SGGL/FineUIPro.Web/common/Menu_HJGL.xml index 9eccc8db..be8fc4c9 100644 --- a/SGGL/FineUIPro.Web/common/Menu_HJGL.xml +++ b/SGGL/FineUIPro.Web/common/Menu_HJGL.xml @@ -16,6 +16,7 @@ + diff --git a/SGGL/Model/Model.cs b/SGGL/Model/Model.cs index 9c9e67e6..2a5f02a6 100644 --- a/SGGL/Model/Model.cs +++ b/SGGL/Model/Model.cs @@ -686,6 +686,9 @@ namespace Model partial void InsertHJGL_PreWeldingDaily(HJGL_PreWeldingDaily instance); partial void UpdateHJGL_PreWeldingDaily(HJGL_PreWeldingDaily instance); partial void DeleteHJGL_PreWeldingDaily(HJGL_PreWeldingDaily instance); + partial void InsertHJGL_ProductionSchedulingPlan(HJGL_ProductionSchedulingPlan instance); + partial void UpdateHJGL_ProductionSchedulingPlan(HJGL_ProductionSchedulingPlan instance); + partial void DeleteHJGL_ProductionSchedulingPlan(HJGL_ProductionSchedulingPlan instance); partial void InsertHJGL_RepairRecord(HJGL_RepairRecord instance); partial void UpdateHJGL_RepairRecord(HJGL_RepairRecord instance); partial void DeleteHJGL_RepairRecord(HJGL_RepairRecord instance); @@ -3646,6 +3649,14 @@ namespace Model } } + public System.Data.Linq.Table HJGL_ProductionSchedulingPlan + { + get + { + return this.GetTable(); + } + } + public System.Data.Linq.Table HJGL_RepairRecord { get @@ -24315,6 +24326,8 @@ namespace Model private EntitySet _HJGL_Pipeline; + private EntitySet _HJGL_ProductionSchedulingPlan; + private EntitySet _HJGL_RepairRecord; private EntitySet _HJGL_WeldJoint; @@ -24681,6 +24694,7 @@ namespace Model this._HJGL_MaterialManage = new EntitySet(new Action(this.attach_HJGL_MaterialManage), new Action(this.detach_HJGL_MaterialManage)); this._HJGL_PC_PurgingCleaning = new EntitySet(new Action(this.attach_HJGL_PC_PurgingCleaning), new Action(this.detach_HJGL_PC_PurgingCleaning)); this._HJGL_Pipeline = new EntitySet(new Action(this.attach_HJGL_Pipeline), new Action(this.detach_HJGL_Pipeline)); + this._HJGL_ProductionSchedulingPlan = new EntitySet(new Action(this.attach_HJGL_ProductionSchedulingPlan), new Action(this.detach_HJGL_ProductionSchedulingPlan)); this._HJGL_RepairRecord = new EntitySet(new Action(this.attach_HJGL_RepairRecord), new Action(this.detach_HJGL_RepairRecord)); this._HJGL_WeldJoint = new EntitySet(new Action(this.attach_HJGL_WeldJoint), new Action(this.detach_HJGL_WeldJoint)); this._HJGL_HotProess_Trust = new EntitySet(new Action(this.attach_HJGL_HotProess_Trust), new Action(this.detach_HJGL_HotProess_Trust)); @@ -26252,6 +26266,19 @@ namespace Model } } + [global::System.Data.Linq.Mapping.AssociationAttribute(Name="FK_HJGL_ProductionSchedulingPlan_Base_Project", Storage="_HJGL_ProductionSchedulingPlan", ThisKey="ProjectId", OtherKey="ProjectId", DeleteRule="NO ACTION")] + public EntitySet HJGL_ProductionSchedulingPlan + { + get + { + return this._HJGL_ProductionSchedulingPlan; + } + set + { + this._HJGL_ProductionSchedulingPlan.Assign(value); + } + } + [global::System.Data.Linq.Mapping.AssociationAttribute(Name="FK_HJGL_RepairRecord_Base_Project", Storage="_HJGL_RepairRecord", ThisKey="ProjectId", OtherKey="ProjectId", DeleteRule="NO ACTION")] public EntitySet HJGL_RepairRecord { @@ -28502,6 +28529,18 @@ namespace Model entity.Base_Project = null; } + private void attach_HJGL_ProductionSchedulingPlan(HJGL_ProductionSchedulingPlan entity) + { + this.SendPropertyChanging(); + entity.Base_Project = this; + } + + private void detach_HJGL_ProductionSchedulingPlan(HJGL_ProductionSchedulingPlan entity) + { + this.SendPropertyChanging(); + entity.Base_Project = null; + } + private void attach_HJGL_RepairRecord(HJGL_RepairRecord entity) { this.SendPropertyChanging(); @@ -97327,6 +97366,8 @@ namespace Model private EntitySet _HJGL_PipeLineMat; + private EntitySet _HJGL_ProductionSchedulingPlan; + private EntitySet _HJGL_WeldJoint; private EntitySet _PTP_BItemEndCheck; @@ -97422,6 +97463,7 @@ namespace Model this._HJGL_Pipeline_Component = new EntitySet(new Action(this.attach_HJGL_Pipeline_Component), new Action(this.detach_HJGL_Pipeline_Component)); this._WBS_UnitWork = default(EntityRef); this._HJGL_PipeLineMat = new EntitySet(new Action(this.attach_HJGL_PipeLineMat), new Action(this.detach_HJGL_PipeLineMat)); + this._HJGL_ProductionSchedulingPlan = new EntitySet(new Action(this.attach_HJGL_ProductionSchedulingPlan), new Action(this.detach_HJGL_ProductionSchedulingPlan)); this._HJGL_WeldJoint = new EntitySet(new Action(this.attach_HJGL_WeldJoint), new Action(this.detach_HJGL_WeldJoint)); this._PTP_BItemEndCheck = new EntitySet(new Action(this.attach_PTP_BItemEndCheck), new Action(this.detach_PTP_BItemEndCheck)); this._PTP_ItemEndCheck = new EntitySet(new Action(this.attach_PTP_ItemEndCheck), new Action(this.detach_PTP_ItemEndCheck)); @@ -98458,6 +98500,19 @@ namespace Model } } + [global::System.Data.Linq.Mapping.AssociationAttribute(Name="FK_HJGL_ProductionSchedulingPlan_HJGL_Pipeline", Storage="_HJGL_ProductionSchedulingPlan", ThisKey="PipelineId", OtherKey="PipelineId", DeleteRule="NO ACTION")] + public EntitySet HJGL_ProductionSchedulingPlan + { + get + { + return this._HJGL_ProductionSchedulingPlan; + } + set + { + this._HJGL_ProductionSchedulingPlan.Assign(value); + } + } + [global::System.Data.Linq.Mapping.AssociationAttribute(Name="FK_HJGL_WeldJoint_HJGL_Pipeline", Storage="_HJGL_WeldJoint", ThisKey="PipelineId", OtherKey="PipelineId", DeleteRule="NO ACTION")] public EntitySet HJGL_WeldJoint { @@ -98590,6 +98645,18 @@ namespace Model entity.HJGL_Pipeline = null; } + private void attach_HJGL_ProductionSchedulingPlan(HJGL_ProductionSchedulingPlan entity) + { + this.SendPropertyChanging(); + entity.HJGL_Pipeline = this; + } + + private void detach_HJGL_ProductionSchedulingPlan(HJGL_ProductionSchedulingPlan entity) + { + this.SendPropertyChanging(); + entity.HJGL_Pipeline = null; + } + private void attach_HJGL_WeldJoint(HJGL_WeldJoint entity) { this.SendPropertyChanging(); @@ -99970,6 +100037,486 @@ namespace Model } } + [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.HJGL_ProductionSchedulingPlan")] + public partial class HJGL_ProductionSchedulingPlan : INotifyPropertyChanging, INotifyPropertyChanged + { + + private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); + + private string _ProductionSchedulingPlanId; + + private string _ProjectId; + + private string _PipelineId; + + private string _FlowNum; + + private string _MainItemName; + + private string _Material; + + private string _Caliber; + + private System.Nullable _Dain; + + private System.Nullable _TotalDyne; + + private string _TotalPriority; + + private System.Nullable _PriorityTotalDyne; + + private System.Nullable _PlanStartDate; + + private System.Nullable _PlanEndDate; + + private System.Nullable _Days; + + private System.Nullable _AvgDailyWorkload; + + private EntityRef _Base_Project; + + private EntityRef _HJGL_Pipeline; + + #region 可扩展性方法定义 + partial void OnLoaded(); + partial void OnValidate(System.Data.Linq.ChangeAction action); + partial void OnCreated(); + partial void OnProductionSchedulingPlanIdChanging(string value); + partial void OnProductionSchedulingPlanIdChanged(); + partial void OnProjectIdChanging(string value); + partial void OnProjectIdChanged(); + partial void OnPipelineIdChanging(string value); + partial void OnPipelineIdChanged(); + partial void OnFlowNumChanging(string value); + partial void OnFlowNumChanged(); + partial void OnMainItemNameChanging(string value); + partial void OnMainItemNameChanged(); + partial void OnMaterialChanging(string value); + partial void OnMaterialChanged(); + partial void OnCaliberChanging(string value); + partial void OnCaliberChanged(); + partial void OnDainChanging(System.Nullable value); + partial void OnDainChanged(); + partial void OnTotalDyneChanging(System.Nullable value); + partial void OnTotalDyneChanged(); + partial void OnTotalPriorityChanging(string value); + partial void OnTotalPriorityChanged(); + partial void OnPriorityTotalDyneChanging(System.Nullable value); + partial void OnPriorityTotalDyneChanged(); + partial void OnPlanStartDateChanging(System.Nullable value); + partial void OnPlanStartDateChanged(); + partial void OnPlanEndDateChanging(System.Nullable value); + partial void OnPlanEndDateChanged(); + partial void OnDaysChanging(System.Nullable value); + partial void OnDaysChanged(); + partial void OnAvgDailyWorkloadChanging(System.Nullable value); + partial void OnAvgDailyWorkloadChanged(); + #endregion + + public HJGL_ProductionSchedulingPlan() + { + this._Base_Project = default(EntityRef); + this._HJGL_Pipeline = default(EntityRef); + OnCreated(); + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProductionSchedulingPlanId", DbType="NVarChar(50) NOT NULL", CanBeNull=false, IsPrimaryKey=true)] + public string ProductionSchedulingPlanId + { + get + { + return this._ProductionSchedulingPlanId; + } + set + { + if ((this._ProductionSchedulingPlanId != value)) + { + this.OnProductionSchedulingPlanIdChanging(value); + this.SendPropertyChanging(); + this._ProductionSchedulingPlanId = value; + this.SendPropertyChanged("ProductionSchedulingPlanId"); + this.OnProductionSchedulingPlanIdChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProjectId", DbType="NVarChar(50)")] + public string ProjectId + { + get + { + return this._ProjectId; + } + set + { + if ((this._ProjectId != value)) + { + if (this._Base_Project.HasLoadedOrAssignedValue) + { + throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException(); + } + this.OnProjectIdChanging(value); + this.SendPropertyChanging(); + this._ProjectId = value; + this.SendPropertyChanged("ProjectId"); + this.OnProjectIdChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PipelineId", DbType="NVarChar(50)")] + public string PipelineId + { + get + { + return this._PipelineId; + } + set + { + if ((this._PipelineId != value)) + { + if (this._HJGL_Pipeline.HasLoadedOrAssignedValue) + { + throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException(); + } + this.OnPipelineIdChanging(value); + this.SendPropertyChanging(); + this._PipelineId = value; + this.SendPropertyChanged("PipelineId"); + this.OnPipelineIdChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_FlowNum", DbType="NVarChar(50)")] + public string FlowNum + { + get + { + return this._FlowNum; + } + set + { + if ((this._FlowNum != value)) + { + this.OnFlowNumChanging(value); + this.SendPropertyChanging(); + this._FlowNum = value; + this.SendPropertyChanged("FlowNum"); + this.OnFlowNumChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MainItemName", DbType="NVarChar(50)")] + public string MainItemName + { + get + { + return this._MainItemName; + } + set + { + if ((this._MainItemName != value)) + { + this.OnMainItemNameChanging(value); + this.SendPropertyChanging(); + this._MainItemName = value; + this.SendPropertyChanged("MainItemName"); + this.OnMainItemNameChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Material", DbType="NVarChar(50)")] + public string Material + { + get + { + return this._Material; + } + set + { + if ((this._Material != value)) + { + this.OnMaterialChanging(value); + this.SendPropertyChanging(); + this._Material = value; + this.SendPropertyChanged("Material"); + this.OnMaterialChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Caliber", DbType="NVarChar(50)")] + public string Caliber + { + get + { + return this._Caliber; + } + set + { + if ((this._Caliber != value)) + { + this.OnCaliberChanging(value); + this.SendPropertyChanging(); + this._Caliber = value; + this.SendPropertyChanged("Caliber"); + this.OnCaliberChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Dain", DbType="Decimal(18,2)")] + public System.Nullable Dain + { + get + { + return this._Dain; + } + set + { + if ((this._Dain != value)) + { + this.OnDainChanging(value); + this.SendPropertyChanging(); + this._Dain = value; + this.SendPropertyChanged("Dain"); + this.OnDainChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalDyne", DbType="Decimal(18,2)")] + public System.Nullable TotalDyne + { + get + { + return this._TotalDyne; + } + set + { + if ((this._TotalDyne != value)) + { + this.OnTotalDyneChanging(value); + this.SendPropertyChanging(); + this._TotalDyne = value; + this.SendPropertyChanged("TotalDyne"); + this.OnTotalDyneChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalPriority", DbType="NVarChar(50) NOT NULL", CanBeNull=false)] + public string TotalPriority + { + get + { + return this._TotalPriority; + } + set + { + if ((this._TotalPriority != value)) + { + this.OnTotalPriorityChanging(value); + this.SendPropertyChanging(); + this._TotalPriority = value; + this.SendPropertyChanged("TotalPriority"); + this.OnTotalPriorityChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PriorityTotalDyne", DbType="Decimal(18,2)")] + public System.Nullable PriorityTotalDyne + { + get + { + return this._PriorityTotalDyne; + } + set + { + if ((this._PriorityTotalDyne != value)) + { + this.OnPriorityTotalDyneChanging(value); + this.SendPropertyChanging(); + this._PriorityTotalDyne = value; + this.SendPropertyChanged("PriorityTotalDyne"); + this.OnPriorityTotalDyneChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PlanStartDate", DbType="DateTime")] + public System.Nullable PlanStartDate + { + get + { + return this._PlanStartDate; + } + set + { + if ((this._PlanStartDate != value)) + { + this.OnPlanStartDateChanging(value); + this.SendPropertyChanging(); + this._PlanStartDate = value; + this.SendPropertyChanged("PlanStartDate"); + this.OnPlanStartDateChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PlanEndDate", DbType="DateTime")] + public System.Nullable PlanEndDate + { + get + { + return this._PlanEndDate; + } + set + { + if ((this._PlanEndDate != value)) + { + this.OnPlanEndDateChanging(value); + this.SendPropertyChanging(); + this._PlanEndDate = value; + this.SendPropertyChanged("PlanEndDate"); + this.OnPlanEndDateChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Days", DbType="Int")] + public System.Nullable Days + { + get + { + return this._Days; + } + set + { + if ((this._Days != value)) + { + this.OnDaysChanging(value); + this.SendPropertyChanging(); + this._Days = value; + this.SendPropertyChanged("Days"); + this.OnDaysChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AvgDailyWorkload", DbType="Decimal(18,2)")] + public System.Nullable AvgDailyWorkload + { + get + { + return this._AvgDailyWorkload; + } + set + { + if ((this._AvgDailyWorkload != value)) + { + this.OnAvgDailyWorkloadChanging(value); + this.SendPropertyChanging(); + this._AvgDailyWorkload = value; + this.SendPropertyChanged("AvgDailyWorkload"); + this.OnAvgDailyWorkloadChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.AssociationAttribute(Name="FK_HJGL_ProductionSchedulingPlan_Base_Project", Storage="_Base_Project", ThisKey="ProjectId", OtherKey="ProjectId", IsForeignKey=true)] + public Base_Project Base_Project + { + get + { + return this._Base_Project.Entity; + } + set + { + Base_Project previousValue = this._Base_Project.Entity; + if (((previousValue != value) + || (this._Base_Project.HasLoadedOrAssignedValue == false))) + { + this.SendPropertyChanging(); + if ((previousValue != null)) + { + this._Base_Project.Entity = null; + previousValue.HJGL_ProductionSchedulingPlan.Remove(this); + } + this._Base_Project.Entity = value; + if ((value != null)) + { + value.HJGL_ProductionSchedulingPlan.Add(this); + this._ProjectId = value.ProjectId; + } + else + { + this._ProjectId = default(string); + } + this.SendPropertyChanged("Base_Project"); + } + } + } + + [global::System.Data.Linq.Mapping.AssociationAttribute(Name="FK_HJGL_ProductionSchedulingPlan_HJGL_Pipeline", Storage="_HJGL_Pipeline", ThisKey="PipelineId", OtherKey="PipelineId", IsForeignKey=true)] + public HJGL_Pipeline HJGL_Pipeline + { + get + { + return this._HJGL_Pipeline.Entity; + } + set + { + HJGL_Pipeline previousValue = this._HJGL_Pipeline.Entity; + if (((previousValue != value) + || (this._HJGL_Pipeline.HasLoadedOrAssignedValue == false))) + { + this.SendPropertyChanging(); + if ((previousValue != null)) + { + this._HJGL_Pipeline.Entity = null; + previousValue.HJGL_ProductionSchedulingPlan.Remove(this); + } + this._HJGL_Pipeline.Entity = value; + if ((value != null)) + { + value.HJGL_ProductionSchedulingPlan.Add(this); + this._PipelineId = value.PipelineId; + } + else + { + this._PipelineId = default(string); + } + this.SendPropertyChanged("HJGL_Pipeline"); + } + } + } + + public event PropertyChangingEventHandler PropertyChanging; + + public event PropertyChangedEventHandler PropertyChanged; + + protected virtual void SendPropertyChanging() + { + if ((this.PropertyChanging != null)) + { + this.PropertyChanging(this, emptyChangingEventArgs); + } + } + + protected virtual void SendPropertyChanged(String propertyName) + { + if ((this.PropertyChanged != null)) + { + this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); + } + } + } + [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.HJGL_RepairRecord")] public partial class HJGL_RepairRecord : INotifyPropertyChanging, INotifyPropertyChanged { From 5d4dddd465fe185a3930f7a38e45efd5a32f48f4 Mon Sep 17 00:00:00 2001 From: wendy <408182087@qq.com> Date: Tue, 3 Jun 2025 11:26:24 +0800 Subject: [PATCH 2/2] =?UTF-8?q?20250603=20=E6=8E=92=E4=BA=A7=E8=AE=A1?= =?UTF-8?q?=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../版本日志/SGGLDB_V2025-05-14-001_bwj.sql | 57 ++++ SGGL/BLL/Common/Const.cs | 5 + .../ProductionSchedulingPlanService.cs | 24 +- .../File/Excel/DataOut/排产计划导出模板.xlsx | Bin 0 -> 9565 bytes .../PreDesign/ProductionSchedulingPlan.aspx | 26 +- .../ProductionSchedulingPlan.aspx.cs | 273 ++++++++++++------ SGGL/Model/Model.cs | 163 ++++++++++- 7 files changed, 433 insertions(+), 115 deletions(-) create mode 100644 DataBase/版本日志/SGGLDB_V2025-05-14-001_bwj.sql create mode 100644 SGGL/FineUIPro.Web/File/Excel/DataOut/排产计划导出模板.xlsx diff --git a/DataBase/版本日志/SGGLDB_V2025-05-14-001_bwj.sql b/DataBase/版本日志/SGGLDB_V2025-05-14-001_bwj.sql new file mode 100644 index 00000000..87bbe5db --- /dev/null +++ b/DataBase/版本日志/SGGLDB_V2025-05-14-001_bwj.sql @@ -0,0 +1,57 @@ + +CREATE VIEW [dbo].[View_HJGL_ProductionSchedulingPlanStatistics] +as +/************Ųƻͳ**********/ +SELECT distinct unitWork.UnitWorkId, +unitWork.UnitWorkCode, +unitWork.UnitWorkName, +unitWork.ProjectId, +pipeline.FlowingSection, +(case p.SteelType when '1' then '̼' when '2' then '' when '3' then '' when '4' then 'ͺϽ' when '5' then 'Ͻ' when '6' then 'ѺϽ' when '7' then '' end) as Material, +'<100' as Caliber, +isnull(weldJoint.Dia,0) as Dia +FROM WBS_UnitWork AS unitWork +LEFT JOIN (select FlowingSection,UnitWorkId from HJGL_Pipeline where PipeArea='1') as pipeline on pipeline.UnitWorkId = unitWork.UnitWorkId + +LEFT JOIN (select distinct Base_Material.SteelType,UnitWorkId from HJGL_WeldJoint + left join HJGL_Pipeline on HJGL_Pipeline.PipelineId = HJGL_WeldJoint.PipelineId + left join Base_Material on Base_Material.MaterialId = HJGL_WeldJoint.Material1Id + where PipeArea='1' and HJGL_WeldJoint.JointAttribute='Ԥƿ') as p on p.UnitWorkId = unitWork.UnitWorkId +-- +LEFT JOIN (select sum(Dia) as Dia,HJGL_Pipeline.UnitWorkId,HJGL_Pipeline.FlowingSection,Base_Material.SteelType,HJGL_WeldJoint.DNDia from HJGL_WeldJoint + left join HJGL_Pipeline on HJGL_Pipeline.PipelineId = HJGL_WeldJoint.PipelineId + left join Base_Material on Base_Material.MaterialId = HJGL_WeldJoint.Material1Id + where HJGL_Pipeline.PipeArea='1' and HJGL_WeldJoint.JointAttribute='Ԥƿ' + and cast(SUBSTRING(HJGL_WeldJoint.DNDia,CHARINDEX('N',HJGL_WeldJoint.DNDia)+1,len(HJGL_WeldJoint.DNDia)-charindex('N',HJGL_WeldJoint.DNDia)) as int)<100 + group by HJGL_Pipeline.UnitWorkId,HJGL_Pipeline.FlowingSection,Base_Material.SteelType,HJGL_WeldJoint.DNDia) as weldJoint on weldJoint.UnitWorkId =unitWork.UnitWorkId + and weldJoint.FlowingSection = pipeline.FlowingSection + +union + +SELECT distinct unitWork.UnitWorkId, +unitWork.UnitWorkCode, +unitWork.UnitWorkName, +unitWork.ProjectId, +pipeline.FlowingSection, +(case p.SteelType when '1' then '̼' when '2' then '' when '3' then '' when '4' then 'ͺϽ' when '5' then 'Ͻ' when '6' then 'ѺϽ' when '7' then '' end) as Material, +'100' as Caliber, +isnull(weldJoint.Dia,0) as Dia +FROM WBS_UnitWork AS unitWork +LEFT JOIN (select FlowingSection,UnitWorkId from HJGL_Pipeline where PipeArea='1') as pipeline on pipeline.UnitWorkId = unitWork.UnitWorkId + +LEFT JOIN (select distinct Base_Material.SteelType,UnitWorkId from HJGL_WeldJoint + left join HJGL_Pipeline on HJGL_Pipeline.PipelineId = HJGL_WeldJoint.PipelineId + left join Base_Material on Base_Material.MaterialId = HJGL_WeldJoint.Material1Id + where PipeArea='1' and HJGL_WeldJoint.JointAttribute='Ԥƿ') as p on p.UnitWorkId = unitWork.UnitWorkId + +LEFT JOIN (select sum(Dia) as Dia,HJGL_Pipeline.UnitWorkId,HJGL_Pipeline.FlowingSection,Base_Material.SteelType,HJGL_WeldJoint.DNDia from HJGL_WeldJoint + left join HJGL_Pipeline on HJGL_Pipeline.PipelineId = HJGL_WeldJoint.PipelineId + left join Base_Material on Base_Material.MaterialId = HJGL_WeldJoint.Material1Id + where HJGL_Pipeline.PipeArea='1' and HJGL_WeldJoint.JointAttribute='Ԥƿ' + and cast(SUBSTRING(HJGL_WeldJoint.DNDia,CHARINDEX('N',HJGL_WeldJoint.DNDia)+1,len(HJGL_WeldJoint.DNDia)-charindex('N',HJGL_WeldJoint.DNDia)) as int)>=100 + group by HJGL_Pipeline.UnitWorkId,HJGL_Pipeline.FlowingSection,Base_Material.SteelType,HJGL_WeldJoint.DNDia) as weldJoint on weldJoint.UnitWorkId =unitWork.UnitWorkId + and weldJoint.FlowingSection = pipeline.FlowingSection + +GO + + diff --git a/SGGL/BLL/Common/Const.cs b/SGGL/BLL/Common/Const.cs index 5a9981a1..00cd10f3 100644 --- a/SGGL/BLL/Common/Const.cs +++ b/SGGL/BLL/Common/Const.cs @@ -4801,6 +4801,11 @@ namespace BLL /// public const string Pipeline_ComponentPath = "File\\Excel\\DataIn\\组件管理二维码信息导入.xlsx"; + /// + /// 排产计划导出模板 + /// + public const string HJGL_ProductionSchedulingPlanPath = "File\\Excel\\DataOut\\排产计划导出模板.xlsx"; + #region 焊接报表 /// diff --git a/SGGL/BLL/HJGL/PreDesign/ProductionSchedulingPlanService.cs b/SGGL/BLL/HJGL/PreDesign/ProductionSchedulingPlanService.cs index 878660bf..ae787f4c 100644 --- a/SGGL/BLL/HJGL/PreDesign/ProductionSchedulingPlanService.cs +++ b/SGGL/BLL/HJGL/PreDesign/ProductionSchedulingPlanService.cs @@ -23,22 +23,17 @@ namespace BLL return Funs.DB.HJGL_ProductionSchedulingPlan.FirstOrDefault(e => e.ProductionSchedulingPlanId == productionSchedulingPlanId); } - /// - /// 根据管线Id获取排产计划 - /// - /// - /// - /// - public static Model.HJGL_ProductionSchedulingPlan GetProductionSchedulingPlanByPipelineId(string projectId, string pipelineId) + + public static Model.HJGL_ProductionSchedulingPlan GetProductionSchedulingPlan(string loginProjectId, string flowingSection, string unitWorkName, string material, string caliber) { - return Funs.DB.HJGL_ProductionSchedulingPlan.FirstOrDefault(e => e.ProjectId == projectId && e.PipelineId == pipelineId); + return Funs.DB.HJGL_ProductionSchedulingPlan.FirstOrDefault(e => e.ProjectId == loginProjectId && e.FlowNum == flowingSection && e.MainItemName == unitWorkName && e.Caliber == caliber); } - /// - /// 增加排产计划 - /// - /// - public static void AddProductionSchedulingPlan(Model.HJGL_ProductionSchedulingPlan plan) + /// + /// 增加排产计划 + /// + /// + public static void AddProductionSchedulingPlan(Model.HJGL_ProductionSchedulingPlan plan) { SGGLDB db = Funs.DB; Model.HJGL_ProductionSchedulingPlan newPlan = new HJGL_ProductionSchedulingPlan(); @@ -83,7 +78,7 @@ namespace BLL newPlan.PlanStartDate = plan.PlanStartDate; newPlan.PlanEndDate = plan.PlanEndDate; newPlan.Days = plan.Days; - newPlan.AvgDailyWorkload = plan.Days; + newPlan.AvgDailyWorkload = plan.AvgDailyWorkload; try { db.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict); @@ -120,5 +115,6 @@ namespace BLL db.SubmitChanges(); } } + } } diff --git a/SGGL/FineUIPro.Web/File/Excel/DataOut/排产计划导出模板.xlsx b/SGGL/FineUIPro.Web/File/Excel/DataOut/排产计划导出模板.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..af9e36437101b17c292ac65a73fb6f30e5fc47e5 GIT binary patch literal 9565 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 literal 0 HcmV?d00001 diff --git a/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx b/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx index 37679631..c6f83703 100644 --- a/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx +++ b/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx @@ -53,7 +53,7 @@ @@ -103,45 +103,41 @@ DataField="PriorityTotalDyne" SortField="PriorityTotalDyne" FieldType="Float" HeaderTextAlign="Center" TextAlign="Left" Width="120px"> - + - + - + - + - + - <%-- - - - - --%> + + + @@ -166,6 +162,10 @@ function reloadGrid() { __doPostBack(null, 'reloadGrid'); } + + function onGridDataLoad(event) { + this.mergeColumns(['FlowNum', 'MainItemName', 'Material', 'TotalDyne']); + } diff --git a/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx.cs b/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx.cs index 45ea38ee..54a1c395 100644 --- a/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx.cs +++ b/SGGL/FineUIPro.Web/HJGL/PreDesign/ProductionSchedulingPlan.aspx.cs @@ -26,17 +26,6 @@ namespace FineUIPro.Web.HJGL.PreDesign { this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString(); this.InitTreeMenu();//加载树 - //HJGL_PipelineComponentService.InitMainItemDownList(drpState, true); - //HJGL_PipelineComponentService.InitMainItemDownProductionStateList(drpProductionState, true); - - //var pipeline = (from x in Funs.DB.HJGL_Pipeline - // where x.ProjectId == this.CurrUser.LoginProjectId - // select x.FlowingSection).Distinct().ToList(); - //this.drpFlowingSection.DataTextField = "Value"; - //this.drpFlowingSection.DataValueField = "Value"; - //this.drpFlowingSection.DataSource = pipeline; - //this.drpFlowingSection.DataBind(); - //Funs.FineUIPleaseSelect(drpFlowingSection); } } @@ -123,11 +112,12 @@ namespace FineUIPro.Web.HJGL.PreDesign { foreach (var q in unitWork2) { - int a = (from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == q.UnitWorkId && x.PipeArea == "1" && x.PipelineCode.Contains(txtPipelineCode.Text.Trim()) select x).Count(); + int a = (from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == q.UnitWorkId && x.PipeArea == "1" && x.PipelineCode.Contains(txtPipelineCode.Text.Trim()) select x.FlowingSection).Distinct().Count(); var unitNamesUnitIds = BLL.UnitService.getUnitNamesUnitIds(q.UnitId); TreeNode tn2 = new TreeNode(); tn2.NodeID = q.UnitWorkId; - tn2.Text = q.UnitWorkName + "【" + a.ToString() + "】" + "管线"; + //tn2.Text = q.UnitWorkName + "【" + a.ToString() + "】" + "管线"; + tn2.Text = q.UnitWorkName; if (q.UnitWorkId == this.hdUnitWorkId.Text) { tn2.Expanded = true; @@ -155,42 +145,42 @@ namespace FineUIPro.Web.HJGL.PreDesign private void BindNodes(TreeNode node) { - List pipeline = new List(); - var pipelines = from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.PipeArea == "1" select x; - pipeline = (from x in pipelines - where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == node.NodeID && x.PipelineCode.Contains(this.txtPipelineCode.Text.Trim()) - orderby x.PipelineCode - select x).ToList(); - int pageindex = int.Parse(node.CommandName.Split('|')[0]); - int pageCount = int.Parse(node.CommandName.Split('|')[1]); - if (pageindex <= pageCount) + List flowingSection = new List(); + //List pipeline = new List(); + var list = (from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.PipeArea == "1" && x.UnitWorkId == node.NodeID && x.PipelineCode.Contains(this.txtPipelineCode.Text.Trim()) select x.FlowingSection).ToList(); + flowingSection = list.Where(x => !string.IsNullOrWhiteSpace(x) == true).Distinct().OrderBy(x => x).ToList(); + //int pageindex = int.Parse(node.CommandName.Split('|')[0]); + //int pageCount = int.Parse(node.CommandName.Split('|')[1]); + //if (pageindex <= pageCount) + //{ + // flowingSection = flowingSection.Skip(pageSize * (pageindex - 1)).Take(pageSize).ToList(); + foreach (var item in flowingSection) { - pipeline = pipeline.Skip(pageSize * (pageindex - 1)).Take(pageSize).ToList(); - foreach (var item in pipeline) - { - var comCount = (from x in Funs.DB.HJGL_Pipeline_Component where x.PipelineId == item.PipelineId select x).Count(); - TreeNode newNode = new TreeNode(); - newNode.Text = item.PipelineCode + "【" + comCount.ToString() + " " + "组件" + "】"; - newNode.ToolTip = "管线号【组件数】"; - newNode.CommandName = "管线"; - newNode.NodeID = item.PipelineId; - newNode.EnableClickEvent = true; - node.Nodes.Add(newNode); - } - if (pageindex < pageCount) - { - TreeNode newNode = new TreeNode(); - newNode.Text = "加载"; - newNode.NodeID = SQLHelper.GetNewID(); - newNode.CommandName = "加载"; - newNode.Icon = Icon.ArrowDown; - newNode.EnableClickEvent = true; - node.Nodes.Add(newNode); - } + //var comCount = (from x in Funs.DB.HJGL_Pipeline_Component where x.PipelineId == item.PipelineId select x).Count(); + TreeNode newNode = new TreeNode(); + //newNode.Text = item.PipelineCode + "【" + comCount.ToString() + " " + "组件" + "】"; + + newNode.Text = item; + newNode.ToolTip = "流水段"; + newNode.CommandName = "流水段"; + newNode.NodeID = SQLHelper.GetNewID(); + newNode.EnableClickEvent = true; + node.Nodes.Add(newNode); } - - + // if (pageindex < pageCount) + // { + // TreeNode newNode = new TreeNode(); + // newNode.Text = "加载"; + // newNode.NodeID = "加载"; + // //newNode.NodeID = SQLHelper.GetNewID(); + // newNode.CommandName = "加载"; + // newNode.Icon = Icon.ArrowDown; + // newNode.EnableClickEvent = true; + // node.Nodes.Add(newNode); + // } + //} } + #endregion protected void tvControlItem_TreeNodeExpanded(object sender, TreeNodeEventArgs e) { @@ -209,13 +199,9 @@ namespace FineUIPro.Web.HJGL.PreDesign /// protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e) { - if (e.CommandName.Split('|').Length == 2) + if (e.CommandName == "流水段") { - this.hdUnitWorkId.Text = this.tvControlItem.SelectedNodeID; - } - else if (e.CommandName == "管线") - { - Model.HJGL_Pipeline pipeline = BLL.PipelineService.GetPipelineByPipelineId(this.tvControlItem.SelectedNodeID); + Model.HJGL_Pipeline pipeline = BLL.PipelineService.GetPipelineByFlowingSection(this.tvControlItem.SelectedNode.Text); this.hdUnitWorkId.Text = string.Empty; if (pipeline != null) { @@ -223,14 +209,6 @@ namespace FineUIPro.Web.HJGL.PreDesign SaveProductionSchedulingPlan(); } } - else if (e.CommandName == "加载") - { - string CommandName = e.Node.ParentNode.CommandName; - e.Node.ParentNode.CommandName = (int.Parse(CommandName.Split('|')[0]) + 1) + "|" + int.Parse(CommandName.Split('|')[1]); - TreeNode treeNode = e.Node.ParentNode; - treeNode.Nodes.Remove(e.Node); - BindNodes(e.Node.ParentNode); - } this.BindGrid(); } @@ -242,27 +220,24 @@ namespace FineUIPro.Web.HJGL.PreDesign { if (!string.IsNullOrEmpty(this.tvControlItem.SelectedNodeID)) { - var schedulingPlan = BLL.ProductionSchedulingPlanService.GetProductionSchedulingPlanByPipelineId(this.CurrUser.LoginProjectId, this.tvControlItem.SelectedNodeID); - if (schedulingPlan == null) + List lists = (from x in Funs.DB.View_HJGL_ProductionSchedulingPlanStatistics.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.FlowingSection == this.tvControlItem.SelectedNode.Text) select x).ToList(); + foreach (var item in lists) { - Model.HJGL_ProductionSchedulingPlan newPlan = new HJGL_ProductionSchedulingPlan(); - newPlan.ProductionSchedulingPlanId = SQLHelper.GetNewID(typeof(Model.HJGL_ProductionSchedulingPlan)); - newPlan.ProjectId = this.CurrUser.LoginProjectId; - newPlan.PipelineId = this.tvControlItem.SelectedNodeID; - var pipeline = BLL.PipelineService.GetPipelineByPipelineId(this.tvControlItem.SelectedNodeID); - if (pipeline!=null) + var plan = BLL.ProductionSchedulingPlanService.GetProductionSchedulingPlan(this.CurrUser.LoginProjectId, item.FlowingSection, item.UnitWorkName, item.Material, item.Caliber); + if (plan == null) { - newPlan.FlowNum = pipeline.FlowingSection; - if (!string.IsNullOrEmpty(pipeline.UnitWorkId)) - { - newPlan.MainItemName = BLL.UnitWorkService.getUnitWorkByUnitWorkId(pipeline.UnitWorkId).UnitWorkName; - } - if (!string.IsNullOrEmpty(pipeline.PipingClassId)) - { - newPlan.Material = BLL.Base_PipingClassService.GetPipingClassByPipingClassId(pipeline.PipingClassId).SteelType; - } + Model.HJGL_ProductionSchedulingPlan newPlan = new HJGL_ProductionSchedulingPlan(); + newPlan.ProductionSchedulingPlanId = SQLHelper.GetNewID(typeof(Model.HJGL_ProductionSchedulingPlan)); + newPlan.ProjectId = this.CurrUser.LoginProjectId; + //newPlan.PipelineId = this.tvControlItem.SelectedNodeID; + newPlan.FlowNum = item.FlowingSection; + newPlan.MainItemName = item.UnitWorkName; + newPlan.Material = item.Material; + newPlan.Caliber = item.Caliber; + newPlan.Dain = item.Dia; + newPlan.TotalDyne = lists.Sum(x => x.Dia); + BLL.ProductionSchedulingPlanService.AddProductionSchedulingPlan(newPlan); } - BLL.ProductionSchedulingPlanService.AddProductionSchedulingPlan(newPlan); } } } @@ -289,23 +264,21 @@ namespace FineUIPro.Web.HJGL.PreDesign p.PlanStartDate, p.PlanEndDate, p.Days, - p.AvgDailyWorkload, - pipeline.UnitWorkId + p.AvgDailyWorkload FROM HJGL_ProductionSchedulingPlan p - left join HJGL_Pipeline as pipeline on pipeline.PipelineId = p.PipelineId WHERE 1=1 "; List listStr = new List(); if (tvControlItem.SelectedNode.CommandName.Split('|').Length == 2) { - strSql += " and pipeline.UnitWorkId =@UnitWorkId"; - listStr.Add(new SqlParameter("@UnitWorkId", this.tvControlItem.SelectedNodeID)); + strSql += " and p.MainItemName =@UnitWorkId"; + listStr.Add(new SqlParameter("@UnitWorkId", this.tvControlItem.SelectedNode.Text)); } - else if (tvControlItem.SelectedNode.CommandName == "管线") + else if (tvControlItem.SelectedNode.CommandName == "流水段") { - strSql += " and p.PipelineId = @PipelineId "; - listStr.Add(new SqlParameter("@PipelineId", this.tvControlItem.SelectedNodeID)); + strSql += " and p.FlowNum = @FlowNum "; + listStr.Add(new SqlParameter("@FlowNum", this.tvControlItem.SelectedNode.Text)); } SqlParameter[] parameter = listStr.ToArray(); @@ -419,8 +392,134 @@ namespace FineUIPro.Web.HJGL.PreDesign #region 导出 protected void btnOut_Click(object sender, EventArgs e) { - + string rootPath = Server.MapPath("~/"); + string initTemplatePath = Const.HJGL_ProductionSchedulingPlanPath; + string uploadfilepath = string.Empty; + string newUrl = string.Empty; + uploadfilepath = rootPath + initTemplatePath; + var lists = (from x in Funs.DB.HJGL_ProductionSchedulingPlan + where x.ProjectId == this.CurrUser.LoginProjectId + select x); + + if (tvControlItem.SelectedNode.CommandName.Split('|').Length == 2) + { + lists = lists.Where(x => x.MainItemName == this.tvControlItem.SelectedNode.Text); + } + else if (tvControlItem.SelectedNode.CommandName == "流水段") + { + lists = lists.Where(x => x.FlowNum == this.tvControlItem.SelectedNode.Text); + } + + if (lists != null) + { + newUrl = uploadfilepath.Replace("排产计划导出模板", "排产计划(" + DateTime.Now.ToString("yyyyMMdd") + ")"); + if (File.Exists(newUrl)) + { + File.Delete(newUrl); + } + File.Copy(uploadfilepath, newUrl); + // 第一步:读取文件流 + NPOI.SS.UserModel.IWorkbook workbook; + using (FileStream stream = new FileStream(newUrl, FileMode.Open, FileAccess.Read)) + { + workbook = new NPOI.XSSF.UserModel.XSSFWorkbook(stream); + //workbook = new NPOI.HSSF.UserModel.HSSFWorkbook(stream); + } + // 创建单元格样式 + NPOI.SS.UserModel.ICellStyle cellStyle = workbook.CreateCellStyle(); + cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; + cellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; + cellStyle.WrapText = true;//自动换行 + var font = workbook.CreateFont(); + font.FontHeightInPoints = 11; + cellStyle.SetFont(font); + // 第二步:创建新数据行 + NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt(0); + NPOI.SS.UserModel.IRow row = sheet.GetRow(0); + NPOI.SS.UserModel.ICell cell; + int i = 1; + foreach (var item in lists) + { + // 第二步:创建新数据行 + row = sheet.CreateRow(i); + // 添加数据 + cell = row.CreateCell(0); + cell.CellStyle = cellStyle; + cell.SetCellValue(item.FlowNum);//流水段号 + + cell = row.CreateCell(1); + cell.CellStyle = cellStyle; + cell.SetCellValue(item.MainItemName);//主项名称 + + cell = row.CreateCell(2); + cell.CellStyle = cellStyle; + cell.SetCellValue(item.Material);//材质 + + cell = row.CreateCell(3); + cell.CellStyle = cellStyle; + cell.SetCellValue(item.Caliber);//口径 + + cell = row.CreateCell(4); + cell.CellStyle = cellStyle; + cell.SetCellValue(item.Dain.HasValue ? item.Dain.ToString() : "");//达因数 + + cell = row.CreateCell(5); + cell.CellStyle = cellStyle; + cell.SetCellValue(item.TotalDyne.HasValue?item.TotalDyne.ToString():"");//总达因数 + + cell = row.CreateCell(6); + cell.CellStyle = cellStyle; + cell.SetCellValue(item.TotalPriority);//总优先级 + + cell = row.CreateCell(7); + cell.CellStyle = cellStyle; + cell.SetCellValue(item.PriorityTotalDyne.HasValue ? item.PriorityTotalDyne.ToString() : "");//优先级总达因 + + cell = row.CreateCell(8); + cell.CellStyle = cellStyle; + cell.SetCellValue(item.PlanStartDate.HasValue ? string.Format("{0:yyyy-MM-dd}", item.PlanStartDate) : "");//计划开始时间 + + cell = row.CreateCell(9); + cell.CellStyle = cellStyle; + cell.SetCellValue(item.PlanEndDate.HasValue ? string.Format("{0:yyyy-MM-dd}", item.PlanEndDate) : "");//计划结束时间 + + cell = row.CreateCell(10); + cell.CellStyle = cellStyle; + cell.SetCellValue(item.Days.HasValue?item.Days.ToString():"");//天数 + + cell = row.CreateCell(11); + cell.CellStyle = cellStyle; + cell.SetCellValue(item.AvgDailyWorkload.HasValue ? item.AvgDailyWorkload.ToString():"");//平均每天工作量 + + i++; + } + // 第三步:写入文件流 + using (FileStream stream = new FileStream(newUrl, FileMode.Create, FileAccess.Write)) + { + workbook.Write(stream); + workbook.Close(); + } + string fileName = Path.GetFileName(newUrl); + FileInfo info = new FileInfo(newUrl); + long fileSize = info.Length; + Response.Clear(); + Response.ContentType = "application/x-zip-compressed"; + Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); + Response.AddHeader("Content-Length", fileSize.ToString()); + Response.TransmitFile(newUrl, 0, fileSize); + Response.Flush(); + Response.Close(); + File.Delete(newUrl); + } + else + { + Alert.ShowInTop("当前无记录,无法导出!", MessageBoxIcon.Warning); + } } #endregion } diff --git a/SGGL/Model/Model.cs b/SGGL/Model/Model.cs index 2a5f02a6..8ac734ad 100644 --- a/SGGL/Model/Model.cs +++ b/SGGL/Model/Model.cs @@ -6857,6 +6857,14 @@ namespace Model } } + public System.Data.Linq.Table View_HJGL_ProductionSchedulingPlanStatistics + { + get + { + return this.GetTable(); + } + } + public System.Data.Linq.Table View_HJGL_WeldingTask { get @@ -100308,7 +100316,7 @@ namespace Model } } - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalPriority", DbType="NVarChar(50) NOT NULL", CanBeNull=false)] + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalPriority", DbType="NVarChar(50)")] public string TotalPriority { get @@ -286333,6 +286341,159 @@ namespace Model } } + [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.View_HJGL_ProductionSchedulingPlanStatistics")] + public partial class View_HJGL_ProductionSchedulingPlanStatistics + { + + private string _UnitWorkId; + + private string _UnitWorkCode; + + private string _UnitWorkName; + + private string _ProjectId; + + private string _FlowingSection; + + private string _Material; + + private string _Caliber; + + private decimal _Dia; + + public View_HJGL_ProductionSchedulingPlanStatistics() + { + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UnitWorkId", DbType="NVarChar(50) NOT NULL", CanBeNull=false)] + public string UnitWorkId + { + get + { + return this._UnitWorkId; + } + set + { + if ((this._UnitWorkId != value)) + { + this._UnitWorkId = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UnitWorkCode", DbType="NVarChar(10)")] + public string UnitWorkCode + { + get + { + return this._UnitWorkCode; + } + set + { + if ((this._UnitWorkCode != value)) + { + this._UnitWorkCode = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UnitWorkName", DbType="NVarChar(30)")] + public string UnitWorkName + { + get + { + return this._UnitWorkName; + } + set + { + if ((this._UnitWorkName != value)) + { + this._UnitWorkName = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProjectId", DbType="NVarChar(50)")] + public string ProjectId + { + get + { + return this._ProjectId; + } + set + { + if ((this._ProjectId != value)) + { + this._ProjectId = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_FlowingSection", DbType="NVarChar(200)")] + public string FlowingSection + { + get + { + return this._FlowingSection; + } + set + { + if ((this._FlowingSection != value)) + { + this._FlowingSection = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Material", DbType="VarChar(8)")] + public string Material + { + get + { + return this._Material; + } + set + { + if ((this._Material != value)) + { + this._Material = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Caliber", DbType="VarChar(5) NOT NULL", CanBeNull=false)] + public string Caliber + { + get + { + return this._Caliber; + } + set + { + if ((this._Caliber != value)) + { + this._Caliber = value; + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Dia", DbType="Decimal(38,3) NOT NULL")] + public decimal Dia + { + get + { + return this._Dia; + } + set + { + if ((this._Dia != value)) + { + this._Dia = value; + } + } + } + } + [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.View_HJGL_WeldingTask")] public partial class View_HJGL_WeldingTask {