王 垚
2021-02-28 26e7644be352af722ea055d084b2e4a65efb382f
src/BLL/Demo.BillView/PRD/ProductScheduleButtonClick.cs
@@ -504,7 +504,7 @@
        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
@@ -529,9 +529,35 @@
            {
                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"]);//生产订单
@@ -544,7 +570,7 @@
                    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)