Browse Source

bug.

master
yibo 7 years ago
parent
commit
6f436c343c
8 changed files with 140 additions and 80 deletions
  1. +0
    -3
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/Butcher_/CreateButcher.cs
  2. +1
    -1
      B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Reports/HurryButcherAnalyse_/HurryButcherAnalyse.cs
  3. +1
    -0
      B3SheepButcherManage/B3SheepButcherManage.csproj
  4. +5
    -14
      B3SheepButcherManage/BL/Bill/ButcherBL/ButcherBL.cs
  5. +29
    -14
      B3SheepButcherManage/BL/Bill/HurryButcherBL/HurryButcherBL.cs
  6. +83
    -45
      B3SheepButcherManage/BL/Bill/WeightBillBL/WeightBillBL.cs
  7. +0
    -3
      B3SheepButcherManage/BO/Bill/WeightBill/WeightBill_Record.cs
  8. +21
    -0
      B3SheepButcherManage/DataPatch_/UpdateWeightRecordInfo.cs

+ 0
- 3
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/Butcher_/CreateButcher.cs View File

@ -104,7 +104,6 @@ namespace BWP.Web.Pages.B3SheepButcherManage.Bills.Butcher_
selectDmo.ID = (long)row["DetailID"];
selectDmo.WeightBill_ID = (long)row["ID"];
selectDmo.RemainNumber = (int?)row["RemainNumber"];
selectDmo.ButcherNumber = (int?)row["ButcherNumber"];
selectDmo.Number = (int)row["Number"];
selectDmo.LiveColonyHouse_Name = (string)row["LiveColonyHouse_Name"];
selectDmo.LiveVarieties_ID = (long?)row["LiveVarieties_ID"];
@ -133,7 +132,6 @@ namespace BWP.Web.Pages.B3SheepButcherManage.Bills.Butcher_
grid.Columns.Add(new DFBrowseGridColumn("Number"));
grid.Columns.Add(new DFBrowseGridColumn("Weight"));
grid.Columns.Add(new DFBrowseGridColumn("PlanNumber"));
grid.Columns.Add(new DFBrowseGridColumn("ButcherNumber"));
grid.Columns.EAdd(new DFEditGridColumn<DFTextBox>("RemainNumber")).HeaderText = "本次计划数";
grid.ValueColumns.Add("LiveVarieties_ID");
}
@ -181,7 +179,6 @@ namespace BWP.Web.Pages.B3SheepButcherManage.Bills.Butcher_
dom.Columns.Add(DQSelectColumn.Field("Weight", detail));
dom.Columns.Add(DQSelectColumn.Field("RemainNumber", detail));
dom.Columns.Add(DQSelectColumn.Field("PlanNumber", detail));
dom.Columns.Add(DQSelectColumn.Field("ButcherNumber", detail));
dom.Columns.Add(DQSelectColumn.Field("LiveColonyHouse_Name", detail));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(detail, "ID"), "DetailID"));


+ 1
- 1
B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Reports/HurryButcherAnalyse_/HurryButcherAnalyse.cs View File

@ -33,7 +33,7 @@ namespace BWP.Web.Pages.B3SheepButcherManage.Reports.HurryButcherAnalyse_
protected override string AccessRoleName
{
get { return "B3ButcherManage.急宰单.访问"; }
get { return "B3SheepButcherManage.急宰单.访问"; }
}
readonly Dictionary<string, DFInfo> _fileInfo = new Dictionary<string, DFInfo>();


+ 1
- 0
B3SheepButcherManage/B3SheepButcherManage.csproj View File

@ -112,6 +112,7 @@
<Compile Include="BO\Bill\WeightBill\WeightBill_AbnormalRecording.cs" />
<Compile Include="BO\Bill\WeightBill\WeightBill_Record.cs" />
<Compile Include="BO\Bill\WeightBill\WeightBill.cs" />
<Compile Include="DataPatch_\UpdateWeightRecordInfo.cs" />
<Compile Include="DmoTypeIDOffsets.cs" />
<Compile Include="Ioc\B3SheepButcherManageFactoryDBList.cs" />
<Compile Include="NamedValueTemplate\NamedValueTemplate.cs" />


