王 垚
2022-11-23 765eb429bdcbffc29df0168966f94a9c5ae92fbd
代码上传
2个文件已修改
111 ■■■■ 已修改文件
MES/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs 107 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES/src/BLL/Demo.BillView/PRD/SalOrderSaveVal.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs
@@ -712,7 +712,7 @@
                            if (yzfid == 0)
                                break;
                        }
                        //选单数据 做新增
                        JObject jsonRoot = new JObject();
                        jsonRoot.Add("Creator", "");
@@ -872,6 +872,8 @@
            },
            (t) => { });
        }
        [Obsolete]
        private void COMPLETEBOM()
        {
            // 显示一个进度显示界面:显示一个不停滚动的模拟进度
@@ -912,8 +914,8 @@
                    {
                        processView.Close();
                        this.View.SendDynamicFormAction(processView);
                        this.View.ShowMessage(resuult);
                    }
                    this.View.ShowMessage(resuult);
                }
            },
            (t) => { });
@@ -1286,10 +1288,10 @@
                DBServiceHelper.BulkInserts(this.Context, string.Empty, string.Empty, insertDT);
                LogService.Write("批量插入到数据库用时:" + sw.Elapsed);
                //执行完成后 更新日计划工单状态
//                DBServiceHelper.Execute(Context, @"
///*dialect*/update Sc_WorkBillSortBillSub set FComplete = '未齐套' where FEntryID IN (select distinct FHICMOEntryID from JIT_MOMaterReadysBill where isnull(FCOMPLETE,'未齐套') ='未齐套') and FID IN (" + fDayPlanFids + ") ");
//                DBServiceHelper.Execute(Context, @"
///*dialect*/update Sc_WorkBillSortBillSub set FComplete = '齐套' where FEntryID NOT IN (select distinct FHICMOEntryID from JIT_MOMaterReadysBill where isnull(FCOMPLETE,'未齐套') ='未齐套') and FID IN (" + fDayPlanFids + ") ");
                //                DBServiceHelper.Execute(Context, @"
                ///*dialect*/update Sc_WorkBillSortBillSub set FComplete = '未齐套' where FEntryID IN (select distinct FHICMOEntryID from JIT_MOMaterReadysBill where isnull(FCOMPLETE,'未齐套') ='未齐套') and FID IN (" + fDayPlanFids + ") ");
                //                DBServiceHelper.Execute(Context, @"
                ///*dialect*/update Sc_WorkBillSortBillSub set FComplete = '齐套' where FEntryID NOT IN (select distinct FHICMOEntryID from JIT_MOMaterReadysBill where isnull(FCOMPLETE,'未齐套') ='未齐套') and FID IN (" + fDayPlanFids + ") ");
                //释放齐套操作 避免多人同时进行齐套分析
                DBServiceHelper.Execute(Context, $"/*dialect*/ update T_PRD_QTFX set FSTATUS = 0 where FPRDORGID ={fPrdOrgId} and FSTATUS = 1 ");
                sw.Stop();//结束计时
