123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using MySystem.SpModels;
- using Library;
- using LitJson;
- using System.Threading;
- namespace MySystem
- {
- public class SycnSpChangeBindService
- {
- public readonly static SycnSpChangeBindService Instance = new SycnSpChangeBindService();
- private SycnSpChangeBindService()
- { }
- public void Start()
- {
- Thread th = new Thread(StartDo);
- th.IsBackground = true;
- th.Start();
- }
- public void StartDo()
- {
- while (true)
- {
- try
- {
- WebCMSEntities spdb = new WebCMSEntities();
- PxcModels.WebCMSEntities db = new PxcModels.WebCMSEntities();
- DateTime start = DateTime.Now.AddDays(-30);
- List<ChangeBindRecord> Binds = spdb.ChangeBindRecord.Where(m => m.ReBindTime >= start && m.Status == 1).OrderByDescending(m => m.Id).ToList();
- foreach (ChangeBindRecord Bind in Binds)
- {
- var tran = db.Database.BeginTransaction();
- try
- {
- string OldSnNum = Bind.MerSnNo;
- string NewSnNum = Bind.MerNewSnNo;
- string MerNo = Bind.MerNo;
- PxcModels.PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.KqMerNo == MerNo) ?? new PxcModels.PosMerchantInfo();
- PxcModels.MachineForSnNo oldForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == OldSnNum) ?? new PxcModels.MachineForSnNo();
- PxcModels.MachineForSnNo newForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == NewSnNum) ?? new PxcModels.MachineForSnNo();
- PxcModels.PosMachinesTwo oldpos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == oldForSnNo.SnId);
- PxcModels.PosMachinesTwo newpos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == newForSnNo.SnId);
- PxcModels.StoreHouse BackStore = db.StoreHouse.FirstOrDefault(m => m.Id == oldpos.StoreId) ?? new PxcModels.StoreHouse();
- PxcModels.StoreHouse OutStore = db.StoreHouse.FirstOrDefault(m => m.Id == newpos.StoreId) ?? new PxcModels.StoreHouse();
- string ChangeNo = "BMC" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(3);
- PxcModels.MachineChange add = db.MachineChange.Add(new PxcModels.MachineChange()
- {
- CreateDate = DateTime.Now,
- UpdateDate = DateTime.Now,
- ChangeNo = ChangeNo, //转换单号
- UserId = 0, //创客
- ChangeTime = DateTime.Now, //转换时间
- BackStoreId = BackStore.Id, //退回仓库
- BackStoreName = BackStore.StoreName, //退回仓库名称
- Remark = "机具更换", //订单备注
- BackStoreUserId = BackStore.UserId, //退回仓库归属人
- OutProductType = int.Parse(OutStore.BrandId), //出库产品类型
- OutProductName = OutStore.ProductName, //出库产品名称
- OutStoreId = OutStore.Id, //出库仓库
- OutStoreName = OutStore.StoreName, //出库仓库名称
- OutStoreAreas = OutStore.Areas, //出库仓库所在地区
- OutStoreAddress = OutStore.Address, //出库仓库地址
- OutStoreManager = "", //出库仓库联系人
- OutStoreManagerMobile = OutStore.ManageMobile, //出库仓库联系人手机号
- }).Entity;
- db.SaveChanges();
- int BackProductType = 0;
- string BackProductName = "";
- string ChangeDeviceName = "";
- string ChangeSnExpand = "";
- PxcModels.KqProducts oldPosBrand = db.KqProducts.FirstOrDefault(m => m.Id == oldpos.BrandId) ?? new PxcModels.KqProducts();
- PxcModels.KqProducts newPosBrand = db.KqProducts.FirstOrDefault(m => m.Id == newpos.BrandId) ?? new PxcModels.KqProducts();
- newpos.BindMerchantId = merchant.Id;
- newpos.BuyUserId = oldpos.BuyUserId;
- newpos.UserId = oldpos.UserId;
- newpos.RecycEndDate = oldpos.RecycEndDate;
- newpos.ScanQrTrade = oldpos.ScanQrTrade;
- newpos.DebitCardTrade = oldpos.DebitCardTrade;
- newpos.CreditTrade = oldpos.CreditTrade;
- newpos.PosSnType = oldpos.PosSnType;
- newpos.TransferTime = oldpos.TransferTime;
- newpos.IsPurchase = oldpos.IsPurchase;
- newpos.BindingState = oldpos.BindingState;
- newpos.ActivationState = oldpos.ActivationState;
- newpos.BindingTime = oldpos.BindingTime;
- newpos.ActivationTime = oldpos.ActivationTime;
- newpos.IsFirst = oldpos.IsFirst;
- // bool checkActReward = db.ActiveReward.Any(m => m.KqMerNo == merchant.KqMerNo);
- // if (!checkActReward)
- // {
- newpos.SeoKeyword = oldpos.SeoKeyword;
- newpos.PrizeParams = oldpos.PrizeParams;
- newpos.LeaderUserId= oldpos.LeaderUserId;
- // }
- // oldpos.BuyUserId = 0;
- // oldpos.UserId = 0;
- oldpos.Status = -1;
- PxcModels.MachineForMerNo forMerNo = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == merchant.KqMerNo);
- if (forMerNo != null)
- {
- forMerNo.SnId = newpos.Id;
- }
- merchant.KqSnNo = NewSnNum;
- db.MachineChangeDetail.Add(new PxcModels.MachineChangeDetail()
- {
- CreateDate = DateTime.Now,
- UpdateDate = DateTime.Now,
- ChangeNo = ChangeNo, //订单号
- ChangeId = add.Id, //订单Id
- BackProductType = oldpos.BrandId, //退回产品类型
- BackProductName = oldPosBrand.Name, //退回产品名称
- UserId = 0, //创客
- BackSnNo = oldpos.PosSn, //设备SN编号
- OutProductType = newpos.BrandId, //出库产品类型
- OutProductName = newPosBrand.Name, //出库产品名称
- OutSnNo = newpos.PosSn, //出库设备SN编号
- OutSnType = newpos.PosSnType, //出库SN机具类型
- Remark = "机具更换", //备注
- BackSnType = oldpos.PosSnType, //退回SN机具类型
- });
- db.SaveChanges();
- BackProductType = oldpos.BrandId;
- BackProductName = newPosBrand.Name;
- ChangeDeviceName = oldpos.DeviceName;
- ChangeSnExpand = oldpos.PosSn;
- add.BackProductType = BackProductType; //退回产品类型
- add.BackProductName = BackProductName; //退回产品名称
- add.ChangeDeviceName = ChangeDeviceName; //转换机具名称
- add.ChangeDeviceNum = 1; //转换机具数量
- add.ChangeSnExpand = ChangeSnExpand; //机具SN
- db.SaveChanges();
- ChangeBindRecord edit = spdb.ChangeBindRecord.FirstOrDefault(m => m.Id == Bind.Id);
- if (edit != null)
- {
- edit.Status = 2;
- spdb.SaveChanges();
- }
- tran.Commit();
- }
- catch (Exception ex)
- {
- tran.Rollback();
- function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n" + Bind.Id, "同步SP换绑数据到MAIN异常");
- }
- tran.Dispose();
- }
- spdb.Dispose();
- db.Dispose();
- }
- catch (Exception ex)
- {
- function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "同步SP换绑数据到MAIN异常");
- }
- Thread.Sleep(1000);
- }
- }
- }
- }
|