Browse Source

Some Change

master
yibo 7 years ago
parent
commit
edac79b28d
6 changed files with 232 additions and 102 deletions
  1. +3
    -1
      B3ClientService/B3ClientService.csproj
  2. +34
    -0
      B3ClientService/BO/Bill/PadScanDb/PadCarcassInStore.cs
  3. +34
    -2
      B3ClientService/OfflinRpc/BaseInfoRpc.cs
  4. +147
    -0
      B3ClientService/OfflinRpc/CarcassInStoreRpc.cs
  5. +14
    -0
      B3ClientService/OfflinRpc/SimpleBackObjs.cs
  6. +0
    -99
      B3ClientService/Utils/UrlUtil.cs

+ 3
- 1
B3ClientService/B3ClientService.csproj View File

@ -109,6 +109,7 @@
<Compile Include="BO\Bill\OrderDetail\BeforeDeathDetail.cs" /> <Compile Include="BO\Bill\OrderDetail\BeforeDeathDetail.cs" />
<Compile Include="BO\Bill\OrderDetail\HurryRecord.cs" /> <Compile Include="BO\Bill\OrderDetail\HurryRecord.cs" />
<Compile Include="BO\Bill\OrderDetail\OrderDetail.cs" /> <Compile Include="BO\Bill\OrderDetail\OrderDetail.cs" />
<Compile Include="BO\Bill\PadScanDb\PadCarcassInStore.cs" />
<Compile Include="BO\Bill\SaleOutStore_\SaleOutStore.cs" /> <Compile Include="BO\Bill\SaleOutStore_\SaleOutStore.cs" />
<Compile Include="BO\Bill\SecondOrder\SecondOrder.cs" /> <Compile Include="BO\Bill\SecondOrder\SecondOrder.cs" />
<Compile Include="BO\Bill\SecondOrder\SecondOrder_Detail.cs" /> <Compile Include="BO\Bill\SecondOrder\SecondOrder_Detail.cs" />
@ -146,7 +147,9 @@
<Compile Include="DataPatch\UpdatePurchaseTypeColumn.cs" /> <Compile Include="DataPatch\UpdatePurchaseTypeColumn.cs" />
<Compile Include="NamedValueTemplate.cs" /> <Compile Include="NamedValueTemplate.cs" />
<Compile Include="OfflinRpc\BaseInfoRpc.cs" /> <Compile Include="OfflinRpc\BaseInfoRpc.cs" />
<Compile Include="OfflinRpc\CarcassInStoreRpc.cs" />
<Compile Include="OfflinRpc\LoginRpc.cs" /> <Compile Include="OfflinRpc\LoginRpc.cs" />
<Compile Include="OfflinRpc\SimpleBackObjs.cs" />
<Compile Include="Rpcs\BillRpc\BaseInfoRpc.cs" /> <Compile Include="Rpcs\BillRpc\BaseInfoRpc.cs" />
<Compile Include="Rpcs\BillRpc\BeforeDeathRpc.cs" /> <Compile Include="Rpcs\BillRpc\BeforeDeathRpc.cs" />
<Compile Include="Rpcs\BillRpc\ByProductWeightRecordRpc.cs" /> <Compile Include="Rpcs\BillRpc\ByProductWeightRecordRpc.cs" />
@ -196,7 +199,6 @@
<Compile Include="ClientServiceUtils.cs" /> <Compile Include="ClientServiceUtils.cs" />
<Compile Include="InnerUtils.cs" /> <Compile Include="InnerUtils.cs" />
<Compile Include="Utils\SegmentationByPproductTraceBL.cs" /> <Compile Include="Utils\SegmentationByPproductTraceBL.cs" />
<Compile Include="Utils\UrlUtil.cs" />
<Compile Include="WordPair.cs" /> <Compile Include="WordPair.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>


+ 34
- 0
B3ClientService/BO/Bill/PadScanDb/PadCarcassInStore.cs View File

