Repository.cs 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473
  1. using SqlSugar;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Linq.Expressions;
  6. using System.Text;
  7. using wms.dto;
  8. using wms.dto.request.hj;
  9. using wms.dto.request.hj.dto;
  10. using wms.sqlsugar.model;
  11. using wms.sqlsugar.model.hj;
  12. using wms.util.Check;
  13. using static wms.dto.request.hj.dto.ReportResponse;
  14. namespace wms.sqlsugar
  15. {
  16. /// <summary>
  17. /// 创建仓储
  18. /// </summary>
  19. /// <typeparam name="T"></typeparam>
  20. public class Repository<T> : SimpleClient<T> where T : BaseModel, new()
  21. {
  22. public Repository()
  23. {
  24. //固定数据库用法
  25. base.Context = SqlSugarHelper.Db.GetConnectionScopeWithAttr<T>();
  26. //动态库用法一般用于维护数据库连接字符串根据用法
  27. //if (!SqlSugarHelper.Db.IsAnyConnection("用户读出来的数据库ConfigId"))
  28. //{
  29. // SqlSugarHelper.Db.AddConnection(new ConnectionConfig() { 数据库读出来信息 });
  30. //}
  31. //base.Context = SqlSugarHelper.Db.GetConnectionScope("用户读出来的数据库ConfigId");
  32. }
  33. public T InsertReturnEntity(T t)
  34. {
  35. t = CheckId.InitId<T>(t);
  36. return base.Context.Insertable(t).ExecuteReturnEntity();
  37. }
  38. /// <summary>
  39. /// 该方法默认不更新CreatedUserId,CreatedTime
  40. /// </summary>
  41. /// <param name="entity"></param>
  42. /// <returns></returns>
  43. public bool UpdateEntity(T entity)
  44. {
  45. return base.Context.Updateable(entity).IgnoreColumns(new string[] { "CreatedUserId", "CreatedTime", "CreatedUserName" }).ExecuteCommand() > 0;
  46. }
  47. public bool UpdateModelColumns(Expression<Func<T, T>> Columns, Expression<Func<T, bool>> WhereExpression)
  48. {
  49. return base.Update(Columns, WhereExpression);
  50. }
  51. public T GetModelByExpression(Expression<Func<T, bool>> WhereExpression)
  52. {
  53. return base.GetSingle(WhereExpression);
  54. }
  55. public bool UpdateStatus(long id, int status, long userId)
  56. {
  57. return base.Context.Updateable<T>().SetColumns(it => new T() {
  58. //Status = status, UpdatedTime = DateTime.Now
  59. }).Where(it => it.Id == id).ExecuteCommand() > 0;
  60. }
  61. public List<hjSysConfig> GetTunList(TunnelRequest request)
  62. {
  63. var list = base.Context.Queryable<hjSysConfig>()
  64. .WhereIF(!string.IsNullOrEmpty(request.WareHouse), p => p.Default2 == request.WareHouse)
  65. .WhereIF(!string.IsNullOrEmpty(request.Tunnel), p => p.Default1 == request.Tunnel)
  66. .WhereIF(!string.IsNullOrEmpty(request.type), p => p.Default2 == request.type)
  67. .ToList();
  68. return list;
  69. }
  70. public bool UpdateTunStatu(long id, string statu, long userId)
  71. {
  72. return base.Context.Updateable<hjSysConfig>().SetColumns(it => new hjSysConfig()
  73. {
  74. SContent = statu,
  75. EditTime = DateTime.Now
  76. }).Where(it => it.Id == id).ExecuteCommand() > 0;
  77. }
  78. public (List<hjBaseWarehouse>, int) GetPageWareHouseList(QuertRequest request)
  79. {
  80. int count = 0;
  81. var list = base.Context.Queryable<hjBaseWarehouse>()
  82. .WhereIF(!string.IsNullOrEmpty(request.Code), p => p.Code.Contains(request.Code))
  83. .WhereIF(!string.IsNullOrEmpty(request.Name), p => p.Name.Contains(request.Name))
  84. .WhereIF(!string.IsNullOrEmpty(request.WareState), p => p.WareState == request.WareState)
  85. .WhereIF(!string.IsNullOrEmpty(request.FactoryNo), p => p.FactoryNo == request.FactoryNo)
  86. .WhereIF(!string.IsNullOrEmpty(request.WareType), p => p.WareType == request.WareType)
  87. .ToPageList(request.PageIndex, request.PageSize, ref count);
  88. return (list.ToList(), count);
  89. }
  90. public (List<hjBaseWareZone>, int) GetPageWareZoneList(WareZoneRequest request)
  91. {
  92. int count = 0;
  93. var list = base.Context.Queryable<hjBaseWareZone>()
  94. .WhereIF(!string.IsNullOrEmpty(request.Code), p => p.Code.Contains(request.Code))
  95. .WhereIF(!string.IsNullOrEmpty(request.Name), p => p.Name.Contains(request.Name))
  96. .WhereIF(request.WareId > Const.Zero, p => p.WareId == request.WareId)
  97. .WhereIF(!string.IsNullOrEmpty(request.WZoneState), p => p.WZoneState == request.WZoneState)
  98. .ToPageList(request.PageIndex, request.PageSize, ref count);
  99. return (list.ToList(), count);
  100. }
  101. public (List<hjBaseWareLocation>, int) GetPageWareLocationList(WareLocationRequest request)
  102. {
  103. int count = 0;
  104. var list = base.Context.Queryable<hjBaseWareLocation>()
  105. .WhereIF(!string.IsNullOrEmpty(request.Code), p => p.Code.Contains(request.Code))
  106. .WhereIF(!string.IsNullOrEmpty(request.Name), p => p.Name.Contains(request.Name))
  107. .WhereIF(request.LocationType > Const.MinOne, p => p.LocationType == request.LocationType)
  108. .WhereIF(request.Tunnel > Const.Zero, p => p.Tunnel == request.Tunnel)
  109. .WhereIF(!string.IsNullOrEmpty(request.WareCode), p => p.WareCode.Contains(request.WareCode))
  110. .ToPageList(request.PageIndex, request.PageSize, ref count);
  111. return (list.ToList(), count);
  112. }
  113. public (List<hjBaseUnits>, int) GetPageUnitList(BaseUnitRequest request)
  114. {
  115. int count = 0;
  116. var list = base.Context.Queryable<hjBaseUnits>()
  117. .WhereIF(!string.IsNullOrEmpty(request.Code), p => p.Code.Contains(request.Code))
  118. .WhereIF(!string.IsNullOrEmpty(request.Name), p => p.Name.Contains(request.Name))
  119. .WhereIF(!string.IsNullOrEmpty(request.PrimaryUnit), p => p.PrimaryUnit.Contains(request.PrimaryUnit))
  120. .WhereIF(!string.IsNullOrEmpty(request.DeputyUnit), p => p.DeputyUnit.Contains(request.DeputyUnit))
  121. .ToPageList(request.PageIndex, request.PageSize, ref count);
  122. return (list.ToList(), count);
  123. }
  124. public (List<hjBaseMater>, int) GetPageMaterList(BaseMaterRequest request)
  125. {
  126. int count = 0;
  127. var list = base.Context.Queryable<hjBaseMater>()
  128. .WhereIF(!string.IsNullOrEmpty(request.Code), p => p.Code.Contains(request.Code))
  129. .WhereIF(!string.IsNullOrEmpty(request.Name), p => p.Name.Contains(request.Name))
  130. .WhereIF(request.HoldDuration > Const.Zero, p => p.HoldDuration == request.HoldDuration)
  131. .WhereIF(request.PlatingWeight > Const.Zero, p => p.PlatingWeight == request.PlatingWeight)
  132. .WhereIF(!string.IsNullOrEmpty(request.Strength), p => p.Strength.Contains(request.Strength))
  133. .WhereIF(!string.IsNullOrEmpty(request.Plating), p => p.Plating.Contains(request.Plating))
  134. .ToPageList(request.PageIndex, request.PageSize, ref count);
  135. return (list.ToList(), count);
  136. }
  137. public (List<hjBillBarcode>, int) GetPageBarCodeList(BaseBarCodeRequest request)
  138. {
  139. int count = 0;
  140. var list = base.Context.Queryable<hjBillBarcode>()
  141. .WhereIF(!string.IsNullOrEmpty(request.MatCode), p => p.MatCode.Contains(request.MatCode))
  142. .WhereIF(!string.IsNullOrEmpty(request.HWBarCode), p => p.HWBarCode.Contains(request.HWBarCode))
  143. .WhereIF(!string.IsNullOrEmpty(request.RFIDBarCode), p => p.RFIDBarCode.Contains(request.RFIDBarCode))
  144. .ToPageList(request.PageIndex, request.PageSize, ref count);
  145. return (list.ToList(), count);
  146. }
  147. public (List<MaterReportResponse>, int, decimal) GetPageMaterInAndOutReportList(ReportRequest request)
  148. {
  149. int count = 0;
  150. var list = base.Context.Queryable<hjBillContainer, hjBillTaskHistory, hjBaseWarehouse>((container, taskHistory, house) => new object[]
  151. {
  152. JoinType.Inner, container.ContGrpId == taskHistory.ContGrpId,
  153. JoinType.Inner, taskHistory.WareCode == house.Code
  154. })
  155. .WhereIF(!string.IsNullOrEmpty(request.RFID), (container, taskHistory, house) => taskHistory.ContGrpBarCode.Contains(request.RFID))
  156. .WhereIF(!string.IsNullOrEmpty(request.HWSpec), (container, taskHistory, house) => container.HWSpec == request.HWSpec)
  157. .WhereIF(!string.IsNullOrEmpty(request.Grade), (container, taskHistory, house) => container.Grade == request.Grade)
  158. .WhereIF(!string.IsNullOrEmpty(request.ExecDocsNo), (container, taskHistory, house) => container.ExecDocsNo.Contains(request.ExecDocsNo))
  159. .WhereIF(!string.IsNullOrEmpty(request.PutLocNo), (container, taskHistory, house) => container.PutLocNo.Contains(request.PutLocNo))
  160. .WhereIF(request.TaskCode > Const.Zero, (container, taskHistory, house) => taskHistory.TaskCode == request.TaskCode)
  161. .WhereIF(!string.IsNullOrEmpty(request.Tunnel), (container, taskHistory, house) => taskHistory.Tunnel == request.Tunnel)
  162. .WhereIF(!string.IsNullOrEmpty(request.StartPoint), (container, taskHistory, house) => taskHistory.StartPoint == request.StartPoint)
  163. .WhereIF(!string.IsNullOrEmpty(request.EndPoint), (container, taskHistory, house) => taskHistory.EndPoint == request.EndPoint)
  164. .Select((container, taskHistory, house) => new MaterReportResponse()
  165. {
  166. RFID = container.ContGrpBarCode,
  167. ContGrpBarCode = container.ContGrpBarCode,
  168. ExecState = container.ExecState.ToString(),
  169. ExecDocsNo = container.ExecDocsNo,
  170. ExecDocsRowNo = container.ExecDocsRowNo,
  171. CustNo = container.CustCode,
  172. CustName = container.CustName,
  173. PutRow = container.PutRow,
  174. PutCol = container.PutCol,
  175. PutLayer = container.PutLayer,
  176. PutLocNo = container.PutLocNo,
  177. InvBarCode = container.InvBarCode,
  178. InvState = container.InvState,
  179. InDocsNo = container.InDocsNo,
  180. InDocsRowNo = container.InDocsRowNo,
  181. SuppCode = container.SuppCode,
  182. SuppName = container.SuppName,
  183. WareHouseName = house.Name,
  184. ProductTime = container.ProductTime,
  185. RFIDBarCode = container.RFIDBarCode,
  186. HWSpec = container.HWSpec,
  187. IsSurplus = container.IsSurplus,
  188. IsRework = container.IsRework,
  189. IsFast = container.IsFast,
  190. IsFail = container.IsFail,
  191. FailReason = container.FailReason,
  192. Grade = container.Grade,
  193. IsBack = container.IsBack,
  194. BackReason = container.Reason,
  195. ProductWbNo = container.ProductWbNo,
  196. ProductLineNo = container.ProductLineNo
  197. })
  198. .ToPageList(request.PageIndex, request.PageSize, ref count);
  199. decimal pro = list.Sum(p => p.TotalWtQty); //临时计算总重量
  200. //list = list.Skip((request.PageIndex - 1) * request.PageSize).Take(request.PageSize).ToList();
  201. return (list.ToList(), count, pro);
  202. }
  203. public (List<RealTimeInventoryReportResponse>, int, decimal) GetPageRealTimeInventoryReportList(ReportRequest request)
  204. {
  205. int count = 0;
  206. var list = base.Context.Queryable<hjBillContainer, hjBaseWarehouse, hjBaseWareLocation, hjBaseMater>((container, house, location, mater) => new object[]
  207. {
  208. JoinType.Left, container.WarehouseId == house.Id,
  209. JoinType.Left, house.Code == location.WareCode,
  210. JoinType.Left, container.MatId == mater.Id
  211. })
  212. .WhereIF(!string.IsNullOrEmpty(request.ContGrpBarCode), (container, house, location, mater) => container.ContGrpBarCode.Contains(request.ContGrpBarCode))
  213. .WhereIF(!string.IsNullOrEmpty(request.InvBarCode), (container, house, location, mater) => container.InvBarCode.Contains(request.InvBarCode))
  214. .WhereIF(!string.IsNullOrEmpty(request.Location), (container, house, location, mater) => location.Code.Contains(request.Location))
  215. .WhereIF(!string.IsNullOrEmpty(request.MatCode), (container, house, location, mater) => mater.Code.Contains(request.MatCode))
  216. .OrderBy((container, house, location, mater) => container.OneInTime, OrderByType.Asc)
  217. .Select((container, house, location, mater) => new RealTimeInventoryReportResponse()
  218. {
  219. ContGrpBarCode = container.ContGrpBarCode,
  220. WareHouseName = house.Name,
  221. InvBarCode = container.InvBarCode,
  222. HWSpec = container.HWSpec,
  223. MatCode = mater.Code,
  224. Grade = container.Grade,
  225. SilkType = container.SilkType,
  226. TotalWtQty = container.TotalWtQty,
  227. NetWQty = container.NetWQty,
  228. TareWQty = container.TareWQty,
  229. LengthQty = container.LengthQty,
  230. InvState = container.InvState,
  231. IsSurplus = container.IsSurplus,
  232. IsRework = container.IsRework,
  233. IsFast = container.IsFast,
  234. IsBack = container.IsBack,
  235. BackReason = container.Reason,
  236. IsFail = container.IsFail,
  237. FailReason = container.FailReason,
  238. ProductTime = container.ProductTime,
  239. OneInTime = container.OneInTime,
  240. InDocsNo = container.InDocsNo,
  241. InDocsRowNo = container.InDocsRowNo,
  242. PutRow = container.PutRow,
  243. PutCol = container.PutCol,
  244. PutLayer = container.PutLayer,
  245. PutLocNo = container.PutLocNo,
  246. SuppCode = container.SuppCode,
  247. SuppName = container.SuppName,
  248. CustNo = container.CustCode,
  249. CustName = container.CustName,
  250. RFIDBarCode = container.RFIDBarCode,
  251. Tunnel = location.Tunnel.ToString(),
  252. Location = location.Code,
  253. })
  254. .ToPageList(request.PageIndex, request.PageSize, ref count);
  255. decimal pro = list.Sum(p => p.TotalWtQty); //临时计算总重量
  256. //list = list.Skip((request.PageIndex - 1) * request.PageSize).Take(request.PageSize).ToList();
  257. return (list.ToList(), count, pro);
  258. }
  259. public (List<InventoryAgingReportResponse>, int) GetPageInventoryAgingReportList(ReportRequest request)
  260. {
  261. int count = 0;
  262. var list = base.Context.Queryable<hjBillContainer, hjBaseWarehouse, hjBaseWareLocation, hjBaseMater>((container, house, location, mater) => new object[]
  263. {
  264. JoinType.Left, container.WarehouseId == house.Id,
  265. JoinType.Left, house.Code == location.WareCode,
  266. JoinType.Left, container.MatId == mater.Id
  267. })
  268. .WhereIF(!string.IsNullOrEmpty(request.RFID), (container, house, location, mater) => container.RFIDBarCode.Contains(request.RFID))
  269. .WhereIF(!string.IsNullOrEmpty(request.HWSpec), (container, house, location, mater) => container.HWSpec == request.HWSpec)
  270. .WhereIF(!string.IsNullOrEmpty(request.Tunnel), (container, house, location, mater) => location.Tunnel == int.Parse(request.Tunnel))
  271. .WhereIF(!string.IsNullOrEmpty(request.MatCode), (container, house, location, mater) => mater.Code.Contains(request.MatCode))
  272. .WhereIF(!string.IsNullOrEmpty(request.Grade), (container, house, location, mater) => container.Grade == request.Grade)
  273. .WhereIF(request.HoldDuration != null && request.HoldDuration > 0, (container, house, location, mater) => mater.HoldDuration == request.HoldDuration)
  274. .GroupBy((container, house, location, mater) => new {
  275. RFIDBarCode = container.RFIDBarCode,
  276. HWSpec = container.HWSpec,
  277. MatCode = mater.Code,
  278. MatName = mater.Name,
  279. Grade = container.Grade,
  280. ProductTime = container.ProductTime,
  281. HoldDuration = mater.HoldDuration,
  282. Tunnel = location.Tunnel.ToString()
  283. })
  284. .Select((container, house, location, mater) => new InventoryAgingReportResponse()
  285. {
  286. RFIDBarCode = container.RFIDBarCode,
  287. HWSpec = container.HWSpec,
  288. MatCode = mater.Code,
  289. MatName = mater.Name,
  290. Grade = container.Grade,
  291. ProductTime = container.ProductTime,
  292. HoldDuration = mater.HoldDuration,
  293. Tunnel = location.Tunnel.ToString()
  294. //Remaindays = (decimal)(container.ProductTime.AddDays((double)mater.HoldDuration) - DateTime.Now).TotalHours
  295. //Duedate = container.ProductTime.AddDays((double)mater.HoldDuration)
  296. })
  297. .ToPageList(request.PageIndex, request.PageSize, ref count);
  298. //list = list.Skip((request.PageIndex - 1) * request.PageSize).Take(request.PageSize).ToList();
  299. return (list.ToList(), count);
  300. }
  301. public (List<TaskRsponse>, int) GetPageTaskList(TaskRequest request)
  302. {
  303. int count = 0;
  304. var list = base.Context.Queryable<hjBillTask, hjBaseWarehouse>((task, house) => new object[]
  305. {
  306. JoinType.Inner, task.WareCode == house.Code
  307. })
  308. .WhereIF(request.TaskCode > Const.Zero, (task, house) => task.TaskCode == request.TaskCode)
  309. .WhereIF(request.TaskType > Const.Zero, (task, house) => task.TaskType == request.TaskType)
  310. .WhereIF(request.TaskState > Const.Zero, (task, house) => task.TaskState == request.TaskState)
  311. .WhereIF(request.Tunnel > Const.Zero, (task, house) => task.Tunnel == request.Tunnel)
  312. .WhereIF(!string.IsNullOrEmpty(request.BusType), (task, house) => task.BusType.Contains(request.BusType))
  313. .WhereIF(!string.IsNullOrEmpty(request.WareCode), (task, house) => task.WareCode.Contains(request.WareCode))
  314. .WhereIF(!string.IsNullOrEmpty(request.ContGrpBarCode), (task, house) => task.ContGrpBarCode.Contains(request.ContGrpBarCode))
  315. .WhereIF(!string.IsNullOrEmpty(request.EndPoint), (task, house) => task.EndPoint.Contains(request.EndPoint))
  316. .WhereIF(!string.IsNullOrEmpty(request.StartPoint), (task, house) => task.StartPoint.Contains(request.StartPoint))
  317. .WhereIF(!string.IsNullOrEmpty(request.DocCode), (task, house) => task.DocCode.Contains(request.DocCode))
  318. .Select((task, house) => new TaskRsponse()
  319. {
  320. Id = task.Id,
  321. TaskCode = task.TaskCode,
  322. TaskType = task.TaskType,
  323. TaskState = task.TaskState,
  324. Tunnel = task.Tunnel,
  325. ContGrpBarCode = task.ContGrpBarCode,
  326. EndPoint = task.EndPoint,
  327. StartPoint = task.StartPoint,
  328. BusType = task.BusType,
  329. WareCodeName = house.Name,
  330. Priority = task.Priority,
  331. EquNo = task.EquNo,
  332. Srm = task.SrmNo,
  333. CurPoint = task.CurPoint,
  334. NextPoint = task.NextPoint,
  335. Qty = task.Qty,
  336. DocCode = task.DocCode,
  337. IsManual = task.IsManual,
  338. IsEmpty = task.IsEmpty,
  339. AddWho = task.AddWho,
  340. EditWho = task.EditWho,
  341. AddTime = task.AddTime,
  342. EditTime = task.EditTime
  343. })
  344. .ToPageList(request.PageIndex, request.PageSize, ref count);
  345. //list = list.Skip((request.PageIndex - 1) * request.PageSize).Take(request.PageSize).ToList();
  346. return (list.ToList(), count);
  347. }
  348. public (List<TaskRsponse>, int) GetPageTaskHistoryList(TaskRequest request)
  349. {
  350. int count = 0;
  351. var list = base.Context.Queryable<hjBillTaskHistory, hjBaseWarehouse>((taskHistory, house) => new object[]
  352. {
  353. JoinType.Inner, taskHistory.WareCode == house.Code
  354. })
  355. .WhereIF(request.TaskCode > Const.Zero, (taskHistory, house) => taskHistory.TaskCode == request.TaskCode)
  356. .WhereIF(request.TaskType > Const.Zero, (taskHistory, house) => taskHistory.TaskType == request.TaskType)
  357. .WhereIF(request.TaskState > Const.Zero, (taskHistory, house) => taskHistory.TaskState == request.TaskState)
  358. .WhereIF(request.Tunnel > Const.Zero, (taskHistory, house) => taskHistory.Tunnel == request.Tunnel.ToString())
  359. .WhereIF(!string.IsNullOrEmpty(request.BusType), (taskHistory, house) => taskHistory.BusType.Contains(request.BusType))
  360. .WhereIF(!string.IsNullOrEmpty(request.WareCode), (taskHistory, house) => taskHistory.WareCode.Contains(request.WareCode))
  361. .WhereIF(!string.IsNullOrEmpty(request.ContGrpBarCode), (taskHistory, house) => taskHistory.ContGrpBarCode.Contains(request.ContGrpBarCode))
  362. .WhereIF(!string.IsNullOrEmpty(request.EndPoint), (taskHistory, house) => taskHistory.EndPoint.Contains(request.EndPoint))
  363. .WhereIF(!string.IsNullOrEmpty(request.StartPoint), (taskHistory, house) => taskHistory.StartPoint.Contains(request.StartPoint))
  364. .WhereIF(!string.IsNullOrEmpty(request.DocCode), (taskHistory, house) => taskHistory.DocCode.Contains(request.DocCode))
  365. .Select((taskHistory, house) => new TaskRsponse()
  366. {
  367. Id = taskHistory.Id,
  368. TaskCode = taskHistory.TaskCode,
  369. TaskType = taskHistory.TaskType,
  370. TaskState = taskHistory.TaskState,
  371. Tunnel = int.Parse(taskHistory.Tunnel),
  372. ContGrpBarCode = taskHistory.ContGrpBarCode,
  373. EndPoint = taskHistory.EndPoint,
  374. StartPoint = taskHistory.StartPoint,
  375. BusType = taskHistory.BusType,
  376. WareCodeName = house.Name,
  377. Priority = taskHistory.Priority,
  378. EquNo = taskHistory.EquNo,
  379. Srm = taskHistory.SrmNo,
  380. CurPoint = taskHistory.CurPoint,
  381. NextPoint = taskHistory.NextPoint,
  382. Qty = taskHistory.Qty,
  383. DocCode = taskHistory.DocCode,
  384. IsManual = int.Parse(taskHistory.IsManual),
  385. IsEmpty = int.Parse(taskHistory.IsEmpty),
  386. AddWho = taskHistory.AddWho,
  387. EditWho = taskHistory.EditWho,
  388. AddTime = taskHistory.AddTime,
  389. EditTime = taskHistory.EditTime
  390. })
  391. .ToPageList(request.PageIndex, request.PageSize, ref count);
  392. //list = list.Skip((request.PageIndex - 1) * request.PageSize).Take(request.PageSize).ToList();
  393. return (list.ToList(), count);
  394. }
  395. public (List<RealTimeInventoryReportResponse>, int, decimal) GetPageStockdetailList(StockRequest request)
  396. {
  397. int count = 0;
  398. var list = base.Context.Queryable<hjBillContainer, hjBaseWarehouse, hjBaseWareLocation, hjBaseMater>((stock, house, location, mater) => new object[]
  399. {
  400. JoinType.Left, stock.WarehouseId == house.Id,
  401. JoinType.Left, house.Id == location.WareId,
  402. JoinType.Left, stock.MatId == mater.Id
  403. })
  404. .Where((stock, house, location, mater) => house.WareState == Const.One.ToString()
  405. && location.LocationState == LocationState.LocationState_Full.GetHashCode() && location.LocationType == LocationType.LocationType_StorageLocation.GetHashCode()
  406. && stock.ExecState == InvState.InvEcecState_In.GetHashCode() && stock.ContGrpId == location.ContGrpID)
  407. .WhereIF(!string.IsNullOrEmpty(request.Grade), (stock, house, location, mater) => stock.Grade == request.Grade)
  408. .WhereIF(!string.IsNullOrEmpty(request.Location), (stock, house, location, mater) => location.Code.Contains(request.Location))
  409. .WhereIF(!string.IsNullOrEmpty(request.MatCode), (stock, house, location, mater) => mater.Code.Contains(request.MatCode))
  410. .WhereIF(!string.IsNullOrEmpty(request.ContGrpBarCode), (stock, house, location, mater) => stock.ContGrpBarCode.Contains(request.ContGrpBarCode))
  411. .WhereIF(!string.IsNullOrEmpty(request.HWSpec), (stock, house, location, mater) => stock.HWSpec == request.HWSpec)
  412. .WhereIF(request.HoldDuration > 0, (stock, house, location, mater) => mater.HoldDuration == request.HoldDuration)
  413. .Select((stock, house, location, mater) => new RealTimeInventoryReportResponse()
  414. {
  415. ContGrpBarCode = stock.ContGrpBarCode,
  416. ExecState = stock.ExecState.ToString(),
  417. ExecDocsNo = stock.ExecDocsNo,
  418. ExecDocsRowNo = stock.ExecDocsRowNo,
  419. ExecDocsTypeCode = stock.ExecDocsTypeCode,
  420. MatCode = mater.Code,
  421. MatName = mater.Name,
  422. Location = location.Code,
  423. Tunnel = location.Tunnel.ToString(),
  424. CustNo = stock.CustCode,
  425. CustName = stock.CustName,
  426. WareHouseName = house.Name,
  427. InvBarCode = stock.InvBarCode,
  428. InvState = stock.InvState,
  429. InDocsNo = stock.InDocsNo,
  430. InDocsRowNo = stock.InDocsRowNo,
  431. SuppCode = stock.SuppCode,
  432. SuppName = stock.SuppName,
  433. RowStop = location.RowStop,
  434. TotalWtQty = stock.TotalWtQty,
  435. NetWQty = stock.NetWQty,
  436. TareWQty = stock.TareWQty,
  437. LengthQty = stock.LengthQty,
  438. BatchNo = stock.Batch,
  439. ProductTime = stock.ProductTime,
  440. OneInTime = stock.OneInTime,
  441. RFIDBarCode = stock.RFIDBarCode,
  442. HWSpec = stock.HWSpec,
  443. IsSurplus = stock.IsSurplus,
  444. IsRework = stock.IsRework,
  445. IsFast = stock.IsFast,
  446. IsFail = stock.IsFail,
  447. FailReason = stock.FailReason,
  448. Grade = stock.Grade,
  449. IsBack = stock.IsBack,
  450. BackReason = stock.Reason,
  451. ProductWbNo = stock.ProductWbNo,
  452. ProductLineNo = stock.ProductLineNo,
  453. })
  454. .ToPageList(request.PageIndex, request.PageSize, ref count);
  455. decimal total = list.Sum(p => p.TotalWtQty);
  456. //list = list.Skip((request.PageIndex - 1) * request.PageSize).Take(request.PageSize).ToList();
  457. return (list.ToList(), count, total);
  458. }
  459. }
  460. }