| | |
| | | _i++; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 自动排程日计划 齐套分析后的结果渲染 |
| | | /// </summary> |
| | | private void ChangeColorZDPC() |
| | | { |
| | | DateTime DateNow = DateTime.Now; |
| | | string sql = ""; |
| | | Entity entity = this.View.BillBusinessInfo.GetEntity("FZdpcEntity"); |
| | | //单据体信息转换为列表集合 |
| | | DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity); |
| | | EntryGrid grid = this.View.GetControl<EntryGrid>("FZdpcEntity"); |
| | | int _i = 0; |
| | | foreach (DynamicObject current in entityDataObjoct) |
| | | { |
| | | sql = @"/*dialect*/SELECT * FROM Sc_WorkBillSortBillSub WHERE DATEDIFF(D,GETDATE(),FHMASTERDATE)>=0 and FID=" + current["FIDZD"].ToString(); |
| | | DataTable _dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; |
| | | foreach (DataRow dr in _dt.Rows) |
| | | { |
| | | DateTime start = Convert.ToDateTime(DateNow.ToShortDateString()); |
| | | DateTime end = Convert.ToDateTime(Convert.ToDateTime(dr["FHMASTERDATE"]).ToShortDateString()); |
| | | TimeSpan getDay = end.Subtract(start); |
| | | if (getDay.Days > 60) |
| | | continue; |
| | | |
| | | if (dr["FHLockedSub"].ToString() == "1") |
| | | this.View.GetFieldEditor("FT" + getDay.Days.ToString(), _i).Enabled = false; //单据体行锁定字段 |
| | | if (dr["FCOMPLETE"].ToString() == "未齐套") |
| | | { |
| | | this.View.GetFieldEditor("FT" + getDay.Days.ToString(), _i).Enabled = false; //单据体行锁定字段 |
| | | grid.SetForecolor("FT" + "" + getDay.Days.ToString() + "", "#FF0000", _i); |
| | | } |
| | | else if (dr["FCOMPLETE"].ToString() == "齐套") |
| | | { |
| | | this.View.GetFieldEditor("FT" + getDay.Days.ToString(), _i).Enabled = false; //单据体行锁定字段 |
| | | grid.SetForecolor("FT" + "" + getDay.Days.ToString() + "", "#00FF00", _i); |
| | | } |
| | | //手工修改标记 |
| | | if (dr["FIsSGXG"].ToString() == "1") |
| | | { |
| | | this.View.GetFieldEditor("FT" + getDay.Days.ToString(), _i).Enabled = false; //单据体行锁定字段 |
| | | grid.SetForecolor("FT" + "" + getDay.Days.ToString() + "", "#00FFFF", _i); |
| | | } |
| | | } |
| | | _i++; |
| | | } |
| | | } |
| | | private bool isSearched = true; |
| | | /// <summary> |
| | | /// 值更新事件 |
| | |
| | | /// <param name="e"></param> |
| | | public override void DataChanged(DataChangedEventArgs e) |
| | | { |
| | | if (!isSearched) return; |
| | | base.DataChanged(e); |
| | | var columns = new List<string>() { "", "" }; |
| | | for (int i = 0; i < 100; i++) |
| | | try |
| | | { |
| | | columns.Add("FT" + i.ToString()); |
| | | } |
| | | var model = this.View.Model; |
| | | if (columns.Contains(e.Field.Key)) |
| | | { |
| | | //if (Convert.ToDouble(model.GetValue(e.Field.Key, e.Row)) == 0) |
| | | //{ |
| | | // this.View.ShowErrMessage("日计划数量需大于0"); |
| | | // //this.View.Model.SetValue("FT0", 100, e.Row);//返回值 |
| | | // return; |
| | | //} |
| | | var sum = columns.Select(x => Convert.ToDouble(model.GetValue(x, e.Row))).Sum();//日计划总和 |
| | | var scOrderCount = Convert.ToDouble(model.GetValue("FSCOrderCountZD", e.Row));//生产订单数量 |
| | | var FQTYLS = Convert.ToDouble(model.GetValue("FQTYLS", e.Row));//历史 |
| | | this.View.Model.SetValue("FNoScheduledCount", scOrderCount - sum - FQTYLS, e.Row);//待排数 |
| | | this.View.Model.SetValue("FSumQty", sum, e.Row);//日计划总数 |
| | | } |
| | | //分配数量 |
| | | if (e.Field.Key == "FAllocatedCount") |
| | | { |
| | | var scOrderNo = model.GetValue("FProOrderNo", e.Row).ToString(); |
| | | var scOrderFentrySeqNo = model.GetValue("FSRCBILLENTRYSEQ", e.Row).ToString(); |
| | | var scOrderCount = Convert.ToDouble(model.GetValue("FSCOrderCount", e.Row)); |
| | | Entity entity = this.View.BillBusinessInfo.GetEntity("FDprwEntity"); |
| | | //单据体信息转换为列表集合 |
| | | DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity); |
| | | var groups = entityDataObjoct.Where(x => Convert.ToString(x["FProOrderNo"]) == scOrderNo && Convert.ToString(x["FSRCBILLENTRYSEQ"]) == scOrderFentrySeqNo);//生产资源分组(计算优先级) |
| | | double allocatedCount = 0; |
| | | foreach (var group in groups) |
| | | if (!isSearched) return; |
| | | base.DataChanged(e); |
| | | var columns = new List<string>() { "", "" }; |
| | | for (int i = 0; i < 100; i++) |
| | | { |
| | | allocatedCount += Convert.ToDouble(group["FAllocatedCount"]); |
| | | columns.Add("FT" + i.ToString()); |
| | | } |
| | | if (allocatedCount > scOrderCount) |
| | | var model = this.View.Model; |
| | | if (columns.Contains(e.Field.Key)) |
| | | { |
| | | this.View.ShowErrMessage("序号:"+ model.GetValue("FSEQ", e.Row).ToString() + ",订单号:" + scOrderNo + ",行号:" + scOrderFentrySeqNo + " 分配总数超出生产订单数。"); |
| | | //if (Convert.ToDouble(model.GetValue(e.Field.Key, e.Row)) == 0) |
| | | //{ |
| | | // this.View.ShowErrMessage("日计划数量需大于0"); |
| | | // //this.View.Model.SetValue("FT0", 100, e.Row);//返回值 |
| | | // return; |
| | | //} |
| | | var sum = columns.Select(x => Convert.ToDouble(model.GetValue(x, e.Row))).Sum();//日计划总和 |
| | | var scOrderCount = Convert.ToDouble(model.GetValue("FSCOrderCountZD", e.Row));//生产订单数量 |
| | | var FQTYLS = Convert.ToDouble(model.GetValue("FQTYLS", e.Row));//历史 |
| | | this.View.Model.SetValue("FNoScheduledCount", scOrderCount - sum - FQTYLS, e.Row);//待排数 |
| | | this.View.Model.SetValue("FSumQty", sum, e.Row);//日计划总数 |
| | | string sql = $"update Sc_WorkBillSortBillSub set FIsSGXG =1 where FID ={model.GetValue("FIDZD", e.Row)} AND DATEDIFF(D,GETDATE(),FHMasterDate) = '{e.Field.Key.Substring(2)}'"; |
| | | DBServiceHelper.Execute(Context, sql); |
| | | } |
| | | //分配数量 |
| | | if (e.Field.Key == "FAllocatedCount") |
| | | { |
| | | var scOrderNo = model.GetValue("FProOrderNo", e.Row).ToString(); |
| | | var scOrderFentrySeqNo = model.GetValue("FSRCBILLENTRYSEQ", e.Row).ToString(); |
| | | var scOrderCount = Convert.ToDouble(model.GetValue("FSCOrderCount", e.Row)); |
| | | Entity entity = this.View.BillBusinessInfo.GetEntity("FDprwEntity"); |
| | | //单据体信息转换为列表集合 |
| | | DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity); |
| | | var groups = entityDataObjoct.Where(x => Convert.ToString(x["FProOrderNo"]) == scOrderNo && Convert.ToString(x["FSRCBILLENTRYSEQ"]) == scOrderFentrySeqNo);//生产资源分组(计算优先级) |
| | | double allocatedCount = 0; |
| | | foreach (var group in groups) |
| | | { |
| | | allocatedCount += Convert.ToDouble(group["FAllocatedCount"]); |
| | | } |
| | | if (allocatedCount > scOrderCount) |
| | | { |
| | | this.View.ShowErrMessage("序号:" + model.GetValue("FSEQ", e.Row).ToString() + ",订单号:" + scOrderNo + ",行号:" + scOrderFentrySeqNo + " 分配总数超出生产订单数。"); |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | this.View.ShowErrMessage(ex.Message); |
| | | } |
| | | } |
| | | /// <summary> |
| | |
| | | //{ |
| | | // this.View.GetControl("FT" + "" + m + "").Text = DateNow.AddDays(m).ToShortDateString(); |
| | | //} |
| | | ChangeColorZDPC(); |
| | | |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | |
| | | where FDateStyle = 1 and FIsWorkTime = 1 |
| | | and FCalUserType ='ENG_RepetitiveProductLine' |
| | | and DATEDIFF(D,getdate(),FDAY)>0 |
| | | and convert(nvarchar(20),FCalUserId)+convert(nvarchar(20),FDay,23) not in |
| | | ( |
| | | select DISTINCT convert(nvarchar(20),FHSourceID)+convert(nvarchar(20),FHMasterDate,23) from Sc_WorkBillSortBillMain a |
| | | join Sc_WorkBillSortBillSub b on a.FID =B.FID |
| | | WHERE FIsSGXG =1 |
| | | ) |
| | | --去除手动修改过的日期 |
| | | --条件为 工作日+是否生产 == 1 "; |
| | | ENG_WORKCALFULLDATA = DBServiceHelper.ExecuteDataSet(Context, _sql).ToModelList<ENG_WORKCALFULLDATA>(); |
| | | |
| | |
| | | { |
| | | var orders = group.OrderBy(x => Convert.ToDateTime(x["FPlanEndDate"]));//计划完工日期排序 |
| | | var seq = 1; |
| | | |
| | | foreach (var order in orders) |
| | | { |
| | | //计算产能 |
| | | decimal FCapacity = Convert.ToDecimal(order["FCapacity"]);//小时产能 |
| | | decimal FSCOrderCount = Convert.ToDecimal(order["FSCOrderCount"]);//生产订单数 |
| | | decimal FSCOrderCount = Convert.ToDecimal(order["FSCOrderCount"]);//生产订单 |
| | | var _FID = order["FID"]?.ToString(); |
| | | string cnSql = ""; |
| | | cnSql = $"select sum(FHQty) from Sc_WorkBillSortBillSub where FID = {_FID} and FIsSGXG =1"; |
| | | decimal fDayPlanQuality = DBServiceHelper.ExecuteScalar<decimal>(Context, cnSql, 0); |
| | | cnSql = $"delete Sc_WorkBillSortBillSub where FID = {_FID} and FIsSGXG <>1"; |
| | | DBServiceHelper.Execute(Context, cnSql); |
| | | FSCOrderCount = FSCOrderCount - fDayPlanQuality; |
| | | List<ENG_WORKCALFULLDATA> finalyResult = new List<ENG_WORKCALFULLDATA>(); |
| | | decimal dayFCapacity = 0;//当日剩余产量 = 小时产能 * 日剩余工作时长 |
| | | List<ENG_WORKCALFULLDATA> _ENG_WORKCALFULLDATA = ENG_WORKCALFULLDATA.Where(x => x.FALLHOURS > 0 && x.FCalUserId == Convert.ToInt32(order["FSczy_Id"])).ToList(); |
| | |
| | | jsonRoot.Add("Creator", ""); |
| | | jsonRoot.Add("NeedUpDateFields", new JArray()); |
| | | jsonRoot.Add("NeedReturnFields", new JArray()); |
| | | jsonRoot.Add("IsDeleteEntry", "true");// |
| | | //jsonRoot.Add("IsDeleteEntry", "true");// |
| | | jsonRoot.Add("SubSystemId", ""); |
| | | jsonRoot.Add("IsVerifyBaseDataField", ""); |
| | | |