@@ -1307,10 +1309,10 @@
        //收料通知单 齐套分析
        public string CompleteSetAnalysisByDataTableBom()
        {
            LogHelper.Info("齐套分析sql模式开始准备数据:");
            string sql = "";
            try
            {
                LogService.Write("齐套 bom ");
                Stopwatch sw = new Stopwatch();
                var fPrdOrgId = (this.Model.GetValue("FPRDOrgId") as DynamicObject)?["Id"].ToString();
                string fProWorkShopId = "";
@@ -1326,6 +1328,7 @@
                }
                List<PRD_PPBOM> BomList = new List<PRD_PPBOM>();
                string procSql = $"exec proc_jit_qtfx {fPrdOrgId},{fProWorkShopId},{Context.UserId}";
                LogService.Write("齐套 bom sql:" + procSql);
                DataSet _ds = DBServiceHelper.ExecuteDataSet(Context, procSql);
                DataTable resulTable = _ds.Tables[0];
                if (resulTable.Rows[0][0].ToString().Contains("失败"))
@@ -1379,6 +1382,7 @@
                Dictionary<string, decimal> occupyDic = new Dictionary<string, decimal>();
                LogService.Write($"齐套分析,数据准备阶段,用时" + sw.Elapsed + "总行数:" + BomList.Count);
                //第一个循环 日计划工单明细 一天+一个工单 一个循环
                //第一个循环 日计划工单明细 一天+一个工单 一个循环
                foreach (var item in DatePlanList)
                {
                    this.View.Session["ProcessRateValue"] = Convert.ToInt32((Convert.ToDecimal(75) / DatePlanList.Count) * i);
@@ -1419,43 +1423,46 @@
                        decimal FOccupyPickedCount = 0;//占用领料单数量
                        //找到领用数量
                        var _DayPlanPickedModel = DayPlanPickedModel.Where(c => c.FPRDMOENTYID == _item.FPRDMOENTYID && c.FMATERIALID == _item.FMATERIALID2).FirstOrDefault();
                        if (_DayPlanPickedModel.FRemainPickedQty >= need)
                        if (_DayPlanPickedModel != null)
                        {
                            //领料数量满足了当前这个需求量 直接齐套 不需要去占用仓库
                            completeAnalysisTempModel.Add(new Demo.Model.Model.CompleteAnalysisTempModel
                            if (_DayPlanPickedModel.FRemainPickedQty >= need)
                            {
                                FHMainICMOInterIDr = _item.FPRDMOMAINID,
                                FHMainICMOEntryID = _item.FPRDMOENTYID,
                                FHICMOInterID = _item.FID.ToString(),
                                FHICMOEntryID = _item.FEntryID.ToString(),
                                FHMaterID = _item.FMATERIALID2,
                                FErpClsID = _item.FErpClsID,
                                FHStockOrgID = _item.FStockOrgId,
                                FHPRDORGID = _item.FStockOrgId,
                                FPRDBillNo = _item.FMOBillNO,
                                FOwnerTypeId = "",
                                FUnitDosage = _item.dwyl,//单位用量
                                FSumPlanCount = planNeed,//计划总数量
                                FCompleteCount1 = planNeed, //齐套数量
                                FLackCount = 0,//缺料数量
                                FHStockQty = jskcQty2,//即时库存
                                FHLeftQty = jskcQty,//可用数量
                                FOccupyCount = occupyMaterial,//占用数量
                                FOccupyPickedCount = planNeed,//占用领料数量
                                FComPlete = "齐套",
                                FPlanDate = item.FHMASTERDATE, // 日计划日期
                                FWorkShop = _item.FHWorkShopID //车间
                            });
                            //扣除剩余可用领料数量
                            _DayPlanPickedModel.FRemainPickedQty -= need;
                            //循环下一个物料
                            continue;
                        }
                        else
                        {
                            need -= _DayPlanPickedModel.FRemainPickedQty; //剩余需求数量
                            FOccupyPickedCount = _DayPlanPickedModel.FRemainPickedQty;
                            _DayPlanPickedModel.FRemainPickedQty = 0;
                                //领料数量满足了当前这个需求量 直接齐套 不需要去占用仓库
                                completeAnalysisTempModel.Add(new Demo.Model.Model.CompleteAnalysisTempModel
                                {
                                    FHMainICMOInterIDr = _item.FPRDMOMAINID,
                                    FHMainICMOEntryID = _item.FPRDMOENTYID,
                                    FHICMOInterID = _item.FID.ToString(),
                                    FHICMOEntryID = _item.FEntryID.ToString(),
                                    FHMaterID = _item.FMATERIALID2,
                                    FErpClsID = _item.FErpClsID,
                                    FHStockOrgID = _item.FStockOrgId,
                                    FHPRDORGID = _item.FStockOrgId,
                                    FPRDBillNo = _item.FMOBillNO,
                                    FOwnerTypeId = "",
                                    FUnitDosage = _item.dwyl,//单位用量
                                    FSumPlanCount = planNeed,//计划总数量
                                    FCompleteCount1 = planNeed, //齐套数量
                                    FLackCount = 0,//缺料数量
                                    FHStockQty = jskcQty2,//即时库存
                                    FHLeftQty = jskcQty,//可用数量
                                    FOccupyCount = occupyMaterial,//占用数量
                                    FOccupyPickedCount = planNeed,//占用领料数量
                                    FComPlete = "齐套",
                                    FPlanDate = item.FHMASTERDATE, // 日计划日期
                                    FWorkShop = _item.FHWorkShopID //车间
                                });
                                //扣除剩余可用领料数量
                                _DayPlanPickedModel.FRemainPickedQty -= need;
                                //循环下一个物料
                                continue;
                            }
                            else
                            {
                                need -= _DayPlanPickedModel.FRemainPickedQty; //剩余需求数量
                                FOccupyPickedCount = _DayPlanPickedModel.FRemainPickedQty;
                                _DayPlanPickedModel.FRemainPickedQty = 0;
                            }
                        }
                        if (_pRD_WorkHouseCompar.Count > 0)
                        {
@@ -1541,7 +1548,6 @@
                                            FPlanDate = item.FHMASTERDATE, // 日计划日期
                                            FStock = Inventory.FSTOCKID,//仓库
                                            FWorkShop = _item.FHWorkShopID, //车间
                                            FBILLNO = Inventory.FBILLNO,
                                            FLot = Inventory.FLot
                                        });
                                        //扣减总库存数量
