Browse Source

需求单No.141792

master
wugang 7 years ago
parent
commit
c52a008e96
2 changed files with 85 additions and 7 deletions
  1. +83
    -7
      B3CowButcherManageToSale/Rpcs/SaleOutStoreRpc.cs
  2. +2
    -0
      B3CowButcherManageToSale/TypeIOCs/SaleOutStoreBLTypeIoc.cs

+ 83
- 7
B3CowButcherManageToSale/Rpcs/SaleOutStoreRpc.cs View File

@ -138,6 +138,7 @@ namespace BWP.B3CowButcherManageToSale.Rpcs
DeleteByID<WeightingInfo_ScanDetail>(session, scans.Select(x=>x.Item1));
var billID = InnerBLUtil.GetDmoPropertyByID<long>(session, typeof(SaleOutStore_Detail), "SaleOutStore_ID", detailId);
UpdateAssignNumber(session, billID, detailId, false);
UpdateAssignState(session, billID);
var list = scans.Select(x => x.Item2).ToList();
list.Add(packageBarCode);
UpdateIsAssignGoods(session, false, null,list.ToArray());
@ -145,10 +146,81 @@ namespace BWP.B3CowButcherManageToSale.Rpcs
}
return 1;
}
static List<long> GetWeightingInforID(IDmoSession session, long detailID, long clientId)
[Rpc]
public static int BatchDeleteAndUpdate(List<Tuple<long,long,string,long>> tuples)
{
using (var session = Dmo.NewSession())
{
var list = new List<string>();
foreach (var tuple in tuples)
{
var weightIDs = GetWeightingInforID(session, tuple.Item2, tuple.Item1);
if (weightIDs.Count > 0)
DeleteByID<WeightingInfor>(session, weightIDs);
var scans = GetScanDetailID(session, tuple.Item2, tuple.Item1);
if (scans.Count > 0)
{
DeleteByID<WeightingInfo_ScanDetail>(session, scans.Select(x => x.Item1));
scans.ForEach(x => list.Add(x.Item2));
list.Add(tuple.Item3);
}
}
var detailGroups = tuples.GroupBy(x => x.Item2);
foreach (var group in detailGroups)
{
UpdateAssignNumberByDetailID(session, group.Key,group.Count());
}
UpdateSaleOutStoreInfo(session, tuples[0].Item4);
UpdateIsAssignGoods(session, false, null, list.ToArray());
session.Commit();
}
return 1;
}
private static void UpdateAssignNumberByDetailID(IDmoSession session, long detailID,int packageNum)
{
var weightingInfo = GetWeightingInfor(session, detailID);
var update = new DQUpdateDom(typeof(SaleOutStore_Detail));
update.Columns.Add(new DQUpdateColumn("AssignUnitNum", DQExpression.Value(weightingInfo.Item1)));
update.Columns.Add(new DQUpdateColumn("AssignMainUnitNum", DQExpression.Value(weightingInfo.Item1)));
update.Columns.Add(new DQUpdateColumn("AssignSecondaryUnit1Num", DQExpression.Value(weightingInfo.Item2)));
update.Columns.Add(new DQUpdateColumn("PackageNum", DQExpression.Subtract(DQExpression.IfNull(DQExpression.Field("PackageNum"), DQExpression.Value(0)), DQExpression.Value(packageNum))));
update.Where.Conditions.Add(DQCondition.EQ("ID", detailID));
session.ExecuteNonQuery(update);
}
private static void UpdateSaleOutStoreInfo(IDmoSession session, long id)
{
UpdateAssignState(session, id);
var update2 = new DQUpdateDom(typeof(SaleOutStore));
update2.Columns.Add(new DQUpdateColumn("RowVersion", DQExpression.Add(DQExpression.Field("RowVersion"), DQExpression.Value(1))));
update2.Where.Conditions.Add(DQCondition.EQ("ID", id));
session.ExecuteNonQuery(update2);
}
private static void UpdateAssignState(IDmoSession session, long id)
{
var query = new DQueryDom(new JoinAlias(typeof(SaleOutStore_Detail)));
query.Columns.Add(DQSelectColumn.Field("ID"));
query.Where.Conditions.Add(DQCondition.GreaterThanOrEqual("AssignUnitNum", 0));
query.Where.Conditions.Add(DQCondition.EQ("SaleOutStore_ID", id));
var outId = (long?)session.ExecuteScalar(query);
var assigning = true;
if (outId == null || outId == 0)
{
assigning = false;
}
if (!assigning)
{
var update = new DQUpdateDom(typeof(SaleOutStore));
update.Columns.Add(new DQUpdateColumn("AssignState", DQExpression.Value(.)));
update.Where.Conditions.Add(DQCondition.EQ("ID", id));
session.ExecuteNonQuery(update);
}
}
static List<long> GetWeightingInforID(IDmoSession session, long detailID, long clientId)
{
var query = new DQueryDom(new JoinAlias(typeof(WeightingInfor)));
query.Columns.Add(DQSelectColumn.Field("ID"));
@ -175,23 +247,27 @@ namespace BWP.B3CowButcherManageToSale.Rpcs
private static Tuple<Money<decimal>?, Money<decimal>?> UpdateAssignNumber(IDmoSession session, long billID, long detailID, bool isAdd = true)
{
var weightingInfo = GetWeightingInfor(session, detailID);
var assigning = true;
if (weightingInfo.Item1 == null || weightingInfo.Item1 <= 0)
assigning = false;
var update = new DQUpdateDom(typeof(SaleOutStore_Detail));
update.Columns.Add(new DQUpdateColumn("AssignUnitNum", DQExpression.Value(weightingInfo.Item1)));
update.Columns.Add(new DQUpdateColumn("AssignMainUnitNum", DQExpression.Value(weightingInfo.Item1)));
update.Columns.Add(new DQUpdateColumn("AssignSecondaryUnit1Num", DQExpression.Value(weightingInfo.Item2)));
if (isAdd)
{
update.Columns.Add(new DQUpdateColumn("PackageNum", DQExpression.Add(DQExpression.IfNull(DQExpression.Field("PackageNum"), DQExpression.Value(0)), DQExpression.Value(1))));
}
else
{
update.Columns.Add(new DQUpdateColumn("PackageNum", DQExpression.Add(DQExpression.IfNull(DQExpression.Field("PackageNum"), DQExpression.Value(0)), DQExpression.Value(-1))));
}
update.Where.Conditions.Add(DQCondition.EQ("ID", detailID));
session.ExecuteNonQuery(update);
var update2 = new DQUpdateDom(typeof(SaleOutStore));
update2.Columns.Add(new DQUpdateColumn("RowVersion", DQExpression.Add(DQExpression.Field("RowVersion"), DQExpression.Value(1))));
update2.Columns.Add(new DQUpdateColumn("AssignState", assigning ? DQExpression.Value(.) : DQExpression.Value(.)));
if (isAdd)
{
update2.Columns.Add(new DQUpdateColumn("AssignState", .));
}
update2.Where.Conditions.Add(DQCondition.EQ("ID", billID));
session.ExecuteNonQuery(update2);
return weightingInfo;


+ 2
- 0
B3CowButcherManageToSale/TypeIOCs/SaleOutStoreBLTypeIoc.cs View File

@ -180,4 +180,6 @@ namespace BWP.B3CowButcherManageToSale.TypeIOCs
get { return string.Format("销售出库单No.{0}撤销清空条码销售信息到屠宰系统", BillID); }
}
}
}

Loading…
Cancel
Save