using Admin.Core.IRepository; using Admin.Core.IService; using Admin.Core.IService.IService_New; using Admin.Core.Model; using Admin.Core.Model.Model_New; using Admin.Core.Model.ViewModels; using log4net; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Admin.Core.Service.Service_New { public class RecordBoxFoamFixtureComplateServices : BaseServices, IRecordBoxFoamFixtureComplateServices { private static readonly log4net.ILog logHelper = LogManager.GetLogger(typeof(RecordBoxFoamFixtureComplate)); private readonly IBaseRepository _dal; private readonly IOldBoxFoamTypeServices _boxFoamTypeServices; private readonly IBoxFoamPlanServices _boxFoamPlanServices; private readonly IBoxFoamDataServices _oldBoxFoamDataServices; private readonly ISysUserInfoServices _sysUserInfoServices; public RecordBoxFoamFixtureComplateServices(IBaseRepository dal, IOldBoxFoamTypeServices boxFoamTypeServices, IBoxFoamPlanServices boxFoamPlanServices, IBoxFoamDataServices oldBoxFoamDataServices, ISysUserInfoServices sysUserInfoServices) { this._dal = dal; base.BaseDal = dal; _boxFoamTypeServices = boxFoamTypeServices; _boxFoamPlanServices = boxFoamPlanServices; _oldBoxFoamDataServices = oldBoxFoamDataServices; _sysUserInfoServices = sysUserInfoServices; } /// /// 保存夹具生产数量 /// /// /// /// public bool SaveFixtureComplate(List fixture) { bool result = false; try { foreach(var item in fixture) { //获取当前工位,前一条数据 var lastFixtureList = _dal.Query(x => x.ProductionLine == "CX_01" && x.StationCode == "1002" && x.FixtureCode == item.FixtureCode); if(lastFixtureList != null) { if(lastFixtureList.Count > 0) { RecordBoxFoamFixtureComplate lastFixtureComplate = lastFixtureList.OrderByDescending(x => x.RecordTime).First(); if(lastFixtureComplate != null) { if(item.FixtureBoxType == lastFixtureComplate.FixtureBoxType) { if (item.FixtureOutPut > lastFixtureComplate.FixtureOutPut) { item.RealOutPut = item.FixtureOutPut - lastFixtureComplate.FixtureOutPut; //更新生产计划 UpdatePlanInfo(item); } } } } } var addResult = _dal.Add(item); //更新小时数据 UpdateHourInfo(item); } }catch (Exception ex) { logHelper.Error("保存夹具生产完成记录异常", ex); } return result; } /// /// 更新生产计划 /// /// private void UpdatePlanInfo(RecordBoxFoamFixtureComplate item) { try { //可以完工执行计划 var boxFoamTypeList = _boxFoamTypeServices.Query(x => x.Boxtype == item.FixtureBoxType); //MaterialCode物料型号 if (boxFoamTypeList != null) { if (boxFoamTypeList.Count > 0) { var boxFoamType = boxFoamTypeList.First(); if (boxFoamType != null) { var boxPlanList = _boxFoamPlanServices.Query(x => x.MaterialCode == boxFoamType.MaterialCode && x.PlanAmount > x.CompleteAmount); if (boxPlanList != null) { if (boxPlanList.Count > 0) { var boxPlan = boxPlanList.OrderBy(x => x.CreateTime).First(); if (boxPlan != null) { boxPlan.CompleteAmount = boxPlan.CompleteAmount + item.RealOutPut; bool planResult = _boxFoamPlanServices.UpdateAsync(boxPlan).Result; if (planResult) { Console.WriteLine($"生产计划更新成功:{boxPlan.CompleteAmount}"); } else { Console.WriteLine("生产计划更新失败"); } } } } } } } }catch (Exception ex) { logHelper.Error("更新计划信息异常", ex); } } /// /// 更新小时产量 /// /// private void UpdateHourInfo(RecordBoxFoamFixtureComplate item) { BoxFoamData hourData; var hourDataList = _oldBoxFoamDataServices.Query(x=>x.MainId == item.FixtureCode && x.Fixtureboxtype == item.FixtureBoxType); if(hourDataList != null) { if(hourDataList.Count > 0) { hourData = hourDataList.First(); if (hourData != null) { hourData = SetHourValue(hourData, item); _oldBoxFoamDataServices.UpdateAsync(hourData); return; } } } //添加小时计划 hourData = new BoxFoamData() { ProductLineCode = item.ProductionLine, StationCode = item.StationCode, Fixtureboxtype = item.FixtureBoxType, MainId = item.FixtureCode, }; hourData = SetHourValue(hourData, item); _oldBoxFoamDataServices.AddAsync(hourData); } private BoxFoamData SetHourValue(BoxFoamData hourData, RecordBoxFoamFixtureComplate item) { int hour = GetTeamHour(DateTime.Now).Seq; switch (hour) { case 1: hourData.AnHour = hourData.AnHour + item.RealOutPut; break; case 2: hourData.TwoHour = hourData.TwoHour + item.RealOutPut; ; break; case 3: hourData.ThreeHour = hourData.ThreeHour + item.RealOutPut;; break; case 4: hourData.FourHour = hourData.FourHour + item.RealOutPut;; break; case 5: hourData.FiveHour = hourData.FiveHour + item.RealOutPut;; break; case 6: hourData.SixHour = hourData.SixHour + item.RealOutPut;; break; case 7: hourData.SevenHour = hourData.SevenHour + item.RealOutPut;; break; case 8: hourData.EightHour = hourData.EightHour + item.RealOutPut;; break; case 9: hourData.NineHour = hourData.NineHour + item.RealOutPut;; break; case 10: hourData.TenHour = hourData.TenHour + item.RealOutPut;; break; case 11: hourData.ElevenHour = hourData.ElevenHour + item.RealOutPut;; break; case 12: hourData.TwelveHour = hourData.TwelveHour + item.RealOutPut;; break; default: break; } return hourData; } private CurrentTeamTimeView GetTeamHour(DateTime now) { var obj = _sysUserInfoServices.GetTeamData(now).Result; if (obj != null) { return obj; } return null; } } }