@ -0,0 +1,34 @@
using BWP.B3Frameworks.BO;
using Forks.EnterpriseServices;
using Forks.EnterpriseServices.DomainObjects2;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
namespace BWP.B3ClientService.BO
{
[LogicName("白条入库手持创建")]
public class PadCarcassInStore : Base
{
public PadCarcassInStore()
{
CreateTime = DateTime.Now;
}
public long Goods_ID { get; set; }
public string BarCode { get; set; }
[DbColumn(DbType = SqlDbType.DateTime)]
[JsonIgnore]
public DateTime CreateTime { get; set; }
[JsonIgnore]
public bool Sync { get; set; }
public int RowVersion { get; set; }
}
}

+ 34
- 2
B3ClientService/OfflinRpc/BaseInfoRpc.cs View File

@ -45,8 +45,10 @@ namespace BWP.B3ClientService.Rpcs
{ {
var main = new JoinAlias(typeof(ClientGoodsSet)); var main = new JoinAlias(typeof(ClientGoodsSet));
var detail = new JoinAlias(typeof(ClientGoodsSet_Detail)); var detail = new JoinAlias(typeof(ClientGoodsSet_Detail));
var goods = new JoinAlias(typeof(Goods));
var query = new DQueryDom(main); var query = new DQueryDom(main);
query.From.AddJoin(JoinType.Inner, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "ClientGoodsSet_ID")); query.From.AddJoin(JoinType.Inner, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "ClientGoodsSet_ID"));
query.From.AddJoin(JoinType.Left, new DQDmoSource(goods), DQCondition.EQ(detail, "Goods_ID", goods, "ID"));
query.Where.Conditions.Add(DQCondition.EQ("ApplyClient", type)); query.Where.Conditions.Add(DQCondition.EQ("ApplyClient", type));
query.Columns.Add(DQSelectColumn.Field("ID")); query.Columns.Add(DQSelectColumn.Field("ID"));
@ -57,8 +59,13 @@ namespace BWP.B3ClientService.Rpcs
query.Columns.Add(DQSelectColumn.Field("StandardWeight", detail)); query.Columns.Add(DQSelectColumn.Field("StandardWeight", detail));
query.Columns.Add(DQSelectColumn.Field("StandardWeightUp", detail)); query.Columns.Add(DQSelectColumn.Field("StandardWeightUp", detail));
query.Columns.Add(DQSelectColumn.Field("StandardWeightLow", detail)); query.Columns.Add(DQSelectColumn.Field("StandardWeightLow", detail));
query.Columns.Add(DQSelectColumn.Field("Name", goods));
query.Columns.Add(DQSelectColumn.Field("Code", goods));
query.Columns.Add(DQSelectColumn.Field("Spec", goods));
query.Columns.Add(DQSelectColumn.Field("MainUnit", goods));
var list = new List<MinClientGoodsSet>(); var list = new List<MinClientGoodsSet>();
var goodsList = new List<MinGoods>();
using (var session = Dmo.NewSession()) using (var session = Dmo.NewSession())
{ {
using (var reader = session.ExecuteReader(query)) using (var reader = session.ExecuteReader(query))
@ -85,10 +92,22 @@ namespace BWP.B3ClientService.Rpcs
d.StandardWeight = (decimal?)reader[5]; d.StandardWeight = (decimal?)reader[5];
d.StandardWeightUp = (decimal?)reader[6]; d.StandardWeightUp = (decimal?)reader[6];
d.StandardWeightLow = (decimal?)reader[7]; d.StandardWeightLow = (decimal?)reader[7];
if (goodsList.Any(x => x.ID == d.Goods_ID))
continue;
goodsList.Add(new MinGoods
{
ID = d.ID,
Name = (string)reader[8],
Code = (string)reader[9],
Spec = (string)reader[10],
MainUnit = (string)reader[11]
});
} }
} }
} }
var eFirst = list.FirstOrDefault(x => !x.Stopped);
if (eFirst != null)
eFirst.Goods.AddRange(goodsList);
return JsonConvert.SerializeObject(list); return JsonConvert.SerializeObject(list);
} }
@ -99,7 +118,14 @@ namespace BWP.B3ClientService.Rpcs
public string Name { get; set; } public string Name { get; set; }
} }
class MinClientGoodsSet
class MinGoods : MinBaseInfo
{
public string Code { get; set; }
public string Spec { get; set; }
public string MainUnit { get; set; }
}
class MinClientGoodsSet
{ {
public long ID { get; set; } public long ID { get; set; }
@ -112,6 +138,12 @@ namespace BWP.B3ClientService.Rpcs
{ {
get { return _details; } get { return _details; }
} }
List<MinGoods> _goods = new List<MinGoods>();
public List<MinGoods> Goods
{
get { return _goods; }
}
} }
} }
} }

