diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/PrintTable/Dtos/QueryWaitPrintDto.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/PrintTable/Dtos/QueryWaitPrintDto.cs index becef94..3b43e2a 100644 --- a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/PrintTable/Dtos/QueryWaitPrintDto.cs +++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/PrintTable/Dtos/QueryWaitPrintDto.cs @@ -37,7 +37,29 @@ namespace WY.NewJit.PrintTable.Dtos public int? HostSNEnd { get; set; } } + [Serializable] + public class QueryReplenishPrintDto : QueryWaitPrintDto + { + /// + /// 底牌号起 + /// + public string VINBegin { get; set; } + + /// + /// 底牌号止 + /// + public string VINEnd { get; set; } + /// + /// 上线时间起 + /// + public DateTime? OnlineTimeBegin { get; set; } + + /// + /// 上线时间止 + /// + public DateTime? OnlineTimeEnd { get; set; } + } [Serializable] public class QueryAlreadyPrintDto : QueryWaitPrintDto diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/PrintTable/Interfaces/IWaitPrintAppService.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/PrintTable/Interfaces/IWaitPrintAppService.cs index 1e4c70d..e37aed1 100644 --- a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/PrintTable/Interfaces/IWaitPrintAppService.cs +++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/PrintTable/Interfaces/IWaitPrintAppService.cs @@ -3,17 +3,14 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Uow; +using WY.NewJit.PrintTable.Dtos; namespace WY.NewJit.PrintTable { public interface IWaitPrintAppService { - /// - /// 根据生产线获取正常打印单据的起始大众顺序号 - /// - /// 生产线 - /// 起始大众顺序号 - //Task> GetPrintStartHostSN2(string productLine, string isZhuHuBan, string GroupName = null); - + Task> GetReplenishPrintListAsync(QueryReplenishPrintDto input); } } diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/WY.NewJit.Application.Contracts.xml b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/WY.NewJit.Application.Contracts.xml index 45cd1d0..b50e5de 100644 --- a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/WY.NewJit.Application.Contracts.xml +++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/WY.NewJit.Application.Contracts.xml @@ -3517,6 +3517,26 @@ 大众顺序号止 + + + 底牌号起 + + + + + 底牌号止 + + + + + 上线时间起 + + + + + 上线时间止 + + KNR起 diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM100s/MenBanPackingRecService.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM100s/MenBanPackingRecService.cs index ebd3630..816a7dd 100644 --- a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM100s/MenBanPackingRecService.cs +++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM100s/MenBanPackingRecService.cs @@ -32,6 +32,7 @@ using WY.NewJit.Extends.PaiGe.WMS; using WY.NewJit.Filter; using WY.NewJit.MsgBaseData; using WY.NewJit.MsgCheck; +using WY.NewJit.PrintTable; namespace Win.Sfs.SettleAccount.FISes { @@ -54,6 +55,8 @@ namespace Win.Sfs.SettleAccount.FISes private readonly LineSNDomianService _lineSNDomianServic; private readonly IRepository _tbBillScrapRepository; + private readonly IRepository _alreadyPrintRepository; + private readonly IRepository _waitPrintRepository; /// /// 门板装箱单仓储明细 @@ -63,7 +66,9 @@ namespace Win.Sfs.SettleAccount.FISes IRepository billM100Repository, WMSDapperRepository wmsRepository, LineSNDomianService lineSNDomianServic, - IRepository tbBillScrapRepository + IRepository tbBillScrapRepository, + IRepository alreadyPrintRepository, + IRepository waitPrintRepository ) { _menBanPackingListRepository = menBanPackingListRepository; @@ -71,6 +76,8 @@ namespace Win.Sfs.SettleAccount.FISes _wmsRepository = wmsRepository; _lineSNDomianServic = lineSNDomianServic; _tbBillScrapRepository = tbBillScrapRepository; + _alreadyPrintRepository = alreadyPrintRepository; + _waitPrintRepository = waitPrintRepository; } private void DelOrScrapWMSInterface(string billNum, bool isSynchronousMode = false) @@ -263,7 +270,7 @@ namespace Win.Sfs.SettleAccount.FISes /// 是否执行成功 [HttpPost] [Route("scrap")] - [UnitOfWork(isTransactional: false)] + [UnitOfWork] public virtual async Task> ScrapAsync(List ids) { var selLst = await _menBanPackingListRepository.Where(p => ids.Contains(p.Id)).ToListAsync(); @@ -335,17 +342,30 @@ namespace Win.Sfs.SettleAccount.FISes //批量改为未打印 var _childList = await _menBanPackingListRepository.Where(p => idList.Contains(p.Id)).SelectMany(p => p.Details).ToListAsync(); var _child = _childList.Select(p => p.M100BillId).Distinct().ToList(); - var m100Lst = await _billM100Repository.Where(p => _child.Contains(p.Id)).ToListAsync(); - m100Lst.ForEach(p => + var _apList = await _alreadyPrintRepository.Where(p => _child.Contains(p.Id)).ToListAsync(); + List _wpList = new List(); + foreach (var ap in _apList) { - if (p.BillStatus == BillStatusEnum.Publish) + var item = await _waitPrintRepository.GetListAsync(r => r.HostSN2 == ap.HostSN2); + if (item.Count == 0) { - p.SetBillStatus(BillStatusEnum.Match); + var wp = ObjectMapper.Map(ap); + _wpList.Add(wp); } - p.PrintTime = null; - }); - await _billM100Repository.UpdateManyAsync(m100Lst); - + else if(item.Count==1) + { + if(ap.BillStatus== BillStatusEnum.BreakNum&&item[0].BillStatus== BillStatusEnum.BreakNum) + { + throw new BusinessException("1001", "未打印列表和已打印列表出现都是断号的情况号码未【"+ ap.HostSN2 + "】,不能报废!"); + } + } + else if (item.Count > 1) + { + throw new BusinessException("1001", "未打印列表里出现大众顺序号重复号码为【"+ ap.HostSN2+ "】请检查后在报废!"); + } + } + await _alreadyPrintRepository.DeleteManyAsync(_apList); + await _waitPrintRepository.InsertManyAsync(_wpList); } else { @@ -354,6 +374,103 @@ namespace Win.Sfs.SettleAccount.FISes return wmsLst.Select(p => p.BillNum).ToList(); } + ///// + ///// 报废 + ///// + ///// IDs + ///// 是否执行成功 + //[HttpPost] + //[Route("scrap")] + //[UnitOfWork(isTransactional: false)] + //public virtual async Task> ScrapAsync(List ids) + //{ + // var selLst = await _menBanPackingListRepository.Where(p => ids.Contains(p.Id)).ToListAsync(); + // if (selLst == null || selLst.Count == 0) + // { + // throw new BusinessException("1001", "没有选中要作废的已打印装箱单!"); + // } + // foreach (var _obj in selLst) + // { + // string maxBillNum = await _menBanPackingListRepository.Where(itm => itm.ProductLine == _obj.ProductLine && itm.ReportStatus == ReportStatusEnum.已打印).MaxAsync(itm => itm.BillNum); //取当前生产线的最大装箱单号 + // if (string.IsNullOrEmpty(maxBillNum) == false) + // { + // MenBanPackingList firObj = await _menBanPackingListRepository.FirstOrDefaultAsync(itm => itm.BillNum == maxBillNum); + // if (firObj != null) + // { + // if (_obj.SortId != firObj.SortId) + // { + // throw new BusinessException("1001", "只能报废当前生产线的最后打印单据,要报废的单据不是最后打印单据!"); + // } + // } + // } + // } + + // var sortList = selLst.Select(p => p.SortId).Distinct().ToList();//筛选出匹配门板 + // List pairlist = _menBanPackingListRepository.Where(p => sortList.Contains(p.SortId)).ToList(); + + + // var idList = pairlist.Select(p => p.Id).ToList(); + // var _ls = pairlist.Select(p => p.BillNum).ToList(); + // var _strList = new List(); + + // _ls.ForEach(p => { + // _strList.Add(string.Format("'{0}'", p)); + // }); + // string str = string.Join(",", _strList.ToArray()); + // var wmsLst = _wmsRepository.GetListBySql(string.Format("select top 100 * from TB_BILL with(nolock) where (state=1 or state=2) and BillNum in ({0}) ", str)); + // if (wmsLst.Count() == 0) //库存没有排序 + // { + // //调用库存系统接口 + // List billNumLst = pairlist.Select(itm => itm.BillNum).Distinct().ToList(); + // foreach (string billNumStr in billNumLst) + // { + // DelOrScrapWMSInterface(billNumStr, true); + // } + + // #region 作废时单据序号减一 + // string curProductLine = selLst[0].ProductLine; + // DateTime curPrintDate = selLst[0].PrintDate; + // //string curPartType = selLst[0].PartType; + // var priorLst = _menBanPackingListRepository.Where(itm => itm.ReportStatus == ReportStatusEnum.已打印 && itm.ProductLine == curProductLine && idList.Contains(itm.Id) == false); + // if (priorLst.Any()) + // { + // string maxBillNum = priorLst.Max(itm => itm.BillNum); //除去要作废记录,取当前生产线的最大单据号 + // MenBanPackingList priorObj = priorLst.FirstOrDefault(itm => itm.BillNum == maxBillNum); //除去要作废记录,取当前生产线的最后打印记录 + // double updRecCnt = await _lineSNDomianServic.SetMaxSN(ProductTypeEnum.门板, curProductLine, "", priorObj.PrintDate, priorObj.BillSerialNum.TryToDoubleZero(), null); //调用减号接口 + // } + // else + // { + // double updRecCnt2 = await _lineSNDomianServic.SetMaxSN(ProductTypeEnum.门板, curProductLine, "", curPrintDate, 0, null); //调用减号接口,没有上条记录时 单据号传0 + // } + // #endregion + + // foreach (var itm in pairlist) + // { + // itm.ReportStatus = WY.NewJit.Extends.PaiGe.ReportStatusEnum.已作废; + // } + + // await _menBanPackingListRepository.UpdateManyAsync(pairlist); + // //批量改为未打印 + // var _childList = await _menBanPackingListRepository.Where(p => idList.Contains(p.Id)).SelectMany(p => p.Details).ToListAsync(); + // var _child = _childList.Select(p => p.M100BillId).Distinct().ToList(); + // var m100Lst = await _billM100Repository.Where(p => _child.Contains(p.Id)).ToListAsync(); + // m100Lst.ForEach(p => + // { + // if (p.BillStatus == BillStatusEnum.Publish) + // { + // p.SetBillStatus(BillStatusEnum.Match); + // } + // p.PrintTime = null; + // }); + // await _billM100Repository.UpdateManyAsync(m100Lst); + + // } + // else + // { + // throw new BusinessException("1001", "WMS已经排序,不能报废!"); + // } + // return wmsLst.Select(p => p.BillNum).ToList(); + //} } } diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/PrintTable/WaitPrintAppService.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/PrintTable/WaitPrintAppService.cs index 0dd0052..a068736 100644 --- a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/PrintTable/WaitPrintAppService.cs +++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/PrintTable/WaitPrintAppService.cs @@ -280,29 +280,29 @@ namespace WY.NewJit.PrintTable return ret; } - /// - /// 查询柱护板 - /// - /// - /// - /// - private async Task> QueryZHBByConditionAsync(QueryWaitPrintDto input, PagedAndSortedBase page) - { - PagedResultDto ret = new PagedResultDto(); - - var qryAlreadyPrintDto = ObjectMapper.Map(input); - string where = GetWhere(qryAlreadyPrintDto); - - ret.TotalCount = await GetEntityCountAsync("FisWaitPrint", where); - - //计算分页 - int fromRec = page.SkipCount + 1; - int ToRec = page.SkipCount + page.MaxResultCount; - - var lst = await GetEntityListFromToAsync("FisWaitPrint", where, "HostSN2", fromRec, ToRec); - ret.Items = lst; - return ret; - } + ///// + ///// 查询柱护板 + ///// + ///// + ///// + ///// + //private async Task> QueryZHBByConditionAsync(QueryWaitPrintDto input, PagedAndSortedBase page) + //{ + // PagedResultDto ret = new PagedResultDto(); + + // var qryAlreadyPrintDto = ObjectMapper.Map(input); + // string where = GetWhere(qryAlreadyPrintDto); + + // ret.TotalCount = await GetEntityCountAsync("FisWaitPrint", where); + + // //计算分页 + // int fromRec = page.SkipCount + 1; + // int ToRec = page.SkipCount + page.MaxResultCount; + + // var lst = await GetEntityListFromToAsync("FisWaitPrint", where, "HostSN2", fromRec, ToRec); + // ret.Items = lst; + // return ret; + //} private static string GetTrueString(string str) { @@ -480,7 +480,7 @@ namespace WY.NewJit.PrintTable //填充门板装箱单明细 MenBanPackingRec mbRec = new MenBanPackingRec(); mbRec.SetId(GuidGenerator.Create()); - mbRec.M100BillId = billObj.Id; + mbRec.M100BillId = billObj.Id; //传未打印列表id mbRec.KNR = billObj.KNR; //KNR订单号 mbRec.VIN = billObj.VIN; //底牌号 mbRec.HostSN = billObj.HostSN.ToString(); //大众顺序号 @@ -768,10 +768,10 @@ namespace WY.NewJit.PrintTable if (input.BusinessType == BusinessTypeEnum.MenBan) { ret = await QueryByConditionAsync(input, (PagedAndSortedBase)input); - } - else if (input.BusinessType == BusinessTypeEnum.OtherZhuHuBan || input.BusinessType == BusinessTypeEnum.ZhuHuBan) - { - ret = await QueryZHBByConditionAsync(input, (PagedAndSortedBase)input); + //} + //else if (input.BusinessType == BusinessTypeEnum.OtherZhuHuBan || input.BusinessType == BusinessTypeEnum.ZhuHuBan) + //{ + // ret = await QueryZHBByConditionAsync(input, (PagedAndSortedBase)input); } else { @@ -1159,6 +1159,38 @@ namespace WY.NewJit.PrintTable } #endregion + /// + /// 获取补账打印列表 + /// + /// 输入查询条件 + /// 返回符合条件的排序分页列表 + [HttpGet] + [UnitOfWork(false)] + [Route("replenish-print-list")] + public virtual async Task> GetReplenishPrintListAsync(QueryReplenishPrintDto input) + { + _logger.LogDebug(_errorMessagePrefix + "GetReplenishPrintListAsync 进入"); + try + { + PagedResultDto ret = new PagedResultDto(); + var qryAlreadyPrintDto = ObjectMapper.Map(input); + string where = GetWhere(qryAlreadyPrintDto); + ret.TotalCount = await GetEntityCountAsync("FisWaitPrint", where); + + //计算分页 + int fromRec = input.SkipCount + 1; + int ToRec = input.SkipCount + input.MaxResultCount; + var lst = await GetEntityListFromToAsync("FisWaitPrint", where, "HostSN2", fromRec, ToRec); + ret.Items = lst; + return ret; + } + catch (Exception ex) + { + string errMsg = _errorMessagePrefix + "GetReplenishPrintListAsync 执行出错:" + ex.Message; + _logger.LogError(errMsg); + return new PagedResultDto(0, new List()); + } + } } } diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/WY.NewJit.Application.xml b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/WY.NewJit.Application.xml index a8dd94d..bdd5a6c 100644 --- a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/WY.NewJit.Application.xml +++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/WY.NewJit.Application.xml @@ -1089,6 +1089,8 @@ 生产线超时提醒(新) + 先取未打印列表然后更新缓存列表,如果未打印列表为空取m100更新缓存列表 + 当未打印列表没有数据,则取缓存列表返回 生产线编号列表 生产线超时情况 @@ -1952,14 +1954,6 @@ 根据筛选条件获取实体列表 - - - 查询柱护板 - - - - - 根据条件取用于打印的门板单据列表 @@ -2017,6 +2011,13 @@ 断号时Item不为空 + + + 获取补账打印列表 + + 输入查询条件 + 返回符合条件的排序分页列表 + 打印柱护板(3*8 左右合并成一个单元格)A上C上 @@ -2115,7 +2116,7 @@ 区域相关应用服务 - + 门板装箱单仓储明细