+ 5
- 14
B3SheepButcherManage/BL/Bill/ButcherBL/ButcherBL.cs View File

@ -98,10 +98,7 @@ namespace BWP.B3SheepButcherManage.BL
Session.ExecuteNonQuery(delDom);
var weightBL = BIFactory.Create<IWeightBillBL>(this);
foreach (var id in needUpdateIds)
{
weightBL.UpdateDetailOtherNumber(id);
}
weightBL.UpdateDetailOtherNumber(needUpdateIds);
ReUpdateSequenceAndPhaseCode(butcherID);
}
@ -202,10 +199,10 @@ namespace BWP.B3SheepButcherManage.BL
}
Update(dmo);
if (preDetail.Weigh_Detail_ID.HasValue)
if (preDetail.Weigh_Detail_ID > 0)
{
var weightBL = BIFactory.Create<IWeightBillBL>(this);
weightBL.UpdateDetailOtherNumber(preDetail.Weigh_Detail_ID.Value);
weightBL.UpdateDetailOtherNumber(new List<long>() { preDetail.Weigh_Detail_ID.Value });
}
}
@ -248,10 +245,7 @@ namespace BWP.B3SheepButcherManage.BL
Update(dmo);
}
var weightBL = BIFactory.Create<IWeightBillBL>(this);
foreach (var weighRecord in selectedList)
{
weightBL.UpdateDetailOtherNumber(weighRecord.ID);
}
weightBL.UpdateDetailOtherNumber(selectedList.Select(x => x.ID));
return dmo.ID;
}
@ -287,11 +281,8 @@ namespace BWP.B3SheepButcherManage.BL
{
if (detail.PlanNumber == null)
detail.PlanNumber = 0;
if (detail.ButcherNumber == null)
detail.ButcherNumber = 0;
if ((detail.RemainNumber > detail.Number - detail.PlanNumber) ||
(detail.RemainNumber > detail.Number - detail.ButcherNumber))
if (detail.RemainNumber > detail.Number - detail.PlanNumber)
throw new Exception("本次宰杀头数超出了剩余头数");
// 本次计划数量
for (int i = 0; i < detail.RemainNumber; i++)


+ 29
- 14
B3SheepButcherManage/BL/Bill/HurryButcherBL/HurryButcherBL.cs View File

@ -3,6 +3,7 @@ using BWP.B3SheepButcherManage.BL;
using BWP.B3SheepButcherManage.BO;
using Forks.EnterpriseServices;
using Forks.EnterpriseServices.BusinessInterfaces;
using Forks.EnterpriseServices.DomainObjects2;
using System;
using System.Collections.Generic;
using System.Linq;
@ -18,22 +19,36 @@ namespace BWP.B3SheepButcherManage.BL
}
public class HurryButcherBL : DepartmentWorkFlowBillBL<HurryButcher>, IHurryButcherBL
{
protected override void doCheck(HurryButcher dmo)
protected override void afterInsert(HurryButcher dmo)
{
base.doCheck(dmo);
var weighDetailIDs = new List<long>();
foreach (HurryButcher_Detail detail in dmo.Details)
{
if (detail.Weigh_Detail_ID != null)
{
if (!weighDetailIDs.Contains(detail.Weigh_Detail_ID.Value))
weighDetailIDs.Add(detail.Weigh_Detail_ID.Value);
}
}
var weightBL = BIFactory.Create<IWeightBillBL>(this);
foreach (var weighDetailID in weighDetailIDs)
base.afterInsert(dmo);
var tags = dmo.Details.Where(x => x.Weigh_Detail_ID > 0).Select(x => x.Weigh_Detail_ID.Value);
UpdateWeightRecordPlanNumber(tags);
}
protected override void afterUpdate(HurryButcher dmo)
{
base.afterUpdate(dmo);
var deleted = (dmo.Details as IDmoContainer).GetDeletedObjects().Cast<HurryButcher_Detail>().Where(x => x.Weigh_Detail_ID > 0).Select(x => x.Weigh_Detail_ID.Value);
var simple = dmo.Details.Where(x => x.Weigh_Detail_ID > 0).Select(x => x.Weigh_Detail_ID.Value);
var tags = simple.Union(deleted);
UpdateWeightRecordPlanNumber(tags);
}
protected override void afterDelete(HurryButcher dmo)
{
base.afterDelete(dmo);
var simple = dmo.Details.Where(x => x.Weigh_Detail_ID > 0).Select(x => x.Weigh_Detail_ID.Value);
UpdateWeightRecordPlanNumber(simple);
}
void UpdateWeightRecordPlanNumber(IEnumerable<long> tags)
{
if (tags.Any())
{
weightBL.UpdateDetailOtherNumber(weighDetailID);
var bl = BIFactory.Create<IWeightBillBL>(BCWrapClassType.Inner, this);
bl.UpdateDetailOtherNumber(tags);
}
}
}


