日计划用料清单新增日计划工单关联
生产计划排程 计算更改为分钟
| | |
| | | { |
| | | string sql = string.Format(@" |
| | | /*dialect*/ |
| | | select t1.FID,t1.FEntryID,t3.FMATERIALID,T5.FNUMBER,t1.FHMASTERDATE,t1.FHQTY,t4.FMATERIALID FMATERIALID2,T6.FNUMBER FNUMBER2,T7.FNUMBER FUNITNUMBER,FNumerator,FDenominator,convert(decimal(18,2),(FNumerator/FDenominator) *t1.FHQTY) FHQtyMust,T4.FUnitID,t8.FNUMBER FUNITNUMBER2,T3.FID FPPBOM,T4.FENTRYID FPPBOMENTRYID,isnull(T9.FBillNo,'')FBillNo,t10.FNUMBER FORGNUMBER,t11.FNUMBER FHSOURCENUMBER,FSCRAPRATE,FFIXSCRAPQTY,T9.FID AS DayPlanFID,t2.FSCORDERNO, |
| | | select t1.FID,t1.FSEQ FDayPlanFSEQ,t1.FEntryID,T2.FBILLNO AS FDayPlanFBILLNO,t3.FMATERIALID,T5.FNUMBER,t1.FHMASTERDATE,t1.FHQTY,t4.FMATERIALID FMATERIALID2,T6.FNUMBER FNUMBER2,T7.FNUMBER FUNITNUMBER,FNumerator,FDenominator,convert(decimal(18,2),(FNumerator/FDenominator) *t1.FHQTY) FHQtyMust,T4.FUnitID,t8.FNUMBER FUNITNUMBER2,T3.FID FPPBOM,T4.FENTRYID FPPBOMENTRYID,isnull(T9.FBillNo,'')FBillNo,t10.FNUMBER FORGNUMBER,t11.FNUMBER FHSOURCENUMBER,FSCRAPRATE,FFIXSCRAPQTY,T9.FID AS DayPlanFID,t2.FSCORDERNO, |
| | | t3.FMOENTRYID,t3.FBILLNO FPPBOMBILLNO,T4.FSEQ,tc.FOWNERTYPEID,tc.FOWNERID,tc.FEntrustPickOrgId,torg.FNUMBER as FORGNUMBER,t3.FMOID,FIssueType,FMaterialType |
| | | FROM Sc_WorkBillSortBillSub t1 |
| | | JOIN Sc_WorkBillSortBillMAIN t2 on t1.FID = t2.FID |
| | |
| | | FEntrustPickOrgId = dr["FORGNUMBER"].ToString(), |
| | | FMOID = dr["FMOID"].ToString(), |
| | | FIssueType = dr["FIssueType"].ToString(), |
| | | FMaterialType = dr["FMaterialType"].ToString() |
| | | FMaterialType = dr["FMaterialType"].ToString(), |
| | | FDayPlanFSEQ = dr["FDayPlanFSEQ"].ToString(), |
| | | FDayPlanFBILLNO = dr["FDayPlanFBILLNO"].ToString() |
| | | }); |
| | | } |
| | | LogHelper.Info($"日计划用料清单,数据准备完成,保存到Model实体,总行数:{DayPlanMaterial.Count},耗时:" + sw.Elapsed); |
| | |
| | | model.Add("FHQty", _DayPlanMaterial[0].FHQty);//主产品数量:FHQty |
| | | model.Add("FHUnitID", new JObject() { ["Fnumber"] = _DayPlanMaterial[0].FHUnitID });//单位:FHUnitID |
| | | model.Add("FDayPlanFID", _DayPlanMaterial[0].FDayPlanFID);//日计划工单内码 |
| | | model.Add("FDayPlanFSEQ", _DayPlanMaterial[0].FDayPlanFSEQ);//日计划工单明细行号 |
| | | model.Add("FDayPlanFBillNo", _DayPlanMaterial[0].FDayPlanFBILLNO);//日计划工单单据编号 |
| | | JArray Entry = new JArray(); |
| | | int FSEQ = 1; |
| | | foreach (var _item in _DayPlanMaterial) |
| | |
| | | { |
| | | //查询出重复生产线对应的工作日历信息 |
| | | string _sql = @" |
| | | select FCalUserId,FCalUserType,FShiftId,FIsWorkTime,FDay,FDateStyle,c.FALLHOURS,b.FENTRYID from T_ENG_WORKCAL a |
| | | select FCalUserId,FCalUserType,FShiftId,FIsWorkTime,FDay,FDateStyle,c.FALLHOURS ,c.FALLHOURS FALLHOURSCONST,b.FENTRYID from T_ENG_WORKCAL a |
| | | left join T_ENG_WORKCALFULLDATA b on a.FID=b.FID |
| | | left join T_ENG_SHIFT c on b.FShiftId =c.FID |
| | | where FDateStyle = 1 and FIsWorkTime = 1 |
| | |
| | | decimal FCapacity = Convert.ToDecimal(order["FCapacity"]);//小时产能 |
| | | decimal FSCOrderCount = Convert.ToDecimal(order["FSCOrderCount"]);//生产订单数 |
| | | List<ENG_WORKCALFULLDATA> finalyResult = new List<ENG_WORKCALFULLDATA>(); |
| | | decimal dayFCapacity = 0;//日产量 |
| | | decimal dayFCapacity = 0;//当日剩余产量 = 小时产能 * 日剩余工作时长 |
| | | List<ENG_WORKCALFULLDATA> _ENG_WORKCALFULLDATA = ENG_WORKCALFULLDATA.Where(x => x.FALLHOURS > 0 && x.FCalUserId == Convert.ToInt32(order["FSczy_Id"])).ToList(); |
| | | foreach (var item in _ENG_WORKCALFULLDATA) |
| | | { |
| | | if (FSCOrderCount == 0) |
| | | break; |
| | | dayFCapacity = FCapacity * item.FALLHOURS; |
| | | dayFCapacity = FCapacity * item.FALLHOURS; |
| | | decimal fqty = dayFCapacity > FSCOrderCount ? FSCOrderCount : dayFCapacity; |
| | | finalyResult.Add(new Demo.Model.Model.ENG_WORKCALFULLDATA |
| | | { |
| | | FDay = item.FDay, |
| | | FQTY = fqty |
| | | }); ; |
| | | //当日产量大于剩余生产订单数量时 按小时产量去计算需要时间 list<>去扣除相应的工时 |
| | | //当日剩余产量大于剩余生产订单数量时 按小时产量去计算需要时间 list<>去扣除相应的工时 |
| | | if (dayFCapacity > FSCOrderCount) |
| | | { |
| | | //改变list中某个元素值 |
| | | var model = ENG_WORKCALFULLDATA.Where(c => c.FENTRYID == item.FENTRYID).FirstOrDefault(); |
| | | model.FALLHOURS -= Math.Ceiling(fqty / FCapacity); |
| | | |
| | | //model.FALLHOURS -= Math.Ceiling(fqty / FCapacity); |
| | | model.FALLHOURS -= fqty / FCapacity ; // 生产数 / 小时产能 = 消耗的小时 (数值类型为decimal) |
| | | } |
| | | else |
| | | { |
| | |
| | | jsonRoot.Add("Creator", ""); |
| | | jsonRoot.Add("NeedUpDateFields", new JArray()); |
| | | jsonRoot.Add("NeedReturnFields", new JArray()); |
| | | jsonRoot.Add("IsDeleteEntry", "false");// |
| | | jsonRoot.Add("IsDeleteEntry", "true");// |
| | | jsonRoot.Add("SubSystemId", ""); |
| | | jsonRoot.Add("IsVerifyBaseDataField", ""); |
| | | |
| | |
| | | /// 子项类型 |
| | | /// </summary> |
| | | public string FMaterialType { get; set; } |
| | | /// <summary> |
| | | /// 日计划明细行号 |
| | | /// </summary> |
| | | public string FDayPlanFSEQ { get; set; } |
| | | /// <summary> |
| | | /// 日计划工单单号 |
| | | /// </summary> |
| | | public string FDayPlanFBILLNO { get; set; } |
| | | |
| | | } |
| | | } |
| | |
| | | public long FDateStyle { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 工作时长 |
| | | /// 工作时长(用于计算) |
| | | /// </summary> |
| | | public decimal FALLHOURS { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 每日工作时长 固定值 不做更改 |
| | | /// </summary> |
| | | public decimal FALLHOURSCONST { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 日产量 |
| | | /// </summary> |
| | | public decimal FQTY { get; set; } |