Browse Source

销售发货客户端,对上传MES和追溯服务器 分割品的支持。

master
yibo 7 years ago
parent
commit
b2fd3b8aaa
2 changed files with 98 additions and 17 deletions
  1. +75
    -12
      B3QingDaoWanFu/Tasks/SyncSaleOutStoreInfoToMES.cs
  2. +23
    -5
      B3QingDaoWanFu/TypeIOCs/SaleOutStoreBLTypeIoc.cs

+ 75
- 12
B3QingDaoWanFu/Tasks/SyncSaleOutStoreInfoToMES.cs View File

@ -16,6 +16,7 @@ using Forks.JsonRpc.Client;
using Newtonsoft.Json;
using BWP.B3Frameworks.BO.NamedValueTemplate;
using BWP.B3ButcherManage.Utils;
using BWP.B3ButcherManage.BO;
namespace BWP.B3QingDaoWanFu.Tasks
{
@ -38,9 +39,42 @@ namespace BWP.B3QingDaoWanFu.Tasks
}
}
static bool inited = false;
bool InitRpcFacade()
{
if (!inited)
{
var url = GetMesUrl();
if (string.IsNullOrEmpty(url))
return false;
try
{
RpcFacade.Init(url, "B3ClientService");
inited = true;
}
catch (Exception ex)
{
if (ex.Message == "Can only start once")
inited = true;
else
throw;
}
}
return inited;
}
string GetMesUrl()
{
var query = new DQueryDom(new JoinAlias(typeof(ClientConfig)));
query.Columns.Add(DQSelectColumn.Field("MesUrl"));
return query.EExecuteScalar<string>();
}
private void DoExecute()
{
if (!ClientServerFacedRpcFacadeUtil.InitRpcFacade())
// http://172.28.1.194:7799/B2/Rest.aspx
if (!InitRpcFacade())
return;
var main = new JoinAlias(typeof(SaleOutStore));
var relate = new JoinAlias(typeof(SaleOutStoreBarCodeToMESLog));
@ -58,13 +92,16 @@ namespace BWP.B3QingDaoWanFu.Tasks
query.Columns.Add(DQSelectColumn.Field("CheckTime", main));
query.Columns.Add(DQSelectColumn.Field("Goods_Code", scan));
query.Columns.Add(DQSelectColumn.Field("Number", scan));
query.Columns.Add(DQSelectColumn.Field("Flag", scan));
query.Where.Conditions.Add(DQCondition.And(DQCondition.GreaterThanOrEqual("BillState", .), DQCondition.IsNull(DQExpression.Field(relate, "SaleOutStore_ID")), DQCondition.IsNotNull(DQExpression.Field(scan, "ID"))));
query.Where.Conditions.Add(DQCondition.And(DQCondition.GreaterThan(scan, "Weight", 0), DQCondition.GreaterThan(scan, "Number", 0)));
query.Where.Conditions.Add(DQCondition.InEQ(scan, "Flag", 2));
query.OrderBy.Expressions.Add(DQOrderByExpression.Create(main, "ID"));
using (var session = Dmo.NewSession())
{
var list = new List<CarcassSaleOutStoreObj>();
var carcassList = new List<CarcassSaleOutStoreObj>();
var segmentList = new List<SegmentSaleOutStoreObj>();
var ids = new List<long>();
using (var reader = session.ExecuteReader(query))
{
@ -73,21 +110,31 @@ namespace BWP.B3QingDaoWanFu.Tasks
var id = (long)reader[0];
if (!ids.Contains(id))
ids.Add(id);
var entity = new CarcassSaleOutStoreObj();
entity.BarCode = (string)reader[1];
entity.Weight = (decimal?)reader[2];
entity.ProductBatch_ID = (long?)reader[3];
entity.Time = (DateTime?)reader[4];
entity.SaleGoods_Code = (string)reader[5];
entity.Number = (decimal?)reader[6];
list.Add(entity);
var flag = (int)reader[7];
if (flag == 0)
{
var entity = new CarcassSaleOutStoreObj();
entity.BarCode = (string)reader[1];
entity.Weight = (decimal?)reader[2];
entity.ProductBatch_ID = (long?)reader[3];
entity.Time = (DateTime?)reader[4];
entity.SaleGoods_Code = (string)reader[5];
entity.Number = (decimal?)reader[6];
carcassList.Add(entity);
}
else {
var entity = new SegmentSaleOutStoreObj();
entity.BarCode = (string)reader[1];
entity.Time = (DateTime?)reader[4];
segmentList.Add(entity);
}
}
}
if (ids.Count == 0)
return;
if (list.Any())
if (carcassList.Any())
{
var slist = TraceBackInfoUtil.SplitList(list, 1000);
var slist = TraceBackInfoUtil.SplitList(carcassList, 1000);
foreach (var items in slist)
{
var par = JsonConvert.SerializeObject(items);
@ -95,6 +142,16 @@ namespace BWP.B3QingDaoWanFu.Tasks
}
}
if (segmentList.Any())
{
var slist = TraceBackInfoUtil.SplitList(segmentList, 1000);
foreach (var items in slist)
{
var par = JsonConvert.SerializeObject(items);
var json = RpcFacade.Call<int>("/MainSystem/B3ClientService/Rpcs/SegmentSaleOutStoreRpc/UploadSegmentInfo", par);
}
}
foreach (var item in ids)
session.Insert(new SaleOutStoreBarCodeToMESLog { SaleOutStore_ID = item });
@ -117,4 +174,10 @@ namespace BWP.B3QingDaoWanFu.Tasks
public long? ProductBatch_ID { get; set; }
public decimal? Number { get; set; }
}
class SegmentSaleOutStoreObj
{
public string BarCode { get; set; }
public DateTime? Time { get; set; }
}
}