+ 83
- 45
B3SheepButcherManage/BL/Bill/WeightBillBL/WeightBillBL.cs View File

@ -23,7 +23,7 @@ namespace BWP.B3SheepButcherManage.BL
[LogicName("羊过磅单")]
public interface IWeightBillBL : IDepartmentWorkFlowBillBL<WeightBill>
{
void UpdateDetailOtherNumber(long p);
void UpdateDetailOtherNumber(IEnumerable<long> weightDetailIDs);
}
public class WeightBillBL : DepartmentWorkFlowBillBL<WeightBill>, IWeightBillBL
@ -67,7 +67,7 @@ namespace BWP.B3SheepButcherManage.BL
runner.Global["奖罚依据"] = "";
runner.Execute(result.Item3);
var bType = TypeMarshal.AsString(runner.Global["奖罚依据"]);
if (bType == "过磅单")
if (bType == "过磅单")
{
runner.Global["单价"] = 0m;
runner.Execute(result.Item2);
@ -113,7 +113,7 @@ namespace BWP.B3SheepButcherManage.BL
protected override void doUnCheck(WeightBill dmo)
{
if (dmo.WeighRecords.Any(x => x.PlanNumber > 0 || x.ButcherNumber > 0))
if (dmo.WeighRecords.Any(x => x.PlanNumber > 0))
throw new ApplicationException("过磅单已经排宰");
var stayPayBL = BIFactory.Create<IStatPayBL>(Session);
@ -132,54 +132,92 @@ namespace BWP.B3SheepButcherManage.BL
}
/// <summary>
/// 更新屠宰单明细的已计划数量,已屠宰数量,剩余数量
/// 更新屠宰单明细的已计划数量,剩余数量
/// </summary>
public void UpdateDetailOtherNumber(long weighDetailID)
public void UpdateDetailOtherNumber(IEnumerable<long> weightDetailIDs)
{
if (weighDetailID == 0)
{
if (weightDetailIDs.Count() == 0)
return;
var exp = weightDetailIDs.Distinct().Select(x => DQExpression.Value(x)).ToArray();
var main = new JoinAlias(typeof(Summary));
var detail = new JoinAlias(typeof(WeightBill_Record));
var query = new DQueryDom(main);
Summary.Register(query, exp);
query.From.AddJoin(JoinType.Inner, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "ID"));
query.Columns.Add(DQSelectColumn.Field("ID", main));
query.Columns.Add(DQSelectColumn.Sum(main, "Number"));
query.Columns.Add(DQSelectColumn.Max(detail, "Number"));
query.GroupBy.Expressions.Add(DQExpression.Field(main, "ID"));
var list = new List<Tuple<long, int, int>>();
using (var reader = Session.ExecuteReader(query))
{
while (reader.Read())
{
var item1 = (long)reader[0];
var item2 = Convert.ToInt32(reader[1] ?? 0);
var item3 = Convert.ToInt32(reader[2] ?? 0);
var last = item3 - item2;
if (last < 0)
throw new Exception(string.Format("过磅单明细ID{0} 头数{1} 已计划{2} 超出{3}", item1, item3, item2, -last));
list.Add(new Tuple<long, int, int>(item1, item2, last));
}
}
foreach (var item in list)
UpdateReocrdPlanNumber(item);
}
private void UpdateReocrdPlanNumber(Tuple<long, int, int> item)
{
var update = new DQUpdateDom(typeof(WeightBill_Record));
update.Columns.Add(new DQUpdateColumn("PlanNumber", item.Item2));
update.Columns.Add(new DQUpdateColumn("RemainNumber", item.Item3));
update.Where.Conditions.Add(DQCondition.EQ("ID", item.Item1));
Session.ExecuteNonQuery(update);
}
class Summary
{
public long ID { get; set; }
public int Number { get; set; }
public static void Register(DQueryDom root, IDQExpression[] ids)
{
var q1 = ButcherQuery(ids);
q1.UnionNext.Select = HurryButcherQuery(ids);
q1.UnionNext.Type = UnionType.All;
root.RegisterQueryTable(typeof(Summary), new string[] { "ID", "Number" }, q1);
}
var butcher = new JoinAlias(typeof(Butcher));
var detail = new JoinAlias(typeof(Butcher_Detail));
var subQuery = new DQueryDom(detail);
subQuery.From.AddJoin(JoinType.Left, new DQDmoSource(butcher), DQCondition.EQ(detail, "Butcher_ID", butcher, "ID"));
subQuery.Where.Conditions.Add(DQCondition.EQ(detail, "Weigh_Detail_ID", weighDetailID));
subQuery.Where.Conditions.Add(DQCondition.InEQ(butcher, "BillState", .));
subQuery.Columns.Add(DQSelectColumn.Count());
subQuery.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(
DQExpression.LogicCase(DQCondition.IsNotNull(DQExpression.Field("Weight")), DQExpression.ConstValue(1), DQExpression.ConstValue(0))), "HasWeight"));
var tuple = subQuery.EExecuteScalar<long?, int?>(Session);
var planNumber = tuple.Item1 ?? 0;
var butcherNumber = tuple.Item2 ?? 0;
var hurryDetail = new JoinAlias(typeof(HurryButcher_Detail));
var hurry = new JoinAlias(typeof(HurryButcher));
var hurryDom = new DQueryDom(hurryDetail);
hurryDom.From.AddJoin(JoinType.Left, new DQDmoSource(hurry), DQCondition.EQ(hurryDetail, "HurryButcher_ID", hurry, "ID"));
hurryDom.Where.Conditions.Add(DQCondition.EQ("Weigh_Detail_ID", weighDetailID));
hurryDom.Where.Conditions.Add(DQCondition.Or(
DQCondition.EQ(hurry, "BillState", .),
DQCondition.EQ(hurry, "BillState", .)));
hurryDom.Columns.Add(DQSelectColumn.Sum("Number"));
var hurryNumber = (int?)Session.ExecuteScalar(hurryDom);
butcherNumber = (butcherNumber) + (hurryNumber ?? 0);
planNumber = (planNumber) + (hurryNumber ?? 0);
var updatedom = new DQUpdateDom(typeof(WeightBill_Record));
updatedom.Where.Conditions.Add(DQCondition.EQ("ID", weighDetailID));
long weightid = InnerBLUtil.GetDmoPropertyByID<long>(Session, typeof(WeightBill_Record), "WeightBill_ID", weighDetailID);
updatedom.Columns.Add(new DQUpdateColumn("PlanNumber", planNumber));//已计划头数
updatedom.Columns.Add(new DQUpdateColumn("ButcherNumber", butcherNumber)); //已屠宰
updatedom.Columns.Add(new DQUpdateColumn("RemainNumber", DQExpression.Subtract(DQExpression.Field("Number"), DQExpression.Value(planNumber > butcherNumber ? planNumber : butcherNumber))));
//剩余头数
Session.ExecuteNonQuery(updatedom);
static DQueryDom ButcherQuery(IDQExpression[] ids)
{
var main = new JoinAlias(typeof(Butcher));
var detail = new JoinAlias(typeof(Butcher_Detail));
var query = new DQueryDom(detail);
query.From.AddJoin(JoinType.Left, new DQDmoSource(main), DQCondition.EQ(detail, "Butcher_ID", main, "ID"));
query.Where.Conditions.Add(DQCondition.InList(DQExpression.Field(detail, "Weigh_Detail_ID"), ids));
query.Where.Conditions.Add(DQCondition.InEQ(main, "BillState", .));
query.Columns.Add(DQSelectColumn.Field("Weigh_Detail_ID", detail));
query.Columns.Add(DQSelectColumn.Count());
query.GroupBy.Expressions.Add(DQExpression.Field(detail, "Weigh_Detail_ID"));
return query;
}
static DQueryDom HurryButcherQuery(IDQExpression[] ids)
{
var detail = new JoinAlias(typeof(HurryButcher_Detail));
var main = new JoinAlias(typeof(HurryButcher));
var query = new DQueryDom(detail);
query.From.AddJoin(JoinType.Left, new DQDmoSource(main), DQCondition.EQ(detail, "HurryButcher_ID", main, "ID"));
query.Where.Conditions.Add(DQCondition.InList(DQExpression.Field(detail, "Weigh_Detail_ID"), ids));
query.Where.Conditions.Add(DQCondition.InEQ(main, "BillState", .));
query.Columns.Add(DQSelectColumn.Field("Weigh_Detail_ID", detail));
query.Columns.Add(DQSelectColumn.Sum("Number"));
query.GroupBy.Expressions.Add(DQExpression.Field(detail, "Weigh_Detail_ID"));
return query;
}
}
}
}

