diff --git a/ZR.Service/mes/wms/IService/IWmPolishRecordService.cs b/ZR.Service/mes/wms/IService/IWmPolishRecordService.cs index 34d5cf18..a7ad7e22 100644 --- a/ZR.Service/mes/wms/IService/IWmPolishRecordService.cs +++ b/ZR.Service/mes/wms/IService/IWmPolishRecordService.cs @@ -16,5 +16,9 @@ namespace ZR.Service.mes.wms.IService WmPolishRecord AddWmPolishRecord(WmPolishRecord parm); int UpdateWmPolishRecord(WmPolishRecord parm); - } + + int GenerateWmPolishRecord(WmPolishRecordGenerateDto parm); + + + } } diff --git a/ZR.Service/mes/wms/WmPolishRecordService.cs b/ZR.Service/mes/wms/WmPolishRecordService.cs index 5e748d0a..de9a0669 100644 --- a/ZR.Service/mes/wms/WmPolishRecordService.cs +++ b/ZR.Service/mes/wms/WmPolishRecordService.cs @@ -1,8 +1,11 @@ using System; +using System.Linq; using Infrastructure.Attribute; using Infrastructure.Extensions; using SqlSugar; using ZR.Model; +using ZR.Model.Business; +using ZR.Model.MES.qc; using ZR.Model.MES.wms; using ZR.Model.MES.wms.Dto; using ZR.Repository; @@ -10,105 +13,263 @@ using ZR.Service.mes.wms.IService; namespace ZR.Service.mes.wms { - /// - /// 工艺路线-抛光 库存变动表Service业务层处理 - /// - [AppService(ServiceType = typeof(IWmPolishRecordService), ServiceLifetime = LifeTime.Transient)] - public class WmPolishRecordService : BaseService, IWmPolishRecordService - { - /// - /// 查询工艺路线-抛光 库存变动表列表 - /// - /// - /// - public PagedInfo GetList(WmPolishRecordQueryDto parm) - { - DateTime startTime = parm.StartActionTime ?? DateTime.MinValue; - DateTime endTime = parm.EndActionTime ?? DateTime.MinValue; - var predicate = Expressionable - .Create() - .AndIF( - !string.IsNullOrEmpty(parm.Partnumber), - it => it.Partnumber.Contains(parm.Partnumber) - ) - .AndIF( - !string.IsNullOrEmpty(parm.BlankNum), - it => it.BlankNum.Contains(parm.BlankNum) - ) - .AndIF( - !string.IsNullOrEmpty(parm.Remark), - it => it.Remark.Contains(parm.Remark) - ) - .AndIF(!string.IsNullOrEmpty(parm.Code), it => it.Code.Contains(parm.Code)) - .AndIF( - !string.IsNullOrEmpty(parm.FkInventoryId), - it => it.FkInventoryId == parm.FkInventoryId - ) - .AndIF(!string.IsNullOrEmpty(parm.Id), it => it.Id == parm.Id) - .AndIF(parm.ChangeType > -1, it => it.ChangeType == parm.ChangeType) - .AndIF( - startTime > DateTime.MinValue, - it => startTime <= it.ActionTime - ) - .AndIF( - endTime > DateTime.MinValue, - it => endTime >= it.ActionTime - ); + /// + /// 工艺路线-抛光 库存变动表Service业务层处理 + /// + [AppService(ServiceType = typeof(IWmPolishRecordService), ServiceLifetime = LifeTime.Transient)] + public class WmPolishRecordService : BaseService, IWmPolishRecordService + { + /// + /// 查询工艺路线-抛光 库存变动表列表 + /// + /// + /// + public PagedInfo GetList(WmPolishRecordQueryDto parm) + { + DateTime startTime = parm.StartActionTime ?? DateTime.MinValue; + DateTime endTime = parm.EndActionTime ?? DateTime.MinValue; + var predicate = Expressionable + .Create() + .AndIF( + !string.IsNullOrEmpty(parm.Partnumber), + it => it.Partnumber.Contains(parm.Partnumber) + ) + .AndIF( + !string.IsNullOrEmpty(parm.BlankNum), + it => it.BlankNum.Contains(parm.BlankNum) + ) + .AndIF( + !string.IsNullOrEmpty(parm.Remark), + it => it.Remark.Contains(parm.Remark) + ) + .AndIF(!string.IsNullOrEmpty(parm.Code), it => it.Code.Contains(parm.Code)) + .AndIF( + !string.IsNullOrEmpty(parm.FkInventoryId), + it => it.FkInventoryId == parm.FkInventoryId + ) + .AndIF(!string.IsNullOrEmpty(parm.Id), it => it.Id == parm.Id) + .AndIF(parm.ChangeType > -1, it => it.ChangeType == parm.ChangeType) + .AndIF( + startTime > DateTime.MinValue, + it => startTime <= it.ActionTime + ) + .AndIF( + endTime > DateTime.MinValue, + it => endTime >= it.ActionTime + ); - var response = Queryable() - .Where(predicate.ToExpression()) - .OrderByDescending(it => it.ActionTime) - .ToPage(parm); + var response = Queryable() + .Where(predicate.ToExpression()) + .OrderByDescending(it => it.ActionTime) + .ToPage(parm); - return response; - } + return response; + } - /// - /// 获取详情 - /// - /// - /// - public WmPolishRecord GetInfo(string Id) - { - var response = Queryable().Where(x => x.Id == Id).First(); + /// + /// 获取详情 + /// + /// + /// + public WmPolishRecord GetInfo(string Id) + { + var response = Queryable().Where(x => x.Id == Id).First(); - return response; - } + return response; + } - /// - /// 添加工艺路线-抛光 库存变动表 - /// - /// - /// - public WmPolishRecord AddWmPolishRecord(WmPolishRecord model) - { - return Context.Insertable(model).ExecuteReturnEntity(); - } + /// + /// 添加工艺路线-抛光 库存变动表 + /// + /// + /// + public WmPolishRecord AddWmPolishRecord(WmPolishRecord model) + { + return Context.Insertable(model).ExecuteReturnEntity(); + } - /// - /// 修改工艺路线-抛光 库存变动表 - /// - /// - /// - public int UpdateWmPolishRecord(WmPolishRecord model) - { - //var response = Update(w => w.Id == model.Id, it => new WmPolishRecord() - //{ - // Code = model.Code, - // Partnumber = model.Partnumber, - // BlankNum = model.BlankNum, - // ChangeType = model.ChangeType, - // ChangeQuantity = model.ChangeQuantity, - // ActionTime = model.ActionTime, - // Status = model.Status, - // Remark = model.Remark, - // CreatedBy = model.CreatedBy, - // CreatedTime = model.CreatedTime, - // UpdatedBy = model.UpdatedBy, - // UpdatedTime = model.UpdatedTime, - //}); - //return response; - return Update(model, true); - } - } + /// + /// 修改工艺路线-抛光 库存变动表 + /// + /// + /// + public int UpdateWmPolishRecord(WmPolishRecord model) + { + //var response = Update(w => w.Id == model.Id, it => new WmPolishRecord() + //{ + // Code = model.Code, + // Partnumber = model.Partnumber, + // BlankNum = model.BlankNum, + // ChangeType = model.ChangeType, + // ChangeQuantity = model.ChangeQuantity, + // ActionTime = model.ActionTime, + // Status = model.Status, + // Remark = model.Remark, + // CreatedBy = model.CreatedBy, + // CreatedTime = model.CreatedTime, + // UpdatedBy = model.UpdatedBy, + // UpdatedTime = model.UpdatedTime, + //}); + //return response; + return Update(model, true); + } + + /// + /// + /// + /// + /// + public int GenerateWmPolishRecord(WmPolishRecordGenerateDto parm) + { + + if (parm == null || parm.StartTime == null || parm.EndTime == null || parm.StartTime.Value >= DateTime.MinValue || parm.EndTime.Value >= DateTime.MinValue) + { + return -1; + } + else + { + #region 查询需要的数据 + //三入 + // 产线报表 根据日期范围 去取产线抛光的数据 qc_quality_statistics_first + List qcQualityStatisticsFirsts = Context + .Queryable() + .WhereIF(!string.IsNullOrEmpty(parm.Partnumber), it => it.FinishedPartNumber == parm.Partnumber) + .Where(it => it.StartTime >= parm.StartTime && it.StartTime <= parm.EndTime) + .ToList(); + + + // 后道报表 根据日期范围 去取后道反抛光的数据 wm_polish_quality_statistics + List wmPolishQualityStatistics = Context + .Queryable() + .WhereIF(!string.IsNullOrEmpty(parm.Partnumber), it => it.Partnumber == parm.Partnumber) + .Where(it => it.StartTime >= parm.StartTime && it.StartTime <= parm.EndTime) + .ToList(); + + // GP12报表 根据日期范围 去取gp12反抛光的数据 qc_gp12_service_statistics GP12(new) wm_gp12_quality_statistics(old) + List qcGp12ServiceStatistics = Context + .Queryable() + + .WhereIF(!string.IsNullOrEmpty(parm.Partnumber), it => it.PartNumber == parm.Partnumber) + .Where(it => it.StartTime >= parm.StartTime && it.StartTime <= parm.EndTime) + .GroupBy(o => o.GroupCode) + .ToList(); + //qcGp12ServiceStatistics = qcGp12ServiceStatistics.DistinctBy(o => o.PartNumber).ToList(); + + List wmGp12QualityStatistics = Context + .Queryable() + .WhereIF(!string.IsNullOrEmpty(parm.Partnumber), it => it.Partnumber == parm.Partnumber) + .Where(it => it.StartTime >= parm.StartTime && it.StartTime <= parm.EndTime) + .ToList(); + + //二出(同一张表)wm_polish_work_quality_statistics 根据日期范围 去取抛光操作出库的数据 + List wmPolishWorkQualityStatistics = Context + .Queryable() + .WhereIF(!string.IsNullOrEmpty(parm.Partnumber) ,it => it.Partnumber == parm.Partnumber) + .Where(it => it.StartTime >= parm.StartTime && it.StartTime <= parm.EndTime) + .ToList(); + #endregion + + + #region 组装 WmPolishRecord 实体 + // 组装 WmPolishRecord 实体 + List wmPolishRecords = new List(); + + foreach (var item in qcQualityStatisticsFirsts) + { + wmPolishRecords.Add(new WmPolishRecord + { + Id = null, + Code= "自动", + Partnumber=item.FinishedPartNumber, + ChangeType=1, + ChangeQuantity=item.PaoguangTotal, + ActionTime=item.StartTime, + Status=1, + Remark= "产线报表 根据日期范围 去取产线抛光的数据" + }); + } + + foreach (var item in wmPolishQualityStatistics) + { + wmPolishRecords.Add(new WmPolishRecord + { + Id = null, + Code = "自动", + Partnumber = item.Partnumber, + ChangeType = 1, + ChangeQuantity = item.PaoguangTotal, + ActionTime = item.StartTime, + Status = 1, + Remark = "后道报表 根据日期范围 去取后道反抛光的数据" + }); + } + + foreach (var item in qcGp12ServiceStatistics) + { + wmPolishRecords.Add(new WmPolishRecord + { + Id = null, + Code = "自动", + Partnumber = item.PartNumber, + ChangeType = 1, + ChangeQuantity = item.PolishNumber, + ActionTime = item.StartTime, + Status = 1, + Remark = " GP12报表(new) 根据日期范围 去取gp12反抛光的数据" + }); + } + + foreach (var item in wmGp12QualityStatistics) + { + wmPolishRecords.Add(new WmPolishRecord + { + Id = null, + Code = "自动", + Partnumber = item.Partnumber, + ChangeType = 1, + ChangeQuantity = item.PaoguangTotal, + ActionTime = item.StartTime, + Status = 1, + Remark = " GP12报表(old) 根据日期范围 去取gp12反抛光的数据" + }); + } + + foreach (var item in wmPolishWorkQualityStatistics) + { + wmPolishRecords.Add(new WmPolishRecord + { + Id = null, + Code = "自动", + Partnumber = item.Partnumber, + ChangeType = 2, + ChangeQuantity = item.RequireNumber, + ActionTime = item.StartTime, + Status = 1, + Remark = " 根据日期范围 去取抛光操作出库的数据" + }); + } + #endregion + + + // 批量插入到 wm_polish_record 表 + //如果有这个时间段的数据,要删除 + List delwmPolishRecords = Context + .Queryable() + .Where(it => it.Code =="自动") + .Where(it => it.CreatedTime >= parm.StartTime && it.CreatedTime <= parm.EndTime) + .ToList(); + Context.Deleteable(delwmPolishRecords).ExecuteCommand(); + + if (wmPolishRecords.Any()) + { + Context.Insertable(wmPolishRecords).ExecuteCommand(); + } + + return wmPolishRecords.Count; // 返回插入的记录数 + } + + + } + + } }