| | |
| | | public void Jscn() |
| | | { |
| | | //查询出重复生产线对应的工作日历信息 |
| | | string _sql = @" |
| | | string _sql = @"/*dialect*/ |
| | | 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 |
| | |
| | | { |
| | | var orders = group.OrderBy(x => Convert.ToDateTime(x["FPlanEndDate"]));//计划完工日期排序 |
| | | var seq = 1; |
| | | |
| | | string fMaterialID = ""; //记录循环时的产品 用于产品换线时判断(同一个产线时的计算) |
| | | foreach (var order in orders) |
| | | { |
| | | List<ENG_WORKCALFULLDATA> _ENG_WORKCALFULLDATA = ENG_WORKCALFULLDATA.Where(x => x.FALLHOURS > 0 && x.FCalUserId == Convert.ToInt32(order["FSczy_Id"])).ToList(); |
| | | //产品发生变幻时扣除相应的换线时间 |
| | | if (fMaterialID == "") |
| | | { |
| | | fMaterialID = order["FMATERIALID_Id"].ToString(); |
| | | } |
| | | decimal FChangeLine = Convert.ToDecimal(order["FChangeLine"]);//换线时间 |
| | | if (fMaterialID != order["FMATERIALID_Id"].ToString()) |
| | | { |
| | | foreach (var item in _ENG_WORKCALFULLDATA) |
| | | { |
| | | if (FChangeLine < item.FALLHOURS) |
| | | { |
| | | //改变list中某个元素值 |
| | | var model = ENG_WORKCALFULLDATA.Where(c => c.FENTRYID == item.FENTRYID).FirstOrDefault(); |
| | | //model.FALLHOURS -= Math.Ceiling(fqty / FCapacity); |
| | | model.FALLHOURS -= FChangeLine; // 生产数 / 小时产能 = 消耗的小时 (数值类型为decimal) |
| | | } |
| | | else |
| | | { |
| | | var model = ENG_WORKCALFULLDATA.Where(c => c.FENTRYID == item.FENTRYID).FirstOrDefault(); |
| | | model.FALLHOURS = 0; |
| | | } |
| | | } |
| | | fMaterialID = order["FMATERIALID_Id"].ToString(); |
| | | } |
| | | //计算产能 |
| | | decimal FCapacity = Convert.ToDecimal(order["FCapacity"]);//小时产能 |
| | | decimal FSCOrderCount = Convert.ToDecimal(order["FSCOrderCount"]);//生产订单 |
| | |
| | | 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(); |
| | | _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) |