BaseInvService.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. using Dm;
  2. using NPOI.SS.Formula.Functions;
  3. using Org.BouncyCastle.Asn1.Ocsp;
  4. using Org.BouncyCastle.Bcpg;
  5. using SqlSugar;
  6. using System;
  7. using System.Collections;
  8. using System.Collections.Generic;
  9. using System.Diagnostics;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. using wms.sqlsugar.model.cp;
  14. using WMS.BZModels;
  15. using WMS.BZModels.Dto.CP.BillInvDtos;
  16. using WMS.BZModels.Dto.CP.TaskDtos;
  17. using WMS.Info;
  18. using WMS.BZSqlSugar;
  19. using WMS.Util;
  20. using static log4net.Appender.ColoredConsoleAppender;
  21. using static NPOI.HSSF.Util.HSSFColor;
  22. using static System.Formats.Asn1.AsnWriter;
  23. namespace WMS.BZServices.CP
  24. {
  25. public class BaseInvService
  26. {
  27. private readonly Repository<BillInvnow> _billInvnowrepository;
  28. public BaseInvService(Repository<BillInvnow> billInvnowrepository)
  29. {
  30. _billInvnowrepository = billInvnowrepository;
  31. }
  32. public PagedInfo<BillInvNowDto> GetPageList(Pagination pagination, BillInvNowQueryDto billInvNowQueryDto)
  33. {
  34. ISugarQueryable<BillInvNowDto> sugarQueryable = GetQueryable(billInvNowQueryDto);
  35. var list = sugarQueryable.ToPage(pagination);
  36. return list;
  37. }
  38. public IList<BillInvNowDto> GetList(BillInvNowQueryDto billInvNowQueryDto)
  39. {
  40. ISugarQueryable<BillInvNowDto> sugarQueryable = GetQueryable(billInvNowQueryDto);
  41. var list = sugarQueryable.ToList();
  42. return list;
  43. }
  44. private ISugarQueryable<BillInvNowDto> GetQueryable(BillInvNowQueryDto billInvNowQueryDto)
  45. {
  46. var predicate = Expressionable.Create<BillInvnow, BaseWarecell>();
  47. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.KeyWord), (billInvnow, warecell) => billInvnow.RFIDBarCode.Contains(billInvNowQueryDto.KeyWord) || billInvnow.ContGrpBarCode.Contains(billInvNowQueryDto.KeyWord) || billInvnow.MatCode.Contains(billInvNowQueryDto.KeyWord) || billInvnow.MatName.Contains(billInvNowQueryDto.KeyWord) || billInvnow.InvBarCode.Contains(billInvNowQueryDto.KeyWord) || billInvnow.BoxBarCode.Contains(billInvNowQueryDto.KeyWord));
  48. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.Id), (billInvnow, warecell) => billInvnow.Id.ToString().Contains(billInvNowQueryDto.Id));
  49. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.ContGrpId), (billInvnow, warecell) => billInvnow.ContGrpId.ToString().Contains(billInvNowQueryDto.ContGrpId));
  50. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.EquContGrpId), (billInvnow, warecell) => billInvnow.ContGrpId.ToString().Equals(billInvNowQueryDto.EquContGrpId));
  51. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.MatCode), (billInvnow, warecell) => billInvnow.MatCode.Contains(billInvNowQueryDto.MatCode));
  52. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.MatName), (billInvnow, warecell) => billInvnow.MatName.Contains(billInvNowQueryDto.MatName));
  53. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.BoxBarCode), (billInvnow, warecell) => billInvnow.BoxBarCode.Contains(billInvNowQueryDto.BoxBarCode));
  54. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.InvBarCode), (billInvnow, warecell) => billInvnow.ContGrpBarCode.Contains(billInvNowQueryDto.InvBarCode));
  55. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.PutRow), (billInvnow, warecell) => billInvnow.PutRow.Equals(billInvNowQueryDto.PutRow));
  56. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.PutCol), (billInvnow, warecell) => billInvnow.PutCol.Equals(billInvNowQueryDto.PutCol));
  57. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.PutLayer), (billInvnow, warecell) => billInvnow.PutLayer.Equals(billInvNowQueryDto.PutLayer));
  58. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.Grade), (billInvnow, warecell) => billInvnow.Grade.Contains(billInvNowQueryDto.Grade));
  59. predicate = predicate.AndIF(billInvNowQueryDto != null && billInvNowQueryDto.OneInTimeBegin.HasValue, (billInvnow, warecell) => billInvnow.OneInTime >= billInvNowQueryDto.OneInTimeBegin);
  60. predicate = predicate.AndIF(billInvNowQueryDto != null && billInvNowQueryDto.OneInTimeEnd.HasValue, (billInvnow, warecell) => billInvnow.OneInTime <= billInvNowQueryDto.OneInTimeEnd);
  61. predicate = predicate.AndIF(billInvNowQueryDto != null && billInvNowQueryDto.ProductTimeBegin.HasValue, (billInvnow, warecell) => billInvnow.ProductTime >= billInvNowQueryDto.ProductTimeBegin);
  62. predicate = predicate.AndIF(billInvNowQueryDto != null && billInvNowQueryDto.ProductTimeEnd.HasValue, (billInvnow, warecell) => billInvnow.ProductTime <= billInvNowQueryDto.ProductTimeEnd);
  63. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.Tunnel), (billInvnow, warecell) => warecell.Tunnel.Equals(billInvNowQueryDto.Tunnel));
  64. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.Code), (billInvnow, warecell) => warecell.Code.Contains(billInvNowQueryDto.Code));
  65. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.IsSurplus), (billInvnow, warecell) => billInvnow.IsSurplus.Equals(billInvNowQueryDto.IsSurplus));
  66. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.IsRework), (billInvnow, warecell) => billInvnow.IsRework.Equals(billInvNowQueryDto.IsRework));
  67. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.IsFail), (billInvnow, warecell) => billInvnow.IsFail.Equals(billInvNowQueryDto.IsFail));
  68. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.IsFast), (billInvnow, warecell) => billInvnow.IsFast.Equals(billInvNowQueryDto.IsFast));
  69. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.IsBack), (billInvnow, warecell) => billInvnow.IsBack.Equals(billInvNowQueryDto.IsBack));
  70. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.ExecStateCode), (billInvnow, warecell) => billInvnow.ExecStateCode.Equals(billInvNowQueryDto.ExecStateCode));
  71. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.ContGrpType), (billInvnow, warecell) => billInvnow.ContGrpType.Equals(billInvNowQueryDto.ContGrpType));
  72. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.DoseNo), (billInvnow, warecell) => billInvnow.SalesDoc.Contains(billInvNowQueryDto.DoseNo));
  73. if (!string.IsNullOrEmpty(billInvNowQueryDto?.InvStateCode))
  74. {
  75. var enums = (InvState)Enum.ToObject(typeof(InvState), Convert.ToInt32(billInvNowQueryDto?.InvStateCode));
  76. predicate = predicate.AndIF(!string.IsNullOrEmpty(billInvNowQueryDto?.InvStateCode), (billInvnow, warecell) => billInvnow.InvStateCode.Equals(enums.ToString()));
  77. }
  78. var sugarQueryable = _billInvnowrepository.Context.Queryable<BillInvnow, BaseWarecell>((billInvnow, warecell) => new object[] {
  79. JoinType.Left,billInvnow.ContGrpId == warecell.ContGrpId && billInvnow.WarehouseId ==warecell.WarehouseId }).Where(predicate.ToExpression())
  80. .Select((billInvnow, warecell) => new BillInvNowDto
  81. {
  82. Id = billInvnow.Id.ToString(),
  83. WarehouseId = billInvnow.WarehouseId.ToString(),
  84. ContGrpId = billInvnow.ContGrpId.ToString(),
  85. ContGrpBarCode = billInvnow.ContGrpBarCode,
  86. ContGrpType = billInvnow.ContGrpType,
  87. BoxBarCode = billInvnow.BoxBarCode,
  88. BomDocsNo = billInvnow.BomDocsNo,
  89. BomMatId = billInvnow.BomMatId.ToString(),
  90. BomMatCode = billInvnow.BomMatCode,
  91. BomMatName = billInvnow.BomMatName,
  92. BomSetId = billInvnow.BomSetId.ToString(),
  93. ExecStateCode = billInvnow.ExecStateCode,
  94. InvStateCode = billInvnow.InvStateCode,
  95. ExecDocsNo = billInvnow.ExecDocsNo,
  96. ExecDocsRowNo = billInvnow.ExecDocsRowNo,
  97. ExecDocsTypeCode = billInvnow.ExecDocsTypeCode,
  98. InvInOut = billInvnow.InvInOut,
  99. ExecWho = billInvnow.ExecWho,
  100. ExecTime = billInvnow.ExecTime,
  101. PutRow = billInvnow.PutRow,
  102. PutCol = billInvnow.PutCol,
  103. PutLayer = billInvnow.PutLayer,
  104. InvBarCode = billInvnow.InvBarCode,
  105. InDocsNo = billInvnow.InDocsNo,
  106. InDocsRowNo = billInvnow.InDocsRowNo,
  107. SuppCode = billInvnow.SuppCode,
  108. SuppName = billInvnow.SuppName,
  109. CustCode = billInvnow.CustCode,
  110. CustName = billInvnow.CustName,
  111. MatId = billInvnow.MatId.ToString(),
  112. MatCode = billInvnow.MatCode,
  113. MatName = billInvnow.MatName,
  114. TolWQty = billInvnow.TolWQty,
  115. NetWQty = billInvnow.NetWQty,
  116. TareWQty = billInvnow.TareWQty,
  117. LengthQty = billInvnow.LengthQty,
  118. CaQty = billInvnow.CaQty,
  119. SolderQty = billInvnow.SolderQty,
  120. ContUsageQty = billInvnow.ContUsageQty,
  121. BatchNo = billInvnow.BatchNo,
  122. ProductTime = billInvnow.ProductTime,
  123. OneInTime = billInvnow.OneInTime,
  124. RodBarCode = billInvnow.RodBarCode,
  125. HWBarCode = billInvnow.HWBarCode,
  126. RFIDBarCode = billInvnow.RFIDBarCode,
  127. CLBarCode = billInvnow.CLBarCode,
  128. HWTypeCode = billInvnow.HWTypeCode,
  129. BoilerNo = billInvnow.BoilerNo,
  130. PackNo = billInvnow.PackNo,
  131. BrandNo = billInvnow.BrandNo,
  132. ExecStd = billInvnow.ExecStd,
  133. LicenceCode = billInvnow.LicenceCode,
  134. IsSurplus = billInvnow.IsSurplus,
  135. IsRework = billInvnow.IsRework,
  136. IsBlack = billInvnow.IsBlack,
  137. IsCore = billInvnow.IsCore,
  138. IsFast = billInvnow.IsFast,
  139. IsFail = billInvnow.IsFail,
  140. FailReason = billInvnow.FailReason,
  141. SilkTypeCode = billInvnow.SilkTypeCode,
  142. Grade = billInvnow.Grade,
  143. IsBack = billInvnow.IsBack,
  144. BackReason = billInvnow.BackReason,
  145. IsTorsChk = billInvnow.IsTorsChk,
  146. TorsChkQty = billInvnow.TorsChkQty,
  147. TorsChkTime = billInvnow.TorsChkTime,
  148. TorsChkValue = billInvnow.TorsChkValue,
  149. TorsChkMachCode = billInvnow.TorsChkMachCode,
  150. ProcessDocsCode = billInvnow.ProcessDocsCode,
  151. ProductMachCode = billInvnow.ProductMachCode,
  152. ProductLineNo = billInvnow.ProductLineNo,
  153. AddWho = billInvnow.AddWho,
  154. AddTime = billInvnow.AddTime,
  155. EditWho = billInvnow.EditWho,
  156. EditTime = billInvnow.EditTime,
  157. Size = billInvnow.Size,
  158. Memo = billInvnow.Memo,
  159. Tunnel = warecell.Tunnel,
  160. Code = warecell.Code,
  161. CellState = warecell.IsStop,
  162. SalesDoc = billInvnow.SalesDoc,
  163. HuTotalWt = billInvnow.HuTotalWt,
  164. }).MergeTable();
  165. return sugarQueryable;
  166. }
  167. public bool UpdatePassStates(List<string> ids, string userId)
  168. {
  169. if (!ids.Any())
  170. {
  171. throw new ArgumentException("没有选择箱号!");
  172. }
  173. var list = _billInvnowrepository.Queryable().Where(o => ids.Contains(o.Id.ToString())).ToList();
  174. if (!list.Any())
  175. {
  176. throw new ArgumentException("没有找到该箱号!");
  177. }
  178. list.ForEach(o =>
  179. {
  180. o.ExecStateCode = InvLockState.InvState_Normal.ToString();
  181. o.EditWho = userId;
  182. o.EditTime = DateTime.Now;
  183. o.Memo = "人工放行";
  184. });
  185. var result = _billInvnowrepository.UpdateRange(list.ToArray());
  186. return result;
  187. }
  188. public bool UpdateFailForm(string id, bool isFail, string userId)
  189. {
  190. if (string.IsNullOrEmpty(id))
  191. {
  192. throw new ArgumentException("没有选择库存!");
  193. }
  194. var first = _billInvnowrepository.Queryable().First(o => id.Equals(o.Id.ToString()));
  195. if (first == null)
  196. {
  197. throw new ArgumentException("没有找到该库存数据!");
  198. }
  199. first.IsFail = isFail;
  200. first.EditWho = userId;
  201. first.EditTime = DateTime.Now;
  202. //var result = _billInvnowrepository.Update(first);
  203. var result = _billInvnowrepository.UpdateModelColumns(p => new BillInvnow
  204. {
  205. IsFail=isFail,
  206. EditWho = userId,
  207. EditTime = DateTime.Now,
  208. }, it => it.Id.Equals( id));
  209. return result;
  210. }
  211. public List<EnumEntity> InvStateList()
  212. {
  213. return BZModels.Extensions.EnumToList<InvState>();
  214. }
  215. public List<EnumEntity> TaskStatusList()
  216. {
  217. return BZModels.Extensions.EnumToList<BZModels.TaskStatus>();
  218. }
  219. public List<EnumEntity> TaskTypeList()
  220. {
  221. return BZModels.Extensions.EnumToList<TaskType>();
  222. }
  223. public List<EnumEntity2> TaskBusTypeList()
  224. {
  225. return BZModels.Extensions.EnumToListDesc<CpTaskBusType>();
  226. }
  227. public List<EnumEntity> AGVTaskTypeList()
  228. {
  229. return BZModels.Extensions.EnumToList<AGVTaskType>();
  230. }
  231. public List<EnumEntity> FackbeekTypeList()
  232. {
  233. return BZModels.Extensions.EnumToList<CpFackbeekType>();
  234. }
  235. public List<EnumEntity> AGVTaskStatus()
  236. {
  237. return BZModels.Extensions.EnumToList<AGVTaskStatus>();
  238. }
  239. public List<EnumEntity> ContGrpTypeList()
  240. {
  241. return BZModels.Extensions.EnumToList<CpContGrpType>();
  242. }
  243. public List<EnumEntity> DocTypeList()
  244. {
  245. return BZModels.Extensions.EnumToList<CpDocType>();
  246. }
  247. public List<EnumEntity> DocStateList()
  248. {
  249. return BZModels.Extensions.EnumToList<DocState>();
  250. }
  251. public List<EnumEntity> LocationStateList()
  252. {
  253. return BZModels.Extensions.EnumToList<LocationState>();
  254. }
  255. public List<EnumEntity> AutoManualOutTypeList()
  256. {
  257. return BZModels.Extensions.EnumToList<AutoManualOutType>();
  258. }
  259. public List<EnumEntity> GetExecStateList()
  260. {
  261. return BZModels.Extensions.EnumToList<InvLockState>();
  262. }
  263. public List<EnumEntity2> InvLockStateList()
  264. {
  265. return BZModels.Extensions.EnumToListIdDesc<InvLockState>();
  266. }
  267. public List<EnumEntity> YesNoList()
  268. {
  269. return BZModels.Extensions.EnumToList<YesNo>();
  270. }
  271. public List<EnumEntity> EquipList()
  272. {
  273. return BZModels.Extensions.EnumToList<EquipList>();
  274. }
  275. public List<EnumEntity> AutoEquipList()
  276. {
  277. return BZModels.Extensions.EnumToList<AutoEquipList>();
  278. }
  279. }
  280. }