ExcelHelper.cs 115 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479
  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. if(BrandId != 14)
  450. {
  451. string SendData = "{\"Kind\":\"5\",\"Data\":{\"StoreId\":\"" + StoreId + "\",\"BrandId\":\"" + BrandId + "\",\"OpStoreNum\":\"" + OpStoreNum + "\"}}";
  452. RedisDbconn.Instance.AddList("StoreApplyQueue", SendData);
  453. }
  454. }
  455. foreach (string key in toStoreData.Keys)
  456. {
  457. string[] keylist = key.Split('_');
  458. int StoreId = int.Parse(keylist[0]);
  459. int BrandId = int.Parse(keylist[1]);
  460. int OpStoreNum = toStoreData[key];
  461. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
  462. StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
  463. {
  464. CreateDate = DateTime.Now,
  465. CreateMan = Operator,
  466. StoreId = StoreId, //仓库
  467. TransType = 0, //交易类型
  468. BrandId = BrandId, //产品类型
  469. OpStoreNum = OpStoreNum, //操作库存数
  470. OpSymbol = "+", //操作符
  471. BeforeTotalNum = store.TotalNum, //操作前总库存数
  472. AfterTotalNum = store.TotalNum + OpStoreNum, //操作后总库存数
  473. BeforeLaveNum = store.LaveNum, //操作前剩余库存数
  474. AfterLaveNum = store.LaveNum + OpStoreNum, //操作后剩余库存数
  475. BeforeOutNum = store.OutNum, //操作前出库数
  476. AfterOutNum = store.OutNum, //操作后出库数
  477. }).Entity;
  478. db.SaveChanges();
  479. string ChangeNo = "SC";
  480. int StoreStockChangeId = balance.Id;
  481. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  482. for (int i = 0; i < 18 - StoreStockChangeId.ToString().Length; i++)
  483. {
  484. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  485. }
  486. ChangeNo += StoreStockChangeIdString;
  487. balance.TransRecordNo = ChangeNo; //交易流水编号
  488. store.TotalNum += OpStoreNum;
  489. store.LaveNum += OpStoreNum;
  490. db.SaveChanges();
  491. if(BrandId != 14)
  492. {
  493. string SendData = "{\"Kind\":\"5\",\"Data\":{\"StoreId\":\"" + StoreId + "\",\"BrandId\":\"" + BrandId + "\",\"OpStoreNum\":\"-" + OpStoreNum + "\"}}";
  494. RedisDbconn.Instance.AddList("StoreApplyQueue", SendData);
  495. }
  496. }
  497. db.SaveChanges();
  498. tran.Commit();
  499. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  500. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  501. }
  502. catch (Exception ex)
  503. {
  504. DoCount = list.Rows.Count;
  505. tran.Rollback();
  506. ErrorMsg msg = new ErrorMsg()
  507. {
  508. Time = DateTime.Now,
  509. ErrorContent = ex.ToString(),
  510. };
  511. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常");
  512. }
  513. }
  514. }
  515. //仓库发货至创客
  516. else if (_Kind == "3")
  517. {
  518. Dictionary<string, int> storeData = new Dictionary<string, int>();
  519. using (var tran = db.Database.BeginTransaction())
  520. {
  521. try
  522. {
  523. int Size = 100;
  524. if (list.Rows.Count - DoCount < 100)
  525. {
  526. Size = list.Rows.Count - DoCount;
  527. }
  528. for (int i = DoCount; i < DoCount + Size; i++)
  529. {
  530. DataRow dr = list.Rows[i];
  531. string BatchNo = dr[0].ToString(); // 业务批次号
  532. BatchNo = BatchNo.Replace(" ", "");
  533. string OutStoreNo = dr[1].ToString(); // 出货仓库编号
  534. OutStoreNo = OutStoreNo.Replace(" ", "");
  535. string OutOperator = dr[2].ToString(); // 出库操作人
  536. OutOperator = OutOperator.Replace(" ", "");
  537. string SnNo = dr[3].ToString(); // SN编号
  538. SnNo = SnNo.Replace(" ", "");
  539. string MakerCode = dr[4].ToString(); // 收货创客编号
  540. MakerCode = MakerCode.Replace(" ", "");
  541. string BrandIdString = dr[5].ToString(); // 产品类型(5-客小爽Mpos,6-客小爽大POS,61-客小爽电签POS,8-客小爽超级Mpos))
  542. BrandIdString = BrandIdString.Replace(" ", "");
  543. string OutNote = "";
  544. if (list.Columns.Count > 6)
  545. {
  546. OutNote = dr[6].ToString(); // 出库备注
  547. }
  548. int BrandId = int.Parse(function.CheckInt(BrandIdString));
  549. KqProducts kqProduct = db.KqProducts.FirstOrDefault(m => m.Id == BrandId) ?? new KqProducts();
  550. if (kqProduct.Id > 0)
  551. {
  552. StoreForCode storefor = db.StoreForCode.FirstOrDefault(m => m.Code == OutStoreNo) ?? new StoreForCode();
  553. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == storefor.StoreId) ?? new StoreHouse();
  554. if (store.LaveNum > 0)
  555. {
  556. UserForMakerCode userfor = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
  557. Users touser = db.Users.FirstOrDefault(m => m.Id == userfor.UserId && m.AuthFlag == 1) ?? new Users();
  558. if (touser.Id > 0)
  559. {
  560. MachineForSnNo machinefor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo) ?? new MachineForSnNo();
  561. PosMachinesTwo machine = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machinefor.SnId && m.BuyUserId == 0 && m.UserId == 0) ?? new PosMachinesTwo();
  562. if (machine.Id > 0)
  563. {
  564. if (machine.BrandId == BrandId)
  565. {
  566. StoreStockChange stockchange = db.StoreStockChange.Add(new StoreStockChange()
  567. {
  568. CreateDate = DateTime.Now,
  569. CreateMan = Operator,
  570. StoreId = storefor.StoreId, //仓库
  571. BrandId = BrandId, //产品类型
  572. ProductName = RelationClass.GetKqProductBrandInfo(BrandId), //产品名称
  573. BizBatchNo = BatchNo, //业务批次号
  574. TransType = 2, //交易类型
  575. SnNo = SnNo, //SN编号
  576. SnType = machine.PosSnType, //SN机具类型
  577. StockOpDirect = 1, //库存操作方向
  578. SnStatus = 1, //SN状态
  579. BindStatus = machine.BindingState, //绑定状态
  580. BindMerchant = machine.BindMerchantId, //绑定商户
  581. ActiveStatus = machine.ActivationState, //激活状态
  582. ActRewardUserId = machine.BuyUserId, //激活奖励人
  583. DeviceVendor = machine.DeviceName, //设备厂商
  584. DeviceModel = machine.DeviceKind, //设备型号
  585. DeviceType = machine.DeviceType, //设备类型
  586. FromUserId = store.UserId, //出货人
  587. FromDate = DateTime.Now, //出库时间
  588. FromRemark = OutNote, //出库备注
  589. ToUserId = userfor.UserId, //收货人
  590. SourceStoreId = machine.SourceStoreId, //源仓库编号
  591. BrandType = machine.DeviceType, //品牌类型
  592. }).Entity;
  593. db.SaveChanges();
  594. string ChangeNo = "SC";
  595. int StoreStockChangeId = stockchange.Id;
  596. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  597. for (int j = 0; j < 18 - StoreStockChangeId.ToString().Length; j++)
  598. {
  599. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  600. }
  601. ChangeNo += StoreStockChangeIdString;
  602. stockchange.ChangeNo = ChangeNo; //交易流水编号
  603. db.SaveChanges();
  604. UserStoreChange userstore = db.UserStoreChange.Add(new UserStoreChange()
  605. {
  606. CreateDate = DateTime.Now,
  607. CreateMan = Operator,
  608. UserId = store.UserId, //创客
  609. BrandId = BrandId, //产品类型
  610. ChangeRecordNo = ChangeNo, //变更记录单号
  611. TransType = 0, //交易类型
  612. SnNo = SnNo, //SN编号
  613. SnType = machine.PosSnType, //SN机具类型
  614. StockOpDirect = 0, //库存操作方向
  615. DeviceVendor = machine.DeviceName, //设备厂商
  616. DeviceType = machine.DeviceKind, //设备类型
  617. DeviceModel = machine.DeviceType, //设备型号
  618. ToUserId = userfor.UserId, //收货创客
  619. ToDate = DateTime.Now, //入库时间
  620. ToRemark = OutNote, //入库备注
  621. SourceStoreId = machine.SourceStoreId, //源仓库
  622. SnStatus = 1, //SN状态
  623. BizBatchNo = BatchNo, //业务批次号
  624. BindStatus = (int)machine.BindingState, //绑定状态
  625. BindMerchantId = machine.BindMerchantId, //绑定商户
  626. ActiveStatus = (int)machine.ActivationState, //激活状态
  627. ActRewardUserId = machine.BuyUserId, //激活奖励创客
  628. BrandType = machine.DeviceType, //品牌类型
  629. }).Entity;
  630. db.StoreChangeHistory.Add(new StoreChangeHistory()
  631. {
  632. CreateDate = DateTime.Now,
  633. CreateMan = Operator,
  634. UserId = store.UserId, //创客
  635. ToUserId = touser.Id, //收货创客
  636. BrandId = BrandId, //产品类型
  637. ChangeRecordNo = ChangeNo, //变更记录单号
  638. BizBatchNo = BatchNo, //业务批次号
  639. TransType = 2, //交易类型
  640. SnNo = SnNo, //SN编号
  641. SnType = machine.PosSnType, //SN机具类型
  642. StockOpDirect = 1, //库存操作方向
  643. DeviceVendor = machine.DeviceName, //设备厂商
  644. DeviceModel = machine.DeviceKind, //设备型号
  645. DeviceType = machine.DeviceType, //设备类型
  646. FromUserId = store.UserId, //出货创客
  647. FromDate = DateTime.Now, //出库时间
  648. FromRemark = OutNote, //出库备注
  649. SourceStoreId = machine.SourceStoreId, //源仓库
  650. StoreId = store.Id, //仓库
  651. });
  652. machine.BuyUserId = touser.Id;
  653. machine.UserId = touser.Id;
  654. machine.TransferTime = DateTime.Now;
  655. machine.RecycEndDate = DateTime.Now.AddDays(360); // 循环结束时间
  656. db.SaveChanges();
  657. string IdBrand = touser.Id + "_" + BrandId;
  658. UserMachineData MachineData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand);
  659. if (MachineData == null)
  660. {
  661. MachineData = db.UserMachineData.Add(new UserMachineData()
  662. {
  663. IdBrand = IdBrand,
  664. }).Entity;
  665. db.SaveChanges();
  666. }
  667. MachineData.IdBrand = IdBrand;
  668. MachineData.TotalMachineCount += 1;
  669. MachineData.UnBindCount += 1;
  670. db.SaveChanges();
  671. RemoveClass.DeletePosMachineList("PosMachineTwoList:" + storefor.StoreId, machine.Id);
  672. if (!storeData.ContainsKey(storefor.StoreId + "_" + BrandId))
  673. {
  674. storeData.Add(storefor.StoreId + "_" + BrandId, 1);
  675. }
  676. else
  677. {
  678. storeData[storefor.StoreId + "_" + BrandId] += 1;
  679. }
  680. SuccessCount += 1;
  681. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  682. }
  683. else
  684. {
  685. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "与表格里填写的品牌不一致");
  686. }
  687. }
  688. else
  689. {
  690. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "不是仓库机");
  691. }
  692. }
  693. else
  694. {
  695. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "填写的收货创客编号不正确或创客未认证");
  696. }
  697. }
  698. else
  699. {
  700. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "所在的仓库" + store.StoreName + "(" + store.StoreNo + ")库存不足");
  701. }
  702. }
  703. else
  704. {
  705. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "的品牌填写有误");
  706. }
  707. }
  708. DoCount += Size;
  709. foreach (string key in storeData.Keys)
  710. {
  711. string[] keylist = key.Split('_');
  712. int StoreId = int.Parse(keylist[0]);
  713. int BrandId = int.Parse(keylist[1]);
  714. int OpStoreNum = storeData[key];
  715. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
  716. StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
  717. {
  718. CreateDate = DateTime.Now,
  719. CreateMan = Operator,
  720. StoreId = StoreId, //仓库
  721. TransType = 1, //交易类型
  722. BrandId = BrandId, //产品类型
  723. OpStoreNum = OpStoreNum, //操作库存数
  724. OpSymbol = "-", //操作符
  725. BeforeTotalNum = store.TotalNum, //操作前总库存数
  726. AfterTotalNum = store.TotalNum, //操作后总库存数
  727. BeforeLaveNum = store.LaveNum, //操作前剩余库存数
  728. AfterLaveNum = store.LaveNum - OpStoreNum, //操作后剩余库存数
  729. BeforeOutNum = store.OutNum, //操作前出库数
  730. AfterOutNum = store.OutNum + OpStoreNum, //操作后出库数
  731. }).Entity;
  732. db.SaveChanges();
  733. string ChangeNo = "SC";
  734. int StoreStockChangeId = balance.Id;
  735. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  736. for (int i = 0; i < 18 - StoreStockChangeId.ToString().Length; i++)
  737. {
  738. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  739. }
  740. ChangeNo += StoreStockChangeIdString;
  741. balance.TransRecordNo = ChangeNo; //交易流水编号
  742. store.LaveNum -= OpStoreNum;
  743. store.OutNum += OpStoreNum;
  744. db.SaveChanges();
  745. }
  746. db.SaveChanges();
  747. tran.Commit();
  748. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  749. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  750. }
  751. catch (Exception ex)
  752. {
  753. DoCount = list.Rows.Count;
  754. tran.Rollback();
  755. ErrorMsg msg = new ErrorMsg()
  756. {
  757. Time = DateTime.Now,
  758. ErrorContent = ex.ToString(),
  759. };
  760. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常");
  761. }
  762. }
  763. }
  764. else if (_Kind == "4")
  765. {
  766. Dictionary<string, int> storeData = new Dictionary<string, int>();
  767. Dictionary<string, int> toStoreData = new Dictionary<string, int>();
  768. using (var tran = db.Database.BeginTransaction())
  769. {
  770. try
  771. {
  772. int Size = 100;
  773. if (list.Rows.Count - DoCount < 100)
  774. {
  775. Size = list.Rows.Count - DoCount;
  776. }
  777. List<string> opData = new List<string>();
  778. for (int i = DoCount; i < DoCount + Size; i++)
  779. {
  780. DataRow dr = list.Rows[i];
  781. string BatchNo = dr[0].ToString(); // 业务批次号
  782. string OldStoreNo = dr[1].ToString(); // 原仓库编号
  783. string OldOperator = dr[2].ToString(); // 操作人
  784. string SnNo = dr[3].ToString(); // SN编号
  785. SnNo = SnNo.Replace(" ", "");
  786. string StoreNo = dr[4].ToString(); // 退回仓库编号
  787. string BrandIdString = dr[5].ToString(); // 产品类型
  788. string OutNote = "";
  789. if (list.Columns.Count > 6)
  790. {
  791. OutNote = dr[6].ToString(); // 出库备注
  792. }
  793. int BrandId = int.Parse(function.CheckInt(BrandIdString));
  794. decimal amount = 0;
  795. KqProducts kqProduct = db.KqProducts.FirstOrDefault(m => m.Id == BrandId) ?? new KqProducts();
  796. if (kqProduct.Name.Contains("电签"))
  797. {
  798. amount = 200;
  799. }
  800. if (kqProduct.Name.Contains("大POS"))
  801. {
  802. amount = 300;
  803. }
  804. if (kqProduct.Id > 0)
  805. {
  806. StoreForCode storefor = db.StoreForCode.FirstOrDefault(m => m.Code == OldStoreNo) ?? new StoreForCode();
  807. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == storefor.StoreId) ?? new StoreHouse();
  808. if (store.Id > 0)
  809. {
  810. StoreForCode tostorefor = db.StoreForCode.FirstOrDefault(m => m.Code == StoreNo) ?? new StoreForCode();
  811. StoreHouse tostore = db.StoreHouse.FirstOrDefault(m => m.Id == tostorefor.StoreId && m.Status > -1) ?? new StoreHouse();
  812. if (tostore.Id > 0)
  813. {
  814. MachineForSnNo machinefor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo) ?? new MachineForSnNo();
  815. PosMachinesTwo machine = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machinefor.SnId && m.BuyUserId > 0) ?? new PosMachinesTwo();
  816. if (machine.Id > 0)
  817. {
  818. function.WriteLog(DateTime.Now.ToString() + "\n" + Newtonsoft.Json.JsonConvert.SerializeObject(machine), "机具回仓库日志");
  819. if (!opData.Contains(machine.BuyUserId + ":" + machine.BrandId))
  820. {
  821. opData.Add(machine.BuyUserId + ":" + machine.BrandId);
  822. }
  823. machine.StoreId = tostorefor.StoreId;
  824. machine.BuyUserId = 0;
  825. machine.UserId = 0;
  826. machine.BindingState = 0;
  827. machine.ActivationState = 0;
  828. machine.BindingTime = null;
  829. machine.ActivationTime = null;
  830. machine.OrderId = 0;
  831. machine.RecycEndDate = null;
  832. machine.PosSnType = 0;
  833. machine.BindMerchantId = 0;
  834. machine.ScanQrTrade = 0;
  835. machine.DebitCardTrade = 0;
  836. machine.CreditTrade = 0;
  837. machine.UserNav = null;
  838. machine.IsPurchase = 0;
  839. machine.LeaderUserId = 0;
  840. machine.PreUserId = 0;
  841. PublicFunction.ClearPosHistory(db, SnNo); //清除机具历史记录
  842. db.SaveChanges();
  843. if (!storeData.ContainsKey(storefor.StoreId + "_" + BrandId))
  844. {
  845. storeData.Add(storefor.StoreId + "_" + BrandId, 1);
  846. }
  847. else
  848. {
  849. storeData[storefor.StoreId + "_" + BrandId] += 1;
  850. }
  851. if (!toStoreData.ContainsKey(tostorefor.StoreId + "_" + BrandId))
  852. {
  853. toStoreData.Add(tostorefor.StoreId + "_" + BrandId, 1);
  854. }
  855. else
  856. {
  857. toStoreData[tostorefor.StoreId + "_" + BrandId] += 1;
  858. }
  859. SuccessCount += 1;
  860. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  861. }
  862. else
  863. {
  864. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "已在仓库中");
  865. }
  866. }
  867. else
  868. {
  869. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "填写的退回仓库编号不正确");
  870. }
  871. }
  872. else
  873. {
  874. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "填写的原仓库编号不正确");
  875. }
  876. db.SaveChanges();
  877. }
  878. else
  879. {
  880. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "的品牌填写有误");
  881. }
  882. }
  883. DoCount += Size;
  884. foreach (string key in storeData.Keys)
  885. {
  886. string[] keylist = key.Split('_');
  887. int StoreId = int.Parse(keylist[0]);
  888. int BrandId = int.Parse(keylist[1]);
  889. int OpStoreNum = storeData[key];
  890. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
  891. StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
  892. {
  893. CreateDate = DateTime.Now,
  894. CreateMan = Operator,
  895. StoreId = StoreId, //仓库
  896. TransType = 1, //交易类型
  897. BrandId = BrandId, //产品类型
  898. OpStoreNum = OpStoreNum, //操作库存数
  899. OpSymbol = "-", //操作符
  900. BeforeTotalNum = store.TotalNum, //操作前总库存数
  901. AfterTotalNum = store.TotalNum, //操作后总库存数
  902. BeforeLaveNum = store.LaveNum, //操作前剩余库存数
  903. AfterLaveNum = store.LaveNum - OpStoreNum, //操作后剩余库存数
  904. BeforeOutNum = store.OutNum, //操作前出库数
  905. AfterOutNum = store.OutNum + OpStoreNum, //操作后出库数
  906. }).Entity;
  907. db.SaveChanges();
  908. string ChangeNo = "JJBH";
  909. int StoreStockChangeId = balance.Id;
  910. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  911. for (int i = 0; i < 18 - StoreStockChangeId.ToString().Length; i++)
  912. {
  913. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  914. }
  915. ChangeNo += StoreStockChangeIdString;
  916. balance.TransRecordNo = ChangeNo; //交易流水编号
  917. store.LaveNum -= OpStoreNum;
  918. db.SaveChanges();
  919. }
  920. foreach (string key in toStoreData.Keys)
  921. {
  922. string[] keylist = key.Split('_');
  923. int StoreId = int.Parse(keylist[0]);
  924. int BrandId = int.Parse(keylist[1]);
  925. int OpStoreNum = toStoreData[key];
  926. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
  927. StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
  928. {
  929. CreateDate = DateTime.Now,
  930. CreateMan = Operator,
  931. StoreId = StoreId, //仓库
  932. TransType = 0, //交易类型
  933. BrandId = BrandId, //产品类型
  934. OpStoreNum = OpStoreNum, //操作库存数
  935. OpSymbol = "+", //操作符
  936. BeforeTotalNum = store.TotalNum, //操作前总库存数
  937. AfterTotalNum = store.TotalNum + OpStoreNum, //操作后总库存数
  938. BeforeLaveNum = store.LaveNum, //操作前剩余库存数
  939. AfterLaveNum = store.LaveNum + OpStoreNum, //操作后剩余库存数
  940. BeforeOutNum = store.OutNum, //操作前出库数
  941. AfterOutNum = store.OutNum, //操作后出库数
  942. }).Entity;
  943. db.SaveChanges();
  944. string ChangeNo = "SC";
  945. int StoreStockChangeId = balance.Id;
  946. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  947. for (int i = 0; i < 18 - StoreStockChangeId.ToString().Length; i++)
  948. {
  949. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  950. }
  951. ChangeNo += StoreStockChangeIdString;
  952. balance.TransRecordNo = ChangeNo; //交易流水编号
  953. store.LaveNum += OpStoreNum;
  954. db.SaveChanges();
  955. }
  956. db.SaveChanges();
  957. foreach (string sub in opData)
  958. {
  959. string[] datalist = sub.Split(":");
  960. PublicFunction.SycnMachineCount(int.Parse(datalist[0]), int.Parse(datalist[1]));
  961. }
  962. tran.Commit();
  963. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  964. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  965. }
  966. catch (Exception ex)
  967. {
  968. DoCount = list.Rows.Count;
  969. tran.Rollback();
  970. ErrorMsg msg = new ErrorMsg()
  971. {
  972. Time = DateTime.Now,
  973. ErrorContent = ex.ToString(),
  974. };
  975. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常");
  976. }
  977. }
  978. }
  979. else if (_Kind == "UserCashRecord")
  980. {
  981. using (var tran = db.Database.BeginTransaction())
  982. {
  983. try
  984. {
  985. int Size = 100;
  986. if (list.Rows.Count - DoCount < 100)
  987. {
  988. Size = list.Rows.Count - DoCount;
  989. }
  990. for (int i = DoCount; i < DoCount + Size; i++)
  991. {
  992. DataRow dr = list.Rows[i];
  993. string CashOrderNo = dr[2].ToString(); // 提现单号
  994. decimal Amount = decimal.Parse(function.CheckNum(dr[3].ToString())); // 发佣金额
  995. int Status = int.Parse(function.CheckInt(dr[4].ToString())); // 提现状态
  996. string Remark = dr[5].ToString(); // 备注
  997. CashOrderNo = CashOrderNo.Replace(" ", "");
  998. UserCashRecord edit = db.UserCashRecord.FirstOrDefault(m => m.CashOrderNo == CashOrderNo && m.ActualTradeAmount == Amount && m.Status == 0);
  999. if (edit != null)
  1000. {
  1001. if (edit.TradeType == 3)
  1002. {
  1003. edit.Status = Status;
  1004. edit.Remark = Remark;
  1005. edit.UpdateMan = Operator;
  1006. if (Status == 1)
  1007. {
  1008. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
  1009. if (account != null)
  1010. {
  1011. decimal TradeAmount = edit.TradeAmount;
  1012. db.LeaderAccountRecord.Add(new LeaderAccountRecord()
  1013. {
  1014. CreateDate = DateTime.Now,
  1015. UserId = edit.UserId, //创客
  1016. ChangeType = 3, //变动类型
  1017. ProductType = 99, //产品类型
  1018. ChangeAmount = TradeAmount, //变更金额
  1019. BeforeBalanceAmount = account.LeaderBalanceAmount, //变更前余额
  1020. AfterBalanceAmount = account.LeaderBalanceAmount, //变更后余额
  1021. });
  1022. db.SaveChanges();
  1023. RedisDbconn.Instance.Set("UserAccount:" + edit.UserId, account);
  1024. }
  1025. }
  1026. else if (Status == 2)
  1027. {
  1028. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
  1029. if (account != null)
  1030. {
  1031. decimal TradeAmount = edit.TradeAmount;
  1032. account.LeaderBalanceAmount += TradeAmount;
  1033. db.LeaderAccountRecord.Add(new LeaderAccountRecord()
  1034. {
  1035. CreateDate = DateTime.Now,
  1036. UserId = edit.UserId, //创客
  1037. ChangeType = 6, //变动类型
  1038. ProductType = 99, //产品类型
  1039. ChangeAmount = TradeAmount, //变更金额
  1040. BeforeBalanceAmount = account.LeaderBalanceAmount - TradeAmount, //变更前余额
  1041. AfterBalanceAmount = account.LeaderBalanceAmount, //变更后余额
  1042. });
  1043. db.SaveChanges();
  1044. RedisDbconn.Instance.Set("UserAccount:" + edit.UserId, account);
  1045. }
  1046. }
  1047. db.SaveChanges();
  1048. RedisDbconn.Instance.Clear("UserCashRecord:" + edit.Id);
  1049. SuccessCount += 1;
  1050. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  1051. }
  1052. else if (edit.TradeType == 4)
  1053. {
  1054. edit.Status = Status;
  1055. edit.Remark = Remark;
  1056. edit.UpdateMan = Operator;
  1057. if (Status == 1)
  1058. {
  1059. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
  1060. if (account != null)
  1061. {
  1062. decimal TradeAmount = edit.TradeAmount;
  1063. decimal ActualTradeAmount = edit.ActualTradeAmount;
  1064. account.HelpProfitBalanceAmount -= TradeAmount;
  1065. db.HelpProfitAccountRecord.Add(new HelpProfitAccountRecord()
  1066. {
  1067. CreateDate = DateTime.Now,
  1068. UserId = edit.UserId, //创客
  1069. ChangeType = 3, //变动类型
  1070. ProductType = 99, //产品类型
  1071. ChangeAmount = ActualTradeAmount, //变更金额
  1072. BeforeBalanceAmount = account.HelpProfitBalanceAmount + TradeAmount, //变更前余额
  1073. AfterBalanceAmount = account.HelpProfitBalanceAmount, //变更后余额
  1074. });
  1075. db.HelpProfitAccountRecord.Add(new HelpProfitAccountRecord()
  1076. {
  1077. CreateDate = DateTime.Now,
  1078. UpdateDate = DateTime.Now,
  1079. UserId = edit.UserId, //创客
  1080. ChangeType = 4, //变动类型
  1081. ProductType = 99, //产品类型
  1082. ChangeAmount = edit.TradeFee, //变更金额
  1083. BeforeBalanceAmount = account.HelpProfitBalanceAmount + TradeAmount, //变更前余额
  1084. AfterBalanceAmount = account.HelpProfitBalanceAmount, //变更后余额
  1085. });
  1086. db.HelpProfitAccountRecord.Add(new HelpProfitAccountRecord()
  1087. {
  1088. CreateDate = DateTime.Now,
  1089. UpdateDate = DateTime.Now,
  1090. UserId = edit.UserId, //创客
  1091. ChangeType = 5, //变动类型
  1092. ProductType = 99, //产品类型
  1093. ChangeAmount = edit.ManageFee, //变更金额
  1094. BeforeBalanceAmount = account.HelpProfitBalanceAmount + TradeAmount, //变更前余额
  1095. AfterBalanceAmount = account.HelpProfitBalanceAmount, //变更后余额
  1096. });
  1097. db.SaveChanges();
  1098. RedisDbconn.Instance.Set("HelpProfitAccount:" + edit.UserId, account);
  1099. }
  1100. }
  1101. else if (Status == 2)
  1102. {
  1103. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
  1104. if (account != null)
  1105. {
  1106. decimal TradeAmount = edit.TradeAmount;
  1107. decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
  1108. decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
  1109. decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
  1110. account.BalanceAmount += TradeAmount;
  1111. account.FreezeAmount -= TradeAmount;
  1112. decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
  1113. decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
  1114. decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
  1115. UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
  1116. {
  1117. CreateDate = DateTime.Now,
  1118. UpdateDate = DateTime.Now,
  1119. UserId = edit.UserId, //创客
  1120. ChangeType = 6, //变动类型
  1121. ProductType = 99, //产品类型
  1122. ChangeAmount = TradeAmount, //变更金额
  1123. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  1124. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  1125. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  1126. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  1127. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  1128. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  1129. }).Entity;
  1130. db.SaveChanges();
  1131. RedisDbconn.Instance.Set("UserAccount:" + edit.UserId, account);
  1132. PublicFunction.SplitUserAccountRecord(add);
  1133. }
  1134. }
  1135. db.SaveChanges();
  1136. RedisDbconn.Instance.Clear("UserCashRecord:" + edit.Id);
  1137. SuccessCount += 1;
  1138. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  1139. }
  1140. else
  1141. {
  1142. edit.Status = Status;
  1143. edit.Remark = Remark;
  1144. edit.UpdateMan = Operator;
  1145. if (Status == 1)
  1146. {
  1147. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
  1148. if (account != null)
  1149. {
  1150. account.QueryCount = 1;
  1151. decimal TradeAmount = edit.TradeAmount;
  1152. decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
  1153. decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
  1154. decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
  1155. account.WithdrawAmount += edit.TradeAmount;
  1156. account.FreezeAmount -= edit.TradeAmount;
  1157. decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
  1158. decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
  1159. decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
  1160. UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
  1161. {
  1162. CreateDate = DateTime.Now,
  1163. UpdateDate = DateTime.Now,
  1164. UserId = edit.UserId, //创客
  1165. ChangeType = 3, //变动类型
  1166. ProductType = 99, //产品类型
  1167. ChangeAmount = edit.ActualTradeAmount, //变更金额
  1168. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  1169. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  1170. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  1171. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  1172. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  1173. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  1174. }).Entity;
  1175. UserAccountRecord add1 = db.UserAccountRecord.Add(new UserAccountRecord()
  1176. {
  1177. CreateDate = DateTime.Now,
  1178. UpdateDate = DateTime.Now,
  1179. UserId = edit.UserId, //创客
  1180. ChangeType = 4, //变动类型
  1181. ProductType = 99, //产品类型
  1182. ChangeAmount = edit.TradeFee, //变更金额
  1183. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  1184. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  1185. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  1186. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  1187. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  1188. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  1189. }).Entity;
  1190. UserAccountRecord add2 = db.UserAccountRecord.Add(new UserAccountRecord()
  1191. {
  1192. CreateDate = DateTime.Now,
  1193. UpdateDate = DateTime.Now,
  1194. UserId = edit.UserId, //创客
  1195. ChangeType = 5, //变动类型
  1196. ProductType = 99, //产品类型
  1197. ChangeAmount = edit.ManageFee, //变更金额
  1198. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  1199. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  1200. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  1201. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  1202. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  1203. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  1204. }).Entity;
  1205. db.SaveChanges();
  1206. PublicFunction.SplitUserAccountRecord(add);
  1207. PublicFunction.SplitUserAccountRecord(add1);
  1208. PublicFunction.SplitUserAccountRecord(add2);
  1209. }
  1210. }
  1211. else if (Status == 2)
  1212. {
  1213. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
  1214. if (account != null)
  1215. {
  1216. decimal TradeAmount = edit.TradeAmount;
  1217. if (account.FreezeAmount < TradeAmount)
  1218. {
  1219. RedisDbconn.Instance.AddList("ErrList" + checkKey, "提现记录单号为" + CashOrderNo + "的创客冻结金额异常");
  1220. }
  1221. else
  1222. {
  1223. decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
  1224. decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
  1225. decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
  1226. account.BalanceAmount += TradeAmount;
  1227. account.FreezeAmount -= TradeAmount;
  1228. decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
  1229. decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
  1230. decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
  1231. UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
  1232. {
  1233. CreateDate = DateTime.Now,
  1234. UpdateDate = DateTime.Now,
  1235. UserId = edit.UserId, //创客
  1236. ChangeType = 6, //变动类型
  1237. ProductType = 99, //产品类型
  1238. ChangeAmount = TradeAmount, //变更金额
  1239. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  1240. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  1241. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  1242. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  1243. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  1244. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  1245. }).Entity;
  1246. db.SaveChanges();
  1247. PublicFunction.SplitUserAccountRecord(add);
  1248. }
  1249. }
  1250. }
  1251. db.SaveChanges();
  1252. RedisDbconn.Instance.Clear("UserCashRecord:" + edit.Id);
  1253. SuccessCount += 1;
  1254. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  1255. }
  1256. }
  1257. else
  1258. {
  1259. RedisDbconn.Instance.AddList("ErrList" + checkKey, "提现记录单号为" + CashOrderNo + "不存在或者金额不符");
  1260. }
  1261. }
  1262. DoCount += Size;
  1263. db.SaveChanges();
  1264. tran.Commit();
  1265. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  1266. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  1267. }
  1268. catch (Exception ex)
  1269. {
  1270. DoCount = list.Rows.Count;
  1271. tran.Rollback();
  1272. ErrorMsg msg = new ErrorMsg()
  1273. {
  1274. Time = DateTime.Now,
  1275. ErrorContent = ex.ToString(),
  1276. };
  1277. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常");
  1278. }
  1279. }
  1280. }
  1281. else if (_Kind == "ChangeFee")
  1282. {
  1283. using (var tran = db.Database.BeginTransaction())
  1284. {
  1285. try
  1286. {
  1287. int Size = 100;
  1288. if (list.Rows.Count - DoCount < 100)
  1289. {
  1290. Size = list.Rows.Count - DoCount;
  1291. }
  1292. string posIds = "";
  1293. string userIds = "";
  1294. string warning = "";
  1295. for (int i = DoCount; i < DoCount + Size; i++)
  1296. {
  1297. DataRow dr = list.Rows[i];
  1298. string PosNo = dr[0].ToString(); // 机具Sn
  1299. decimal Amount = decimal.Parse(function.CheckNum(dr[1].ToString())); // 调整费率
  1300. int Kind = int.Parse(function.CheckInt(dr[2].ToString())); // 1 调升 2 调低
  1301. var pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosNo) ?? new PosMachinesTwo();
  1302. warning += PosNo + ",";
  1303. }
  1304. if (!string.IsNullOrEmpty(warning))
  1305. {
  1306. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + warning + "该机具应直接设置,请全部重新导入");
  1307. }
  1308. else
  1309. {
  1310. for (int i = DoCount; i < DoCount + Size; i++)
  1311. {
  1312. DataRow dr = list.Rows[i];
  1313. string PosNo = dr[0].ToString(); // 机具Sn
  1314. decimal Amount = decimal.Parse(function.CheckNum(dr[1].ToString())); // 调整费率
  1315. int Kind = int.Parse(function.CheckInt(dr[2].ToString())); // 1 调升 2 调低
  1316. var pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosNo) ?? new PosMachinesTwo();
  1317. warning += PosNo + ",";
  1318. if (Kind == 1)
  1319. {
  1320. pos.UpFeeFlag = 1;
  1321. pos.UpFeeDate = DateTime.Now;
  1322. pos.UpFeeMan = Operator;
  1323. db.SaveChanges();
  1324. }
  1325. if (Kind == 2)
  1326. {
  1327. pos.DownFeeFlag = 1;
  1328. pos.DownFeeDate = DateTime.Now;
  1329. pos.DownFeeMan = Operator;
  1330. db.SaveChanges();
  1331. }
  1332. if (!userIds.Contains(pos.BuyUserId.ToString()))
  1333. {
  1334. userIds += pos.BuyUserId + ",";
  1335. }
  1336. posIds += pos.Id + ",";
  1337. }
  1338. string[] lists = userIds.Split(new char[] { ',' });
  1339. int times = lists.ToList().Count;
  1340. for (int i = 0; i < times; i++)
  1341. {
  1342. var UserId = lists[i];
  1343. var posInfo = db.PosMachinesTwo.Where(m => posIds.Contains(m.Id.ToString()) && m.BuyUserId == Convert.ToInt32(UserId));
  1344. string snhtml = "<div style='margin-bottom: .48rem;'>";
  1345. foreach (var items in posInfo)
  1346. {
  1347. var mer = db.PosMerchantInfo.FirstOrDefault(m => m.Id == items.BindMerchantId) ?? new PosMerchantInfo();
  1348. var brand = db.KqProducts.FirstOrDefault(m => m.Id == items.BrandId) ?? new KqProducts();
  1349. snhtml += "<div style='margin-bottom: .48rem;'><div class='f12'>商户姓名:" + mer.MerRealName + "</div>";
  1350. snhtml += "<div class='f12'>机具品牌:" + brand.Name + "</div>";
  1351. snhtml += "<div class='f12'>SN:" + items.PosSn + "</div>";
  1352. snhtml += "<div class='f12'>当前费率:0.6%</div>";
  1353. snhtml += "<div class='f12'>费率调整时间:" + items.DownFeeDate + "</div>";
  1354. }
  1355. snhtml += "</div>";
  1356. RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal()
  1357. {
  1358. UserId = Convert.ToInt32(UserId), //创客
  1359. Title = "商户费率变更通知", //标题
  1360. Content = "<div class='f12' style='margin-bottom: .72rem'>您的商户刷卡交易费率已变更成功!</div>" + snhtml, //内容
  1361. Summary = "您的商户刷卡交易费率已变更成功!",
  1362. CreateDate = DateTime.Now,
  1363. }));
  1364. }
  1365. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  1366. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  1367. }
  1368. }
  1369. catch (Exception ex)
  1370. {
  1371. DoCount = list.Rows.Count;
  1372. tran.Rollback();
  1373. ErrorMsg msg = new ErrorMsg()
  1374. {
  1375. Time = DateTime.Now,
  1376. ErrorContent = ex.ToString(),
  1377. };
  1378. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常");
  1379. }
  1380. }
  1381. }
  1382. else if (_Kind == "ImportJKCreateData")
  1383. {
  1384. var brandInfo = db.KqProducts.ToList();
  1385. using (var tran = db.Database.BeginTransaction())
  1386. {
  1387. try
  1388. {
  1389. int Size = 100;
  1390. if (list.Rows.Count - DoCount < 100)
  1391. {
  1392. Size = list.Rows.Count - DoCount;
  1393. }
  1394. for (int i = DoCount; i < DoCount + Size; i++)
  1395. {
  1396. DataRow dr = list.Rows[i];
  1397. string PosSn = dr[0].ToString(); // 提现单号
  1398. string CreateDate = dr[1].ToString(); // 备注
  1399. var pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosSn) ?? new PosMachinesTwo();
  1400. if (pos.Id > 0)
  1401. {
  1402. var brandName = brandInfo.FirstOrDefault(m => m.Id == pos.BrandId);
  1403. if (brandName.Name.StartsWith("金控"))
  1404. {
  1405. pos.CreateDate = DateTime.Parse(CreateDate);
  1406. SuccessCount += 1;
  1407. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  1408. }
  1409. else
  1410. {
  1411. RedisDbconn.Instance.AddList("ErrList" + checkKey, "以下操作失败" + PosSn + ',' + "该机具号品牌不符合修改规则");
  1412. }
  1413. }
  1414. else
  1415. {
  1416. RedisDbconn.Instance.AddList("ErrList" + checkKey, "以下操作失败" + PosSn + ',' + "该机具号不存在");
  1417. }
  1418. }
  1419. DoCount += Size;
  1420. db.SaveChanges();
  1421. tran.Commit();
  1422. if (DoCount >= list.Rows.Count)
  1423. {
  1424. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  1425. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  1426. }
  1427. }
  1428. catch (Exception ex)
  1429. {
  1430. DoCount = list.Rows.Count;
  1431. tran.Rollback();
  1432. ErrorMsg msg = new ErrorMsg()
  1433. {
  1434. Time = DateTime.Now,
  1435. ErrorContent = ex.ToString(),
  1436. };
  1437. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常(金控导入修改入库时间)");
  1438. }
  1439. }
  1440. }
  1441. db.Dispose();
  1442. }
  1443. }
  1444. else
  1445. {
  1446. Thread.Sleep(5000);
  1447. }
  1448. }
  1449. }
  1450. }
  1451. }