|
|
|
@ -0,0 +1,158 @@ |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Linq; |
|
|
|
using System.Text; |
|
|
|
using BWP.B3ClientService.BO; |
|
|
|
using BWP.B3ClientService.Rpcs.BillRpc.SegmentationWeightRecord_; |
|
|
|
using BWP.B3ClientService.Utils; |
|
|
|
using BWP.B3Frameworks.Utils; |
|
|
|
using Forks.EnterpriseServices.DomainObjects2; |
|
|
|
using Forks.EnterpriseServices.DomainObjects2.DQuery; |
|
|
|
using Forks.EnterpriseServices.JsonRpc; |
|
|
|
using Newtonsoft.Json; |
|
|
|
using TSingSoft.WebPluginFramework; |
|
|
|
|
|
|
|
namespace BWP.B3ClientService.Rpcs.BillRpc |
|
|
|
{ |
|
|
|
[Rpc] |
|
|
|
public static class SegmentationWeightRecordRpc |
|
|
|
{ |
|
|
|
|
|
|
|
[Rpc] |
|
|
|
public static string GetCountByNameAndBatch(long goodsId, string batch) |
|
|
|
{ |
|
|
|
decimal weight = 0m; |
|
|
|
int count = 0; |
|
|
|
|
|
|
|
var query=new DQueryDom(new JoinAlias(typeof(SegmentationWeightRecord))); |
|
|
|
query.Columns.Add(DQSelectColumn.Sum("Weight")); |
|
|
|
query.Columns.Add(DQSelectColumn.Count("ID")); |
|
|
|
query.Where.Conditions.Add(DQCondition.EQ("Goods_ID",goodsId)); |
|
|
|
query.Where.Conditions.Add(DQCondition.EQ("ProductBatch", batch)); |
|
|
|
query.Where.Conditions.Add(DQCondition.GreaterThanOrEqual("CreateTime",DateTime.Today)); |
|
|
|
query.Where.Conditions.Add(DQCondition.LessThan("CreateTime",DateTime.Today.AddDays(1))); |
|
|
|
// var dd = query.EExecuteScalar<decimal?, int>();
|
|
|
|
using (var session=Dmo.NewSession()) |
|
|
|
{ |
|
|
|
using (var reader=session.ExecuteReader(query)) |
|
|
|
{ |
|
|
|
if (reader.Read()) |
|
|
|
{ |
|
|
|
weight =Convert.ToDecimal(reader[0]); |
|
|
|
count = Convert.ToInt32(reader[1]); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return weight.ToString("#0.##") + "," + count; |
|
|
|
} |
|
|
|
|
|
|
|
private static readonly object _insertObj=new object(); |
|
|
|
|
|
|
|
[Rpc] |
|
|
|
public static long Insert(string json) |
|
|
|
{ |
|
|
|
lock (_insertObj) |
|
|
|
{ |
|
|
|
var record = JsonConvert.DeserializeObject<SegmentationWeightRecord>(json); |
|
|
|
record.CreateTime = DateTime.Now; |
|
|
|
using (var session = Dmo.NewSession()) |
|
|
|
{ |
|
|
|
session.Insert(record); |
|
|
|
var segmentationByPproductTrace = GetSegmentationByPproductTrace(record); |
|
|
|
SegmentationByPproductTraceBL.Insert(session, segmentationByPproductTrace); |
|
|
|
session.Commit(); |
|
|
|
} |
|
|
|
return record.ID; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private static readonly object _updateObj = new object(); |
|
|
|
[Rpc] |
|
|
|
public static int Update(string json) |
|
|
|
{ |
|
|
|
lock (_updateObj) |
|
|
|
{ |
|
|
|
var clientRecord = JsonConvert.DeserializeObject<SegmentationWeightRecordDto>(json); |
|
|
|
using (var session = Dmo.NewSession()) |
|
|
|
{ |
|
|
|
var record = session.Load(new DmoIdentity(typeof(SegmentationWeightRecord), clientRecord.Service_ID ?? 0)); |
|
|
|
DmoUtil.CopyDmoFields(clientRecord, record, "ID", "B3_ID"); |
|
|
|
session.Update(record); |
|
|
|
//需要更新大表???
|
|
|
|
} |
|
|
|
return 1; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[Rpc] |
|
|
|
public static int Delete(long id) |
|
|
|
{ |
|
|
|
var delDom = new DQDeleteDom(typeof(SegmentationWeightRecord)); |
|
|
|
delDom.Where.Conditions.Add(DQCondition.EQ("ID", id)); |
|
|
|
using (var session = Dmo.NewSession()) |
|
|
|
{ |
|
|
|
session.ExecuteNonQuery(delDom); |
|
|
|
//需要删除大表
|
|
|
|
} |
|
|
|
return 1; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static SegmentationByPproductTrace GetSegmentationByPproductTrace(SegmentationWeightRecord record) |
|
|
|
{ |
|
|
|
var dmo = new SegmentationByPproductTrace(); |
|
|
|
dmo.BarCode = record.BarCode; |
|
|
|
dmo.Goods_ID = record.Goods_ID; |
|
|
|
dmo.Goods_Name = record.Goods_Name; |
|
|
|
dmo.Weight = record.Weight; |
|
|
|
dmo.Goods_Spec = record.Goods_Spec; |
|
|
|
dmo.ProductTime = record.CreateTime; |
|
|
|
return dmo; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 获取为入库的
|
|
|
|
/// </summary>
|
|
|
|
/// <returns></returns>
|
|
|
|
[Rpc] |
|
|
|
public static string GetNotInStoreList() |
|
|
|
{ |
|
|
|
var query=new DmoQuery(typeof(SegmentationWeightRecord)); |
|
|
|
query.Where.Conditions.Add(DQCondition.EQ("IsInStored",false)); |
|
|
|
var list = query.EExecuteList().Cast<SegmentationWeightRecord>().ToList(); |
|
|
|
return JsonConvert.SerializeObject(list); |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 获取为入库的
|
|
|
|
/// </summary>
|
|
|
|
/// <returns></returns>
|
|
|
|
[Rpc] |
|
|
|
public static string GetNotInStoreListByMaxId(long id) |
|
|
|
{ |
|
|
|
var query = new DmoQuery(typeof(SegmentationWeightRecord)); |
|
|
|
query.Where.Conditions.Add(DQCondition.EQ("IsInStored", false)); |
|
|
|
query.Where.Conditions.Add(DQCondition.GreaterThan("ID", id)); |
|
|
|
var list = query.EExecuteList().Cast<SegmentationWeightRecord>().ToList(); |
|
|
|
return JsonConvert.SerializeObject(list); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 批量 设置已入库
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="json"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
[Rpc] |
|
|
|
public static bool SetInStored(string json) |
|
|
|
{ |
|
|
|
var list = JsonConvert.DeserializeObject<List<int>>(json); |
|
|
|
var whereList = list.Select(x => DQExpression.Value(x)).ToArray(); |
|
|
|
var updateDom=new DQUpdateDom(typeof(SegmentationWeightRecord)); |
|
|
|
updateDom.Columns.Add(new DQUpdateColumn("IsInStored",true)); |
|
|
|
updateDom.Where.Conditions.Add(DQCondition.InList(DQExpression.Field("ID"),whereList)); |
|
|
|
updateDom.EExecute(); |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
} |