屠宰场管理服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
2.7 KiB

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);
}
}
}