Browse Source

需求单No.136279 新增【白条损耗】报表。 实际上增加了3个报表 白条损耗、白条库存、白条流向

master
yibo 7 years ago
parent
commit
f27d1821da
11 changed files with 469 additions and 1 deletions
  1. +10
    -0
      B3ClientService.Web/B3ClientService.Web.csproj
  2. +117
    -0
      B3ClientService.Web/Pages/B3ClientService/Reports/CarcassLossAnalyse_/CarcassLossAnalyse.cs
  3. +139
    -0
      B3ClientService.Web/Pages/B3ClientService/Reports/CarcassStoreAnalyse_/CarcassStoreAnalyse.cs
  4. +141
    -0
      B3ClientService.Web/Pages/B3ClientService/Reports/CarcassTrendAnalyse_/CarcassTrendAnalyse.cs
  5. +3
    -1
      B3ClientService.Web/PluginClass.cs
  6. +32
    -0
      B3ClientService.Web/Utils/B3ClientServiceChoiceBoxDataProvider.cs
  7. +1
    -0
      B3ClientService/B3ClientService.csproj
  8. +16
    -0
      B3ClientService/B3ClientServiceConsts.cs
  9. +1
    -0
      B3ClientService/BO/BaseInfo/ProductBatch.cs
  10. +1
    -0
      B3ClientService/Tasks/SyncInfoFromServer.cs
  11. +8
    -0
      WebFolder/config/plugins/B3ClientService.plugin

+ 10
- 0
B3ClientService.Web/B3ClientService.Web.csproj View File

@ -73,11 +73,21 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Pages\B3ClientService\Reports\CarcassLossAnalyse_\CarcassLossAnalyse.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3ClientService\Reports\CarcassStoreAnalyse_\CarcassStoreAnalyse.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3ClientService\Reports\CarcassTrendAnalyse_\CarcassTrendAnalyse.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3ClientService\ServerHostConfig.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="PluginClass.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Utils\B3ClientServiceChoiceBoxDataProvider.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\B3ClientService\B3ClientService.csproj">


+ 117
- 0
B3ClientService.Web/Pages/B3ClientService/Reports/CarcassLossAnalyse_/CarcassLossAnalyse.cs View File