@@ -1554,7 +1560,7 @@
                                }
                            }
                        }
                        //没有车间仓库数据 既没有可用库存 为未齐套
                        //没有车间仓库数据 即没有可用库存 为未齐套
                        else
                        {
                            if (occupyDic.ContainsKey(_item.FHWorkShopID + _item.FMATERIALID2))
@@ -1667,12 +1673,7 @@
                DBServiceHelper.Execute(Context, deletesql);
                DBServiceHelper.BulkInserts(this.Context, string.Empty, string.Empty, insertDT);
                LogService.Write("批量插入到数据库用时:" + sw.Elapsed);
                //执行完成后 更新日计划工单状态
                //                DBServiceHelper.Execute(Context, @"
                ///*dialect*/update Sc_WorkBillSortBillSub set FComplete = '未齐套' where FEntryID IN (select distinct FHICMOEntryID from JIT_MOMaterReadysBill where isnull(FCOMPLETE,'未齐套') ='未齐套') and FID IN (" + fDayPlanFids + ") ");
                //                DBServiceHelper.Execute(Context, @"
                ///*dialect*/update Sc_WorkBillSortBillSub set FComplete = '齐套' where FEntryID NOT IN (select distinct FHICMOEntryID from JIT_MOMaterReadysBill where isnull(FCOMPLETE,'未齐套') ='未齐套') and FID IN (" + fDayPlanFids + ") ");
                //释放齐套操作 避免多人同时进行齐套分析
               //释放齐套操作 避免多人同时进行齐套分析
                DBServiceHelper.Execute(Context, $"/*dialect*/ update T_PRD_QTFX set FSTATUS = 0 where FPRDORGID ={fPrdOrgId} and FSTATUS = 1 ");
                sw.Stop();//结束计时
                LogService.Write("齐套分析运行总时长:" + sw.Elapsed);
@@ -1680,7 +1681,8 @@
            }
            catch (Exception ex)
            {
                LogService.Write("操作失败:" + ex.Message.ToString());
                DBServiceHelper.Execute(Context, $"/*dialect*/ update T_PRD_QTFX set FSTATUS = 0 where FUSERID ={Context.UserId} and FSTATUS = 1 ");
                LogService.Write("操作失败:" + ex.Message.ToString() + ex.StackTrace);
                return "操作失败," + ex.Message.ToString();
            }