+ 0
- 3
B3SheepButcherManage/BO/Bill/WeightBill/WeightBill_Record.cs View File

@ -33,9 +33,6 @@ namespace BWP.B3SheepButcherManage.BO
[LogicName("已计划头数")]
public int? PlanNumber { get; set; }
[LogicName("已屠宰头数")]
public int? ButcherNumber { get; set; }
[LogicName("数量")]
public int? Number { get; set; }


+ 21
- 0
B3SheepButcherManage/DataPatch_/UpdateWeightRecordInfo.cs View File

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSingSoft.WebPluginFramework.Install;
namespace BWP.B3SheepButcherManage.DataPatch_
{
[DataPatch]
public class UpdateWeightRecordInfo : IDataPatch
{
public void Execute(Forks.EnterpriseServices.BusinessInterfaces.TransactionContext context)
{
var sql = @"update B3SheepButcherManage_WeightBill_Record set PlanNumber=0,RemainNumber=Number;
with b(id,num) as ((select d.Weigh_Detail_ID,1 from B3SheepButcherManage_Butcher m join B3SheepButcherManage_Butcher_Detail d on m.ID=d.Butcher_ID where d.Weigh_Detail_ID>0 and m.BillState!=1)union all (select d.Weigh_Detail_ID,d.Number from B3SheepButcherManage_HurryButcher m join B3SheepButcherManage_HurryButcher_Detail d on m.ID=d.HurryButcher_ID where d.Weigh_Detail_ID>0 and m.BillState!=1)),
summary(id,number) as (select id ,sum(num)from b group by id)
UPDATE wd set wd.PlanNumber= b.num,wd.RemainNumber=wd.Number-b.num from b join B3SheepButcherManage_WeightBill_Record wd on b.id=wd.ID;";
context.Session.ExecuteSqlNonQuery(sql);
}
}
}

Loading…
Cancel
Save