@ -0,0 +1,117 @@
using BWP.B3ClientService;
using BWP.B3ClientService.BO;
using BWP.B3Frameworks.Utils;
using BWP.Web.Utils;
using BWP.Web.WebControls;
using Forks.EnterpriseServices.DataForm;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.EnterpriseServices.SqlDoms;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security;
using System.Text;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using TSingSoft.WebControls2;
using TSingSoft.WebPluginFramework.Controls;
using TSingSoft.WebPluginFramework.Pages;
using TSingSoft.WebPluginFramework;
namespace BWP.Web.Pages.B3ClientService.Reports.CarcassLossAnalyse_
{
class CarcassLossAnalyse : ServerPage
{
protected override void OnInit(EventArgs e)
{
if (!User.IsInRole("B3ClientService.报表展示.白条损耗"))
throw new SecurityException();
base.OnInit(e);
}
DFBrowseGrid mBrowseGrid;
protected override void InitForm(HtmlForm form)
{
form.EAdd(new PageTitle("白条损耗"));
var queryPanel = new Panel();
queryPanel.Style.Add(HtmlTextWriterStyle.BackgroundColor, "white");
queryPanel.CssClass = "QueryPanel PrintInVisible";
form.Controls.Add(queryPanel);
AddQueryControl(queryPanel);
var mZone = new TitlePanelZone();
form.Controls.Add(mZone);
mZone.Add(CreateResultTab());
}
ChoiceBox batchSelect;
private void AddQueryControl(Panel queryPanel)
{
var hp = queryPanel.EAdd(new Panel());
hp.Style.Add("float", "right");
hp.EAdd(new SimpleLabel("生产批次"));
batchSelect = hp.EAdd(new ChoiceBox(B3ClientServiceConsts.DataSources.) { EnableInputArgument = true, EnableTopItem = true, AutoPostBack = true, Width = Unit.Pixel(180) });
var batch = GetYesterdayBatch();
if (!string.IsNullOrEmpty(batch))
batchSelect.Fill(batch, batch);
batchSelect.SelectedValueChanged += delegate
{
StartQuery();
};
}
string GetYesterdayBatch()
{
var dom = new DQueryDom(new JoinAlias(typeof(ProductBatch)));
dom.Columns.Add(DQSelectColumn.Field("Name"));
dom.OrderBy.Expressions.Add(DQOrderByExpression.Create("Date", true));
dom.Where.Conditions.Add(DQCondition.LessThan("Date", DateTime.Today));
dom.Range = SelectRange.Top(1);
return dom.EExecuteScalar<string>();
}
private TitlePanel CreateResultTab()
{
var result = new TitlePanel("查询结果");
mBrowseGrid = result.EAdd(new DFBrowseGrid(new DFDataTableEditor()) { Width = Unit.Percentage(100) });
mBrowseGrid.Columns.Add(new DFBrowseGridAutoColumn());
return result;
}
void StartQuery()
{
var dtdj = new JoinAlias(typeof(GradeAndWeight_Detail));
var btrk = new JoinAlias(typeof(TrunksIousOutInStoreRecord));
var query = new DQueryDom(dtdj);
query.From.AddJoin(JoinType.Left, new DQDmoSource(btrk), DQCondition.EQ(dtdj, "BarCode", btrk, "BarCode"));
query.Columns.Add(DQSelectColumn.Field("BarCode", "条码"));
query.Columns.Add(DQSelectColumn.Field("Livestock_Name", "胴体级别"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Value<int>(1), "头数"));
query.Columns.Add(DQSelectColumn.Field("Weight", dtdj, "胴体重量"));
query.Columns.Add(DQSelectColumn.Field("Goods_Name", btrk, "存货名称"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(btrk, "Weight"), "入库重量"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Subtract(DQExpression.Field(dtdj, "Weight"), DQExpression.IfNull(DQExpression.Field(btrk, "Weight"), DQExpression.Value(0))), "损耗"));
if (!string.IsNullOrEmpty(batchSelect.DisplayValue))
query.Where.Conditions.Add(DQCondition.EQ(btrk, "ProductBatch", batchSelect.DisplayValue));
var args = new LoadArguments(query);
args.SumColumns.Add(2);
args.SumColumns.Add(3);
args.SumColumns.Add(5);
args.SumColumns.Add(6);
mBrowseGrid.LoadArguments = args;
mBrowseGrid.DataBind();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!IsPostBack)
StartQuery();
}
}
}

+ 139
- 0
B3ClientService.Web/Pages/B3ClientService/Reports/CarcassStoreAnalyse_/CarcassStoreAnalyse.cs View File

