This commit is contained in:
2024-10-12 10:00:57 +08:00
14 changed files with 124 additions and 51 deletions
+7 -5
View File
@@ -12,7 +12,7 @@ namespace BLL
{
public class TwArrivalStatisticsService
{
public static List<Tw_ArrivalStatisticsOutPut> GetStatistics(string projectid,string materialCode)
public static List<Tw_ArrivalStatisticsOutPut> GetStatistics(string projectid,string materialCode,string WarehouseCode)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
@@ -39,14 +39,16 @@ namespace BLL
g.Key,
RealNum = g.Sum(x => x.ActNum) ?? 0,
};
var tw_MaterialStock=from x in db.Tw_MaterialStock
where x.WarehouseCode==WarehouseCode
select x;
var StatisticsList =(from x in NeedOutMateriaList
join y in RealInMateriaList on x.Key equals y.Key into gg
from y in gg.DefaultIfEmpty()
join z in db.HJGL_MaterialCodeLib on x.Key equals z.MaterialCode into zz
from z in zz.DefaultIfEmpty()
join m in db.Tw_MaterialStock on x.Key equals m.PipeLineMatCode into mm
from m in mm.DefaultIfEmpty()
join m in tw_MaterialStock on x.Key equals m.PipeLineMatCode into mm
from m in mm.DefaultIfEmpty()
select new Tw_ArrivalStatisticsOutPut
{
MaterialCode = x.Key,
@@ -80,7 +82,7 @@ namespace BLL
join y in db.HJGL_MaterialCodeLib on x.MaterialCode equals y.MaterialCode
join z in db.HJGL_Pipeline on x.PipelineId equals z.PipelineId
join m in db.WBS_UnitWork on z.UnitWorkId equals m.UnitWorkId
where z.ProjectId == projectid && pipelineIds.Contains(z.PipelineId)
where z.ProjectId == projectid && pipelineIds.Contains(z.PipelineId) && x.PrefabricatedComponents!= "" //x.PrefabricatedComponents!="" 用于筛选非散件材料
select new Tw_PipeMatMatchOutput
{
Id= Guid.NewGuid().ToString(),
+1 -1
View File
@@ -520,7 +520,7 @@ namespace BLL
{
//生成规则是20240919-unitcode-AP-GR01
string cusBillCode = string.Format("{0:yyyyMMdd}", DateTime.Now) + unitcode + "-AP-GR";
string cusBillCode = string.Format("{0:yyyyMMdd}", DateTime.Now) + "-"+unitcode + "-AP-GR";
var queryAll = new Tw_InOutMasterOutput()
{
ProjectId = projectid,
+1
View File
@@ -32,6 +32,7 @@ namespace BLL
(string.IsNullOrEmpty(table.Id) || x.Id.Contains(table.Id)) &&
(string.IsNullOrEmpty(table.WarehouseCode) || x.WarehouseCode.Contains(table.WarehouseCode)) &&
(string.IsNullOrEmpty(table.PipeLineMatCode) || x.PipeLineMatCode.Contains(table.PipeLineMatCode)) &&
(string.IsNullOrEmpty(table.MaterialUnit) || mat.MaterialUnit.Contains(table.MaterialUnit)) &&
(string.IsNullOrEmpty(table.ProjectId) || x.ProjectId.Contains(table.ProjectId))
select new Model.Tw_MaterialStockOutput
{
@@ -37,6 +37,9 @@
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
<f:DropDownList ID="drpWarehouse" runat="server" Label="仓库" AutoSelectFirstItem="true"
LabelWidth="70px" LabelAlign="Right" Width="170px">
</f:DropDownList>
<f:TextBox runat="server" ID="txtMaterialCode" Label="材料编码" EmptyText="输入查询条件" Width="230px" LabelWidth="100px"></f:TextBox>
<f:Label runat="server" ID="lbRate"></f:Label>
<f:ToolbarFill ID="ToolbarFill1" runat="server">
@@ -68,19 +71,19 @@
<f:RenderField Width="150px" ColumnID="MaterialSpec" DataField="MaterialSpec" SortField="MaterialSpec"
FieldType="String" HeaderText="规格" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="MaterialUnit" DataField="MaterialUnit" SortField="MaterialUnit"
<f:RenderField Width="80px" ColumnID="MaterialUnit" DataField="MaterialUnit" SortField="MaterialUnit"
FieldType="String" HeaderText="单位" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="NeedNum" DataField="NeedNum" SortField="NeedNum"
<f:RenderField Width="90px" ColumnID="NeedNum" DataField="NeedNum" SortField="NeedNum"
FieldType="String" HeaderText="所需量" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="RealNum" DataField="RealNum" SortField="RealNum"
<f:RenderField Width="90px" ColumnID="RealNum" DataField="RealNum" SortField="RealNum"
FieldType="String" HeaderText="到货量" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="StockNum" DataField="StockNum" SortField="StockNum"
<f:RenderField Width="90px" ColumnID="StockNum" DataField="StockNum" SortField="StockNum"
FieldType="String" HeaderText="库存量" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="MatchRateString" DataField="MatchRateString" SortField="MatchRateString"
<f:RenderField Width="90px" ColumnID="MatchRateString" DataField="MatchRateString" SortField="MatchRateString"
FieldType="String" HeaderText="匹配率" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
@@ -16,6 +16,10 @@ namespace FineUIPro.Web.CLGL
{
if (!IsPostBack)
{
drpWarehouse.DataTextField = "Text";
drpWarehouse.DataValueField = "Value";
drpWarehouse.DataSource = BLL.DropListService.HJGL_WarehouseCode();
drpWarehouse.DataBind();
this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString();
// 绑定表格
this.BindGrid();
@@ -28,7 +32,7 @@ namespace FineUIPro.Web.CLGL
/// </summary>
private void BindGrid()
{
var tb = BLL.TwArrivalStatisticsService.GetStatistics(this.CurrUser.LoginProjectId, txtMaterialCode.Text.Trim());
var tb = BLL.TwArrivalStatisticsService.GetStatistics(this.CurrUser.LoginProjectId, txtMaterialCode.Text.Trim(), drpWarehouse.SelectedValue);
lbRate.Text="总体匹配率:"+ Math.Round( tb.Sum(x=>x.MatchRate)*100/tb.Count() ,4) + "%";
//tb = GetFilteredTable(Grid1.FilteredData, tb);
@@ -59,6 +59,15 @@ namespace FineUIPro.Web.CLGL
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// drpWarehouse 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpWarehouse;
/// <summary>
/// txtMaterialCode 控件。
/// </summary>
+30 -2
View File
@@ -192,8 +192,8 @@
<Items>
<f:Grid ID="Grid3" ShowBorder="False" ShowHeader="False" Title="管线材料明细" EnableCollapse="true" ForceFit="true"
runat="server" BoxFlex="1" DataKeyNames="Id"
ClicksToEdit="2" DataIDField="Id" AllowSorting="true" SortField="MaterialCode" EnableSummary="true" SummaryPosition="Bottom"
SortDirection="DESC" EnableRowGroup="true" DataRowGroupField="PipelineCode" AllowPaging="true" IsDatabasePaging="true" PageSize="10000">
ClicksToEdit="2" DataIDField="Id" AllowSorting="true" SortField="MaterialCode" ExpandAllRowGroups="false"
SortDirection="DESC" EnableRowGroup="true" DataRowGroupField="PipelineCode" AllowPaging="true" IsDatabasePaging="true" PageSize="10000" RowGroupRendererFunction="onGrid3RowGroupRenderer">
<Columns>
<f:RenderField Width="100px" ColumnID="PipelineCode" DataField="PipelineCode" SortField="PipelineCode"
FieldType="String" HeaderText="管线号" HeaderTextAlign="Center"
@@ -227,6 +227,10 @@
FieldType="String" HeaderText="匹配量" HeaderTextAlign="Center"
TextAlign="Left">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="MatchRate" DataField="MatchRate" SortField="MatchRate"
FieldType="String" HeaderText="匹配率" HeaderTextAlign="Center"
TextAlign="Left" Hidden="true">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="MatchRateString" DataField="MatchRateString" SortField="MatchRateString"
FieldType="String" HeaderText="匹配率" HeaderTextAlign="Center"
TextAlign="Left">
@@ -275,6 +279,30 @@
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
function onGrid3RowGroupRenderer(groupValue, rowData) {
var Total = 0,
Len = rowData.children.length;
for (var i = 0; i < Len; i++) {
var childData = rowData.children[i];
var genderValue = childData.values['MatchRate'];
console.log(genderValue);
// 确保值存在再进行累加
if (genderValue !== undefined) {
genderValue = parseFloat(genderValue); // 确保是数字
genderValue = genderValue > 0 ? genderValue : 0;
Total += genderValue;
}
}
// 检查 Len 是否大于零,以防止除以零
var TotalRate = Len > 0 ? ((Total * 100) / Len).toFixed(2) + "%" : "0%";
return F.formatString('{0},匹配率:{1}', groupValue, TotalRate);
}
</script>
</body>
</html>
+15 -15
View File
@@ -112,19 +112,18 @@ namespace FineUIPro.Web.CLGL
var tb = BLL.TwArrivalStatisticsService.GetMatMatchByOutPlanMasterId(inOutPlanMasterId);
Grid3.DataSource = tb;
Grid3.DataBind();
//if (tb!= null && tb.Count > 0)
//{
// string Rate = Math.Round((decimal)tb.Average(item => item.MatchRate) * 100, 2).ToString() + "%";
if (tb!= null && tb.Count > 0)
{
string Rate = Math.Round((decimal)tb.Average(item => item.MatchRate) * 100, 2).ToString() + "%";
// JObject summary = new JObject();
// //summary.Add("Major", "全部合计");
// summary.Add("MatchRateString", Rate);
JObject summary = new JObject();
//summary.Add("Major", "全部合计");
summary.Add("MatchRateString", Rate);
// Grid3.SummaryData = summary;
//}
Grid3.SummaryData = summary;
}
}
#endregion
@@ -480,16 +479,17 @@ namespace FineUIPro.Web.CLGL
}
string planId = Grid1.SelectedRowID;
var planMaster = BLL.TwInOutplanmasterService.GetById(planId);
if (planMaster.State != (int)TwConst.State. || planMaster.TypeInt != (int)TwConst.TypeInt.)
{
Alert.ShowInTop("请选择有效的计划!", MessageBoxIcon.Warning);
return;
}
else
if (planMaster.State == (int)TwConst.State. &&( planMaster.TypeInt == (int)TwConst.TypeInt. || planMaster.TypeInt == (int)TwConst.TypeInt.))
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("OutPlanMasterEdit.aspx?UnitWorkId={0}&Id={1} ", tvControlItem.SelectedNodeID, planId, "新增 - ")));
}
else
{
Alert.ShowInTop("请选择有效的计划!", MessageBoxIcon.Warning);
return;
}
}
protected void btnPassMaster_OnClick(object sender, EventArgs e)
+9 -11
View File
@@ -6,12 +6,10 @@
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<style type="text/css">
.f-readonly {
opacity: .5;
filter: alpha(opacity=50);
}
</style>
<style type="text/css">
</style>
</head>
<body>
<form id="form1" runat="server">
@@ -66,9 +64,9 @@
</Items>
</f:Panel>
<f:Grid ID="Grid1" ShowBorder="true" EnableAjax="false" ShowHeader="true" Title="出库明细"
runat="server" BoxFlex="1" DataKeyNames="Id" AllowCellEditing="true" ForceFit="true"
DataIDField="Id" EnableColumnLines="true" Height="400" EnableBigData="true" OnRowCommand="Grid1_RowCommand"
EnableTextSelection="True">
runat="server" BoxFlex="1" DataKeyNames="Id" AllowCellEditing="true" ForceFit="true"
DataIDField="Id" OnRowCommand="Grid1_RowCommand" AllowPaging="true" IsDatabasePaging="true"
EnableTextSelection="True" PageSize="100">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
@@ -104,8 +102,8 @@
</f:Grid>
<f:Grid ID="Grid2" ShowBorder="true" EnableAjax="false" ShowHeader="true" Title="出库明细"
runat="server" BoxFlex="1" DataKeyNames="Id" AllowCellEditing="true" ForceFit="true"
DataIDField="Id" EnableColumnLines="true" Height="400" EnableBigData="true" OnRowCommand="Grid2_RowCommand"
EnableTextSelection="True">
DataIDField="Id" EnableColumnLines="true" OnRowCommand="Grid2_RowCommand"
EnableTextSelection="True" PageSize="100">
<Toolbars>
<f:Toolbar ID="Toolbar1" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
@@ -85,7 +85,7 @@ namespace FineUIPro.Web.CLGL
txtCreateMan.Text = this.CurrUser.PersonName;
txtCreateDate.Text = DateTime.Now.ToString("yyyy-MM-dd");
drpReqUnit.SelectedValue = this.CurrUser.UnitId;
txtCusBillCode.Text = TwInOutplanmasterService.GetDataInCusBillCode(this.CurrUser.LoginProjectId, this.CurrUser.UnitId);
txtCusBillCode.Text = TwInOutplanmasterService.GetDataInCusBillCode(this.CurrUser.LoginProjectId, UnitService.GetUnitByUnitId(this.CurrUser.UnitId)?.UnitCode);
}
drpTypeInt_SelectedIndexChanged(null, null);
@@ -38,7 +38,7 @@
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Left">
<Items>
<f:TextBox runat="server" ID="txtMatCode" Label="材料编码" LabelWidth="70px" LabelAlign="Right" Width="170px"></f:TextBox>
<f:TextBox runat="server" ID="txtMatCode" Label="材料编码" LabelWidth="100px" LabelAlign="Right" Width="250px"></f:TextBox>
<f:ToolbarFill ID="ToolbarFill1" runat="server">
</f:ToolbarFill>
<f:Button ID="btnSearch" ToolTip="查询" Icon="SystemSearch" runat="server" Text="查询" OnClick="btnSearch_Click">
@@ -77,7 +77,7 @@
</Items>
</f:Panel>
<f:Panel runat="server" ID="panel3" RegionPosition="Left" RegionSplit="true" EnableCollapse="true"
Width="230px" Title="匹配中管线" ShowBorder="true" ShowHeader="true"
Width="230px" Title="匹配管线(棕色为正在出库中管线)" ShowBorder="true" ShowHeader="true"
BodyPadding="10px">
<Toolbars>
<f:Toolbar ID="Toolbar4" Position="Bottom" runat="server" ToolbarAlign="Left">
@@ -116,8 +116,11 @@
<f:Toolbar ID="Toolbar3" Position="Top" runat="server" ToolbarAlign="Left">
<Items>
<f:Label ID="lbRate" runat="server" LabelWidth="100px" Hidden="true"></f:Label>
<f:Label ID="lbNote" runat="server" LabelWidth="100px" Text="绿色为匹配率100%,红色为匹配率小于100%"></f:Label>
<f:Button ID="btnGenTask" ToolTip="生成任务单" Icon="ApplicationViewIcons" runat="server" OnClick="btnGenTask_Click" ConfirmText="确定生成任务单吗?">
</f:Button>
<f:CheckBox ID="cbSelectCom" ShowLabel="false" runat="server" Text="默认勾选匹配100%" Checked="true" >
</f:CheckBox>
</Items>
</f:Toolbar>
</Toolbars>
@@ -153,15 +156,15 @@
EnableColumnLines="true" DataIDField="Id" AllowSorting="true" OnRowDataBound="Grid1_RowDataBound"
SortField="Id" SortDirection="ASC" OnSort="Grid1_Sort">
<Columns>
<f:RenderField Width="100px" ColumnID="PipelineCode" DataField="PipelineCode" SortField="PipelineCode"
<f:RenderField Width="200px" ColumnID="PipelineCode" DataField="PipelineCode" SortField="PipelineCode"
FieldType="String" HeaderText="管线号" HeaderTextAlign="Center"
TextAlign="Left">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="PrefabricatedComponents" DataField="PrefabricatedComponents" SortField="PrefabricatedComponents"
<f:RenderField Width="200px" ColumnID="PrefabricatedComponents" DataField="PrefabricatedComponents" SortField="PrefabricatedComponents"
FieldType="String" HeaderText="预制组件号" HeaderTextAlign="Center"
TextAlign="Left">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="MaterialCode" DataField="MaterialCode" SortField="MaterialCode"
<f:RenderField Width="120px" ColumnID="MaterialCode" DataField="MaterialCode" SortField="MaterialCode"
FieldType="String" HeaderText="材料编码" HeaderTextAlign="Center"
TextAlign="Left">
</f:RenderField>
@@ -169,23 +172,23 @@
FieldType="String" HeaderText="材料名称" HeaderTextAlign="Center"
TextAlign="Left">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="MaterialDef" DataField="MaterialDef" SortField="MaterialDef"
<f:RenderField Width="200px" ColumnID="MaterialDef" DataField="MaterialDef" SortField="MaterialDef"
FieldType="String" HeaderText="材料描述" HeaderTextAlign="Center"
TextAlign="Left">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="MaterialUnit" DataField="MaterialUnit" SortField="MaterialUnit"
<f:RenderField Width="80px" ColumnID="MaterialUnit" DataField="MaterialUnit" SortField="MaterialUnit"
FieldType="String" HeaderText="单位" HeaderTextAlign="Center"
TextAlign="Left">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="NeedNum" DataField="NeedNum" SortField="NeedNum"
<f:RenderField Width="90px" ColumnID="NeedNum" DataField="NeedNum" SortField="NeedNum"
FieldType="String" HeaderText="所需量" HeaderTextAlign="Center"
TextAlign="Left">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="MatchNum" DataField="MatchNum" SortField="MatchNum"
<f:RenderField Width="90px" ColumnID="MatchNum" DataField="MatchNum" SortField="MatchNum"
FieldType="String" HeaderText="匹配量" HeaderTextAlign="Center"
TextAlign="Left">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="MatchRateString" DataField="MatchRateString" SortField="MatchRateString"
<f:RenderField Width="90px" ColumnID="MatchRateString" DataField="MatchRateString" SortField="MatchRateString"
FieldType="String" HeaderText="匹配率" HeaderTextAlign="Center"
TextAlign="Left">
</f:RenderField>
@@ -318,6 +318,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
Rate = Math.Round((decimal)output.Average(item => item.MatchRate) * 100, 2);
lbRate.Text = "匹配率:" + Rate.ToString() + "%";
}
var selectList = new List<string>() ;
for (int i = 0; i < Grid2.Rows.Count; i++)
{
var model = Grid2.Rows[i].DataItem as Tw_PipeMatMatchOutput;
@@ -327,6 +328,8 @@ namespace FineUIPro.Web.HJGL.WeldingManage
if (model.MatchRate >=1)
{
Grid2.Rows[i].RowCssClass = "green";
selectList.Add(model.PipelineId);
}
else
{
@@ -334,6 +337,10 @@ namespace FineUIPro.Web.HJGL.WeldingManage
}
}
if (cbSelectCom.Checked)
{
Grid2.SelectedRowIDArray= selectList.ToArray();
}
}
void BindGrid3()
@@ -212,6 +212,15 @@ namespace FineUIPro.Web.HJGL.WeldingManage
/// </remarks>
protected global::FineUIPro.Label lbRate;
/// <summary>
/// lbNote 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label lbNote;
/// <summary>
/// btnGenTask 控件。
/// </summary>
@@ -221,6 +230,15 @@ namespace FineUIPro.Web.HJGL.WeldingManage
/// </remarks>
protected global::FineUIPro.Button btnGenTask;
/// <summary>
/// cbSelectCom 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.CheckBox cbSelectCom;
/// <summary>
/// Grid2 控件。
/// </summary>