|
|
@ -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,6 +56,25 @@ namespace Win.Sfs.SettleAccount.FISes |
|
|
|
|
|
|
|
private readonly IRepository<FisTB_BILL_SCRAP> _tbBillScrapRepository; |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 日志
|
|
|
|
/// </summary>
|
|
|
|
private ILogger<BillM100AppService> _logger; |
|
|
|
|
|
|
|
private readonly IRepository<DicItem> _dicItemRepository; |
|
|
|
|
|
|
|
private readonly IRepository<PartCfg> _partCfgRepository; |
|
|
|
|
|
|
|
|
|
|
|
private string _errorMessagePrefix |
|
|
|
{ |
|
|
|
get |
|
|
|
{ |
|
|
|
return System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 门板装箱单仓储明细
|
|
|
|
/// </summary>
|
|
|
@ -63,14 +83,19 @@ namespace Win.Sfs.SettleAccount.FISes |
|
|
|
IRepository<BillM100, Guid> billM100Repository, |
|
|
|
WMSDapperRepository wmsRepository, |
|
|
|
LineSNDomianService lineSNDomianServic, |
|
|
|
IRepository<FisTB_BILL_SCRAP> tbBillScrapRepository |
|
|
|
) |
|
|
|
IRepository<FisTB_BILL_SCRAP> tbBillScrapRepository, |
|
|
|
ILogger<BillM100AppService> logger, |
|
|
|
IRepository<DicItem> dicItemRepository, |
|
|
|
IRepository<PartCfg> 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<List<MenBanPackingListDto>> GetPackingListByBillNum(string billNum) |
|
|
|
{ |
|
|
|
_logger.LogDebug(_errorMessagePrefix + "GetPackingListByBillNum 进入"); |
|
|
|
|
|
|
|
try |
|
|
|
{ |
|
|
|
List<DicItem> dicItemLst = await _dicItemRepository.GetListAsync(itm => itm.DicTypeCode == "零件大类"); |
|
|
|
List<PartCfg> partCfgLst = await _partCfgRepository.GetListAsync(); |
|
|
|
|
|
|
|
|
|
|
|
List<MenBanPackingList> reportMainLst = new List<MenBanPackingList>(); |
|
|
|
|
|
|
|
reportMainLst = await _menBanPackingListRepository.GetListAsync(itm => itm.BillNum == billNum, true); |
|
|
|
//按大众顺序号排序
|
|
|
|
foreach (var reportMainObj in reportMainLst) |
|
|
|
{ |
|
|
|
List<MenBanPackingRec> 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<MenBanPackingListDto> targetLst = ObjectMapper.Map<List<MenBanPackingList>, List<MenBanPackingListDto>>(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<bool> 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
|
|
|
|
} |
|
|
|
} |
|
|
|