@ -0,0 +1,139 @@
using BWP.B3ClientService.BO;
using BWP.B3Frameworks.Utils;
using BWP.Web.WebControls;
using Forks.EnterpriseServices.DataForm;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.EnterpriseServices.SqlDoms;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security;
using System.Text;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using TSingSoft.WebControls2;
using TSingSoft.WebControls2.DFGrids;
using TSingSoft.WebPluginFramework.Controls;
using TSingSoft.WebPluginFramework.Pages;
using TSingSoft.WebPluginFramework;
using System.Web;
namespace BWP.Web.Pages.B3ClientService.Reports.CarcassStoreAnalyse_
{
class CarcassStoreAnalyse : ServerPage
{
protected override void OnInit(EventArgs e)
{
if (!User.IsInRole("B3ClientService.报表展示.白条库存"))
throw new SecurityException();
base.OnInit(e);
}
string SelectBatch { get { return Request.QueryString["BatchName"]; } }
DFBrowseGrid mBrowseGrid;
protected override void InitForm(HtmlForm form)
{
form.EAdd(new PageTitle("白条库存"));
var queryPanel = new Panel();
queryPanel.Style.Add(HtmlTextWriterStyle.BackgroundColor, "white");
queryPanel.CssClass = "QueryPanel PrintInVisible";
form.Controls.Add(queryPanel);
AddQueryControl(queryPanel);
var mZone = new TitlePanelZone();
form.Controls.Add(mZone);
mZone.Add(CreateResultTab());
}
private void AddQueryControl(Panel queryPanel)
{
var hp = queryPanel.EAdd(new Panel());
hp.Style.Add("float", "right");
var batchNames = GetBatchNames();
var url = Request.Url.ToString();
foreach (var item in batchNames)
{
var hl = hp.EAdd(new HyperLink() { Text = item });
hl.Style.Add("margin-right", "10px");
hl.Style.Add("font-size", "15px");
hl.NavigateUrl = AspUtil.UpdateUrlParam(url, "BatchName", HttpUtility.UrlEncode(item));
if (item == SelectBatch)
{
hl.Style.Add("background-color", "#3CC24C");
hl.Style.Add("color", "#FFFFFF");
}
}
var all = hp.EAdd(new HyperLink() { Text = "全部" });
all.Style.Add("margin-right", "10px");
all.Style.Add("font-size", "15px");
all.NavigateUrl = AspUtil.RemoveUrlParam(url, "BatchName");
if (string.IsNullOrEmpty(SelectBatch))
{
all.Style.Add("background-color", "#3CC24C");
all.Style.Add("color", "#FFFFFF");
}
}
List<string> GetBatchNames()
{
#if DEBUG
return new List<string> { "20170809", "20170810", "20170811", "20170812" };
#endif
var btrk = new JoinAlias(typeof(TrunksIousOutInStoreRecord));
var btly = new JoinAlias(typeof(MaterialRequisitionRecord));
var query = new DQueryDom(btrk);
query.From.AddJoin(JoinType.Left, new DQDmoSource(btly), DQCondition.EQ(btrk, "BarCode", btly, "BarCode"));
query.Columns.Add(DQSelectColumn.Field("ProductBatch"));
query.GroupBy.Expressions.Add(DQExpression.Field("ProductBatch"));
query.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field(btly, "BarCode")));
query.Where.Conditions.Add(DQCondition.IsNotNull(DQExpression.Field("ProductBatch")));
query.OrderBy.Expressions.Add(DQOrderByExpression.Create("ProductBatch"));
return query.EExecuteList<string>();
}
private TitlePanel CreateResultTab()
{
var result = new TitlePanel("查询结果");
mBrowseGrid = result.EAdd(new DFBrowseGrid(new DFDataTableEditor()) { Width = Unit.Percentage(100) });
mBrowseGrid.Columns.Add(new DFBrowseGridAutoColumn());
return result;
}
void StartQuery()
{
var btrk = new JoinAlias(typeof(TrunksIousOutInStoreRecord));
var btly = new JoinAlias(typeof(MaterialRequisitionRecord));
var query = new DQueryDom(btrk);
query.From.AddJoin(JoinType.Left, new DQDmoSource(btly), DQCondition.EQ(btrk, "BarCode", btly, "BarCode"));
query.Columns.Add(DQSelectColumn.Field("ProductBatch", "生产批次"));
query.Columns.Add(DQSelectColumn.Field("BarCode", "条码"));
query.Columns.Add(DQSelectColumn.Field("Goods_Name", "存货名称"));
query.Columns.Add(DQSelectColumn.Field("Number", "头数"));
query.Columns.Add(DQSelectColumn.Field("Weight", "重量"));
//query.GroupBy.Expressions.Add(DQExpression.Field("ProductBatch"));
//query.GroupBy.Expressions.Add(DQExpression.Field("BarCode"));
//query.GroupBy.Expressions.Add(DQExpression.Field("Goods_Name"));
query.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field(btly, "BarCode")));
if (!string.IsNullOrEmpty(SelectBatch))
query.Where.Conditions.Add(DQCondition.EQ("ProductBatch", SelectBatch));
var args = new LoadArguments(query);
args.SumColumns.Add(3);
args.SumColumns.Add(4);
mBrowseGrid.LoadArguments = args;
mBrowseGrid.DataBind();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!IsPostBack)
StartQuery();
}
}
}

+ 141
- 0
B3ClientService.Web/Pages/B3ClientService/Reports/CarcassTrendAnalyse_/CarcassTrendAnalyse.cs View File