@@ -1998,7 +2000,6 @@
                    this.Model.SetValue("FOrderType", Convert.ToString(dt.Rows[i]["FOrderType"]), i);//订单类型
                    this.Model.SetValue("FStatus", Convert.ToString(dt.Rows[i]["FStatus"]), i);//订单状态
                    //this.Model.SetValue("F_bsv_Text", Convert.ToString(dt.Rows[i]["F_DY"]) + Convert.ToString(dt.Rows[i]["F_GL"]) + Convert.ToString(dt.Rows[i]["F_DB"]), i);//电压/功率/底板
                    this.Model.SetValue("FCompleteSetCount", "", i);//总齐套数量
                    this.Model.SetValue("FPriority", Convert.ToString(dt.Rows[i]["FPriority"]), i);//优先级
                    this.Model.SetValue("FProOrderCount", dt.Rows[i]["FHOrderNeedQty"].ToString(), i);//生产订单数量 
                    this.Model.SetValue("FNoStockInQty", dt.Rows[i]["FNoStockInQty"].ToString(), i);//未入库数量 
@@ -2175,7 +2176,6 @@
                    this.Model.SetValue("FMOFBILLTYPE", Convert.ToString(dt.Rows[i]["FMOFBILLTYPE"]), i);//生产订单单据类型
                    this.Model.SetValue("FOrderType", Convert.ToString(dt.Rows[i]["FOrderType"]), i);//订单类型
                    this.Model.SetValue("FStatus", Convert.ToString(dt.Rows[i]["FStatus"]), i);//订单状态
                    this.Model.SetValue("FCompleteSetCount", "", i);//总齐套数量
                    this.Model.SetValue("FPriority", Convert.ToString(dt.Rows[i]["FPriority"]), i);//优先级
                    this.Model.SetValue("FProOrderCount", dt.Rows[i]["FHOrderNeedQty"].ToString(), i);//生产订单数量 
                    this.Model.SetValue("FNoStockInQty", dt.Rows[i]["FNoStockInQty"].ToString(), i);//未入库数量 
@@ -3644,6 +3644,7 @@
                    this.View.Model.SetValue("FDeliveryDate", Convert.ToString(item["FDeliveryDate"]), Convert.ToInt32(item["SEQ"]));//交货日期
                    this.View.Model.SetValue("FKpQty", Convert.ToString(item["FKpQty"]), Convert.ToInt32(item["SEQ"]));//可排数量
                    this.View.Model.SetValue("FResourcesId", Convert.ToString(item["FResourcesId_Id"]), Convert.ToInt32(item["SEQ"]));//生产资源
                    this.View.Model.SetValue("FT0", Convert.ToString(item["FT0"]), Convert.ToInt32(item["SEQ"]));
                }
            }
            else
MES/src/BLL/Demo.BillView/PRD/SalOrderSaveVal.cs
@@ -51,8 +51,8 @@
                        var FOrderQuantity = DBServiceHelper.ExecuteScalar<decimal>(Context, "select Fqty from t_prd_moentry where fentryid ="+ FPRDMOENTYID.ToString(), 0);
                        string sql = $"select convert(decimal(18,2),sum(FDayPlanQuantity)) from Sc_WorkBillSortBillMain where FPRDMOENTYID = {FPRDMOENTYID} and (FMoEntryId = 0 or FMoEntryId = FPRDMOENTYID ) and FID <>{FID}";
                        decimal FOrderCount = DBServiceHelper.ExecuteScalar<decimal>(Context, sql, 0);
                        LogService.Write("sql:" + sql);
                        LogService.Write("FOrderCount:" + FOrderCount);
                        //LogService.Write("sql:" + sql);
                        //LogService.Write("FOrderCount:" + FOrderCount);
                        bool isSave = FOrderCount + FDayPlanQuantity > FOrderQuantity;
                        if (isSave)