ExcelHelper.cs 113 KB

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