@ -0,0 +1,141 @@
using BWP.B3ClientService;
using BWP.B3ClientService.BO;
using BWP.B3Frameworks.Utils;
using BWP.Web.Utils;
using BWP.Web.WebControls;
using Forks.EnterpriseServices.DataForm;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.EnterpriseServices.SqlDoms;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security;
using System.Text;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using TSingSoft.WebControls2;
using TSingSoft.WebPluginFramework.Controls;
using TSingSoft.WebPluginFramework.Pages;
using TSingSoft.WebPluginFramework;
namespace BWP.Web.Pages.B3ClientService.Reports.CarcassTrendAnalyse_
{
class CarcassTrendAnalyse : ServerPage
{
protected override void OnInit(EventArgs e)
{
if (!User.IsInRole("B3ClientService.报表展示.白条流向"))
throw new SecurityException();
base.OnInit(e);
}
DFBrowseGrid mBrowseGrid;
protected override void InitForm(HtmlForm form)
{
form.EAdd(new PageTitle("白条流向"));
var queryPanel = new Panel();
queryPanel.Style.Add(HtmlTextWriterStyle.BackgroundColor, "white");
queryPanel.CssClass = "QueryPanel PrintInVisible";
form.Controls.Add(queryPanel);
AddQueryControl(queryPanel);
var mZone = new TitlePanelZone();
form.Controls.Add(mZone);
mZone.Add(CreateResultTab());
}
DateInput dateInput;
private void AddQueryControl(Panel queryPanel)
{
var hp = queryPanel.EAdd(new Panel());
hp.Style.Add("float", "right");
hp.EAdd(new SimpleLabel("出库日期"));
dateInput = hp.EAdd(new DateInput() { Width = Unit.Pixel(100) });
dateInput.Style.Add("margin-right", "10px");
var btn = hp.EAdd(new TSButton("开始查询", delegate { StartQuery(); }));
btn.Style.Add("padding", "5px 10px");
btn.Style.Add("margin-right", "10px");
var rbtn = hp.EAdd(new RedirectTSButton("清除条件"));
rbtn.Style.Add("padding", "5px 10px");
rbtn.Style.Add("margin-right", "10px");
}
private TitlePanel CreateResultTab()
{
var result = new TitlePanel("查询结果");
mBrowseGrid = result.EAdd(new DFBrowseGrid(new DFDataTableEditor()) { Width = Unit.Percentage(100) });
mBrowseGrid.Columns.Add(new DFBrowseGridAutoColumn());
return result;
}
void StartQuery()
{
var query = new DQueryDom(new JoinAlias(typeof(UnionTemp)));
UnionTemp.Register(query, dateInput.Value);
query.Columns.Add(DQSelectColumn.Field("OutType", "出库类型"));
query.Columns.Add(DQSelectColumn.Field("Date", "出库日期"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Value<int>(1)), "头数"));
query.Columns.Add(DQSelectColumn.Sum("InStoreWeight", "入库重量"));
query.Columns.Add(DQSelectColumn.Sum("OutStoreWeight", "出库重量"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Subtract(DQExpression.IfNull(DQExpression.Field("InStoreWeight"), DQExpression.Value(0)), DQExpression.IfNull(DQExpression.Field("OutStoreWeight"), DQExpression.Value(0)))), "损耗"));
query.GroupBy.Expressions.Add(DQExpression.Field("OutType"));
query.GroupBy.Expressions.Add(DQExpression.Field("Date"));
if (!dateInput.IsEmpty)
query.Where.Conditions.Add(DQCondition.EQ("Date", dateInput.Date));
var args = new LoadArguments(query);
args.SumColumns.Add(2);
args.GroupSumColumns.Add(2);
args.SumColumns.Add(3);
args.SumColumns.Add(4);
args.SumColumns.Add(5);
args.GroupSumColumns.Add(6);
mBrowseGrid.LoadArguments = args;
mBrowseGrid.DataBind();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!IsPostBack)
StartQuery();
}
}
class UnionTemp
{
public string OutType { get; set; }
public DateTime? Date { get; set; }
public decimal? InStoreWeight { get; set; }
public decimal? OutStoreWeight { get; set; }
public static void Register(DQueryDom root, DateTime? date)
{
root.RegisterQueryTable(typeof(UnionTemp), new string[] { "OutType", "Date", "InStoreWeight", "OutStoreWeight" }, GetLinYong(date));
}
static DQueryDom GetLinYong(DateTime? date)
{
var btly = new JoinAlias("_linyong", typeof(MaterialRequisitionRecord));
var btrk = new JoinAlias(typeof(TrunksIousOutInStoreRecord));
var query = new DQueryDom(btly);
var dateExp = DQExpression.Snippet("CAST([_linyong].[CreateTime] as date)");
query.From.AddJoin(JoinType.Left, new DQDmoSource(btrk), DQCondition.EQ(btrk, "BarCode", btly, "BarCode"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Value("分割领用"), "OutType"));
query.Columns.Add(DQSelectColumn.Create(dateExp, "Date"));
query.Columns.Add(DQSelectColumn.Field("Weight", btrk, "InStoreWeight"));
query.Columns.Add(DQSelectColumn.Field("Weight", btly, "OutStoreWeight"));
if (date.HasValue)
query.Where.Conditions.Add(DQCondition.EQ(dateExp, DQExpression.Value(date)));
return query;
}
}
}

