From 5dc0e35745be99f00b3a246b2573b684cbe8d4ce Mon Sep 17 00:00:00 2001
From: yibo <361071264@qq.com>
Date: Sat, 12 May 2018 17:41:39 +0800
Subject: [PATCH] =?UTF-8?q?=E7=99=BD=E6=9D=A1=E4=BF=A1=E6=81=AF=E4=B8=8A?=
=?UTF-8?q?=E4=BC=A0=E8=BF=BD=E6=BA=AF=E7=B3=BB=E7=BB=9F=E9=80=BB=E8=BE=91?=
=?UTF-8?q?=E8=B0=83=E6=95=B4=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
B3ClientService/B3ClientService.csproj | 1 +
.../BO/Bill/ButcherTraceBackLog.cs | 14 ++
.../Tasks/SyncCarcassInStoreToTrackBack.cs | 154 ++++++++++++++++--
3 files changed, 157 insertions(+), 12 deletions(-)
create mode 100644 B3ClientService/BO/Bill/ButcherTraceBackLog.cs
diff --git a/B3ClientService/B3ClientService.csproj b/B3ClientService/B3ClientService.csproj
index fe01389..8f82816 100644
--- a/B3ClientService/B3ClientService.csproj
+++ b/B3ClientService/B3ClientService.csproj
@@ -136,6 +136,7 @@
+
diff --git a/B3ClientService/BO/Bill/ButcherTraceBackLog.cs b/B3ClientService/BO/Bill/ButcherTraceBackLog.cs
new file mode 100644
index 0000000..9bd5233
--- /dev/null
+++ b/B3ClientService/BO/Bill/ButcherTraceBackLog.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using TSingSoft.WebPluginFramework;
+
+namespace BWP.B3ClientService.BO
+{
+ [BOClass]
+ public class ButcherTraceBackLog
+ {
+ public long GradeAndWeight_ID { get; set; }
+ }
+}
diff --git a/B3ClientService/Tasks/SyncCarcassInStoreToTrackBack.cs b/B3ClientService/Tasks/SyncCarcassInStoreToTrackBack.cs
index 66d23ad..6e24025 100644
--- a/B3ClientService/Tasks/SyncCarcassInStoreToTrackBack.cs
+++ b/B3ClientService/Tasks/SyncCarcassInStoreToTrackBack.cs
@@ -9,6 +9,7 @@ using System.Linq;
using System.Text;
using TSingSoft.WebPluginFramework.TimerTasks;
using TSingSoft.WebPluginFramework;
+using Forks.EnterpriseServices.SqlDoms;
namespace BWP.B3ClientService.Tasks
{
@@ -19,23 +20,29 @@ namespace BWP.B3ClientService.Tasks
var url = new B3ClientServiceOnLineConfig().TraceBackUrl.Value;
if (string.IsNullOrEmpty(url))
return;
- url = url + "InsertInStore";
using (var session = Dmo.NewSession())
{
- var list = GetUnSyncdInfo(session);
- if (!list.Any())
- return;
- var splitList = TraceBackInfoUtil.SplitList(list, 1000);
- foreach (var infos in splitList)
- {
- var arr = JsonConvert.SerializeObject(infos);
- TraceBackInfoUtil.Insert(url, arr);
- }
- DeleteSyncd(session, list.Min(x => x.ID), list.Max(x => x.ID));
+ UploadButcherInfo(session, url);
+ UploadInStoreInfo(session, url);
session.Commit();
}
}
+ void UploadInStoreInfo(IDmoSession session, string url)
+ {
+ var sUrl = url + "InsertInStore";
+ var list = GetUnSyncdInfo(session);
+ if (!list.Any())
+ return;
+ var splitList = TraceBackInfoUtil.SplitList(list, 1000);
+ foreach (var infos in splitList)
+ {
+ var arr = JsonConvert.SerializeObject(infos);
+ TraceBackInfoUtil.Insert(sUrl, arr);
+ }
+ DeleteSyncd(session, list.Min(x => x.ID), list.Max(x => x.ID));
+ }
+
List GetUnSyncdInfo(IDmoSession session)
{
var query = new DQueryDom(new JoinAlias(typeof(SyncCarcassInStoreLog)));
@@ -54,10 +61,133 @@ namespace BWP.B3ClientService.Tasks
session.ExecuteNonQuery(delete);
}
+ void UploadButcherInfo(IDmoSession session, string url)
+ {
+ var sUrl = url + "ButcherInsert";
+ var list = GetTraceBackInfo(session);
+ if (!list.Any())
+ return;
+ var arr = JsonConvert.SerializeObject(list);
+ TraceBackInfoUtil.Insert(sUrl, arr);
+ foreach (var item in list)
+ session.Insert(new ButcherTraceBackLog { GradeAndWeight_ID = item.ID });
+ }
+
+ List GetTraceBackInfo(IDmoSession session)
+ {
+ var list = new List();
+
+ var main = new JoinAlias(typeof(GradeAndWeight_Detail));
+ var log = new JoinAlias(typeof(ButcherTraceBackLog));
+ var detail = new JoinAlias(typeof(OrderDetail));
+ var weight = new JoinAlias(typeof(WeightBill));
+ var query = new DQueryDom(main);
+ query.From.AddJoin(JoinType.Left, new DQDmoSource(log), DQCondition.EQ(main, "ID", log, "GradeAndWeight_ID"));
+ query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(main, "OrderDetail_ID", detail, "ID"));
+ query.From.AddJoin(JoinType.Left, new DQDmoSource(weight), DQCondition.EQ(detail, "WeightBill_ID", weight, "ID"));
+ var wd = WeightFramerTemp.Register(query, weight);
+ var farmer = new JoinAlias(typeof(Farmer));
+ query.From.AddJoin(JoinType.Left, new DQDmoSource(farmer), DQCondition.EQ(wd, "Farmer_ID", farmer, "ID"));
+ query.Columns.Add(DQSelectColumn.Field("BarCode"));
+ query.Columns.Add(DQSelectColumn.Field("Technics"));
+ query.Columns.Add(DQSelectColumn.Field("Time"));
+ query.Columns.Add(DQSelectColumn.Field("Date"));
+ query.Columns.Add(DQSelectColumn.Field("Index"));
+ query.Columns.Add(DQSelectColumn.Field("AnimalTestNumber", weight));
+ query.Columns.Add(DQSelectColumn.Field("AnimalTestMan", weight));
+ query.Columns.Add(DQSelectColumn.Field("Name", farmer));
+ query.Columns.Add(DQSelectColumn.Field("Address", farmer));
+ query.Columns.Add(DQSelectColumn.Field("ID"));
+ query.Range = SelectRange.Top(500);
+ query.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID"));
+ query.Where.Conditions.Add(DQCondition.And(DQCondition.InEQ(DQExpression.Field("BarCode"), DQExpression.Value("")), DQCondition.IsNull(DQExpression.Field(log, "GradeAndWeight_ID"))));
+ query.Where.Conditions.Add(DQCondition.GreaterThan("Date", new DateTime(2018, 2, 12)));
+ using (var reader = session.ExecuteReader(query))
+ {
+ while (reader.Read())
+ {
+ var info = new TraceBackInfo();
+ info.Code = (string)reader[0];
+ info.Goods_Name = (short)reader[1] == 0 ? "带皮白条" : "去皮白条";
+ info.ProductDate = string.Format("{0:yyyyMMdd}", reader[2]);
+ info.ExpirationTime = "0-4℃ 4日";
+ info.ProductCompany = "青岛万福集团股份有限公司";
+ info.CompanyAddress = "青岛莱西市珠海路五号";
+ info.CompanyTel = "0532-55650698";
+ info.ButcherTime = string.Format("{0:yyyyMMdd}", reader[3]);
+ info.ButcherBatch = string.Format("{0}{1:000}", info.ButcherTime, reader[4]);
+ info.TestingNo = (string)reader[5];
+ info.TestingMan = (string)reader[6];
+ if (!string.IsNullOrEmpty(info.TestingNo))
+ info.TestingResult = "合格";
+ info.Farmer = (string)reader[7];
+ info.PigFarmAddress = (string)reader[8];
+ info.ID = (long)reader[9];
+ list.Add(info);
+ }
+ }
+
+ return list;
+ }
+
public string Name
{
- get { return "抽取白条入库信息到追溯服务器"; }
+ get { return "抽取白条信息到追溯服务器"; }
}
+
+ class WeightFramerTemp
+ {
+ public long WeightID { get; set; }
+ public long? Farmer_ID { get; set; }
+
+ public static JoinAlias Register(DQueryDom root, JoinAlias weight)
+ {
+ var query = new DQueryDom(new JoinAlias(typeof(WeightBill_FarmerDetail)));
+ query.Columns.Add(DQSelectColumn.Field("WeightBill_ID"));
+ query.Columns.Add(DQSelectColumn.Max("Farmer_ID"));
+ query.GroupBy.Expressions.Add(DQExpression.Field("WeightBill_ID"));
+ query.Where.Conditions.Add(DQCondition.EQ("DeleteState", false));
+
+ var alias = new JoinAlias(typeof(WeightFramerTemp));
+ root.RegisterQueryTable(typeof(WeightFramerTemp), new string[] { "WeightID", "Farmer_ID" }, query);
+ root.From.AddJoin(JoinType.Left, new DQDmoSource(alias), DQCondition.EQ(weight, "ID", alias, "WeightID"));
+ return alias;
+ }
+ }
+ }
+
+ class TraceBackInfo
+ {
+ [JsonIgnore]
+ public long ID { get; set; }
+ //[LogicName("条码")]
+ public string Code { get; set; }
+ //[LogicName("产品名称")]
+ public string Goods_Name { get; set; }
+ //[LogicName("生产日期")]
+ public string ProductDate { get; set; }
+ //[LogicName("保质期")]
+ public string ExpirationTime { get; set; }
+ //[LogicName("生产厂家")]
+ public string ProductCompany { get; set; }
+ //[LogicName("生产厂址")]
+ public string CompanyAddress { get; set; }
+ //[LogicName("电话")]
+ public string CompanyTel { get; set; }
+ //[LogicName("生猪产地")]
+ public string PigFarmAddress { get; set; }
+ //[LogicName("动检证号")]
+ public string TestingNo { get; set; }
+ //[LogicName("动检结果")]
+ public string TestingResult { get; set; }
+ //[LogicName("动检人员")]
+ public string TestingMan { get; set; }
+ //[LogicName("养殖户")]
+ public string Farmer { get; set; }
+ //[LogicName("屠宰批次")]
+ public string ButcherBatch { get; set; }
+ //[LogicName("屠宰时间")]
+ public string ButcherTime { get; set; }
}
class TraceBackInStoreInfo