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; // 返回插入的记录数
+ }
+
+
+ }
+
+ }
}