|
|
|
@ -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; |
|
|
|
|