+ 147
- 0
B3ClientService/OfflinRpc/CarcassInStoreRpc.cs View File

@ -0,0 +1,147 @@
using BWP.B3ClientService.BO;
using BWP.B3ClientService.NamedValueTemplate;
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 CarcassInStoreRpc
{
#region 手持机端调用
[Rpc(RpcFlags.SkipAuth)]
public static string ScarBarCode(string url)
{
if (url.Contains("?"))
{
var arr = url.Split(new char[] { '?' }, StringSplitOptions.RemoveEmptyEntries);
if (arr.Length > 1)
{
var list = arr[1].Split(new char[] { '&' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var item in list)
{
var l = item.Split(new char[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
if (l.Length == 2 && l[0].ToUpper() == "CODE")
return l[1].Trim();
}
return string.Empty;
}
return string.Empty;
}
return url.Trim();
}
[Rpc(RpcFlags.SkipAuth)]
public static long PadInsert(long goodsID, string barCode)
{
if (string.IsNullOrEmpty(barCode))
throw new Exception("编码为空");
using (var session = Dmo.NewSession())
{
var id = CheckExist(barCode, session);
if (id == null)
{
var entity = new PadCarcassInStore();
entity.Goods_ID = goodsID;
entity.BarCode = barCode;
session.Insert(entity);
id = entity.ID;
}
else
Update(id.Value, goodsID, session);
session.Commit();
return id.Value;
}
}
static long? CheckExist(string barCode, IDmoSession session)
{
var query = new DQueryDom(new JoinAlias(typeof(PadCarcassInStore)));
query.Where.Conditions.Add(DQCondition.EQ("BarCode", barCode));
query.Columns.Add(DQSelectColumn.Field("ID"));
return query.EExecuteScalar<long?>(session);
}
static void Update(long id, long goodsID, IDmoSession session)
{
var update = new DQUpdateDom(typeof(PadCarcassInStore));
update.Where.Conditions.Add(DQCondition.EQ("ID", id));
update.Columns.Add(new DQUpdateColumn("Goods_ID", goodsID));
update.Columns.Add(new DQUpdateColumn("Sync", false));
update.Columns.Add(new DQUpdateColumn("RowVersion", DQExpression.Add(DQExpression.Field("RowVersion"), DQExpression.Value(1))));
session.ExecuteNonQuery(update);
}
[Rpc(RpcFlags.SkipAuth)]
public static string PadGetGoodsList()
{
var main = new JoinAlias(typeof(ClientGoodsSet));
var detail = new JoinAlias(typeof(ClientGoodsSet_Detail));
var query = new DQueryDom(main);
query.From.AddJoin(JoinType.Inner, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "ClientGoodsSet_ID"));
query.Columns.Add(DQSelectColumn.Field("Goods_ID", detail));
query.Columns.Add(DQSelectColumn.Field("Goods_Name", detail));
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("Stopped", false), DQCondition.EQ("ApplyClient", .)));
var list = query.EExecuteList<long, string>();
return JsonConvert.SerializeObject(list.Select(x => new MinGoodsObj { Goods_ID = x.Item1, Goods_Name = x.Item2 }));
}
#endregion
#region 客户端处理手持机数据
[Rpc(RpcFlags.SkipAuth)]
public static string GetUnSyncPadData()
{
var query = new DQueryDom(new JoinAlias(typeof(PadCarcassInStore)));
query.Columns.Add(DQSelectColumn.Field("ID"));
query.Columns.Add(DQSelectColumn.Field("BarCode"));
query.Columns.Add(DQSelectColumn.Field("Goods_ID"));
query.Columns.Add(DQSelectColumn.Field("RowVersion"));
query.Where.Conditions.Add(DQCondition.EQ("Sync", false));
var r = query.EExecuteList<long, string, long, int>();
var list = r.Select(x => new PadCarcassInStore { ID = x.Item1, BarCode = x.Item2, Goods_ID = x.Item3, RowVersion = x.Item4 });
return JsonConvert.SerializeObject(list);
}
[Rpc(RpcFlags.SkipAuth)]
public static int SetPadDataSync(string backInfo)
{
var arr = JsonConvert.DeserializeObject<List<IDRowVersion>>(backInfo);
using (var session = Dmo.NewSession())
{
foreach (var item in arr)
UpdateSynced(item, session);
session.Commit();
}
return 1;
}
static void UpdateSynced(IDRowVersion info, IDmoSession session)
{
var update = new DQUpdateDom(typeof(PadCarcassInStore));
update.Columns.Add(new DQUpdateColumn("Sync", true));
update.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("ID", info.ID), DQCondition.EQ("RowVersion", info.RowVersion)));
session.ExecuteNonQuery(update);
}
#endregion
}
class MinGoodsObj
{
public long Goods_ID { get; set; }
public string Goods_Name { get; set; }
}
}

