修改班别自定义

This commit is contained in:
12888491 2022-10-27 17:23:37 +08:00
parent a6e674bb13
commit a36c9517ef
13 changed files with 358 additions and 414 deletions

View File

@ -38,8 +38,11 @@ namespace WaterCloud.Service.AutoJob
var orderIds = ordernotes.Select(a => a.F_Id).ToList();
//获取当前天
DateTime currentdate = DateTime.Now.Date;
if (DateTime.Now.Hour < 8)
{
var classNums = await itemsApp.GetItemList("Mes_ClassNumber");
var classStartTime = TimeSpan.Parse(classNums.FirstOrDefault().F_Description.Split("-")[0]);
var currentTime = DateTime.Now.TimeOfDay;
if (TimeSpan.Compare(currentTime, classStartTime) < 0)
{
currentdate = currentdate.AddDays(-1);
}
//到期的订单先结案
@ -114,10 +117,6 @@ namespace WaterCloud.Service.AutoJob
//今天的计划加进计划库存中
var tempinplan = inPlans.Where(a => a.F_PlanTime >= currentdate && a.F_PlanTime < currentdate.AddDays(1) && a.F_InStorageState < 2).ToList();
var tempoutplan = outPlans.Where(a => a.F_PlanTime >= currentdate && a.F_PlanTime < currentdate.AddDays(1) && a.F_OutStorageState < 2).ToList();
//班别
var classNums = await itemsApp.GetItemList("Mes_ClassNumber");
var classStartTime = TimeSpan.Parse(classNums.FirstOrDefault().F_Description.Split("-")[0]);
var currentTime = DateTime.Now.TimeOfDay;
if (TimeSpan.Compare(currentTime, classStartTime) < 0)
{
tempinplan = inPlans.Where(a => a.F_PlanTime < currentdate.AddDays(2) && a.F_InStorageState <= 2).ToList();
@ -625,20 +624,34 @@ namespace WaterCloud.Service.AutoJob
private async Task<List<MaterialEntity>> GetCurrentClassNumStorage()
{
DateTime checkdate = DateTime.Now.Date;
DateTime starttime = DateTime.Now.Date.AddHours(8);
DateTime endtime = DateTime.Now.Date.AddHours(20);
string classNum = "A";
if (DateTime.Now.Hour < 8 || DateTime.Now.Hour >= 20)
{
if (DateTime.Now.Hour < 8)
DateTime starttime = DateTime.Now.Date;
DateTime endtime = DateTime.Now.Date;
string classNum = "";
var classNums = await itemsApp.GetItemList("Mes_ClassNumber");
var tempStartTime = TimeSpan.Parse(classNums[0].F_Description.Split("-")[0]).TotalMinutes;
var tempEndTime = tempStartTime;
for (int j = 0; j < classNums.Count(); j++)
{
var startTime = TimeSpan.Parse(classNums[j].F_Description.Split("-")[0]).TotalMinutes;
var endTime = TimeSpan.Parse(classNums[j].F_Description.Split("-")[1]).TotalMinutes;
if (endTime > startTime)
{
tempEndTime += endTime - startTime;
}
else
{
tempEndTime += endTime + 24 * 60 - startTime;
}
if (DateTime.Now> DateTime.Now.Date.AddMinutes(tempStartTime)&& DateTime.Now <= DateTime.Now.Date.AddMinutes(tempEndTime))
{
checkdate = DateTime.Now.Date.AddDays(-1);
}
classNum = "B";
starttime = checkdate.AddHours(20);
endtime = checkdate.AddHours(32);
}
var materials = _context.Query<MaterialEntity>(a => a.F_EnabledMark == true && a.F_DeleteMark == false).OrderByDesc(a => a.F_MaterialType).ToList();
classNum = classNums[j].F_ItemCode;
starttime = DateTime.Now.Date.AddMinutes(tempStartTime);
endtime = DateTime.Now.Date.AddMinutes(tempEndTime);
break;
}
tempStartTime += tempEndTime;
}
var materials = _context.Query<MaterialEntity>(a => a.F_EnabledMark == true && a.F_DeleteMark == false).OrderByDesc(a => a.F_MaterialType).ToList();
foreach (var item in materials)
{
var CurrentNum = _context.Query<StorageEntity>(a => a.F_MaterialId == item.F_Id && a.F_IsCheckout != false).Sum(a => a.F_Num) ?? 0;

View File

@ -9,6 +9,7 @@ using WaterCloud.Domain.MaterialManage;
using WaterCloud.Domain.QualityManage;
using WaterCloud.Domain.ReportRecord;
using WaterCloud.Service.ReportRecord;
using WaterCloud.Service.SystemManage;
namespace WaterCloud.Service.AutoJob
{
@ -16,27 +17,75 @@ namespace WaterCloud.Service.AutoJob
{
private IWebHostEnvironment _hostingEnvironment;
private IDbContext _context;
public CheckDateStorageJob(IDbContext context)
private ItemsDataService itemsApp;
public CheckDateStorageJob(IDbContext context)
{
_hostingEnvironment = GlobalContext.HostingEnvironment;
_context = context;
}
itemsApp = new ItemsDataService(context);
}
public async Task<AlwaysResult> Start()
{
AlwaysResult obj = new AlwaysResult();
try
{
DateTime checkdate = DateTime.Now.Date;
DateTime starttime = DateTime.Now.Date.AddHours(8);
DateTime endtime = DateTime.Now.Date.AddHours(20);
string classNum = "A";
if (DateTime.Now.Hour >= 8 && DateTime.Now.Hour < 20)
DateTime starttime = DateTime.Now.Date;
DateTime endtime = DateTime.Now.Date;
string classNum = "";
var classNums = await itemsApp.GetItemList("Mes_ClassNumber");
var classStartTime = TimeSpan.Parse(classNums.FirstOrDefault().F_Description.Split("-")[0]);
var tempStartTime = classStartTime.TotalMinutes;
var tempEndTime = tempStartTime;
var selectClass = 0;
for (int i = 0; i < classNums.Count(); i++)
{
var startTime = TimeSpan.Parse(classNums[i].F_Description.Split("-")[0]).TotalMinutes;
var endTime = TimeSpan.Parse(classNums[i].F_Description.Split("-")[1]).TotalMinutes;
if (endTime > startTime)
{
tempEndTime += endTime - startTime;
}
else
{
tempEndTime += endTime + 24 * 60 - startTime;
}
if (checkdate.AddMinutes(tempStartTime) < DateTime.Now && checkdate.AddMinutes(tempEndTime) >= DateTime.Now)
{
selectClass = i-1;
}
tempStartTime = tempEndTime;
}
if (selectClass < 0)
{
checkdate = DateTime.Now.Date.AddDays(-1);
classNum = "B";
starttime = checkdate.AddHours(20);
endtime = checkdate.AddHours(32);
}
selectClass = classNums.Count() - 1;
}
for (int i = 0; i < classNums.Count(); i++)
{
var startTime = TimeSpan.Parse(classNums[i].F_Description.Split("-")[0]).TotalMinutes;
var endTime = TimeSpan.Parse(classNums[i].F_Description.Split("-")[1]).TotalMinutes;
if (endTime > startTime)
{
tempEndTime += endTime - startTime;
}
else
{
tempEndTime += endTime + 24 * 60 - startTime;
}
if (i == selectClass)
{
starttime = checkdate.AddMinutes(tempStartTime);
endtime = checkdate.AddMinutes(tempEndTime);
if (starttime>DateTime.Now)
{
checkdate = DateTime.Now.Date.AddDays(-1);
starttime = starttime.AddDays(-1);
endtime = endtime.AddDays(-1);
}
break;
}
tempStartTime = tempEndTime;
}
List<CheckDateStorageEntity> list = new List<CheckDateStorageEntity>();
var materials = _context.Query<MaterialEntity>(a => a.F_EnabledMark == true && a.F_DeleteMark == false).ToList();
foreach (var item in materials)

View File

@ -1,286 +0,0 @@
using Chloe;
using Microsoft.AspNetCore.Hosting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WaterCloud.Code;
using WaterCloud.Domain.ClassTask;
using WaterCloud.Domain.EquipmentManage;
using WaterCloud.Domain.ProcessManage;
using WaterCloud.Domain.SystemManage;
namespace WaterCloud.Service.AutoJob
{
/// <summary>
/// 设备急停停机任务
/// </summary>
public class CheckEqpStopJob : IJobTask
{
private IWebHostEnvironment _hostingEnvironment;
private IDbContext _context;
public CheckEqpStopJob(IDbContext context)
{
_hostingEnvironment = GlobalContext.HostingEnvironment;
_context = context;
}
public async Task<AlwaysResult> Start()
{
AlwaysResult obj = new AlwaysResult();
string month = DateTime.Now.ToString("yyyyMM");
string shift = "白班";
string classnum = "A";
int hour = DateTime.Now.Hour;
int day = DateTime.Now.Day;
DateTime date = DateTime.Now;
string dateString = date.ToString("yyyyMMdd");
DateTime datebgn = DateTime.Now.Date.AddHours(8);
DateTime dateend = DateTime.Now.Date.AddHours(20);
if (hour >= 20 && hour < 24)
{
shift = "夜班";
classnum = "B";
datebgn = DateTime.Now.Date.AddHours(20);
dateend = DateTime.Now.Date.AddDays(1).AddHours(8);
}
else if (hour >= 0 && hour < 8)
{
day = day - 1;
shift = "夜班";
date = date.AddDays(-1);
dateString = date.ToString("yyyyMMdd");
classnum = "B";
datebgn = DateTime.Now.Date.AddDays(-1).AddHours(20);
dateend = DateTime.Now.Date.AddHours(8);
}
try
{
var stopConfig = _context.Query<ItemsEntity>(t => t.F_EnCode == "Mes_StopConfig")
.LeftJoin<ItemsDetailEntity>((a, b) => a.F_Id == b.F_ItemId && b.F_EnabledMark == true)
.Select((a, b) => b).ToList();
foreach (var item in stopConfig)
{
switch (item.F_ItemCode)
{
//质检异常
case "0":
await this.setEqpPqcCheckResult(day, dateString, shift);
//await this.setIsOpenWorkOrderResult(date, classnum, dateString, shift);
break;
//是否开立工单
case "1":
await this.setIsOpenWorkOrderResult(date, classnum, dateString, shift);
break;
//未及时上下料
case "2":
await this.setIsLoadingCompletedIntime(datebgn, dateend, dateString, shift);
break;
default:
break;
}
}
obj.state = ResultType.success.ToString();
obj.message = "设备急停停机任务成功!";
}
catch (Exception ex)
{
obj.state = ResultType.error.ToString();
obj.message = "设备急停停机任务失败!";
}
return obj;
}
private async Task setEqpStopRecord(List<stopResultEntity> list, string stopreason, string solution, string dateString, string shift)
{
if (list != null && list.Count > 0)
{
foreach (var item in list)
{
var eqpRecord = _context.Query<EqpStopRecordEntity>(t => t.F_EqpId == item.F_EqpId && t.F_StopType == 3).FirstOrDefault();
if (eqpRecord != null && eqpRecord.F_Day == dateString && eqpRecord.F_Shift == shift && eqpRecord.F_StopReason != stopreason && eqpRecord.F_IsRecovery == "N")
continue;
if (((eqpRecord != null && eqpRecord.F_Day == dateString && eqpRecord.F_Shift == shift && (eqpRecord.F_StopReason == stopreason || (eqpRecord.F_StopReason != stopreason && eqpRecord.F_IsRecovery == "Y"))) || (eqpRecord != null && (eqpRecord.F_Day != dateString || eqpRecord.F_Shift != shift))) || eqpRecord == null)
{
if (item.result == "Y")
{
if (eqpRecord != null)
{
if (eqpRecord.F_IsRecovery == "N")
{
eqpRecord.F_IsRecovery = "Y";
eqpRecord.F_RealStopEndTime = DateTime.Now;
eqpRecord.F_StopReason = stopreason;
eqpRecord.F_Solution = solution;
_context.Update<EqpStopRecordEntity>(eqpRecord);
}
}
}
else
{
if (eqpRecord != null)
{
if (eqpRecord.F_IsRecovery == "Y")
{
eqpRecord.F_IsRecovery = "N";
eqpRecord.F_StopReason = stopreason;
eqpRecord.F_RealStopStartTime = DateTime.Now;
eqpRecord.F_Solution = "";
_context.Update<EqpStopRecordEntity>(eqpRecord);
}
}
else
{
EqpStopRecordEntity entity = new EqpStopRecordEntity();
entity.F_Id = Utils.CreateNo();
entity.F_EqpId = item.F_EqpId;
entity.F_EqpName = item.F_EqpName;
entity.F_IsRecovery = "N";
entity.F_StopType = 3;
entity.F_StopReasonType = "4";
entity.F_StopReason = stopreason;
entity.F_RealStopStartTime = DateTime.Now;
entity.F_Day = dateString;
entity.F_Shift = shift;
_context.Insert<EqpStopRecordEntity>(entity);
}
}
}
}
}
}
/// <summary>
/// 日点检结果
/// </summary>
/// <param name="day"></param>
/// <param name="shift"></param>
/// <returns></returns>
private async Task setEqpPqcCheckResult(int day, string dateString, string shift)
{
var sql = @$"select t.f_id,t.F_EqpName,ISNULL(g.f_id, 'Y') result from (select * from mes_Equipment where F_EqpUse in (2,6,9))t left join
(select d.f_id, d.F_EqpName, count(1) as count from(select a.f_id, a.F_EqpName, b.F_Shift, c.f_day{day} from
(select * from mes_Equipment where F_EqpUse in (2, 6, 9))a left join mes_EqpPqcMaster b on
a.f_id = b.F_EqpId and b.F_Shift = '{shift}' left join mes_EqpPqcDetail c on b.F_Id = c.F_PId where c.f_day{day} = 2 or c.f_day{day} is null)d
GROUP BY d.f_id, d.F_EqpName)g on t.F_Id = g.f_id";
var data = _context.SqlQuery<stopResultEntity>(sql);
await this.setEqpStopRecord(data, "未正常完成日点检", "完成日点检", dateString, shift);
}
/// <summary>
/// 是否开立工单
/// </summary>
/// <param name="date"></param>
/// <param name="classnum"></param>
/// <returns></returns>
private async Task setIsOpenWorkOrderResult(DateTime date, string classnum, string dateString, string shift)
{
if (DateTime.Now.Hour == 8 || DateTime.Now.Hour == 20) return;
var eqp = _context.Query<EquipmentEntity>(t => t.F_EqpType == 0 && t.F_ParentId == "0");
var workplan = _context.Query<WorkPlanEntity>(t => Sql.DiffDays(t.F_Date, date) == 0 && classnum == t.F_ClassNum);
var query = eqp.LeftJoin<WorkPlanEntity>(workplan, (a, b) => a.F_Id == b.F_EqpId).Select((a, b) => new stopResultEntity
{
F_WorkPlanId = b.F_Id,
F_EqpName = a.F_EqpName,
F_EqpId = a.F_Id,
F_WorkPlanType = b.F_WorkPlanType,
result = "N"
}).ToList();
foreach (var item in query)
{
if(string.IsNullOrEmpty(item.F_WorkPlanId))
{
item.result = "Y";
}
else if (item.F_WorkPlanType == 1)
{
item.result = "Y";
}
else if (item.F_WorkPlanType == 0)
{
var work = _context.Query<WorkOrderEntity>(t => t.F_WorkPlanId == item.F_WorkPlanId).Select(t => t.F_Id).FirstOrDefault();
if (work != null)
{
item.result = "Y";
}
}
}
await this.setEqpStopRecord(query, "未开立工单", "正常开立工单", dateString, shift);
}
/// <summary>
/// 领料产出任务是否完成
/// </summary>
/// <param name="datebgn"></param>
/// <param name="dateend"></param>
/// <param name="dateString"></param>
/// <param name="shift"></param>
/// <returns></returns>
public async Task setIsLoadingCompletedIntime(DateTime datebgn, DateTime dateend, string dateString, string shift)
{
var eqp = _context.Query<EquipmentEntity>(t => t.F_EqpType == 0 && t.F_ParentId == "0")
.Select(t => new stopResultEntity
{
F_EqpName = t.F_EqpName,
F_EqpId = t.F_Id,
result = "N"
}).ToList();
foreach (var item in eqp)
{
var job = _context.Query<ControlJobEntity>(t => Sql.DiffSeconds(datebgn, t.F_CreatorTime) > 0 && Sql.DiffSeconds(t.F_CreatorTime, dateend) > 0)
.Where(t => t.F_JobType == 3 || t.F_JobType == 0)
.Where(t => Sql.DiffSeconds(t.F_NeedTime, DateTime.Now) > 0 && t.F_JobState < 2)
.Where(t => t.F_NeedEqpId == item.F_EqpId).Select(t => t.F_Id).FirstOrDefault();
if (job == null)
{
item.result = "Y";
}
}
await this.setEqpStopRecord(eqp, "领料产出任务未及时完成", "领料产出任务完成", dateString, shift);
}
}
public class stopResultEntity
{
public string result { get; set; }
public string F_EqpId { get; set; }
public string F_EqpName { get; set; }
public string F_WorkPlanId { get; set; }
public int? F_WorkPlanType { get; set; }
}
}

View File

@ -7,6 +7,7 @@ using Chloe;
using WaterCloud.Domain.EquipmentManage;
using WaterCloud.Domain.ProcessManage;
using WaterCloud.Domain.MaterialManage;
using WaterCloud.Service.SystemManage;
namespace WaterCloud.Service.EquipmentManage
{
@ -18,9 +19,11 @@ namespace WaterCloud.Service.EquipmentManage
public class EquipmentService : DataFilterService<EquipmentEntity>, IDenpendency
{
private string cacheKey = "watercloud_equipmentdata_";
public EquipmentService(IDbContext context) : base(context)
private ItemsDataService itemsApp;
public EquipmentService(IDbContext context) : base(context)
{
}
itemsApp = new ItemsDataService(context);
}
#region
public async Task<List<EquipmentEntity>> GetList(string keyword = "")
{
@ -96,9 +99,21 @@ namespace WaterCloud.Service.EquipmentManage
uniwork.BeginTrans();
await repository.Update(entity);
var list = uniwork.IQueryable<EqpMaterialBandingEntity>(a => a.F_EqpId == keyValue).ToList();
foreach (var item in list)
var classNums = await itemsApp.GetItemList("Mes_ClassNumber");
var classStartTime = TimeSpan.Parse(classNums.FirstOrDefault().F_Description.Split("-")[0]).TotalMinutes;
var classEndTime = TimeSpan.Parse(classNums.FirstOrDefault().F_Description.Split("-")[1]).TotalMinutes;
var totalMin = 720;
if (classEndTime> classStartTime)
{
double v1= (720 - (entity.F_PlanStopTime ?? 0)) *60 * (entity.F_OEE ?? 0);
totalMin = (int)(classEndTime - classStartTime);
}
else
{
totalMin = (int)(classEndTime + 24 * 60- classStartTime);
}
foreach (var item in list)
{
double v1= (totalMin - (entity.F_PlanStopTime ?? 0)) *60 * (entity.F_OEE ?? 0);
double v2 = (double)entity.F_Beat * 100;
item.F_Num = (float)Utils.Round(v1 / v2, 0);
if (list.Where(a=>a.F_ProduceType==1).Count()>0 && item.F_ProduceType==1)
@ -142,7 +157,19 @@ namespace WaterCloud.Service.EquipmentManage
public async Task SubmitMaterialForm(List<EqpMaterialBandingEntity> listData, string eqpId)
{
var eqp = await uniwork.FindEntity<EquipmentEntity>(eqpId);
foreach (var item in listData)
var classNums = await itemsApp.GetItemList("Mes_ClassNumber");
var classStartTime = TimeSpan.Parse(classNums.FirstOrDefault().F_Description.Split("-")[0]).TotalMinutes;
var classEndTime = TimeSpan.Parse(classNums.FirstOrDefault().F_Description.Split("-")[1]).TotalMinutes;
var totalMin = 720;
if (classEndTime > classStartTime)
{
totalMin = (int)(classEndTime - classStartTime);
}
else
{
totalMin = (int)(classEndTime + 24 * 60 - classStartTime);
}
foreach (var item in listData)
{
item.F_Id = Utils.GuId();
if (item.F_Priority <= 0)
@ -155,9 +182,9 @@ namespace WaterCloud.Service.EquipmentManage
item.F_MaterialName = material.F_MaterialName;
item.F_MaterialType = material.F_MaterialType;
item.F_MaterialUnit = material.F_MaterialUnit;
if (eqp.F_Beat != null && eqp.F_Beat != 0)
if (eqp.F_Beat != null && eqp.F_Beat != 0)
{
double v1 = (720 - (eqp.F_PlanStopTime ?? 0)) * 60 * (eqp.F_OEE ?? 0);
double v1 = (totalMin - (eqp.F_PlanStopTime ?? 0)) * 60 * (eqp.F_OEE ?? 0);
double v2 = (double)eqp.F_Beat * 100;
item.F_Num = (float)Utils.Round(v1 / v2, 0);
if (listData.Where(a => a.F_ProduceType == 1).Count() > 0 && item.F_ProduceType == 1)

View File

@ -13,6 +13,7 @@ using WaterCloud.Domain.QualityManage;
using System.Linq;
using System.IO;
using WaterCloud.Domain.PlanManage;
using WaterCloud.Service.SystemManage;
namespace WaterCloud.Service.MaterialManage
{
@ -25,11 +26,13 @@ namespace WaterCloud.Service.MaterialManage
{
private ControlJobService jobApp;
private LocationService locationApp;
public StorageService(IDbContext context, IHttpClientFactory httpClientFactory) : base(context)
private ItemsDataService itemsApp;
public StorageService(IDbContext context, IHttpClientFactory httpClientFactory) : base(context)
{
jobApp = new ControlJobService(context, httpClientFactory);
locationApp = new LocationService(context);
}
itemsApp = new ItemsDataService(context);
}
#region
public async Task<List<StorageEntity>> GetList(string keyword = "")
{
@ -262,20 +265,40 @@ namespace WaterCloud.Service.MaterialManage
public async Task<List<MaterialEntity>> GetCurrentClassNumStorage()
{
DateTime checkdate = DateTime.Now.Date;
DateTime starttime = DateTime.Now.Date.AddHours(8);
DateTime endtime = DateTime.Now.Date.AddHours(20);
string classNum = "A";
if (DateTime.Now.Hour < 8 || DateTime.Now.Hour >= 20)
{
if (DateTime.Now.Hour < 8)
{
checkdate = DateTime.Now.Date.AddDays(-1);
}
classNum = "B";
starttime = checkdate.AddHours(20);
endtime = checkdate.AddHours(32);
}
var materials = uniwork.GetDbContext().Query<MaterialEntity>(a => a.F_EnabledMark == true && a.F_DeleteMark == false).OrderByDesc(a => a.F_MaterialType).ToList();
DateTime starttime = DateTime.Now.Date;
DateTime endtime = DateTime.Now.Date;
string classNum = "";
var classNums = await itemsApp.GetItemList("Mes_ClassNumber");
var classStartTime = TimeSpan.Parse(classNums.FirstOrDefault().F_Description.Split("-")[0]);
var tempStartTime = classStartTime.TotalMinutes;
var tempEndTime = tempStartTime;
var currentTime = DateTime.Now.TimeOfDay;
if (TimeSpan.Compare(currentTime, classStartTime) < 0)
{
checkdate = DateTime.Now.Date.AddDays(-1);
}
for (int j = 0; j < classNums.Count(); j++)
{
var startTime = TimeSpan.Parse(classNums[j].F_Description.Split("-")[0]).TotalMinutes;
var endTime = TimeSpan.Parse(classNums[j].F_Description.Split("-")[1]).TotalMinutes;
if (endTime > startTime)
{
tempEndTime += endTime - startTime;
}
else
{
tempEndTime += endTime + 24 * 60 - startTime;
}
if (DateTime.Now > checkdate.AddMinutes(tempStartTime) && DateTime.Now <= checkdate.AddMinutes(tempEndTime))
{
classNum = classNums[j].F_ItemCode;
starttime = checkdate.AddMinutes(tempStartTime);
endtime = checkdate.AddMinutes(tempEndTime);
break;
}
tempStartTime = tempEndTime;
}
var materials = uniwork.GetDbContext().Query<MaterialEntity>(a => a.F_EnabledMark == true && a.F_DeleteMark == false).OrderByDesc(a => a.F_MaterialType).ToList();
foreach (var item in materials)
{
var CurrentNum = uniwork.IQueryable<StorageEntity>(a => a.F_MaterialId == item.F_Id && a.F_IsCheckout != false).Sum(a => a.F_Num) ?? 0;

View File

@ -13,6 +13,8 @@ using WaterCloud.Service.ClassTask;
using System.Net.Http;
using WaterCloud.Domain.QualityManage;
using WaterCloud.Domain.SystemOrganize;
using WaterCloud.Service.SystemManage;
using static Serenity.Web.PropertyItemsScript;
namespace WaterCloud.Service.MaterialManage
{
@ -31,14 +33,16 @@ namespace WaterCloud.Service.MaterialManage
private LocationService locationApp;
private StorageService _storageApp;
private ControlJobService _jobApp;
private ItemsDataService itemsApp;
public WorkRunService(IDbContext context, IHttpClientFactory httpClientFactory)
public WorkRunService(IDbContext context, IHttpClientFactory httpClientFactory)
{
currentuser = OperatorProvider.Provider.GetCurrent();
uniwork = new RepositoryBase(context);
transferApp = new TransferBoxService(context);
locationApp = new LocationService(context);
_storageApp = new StorageService(context, httpClientFactory);
itemsApp = new ItemsDataService(context);
_storageApp = new StorageService(context, httpClientFactory);
_jobApp = new ControlJobService(context, httpClientFactory);
if (currentuser == null)
{
@ -82,8 +86,40 @@ namespace WaterCloud.Service.MaterialManage
var data = uniwork.IQueryable<EqpMaterialUseEntity>(a => a.F_DoneNum != a.F_Num && a.F_EqpName == eqpName && a.F_TransferBoxCode==code).FirstOrDefault();
return data;
}
public async Task<string> GetBatch()
{
var classNums = await itemsApp.GetItemList("Mes_ClassNumber");
var classStartTime = TimeSpan.Parse(classNums.FirstOrDefault().F_Description.Split("-")[0]);
var tempStartTime = classStartTime.TotalMinutes;
var tempEndTime = tempStartTime;
var currentTime = DateTime.Now.TimeOfDay;
var currentdate = DateTime.Now.Date;
if (TimeSpan.Compare(currentTime, classStartTime) < 0)
{
currentdate = currentdate.AddDays(-1);
}
for (int i = 0; i < classNums.Count(); i++)
{
var startTime = TimeSpan.Parse(classNums[i].F_Description.Split("-")[0]).TotalMinutes;
var endTime = TimeSpan.Parse(classNums[i].F_Description.Split("-")[1]).TotalMinutes;
if (endTime > startTime)
{
tempEndTime += endTime - startTime;
}
else
{
tempEndTime += endTime + 24 * 60 - startTime;
}
if (currentdate.AddMinutes(tempStartTime) <DateTime.Now && currentdate.AddMinutes(tempEndTime) >= DateTime.Now)
{
return $"{currentdate.ToString("yyyyMMdd")}-{classNums[i].F_ItemCode}";
}
tempStartTime = tempEndTime;
public async Task<object> GetBoardDataJson()
}
return "";
}
public async Task<object> GetBoardDataJson()
{
SortedDictionary<int, float> planDic = new SortedDictionary<int, float>();
SortedDictionary<int, float> realDic = new SortedDictionary<int, float>();

View File

@ -258,9 +258,13 @@ namespace WaterCloud.Service.PlanManage
var orderIds = ordernotes.Select(a => a.F_Id).ToList();
//获取当前天
DateTime currentdate = DateTime.Now.Date;
if (DateTime.Now.Hour<8)
{
currentdate = currentdate.AddDays(-1);
//班别
var classNums = await itemsApp.GetItemList("Mes_ClassNumber");
var classStartTime = TimeSpan.Parse(classNums.FirstOrDefault().F_Description.Split("-")[0]);
var currentTime = DateTime.Now.TimeOfDay;
if (TimeSpan.Compare(currentTime, classStartTime) < 0)
{
currentdate = currentdate.AddDays(-1);
}
//到期的订单先结案
var overnote = ordernotes.Where(a => a.F_PlanEndTime == DateTime.Now.Date.AddDays(-1)).FirstOrDefault();
@ -334,10 +338,6 @@ namespace WaterCloud.Service.PlanManage
//今天的计划加进计划库存中
var tempinplan = inPlans.Where(a => a.F_PlanTime < currentdate.AddDays(1) && a.F_InStorageState <= 2).ToList();
var tempoutplan = outPlans.Where(a => a.F_PlanTime < currentdate.AddDays(1) && a.F_OutStorageState <= 2).ToList();
//班别
var classNums = await itemsApp.GetItemList("Mes_ClassNumber");
var classStartTime = TimeSpan.Parse(classNums.FirstOrDefault().F_Description.Split("-")[0]);
var currentTime = DateTime.Now.TimeOfDay;
if (TimeSpan.Compare(currentTime, classStartTime) < 0)
{
tempinplan = inPlans.Where(a => a.F_PlanTime < currentdate.AddDays(2) && a.F_InStorageState <= 2).ToList();

View File

@ -135,12 +135,29 @@ namespace WaterCloud.Service.ProcessManage
var data = GetFieldsFilterData(query.FirstOrDefault());
data.details =await orderApp.GetListByOrder(keyValue);
data.planDate = ((DateTime)data.F_PlanStartTime).Date;
data.classNum = "B";
if (((DateTime)data.F_PlanStartTime).Hour==8)
{
data.classNum = "A";
}
return data;
var classNums = await itemsApp.GetItemList("Mes_ClassNumber");
var tempStartTime = TimeSpan.Parse(classNums[0].F_Description.Split("-")[0]).TotalMinutes;
var tempEndTime = tempStartTime;
for (int i = 0; i < classNums.Count(); i++)
{
var startTime = TimeSpan.Parse(classNums[i].F_Description.Split("-")[0]).TotalMinutes;
var endTime = TimeSpan.Parse(classNums[i].F_Description.Split("-")[1]).TotalMinutes;
if (endTime > startTime)
{
tempEndTime += endTime - startTime;
}
else
{
tempEndTime += endTime + 24 * 60 - startTime;
}
if (((DateTime)data.planDate).AddMinutes(tempStartTime)== data.F_PlanStartTime && ((DateTime)data.planDate).AddMinutes(tempEndTime) == data.F_PlanEndTime)
{
data.classNum = classNums[i].F_ItemCode;
break;
}
tempStartTime = tempEndTime;
}
return data;
}
private IQuery<WorkOrderExtend> GetQuery()
{
@ -273,17 +290,29 @@ namespace WaterCloud.Service.ProcessManage
public async Task SubmitForm(WorkOrderExtend entity, string keyValue)
{
List<WorkOrderDetailEntity> list = new List<WorkOrderDetailEntity>();
if (entity.classNum=="A")
{
entity.F_PlanStartTime = ((DateTime)entity.planDate).AddHours(8);
entity.F_PlanEndTime = ((DateTime)entity.planDate).AddHours(20);
}
else
{
entity.F_PlanStartTime = ((DateTime)entity.planDate).AddHours(20);
entity.F_PlanEndTime = ((DateTime)entity.planDate).AddHours(32);
}
uniwork.BeginTrans();
var classNums = await itemsApp.GetItemList("Mes_ClassNumber");
var tempStartTime = TimeSpan.Parse(classNums[0].F_Description.Split("-")[0]).TotalMinutes;
var tempEndTime = tempStartTime;
for (int i = 0; i < classNums.Count(); i++)
{
var startTime = TimeSpan.Parse(classNums[i].F_Description.Split("-")[0]).TotalMinutes;
var endTime = TimeSpan.Parse(classNums[i].F_Description.Split("-")[1]).TotalMinutes;
if (endTime > startTime)
{
tempEndTime += endTime - startTime;
}
else
{
tempEndTime += endTime + 24 * 60 - startTime;
}
if (classNums[i].F_ItemCode == entity.classNum)
{
entity.F_PlanStartTime = ((DateTime)entity.planDate).AddMinutes(tempStartTime);
entity.F_PlanEndTime = ((DateTime)entity.planDate).AddMinutes(tempEndTime);
}
tempStartTime = tempEndTime;
}
uniwork.BeginTrans();
if (string.IsNullOrEmpty(keyValue))
{
entity.F_DeleteMark = false;

View File

@ -360,17 +360,30 @@ namespace WaterCloud.Service.ProcessManage
entity.F_MaterialId = item.F_MaterialId;
entity.F_WorkOrderCode = "WC_" + DateTime.Now.ToString("yyyyMMddHHmmss") + i;
entity.F_SplitType = 0;
if (classnum == "A")
{
entity.F_PlanStartTime = now.AddHours(8);
entity.F_PlanEndTime = now.AddHours(20);
}
else
{
entity.F_PlanStartTime = now.AddHours(20);
entity.F_PlanEndTime = now.AddHours(32);
}
entity.F_WorkPlanId = item.F_Id;
var classNums = await itemsApp.GetItemList("Mes_ClassNumber");
var tempStartTime = TimeSpan.Parse(classNums[0].F_Description.Split("-")[0]).TotalMinutes;
var tempEndTime = tempStartTime;
for (int j = 0; j < classNums.Count(); j++)
{
var startTime = TimeSpan.Parse(classNums[j].F_Description.Split("-")[0]).TotalMinutes;
var endTime = TimeSpan.Parse(classNums[j].F_Description.Split("-")[1]).TotalMinutes;
if (endTime > startTime)
{
tempEndTime += endTime - startTime;
}
else
{
tempEndTime += endTime + 24 * 60 - startTime;
}
if (classNums[j].F_ItemCode == classnum)
{
entity.F_PlanStartTime = now.AddMinutes(tempStartTime);
entity.F_PlanEndTime = now.AddMinutes(tempEndTime);
break;
}
tempStartTime = tempEndTime;
}
entity.F_WorkPlanId = item.F_Id;
entitys.Add(entity);
var detail = new WorkOrderDetailEntity();
detail.Create();
@ -442,17 +455,31 @@ namespace WaterCloud.Service.ProcessManage
entity.F_MaterialId = item.F_MaterialId;
entity.F_WorkOrderCode = "WC_"+DateTime.Now.ToString("yyyyMMddHHmmss")+i;
entity.F_SplitType = 0;
if (classnum == "A")
{
entity.F_PlanStartTime = now.AddHours(8);
entity.F_PlanEndTime = now.AddHours(20);
}
else
{
entity.F_PlanStartTime = now.AddHours(20);
entity.F_PlanEndTime = now.AddHours(32);
}
entity.F_WorkPlanId = item.F_Id;
var classNums = await itemsApp.GetItemList("Mes_ClassNumber");
var tempStartTime = TimeSpan.Parse(classNums[0].F_Description.Split("-")[0]).TotalMinutes;
var tempEndTime = tempStartTime;
for (int j = 0; j < classNums.Count(); j++)
{
var startTime = TimeSpan.Parse(classNums[j].F_Description.Split("-")[0]).TotalMinutes;
var endTime = TimeSpan.Parse(classNums[j].F_Description.Split("-")[1]).TotalMinutes;
if (endTime > startTime)
{
tempEndTime += endTime - startTime;
}
else
{
tempEndTime += endTime + 24 * 60 - startTime;
}
if (classNums[j].F_ItemCode == classnum)
{
entity.F_PlanStartTime = now.AddMinutes(tempStartTime);
entity.F_PlanEndTime = now.AddMinutes(tempEndTime);
break;
}
tempStartTime = tempEndTime;
}
entity.F_WorkPlanId = item.F_Id;
entitys.Add(entity);
var detail = new WorkOrderDetailEntity();
detail.Create();
@ -554,16 +581,30 @@ namespace WaterCloud.Service.ProcessManage
order.F_MaterialId = item.F_MaterialId;
order.F_WorkOrderCode = "WC_" + DateTime.Now.ToString("yyyyMMddHHmmss") + i;
order.F_SplitType = 0;
if (classnum == "A")
{
order.F_PlanStartTime = now.AddHours(8);
order.F_PlanEndTime = now.AddHours(20);
}
else
{
order.F_PlanStartTime = now.AddHours(20);
order.F_PlanEndTime = now.AddHours(32);
}
var classNums = await itemsApp.GetItemList("Mes_ClassNumber");
var tempStartTime = TimeSpan.Parse(classNums[0].F_Description.Split("-")[0]).TotalMinutes;
var tempEndTime = tempStartTime;
for (int j = 0; j < classNums.Count(); j++)
{
var startTime = TimeSpan.Parse(classNums[j].F_Description.Split("-")[0]).TotalMinutes;
var endTime = TimeSpan.Parse(classNums[j].F_Description.Split("-")[1]).TotalMinutes;
if (endTime > startTime)
{
tempEndTime += endTime - startTime;
}
else
{
tempEndTime += endTime + 24 * 60 - startTime;
}
if (classNums[j].F_ItemCode == classnum)
{
order.F_PlanStartTime = now.AddMinutes(tempStartTime);
order.F_PlanEndTime = now.AddMinutes(tempEndTime);
break;
}
tempStartTime = tempEndTime;
}
order.F_WorkPlanId = item.F_Id;
entitys.Add(order);
var detail = new WorkOrderDetailEntity();

View File

@ -21,6 +21,10 @@
, format: 'yyyy/MM/dd',
});
$(function () {
$("#classNum").bindSelect({
data: top.clients.dataItems['Mes_ClassNumber'],
id: "",
});
if (!!keyValue) {
common.ajax({
url: '/ProcessManage/WorkOrder/GetFormJson',
@ -143,8 +147,6 @@
<label class="layui-form-label">班别</label>
<div class="layui-input-block">
<select id="classNum" lay-verify="required" name="classNum">
<option value="A" selected>白班</option>
<option value="B">夜班</option>
</select>
</div>
</div>

View File

@ -23,6 +23,10 @@
, format: 'yyyy/MM/dd',
});
$(function () {
$("#classNum").bindSelect({
data: top.clients.dataItems['Mes_ClassNumber'],
id: "",
});
if (!!keyValue) {
common.ajax({
url: '/ProcessManage/WorkOrder/GetFormJson',
@ -337,8 +341,6 @@
<label class="layui-form-label required">班别</label>
<div class="layui-input-block">
<select id="classNum" lay-verify="required" name="classNum">
<option value="A" selected>白班</option>
<option value="B">夜班</option>
</select>
</div>
</div>

View File

@ -101,8 +101,15 @@ namespace WaterCloud.Web.Areas.ProcessManage.Controllers
var data = await _boxService.GetReadyBoxes(keyValue);
return Content(data.ToJson());
}
[HttpPost]
[HttpGet]
[HandlerAjaxOnly]
public async Task<ActionResult> GetBatch()
{
//获取预绑定流转箱
var data = await _runService.GetBatch();
return Content(data);
}
[HttpPost]
[HandlerAjaxOnly]
public async Task<ActionResult> AddReadyBox(ReadyTransferBoxEntity entity)
{

View File

@ -67,18 +67,19 @@
materialBatch = parentData[i].F_BatchPrefix + "-" + new Date().SmallFormat("yyMMDDhhmmss");
}
else {
if (new Date().getHours() > 20) {
materialBatch = parentData[i].F_BatchPrefix + "-" + new Date().SmallFormat("yyMMDD") + "B";
}
else if (new Date().getHours() < 8) {
materialBatch = parentData[i].F_BatchPrefix + "-" + new Date().setDate(new Date().getDate() - 1).SmallFormat("yyMMDD") + "B";
}
else {
materialBatch = parentData[i].F_BatchPrefix + "-" + new Date().SmallFormat("yyMMDD") + "A";
}
common.ajax({
url: '/RunMonitor/EqpScanScreen/GetBatch',
dataType: 'json',
async: false,
success: function (data) {
if (!!data && data.length > 0) {
materialBatch = data;
$('#F_MaterialBatch').val(materialBatch);
}
}
});
}
$('#F_Num').val(parentData[i].F_ContainerNum);
$('#F_MaterialBatch').val(materialBatch);
}
}
}