public dynamic Get(RequestWrapper query) { query.LoadSettingXmlString(@" <settings defaultOrderBy='ID'> <select>*</select> <from>minimes_resttime</from> <where defaultForAll='true' defaultCp='equal' defaultIgnoreEmpty='true' > <field name='WorkShopId' cp='equal'></field> </where> </settings>"); var service = new minimes_resttimeService(); var pQuery = query.ToParamQuery(); var result = service.GetDynamicListWithPaging(pQuery); return(result); }
public dynamic Edit(dynamic data) { var listWrapper = RequestWrapper.Instance().LoadSettingXmlString(@" <settings> <table> minimes_resttime </table> <where> <field name='ID' cp='equal'></field> </where> </settings>"); try { if (data.list.inserted.Count > 0) { foreach (var item in data.list.inserted) { item.TenantId = SysHelper.GetTenantId(); } } if (data.list.updated.Count > 0) { foreach (var item in data.list.updated) { } } var service = new minimes_resttimeService(); var result = service.Edit(null, listWrapper, data); if (result > 0) { return new { status = true, message = "保存成功" } } ; else { return new { status = false, message = "保存失败" } }; } catch (Exception ex) { return(new { status = false, message = ex.Message }); } }
/// <summary> /// 获取当前车间各机台生产状态 /// </summary> /// <param name="WorkShopId"></param> /// <param name="TenantID"></param> /// <returns></returns> public dynamic GetLineStatus(string WorkShopId, string TenantID) { List <minimes_order_record> result = new List <minimes_order_record>(); try { List <dynamic> linelist = ApiDataSource.GetLineList(TenantID, WorkShopId, null, null, null).ToObject <List <dynamic> >(); result = new List <minimes_order_record>(); minimes_order_recordService reportService = new minimes_order_recordService(); List <minimes_order_record> reportList = reportService.GetModelList(ParamQuery.Instance().AndWhere("State", 1).AndWhere("TenantID", TenantID)); foreach (var item1 in linelist) { //屏蔽 if (item1.LineId != "2d6a9f23-c1dc-4a6d-baa7-473011e4954c" && item1.LineId != "d3bb37bd-0aff-4c6a-96a0-d544c136a018") { minimes_order_record row = new minimes_order_record(); row.LineId = item1.LineId + ""; //产线ID row.LineName = item1.LineName + ""; //产线名称 row.Color = "grey"; //状态颜色 row.StateName = "未切单"; //状态名称 result.Add(row); foreach (var item in reportList) { if (row.LineId == item.LineId) { row.Qty = item.Qty; row.PlanQty = item.PlanQty; row.ReserveQty = item.ReserveQty; minimes_resttimeService resttimeService = new minimes_resttimeService(); List <minimes_resttime> resttimeList = resttimeService.GetModelList(ParamQuery.Instance().AndWhere("WorkShopId", WorkShopId).AndWhere("TenantId", TenantID)); string IsRest = "0";//默认值 if (resttimeList.Count != 0) { foreach (var item_rest in resttimeList) { string Time = item_rest.RestTime; string[] TimeArr = Time.Split('-'); DateTime StartTime = Convert.ToDateTime(TimeArr[0]); DateTime EndTime = Convert.ToDateTime(TimeArr[1]); DateTime nowTime = Convert.ToDateTime(DateTime.Now.ToShortTimeString()); if ((nowTime >= StartTime && nowTime <= EndTime)) { IsRest = "1";//在休息时间区间 } } } if (row.PlanQty + row.ReserveQty <= row.Qty)//已完成 注;实际产量大于等于计划产量加备存数据 工单才完工 { row.StateName = "已完成"; row.Color = "green"; } else if (item.MachineState == 1) { row.StateName = "生产中"; row.Color = "blue"; } else if (item.MachineState == 0 && IsRest == "1") { row.StateName = "休息中"; row.Color = "orange"; } else { row.StateName = "停机中"; row.Color = "red"; } } } } } } catch (Exception ex) { throw ex; } return(result); }
/// <summary> /// 获取实时数据 /// </summary> /// <param name="LineId">线体ID</param> /// <param name="TenantID">企业ID</param> /// <returns></returns> public ActionResult GetLineOrderData(string LineId, string TenantID) { ResponseObject result = new ResponseObject(); minimes_order_recordService reportService = new minimes_order_recordService(); List <minimes_order_record> reportList = reportService.GetModelList( ParamQuery.Instance() .AndWhere("LineId", LineId) //.AndWhere("PlanDate", DateTime.Now.Date) .AndWhere("State", 1) .AndWhere("TenantID", TenantID) ); if (reportList.Count > 0) { minimes_order_record row = reportList[0]; string WorkSheetNo = row.OrderNo; List <dynamic> worksheetlist = ApiDataSource.GetWorkSheetDetail(TenantID, WorkSheetNo).ToObject <List <dynamic> >(); string WorkShopId = ""; minimes_resttimeService resttimeService = new minimes_resttimeService(); dynamic LineList = ApiDataSource.GetLineList(TenantID, null, null, LineId, null); foreach (var item_line in LineList) { WorkShopId = item_line.WorkShopId; } List <minimes_resttime> resttimeList = resttimeService.GetModelList(ParamQuery.Instance().AndWhere("WorkShopId", WorkShopId).AndWhere("TenantId", TenantID)); string IsRest = "0";//默认值 if (resttimeList.Count != 0) { foreach (var item_rest in resttimeList) { string Time = item_rest.RestTime; string[] TimeArr = Time.Split('-'); DateTime StartTime = Convert.ToDateTime(TimeArr[0]); DateTime EndTime = Convert.ToDateTime(TimeArr[1]); DateTime nowTime = Convert.ToDateTime(DateTime.Now.ToShortTimeString()); if ((nowTime >= StartTime && nowTime <= EndTime)) { IsRest = "1";//在休息时间区间 } } } if (row.PlanQty + row.ReserveQty <= row.Qty)//已完成 注;实际产量大于等于计划产量加备存数据 工单才完工 { row.StateName = "已完成"; row.Color = "green"; } else if (row.MachineState == 0 && IsRest == "1")//设备停机且当前时间在休息时间内 { row.StateName = "休息中"; row.Color = "orange"; } else if (row.MachineState == 0) { row.StateName = "停机中"; row.Color = "red"; } else { row.StateName = "生产中"; row.Color = "blue"; } //生产时间 row.ProductTime = GetProductTime(row.OrderNo, TenantID) - GetLostTime(row.OrderNo, TenantID);//分钟 double Utilization = 0; if (row.ProductTime != 0) { //稼动率 Utilization = Math.Round((double)(row.ProductTime - row.StopTime) * 100 / (row.ProductTime), 2); } row.Utilization = Utilization + "%"; #region 计划达成率&备存计划达成率 int ReserveQty = 0; if (row.Qty <= row.PlanQty) { if (row.PlanQty == 0) { row.RatioQty = "0%"; } else { row.RatioQty = Math.Round((double)row.Qty * 100 / row.PlanQty, 2) + "%";//计划达成率 } row.ReserveRate = "0%"; } else { row.RatioQty = "100%"; if (row.PlanQty == 0) { row.ReserveRate = "0%"; } else { if (row.Qty > row.PlanQty)//当实际产量>计划产量时,才有备存数量 { ReserveQty = row.Qty - row.PlanQty; } row.ReserveRate = Math.Round((double)ReserveQty * 100 / row.PlanQty, 2) + "%";//备存计划达成率 } } #endregion #region 模穴率=实际模穴/标准模穴 if (row.StandardMould == 0) { row.MouldRate = "0%"; } else { row.MouldRate = Math.Round((double)(row.ActualMould * 100 / row.StandardMould), 2) + "%"; } #endregion row.DifferQty = row.PlanQty - row.Qty; row.CreateDateStr = row.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"); if (row.ProductTime == 0) { row.CurUPH = 0; row.CT = "0"; } else { row.CurUPH = (row.Qty / row.ProductTime) * 60; //实际UPH row.CT = Math.Round((double)3600 / row.CurUPH, 2).ToString(); //实际CT } if (row.UPH > 0) { row.PlanRatio = Math.Round((double)row.CurUPH * 100 / row.UPH, 2) + "%";//生产效率 } #region 日计划 string dayRatioQty = ""; int dayPlanQty = 0; int dayQty = 0; if (worksheetlist != null) { string Scheduling = worksheetlist[0].Scheduling; string Production = worksheetlist[0].Production; if (Scheduling != null && !string.IsNullOrWhiteSpace(Scheduling)) { string[] array = Scheduling.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); foreach (var item in array) { string[] val = item.Split(new char[] { ',' }); if (val != null && val.Length == 2) { DateTime date = DateTime.Now; int iCount = 0; if (DateTime.TryParse(val[0], out date) && int.TryParse(val[1], out iCount)) { if (date.ToString("yyyy-MM-dd").Equals(DateTime.Now.ToString("yyyy-MM-dd"))) { dayPlanQty = iCount; break; } } } } } if (Production != null && !string.IsNullOrWhiteSpace(Production)) { string[] array = Production.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); foreach (var item in array) { string[] val = item.Split(new char[] { ',' }); if (val != null && val.Length == 2) { DateTime date = DateTime.Now; int iCount = 0; if (DateTime.TryParse(val[0], out date) && int.TryParse(val[1], out iCount)) { if (date.ToString("yyyy-MM-dd").Equals(DateTime.Now.ToString("yyyy-MM-dd"))) { dayQty = iCount; break; } } } } } if (dayPlanQty == 0) { dayRatioQty = "0%"; } else { dayRatioQty = Math.Round((double)dayQty * 100 / dayPlanQty, 2) + "%";//计划达成率 } } #endregion dynamic rows = new { DayRatioQty = dayRatioQty, DayPlanQty = dayPlanQty, DayQty = dayQty, StateName = row.StateName, //设备状态 RatioQty = row.RatioQty, //计划达成率 Qty = row.Qty, //实际产量 DifferQty = row.DifferQty, //差异产量 PlanRatio = row.PlanRatio, //生产效率 CurUPH = row.CurUPH, //实际UPH CurCT = row.CT, // 实际C/T CreateDateStr = row.CreateDateStr, //开始时间 Utilization = row.Utilization, //时间稼动率 ProductTime = row.ProductTime, //生产时间 StopCount = row.StopCount, //停机次数 StopTime = row.StopTime, //停机时间 Color = row.Color, //颜色 ReserveRate = row.ReserveRate, //备存计划达成率 ActualMould = row.ActualMould, //实际模穴 StandardMould = row.StandardMould, //标准模穴 MouldRate = row.MouldRate, //模穴率 }; result.status = true; result.message = ""; result.rows = rows; } else { result.message = "获取不到数据。"; } string js = JsonConvert.SerializeObject(result); return(Json(js, "application/json", JsonRequestBehavior.AllowGet)); }
/// <summary> /// 获取看板基础信息 /// </summary> /// <param name="DepartCode"></param> /// <param name="TenantID"></param> /// <returns></returns> public ActionResult LoadWorkshopBoard(string DepartCode, string TenantID) { List <minimes_order_record> result = new List <minimes_order_record>(); List <dynamic> linelist = ApiDataSource.GetLineList(TenantID, DepartCode, null, null, null).ToObject <List <dynamic> >(); minimes_order_recordService reportService = new minimes_order_recordService(); List <minimes_order_record> reportList = reportService.GetModelList( ParamQuery.Instance() //.AndWhere("PlanDate", DateTime.Now.Date) .AndWhere("State", 1) .AndWhere("TenantID", TenantID) ); foreach (var item1 in linelist) { //屏蔽 if (item1.LineId != "2d6a9f23-c1dc-4a6d-baa7-473011e4954c" && item1.LineId != "d3bb37bd-0aff-4c6a-96a0-d544c136a018") { minimes_order_record row = new minimes_order_record(); row.Color = "tag-grey"; row.LineId = item1.LineId + ""; row.LineName = item1.LineName + ""; row.OrderNo = ""; row.ProductCode = ""; row.Qty = 0; row.PlanQty = 0; row.State = 1; row.StateName = "未切单"; row.StopCount = 0; row.StopTime = 0; row.CreateDateStr = ""; result.Add(row); foreach (var item in reportList) { if (row.LineId == item.LineId) { row.OrderNo = item.OrderNo; row.ProductCode = item.ProductCode; row.Qty = item.Qty; row.PlanQty = item.PlanQty; row.StopCount = item.StopCount; row.StopTime = item.StopTime; row.CreateDateStr = item.CreateDate.ToString("yyyy-MM-dd hh:mm:ss"); row.ActualMould = item.ActualMould; row.StandardMould = item.StandardMould; row.ReserveQty = item.ReserveQty; string WorkShopId = ""; minimes_resttimeService resttimeService = new minimes_resttimeService(); dynamic LineList = ApiDataSource.GetLineList(TenantID, null, null, row.LineId, null); foreach (var item_line in LineList) { WorkShopId = item_line.WorkShopId; } List <minimes_resttime> resttimeList = resttimeService.GetModelList(ParamQuery.Instance().AndWhere("WorkShopId", WorkShopId).AndWhere("TenantId", TenantID)); string IsRest = "0";//默认值 if (resttimeList.Count != 0) { foreach (var item_rest in resttimeList) { string Time = item_rest.RestTime; string[] TimeArr = Time.Split('-'); DateTime StartTime = Convert.ToDateTime(TimeArr[0]); DateTime EndTime = Convert.ToDateTime(TimeArr[1]); DateTime nowTime = Convert.ToDateTime(DateTime.Now.ToShortTimeString()); if ((nowTime >= StartTime && nowTime <= EndTime)) { IsRest = "1";//在休息时间区间 } } } if (row.PlanQty + row.ReserveQty <= row.Qty)//已完成 注;实际产量大于等于计划产量加备存数据 工单才完工 { row.StateName = "已完成"; row.Color = "green"; } else if (item.MachineState == 1) { row.StateName = "生产中"; row.Color = "blue"; } else if (item.MachineState == 0 && IsRest == "1") { row.StateName = "休息中"; row.Color = "orange"; } else { row.StateName = "停机中"; row.Color = "red"; } } } } } string js = JsonConvert.SerializeObject(result); return(Json(js, "application/json", JsonRequestBehavior.AllowGet)); }