using BWP.B3ClientService.BO;
|
|
using Forks.EnterpriseServices.DomainObjects2;
|
|
using Forks.EnterpriseServices.DomainObjects2.DQuery;
|
|
using Forks.EnterpriseServices.JsonRpc;
|
|
using Forks.EnterpriseServices.SqlDoms;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using TSingSoft.WebPluginFramework;
|
|
|
|
namespace BWP.B3ClientService.Rpcs
|
|
{
|
|
[Rpc]
|
|
public static class ProductInStoreCombineRpc
|
|
{
|
|
[Rpc(RpcFlags.SkipAuth)]
|
|
public static string ScanBarCode(string barCode)
|
|
{
|
|
var query = new DQueryDom(new JoinAlias(typeof(SegmentProductionInfo)));
|
|
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("BarCode", barCode), DQCondition.EQ("Delete", false), DQCondition.IsNotNull(DQExpression.Field("Weight"))));
|
|
query.Columns.Add(DQSelectColumn.Field("Goods_Name"));
|
|
query.Columns.Add(DQSelectColumn.Field("Goods_Spec"));
|
|
query.Columns.Add(DQSelectColumn.Field("Weight"));
|
|
query.Columns.Add(DQSelectColumn.Field("InStoreTime"));
|
|
query.Range = SelectRange.Top(1);
|
|
using (var session = Dmo.NewSession())
|
|
{
|
|
using (var reader = session.ExecuteReader(query))
|
|
{
|
|
if (reader.Read())
|
|
{
|
|
var obj = new
|
|
{
|
|
Goods_Name = (string)reader[0],
|
|
Goods_Spec = (string)reader[1],
|
|
Weight = (decimal)reader[2],
|
|
InStoreTime = (DateTime?)reader[3]
|
|
};
|
|
return JsonConvert.SerializeObject(obj);
|
|
}
|
|
}
|
|
}
|
|
return JsonConvert.SerializeObject(new { });
|
|
|
|
}
|
|
|
|
[Rpc(RpcFlags.SkipAuth)]
|
|
public static int InsertCombine(string json)
|
|
{
|
|
var list = JsonConvert.DeserializeObject<List<ProductInStoreCombine>>(json);
|
|
using (var session = Dmo.NewSession())
|
|
{
|
|
foreach (var item in list)
|
|
{
|
|
if ((Exist(session, item.CombineCode)))
|
|
continue;
|
|
session.Insert(item);
|
|
UpdateProductInfo(session, item);
|
|
}
|
|
session.Commit();
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
static bool Exist(IDmoSession session, string code)
|
|
{
|
|
var query = new DQueryDom(new JoinAlias(typeof(ProductInStoreCombine)));
|
|
query.Where.Conditions.Add(DQCondition.EQ("CombineCode", code));
|
|
return query.EExists(session);
|
|
}
|
|
|
|
static void UpdateProductInfo(IDmoSession session, ProductInStoreCombine item)
|
|
{
|
|
var update = new DQUpdateDom(typeof(SegmentProductionInfo));
|
|
update.Columns.Add(new DQUpdateColumn("InStoreCombine_ID", item.ID));
|
|
update.Where.Conditions.Add(DQCondition.InList(DQExpression.Field("BarCode"), item.BarCodes.Select(x => DQExpression.Value(x)).ToArray()));
|
|
session.ExecuteNonQuery(update);
|
|
}
|
|
}
|
|
}
|