ExcelHelper.cs 115 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473
  1. using System;
  2. using System.Threading;
  3. using System.Linq;
  4. using System.Data;
  5. using Library;
  6. using MySystem.Models;
  7. using System.Collections.Generic;
  8. namespace MySystem
  9. {
  10. public class ExcelHelper
  11. {
  12. public readonly static ExcelHelper Instance = new ExcelHelper();
  13. private ExcelHelper()
  14. {
  15. }
  16. public void Start()//启动
  17. {
  18. Thread thread = new Thread(ImportPostDo);
  19. thread.IsBackground = true;
  20. thread.Start();
  21. }
  22. public void ImportPostDo()
  23. {
  24. while (true)
  25. {
  26. string data = RedisDbconn.Instance.RPop<string>("ExcelImport10");
  27. if (!string.IsNullOrEmpty(data))
  28. {
  29. string[] dataList = data.Split("#cut#");
  30. string _ExcelPath = dataList[0];
  31. string _Kind = dataList[1];
  32. string checkKey = dataList[2];
  33. string Operator = dataList[3]; // 操作人
  34. int SuccessCount = 0;
  35. int DoCount = 0;
  36. string FullExcelPath = function.getPath(_ExcelPath);
  37. FullExcelPath = FullExcelPath.Replace("//", "/");
  38. DataTable list = new PublicFunction().ExcelToDataTable(FullExcelPath);
  39. int TotalCount = list.Rows.Count;
  40. while (DoCount < list.Rows.Count)
  41. {
  42. WebCMSEntities db = new WebCMSEntities();
  43. //机具入库
  44. if (_Kind == "1")
  45. {
  46. var tran = db.Database.BeginTransaction();
  47. try
  48. {
  49. int Size = 100;
  50. if (list.Rows.Count - DoCount < 100)
  51. {
  52. Size = list.Rows.Count - DoCount;
  53. }
  54. Dictionary<string, int> storeData = new Dictionary<string, int>();
  55. for (int i = DoCount; i < DoCount + Size; i++)
  56. {
  57. DataRow dr = list.Rows[i];
  58. string BatchNo = dr[0].ToString(); // 业务批次号
  59. string SnNo = dr[1].ToString(); // SN编号
  60. SnNo = SnNo.Replace(" ", "");
  61. SnNo = SnNo.Replace("`", "");
  62. string DeviceName = dr[2].ToString(); // 设备厂商
  63. string DeviceKind = dr[3].ToString(); // 设备型号
  64. string DeviceType = dr[4].ToString(); // 设备类型区分(客小爽电签POS填写:KysSignPos/KssSignPos)
  65. string StoreNo = dr[5].ToString(); // 收货仓库编号
  66. string BrandIdString = dr[6].ToString(); // 产品类型(5-客小爽Mpos,6-客小爽大POS,61-客小爽电签POS,8-客小爽超级Mpos)
  67. string InputMan = dr[7].ToString(); // 入库操作人
  68. string InputNote = dr[8].ToString(); // 入库备注
  69. MachineForSnNo machinefor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo);
  70. if (machinefor == null)
  71. {
  72. int BrandId = int.Parse(function.CheckInt(BrandIdString));
  73. int CardType = BrandId == 14 ? 2 : 0;
  74. KqProducts kqProduct = db.KqProducts.FirstOrDefault(m => m.Id == BrandId) ?? new KqProducts();
  75. if (kqProduct.Id > 0)
  76. {
  77. var Areas = dr[9].ToString(); // 广电卡所属地区
  78. if (kqProduct.Id == 14 && string.IsNullOrEmpty(Areas))
  79. {
  80. RedisDbconn.Instance.AddList("ErrList" + checkKey, "广电卡必填归属地区信息");
  81. }
  82. else
  83. {
  84. if (kqProduct.Id != 14) Areas = null;
  85. StoreForCode storefor = db.StoreForCode.FirstOrDefault(m => m.Code == StoreNo) ?? new StoreForCode();
  86. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == storefor.StoreId) ?? new StoreHouse();
  87. PosMachinesTwo pos = db.PosMachinesTwo.Add(new PosMachinesTwo()
  88. {
  89. CreateDate = DateTime.Now,
  90. PosSn = SnNo, //SN编号
  91. BrandId = BrandId, //产品类型
  92. StoreId = storefor.StoreId, //所在仓库
  93. DeviceType = DeviceType, //设备类型
  94. BatchNo = BatchNo,
  95. DeviceName = DeviceName,
  96. DeviceKind = DeviceKind,
  97. SourceStoreId = storefor.StoreId, //源仓库
  98. CardType = CardType,
  99. OutBatchNo = Areas,
  100. }).Entity;
  101. store.ProductName = kqProduct.Name;
  102. store.BrandId = BrandId.ToString();
  103. StoreStockChange stockchange = db.StoreStockChange.Add(new StoreStockChange()
  104. {
  105. CreateDate = DateTime.Now,
  106. CreateMan = Operator,
  107. StoreId = storefor.StoreId, //仓库
  108. BrandId = BrandId, //产品类型
  109. ProductName = RelationClass.GetKqProductBrandInfo(BrandId), //产品名称
  110. BizBatchNo = BatchNo, //业务批次号
  111. TransType = 0, //交易类型
  112. SnNo = SnNo, //SN编号
  113. StockOpDirect = 0, //库存操作方向
  114. SnStatus = 0, //SN状态
  115. DeviceVendor = DeviceName, //设备厂商
  116. DeviceModel = DeviceKind, //设备型号
  117. DeviceType = DeviceType, //设备类型
  118. ToDate = DateTime.Now, //入库时间
  119. ToRemark = InputNote, //入库备注
  120. BrandType = DeviceType, //品牌类型
  121. SourceStoreId = storefor.StoreId, //源仓库
  122. }).Entity;
  123. db.SaveChanges();
  124. string ChangeNo = "SC";
  125. int StoreStockChangeId = stockchange.Id;
  126. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  127. for (int j = 0; j < 18 - StoreStockChangeId.ToString().Length; j++)
  128. {
  129. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  130. }
  131. ChangeNo += StoreStockChangeIdString;
  132. stockchange.ChangeNo = ChangeNo; //交易流水编号
  133. db.StoreChangeHistory.Add(new StoreChangeHistory()
  134. {
  135. CreateDate = DateTime.Now,
  136. CreateMan = Operator,
  137. UserId = store.UserId, //创客
  138. BrandId = BrandId, //产品类型
  139. ChangeRecordNo = ChangeNo, //变更记录单号
  140. BizBatchNo = BatchNo, //业务批次号
  141. TransType = 0, //交易类型
  142. SnNo = SnNo, //SN编号
  143. StockOpDirect = 0, //库存操作方向
  144. DeviceVendor = DeviceName, //设备厂商
  145. DeviceType = DeviceType, //设备类型
  146. DeviceModel = DeviceKind, //设备型号
  147. ToUserId = store.UserId, //收货创客
  148. ToStoreId = store.Id, //创客退货收货仓库
  149. ToDate = DateTime.Now, //入库时间
  150. ToRemark = InputNote, //入库备注
  151. SourceStoreId = storefor.StoreId, //源仓库
  152. StoreId = storefor.StoreId, //仓库
  153. });
  154. machinefor = db.MachineForSnNo.Add(new MachineForSnNo()
  155. {
  156. SnNo = SnNo,
  157. SnId = pos.Id
  158. }).Entity;
  159. RedisDbconn.Instance.Set("MachineForSnNo:" + SnNo, machinefor);
  160. db.SaveChanges();
  161. RedisDbconn.Instance.AddList("PosMachineList:" + storefor.StoreId, pos);
  162. if (!storeData.ContainsKey(storefor.StoreId + "_" + BrandId))
  163. {
  164. storeData.Add(storefor.StoreId + "_" + BrandId, 1);
  165. }
  166. else
  167. {
  168. storeData[storefor.StoreId + "_" + BrandId] += 1;
  169. }
  170. SuccessCount += 1;
  171. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  172. }
  173. }
  174. else
  175. {
  176. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "的品牌填写有误");
  177. }
  178. }
  179. else
  180. {
  181. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "已存在,请勿重复录入");
  182. }
  183. }
  184. DoCount += Size;
  185. foreach (string key in storeData.Keys)
  186. {
  187. string[] keylist = key.Split('_');
  188. int StoreId = int.Parse(keylist[0]);
  189. int BrandId = int.Parse(keylist[1]);
  190. int OpStoreNum = storeData[key];
  191. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
  192. StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
  193. {
  194. CreateDate = DateTime.Now,
  195. CreateMan = Operator,
  196. StoreId = StoreId, //仓库
  197. TransType = 0, //交易类型
  198. BrandId = BrandId, //产品类型
  199. OpStoreNum = OpStoreNum, //操作库存数
  200. OpSymbol = "+", //操作符
  201. BeforeTotalNum = store.TotalNum, //操作前总库存数
  202. AfterTotalNum = store.TotalNum + OpStoreNum, //操作后总库存数
  203. BeforeLaveNum = store.LaveNum, //操作前剩余库存数
  204. AfterLaveNum = store.LaveNum + OpStoreNum, //操作后剩余库存数
  205. BeforeOutNum = store.OutNum, //操作前出库数
  206. AfterOutNum = store.OutNum, //操作后出库数
  207. }).Entity;
  208. db.SaveChanges();
  209. string ChangeNo = "SC";
  210. int StoreStockChangeId = balance.Id;
  211. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  212. for (int i = 0; i < 18 - StoreStockChangeId.ToString().Length; i++)
  213. {
  214. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  215. }
  216. ChangeNo += StoreStockChangeIdString;
  217. balance.TransRecordNo = ChangeNo; //交易流水编号
  218. store.TotalNum += OpStoreNum;
  219. store.LaveNum += OpStoreNum;
  220. db.SaveChanges();
  221. }
  222. db.SaveChanges();
  223. tran.Commit();
  224. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  225. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  226. }
  227. catch (Exception ex)
  228. {
  229. DoCount = list.Rows.Count;
  230. function.WriteLog(ex.ToString(), "机具导入异常");
  231. tran.Rollback();
  232. ErrorMsg msg = new ErrorMsg()
  233. {
  234. Time = DateTime.Now,
  235. ErrorContent = ex.ToString(),
  236. };
  237. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常");
  238. }
  239. tran.Dispose();
  240. }
  241. //仓库调拨
  242. else if (_Kind == "2")
  243. {
  244. Dictionary<string, int> storeData = new Dictionary<string, int>();
  245. Dictionary<string, int> toStoreData = new Dictionary<string, int>();
  246. using (var tran = db.Database.BeginTransaction())
  247. {
  248. try
  249. {
  250. int Size = 100;
  251. if (list.Rows.Count - DoCount < 100)
  252. {
  253. Size = list.Rows.Count - DoCount;
  254. }
  255. for (int i = DoCount; i < DoCount + Size; i++)
  256. {
  257. DataRow dr = list.Rows[i];
  258. string BatchNo = dr[0].ToString(); // 业务批次号
  259. string OutStoreNo = dr[1].ToString(); // 出货仓库编号
  260. string OutOperator = dr[2].ToString(); // 出库操作人
  261. string SnNo = dr[3].ToString(); // SN编号
  262. SnNo = SnNo.Replace(" ", "");
  263. string StoreNo = dr[4].ToString(); // 收货仓库编号
  264. string BrandIdString = dr[5].ToString(); // 产品类型
  265. string OutNote = "";
  266. if (list.Columns.Count > 6)
  267. {
  268. OutNote = dr[6].ToString(); // 出库备注
  269. }
  270. int BrandId = int.Parse(function.CheckInt(BrandIdString));
  271. //调拨时若出货仓库与填写仓库不符,则该条出货失败
  272. var posinfo = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == SnNo && m.BrandId == BrandId) ?? new PosMachinesTwo();
  273. var storeinfo = db.StoreForCode.FirstOrDefault(m => m.Code == OutStoreNo && m.StoreId == posinfo.StoreId) ?? new StoreForCode();
  274. if (posinfo.Id > 0)
  275. {
  276. if (storeinfo.StoreId > 0)
  277. {
  278. KqProducts kqProduct = db.KqProducts.FirstOrDefault(m => m.Id == BrandId) ?? new KqProducts();
  279. if (kqProduct.Id > 0)
  280. {
  281. StoreForCode storefor = db.StoreForCode.FirstOrDefault(m => m.Code == OutStoreNo) ?? new StoreForCode();
  282. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == storefor.StoreId) ?? new StoreHouse();
  283. if (store.LaveNum > 0)
  284. {
  285. StoreForCode tostorefor = db.StoreForCode.FirstOrDefault(m => m.Code == StoreNo) ?? new StoreForCode();
  286. StoreHouse tostore = db.StoreHouse.FirstOrDefault(m => m.Id == tostorefor.StoreId) ?? new StoreHouse();
  287. if (tostore.Id > 0)
  288. {
  289. MachineForSnNo machinefor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo) ?? new MachineForSnNo();
  290. PosMachinesTwo machine = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machinefor.SnId && m.StoreId != tostore.Id && m.BuyUserId == 0 && m.UserId == 0) ?? new PosMachinesTwo();
  291. if (machine.Id > 0)
  292. {
  293. if (machine.PreUserId == 0)
  294. {
  295. StoreStockChange stockchange = db.StoreStockChange.Add(new StoreStockChange()
  296. {
  297. CreateDate = DateTime.Now,
  298. CreateMan = Operator,
  299. StoreId = storefor.StoreId, //仓库
  300. BrandId = BrandId, //产品类型
  301. ProductName = RelationClass.GetKqProductBrandInfo(BrandId), //产品名称
  302. BizBatchNo = BatchNo, //业务批次号
  303. TransType = 1, //交易类型
  304. SnNo = SnNo, //SN编号
  305. StockOpDirect = 1, //库存操作方向
  306. SnStatus = 1, //SN状态
  307. DeviceVendor = machine.DeviceName, //设备厂商
  308. DeviceModel = machine.DeviceKind, //设备型号
  309. DeviceType = machine.DeviceType, //设备类型
  310. FromUserId = store.UserId, //出货人
  311. FromDate = DateTime.Now, //出库时间
  312. FromRemark = OutNote, //出库备注
  313. ToUserId = tostore.UserId, //收货人
  314. ToStoreId = tostorefor.StoreId, //退货收货仓库
  315. SourceStoreId = machine.SourceStoreId, //源仓库编号
  316. BrandType = machine.DeviceType, //品牌类型
  317. }).Entity;
  318. db.SaveChanges();
  319. string ChangeNo = "SC";
  320. int StoreStockChangeId = stockchange.Id;
  321. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  322. for (int j = 0; j < 18 - StoreStockChangeId.ToString().Length; j++)
  323. {
  324. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  325. }
  326. ChangeNo += StoreStockChangeIdString;
  327. stockchange.ChangeNo = ChangeNo; //交易流水编号
  328. machine.StoreId = tostorefor.StoreId;
  329. db.StoreChangeHistory.Add(new StoreChangeHistory()
  330. {
  331. CreateDate = DateTime.Now,
  332. CreateMan = Operator,
  333. UserId = store.UserId, //创客
  334. ToUserId = tostore.UserId, //收货创客
  335. BrandId = BrandId, //产品类型
  336. ChangeRecordNo = ChangeNo, //变更记录单号
  337. BizBatchNo = BatchNo, //业务批次号
  338. TransType = 1, //交易类型
  339. SnNo = SnNo, //SN编号
  340. SnType = machine.PosSnType, //SN机具类型
  341. StockOpDirect = 1, //库存操作方向
  342. DeviceVendor = machine.DeviceName, //设备厂商
  343. DeviceModel = machine.DeviceKind, //设备型号
  344. DeviceType = machine.DeviceType, //设备类型
  345. FromUserId = store.UserId, //出货创客
  346. FromDate = DateTime.Now, //出库时间
  347. FromRemark = OutNote, //出库备注
  348. SourceStoreId = machine.SourceStoreId, //源仓库
  349. ToStoreId = tostore.Id, //收货仓库
  350. StoreId = store.Id, //仓库
  351. });
  352. if (!storeData.ContainsKey(storefor.StoreId + "_" + BrandId))
  353. {
  354. storeData.Add(storefor.StoreId + "_" + BrandId, 1);
  355. }
  356. else
  357. {
  358. storeData[storefor.StoreId + "_" + BrandId] += 1;
  359. }
  360. if (!toStoreData.ContainsKey(tostorefor.StoreId + "_" + BrandId))
  361. {
  362. toStoreData.Add(tostorefor.StoreId + "_" + BrandId, 1);
  363. }
  364. else
  365. {
  366. toStoreData[tostorefor.StoreId + "_" + BrandId] += 1;
  367. }
  368. SuccessCount += 1;
  369. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  370. }
  371. else
  372. {
  373. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "为预发机,不可调拨");
  374. }
  375. }
  376. else
  377. {
  378. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "不是仓库机或已经在填写的收货仓库中");
  379. }
  380. if (string.IsNullOrEmpty(tostore.ProductName))
  381. {
  382. tostore.BrandId = BrandId.ToString();
  383. tostore.ProductName = kqProduct.Name;
  384. }
  385. }
  386. else
  387. {
  388. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "填写的收货仓库编号不正确");
  389. }
  390. }
  391. else
  392. {
  393. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "所在的仓库" + store.StoreName + "(" + store.StoreNo + ")库存不足");
  394. }
  395. db.SaveChanges();
  396. }
  397. else
  398. {
  399. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "的品牌填写有误");
  400. }
  401. }
  402. else
  403. {
  404. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "出货仓库与填写仓库不符");
  405. }
  406. }
  407. else
  408. {
  409. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "的品牌填写有误");
  410. }
  411. }
  412. DoCount += Size;
  413. foreach (string key in storeData.Keys)
  414. {
  415. string[] keylist = key.Split('_');
  416. int StoreId = int.Parse(keylist[0]);
  417. int BrandId = int.Parse(keylist[1]);
  418. int OpStoreNum = storeData[key];
  419. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
  420. StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
  421. {
  422. CreateDate = DateTime.Now,
  423. CreateMan = Operator,
  424. StoreId = StoreId, //仓库
  425. TransType = 1, //交易类型
  426. BrandId = BrandId, //产品类型
  427. OpStoreNum = OpStoreNum, //操作库存数
  428. OpSymbol = "-", //操作符
  429. BeforeTotalNum = store.TotalNum, //操作前总库存数
  430. AfterTotalNum = store.TotalNum, //操作后总库存数
  431. BeforeLaveNum = store.LaveNum, //操作前剩余库存数
  432. AfterLaveNum = store.LaveNum - OpStoreNum, //操作后剩余库存数
  433. BeforeOutNum = store.OutNum, //操作前出库数
  434. AfterOutNum = store.OutNum + OpStoreNum, //操作后出库数
  435. }).Entity;
  436. db.SaveChanges();
  437. string ChangeNo = "SC";
  438. int StoreStockChangeId = balance.Id;
  439. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  440. for (int i = 0; i < 18 - StoreStockChangeId.ToString().Length; i++)
  441. {
  442. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  443. }
  444. ChangeNo += StoreStockChangeIdString;
  445. balance.TransRecordNo = ChangeNo; //交易流水编号
  446. store.LaveNum -= OpStoreNum;
  447. store.OutNum += OpStoreNum;
  448. db.SaveChanges();
  449. string SendData = "{\"Kind\":\"5\",\"Data\":{\"StoreId\":\"" + StoreId + "\",\"BrandId\":\"" + BrandId + "\",\"OpStoreNum\":\"" + OpStoreNum + "\"}}";
  450. RedisDbconn.Instance.AddList("StoreApplyQueue", SendData);
  451. }
  452. foreach (string key in toStoreData.Keys)
  453. {
  454. string[] keylist = key.Split('_');
  455. int StoreId = int.Parse(keylist[0]);
  456. int BrandId = int.Parse(keylist[1]);
  457. int OpStoreNum = toStoreData[key];
  458. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
  459. StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
  460. {
  461. CreateDate = DateTime.Now,
  462. CreateMan = Operator,
  463. StoreId = StoreId, //仓库
  464. TransType = 0, //交易类型
  465. BrandId = BrandId, //产品类型
  466. OpStoreNum = OpStoreNum, //操作库存数
  467. OpSymbol = "+", //操作符
  468. BeforeTotalNum = store.TotalNum, //操作前总库存数
  469. AfterTotalNum = store.TotalNum + OpStoreNum, //操作后总库存数
  470. BeforeLaveNum = store.LaveNum, //操作前剩余库存数
  471. AfterLaveNum = store.LaveNum + OpStoreNum, //操作后剩余库存数
  472. BeforeOutNum = store.OutNum, //操作前出库数
  473. AfterOutNum = store.OutNum, //操作后出库数
  474. }).Entity;
  475. db.SaveChanges();
  476. string ChangeNo = "SC";
  477. int StoreStockChangeId = balance.Id;
  478. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  479. for (int i = 0; i < 18 - StoreStockChangeId.ToString().Length; i++)
  480. {
  481. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  482. }
  483. ChangeNo += StoreStockChangeIdString;
  484. balance.TransRecordNo = ChangeNo; //交易流水编号
  485. store.TotalNum += OpStoreNum;
  486. store.LaveNum += OpStoreNum;
  487. db.SaveChanges();
  488. string SendData = "{\"Kind\":\"5\",\"Data\":{\"StoreId\":\"" + StoreId + "\",\"BrandId\":\"" + BrandId + "\",\"OpStoreNum\":\"-" + OpStoreNum + "\"}}";
  489. RedisDbconn.Instance.AddList("StoreApplyQueue", SendData);
  490. }
  491. db.SaveChanges();
  492. tran.Commit();
  493. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  494. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  495. }
  496. catch (Exception ex)
  497. {
  498. DoCount = list.Rows.Count;
  499. tran.Rollback();
  500. ErrorMsg msg = new ErrorMsg()
  501. {
  502. Time = DateTime.Now,
  503. ErrorContent = ex.ToString(),
  504. };
  505. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常");
  506. }
  507. }
  508. }
  509. //仓库发货至创客
  510. else if (_Kind == "3")
  511. {
  512. Dictionary<string, int> storeData = new Dictionary<string, int>();
  513. using (var tran = db.Database.BeginTransaction())
  514. {
  515. try
  516. {
  517. int Size = 100;
  518. if (list.Rows.Count - DoCount < 100)
  519. {
  520. Size = list.Rows.Count - DoCount;
  521. }
  522. for (int i = DoCount; i < DoCount + Size; i++)
  523. {
  524. DataRow dr = list.Rows[i];
  525. string BatchNo = dr[0].ToString(); // 业务批次号
  526. BatchNo = BatchNo.Replace(" ", "");
  527. string OutStoreNo = dr[1].ToString(); // 出货仓库编号
  528. OutStoreNo = OutStoreNo.Replace(" ", "");
  529. string OutOperator = dr[2].ToString(); // 出库操作人
  530. OutOperator = OutOperator.Replace(" ", "");
  531. string SnNo = dr[3].ToString(); // SN编号
  532. SnNo = SnNo.Replace(" ", "");
  533. string MakerCode = dr[4].ToString(); // 收货创客编号
  534. MakerCode = MakerCode.Replace(" ", "");
  535. string BrandIdString = dr[5].ToString(); // 产品类型(5-客小爽Mpos,6-客小爽大POS,61-客小爽电签POS,8-客小爽超级Mpos))
  536. BrandIdString = BrandIdString.Replace(" ", "");
  537. string OutNote = "";
  538. if (list.Columns.Count > 6)
  539. {
  540. OutNote = dr[6].ToString(); // 出库备注
  541. }
  542. int BrandId = int.Parse(function.CheckInt(BrandIdString));
  543. KqProducts kqProduct = db.KqProducts.FirstOrDefault(m => m.Id == BrandId) ?? new KqProducts();
  544. if (kqProduct.Id > 0)
  545. {
  546. StoreForCode storefor = db.StoreForCode.FirstOrDefault(m => m.Code == OutStoreNo) ?? new StoreForCode();
  547. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == storefor.StoreId) ?? new StoreHouse();
  548. if (store.LaveNum > 0)
  549. {
  550. UserForMakerCode userfor = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
  551. Users touser = db.Users.FirstOrDefault(m => m.Id == userfor.UserId && m.AuthFlag == 1) ?? new Users();
  552. if (touser.Id > 0)
  553. {
  554. MachineForSnNo machinefor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo) ?? new MachineForSnNo();
  555. PosMachinesTwo machine = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machinefor.SnId && m.BuyUserId == 0 && m.UserId == 0) ?? new PosMachinesTwo();
  556. if (machine.Id > 0)
  557. {
  558. if (machine.BrandId == BrandId)
  559. {
  560. StoreStockChange stockchange = db.StoreStockChange.Add(new StoreStockChange()
  561. {
  562. CreateDate = DateTime.Now,
  563. CreateMan = Operator,
  564. StoreId = storefor.StoreId, //仓库
  565. BrandId = BrandId, //产品类型
  566. ProductName = RelationClass.GetKqProductBrandInfo(BrandId), //产品名称
  567. BizBatchNo = BatchNo, //业务批次号
  568. TransType = 2, //交易类型
  569. SnNo = SnNo, //SN编号
  570. SnType = machine.PosSnType, //SN机具类型
  571. StockOpDirect = 1, //库存操作方向
  572. SnStatus = 1, //SN状态
  573. BindStatus = machine.BindingState, //绑定状态
  574. BindMerchant = machine.BindMerchantId, //绑定商户
  575. ActiveStatus = machine.ActivationState, //激活状态
  576. ActRewardUserId = machine.BuyUserId, //激活奖励人
  577. DeviceVendor = machine.DeviceName, //设备厂商
  578. DeviceModel = machine.DeviceKind, //设备型号
  579. DeviceType = machine.DeviceType, //设备类型
  580. FromUserId = store.UserId, //出货人
  581. FromDate = DateTime.Now, //出库时间
  582. FromRemark = OutNote, //出库备注
  583. ToUserId = userfor.UserId, //收货人
  584. SourceStoreId = machine.SourceStoreId, //源仓库编号
  585. BrandType = machine.DeviceType, //品牌类型
  586. }).Entity;
  587. db.SaveChanges();
  588. string ChangeNo = "SC";
  589. int StoreStockChangeId = stockchange.Id;
  590. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  591. for (int j = 0; j < 18 - StoreStockChangeId.ToString().Length; j++)
  592. {
  593. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  594. }
  595. ChangeNo += StoreStockChangeIdString;
  596. stockchange.ChangeNo = ChangeNo; //交易流水编号
  597. db.SaveChanges();
  598. UserStoreChange userstore = db.UserStoreChange.Add(new UserStoreChange()
  599. {
  600. CreateDate = DateTime.Now,
  601. CreateMan = Operator,
  602. UserId = store.UserId, //创客
  603. BrandId = BrandId, //产品类型
  604. ChangeRecordNo = ChangeNo, //变更记录单号
  605. TransType = 0, //交易类型
  606. SnNo = SnNo, //SN编号
  607. SnType = machine.PosSnType, //SN机具类型
  608. StockOpDirect = 0, //库存操作方向
  609. DeviceVendor = machine.DeviceName, //设备厂商
  610. DeviceType = machine.DeviceKind, //设备类型
  611. DeviceModel = machine.DeviceType, //设备型号
  612. ToUserId = userfor.UserId, //收货创客
  613. ToDate = DateTime.Now, //入库时间
  614. ToRemark = OutNote, //入库备注
  615. SourceStoreId = machine.SourceStoreId, //源仓库
  616. SnStatus = 1, //SN状态
  617. BizBatchNo = BatchNo, //业务批次号
  618. BindStatus = (int)machine.BindingState, //绑定状态
  619. BindMerchantId = machine.BindMerchantId, //绑定商户
  620. ActiveStatus = (int)machine.ActivationState, //激活状态
  621. ActRewardUserId = machine.BuyUserId, //激活奖励创客
  622. BrandType = machine.DeviceType, //品牌类型
  623. }).Entity;
  624. db.StoreChangeHistory.Add(new StoreChangeHistory()
  625. {
  626. CreateDate = DateTime.Now,
  627. CreateMan = Operator,
  628. UserId = store.UserId, //创客
  629. ToUserId = touser.Id, //收货创客
  630. BrandId = BrandId, //产品类型
  631. ChangeRecordNo = ChangeNo, //变更记录单号
  632. BizBatchNo = BatchNo, //业务批次号
  633. TransType = 2, //交易类型
  634. SnNo = SnNo, //SN编号
  635. SnType = machine.PosSnType, //SN机具类型
  636. StockOpDirect = 1, //库存操作方向
  637. DeviceVendor = machine.DeviceName, //设备厂商
  638. DeviceModel = machine.DeviceKind, //设备型号
  639. DeviceType = machine.DeviceType, //设备类型
  640. FromUserId = store.UserId, //出货创客
  641. FromDate = DateTime.Now, //出库时间
  642. FromRemark = OutNote, //出库备注
  643. SourceStoreId = machine.SourceStoreId, //源仓库
  644. StoreId = store.Id, //仓库
  645. });
  646. machine.BuyUserId = touser.Id;
  647. machine.UserId = touser.Id;
  648. machine.TransferTime = DateTime.Now;
  649. machine.RecycEndDate = DateTime.Now.AddDays(360); // 循环结束时间
  650. db.SaveChanges();
  651. string IdBrand = touser.Id + "_" + BrandId;
  652. UserMachineData MachineData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand);
  653. if (MachineData == null)
  654. {
  655. MachineData = db.UserMachineData.Add(new UserMachineData()
  656. {
  657. IdBrand = IdBrand,
  658. }).Entity;
  659. db.SaveChanges();
  660. }
  661. MachineData.IdBrand = IdBrand;
  662. MachineData.TotalMachineCount += 1;
  663. MachineData.UnBindCount += 1;
  664. db.SaveChanges();
  665. RemoveClass.DeletePosMachineList("PosMachineTwoList:" + storefor.StoreId, machine.Id);
  666. if (!storeData.ContainsKey(storefor.StoreId + "_" + BrandId))
  667. {
  668. storeData.Add(storefor.StoreId + "_" + BrandId, 1);
  669. }
  670. else
  671. {
  672. storeData[storefor.StoreId + "_" + BrandId] += 1;
  673. }
  674. SuccessCount += 1;
  675. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  676. }
  677. else
  678. {
  679. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "与表格里填写的品牌不一致");
  680. }
  681. }
  682. else
  683. {
  684. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "不是仓库机");
  685. }
  686. }
  687. else
  688. {
  689. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "填写的收货创客编号不正确或创客未认证");
  690. }
  691. }
  692. else
  693. {
  694. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "所在的仓库" + store.StoreName + "(" + store.StoreNo + ")库存不足");
  695. }
  696. }
  697. else
  698. {
  699. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "的品牌填写有误");
  700. }
  701. }
  702. DoCount += Size;
  703. foreach (string key in storeData.Keys)
  704. {
  705. string[] keylist = key.Split('_');
  706. int StoreId = int.Parse(keylist[0]);
  707. int BrandId = int.Parse(keylist[1]);
  708. int OpStoreNum = storeData[key];
  709. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
  710. StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
  711. {
  712. CreateDate = DateTime.Now,
  713. CreateMan = Operator,
  714. StoreId = StoreId, //仓库
  715. TransType = 1, //交易类型
  716. BrandId = BrandId, //产品类型
  717. OpStoreNum = OpStoreNum, //操作库存数
  718. OpSymbol = "-", //操作符
  719. BeforeTotalNum = store.TotalNum, //操作前总库存数
  720. AfterTotalNum = store.TotalNum, //操作后总库存数
  721. BeforeLaveNum = store.LaveNum, //操作前剩余库存数
  722. AfterLaveNum = store.LaveNum - OpStoreNum, //操作后剩余库存数
  723. BeforeOutNum = store.OutNum, //操作前出库数
  724. AfterOutNum = store.OutNum + OpStoreNum, //操作后出库数
  725. }).Entity;
  726. db.SaveChanges();
  727. string ChangeNo = "SC";
  728. int StoreStockChangeId = balance.Id;
  729. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  730. for (int i = 0; i < 18 - StoreStockChangeId.ToString().Length; i++)
  731. {
  732. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  733. }
  734. ChangeNo += StoreStockChangeIdString;
  735. balance.TransRecordNo = ChangeNo; //交易流水编号
  736. store.LaveNum -= OpStoreNum;
  737. store.OutNum += OpStoreNum;
  738. db.SaveChanges();
  739. }
  740. db.SaveChanges();
  741. tran.Commit();
  742. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  743. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  744. }
  745. catch (Exception ex)
  746. {
  747. DoCount = list.Rows.Count;
  748. tran.Rollback();
  749. ErrorMsg msg = new ErrorMsg()
  750. {
  751. Time = DateTime.Now,
  752. ErrorContent = ex.ToString(),
  753. };
  754. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常");
  755. }
  756. }
  757. }
  758. else if (_Kind == "4")
  759. {
  760. Dictionary<string, int> storeData = new Dictionary<string, int>();
  761. Dictionary<string, int> toStoreData = new Dictionary<string, int>();
  762. using (var tran = db.Database.BeginTransaction())
  763. {
  764. try
  765. {
  766. int Size = 100;
  767. if (list.Rows.Count - DoCount < 100)
  768. {
  769. Size = list.Rows.Count - DoCount;
  770. }
  771. List<string> opData = new List<string>();
  772. for (int i = DoCount; i < DoCount + Size; i++)
  773. {
  774. DataRow dr = list.Rows[i];
  775. string BatchNo = dr[0].ToString(); // 业务批次号
  776. string OldStoreNo = dr[1].ToString(); // 原仓库编号
  777. string OldOperator = dr[2].ToString(); // 操作人
  778. string SnNo = dr[3].ToString(); // SN编号
  779. SnNo = SnNo.Replace(" ", "");
  780. string StoreNo = dr[4].ToString(); // 退回仓库编号
  781. string BrandIdString = dr[5].ToString(); // 产品类型
  782. string OutNote = "";
  783. if (list.Columns.Count > 6)
  784. {
  785. OutNote = dr[6].ToString(); // 出库备注
  786. }
  787. int BrandId = int.Parse(function.CheckInt(BrandIdString));
  788. decimal amount = 0;
  789. KqProducts kqProduct = db.KqProducts.FirstOrDefault(m => m.Id == BrandId) ?? new KqProducts();
  790. if (kqProduct.Name.Contains("电签"))
  791. {
  792. amount = 200;
  793. }
  794. if (kqProduct.Name.Contains("大POS"))
  795. {
  796. amount = 300;
  797. }
  798. if (kqProduct.Id > 0)
  799. {
  800. StoreForCode storefor = db.StoreForCode.FirstOrDefault(m => m.Code == OldStoreNo) ?? new StoreForCode();
  801. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == storefor.StoreId) ?? new StoreHouse();
  802. if (store.Id > 0)
  803. {
  804. StoreForCode tostorefor = db.StoreForCode.FirstOrDefault(m => m.Code == StoreNo) ?? new StoreForCode();
  805. StoreHouse tostore = db.StoreHouse.FirstOrDefault(m => m.Id == tostorefor.StoreId && m.Status > -1) ?? new StoreHouse();
  806. if (tostore.Id > 0)
  807. {
  808. MachineForSnNo machinefor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo) ?? new MachineForSnNo();
  809. PosMachinesTwo machine = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machinefor.SnId && m.BuyUserId > 0) ?? new PosMachinesTwo();
  810. if (machine.Id > 0)
  811. {
  812. function.WriteLog(DateTime.Now.ToString() + "\n" + Newtonsoft.Json.JsonConvert.SerializeObject(machine), "机具回仓库日志");
  813. if (!opData.Contains(machine.BuyUserId + ":" + machine.BrandId))
  814. {
  815. opData.Add(machine.BuyUserId + ":" + machine.BrandId);
  816. }
  817. machine.StoreId = tostorefor.StoreId;
  818. machine.BuyUserId = 0;
  819. machine.UserId = 0;
  820. machine.BindingState = 0;
  821. machine.ActivationState = 0;
  822. machine.BindingTime = null;
  823. machine.ActivationTime = null;
  824. machine.OrderId = 0;
  825. machine.RecycEndDate = null;
  826. machine.PosSnType = 0;
  827. machine.BindMerchantId = 0;
  828. machine.ScanQrTrade = 0;
  829. machine.DebitCardTrade = 0;
  830. machine.CreditTrade = 0;
  831. machine.UserNav = null;
  832. machine.IsPurchase = 0;
  833. machine.LeaderUserId = 0;
  834. machine.PreUserId = 0;
  835. PublicFunction.ClearPosHistory(db, SnNo); //清除机具历史记录
  836. db.SaveChanges();
  837. if (!storeData.ContainsKey(storefor.StoreId + "_" + BrandId))
  838. {
  839. storeData.Add(storefor.StoreId + "_" + BrandId, 1);
  840. }
  841. else
  842. {
  843. storeData[storefor.StoreId + "_" + BrandId] += 1;
  844. }
  845. if (!toStoreData.ContainsKey(tostorefor.StoreId + "_" + BrandId))
  846. {
  847. toStoreData.Add(tostorefor.StoreId + "_" + BrandId, 1);
  848. }
  849. else
  850. {
  851. toStoreData[tostorefor.StoreId + "_" + BrandId] += 1;
  852. }
  853. SuccessCount += 1;
  854. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  855. }
  856. else
  857. {
  858. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "已在仓库中");
  859. }
  860. }
  861. else
  862. {
  863. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "填写的退回仓库编号不正确");
  864. }
  865. }
  866. else
  867. {
  868. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "填写的原仓库编号不正确");
  869. }
  870. db.SaveChanges();
  871. }
  872. else
  873. {
  874. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "的品牌填写有误");
  875. }
  876. }
  877. DoCount += Size;
  878. foreach (string key in storeData.Keys)
  879. {
  880. string[] keylist = key.Split('_');
  881. int StoreId = int.Parse(keylist[0]);
  882. int BrandId = int.Parse(keylist[1]);
  883. int OpStoreNum = storeData[key];
  884. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
  885. StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
  886. {
  887. CreateDate = DateTime.Now,
  888. CreateMan = Operator,
  889. StoreId = StoreId, //仓库
  890. TransType = 1, //交易类型
  891. BrandId = BrandId, //产品类型
  892. OpStoreNum = OpStoreNum, //操作库存数
  893. OpSymbol = "-", //操作符
  894. BeforeTotalNum = store.TotalNum, //操作前总库存数
  895. AfterTotalNum = store.TotalNum, //操作后总库存数
  896. BeforeLaveNum = store.LaveNum, //操作前剩余库存数
  897. AfterLaveNum = store.LaveNum - OpStoreNum, //操作后剩余库存数
  898. BeforeOutNum = store.OutNum, //操作前出库数
  899. AfterOutNum = store.OutNum + OpStoreNum, //操作后出库数
  900. }).Entity;
  901. db.SaveChanges();
  902. string ChangeNo = "JJBH";
  903. int StoreStockChangeId = balance.Id;
  904. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  905. for (int i = 0; i < 18 - StoreStockChangeId.ToString().Length; i++)
  906. {
  907. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  908. }
  909. ChangeNo += StoreStockChangeIdString;
  910. balance.TransRecordNo = ChangeNo; //交易流水编号
  911. store.LaveNum -= OpStoreNum;
  912. db.SaveChanges();
  913. }
  914. foreach (string key in toStoreData.Keys)
  915. {
  916. string[] keylist = key.Split('_');
  917. int StoreId = int.Parse(keylist[0]);
  918. int BrandId = int.Parse(keylist[1]);
  919. int OpStoreNum = toStoreData[key];
  920. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
  921. StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
  922. {
  923. CreateDate = DateTime.Now,
  924. CreateMan = Operator,
  925. StoreId = StoreId, //仓库
  926. TransType = 0, //交易类型
  927. BrandId = BrandId, //产品类型
  928. OpStoreNum = OpStoreNum, //操作库存数
  929. OpSymbol = "+", //操作符
  930. BeforeTotalNum = store.TotalNum, //操作前总库存数
  931. AfterTotalNum = store.TotalNum + OpStoreNum, //操作后总库存数
  932. BeforeLaveNum = store.LaveNum, //操作前剩余库存数
  933. AfterLaveNum = store.LaveNum + OpStoreNum, //操作后剩余库存数
  934. BeforeOutNum = store.OutNum, //操作前出库数
  935. AfterOutNum = store.OutNum, //操作后出库数
  936. }).Entity;
  937. db.SaveChanges();
  938. string ChangeNo = "SC";
  939. int StoreStockChangeId = balance.Id;
  940. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  941. for (int i = 0; i < 18 - StoreStockChangeId.ToString().Length; i++)
  942. {
  943. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  944. }
  945. ChangeNo += StoreStockChangeIdString;
  946. balance.TransRecordNo = ChangeNo; //交易流水编号
  947. store.LaveNum += OpStoreNum;
  948. db.SaveChanges();
  949. }
  950. db.SaveChanges();
  951. foreach (string sub in opData)
  952. {
  953. string[] datalist = sub.Split(":");
  954. PublicFunction.SycnMachineCount(int.Parse(datalist[0]), int.Parse(datalist[1]));
  955. }
  956. tran.Commit();
  957. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  958. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  959. }
  960. catch (Exception ex)
  961. {
  962. DoCount = list.Rows.Count;
  963. tran.Rollback();
  964. ErrorMsg msg = new ErrorMsg()
  965. {
  966. Time = DateTime.Now,
  967. ErrorContent = ex.ToString(),
  968. };
  969. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常");
  970. }
  971. }
  972. }
  973. else if (_Kind == "UserCashRecord")
  974. {
  975. using (var tran = db.Database.BeginTransaction())
  976. {
  977. try
  978. {
  979. int Size = 100;
  980. if (list.Rows.Count - DoCount < 100)
  981. {
  982. Size = list.Rows.Count - DoCount;
  983. }
  984. for (int i = DoCount; i < DoCount + Size; i++)
  985. {
  986. DataRow dr = list.Rows[i];
  987. string CashOrderNo = dr[2].ToString(); // 提现单号
  988. decimal Amount = decimal.Parse(function.CheckNum(dr[3].ToString())); // 发佣金额
  989. int Status = int.Parse(function.CheckInt(dr[4].ToString())); // 提现状态
  990. string Remark = dr[5].ToString(); // 备注
  991. CashOrderNo = CashOrderNo.Replace(" ", "");
  992. UserCashRecord edit = db.UserCashRecord.FirstOrDefault(m => m.CashOrderNo == CashOrderNo && m.ActualTradeAmount == Amount && m.Status == 0);
  993. if (edit != null)
  994. {
  995. if (edit.TradeType == 3)
  996. {
  997. edit.Status = Status;
  998. edit.Remark = Remark;
  999. edit.UpdateMan = Operator;
  1000. if (Status == 1)
  1001. {
  1002. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
  1003. if (account != null)
  1004. {
  1005. decimal TradeAmount = edit.TradeAmount;
  1006. db.LeaderAccountRecord.Add(new LeaderAccountRecord()
  1007. {
  1008. CreateDate = DateTime.Now,
  1009. UserId = edit.UserId, //创客
  1010. ChangeType = 3, //变动类型
  1011. ProductType = 99, //产品类型
  1012. ChangeAmount = TradeAmount, //变更金额
  1013. BeforeBalanceAmount = account.LeaderBalanceAmount, //变更前余额
  1014. AfterBalanceAmount = account.LeaderBalanceAmount, //变更后余额
  1015. });
  1016. db.SaveChanges();
  1017. RedisDbconn.Instance.Set("UserAccount:" + edit.UserId, account);
  1018. }
  1019. }
  1020. else if (Status == 2)
  1021. {
  1022. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
  1023. if (account != null)
  1024. {
  1025. decimal TradeAmount = edit.TradeAmount;
  1026. account.LeaderBalanceAmount += TradeAmount;
  1027. db.LeaderAccountRecord.Add(new LeaderAccountRecord()
  1028. {
  1029. CreateDate = DateTime.Now,
  1030. UserId = edit.UserId, //创客
  1031. ChangeType = 6, //变动类型
  1032. ProductType = 99, //产品类型
  1033. ChangeAmount = TradeAmount, //变更金额
  1034. BeforeBalanceAmount = account.LeaderBalanceAmount - TradeAmount, //变更前余额
  1035. AfterBalanceAmount = account.LeaderBalanceAmount, //变更后余额
  1036. });
  1037. db.SaveChanges();
  1038. RedisDbconn.Instance.Set("UserAccount:" + edit.UserId, account);
  1039. }
  1040. }
  1041. db.SaveChanges();
  1042. RedisDbconn.Instance.Clear("UserCashRecord:" + edit.Id);
  1043. SuccessCount += 1;
  1044. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  1045. }
  1046. else if (edit.TradeType == 4)
  1047. {
  1048. edit.Status = Status;
  1049. edit.Remark = Remark;
  1050. edit.UpdateMan = Operator;
  1051. if (Status == 1)
  1052. {
  1053. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
  1054. if (account != null)
  1055. {
  1056. decimal TradeAmount = edit.TradeAmount;
  1057. decimal ActualTradeAmount = edit.ActualTradeAmount;
  1058. account.HelpProfitBalanceAmount -= TradeAmount;
  1059. db.HelpProfitAccountRecord.Add(new HelpProfitAccountRecord()
  1060. {
  1061. CreateDate = DateTime.Now,
  1062. UserId = edit.UserId, //创客
  1063. ChangeType = 3, //变动类型
  1064. ProductType = 99, //产品类型
  1065. ChangeAmount = ActualTradeAmount, //变更金额
  1066. BeforeBalanceAmount = account.HelpProfitBalanceAmount + TradeAmount, //变更前余额
  1067. AfterBalanceAmount = account.HelpProfitBalanceAmount, //变更后余额
  1068. });
  1069. db.HelpProfitAccountRecord.Add(new HelpProfitAccountRecord()
  1070. {
  1071. CreateDate = DateTime.Now,
  1072. UpdateDate = DateTime.Now,
  1073. UserId = edit.UserId, //创客
  1074. ChangeType = 4, //变动类型
  1075. ProductType = 99, //产品类型
  1076. ChangeAmount = edit.TradeFee, //变更金额
  1077. BeforeBalanceAmount = account.HelpProfitBalanceAmount + TradeAmount, //变更前余额
  1078. AfterBalanceAmount = account.HelpProfitBalanceAmount, //变更后余额
  1079. });
  1080. db.HelpProfitAccountRecord.Add(new HelpProfitAccountRecord()
  1081. {
  1082. CreateDate = DateTime.Now,
  1083. UpdateDate = DateTime.Now,
  1084. UserId = edit.UserId, //创客
  1085. ChangeType = 5, //变动类型
  1086. ProductType = 99, //产品类型
  1087. ChangeAmount = edit.ManageFee, //变更金额
  1088. BeforeBalanceAmount = account.HelpProfitBalanceAmount + TradeAmount, //变更前余额
  1089. AfterBalanceAmount = account.HelpProfitBalanceAmount, //变更后余额
  1090. });
  1091. db.SaveChanges();
  1092. RedisDbconn.Instance.Set("HelpProfitAccount:" + edit.UserId, account);
  1093. }
  1094. }
  1095. else if (Status == 2)
  1096. {
  1097. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
  1098. if (account != null)
  1099. {
  1100. decimal TradeAmount = edit.TradeAmount;
  1101. decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
  1102. decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
  1103. decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
  1104. account.BalanceAmount += TradeAmount;
  1105. account.FreezeAmount -= TradeAmount;
  1106. decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
  1107. decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
  1108. decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
  1109. UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
  1110. {
  1111. CreateDate = DateTime.Now,
  1112. UpdateDate = DateTime.Now,
  1113. UserId = edit.UserId, //创客
  1114. ChangeType = 6, //变动类型
  1115. ProductType = 99, //产品类型
  1116. ChangeAmount = TradeAmount, //变更金额
  1117. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  1118. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  1119. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  1120. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  1121. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  1122. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  1123. }).Entity;
  1124. db.SaveChanges();
  1125. RedisDbconn.Instance.Set("UserAccount:" + edit.UserId, account);
  1126. PublicFunction.SplitUserAccountRecord(add);
  1127. }
  1128. }
  1129. db.SaveChanges();
  1130. RedisDbconn.Instance.Clear("UserCashRecord:" + edit.Id);
  1131. SuccessCount += 1;
  1132. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  1133. }
  1134. else
  1135. {
  1136. edit.Status = Status;
  1137. edit.Remark = Remark;
  1138. edit.UpdateMan = Operator;
  1139. if (Status == 1)
  1140. {
  1141. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
  1142. if (account != null)
  1143. {
  1144. account.QueryCount = 1;
  1145. decimal TradeAmount = edit.TradeAmount;
  1146. decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
  1147. decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
  1148. decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
  1149. account.WithdrawAmount += edit.TradeAmount;
  1150. account.FreezeAmount -= edit.TradeAmount;
  1151. decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
  1152. decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
  1153. decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
  1154. UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
  1155. {
  1156. CreateDate = DateTime.Now,
  1157. UpdateDate = DateTime.Now,
  1158. UserId = edit.UserId, //创客
  1159. ChangeType = 3, //变动类型
  1160. ProductType = 99, //产品类型
  1161. ChangeAmount = edit.ActualTradeAmount, //变更金额
  1162. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  1163. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  1164. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  1165. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  1166. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  1167. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  1168. }).Entity;
  1169. UserAccountRecord add1 = db.UserAccountRecord.Add(new UserAccountRecord()
  1170. {
  1171. CreateDate = DateTime.Now,
  1172. UpdateDate = DateTime.Now,
  1173. UserId = edit.UserId, //创客
  1174. ChangeType = 4, //变动类型
  1175. ProductType = 99, //产品类型
  1176. ChangeAmount = edit.TradeFee, //变更金额
  1177. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  1178. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  1179. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  1180. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  1181. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  1182. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  1183. }).Entity;
  1184. UserAccountRecord add2 = db.UserAccountRecord.Add(new UserAccountRecord()
  1185. {
  1186. CreateDate = DateTime.Now,
  1187. UpdateDate = DateTime.Now,
  1188. UserId = edit.UserId, //创客
  1189. ChangeType = 5, //变动类型
  1190. ProductType = 99, //产品类型
  1191. ChangeAmount = edit.ManageFee, //变更金额
  1192. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  1193. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  1194. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  1195. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  1196. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  1197. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  1198. }).Entity;
  1199. db.SaveChanges();
  1200. PublicFunction.SplitUserAccountRecord(add);
  1201. PublicFunction.SplitUserAccountRecord(add1);
  1202. PublicFunction.SplitUserAccountRecord(add2);
  1203. }
  1204. }
  1205. else if (Status == 2)
  1206. {
  1207. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
  1208. if (account != null)
  1209. {
  1210. decimal TradeAmount = edit.TradeAmount;
  1211. if (account.FreezeAmount < TradeAmount)
  1212. {
  1213. RedisDbconn.Instance.AddList("ErrList" + checkKey, "提现记录单号为" + CashOrderNo + "的创客冻结金额异常");
  1214. }
  1215. else
  1216. {
  1217. decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
  1218. decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
  1219. decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
  1220. account.BalanceAmount += TradeAmount;
  1221. account.FreezeAmount -= TradeAmount;
  1222. decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
  1223. decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
  1224. decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
  1225. UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
  1226. {
  1227. CreateDate = DateTime.Now,
  1228. UpdateDate = DateTime.Now,
  1229. UserId = edit.UserId, //创客
  1230. ChangeType = 6, //变动类型
  1231. ProductType = 99, //产品类型
  1232. ChangeAmount = TradeAmount, //变更金额
  1233. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  1234. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  1235. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  1236. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  1237. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  1238. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  1239. }).Entity;
  1240. db.SaveChanges();
  1241. PublicFunction.SplitUserAccountRecord(add);
  1242. }
  1243. }
  1244. }
  1245. db.SaveChanges();
  1246. RedisDbconn.Instance.Clear("UserCashRecord:" + edit.Id);
  1247. SuccessCount += 1;
  1248. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  1249. }
  1250. }
  1251. else
  1252. {
  1253. RedisDbconn.Instance.AddList("ErrList" + checkKey, "提现记录单号为" + CashOrderNo + "不存在或者金额不符");
  1254. }
  1255. }
  1256. DoCount += Size;
  1257. db.SaveChanges();
  1258. tran.Commit();
  1259. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  1260. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  1261. }
  1262. catch (Exception ex)
  1263. {
  1264. DoCount = list.Rows.Count;
  1265. tran.Rollback();
  1266. ErrorMsg msg = new ErrorMsg()
  1267. {
  1268. Time = DateTime.Now,
  1269. ErrorContent = ex.ToString(),
  1270. };
  1271. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常");
  1272. }
  1273. }
  1274. }
  1275. else if (_Kind == "ChangeFee")
  1276. {
  1277. using (var tran = db.Database.BeginTransaction())
  1278. {
  1279. try
  1280. {
  1281. int Size = 100;
  1282. if (list.Rows.Count - DoCount < 100)
  1283. {
  1284. Size = list.Rows.Count - DoCount;
  1285. }
  1286. string posIds = "";
  1287. string userIds = "";
  1288. string warning = "";
  1289. for (int i = DoCount; i < DoCount + Size; i++)
  1290. {
  1291. DataRow dr = list.Rows[i];
  1292. string PosNo = dr[0].ToString(); // 机具Sn
  1293. decimal Amount = decimal.Parse(function.CheckNum(dr[1].ToString())); // 调整费率
  1294. int Kind = int.Parse(function.CheckInt(dr[2].ToString())); // 1 调升 2 调低
  1295. var pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosNo) ?? new PosMachinesTwo();
  1296. warning += PosNo + ",";
  1297. }
  1298. if (!string.IsNullOrEmpty(warning))
  1299. {
  1300. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + warning + "该机具应直接设置,请全部重新导入");
  1301. }
  1302. else
  1303. {
  1304. for (int i = DoCount; i < DoCount + Size; i++)
  1305. {
  1306. DataRow dr = list.Rows[i];
  1307. string PosNo = dr[0].ToString(); // 机具Sn
  1308. decimal Amount = decimal.Parse(function.CheckNum(dr[1].ToString())); // 调整费率
  1309. int Kind = int.Parse(function.CheckInt(dr[2].ToString())); // 1 调升 2 调低
  1310. var pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosNo) ?? new PosMachinesTwo();
  1311. warning += PosNo + ",";
  1312. if (Kind == 1)
  1313. {
  1314. pos.UpFeeFlag = 1;
  1315. pos.UpFeeDate = DateTime.Now;
  1316. pos.UpFeeMan = Operator;
  1317. db.SaveChanges();
  1318. }
  1319. if (Kind == 2)
  1320. {
  1321. pos.DownFeeFlag = 1;
  1322. pos.DownFeeDate = DateTime.Now;
  1323. pos.DownFeeMan = Operator;
  1324. db.SaveChanges();
  1325. }
  1326. if (!userIds.Contains(pos.BuyUserId.ToString()))
  1327. {
  1328. userIds += pos.BuyUserId + ",";
  1329. }
  1330. posIds += pos.Id + ",";
  1331. }
  1332. string[] lists = userIds.Split(new char[] { ',' });
  1333. int times = lists.ToList().Count;
  1334. for (int i = 0; i < times; i++)
  1335. {
  1336. var UserId = lists[i];
  1337. var posInfo = db.PosMachinesTwo.Where(m => posIds.Contains(m.Id.ToString()) && m.BuyUserId == Convert.ToInt32(UserId));
  1338. string snhtml = "<div style='margin-bottom: .48rem;'>";
  1339. foreach (var items in posInfo)
  1340. {
  1341. var mer = db.PosMerchantInfo.FirstOrDefault(m => m.Id == items.BindMerchantId) ?? new PosMerchantInfo();
  1342. var brand = db.KqProducts.FirstOrDefault(m => m.Id == items.BrandId) ?? new KqProducts();
  1343. snhtml += "<div style='margin-bottom: .48rem;'><div class='f12'>商户姓名:" + mer.MerRealName + "</div>";
  1344. snhtml += "<div class='f12'>机具品牌:" + brand.Name + "</div>";
  1345. snhtml += "<div class='f12'>SN:" + items.PosSn + "</div>";
  1346. snhtml += "<div class='f12'>当前费率:0.6%</div>";
  1347. snhtml += "<div class='f12'>费率调整时间:" + items.DownFeeDate + "</div>";
  1348. }
  1349. snhtml += "</div>";
  1350. RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal()
  1351. {
  1352. UserId = Convert.ToInt32(UserId), //创客
  1353. Title = "商户费率变更通知", //标题
  1354. Content = "<div class='f12' style='margin-bottom: .72rem'>您的商户刷卡交易费率已变更成功!</div>" + snhtml, //内容
  1355. Summary = "您的商户刷卡交易费率已变更成功!",
  1356. CreateDate = DateTime.Now,
  1357. }));
  1358. }
  1359. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  1360. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  1361. }
  1362. }
  1363. catch (Exception ex)
  1364. {
  1365. DoCount = list.Rows.Count;
  1366. tran.Rollback();
  1367. ErrorMsg msg = new ErrorMsg()
  1368. {
  1369. Time = DateTime.Now,
  1370. ErrorContent = ex.ToString(),
  1371. };
  1372. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常");
  1373. }
  1374. }
  1375. }
  1376. else if (_Kind == "ImportJKCreateData")
  1377. {
  1378. var brandInfo = db.KqProducts.ToList();
  1379. using (var tran = db.Database.BeginTransaction())
  1380. {
  1381. try
  1382. {
  1383. int Size = 100;
  1384. if (list.Rows.Count - DoCount < 100)
  1385. {
  1386. Size = list.Rows.Count - DoCount;
  1387. }
  1388. for (int i = DoCount; i < DoCount + Size; i++)
  1389. {
  1390. DataRow dr = list.Rows[i];
  1391. string PosSn = dr[0].ToString(); // 提现单号
  1392. string CreateDate = dr[1].ToString(); // 备注
  1393. var pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosSn) ?? new PosMachinesTwo();
  1394. if (pos.Id > 0)
  1395. {
  1396. var brandName = brandInfo.FirstOrDefault(m => m.Id == pos.BrandId);
  1397. if (brandName.Name.StartsWith("金控"))
  1398. {
  1399. pos.CreateDate = DateTime.Parse(CreateDate);
  1400. SuccessCount += 1;
  1401. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  1402. }
  1403. else
  1404. {
  1405. RedisDbconn.Instance.AddList("ErrList" + checkKey, "以下操作失败" + PosSn + ',' + "该机具号品牌不符合修改规则");
  1406. }
  1407. }
  1408. else
  1409. {
  1410. RedisDbconn.Instance.AddList("ErrList" + checkKey, "以下操作失败" + PosSn + ',' + "该机具号不存在");
  1411. }
  1412. }
  1413. DoCount += Size;
  1414. db.SaveChanges();
  1415. tran.Commit();
  1416. if (DoCount >= list.Rows.Count)
  1417. {
  1418. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  1419. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  1420. }
  1421. }
  1422. catch (Exception ex)
  1423. {
  1424. DoCount = list.Rows.Count;
  1425. tran.Rollback();
  1426. ErrorMsg msg = new ErrorMsg()
  1427. {
  1428. Time = DateTime.Now,
  1429. ErrorContent = ex.ToString(),
  1430. };
  1431. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常(金控导入修改入库时间)");
  1432. }
  1433. }
  1434. }
  1435. db.Dispose();
  1436. }
  1437. }
  1438. else
  1439. {
  1440. Thread.Sleep(5000);
  1441. }
  1442. }
  1443. }
  1444. }
  1445. }