+ 14
- 0
B3ClientService/OfflinRpc/SimpleBackObjs.cs View File

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BWP.B3ClientService.Rpcs
{
public class IDRowVersion
{
public long ID { get; set; }
public int RowVersion { get; set; }
}
}

+ 0
- 99
B3ClientService/Utils/UrlUtil.cs View File

@ -1,99 +0,0 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Text;
using System.Web;
namespace BWP.B3ClientService.Utils
{
public class UrlUtil
{
public static string GetValueByKey(string key, string queryString)
{
var namevalue = GetQueryString(queryString);
if (namevalue.AllKeys.ToList().Contains(key))
{
return namevalue[key];
}
return "";
}
private static NameValueCollection GetQueryString(string queryString)
{
return GetQueryString(queryString, null, false);
}
private static NameValueCollection GetQueryString(string queryString, Encoding encoding, bool isEncoded)
{
queryString = queryString.Replace("?", "");
NameValueCollection result = new NameValueCollection(StringComparer.OrdinalIgnoreCase);
if (!String.IsNullOrEmpty(queryString))
{
int count = queryString.Length;
for (int i = 0; i < count; i++)
{
int startIndex = i;
int index = -1;
while (i < count)
{
char item = queryString[i];
if (item == '=')
{
if (index < 0)
{
index = i;
}
}
else if (item == '&')
{
break;
}
i++;
}
string key = null;
string value = null;
if (index >= 0)
{
key = queryString.Substring(startIndex, index - startIndex);
value = queryString.Substring(index + 1, (i - index) - 1);
}
else
{
key = queryString.Substring(startIndex, i - startIndex);
}
if (isEncoded)
{
result[(string)MyUrlDeCode(key, encoding)] = MyUrlDeCode(value, encoding);
}
else
{
result[key] = value;
}
if ((i == (count - 1)) && (queryString[i] == '&'))
{
result[key] = String.Empty;
}
}
}
return result;
}
private static string MyUrlDeCode(string str, Encoding encoding)
{
if (encoding == null)
{
Encoding utf8 = Encoding.UTF8;
//首先用utf-8进行解码
string code = HttpUtility.UrlDecode(str.ToUpper(), utf8);
//将已经解码的字符再次进行编码.
string encode = HttpUtility.UrlEncode(code, utf8).ToUpper();
if (str == encode)
encoding = Encoding.UTF8;
else
encoding = Encoding.GetEncoding("gb2312");
}
return HttpUtility.UrlDecode(str, encoding);
}
}
}

Loading…
Cancel
Save