+ 3
- 1
B3ClientService.Web/PluginClass.cs View File

@ -1,4 +1,5 @@
using System;
using BWP.Web.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@ -11,6 +12,7 @@ namespace BWP.B3ClientService
{
public void OnInit()
{
B3ClientServiceChoiceBoxDataProvider.Register();
}
}
}

+ 32
- 0
B3ClientService.Web/Utils/B3ClientServiceChoiceBoxDataProvider.cs View File

@ -0,0 +1,32 @@
using BWP.B3ClientService;
using BWP.B3ClientService.BO;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSingSoft.WebControls2;
using TSingSoft.WebPluginFramework;
namespace BWP.Web.Utils
{
public static class B3ClientServiceChoiceBoxDataProvider
{
public static void Register()
{
ChoiceBoxSettings.Register(B3ClientServiceConsts.DataSources., argu =>
{
var dom = new DQueryDom(new JoinAlias(typeof(ProductBatch)));
dom.Columns.Add(DQSelectColumn.Field("Name"));
if (!string.IsNullOrWhiteSpace(argu.InputArgument))
{
dom.Where.Conditions.Add(DQCondition.Like("Name", argu.InputArgument));
}
dom.OrderBy.Expressions.Add(DQOrderByExpression.Create("Date", true));
return dom.EExecuteList<string>().Select(x => new TSingSoft.WebControls2.WordPair(x));
});
}
}
}

+ 1
- 0
B3ClientService/B3ClientService.csproj View File

@ -70,6 +70,7 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="B3ClientServiceConsts.cs" />
<Compile Include="B3ClientServiceOnLineConfig.cs" />
<Compile Include="BO\BaseInfo\BaseInfo.cs" />
<Compile Include="BO\BaseInfo\BodyDiscontItem.cs" />


+ 16
- 0
B3ClientService/B3ClientServiceConsts.cs View File

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BWP.B3ClientService
{
public static class B3ClientServiceConsts
{
public static class DataSources
{
internal const string Prefix = "B3ClientService_";
public const string = Prefix + "生产批次";
}
}
}

+ 1
- 0
B3ClientService/BO/BaseInfo/ProductBatch.cs View File

@ -14,5 +14,6 @@ namespace BWP.B3ClientService.BO
{
public long ID { get; set; }
public string Name { get; set; }
public DateTime? Date { get; set; }
}
}

+ 1
- 0
B3ClientService/Tasks/SyncInfoFromServer.cs View File

@ -86,6 +86,7 @@ namespace BWP.B3ClientService.Tasks
private void SyncProductBatch()
{
var json = RpcFacade.Call<string>("/MainSystem/B3ButcherManage/Rpcs/TouchScreenRpcs/SyncProductBatch");
json = json.ESerializeDateTime();
var list = JsonConvert.DeserializeObject<List<ProductBatch>>(json);
using (var context = new TransactionContext())
{


+ 8
- 0
WebFolder/config/plugins/B3ClientService.plugin View File

@ -34,11 +34,19 @@
<Function index="3" name="分割入库"/>
<Function index="4" name="车间配货"/>
</FunctionGroup>
<FunctionGroup name="报表展示" roleSchemas="default">
<Function index="0" name="白条库存"/>
<Function index="1" name="白条损耗"/>
<Function index="2" name="白条流向"/>
</FunctionGroup>
</Security>
<Features>
</Features>
<Menus>
<Menu id="0001" name="B3基本模块/系统管理/服务器地址设置" url="B3ClientService/ServerHostConfig.aspx"/>
<Menu id="0002" name="MES系统/MES报表展示/白条库存" roles="B3ClientService.报表展示.白条库存" url="B3ClientService/Reports/CarcassStoreAnalyse_/CarcassStoreAnalyse.aspx"/>
<Menu id="0003" name="MES系统/MES报表展示/白条损耗" roles="B3ClientService.报表展示.白条损耗" url="B3ClientService/Reports/CarcassLossAnalyse_/CarcassLossAnalyse.aspx"/>
<Menu id="0004" name="MES系统/MES报表展示/白条流向" roles="B3ClientService.报表展示.白条流向" url="B3ClientService/Reports/CarcassTrendAnalyse_/CarcassTrendAnalyse.aspx"/>
</Menus>
<Features>
</Features>


Loading…
Cancel
Save