ExcelHelper.cs 113 KB

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