using Infrastructure.Attribute; using SqlSugar; using System.Linq; using System; 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; using ZR.Service.mes.wms.IService; namespace ZR.Service.mes.wms { /// /// 一次合格品仓库记录表Service业务层处理 /// [AppService( ServiceType = typeof(IWmOneTimeRecordService), ServiceLifetime = LifeTime.Transient )] public class WmOneTimeRecordService : BaseService, IWmOneTimeRecordService { /// /// 查询一次合格品仓库记录表列表 /// /// /// public PagedInfo GetList(WmOneTimeRecordQueryDto parm) { 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( parm.StartActionTime != null, it => parm.StartActionTime.Value.ToLocalTime() <= it.ActionTime ) .AndIF( parm.EndActionTime != null, it => parm.EndActionTime.Value.ToLocalTime() >= it.ActionTime ); var response = Queryable() .Where(predicate.ToExpression()) .ToPage(parm); return response; } /// /// 获取详情 /// /// /// public WmOneTimeRecord GetInfo(string Id) { var response = Queryable().Where(x => x.Id == Id).First(); return response; } /// /// 添加一次合格品仓库记录表 /// /// /// public WmOneTimeRecord AddWmOneTimeRecord(WmOneTimeRecord model) { return Context.Insertable(model).ExecuteReturnEntity(); } /// /// 修改一次合格品仓库记录表 /// /// /// public int UpdateWmOneTimeRecord(WmOneTimeRecord model) { //var response = Update(w => w.Id == model.Id, it => new WmOneTimeRecord() //{ // 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 GenerateWmOneTimeRecord(WmOneTimeRecordGenerateDto parm) { if (parm == null || parm.StartTime == null || parm.StartTime.Value == DateTime.MinValue) { return -1; } else { #region 查询需要的数据 //TODO 入库条件1 产线合格品qc_quality_statistics_first,合格数,其中去除(倒车雷达) List qcQualityStatisticsFirsts = Context .Queryable() .WhereIF( !string.IsNullOrEmpty(parm.Partnumber), it => it.FinishedPartNumber == parm.Partnumber ) .Where(it => !it.ProductDescription.Contains("倒车雷达")) .Where(it => it.StartTime >= parm.StartTime) .Where(it => it.PaoguangTotal > 0) .ToList(); //TODO 入库条件2 抛光合格品 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) .ToList(); //TODO 出库条件1 GP12 (新) 触摸屏 qc_gp12_service_statistics 投入数 List qcGp12ServiceStatistics = Context .Queryable() .WhereIF( !string.IsNullOrEmpty(parm.Partnumber), it => it.PartNumber == parm.Partnumber ) .Where(it => it.StartTime >= parm.StartTime) .Where(it => it.GroupSort == 1) .Where(it => it.PolishNumber > 0) .ToList(); //TODO 出库条件2 后道 wm_polish_quality_statistics 投入数 List wmPolishQualityStatistics = Context .Queryable() .WhereIF( !string.IsNullOrEmpty(parm.Partnumber), it => it.Partnumber == parm.Partnumber ) .Where(it => it.StartTime >= parm.StartTime) .ToList(); #endregion #region 组装 WmOneTimeRecord 实体 List wmOneTimeRecords = new List(); foreach (var item in qcQualityStatisticsFirsts) { wmOneTimeRecords.Add( new WmOneTimeRecord { Id = SnowFlakeSingle.Instance.NextId().ToString(), FkInventoryId = item.Id, Code = "自动", Partnumber = item.FinishedPartNumber, ChangeType = 1, ChangeQuantity = item.PaoguangTotal, ActionTime = item.StartTime, Status = 1, Remark = "产线合格品 合格数" } ); } foreach (var item in wmPolishWorkQualityStatistics) { wmOneTimeRecords.Add( new WmOneTimeRecord { Id = SnowFlakeSingle.Instance.NextId().ToString(), FkInventoryId = item.Id, Code = "自动", Partnumber = item.Partnumber, ChangeType = 1, ChangeQuantity = item., ActionTime = item.StartTime, Status = 1, Remark = "抛光合格品 合格数" } ); } foreach (var item in qcGp12ServiceStatistics) { wmOneTimeRecords.Add( new WmOneTimeRecord { Id = SnowFlakeSingle.Instance.NextId().ToString(), FkInventoryId = item.Id, Code = "自动", Partnumber = item.PartNumber, ChangeType = 2, ChangeQuantity = item.PolishNumber, ActionTime = item.StartTime, Status = 1, Remark = "触摸屏投入数" } ); } foreach (var item in wmPolishQualityStatistics) { wmOneTimeRecords.Add( new WmOneTimeRecord { Id = SnowFlakeSingle.Instance.NextId().ToString(), FkInventoryId = item.Id, Code = "自动", Partnumber = item.Partnumber, ChangeType = 2, ChangeQuantity = item.PaoguangTotal, ActionTime = item.StartTime, Status = 1, Remark = "后道投入数" } ); } #endregion //如果有这个时间段的数据,要删除 List delwmOneTimeRecords = Context .Queryable() .Where(it => it.Code == "自动") .Where(it => it.ActionTime >= parm.StartTime) .ToList(); Context.Deleteable(delwmOneTimeRecords).ExecuteCommand(); if (delwmOneTimeRecords.Any()) { Context.Insertable(wmOneTimeRecords).ExecuteCommand(); } return wmOneTimeRecords.Count; // 返回插入的记录数 } } }