ExcelHelper.cs 114 KB

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