+ 23
- 5
B3QingDaoWanFu/TypeIOCs/SaleOutStoreBLTypeIoc.cs View File

@ -126,22 +126,35 @@ namespace BWP.B3QingDaoWanFu.TypeIOCs
}
}
string GetTraceBackUrl()
{
var query = new DQueryDom(new JoinAlias(typeof(ClientConfig)));
query.Columns.Add(DQSelectColumn.Field("TraceBackUrl"));
return query.EExecuteScalar<string>();
}
public override void Execute(QueueTaskContext context)
{
using (var scope = new SpecialDomainUserBLScope(DomainUser_ID))
{
var config = new B3ButcherManageOnlineConfiguration();
if (string.IsNullOrEmpty(config.TraceBackServerUrl))
var traceBackUrl = GetTraceBackUrl();
if (string.IsNullOrEmpty(traceBackUrl))
return;
var url = config.TraceBackServerUrl + "InsertSaleOutStore";
//http://172.28.1.99:7766/api/TraceBackInfo/
//InsertSaleOutStore
//SegmentInsertSaleOutStore
using (var session = Dmo.NewSession())
{
var infos = GetTraceBackInfos(session, BillID);
var list = TraceBackInfoUtil.SplitList(infos, 1000);
foreach (var letList in list)
{
var arr = JsonConvert.SerializeObject(letList);
TraceBackInfoUtil.Insert(url, arr);
foreach (var gr in letList.GroupBy(x => x.Flag))
{
var url = traceBackUrl + (gr.Key == 0 ? "InsertSaleOutStore" : "SegmentInsertSaleOutStore");
var arr = JsonConvert.SerializeObject(gr);
TraceBackInfoUtil.Insert(url, arr);
}
}
}
}
@ -159,6 +172,7 @@ namespace BWP.B3QingDaoWanFu.TypeIOCs
query.Columns.Add(DQSelectColumn.Field("Car_Name", bill));
query.Columns.Add(DQSelectColumn.Field("LoadTime", bill));
query.Columns.Add(DQSelectColumn.Field("BarCode", scan));
query.Columns.Add(DQSelectColumn.Field("Flag", scan));
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ(detail, "SaleOutStore_ID", id), DQCondition.IsNotNull(DQExpression.Field(scan, "ID"))));
query.Where.Conditions.Add(DQCondition.InEQ(scan, "BarCode", ""));
@ -172,6 +186,7 @@ namespace BWP.B3QingDaoWanFu.TypeIOCs
entity.CarNo = (string)reader[1];
entity.SendDate = ((DateTime)reader[2]).ToString("yyyyMMdd");
entity.Code = (string)reader[3];
entity.Flag = (int)reader[4];
list.Add(entity);
}
}
@ -194,5 +209,8 @@ namespace BWP.B3QingDaoWanFu.TypeIOCs
public string CarNo { get; set; }
public string SendDate { get; set; }
[JsonIgnore]
public int Flag { get; set; }
}
}

Loading…
Cancel
Save