diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM100s/MenBanPackingRecService.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM100s/MenBanPackingRecService.cs index ebd3630..4925f91 100644 --- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM100s/MenBanPackingRecService.cs +++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM100s/MenBanPackingRecService.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Threading.Tasks; -using EFCore.BulkExtensions; +using EFCore.BulkExtensions; using Magicodes.ExporterAndImporter.Core; using Magicodes.ExporterAndImporter.Csv; using Magicodes.ExporterAndImporter.Excel; @@ -13,7 +7,14 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Distributed; +using Microsoft.Extensions.Logging; using Shouldly; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; @@ -55,22 +56,46 @@ namespace Win.Sfs.SettleAccount.FISes private readonly IRepository _tbBillScrapRepository; + /// + /// 日志 + /// + private ILogger _logger; + + private readonly IRepository _dicItemRepository; + + private readonly IRepository _partCfgRepository; + + + private string _errorMessagePrefix + { + get + { + return System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."; + } + } + + /// /// 门板装箱单仓储明细 /// public MenBanPackingRecService( - NewJitEfCoreRepository1 menBanPackingListRepository, + NewJitEfCoreRepository1 menBanPackingListRepository, IRepository billM100Repository, WMSDapperRepository wmsRepository, LineSNDomianService lineSNDomianServic, - IRepository tbBillScrapRepository - ) + IRepository tbBillScrapRepository, + ILogger logger, + IRepository dicItemRepository, + IRepository partCfgRepository) { _menBanPackingListRepository = menBanPackingListRepository; _billM100Repository = billM100Repository; _wmsRepository = wmsRepository; _lineSNDomianServic = lineSNDomianServic; _tbBillScrapRepository = tbBillScrapRepository; + _logger = logger; + _dicItemRepository = dicItemRepository; + _partCfgRepository = partCfgRepository; } private void DelOrScrapWMSInterface(string billNum, bool isSynchronousMode = false) @@ -354,6 +379,176 @@ namespace Win.Sfs.SettleAccount.FISes return wmsLst.Select(p => p.BillNum).ToList(); } + #region 格拉默 + [HttpGet] + [Route("get-packinglist-by-billnum")] + public async Task> GetPackingListByBillNum(string billNum) + { + _logger.LogDebug(_errorMessagePrefix + "GetPackingListByBillNum 进入"); + + try + { + List dicItemLst = await _dicItemRepository.GetListAsync(itm => itm.DicTypeCode == "零件大类"); + List partCfgLst = await _partCfgRepository.GetListAsync(); + + + List reportMainLst = new List(); + + reportMainLst = await _menBanPackingListRepository.GetListAsync(itm => itm.BillNum == billNum, true); + //按大众顺序号排序 + foreach (var reportMainObj in reportMainLst) + { + List recLst = reportMainObj.Details; + if (recLst == null) + continue; + + bool has1999 = recLst.Any(itm => itm.HostSN.Contains("1999") || itm.HostSN.Contains("1998") || itm.HostSN.Contains("1997") + || itm.HostSN.Contains("1996") || itm.HostSN.Contains("1995") || itm.HostSN.Contains("1994") + || itm.HostSN.Contains("1993") || itm.HostSN.Contains("1992") || itm.HostSN.Contains("1991") + || itm.HostSN.Contains("1990") || itm.HostSN.Contains("1989") || itm.HostSN.Contains("1988") + || itm.HostSN.Contains("1987") || itm.HostSN.Contains("1986") || itm.HostSN.Contains("1985") + || itm.HostSN.Contains("1984") || itm.HostSN.Contains("1983") || itm.HostSN.Contains("1982") + || itm.HostSN.Contains("1981") || itm.HostSN.Contains("1980") || itm.HostSN.Contains("1979") + || itm.HostSN.Contains("1978") || itm.HostSN.Contains("1977") || itm.HostSN.Contains("1976") + ); + bool has0001 = recLst.Any(itm => itm.HostSN.Contains("0001") || itm.HostSN.Contains("0002") || itm.HostSN.Contains("0003") + || itm.HostSN.Contains("0004") || itm.HostSN.Contains("0005") || itm.HostSN.Contains("0006") + || itm.HostSN.Contains("0007") || itm.HostSN.Contains("0008") || itm.HostSN.Contains("0009") + || itm.HostSN.Contains("0010") || itm.HostSN.Contains("0011") || itm.HostSN.Contains("0012") + || itm.HostSN.Contains("0013") || itm.HostSN.Contains("0014") || itm.HostSN.Contains("0015") + || itm.HostSN.Contains("0016") || itm.HostSN.Contains("0017") || itm.HostSN.Contains("0018") + || itm.HostSN.Contains("0019") || itm.HostSN.Contains("0020") || itm.HostSN.Contains("0021") + || itm.HostSN.Contains("0022") || itm.HostSN.Contains("0023") || itm.HostSN.Contains("0024") + ); + if (has1999 && has0001) + { + reportMainObj.Details = recLst.OrderBy(itm => (itm.HostSN.TryToIntZero() % 10000) < 240 ? (itm.HostSN.TryToIntZero() % 10000 + 1999) : (itm.HostSN.TryToIntZero() % 10000)).ToList(); + } + else + { + reportMainObj.Details = recLst.OrderBy(itm => itm.HostSN).ToList(); + } + } + + #region 格式转换 + //实体 转 DTO + List targetLst = ObjectMapper.Map, List>(reportMainLst); + targetLst = targetLst.OrderBy(itm => itm.BillNum).ToList(); + + #region 扫描依据的列表, C8返回的客户零件号,其它车型返回厂内零件号 + foreach (var targetObj in targetLst) + { + foreach (var detailObj in targetObj.Details) + { + //第一个零件 + if (detailObj.PartCode1.HasValue() && detailObj.PartCode1.Length >= 9) + { + var dicItemObj = dicItemLst.FirstOrDefault(itm => itm.DicItemSort3 == targetObj.VehicleModel && itm.DicItemCode == detailObj.PartCode1.Substring(6, 3)); + var partCfgObj = partCfgLst.FirstOrDefault(itm => itm.PartCode == detailObj.PartCode1); + if (dicItemObj.DicItemSort5 == "客户零件") + { + if (partCfgObj != null) + { + detailObj.PartCode1 = partCfgObj.PartCode; + } + } + else if (dicItemObj.DicItemSort5 == "厂内零件") + { + if (partCfgObj != null) + { + detailObj.PartCode1 = partCfgObj.RelationKey; + } + } + } + //第二个零件 + if (detailObj.PartCode2.HasValue() && detailObj.PartCode2.Length >= 9) + { + var dicItemObj = dicItemLst.FirstOrDefault(itm => itm.DicItemSort3 == targetObj.VehicleModel && itm.DicItemCode == detailObj.PartCode2.Substring(6, 3)); + var partCfgObj = partCfgLst.FirstOrDefault(itm => itm.PartCode == detailObj.PartCode2); + if (dicItemObj.DicItemSort5 == "客户零件") + { + if (partCfgObj != null) + { + detailObj.PartCode2 = partCfgObj.PartCode; + } + } + else if (dicItemObj.DicItemSort5 == "厂内零件") + { + if (partCfgObj != null) + { + detailObj.PartCode2 = partCfgObj.RelationKey; + } + } + } + //第三个零件 + if (detailObj.PartCode3.HasValue() && detailObj.PartCode3.Length >= 9) + { + var dicItemObj = dicItemLst.FirstOrDefault(itm => itm.DicItemSort3 == targetObj.VehicleModel && itm.DicItemCode == detailObj.PartCode3.Substring(6, 3)); + var partCfgObj = partCfgLst.FirstOrDefault(itm => itm.PartCode == detailObj.PartCode3); + if (dicItemObj.DicItemSort5 == "客户零件") + { + if (partCfgObj != null) + { + detailObj.PartCode3 = partCfgObj.PartCode; + } + } + else if (dicItemObj.DicItemSort5 == "厂内零件") + { + if (partCfgObj != null) + { + detailObj.PartCode3 = partCfgObj.RelationKey; + } + } + } + //第四个零件 + if (detailObj.PartCode4.HasValue() && detailObj.PartCode4.Length >= 9) + { + var dicItemObj = dicItemLst.FirstOrDefault(itm => itm.DicItemSort3 == targetObj.VehicleModel && itm.DicItemCode == detailObj.PartCode4.Substring(6, 3)); + var partCfgObj = partCfgLst.FirstOrDefault(itm => itm.PartCode == detailObj.PartCode4); + if (dicItemObj.DicItemSort5 == "客户零件") + { + if (partCfgObj != null) + { + detailObj.PartCode4 = partCfgObj.PartCode; + } + } + else if (dicItemObj.DicItemSort5 == "厂内零件") + { + if (partCfgObj != null) + { + detailObj.PartCode4 = partCfgObj.RelationKey; + } + } + } + + } + } + #endregion + + #endregion + return targetLst; + } + catch (Exception ex) + { + string errorMsg = _errorMessagePrefix + "GetPackingListByBillNum 执行出错:" + ex.Message; + _logger.LogError(errorMsg); + throw new UserFriendlyException(errorMsg); + } + } + + [HttpPost] + [Route("update-scan-status")] + public virtual async Task UpdateScanStatus(string billNum) + { + var lst = await _menBanPackingListRepository.GetListAsync(itm => itm.BillNum == billNum); + foreach (var item in lst) + { + item.ReportStatus = ReportStatusEnum.已扫描; + var succ = await _menBanPackingListRepository.UpdateAsync(item); + } + return true; + } + #endregion } } diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/WY.NewJit.Application.xml b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/WY.NewJit.Application.xml index 00f45a5..38a8501 100644 --- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/WY.NewJit.Application.xml +++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/WY.NewJit.Application.xml @@ -1736,7 +1736,12 @@ 区域相关应用服务 - + + + 日志 + + + 门板装箱单仓储明细 diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain.Shared/Extends/PaiGe/PrintTypeEnum.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain.Shared/Extends/PaiGe/PrintTypeEnum.cs index 4d82160..7004fc9 100644 --- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain.Shared/Extends/PaiGe/PrintTypeEnum.cs +++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain.Shared/Extends/PaiGe/PrintTypeEnum.cs @@ -13,8 +13,8 @@ namespace WY.NewJit.Extends.PaiGe public enum ReportStatusEnum { - 已打印, - 已作废 - + 已打印 = 0, + 已作废 = 1, + 已扫描 = 2 } }