|
|
@ -1131,11 +1131,14 @@ select * from |
|
|
|
/// <param name="maxSN">最大顺序号加一</param>
|
|
|
|
/// <param name="pageBillLst">当前页的记录</param>
|
|
|
|
/// <param name="reportSort">报表分类,对应DicItemSort4</param>
|
|
|
|
/// <param name="partLargeTypeLst">零件大类字典项(已经排序)</param>
|
|
|
|
/// <param name="partLargeTypeLst">零件大类字典项(已经排序,当前报表类型)</param>
|
|
|
|
/// <param name="sortId">本次打印的sortId相同</param>
|
|
|
|
/// <returns></returns>
|
|
|
|
private MenBanPackingList DoMBPrint(MenBanPrintInputDto input, double maxSN, List<BillM100> pageBillLst, string reportSort, List<DicItem> partLargeTypeLst, Guid sortId) |
|
|
|
{ |
|
|
|
bool isScanFactoryPart = partLargeTypeLst[0].DicItemSort5 == "厂内零件号"; //扫描厂内零件
|
|
|
|
int scanPartCount = partLargeTypeLst.Count(itm => itm.DicItemSort10?.Trim() == "1"); //扫描零件数量
|
|
|
|
|
|
|
|
var partLargeTypeObj = partLargeTypeLst.FirstOrDefault(itm => itm.DicItemCode == reportSort); |
|
|
|
if (partLargeTypeObj == null) |
|
|
|
{ |
|
|
@ -1143,12 +1146,12 @@ select * from |
|
|
|
} |
|
|
|
string[] partLargeTypes = partLargeTypeLst.Select(itm => itm.DicItemCode).ToArray(); //取零件大类
|
|
|
|
|
|
|
|
//取扫描零件的索引
|
|
|
|
int idx = partLargeTypeLst.FindIndex(itm => itm.Id == partLargeTypeObj.Id); |
|
|
|
if (idx < 0) |
|
|
|
{ |
|
|
|
idx = 0; |
|
|
|
} |
|
|
|
////取扫描零件的索引
|
|
|
|
//int idx = partLargeTypeLst.FindIndex(itm => itm.Id == partLargeTypeObj.Id);
|
|
|
|
//if (idx < 0)
|
|
|
|
//{
|
|
|
|
// idx = 0;
|
|
|
|
//}
|
|
|
|
//var vmLst = curPageLst.Select(itm => itm.VehicleModelCode).Distinct().JoinAsString(","); //取车型
|
|
|
|
string ymd = ServerHelper.CurrentDateTime.ToString("yyyyMMdd"); |
|
|
|
string serialNum = maxSN.ToString().PadLeft(3, '0'); //075
|
|
|
@ -1195,6 +1198,28 @@ select * from |
|
|
|
if (partObj != null) |
|
|
|
{ |
|
|
|
packingDetail.PartCode1 = partObj.PartCode; |
|
|
|
|
|
|
|
#region 扫描零件赋值
|
|
|
|
if (scanPartCount >= 1) |
|
|
|
{ |
|
|
|
if (isScanFactoryPart) |
|
|
|
{ |
|
|
|
var partCfgObj = _partCfgLst.FirstOrDefault(itm => itm.PartCode == partObj.PartCode); |
|
|
|
if (partCfgObj == null) |
|
|
|
{ |
|
|
|
packingDetail.Remark = $"根据客户零件{partObj.PartCode}无法取得厂内零件"; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
packingDetail.ScanPartCode1 = partCfgObj.RelationKey; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
packingDetail.ScanPartCode1 = partObj.PartCode; |
|
|
|
} |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
} |
|
|
|
} |
|
|
|
//第二个零件
|
|
|
@ -1204,6 +1229,29 @@ select * from |
|
|
|
if (partObj != null) |
|
|
|
{ |
|
|
|
packingDetail.PartCode2 = partObj.PartCode; |
|
|
|
|
|
|
|
#region 扫描零件赋值
|
|
|
|
if (scanPartCount >= 2) |
|
|
|
{ |
|
|
|
if (isScanFactoryPart) |
|
|
|
{ |
|
|
|
var partCfgObj = _partCfgLst.FirstOrDefault(itm => itm.PartCode == partObj.PartCode); |
|
|
|
if (partCfgObj == null) |
|
|
|
{ |
|
|
|
packingDetail.Remark = $"根据客户零件{partObj.PartCode}无法取得厂内零件"; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
packingDetail.ScanPartCode2 = partCfgObj.RelationKey; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
packingDetail.ScanPartCode2 = partObj.PartCode; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
#endregion
|
|
|
|
} |
|
|
|
} |
|
|
|
//第三个零件
|
|
|
@ -1213,6 +1261,28 @@ select * from |
|
|
|
if (partObj != null) |
|
|
|
{ |
|
|
|
packingDetail.PartCode3 = partObj.PartCode; |
|
|
|
|
|
|
|
#region 扫描零件赋值
|
|
|
|
if (scanPartCount >= 3) |
|
|
|
{ |
|
|
|
if (isScanFactoryPart) |
|
|
|
{ |
|
|
|
var partCfgObj = _partCfgLst.FirstOrDefault(itm => itm.PartCode == partObj.PartCode); |
|
|
|
if (partCfgObj == null) |
|
|
|
{ |
|
|
|
packingDetail.Remark = $"根据客户零件{partObj.PartCode}无法取得厂内零件"; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
packingDetail.ScanPartCode3 = partCfgObj.RelationKey; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
packingDetail.ScanPartCode3 = partObj.PartCode; |
|
|
|
} |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
} |
|
|
|
} |
|
|
|
//第四个零件
|
|
|
@ -1222,103 +1292,30 @@ select * from |
|
|
|
if (partObj != null) |
|
|
|
{ |
|
|
|
packingDetail.PartCode4 = partObj.PartCode; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
switch (idx) |
|
|
|
{ |
|
|
|
case 0: |
|
|
|
if (partLargeTypeLst[0].DicItemSort5 == "厂内零件号") |
|
|
|
{ |
|
|
|
var partCfgObj = _partCfgLst.FirstOrDefault(itm => itm.PartCode == packingDetail.PartCode1); |
|
|
|
if (partCfgObj == null) |
|
|
|
{ |
|
|
|
packingDetail.Remark = $"根据客户零件{packingDetail.PartCode1}无法取得厂内零件"; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
packingDetail.ScanPartCode = partCfgObj.RelationKey; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
packingDetail.ScanPartCode = packingDetail.PartCode1; |
|
|
|
} |
|
|
|
break; |
|
|
|
case 1: |
|
|
|
if (partLargeTypeLst[0].DicItemSort5 == "厂内零件号") |
|
|
|
{ |
|
|
|
var partCfgObj = _partCfgLst.FirstOrDefault(itm => itm.PartCode == packingDetail.PartCode2); |
|
|
|
if (partCfgObj == null) |
|
|
|
{ |
|
|
|
packingDetail.Remark = $"根据客户零件{packingDetail.PartCode2}无法取得厂内零件"; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
packingDetail.ScanPartCode = partCfgObj.RelationKey; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
packingDetail.ScanPartCode = packingDetail.PartCode2; |
|
|
|
} |
|
|
|
break; |
|
|
|
case 2: |
|
|
|
if (partLargeTypeLst[0].DicItemSort5 == "厂内零件号") |
|
|
|
{ |
|
|
|
var partCfgObj = _partCfgLst.FirstOrDefault(itm => itm.PartCode == packingDetail.PartCode3); |
|
|
|
if (partCfgObj == null) |
|
|
|
{ |
|
|
|
packingDetail.Remark = $"根据客户零件{packingDetail.PartCode3}无法取得厂内零件"; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
packingDetail.ScanPartCode = partCfgObj.RelationKey; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
packingDetail.ScanPartCode = packingDetail.PartCode3; |
|
|
|
} |
|
|
|
break; |
|
|
|
case 3: |
|
|
|
if (partLargeTypeLst[0].DicItemSort5 == "厂内零件号") |
|
|
|
{ |
|
|
|
var partCfgObj = _partCfgLst.FirstOrDefault(itm => itm.PartCode == packingDetail.PartCode4); |
|
|
|
if (partCfgObj == null) |
|
|
|
{ |
|
|
|
packingDetail.Remark = $"根据客户零件{packingDetail.PartCode4}无法取得厂内零件"; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
packingDetail.ScanPartCode = partCfgObj.RelationKey; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
#region 扫描零件赋值
|
|
|
|
if (scanPartCount >= 4) |
|
|
|
{ |
|
|
|
packingDetail.ScanPartCode = packingDetail.PartCode4; |
|
|
|
} |
|
|
|
break; |
|
|
|
case 4: |
|
|
|
if (partLargeTypeLst[0].DicItemSort5 == "厂内零件号") |
|
|
|
{ |
|
|
|
var partCfgObj = _partCfgLst.FirstOrDefault(itm => itm.PartCode == packingDetail.PartCode5); |
|
|
|
if (partCfgObj == null) |
|
|
|
if (isScanFactoryPart) |
|
|
|
{ |
|
|
|
packingDetail.Remark = $"根据客户零件{packingDetail.PartCode5}无法取得厂内零件"; |
|
|
|
var partCfgObj = _partCfgLst.FirstOrDefault(itm => itm.PartCode == partObj.PartCode); |
|
|
|
if (partCfgObj == null) |
|
|
|
{ |
|
|
|
packingDetail.Remark = $"根据客户零件{partObj.PartCode}无法取得厂内零件"; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
packingDetail.ScanPartCode4 = partCfgObj.RelationKey; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
packingDetail.ScanPartCode = partCfgObj.RelationKey; |
|
|
|
packingDetail.ScanPartCode4 = partObj.PartCode; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
packingDetail.ScanPartCode = packingDetail.PartCode5; |
|
|
|
} |
|
|
|
break; |
|
|
|
#endregion
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
packingDetail.SN = sn.ToString(); |
|
|
|
packingMain.Details.Add(packingDetail); |
|
|
|
sn++; |
|
|
@ -1326,6 +1323,7 @@ select * from |
|
|
|
return packingMain; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 上箱位号加前缀
|
|
|
|
/// KNR前4位 大于等于 2402的 属于新发货状态, 不加前缀;
|
|
|
@ -2430,7 +2428,7 @@ select * from |
|
|
|
ListResultDto<BillM100> tempLst = await GetMBReportDetailList(input, false); |
|
|
|
List<BillM100> billLst = tempLst.Item; |
|
|
|
|
|
|
|
if (retLst.Count == 0 && billLst.Count < input.EndHostSN - input.BeginHostSN + 1) |
|
|
|
if (billLst.Count < input.EndHostSN - input.BeginHostSN + 1) |
|
|
|
{ |
|
|
|
retLst.Add($"本车装箱单不满架!"); |
|
|
|
} |
|
|
@ -2439,12 +2437,12 @@ select * from |
|
|
|
if (m100Obj.PrintBillNum.HasValue()) |
|
|
|
{ |
|
|
|
var alreadyPrintLst = billLst.Where(itm => string.IsNullOrEmpty(itm.PrintBillNum) == false).ToList(); |
|
|
|
var sortId = await GetPackingListByM100Id(input.ProductLine, m100Obj.Id); |
|
|
|
if (sortId != null) |
|
|
|
var sortIdLst = await GetPackingListByM100Id(input.ProductLine, m100Obj.Id); |
|
|
|
foreach (var sortId in sortIdLst) |
|
|
|
{ |
|
|
|
var allMBLst = await _menBanPackingListRepository.GetListAsync(itm => itm.SortId == sortId); |
|
|
|
string billNumStr = allMBLst.OrderBy(itm => itm.BillNum).JoinAsString(","); |
|
|
|
retLst.Add($"从{alreadyPrintLst[0].HostSN}到{alreadyPrintLst[alreadyPrintLst.Count - 1].HostSN}的大众顺序号已经打印,打印对应的单号是{billNumStr}"); |
|
|
|
string billNumStr = allMBLst.Select(itm => itm.BillNum).OrderBy(itm => itm).JoinAsString(","); |
|
|
|
retLst.Add($"从{alreadyPrintLst[0].HostSN}到{alreadyPrintLst[alreadyPrintLst.Count - 1].HostSN}的大众顺序号已经打印,打印对应的单号是:{billNumStr}"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -2465,14 +2463,14 @@ select * from |
|
|
|
/// </summary>
|
|
|
|
/// <param name="m100Id"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
private async Task<Guid?> GetPackingListByM100Id(string productLine, Guid m100Id, bool isTrans = false) |
|
|
|
private async Task<List<Guid?>> GetPackingListByM100Id(string productLine, Guid m100Id, bool isTrans = false) |
|
|
|
{ |
|
|
|
string sql = $@"
|
|
|
|
select top 1 SortId from FisMenBanPackingList where ProductLine = '{productLine}' |
|
|
|
select distinct SortId from FisMenBanPackingList where ProductLine = '{productLine}' and IsScrap = 0 |
|
|
|
and Id in (select MenBanPackingListId from FisMenBanPackingRec where M100BillId = '{m100Id}') |
|
|
|
";
|
|
|
|
var sortIdLst = await _newJitDapperRepository.GetListBySqlAsync<Guid?>(sql, isTrans); |
|
|
|
return sortIdLst.Count > 0 ? sortIdLst[0] : null; |
|
|
|
return sortIdLst; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
@ -3781,6 +3779,22 @@ and Id in (select MenBanPackingListId from FisMenBanPackingRec where M100BillId |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
#region 新校验
|
|
|
|
//4.校验1 - 4张单据都没有扫描提交,可以重复打印1 - 4张单据,或者打印1 - 5,
|
|
|
|
//5.重复打印后,原单据作废,原单据即使扫描也无法提交
|
|
|
|
var m100Id = billLst[0].Id; |
|
|
|
var sortIdLst2 = await GetPackingListByM100Id(input.ProductLine, m100Id, true); |
|
|
|
foreach (var sortId2 in sortIdLst2) |
|
|
|
{ |
|
|
|
var allMBLst = await _menBanPackingListRepository.GetListAsync(itm => itm.SortId == sortId2); |
|
|
|
foreach (var mbObj in allMBLst) |
|
|
|
{ |
|
|
|
mbObj.IsScrap = true; |
|
|
|
} |
|
|
|
await _menBanPackingListRepository.UpdateManyAsync(allMBLst); |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
//插入门板打印记录表
|
|
|
|
await _menBanPackingListRepository.InsertManyAsync(reportMainLst, true); |
|
|
|
//调用派格版库存接口
|
|
|
@ -3803,19 +3817,7 @@ and Id in (select MenBanPackingListId from FisMenBanPackingRec where M100BillId |
|
|
|
// await _billM100Repository.UpdateAsync(billObj, true);
|
|
|
|
//}
|
|
|
|
} |
|
|
|
//4.校验1 - 4张单据都没有扫描提交,可以重复打印1 - 4张单据,或者打印1 - 5,
|
|
|
|
//5.重复打印后,原单据作废,原单据即使扫描也无法提交
|
|
|
|
var m100Id = billLst[0].Id; |
|
|
|
var sortId2 = await GetPackingListByM100Id(input.ProductLine, m100Id, true); |
|
|
|
if (sortId2 != null) |
|
|
|
{ |
|
|
|
var allMBLst = await _menBanPackingListRepository.GetListAsync(itm => itm.SortId == sortId2); |
|
|
|
foreach (var mbObj in allMBLst) |
|
|
|
{ |
|
|
|
mbObj.IsScrap = true; |
|
|
|
} |
|
|
|
await _menBanPackingListRepository.UpdateManyAsync(allMBLst); |
|
|
|
} |
|
|
|
|
|
|
|
} //if 正常打印
|
|
|
|
//else if (input.PrintType == PrintTypeEnum.重新打印) //和正常打印单据完全一样,可以打印部分单据
|
|
|
|
//{
|
|
|
|