王 垚
2022-11-03 9eb450ebd526bf4701bd0ee9e9868a274e8e31e9
代码上传
1个文件已添加
3个文件已修改
506 ■■■■■ 已修改文件
MES/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs 373 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES/src/BLL/Demo.Report/Demo.Report.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES/src/BLL/Demo.Report/PRD/prd_CompleteReport.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES/src/BLL/Demo.Report/PRD/prd_CustomOneReport.cs 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs
@@ -443,20 +443,47 @@
        {
            try
            {
                int day = Convert.ToInt32(this.Model.GetValue("FLockDays"));
                List<string> sqlList = new List<string>();
                //更新日计划明细锁定标记
                string sql = $"/*dialect*/update t1 set t1.FHLockedSub=1 from Sc_WorkBillSortBillSub t1  join Sc_WorkBillSortBillMain t2 on  t1.FID = t2.FID  where  FHMASTERDATE between  DATEADD(day,-1,getdate()) and DATEADD(day,{day - 1},getdate())";
                sqlList.Add(sql);
                //生成提料计划和要料计划
                sql = string.Format(@"/*dialect*/
 INSERT INTO Z_SC_TLPLANZXJH (COLUMN1) VALUES ('0')
 INSERT INTO SC_TLPLANZXJH(FID,FCREATEDATE) SELECT Id,GETDATE() FROM Z_SC_TLPLANZXJH
 DELETE FROM Z_SC_TLPLANZXJH
 ");
                sqlList.Add(sql);
                DBServiceHelper.ExecuteBatch(Context, sqlList);
                #region 按天锁定
                //               int day = Convert.ToInt32(this.Model.GetValue("FLockDays"));
                //               List<string> sqlList = new List<string>();
                //               //更新日计划明细锁定标记
                //               string sql = $"/*dialect*/update t1 set t1.FHLockedSub=1 from Sc_WorkBillSortBillSub t1  join Sc_WorkBillSortBillMain t2 on  t1.FID = t2.FID  where  FHMASTERDATE between  DATEADD(day,-1,getdate()) and DATEADD(day,{day - 1},getdate())";
                //               sqlList.Add(sql);
                //               //生成提料计划和要料计划
                //               sql = string.Format(@"/*dialect*/
                //INSERT INTO Z_SC_TLPLANZXJH (COLUMN1) VALUES ('0')
                //INSERT INTO SC_TLPLANZXJH(FID,FCREATEDATE) SELECT Id,GETDATE() FROM Z_SC_TLPLANZXJH
                //DELETE FROM Z_SC_TLPLANZXJH
                //");
                //               sqlList.Add(sql);
                //               DBServiceHelper.ExecuteBatch(Context, sqlList);
                //               this.View.ShowMessage("操作成功");
                #endregion
                #region 选单锁定
                //单据体信息转换为列表集合
                Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity");
                DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity);
                DynamicObjectCollection filterResult = entityDataObjoct.Clone();
                filterResult.Clear();
                entityDataObjoct.Where(x => Convert.ToBoolean(x["FFOCUS"]) && Convert.ToInt32(x["FDayPlanWorkID"]) > 0).ToList().ForEach(x => filterResult.Add(x));
                string FDayPlanWorkID = "";
                if (filterResult.Count() == 0)
                {
                    this.View.ShowMessage("请勾选需要锁定的日计划");
                }
                else
                {
                    foreach (var filter in filterResult)
                    {
                        FDayPlanWorkID += filter["FDayPlanWorkID"].ToString() + ",";
                    }
                    FDayPlanWorkID = FDayPlanWorkID.TrimEnd(',');
                    string sql = $"/*dialect*/update t1 set t1.FHLockedSub=1 from Sc_WorkBillSortBillSub t1 where t1.FID in ({FDayPlanWorkID})";
                    DBServiceHelper.Execute(Context, sql);
                }
                this.View.ShowMessage("操作成功");
                #endregion
            }
            catch (Exception ex)
            {
@@ -468,20 +495,41 @@
        /// </summary>
        public void RelieveLock()
        {
            int day = Convert.ToInt32(this.Model.GetValue("FLockDays"));
            //获取单据体信息
            Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity");
            #region 日期锁定
            //int day = Convert.ToInt32(this.Model.GetValue("FLockDays"));
            ////获取单据体信息
            //Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity");
            ////单据体信息转换为列表集合
            //DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity);
            //List<string> sqlList = new List<string>();
            //string sql = $"/*dialect*/update t1 set t1.FHLockedSub=0 from Sc_WorkBillSortBillSub t1  join Sc_WorkBillSortBillMain t2 on  t1.FID = t2.FID  where  FHMASTERDATE between  DATEADD(day,-1,getdate()) and DATEADD(day,{day - 1},getdate())";
            //DBServiceHelper.Execute(Context, sql);
            //SearchList();
            #endregion
            #region 选单锁定
            //单据体信息转换为列表集合
            Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity");
            DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity);
            List<string> sqlList = new List<string>();
            string sql = $"/*dialect*/update t1 set t1.FHLockedSub=0 from Sc_WorkBillSortBillSub t1  join Sc_WorkBillSortBillMain t2 on  t1.FID = t2.FID  where  FHMASTERDATE between  DATEADD(day,-1,getdate()) and DATEADD(day,{day - 1},getdate())";
            DBServiceHelper.Execute(Context, sql);
            //foreach (var item in entityDataObjoct)
            //{
            //    sql = $"/*dialect*/update t1 set t1.FHLockedSub=0 from Sc_WorkBillSortBillSub t1  join Sc_WorkBillSortBillMain t2 on  t1.FID = t2.FID  where  FHMASTERDATE between  DATEADD(day,-1,getdate()) and DATEADD(day,{day - 1},getdate())   and t1.FID = { Convert.ToString(item["FDayPlanWorkID"])} ";
            //    sqlList.Add(sql);
            //}
            SearchList();
            DynamicObjectCollection filterResult = entityDataObjoct.Clone();
            filterResult.Clear();
            entityDataObjoct.Where(x => Convert.ToBoolean(x["FFOCUS"]) && Convert.ToInt32(x["FDayPlanWorkID"]) > 0).ToList().ForEach(x => filterResult.Add(x));
            string FDayPlanWorkID = "";
            if (filterResult.Count() == 0)
            {
                this.View.ShowMessage("请勾选需要解锁的日计划");
            }
            else
            {
                foreach (var filter in filterResult)
                {
                    FDayPlanWorkID += filter["FDayPlanWorkID"].ToString() + ",";
                }
                FDayPlanWorkID = FDayPlanWorkID.TrimEnd(',');
                string sql = $"/*dialect*/update t1 set t1.FHLockedSub=0 from Sc_WorkBillSortBillSub t1 where t1.FID in ({FDayPlanWorkID})";
                DBServiceHelper.Execute(Context, sql);
            }
            #endregion
            this.View.ShowMessage("操作成功");
        }
@@ -551,7 +599,7 @@
/*dialect*/
SELECT FID FROM SC_WORKBILLSORTBILLMAIN A 
WHERE FSCORDERNO = '{0}' AND FSRCBILLENTRYSEQ ='{1}' AND FHSOURCEID='{2}'"
, Convert.ToString(current["FSCOrderNo"]), Convert.ToString(current["FSRCBILLENTRYSEQ"]), Convert.ToString(current["FResourcesId_Id"]));
        , Convert.ToString(current["FSCOrderNo"]), Convert.ToString(current["FSRCBILLENTRYSEQ"]), Convert.ToString(current["FResourcesId_Id"]));
                int _FDayPlanWorkID = DBServiceHelper.ExecuteScalar<int>(Context, _sql, 0);
                if (_FDayPlanWorkID > 0)
                {
@@ -793,16 +841,16 @@
                var resuult = "";
                try
                {
                    // 需要捕获错误,以确保处理结束时,关闭进度滚动界面
                    // 引入功能实际处理函数
                    resuult = this.CompleteSetAnalysisByDataTable();
            // 需要捕获错误,以确保处理结束时,关闭进度滚动界面
            // 引入功能实际处理函数
            resuult = this.CompleteSetAnalysisByDataTable();
                }
                finally
                {
                    // 确保标记进度已经到达100%
                    this.View.Session["ProcessRateValue"] = 100;
                    // 引入完毕,关闭进度显示页面
                    var processView = this.View.GetView(processForm.PageId);
            // 确保标记进度已经到达100%
            this.View.Session["ProcessRateValue"] = 100;
            // 引入完毕,关闭进度显示页面
            var processView = this.View.GetView(processForm.PageId);
                    if (processView != null)
                    {
                        processView.Close();
@@ -839,16 +887,16 @@
                var resuult = "";
                try
                {
                    // 需要捕获错误,以确保处理结束时,关闭进度滚动界面
                    // 引入功能实际处理函数
                    resuult = this.CompleteSetAnalysisByDataTableBom();
            // 需要捕获错误,以确保处理结束时,关闭进度滚动界面
            // 引入功能实际处理函数
            resuult = this.CompleteSetAnalysisByDataTableBom();
                }
                finally
                {
                    // 确保标记进度已经到达100%
                    this.View.Session["ProcessRateValue"] = 100;
                    // 引入完毕,关闭进度显示页面
                    var processView = this.View.GetView(processForm.PageId);
            // 确保标记进度已经到达100%
            this.View.Session["ProcessRateValue"] = 100;
            // 引入完毕,关闭进度显示页面
            var processView = this.View.GetView(processForm.PageId);
                    if (processView != null)
                    {
                        processView.Close();
@@ -933,7 +981,7 @@
");
                List<PRD_WorkHouseCompar> pRD_WorkHouseCompar = ds.ToModelList<PRD_WorkHouseCompar>();
                int i = 1;//用于进度条的加载
                //日计划+生产订单子表编码ID
                          //日计划+生产订单子表编码ID
                var DatePlanList = BomList.GroupBy(p => new { p.FHMASTERDATE, p.FPRDMOENTYID }).Select(x => new PRD_PPBOM { FHMASTERDATE = x.Key.FHMASTERDATE, FPRDMOENTYID = x.Key.FPRDMOENTYID }).ToList();
                //取应发数量 FMustQty 不要取值需求数量FNeedQty 领料数据
                string LLsql = string.Format(@"
@@ -982,7 +1030,7 @@
                        var _pRD_WorkHouseCompar = pRD_WorkHouseCompar.Where(c => /*c.FORGID == _item.FStockOrgId &&*/ c.FWORKSHOPID == _item.FHWorkShopID).ToList();
                        decimal jskcQty = 0;//用于计算
                        decimal jskcQty2 = 0;//用于计算当时那个计算节点的即时库存
                        //计算当前这几个仓库总的库存量
                                             //计算当前这几个仓库总的库存量
                        if (_pRD_WorkHouseCompar.Count > 0)
                        {
                            foreach (var _WorkHouse in _pRD_WorkHouseCompar)
@@ -1008,7 +1056,7 @@
                        decimal planNeed = _item.PlanCount; //不参与计算 用于记录
                        decimal need = _item.PlanCount;//参与计算
                        decimal FOccupyPickedCount = 0;//占用领料单数量
                        //找到领用数量
                                                       //找到领用数量
                        var _DayPlanPickedModel = DayPlanPickedModel.Where(c => c.FPRDMOENTYID == _item.FPRDMOENTYID && c.FMATERIALID == _item.FMATERIALID2).FirstOrDefault();
                        if (_DayPlanPickedModel.FRemainPickedQty >= need)
                        {
@@ -1247,7 +1295,7 @@
                    jdtmmm++;
                }
                insertDT.EndLoadData(); // 灌入数据结束
                //插入之前执行下清空语句(测试是否能够防止重复生成)
                                        //插入之前执行下清空语句(测试是否能够防止重复生成)
                string deletesql = $"delete from JIT_MOMaterReadysBill  where FHICMOINTERID  in ({fDayPlanFids}) ";
                DBServiceHelper.Execute(Context, deletesql);
                DBServiceHelper.BulkInserts(this.Context, string.Empty, string.Empty, insertDT); // 批量插入到数据库
@@ -1533,8 +1581,8 @@
                }
                insertDT.EndLoadData(); // 灌入数据结束
                DBServiceHelper.BulkInserts(this.Context, string.Empty, string.Empty, insertDT);// 批量插入到数据库
                //DBServiceHelper.ExecuteBatch(Context, sqlList);
                //执行完成后 更新日计划工单状态
                                                                                                //DBServiceHelper.ExecuteBatch(Context, sqlList);
                                                                                                //执行完成后 更新日计划工单状态
                DBServiceHelper.Execute(Context, @"
/*dialect*/update Sc_WorkBillSortBillSub set FCompletebom = '未齐套' where FEntryID IN (select distinct FHICMOEntryID from JIT_MOMaterReadysBomBill where isnull(FCOMPLETE,'未齐套') ='未齐套')
");
@@ -1651,7 +1699,7 @@
t7 on t4.F_DB = t7.FENTRYID
where t1.FDOCUMENTSTATUS not in ('E')  and ta.FSTATUS  in (1,2,3,4)
" + sqlwhere + "  " +
"  order by FHSourceID,t1.FPRIORITY";
        "  order by FHSourceID,t1.FPRIORITY";
                //                sql = @"/*dialect*/
                //                                  select t2.FUnitId,
                //                                 t1.*,ta.FSTATUS,tq.FNoStockInQty,isnull((select SUM(isnull(FNotProductNum,0)) from SC_WORKBILLSORTBILLSub t2 where t2.FID = t1.FID and DATEDIFF(D,FHMASTERDATE,GETDATE())>0),0)FNotProductNum ,isnull((select SUM(isnull(FHQTY,0)) from SC_WORKBILLSORTBILLSub t2 where t2.FID = t1.FID and DATEDIFF(D,FHMASTERDATE,GETDATE())>0),0)FQTYLS 
@@ -1862,7 +1910,7 @@
t7 on t4.F_DB = t7.FENTRYID
where t1.FDOCUMENTSTATUS not in ('E')  and ta.FSTATUS  in (1,2,3,4)
" + sqlwhere + "  " +
"  order by FHSourceID,t1.FPRIORITY";
        "  order by FHSourceID,t1.FPRIORITY";
                //                sql = @"/*dialect*/
                //                                  select 
@@ -2070,7 +2118,7 @@
t7 on t4.F_DB = t7.FENTRYID
where t1.FDOCUMENTSTATUS not in ('E')  and ta.FSTATUS  in (1,2,3,4)
" + sqlwhere + "  " +
"  order by FHSourceID,t1.FPRIORITY";
        "  order by FHSourceID,t1.FPRIORITY";
                DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
                DateTime DateNow = DateTime.Now;//获取当前日期
                this.Model.DeleteEntryData("FEntity");
@@ -2430,16 +2478,16 @@
                var resuult = "";
                try
                {
                    // 需要捕获错误,以确保处理结束时,关闭进度滚动界面
                    // 引入功能实际处理函数
                    resuult = this.ExtractionTL();
            // 需要捕获错误,以确保处理结束时,关闭进度滚动界面
            // 引入功能实际处理函数
            resuult = this.ExtractionTL();
                }
                finally
                {
                    // 确保标记进度已经到达100%
                    this.View.Session["ProcessRateValue"] = 100;
                    // 引入完毕,关闭进度显示页面
                    var processView = this.View.GetView(processForm.PageId);
            // 确保标记进度已经到达100%
            this.View.Session["ProcessRateValue"] = 100;
            // 引入完毕,关闭进度显示页面
            var processView = this.View.GetView(processForm.PageId);
                    if (processView != null)
                    {
                        processView.Close();
@@ -2472,7 +2520,7 @@
                LogService.Write($"提料计划重算 车间:{fProWorkShopId},组织:{fPrdOrgId}");
                Stopwatch sw = new Stopwatch();
                sw.Start();//开始计时
                //提料计划预处理 清理提料计划单数据 更新采购订单提料计划数量 并且查询出需要进行运算的数据
                           //提料计划预处理 清理提料计划单数据 更新采购订单提料计划数量 并且查询出需要进行运算的数据
                string sql = string.Format($"/*dialect*/exec PROC_JIT_TLPLANYCL '{fProWorkShopId}','{fPrdOrgId}'");
                List<DayPlanPpbom> DayPlanPpbom = DBServiceHelper.ExecuteDataSet(Context, sql).ToModelList<DayPlanPpbom>();
                if (DayPlanPpbom.Count == 0)
@@ -2871,16 +2919,16 @@
                var resuult = "";
                try
                {
                    // 需要捕获错误,以确保处理结束时,关闭进度滚动界面
                    // 引入功能实际处理函数
                    resuult = this.ExtractionYL();
            // 需要捕获错误,以确保处理结束时,关闭进度滚动界面
            // 引入功能实际处理函数
            resuult = this.ExtractionYL();
                }
                finally
                {
                    // 确保标记进度已经到达100%
                    this.View.Session["ProcessRateValue"] = 100;
                    // 引入完毕,关闭进度显示页面
                    var processView = this.View.GetView(processForm.PageId);
            // 确保标记进度已经到达100%
            this.View.Session["ProcessRateValue"] = 100;
            // 引入完毕,关闭进度显示页面
            var processView = this.View.GetView(processForm.PageId);
                    if (processView != null)
                    {
                        processView.Close();
@@ -3447,34 +3495,34 @@
                        if (returnData is ListSelectedRowCollection)
                        {
                            ListSelectedRowCollection listSelectedRowCollection = returnData as ListSelectedRowCollection;
                            //LogHelper.Info("生产计划平台选单 行数" + listSelectedRowCollection.Count().ToString());
                            if (listSelectedRowCollection != null)
                    //LogHelper.Info("生产计划平台选单 行数" + listSelectedRowCollection.Count().ToString());
                    if (listSelectedRowCollection != null)
                            {
                                var ret = "";
                                foreach (var listSelectedRow in listSelectedRowCollection)
                                {
                                    //if (entityDataObjoct.Where(x => x["FSRCBILLENTRYSEQ"].ToString() == listSelectedRow.DataRow["t1_FSeq"].ToString() && x["FSCOrderNo"].ToString() == listSelectedRow.DataRow["FBillNo"].ToString()).Count() > 0)
                                    //{
                                    //    //LogHelper.Info("生产计划平台选单:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号," + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",已选");
                                    //    ret += "生产订单号:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号," + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",已选" + "\n";
                                    //    continue;
                                    //}
                                    //string sql = $"select FID from Sc_WorkBillSortBillMain where FDOCUMENTSTATUS NOT IN ('E') and FPRDMOENTYID = {listSelectedRow.DataRow["t1_FENTRYID"].ToString()}";
                                    //int day = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
                                    //if (day > 0)
                                    //{
                                    //    ret += "生产订单号:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号:" + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",已存在日计划\n";
                                    //    continue;
                                    //}
                                    ////今天以前的数据是显示不出来的
                                    //sql = $"select DATEDIFF(d,getdate(),FPlanStartDate)days from T_PRD_MOENTRY where FENTRYID = {listSelectedRow.DataRow["t1_FENTRYID"].ToString()}";
                                    //day = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
                                    //if (day < 0)
                                    //{
                                    //    ret += "计划开工日期在今天之前,生产订单号:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号:" + listSelectedRow.DataRow["t1_FSeq"].ToString() + "\n";
                                    //    continue;
                            //if (entityDataObjoct.Where(x => x["FSRCBILLENTRYSEQ"].ToString() == listSelectedRow.DataRow["t1_FSeq"].ToString() && x["FSCOrderNo"].ToString() == listSelectedRow.DataRow["FBillNo"].ToString()).Count() > 0)
                            //{
                            //    //LogHelper.Info("生产计划平台选单:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号," + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",已选");
                            //    ret += "生产订单号:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号," + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",已选" + "\n";
                            //    continue;
                            //}
                            //string sql = $"select FID from Sc_WorkBillSortBillMain where FDOCUMENTSTATUS NOT IN ('E') and FPRDMOENTYID = {listSelectedRow.DataRow["t1_FENTRYID"].ToString()}";
                            //int day = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
                            //if (day > 0)
                            //{
                            //    ret += "生产订单号:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号:" + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",已存在日计划\n";
                            //    continue;
                            //}
                            ////今天以前的数据是显示不出来的
                            //sql = $"select DATEDIFF(d,getdate(),FPlanStartDate)days from T_PRD_MOENTRY where FENTRYID = {listSelectedRow.DataRow["t1_FENTRYID"].ToString()}";
                            //day = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
                            //if (day < 0)
                            //{
                            //    ret += "计划开工日期在今天之前,生产订单号:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号:" + listSelectedRow.DataRow["t1_FSeq"].ToString() + "\n";
                            //    continue;
                                    string sql = @"SELECT T2.FBILLNO,T2.FPRDORGID,T1.FSEQ,T1.FMATERIALID,TA.FSTATUS,T1.FUNITID,T1.FQTY,T1.FWORKSHOPID,T1.FPLANSTARTDATE,T1.FXQD
                            string sql = @"SELECT T2.FBILLNO,T2.FPRDORGID,T1.FSEQ,T1.FMATERIALID,TA.FSTATUS,T1.FUNITID,T1.FQTY,T1.FWORKSHOPID,T1.FPLANSTARTDATE,T1.FXQD
,T1.FSALEORDERNO,T3.FPLANDELIVERYDATE,T3.FQTY AS FSALEORDERQTY,TQ.FNoStockInQty FROM T_PRD_MOENTRY T1
JOIN T_PRD_MOENTRY_A TA ON T1.FENTRYID =TA.FENTRYID
JOIN T_PRD_MOENTRY_Q TQ on t1.FENTRYID = TQ.FENTRYID
@@ -3501,7 +3549,7 @@
                                        this.View.Model.SetValue("FNoStockInQty", dt.Rows[0]["FNoStockInQty"].ToString(), Fseq);//未入库数量 
                                        this.View.Model.SetValue("FDeliveryDate", dt.Rows[0]["FPLANDELIVERYDATE"]?.ToString(), Fseq);//交货日期
                                                                                                                                     //this.View.Model.SetValue("FT" + day.ToString(), dt.Rows[0]["FQTY"]?.ToString(), Fseq);
                                        Fseq++;
                                Fseq++;
                                    }
                                    else
                                    {
@@ -3525,36 +3573,36 @@
                        if (returnData is ListSelectedRowCollection)
                        {
                            ListSelectedRowCollection listSelectedRowCollection = returnData as ListSelectedRowCollection;
                            //LogHelper.Info("生产计划平台选单 行数" + listSelectedRowCollection.Count().ToString());
                            if (listSelectedRowCollection != null)
                    //LogHelper.Info("生产计划平台选单 行数" + listSelectedRowCollection.Count().ToString());
                    if (listSelectedRowCollection != null)
                            {
                                var ret = "";
                                foreach (var listSelectedRow in listSelectedRowCollection)
                                {
                                    //if (entityDataObjoct.Where(x => x["FSRCBILLENTRYSEQ"].ToString() == listSelectedRow.DataRow["t1_FSeq"].ToString() && x["FSCOrderNo"].ToString() == listSelectedRow.DataRow["FBillNo"].ToString()).Count() > 0)
                                    //{
                                    //    //LogHelper.Info("生产计划平台选单:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号," + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",已选");
                                    //    ret += "委外订单号:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号," + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",已选" + "\n";
                                    //    continue;
                                    //}
                                    //string sql = $"select FID from Sc_WorkBillSortBillMain where FDOCUMENTSTATUS NOT IN ('E') and FPRDMOENTYID = {listSelectedRow.DataRow["t1_FENTRYID"].ToString()}";
                                    //int day = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
                                    //if (day > 0)
                                    //{
                                    //    //LogHelper.Info("生产计划平台选单:日期太靠后," + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号, " + listSelectedRow.DataRow["t1_FSeq"].ToString() + ", day= " + day.ToString());
                                    //    ret += "委外订单号:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号:" + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",已存在日计划\n";
                                    //    continue;
                                    //}
                                    ////今天以前的数据是显示不出来的
                                    //sql = $"select DATEDIFF(d,getdate(),FPlanStartDate)days from T_SUB_REQORDERENTRY where FENTRYID = {listSelectedRow.DataRow["t1_FENTRYID"].ToString()}";
                                    //day = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
                                    //if (day < 0)
                                    //{
                                    //    //LogHelper.Info("生产计划平台选单:日期太靠后," + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号, " + listSelectedRow.DataRow["t1_FSeq"].ToString() + ", day= " + day.ToString());
                                    //    ret += "计划开工日期在今天之前,委外订单号:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号:" + listSelectedRow.DataRow["t1_FSeq"].ToString() + "\n";
                                    //    continue;
                                    //}
                                    this.Model.CreateNewEntryRow("FEntity");
                            //if (entityDataObjoct.Where(x => x["FSRCBILLENTRYSEQ"].ToString() == listSelectedRow.DataRow["t1_FSeq"].ToString() && x["FSCOrderNo"].ToString() == listSelectedRow.DataRow["FBillNo"].ToString()).Count() > 0)
                            //{
                            //    //LogHelper.Info("生产计划平台选单:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号," + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",已选");
                            //    ret += "委外订单号:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号," + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",已选" + "\n";
                            //    continue;
                            //}
                            //string sql = $"select FID from Sc_WorkBillSortBillMain where FDOCUMENTSTATUS NOT IN ('E') and FPRDMOENTYID = {listSelectedRow.DataRow["t1_FENTRYID"].ToString()}";
                            //int day = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
                            //if (day > 0)
                            //{
                            //    //LogHelper.Info("生产计划平台选单:日期太靠后," + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号, " + listSelectedRow.DataRow["t1_FSeq"].ToString() + ", day= " + day.ToString());
                            //    ret += "委外订单号:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号:" + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",已存在日计划\n";
                            //    continue;
                            //}
                            ////今天以前的数据是显示不出来的
                            //sql = $"select DATEDIFF(d,getdate(),FPlanStartDate)days from T_SUB_REQORDERENTRY where FENTRYID = {listSelectedRow.DataRow["t1_FENTRYID"].ToString()}";
                            //day = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
                            //if (day < 0)
                            //{
                            //    //LogHelper.Info("生产计划平台选单:日期太靠后," + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号, " + listSelectedRow.DataRow["t1_FSeq"].ToString() + ", day= " + day.ToString());
                            //    ret += "计划开工日期在今天之前,委外订单号:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号:" + listSelectedRow.DataRow["t1_FSeq"].ToString() + "\n";
                            //    continue;
                            //}
                            this.Model.CreateNewEntryRow("FEntity");
                                    this.View.Model.SetItemValueByNumber("FORGID", "100", Fseq);
                                    this.View.Model.SetValue("FOrderType", "委外订单", Fseq);
                                    this.View.Model.SetValue("FSCOrderNo", listSelectedRow.DataRow["FBillNo"].ToString(), Fseq);
@@ -3564,9 +3612,9 @@
                                    this.View.Model.SetValue("FOrderQuantity", listSelectedRow.DataRow["FQty"].ToString(), Fseq);
                                    this.View.Model.SetValue("FProductWorkShopId", 0, Fseq);
                                    this.View.Model.SetValue("FOrderLevel", "3", Fseq);
                                    //this.View.Model.SetValue("FBzDate", DateTime.Now.AddDays(day).ToShortDateString(), Fseq);//预计开工日期
                                    //this.View.Model.SetValue("FT" + day.ToString(), listSelectedRow.DataRow["FQty"].ToString(), Fseq);
                                    Fseq++;
                            //this.View.Model.SetValue("FBzDate", DateTime.Now.AddDays(day).ToShortDateString(), Fseq);//预计开工日期
                            //this.View.Model.SetValue("FT" + day.ToString(), listSelectedRow.DataRow["FQty"].ToString(), Fseq);
                            Fseq++;
                                }
                                if (ret != "")
                                {
@@ -3589,34 +3637,34 @@
                        if (returnData is ListSelectedRowCollection)
                        {
                            ListSelectedRowCollection listSelectedRowCollection = returnData as ListSelectedRowCollection;
                            //LogHelper.Info("生产计划平台选单 行数" + listSelectedRowCollection.Count().ToString());
                            if (listSelectedRowCollection != null)
                    //LogHelper.Info("生产计划平台选单 行数" + listSelectedRowCollection.Count().ToString());
                    if (listSelectedRowCollection != null)
                            {
                                var ret = "";
                                foreach (var listSelectedRow in listSelectedRowCollection)
                                {
                                    //if (entityDataObjoct.Where(x => x["FSRCBILLENTRYSEQ"].ToString() == listSelectedRow.DataRow["t1_FSeq"].ToString() && x["FSCOrderNo"].ToString() == listSelectedRow.DataRow["FBillNo"].ToString()).Count() > 0)
                                    //{
                                    //    //LogHelper.Info("生产计划平台选单:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号," + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",已选");
                                    //    ret += "生产订单号:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号," + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",已选" + "\n";
                                    //    continue;
                                    //}
                                    //string sql = $"select FID from Sc_WorkBillSortBillMain where FDOCUMENTSTATUS NOT IN ('E') and FPRDMOENTYID = {listSelectedRow.DataRow["t1_FENTRYID"].ToString()}";
                                    //int day = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
                                    //if (day > 0)
                                    //{
                                    //    ret += "生产订单号:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号:" + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",已存在日计划\n";
                                    //    continue;
                                    //}
                                    ////今天以前的数据是显示不出来的
                                    //sql = $"select DATEDIFF(d,getdate(),FPlanStartDate)days from T_PRD_MOENTRY where FENTRYID = {listSelectedRow.DataRow["t1_FENTRYID"].ToString()}";
                                    //day = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
                                    //if (day < 0)
                                    //{
                                    //    ret += "计划开工日期在今天之前,生产订单号:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号:" + listSelectedRow.DataRow["t1_FSeq"].ToString() + "\n";
                                    //    continue;
                                    //}
                                    string sql = @"SELECT T2.FBILLNO,T2.FPRDORGID,T1.FSEQ,T1.FMATERIALID,TA.FSTATUS,T1.FUNITID,T1.FQTY,T1.FWORKSHOPID,T1.FPLANSTARTDATE
                            //if (entityDataObjoct.Where(x => x["FSRCBILLENTRYSEQ"].ToString() == listSelectedRow.DataRow["t1_FSeq"].ToString() && x["FSCOrderNo"].ToString() == listSelectedRow.DataRow["FBillNo"].ToString()).Count() > 0)
                            //{
                            //    //LogHelper.Info("生产计划平台选单:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号," + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",已选");
                            //    ret += "生产订单号:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号," + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",已选" + "\n";
                            //    continue;
                            //}
                            //string sql = $"select FID from Sc_WorkBillSortBillMain where FDOCUMENTSTATUS NOT IN ('E') and FPRDMOENTYID = {listSelectedRow.DataRow["t1_FENTRYID"].ToString()}";
                            //int day = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
                            //if (day > 0)
                            //{
                            //    ret += "生产订单号:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号:" + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",已存在日计划\n";
                            //    continue;
                            //}
                            ////今天以前的数据是显示不出来的
                            //sql = $"select DATEDIFF(d,getdate(),FPlanStartDate)days from T_PRD_MOENTRY where FENTRYID = {listSelectedRow.DataRow["t1_FENTRYID"].ToString()}";
                            //day = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
                            //if (day < 0)
                            //{
                            //    ret += "计划开工日期在今天之前,生产订单号:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 行号:" + listSelectedRow.DataRow["t1_FSeq"].ToString() + "\n";
                            //    continue;
                            //}
                            string sql = @"SELECT T2.FBILLNO,T2.FPRDORGID,T1.FSEQ,T1.FMATERIALID,TA.FSTATUS,T1.FUNITID,T1.FQTY,T1.FWORKSHOPID,T1.FPLANSTARTDATE
,T1.FSALEORDERNO,T3.FPLANDELIVERYDATE,T3.FQTY AS FSALEORDERQTY,TQ.FNoStockInQty FROM T_PRD_MOENTRY T1
JOIN T_PRD_MOENTRY_A TA ON T1.FENTRYID =TA.FENTRYID
JOIN T_PRD_MOENTRY_Q TQ on t1.FENTRYID = TQ.FENTRYID
@@ -3643,7 +3691,7 @@
                                        this.View.Model.SetValue("FNoStockInQty", dt.Rows[0]["FNoStockInQty"].ToString(), Fseq);//未入库数量 
                                        this.View.Model.SetValue("FDeliveryDate", dt.Rows[0]["FPLANDELIVERYDATE"]?.ToString(), Fseq);//交货日期
                                                                                                                                     //this.View.Model.SetValue("FT" + day.ToString(), dt.Rows[0]["FQTY"]?.ToString(), Fseq);
                                        Fseq++;
                                Fseq++;
                                    }
                                    else
                                    {
@@ -3788,16 +3836,16 @@
                var resuult = "";
                try
                {
                    // 需要捕获错误,以确保处理结束时,关闭进度滚动界面
                    // 引入功能实际处理函数
                    resuult = this.btnReFarsh();
            // 需要捕获错误,以确保处理结束时,关闭进度滚动界面
            // 引入功能实际处理函数
            resuult = this.btnReFarsh();
                }
                finally
                {
                    // 确保标记进度已经到达100%
                    this.View.Session["ProcessRateValue"] = 100;
                    // 引入完毕,关闭进度显示页面
                    var processView = this.View.GetView(processForm.PageId);
            // 确保标记进度已经到达100%
            this.View.Session["ProcessRateValue"] = 100;
            // 引入完毕,关闭进度显示页面
            var processView = this.View.GetView(processForm.PageId);
                    if (processView != null)
                    {
                        processView.Close();
@@ -3927,7 +3975,7 @@
                        var _pRD_WorkHouseCompar = pRD_WorkHouseCompar.Where(c => /*c.FORGID == _item.FStockOrgId &&*/ c.FWORKSHOPID == _item.FHWorkShopID).ToList();
                        decimal jskcQty = 0;//用于计算
                        decimal jskcQty2 = 0;//用于计算当时那个计算节点的即时库存
                        //计算当前这几个仓库总的库存量
                                             //计算当前这几个仓库总的库存量
                        if (_pRD_WorkHouseCompar.Count > 0)
                        {
                            foreach (var _WorkHouse in _pRD_WorkHouseCompar)
@@ -3953,7 +4001,7 @@
                        decimal planNeed = _item.PlanCount; //不参与计算 用于记录
                        decimal need = _item.PlanCount;//参与计算
                        decimal FOccupyPickedCount = 0;//占用领料单数量
                        //找到领用数量
                                                       //找到领用数量
                        var _DayPlanPickedModel = DayPlanPickedModel.Where(c => c.FPRDMOENTYID == _item.FPRDMOENTYID && c.FMATERIALID == _item.FMATERIALID2).FirstOrDefault();
                        if (_DayPlanPickedModel.FRemainPickedQty >= need)
                        {
@@ -4193,7 +4241,7 @@
                    jdtmmm++;
                }
                insertDT.EndLoadData(); // 灌入数据结束
                //插入之前执行下清空语句(测试是否能够防止重复生成)
                                        //插入之前执行下清空语句(测试是否能够防止重复生成)
                string deletesql = $"delete from JIT_MOMaterReadysBill  where FHICMOINTERID  in ({fDayPlanFids}) ";
                LogService.Write("刷新按钮 齐套分析批量插入到数据库用时:" + sw.Elapsed); // 批量插入到数据库
                DBServiceHelper.BulkInserts(this.Context, string.Empty, string.Empty, insertDT);
@@ -4900,7 +4948,7 @@
            }
            int fLockDays = Convert.ToInt32(this.Model.GetValue("FLockDays"));//引入天数
            string sql = $"/*dialect*/ exec proc_jit_zdpc {fPrdOrgId},{fProWorkShopId},{fLockDays}";
            LogService.Write("自动排产sql:"+sql);
            LogService.Write("自动排产sql:" + sql);
            DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql);
            if (ds.Tables[0].Rows[0][0].ToString().Contains("失败_生产订单没有维护生产资源"))
            {
@@ -4930,20 +4978,32 @@
                }
            }
            DataTable dt = ds.Tables[0];//生产订单信息结果集
            if (dt == null || dt.Rows.Count == 0)
            {
                errMessege += $"操作失败,未匹配到需要排产的生产订单\r\n";
                this.View.ShowErrMessage("操作失败,没有维护产能\r\n" + errMessege);
                return;
            }
            List<string> fsczyidList = dt.AsEnumerable().Select(r => r["FSCZYID"].ToString()).Distinct().ToList();//生产资源集合
            foreach (var item in fsczyidList)//循环生产资源
            {
                DataRow[] drs = dt.Select("FSCZYID =" + item);//筛选出当前生产资源生产订单数据
                string _sql = string.Format(@"
/*dialect*/ 
select FCalUserId,FCalUserType,FShiftId,FIsWorkTime,FDay,FDateStyle,c.FALLHOURS ,c.FALLHOURS FALLHOURSCONST,b.FENTRYID from T_ENG_WORKCAL a
select FCalUserId,FCalUserType,FShiftId,FIsWorkTime,FDay,FDateStyle,(c.FALLHOURS-isnull(tt.FHOURS,0)) as FALLHOURS,(c.FALLHOURS-isnull(tt.FHOURS,0))  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 --班制表
left join
(
select sum(FHOURS)FHOURS ,FGZRLENTRYID from Sc_WorkBillSortBillSub
where FGZRLENTRYID >0  and  FHLockedSub = 1
group by FGZRLENTRYID
) tt on b.FENTRYID = tt.FGZRLENTRYID
where FCalUserType ='ENG_RepetitiveProductLine'
and FDateStyle = 1 --是否工作日
and FIsWorkTime = 1 --是否生产
and DATEDIFF(D,getdate(),FDAY)>=0
and c.FALLHOURS >0
and (c.FALLHOURS-isnull(tt.FHOURS,0))  >0
and FCalUserId = {0}", item);
                LogService.Write("产能sql:" + _sql);
                var engWorkcalfulldataList = DBServiceHelper.ExecuteDataSet(Context, _sql).ToModelList<ENG_WORKCALFULLDATA>();//所有可以用于排产的日期
@@ -5047,7 +5107,8 @@
            {
                this.View.ShowMessage(errMessege);
            }
            else {
            else
            {
                this.View.ShowMessage("操作成功");
            }
        }
MES/src/BLL/Demo.Report/Demo.Report.csproj
@@ -129,6 +129,7 @@
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="PRD\prd_CustomOneReport.cs" />
    <Compile Include="PRD\prd_CompleteReport.cs" />
    <Compile Include="PRD\prd_SupplierTimelyDeliveryRate.cs" />
    <Compile Include="PRD\prd_SupplierDeliveryBatchPassRate.cs" />
MES/src/BLL/Demo.Report/PRD/prd_CompleteReport.cs
@@ -84,7 +84,7 @@
            TableName = tableName;
            // 取数SQL
            // FID, FEntryId, 编号、状态、物料、数量、单位、单位精度、单价、价税合计 ,t1M_L.FNAME as FMaterialName
            string sql = string.Format(@"/*dialect*/exec PR_Complete_Report '{0}','{1}', '{2}','{3}', '{4}','{5}','{6}'", TableName, FXQD, FMOBILLNO, FOrgId, FWORKSHOPID, FSCZYID, FMATERIALID);
            string sql = string.Format(@"/*dialect*/exec JIT_PR_Complete_Report '{0}','{1}', '{2}','{3}', '{4}','{5}','{6}'", TableName, FXQD, FMOBILLNO, FOrgId, FWORKSHOPID, FSCZYID, FMATERIALID);
            LogService.Write("齐套报表sql:" + sql);
            DBServiceHelper.Execute(this.Context, sql);
MES/src/BLL/Demo.Report/PRD/prd_CustomOneReport.cs
New file
@@ -0,0 +1,130 @@
using Kingdee.BOS;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Contracts.Report;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Orm.DataEntity;
using System.ComponentModel;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using System.Data;
using Demo.BillView.PRD;
using System.Collections.Generic;
using System;
namespace Demo.Report
{
    /// <summary>
    /// 单阶按单欠料表1
    /// </summary>
    [Description("单阶按单欠料表1")]
    [HotUpdate]
    public class prd_CustomOneReport : SysReportBaseService
    {
        string TableName = "";
        public override void Initialize()
        {
            base.Initialize();
            // 简单账表类型:普通、树形、分页
            this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;
            this.IsCreateTempTableByPlugin = true;
            //取代码中配置的列
            this.ReportProperty.IsUIDesignerColumns = false;
            //是否分组汇总
            this.ReportProperty.IsGroupSummary = true;
        }
        public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
        {
            //@FTEMPNAME NVARCHAR(50),
            //@FROGID INT,--组织
            //@FBEGINDATE DATETIME, --
            //@FENDDATE DATETIME , --
            //@FXQD NVARCHAR(20), --需求单号
            //@FMOBILLNO NVARCHAR(20),--生产订单号
            //@FUSERID INT, --责任人
            //@FMATERIALMODEL INT,--物料属性
            //@FMATERIALID INT --物料
            base.BuilderReportSqlAndTempTable(filter, tableName);
            TableName = tableName;
            DynamicObject customFil = filter.FilterParameter.CustomFilter;
            string FOrgId = Convert.ToString(customFil["FOrgId_Id"]);//组织
            string FBeginDate = customFil["FBeginDate"]?.ToString(); //开始日期
            string FEndDate = customFil["FEndDate"]?.ToString(); //结束日期
            string FXQD = Convert.ToString(customFil["FXQD"]);//需求单号
            string FMOBILLNO = Convert.ToString(customFil["FMOBILLNO"]);//生产订单号
            string FUSERID = "0";
            string FMATERIALMODEL = "0";
            string FMATERIALID = Convert.ToString(customFil["FMATERIALID_Id"]);//物料
            string sql = string.Format($"/*dialect*/ EXEC proc_jit_CustomOneReport '{tableName}','{FOrgId}','{FBeginDate}','{FEndDate}','{FXQD}','{FMOBILLNO}','{FUSERID}','{FMATERIALMODEL}','{FMATERIALID}'");
            LogService.Write("单阶按单欠料表1のsql:" + sql);
            DBUtils.Execute(this.Context, sql);
        }
        public override ReportHeader GetReportHeaders(IRptParams filter)
        {
            string sql = $"select * from {TableName}";
            //LogService.Write(sql);
            DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
            ReportHeader header = new ReportHeader();
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                //LogService.Write(dt.Columns[i].ColumnName);
                if (dt.Columns[i].ColumnName.Contains("ID"))
                    continue;
                if (dt.Columns[i].ColumnName.Contains("日期"))
                    header.AddChild(dt.Columns[i].ColumnName, new LocaleValue(dt.Columns[i].ColumnName), SqlStorageType.Sqlvarchar);
                if (dt.Columns[i].ColumnName.Contains("时间"))
                    header.AddChild(dt.Columns[i].ColumnName, new LocaleValue(dt.Columns[i].ColumnName), SqlStorageType.SqlDatetime);
                else if (dt.Columns[i].ColumnName.Contains("数量") || dt.Columns[i].ColumnName.Contains("数") || dt.Columns[i].ColumnName.Contains("量"))
                    header.AddChild(dt.Columns[i].ColumnName, new LocaleValue(dt.Columns[i].ColumnName), SqlStorageType.SqlDecimal);
                else
                    header.AddChild(dt.Columns[i].ColumnName, new LocaleValue(dt.Columns[i].ColumnName), SqlStorageType.Sqlvarchar);
            }
            return header;
        }
        //public override ReportTitles GetReportTitles(IRptParams filter)
        //{
        //    var result = base.GetReportTitles(filter);
        //    DynamicObject dyFilter = filter.FilterParameter.CustomFilter;
        //    if (dyFilter != null)
        //    {
        //        if (result == null)
        //        {
        //            result = new ReportTitles();
        //        }
        //    }
        //    string sql = $"exec [proc_jit_CustomOneReport] {TableName}";
        //    DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql);
        //    var orderSum = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
        //    var notCompleteSum = Convert.ToInt32(ds.Tables[1].Rows[0][0]);
        //    //            string sql = string.Format(@"
        //    ///*dialect*/
        //    //select count(*) as ros1 from
        //    //(
        //    //select distinct convert(nvarchar(20), 齐套分析时间, 23) as FDate, 生产订单号, 生产订单明细行号 from {0}
        //    //)t1", TableName);
        //    //            var orderSum = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
        //    //            sql = string.Format(@"
        //    ///*dialect*/
        //    //select count(*) as ros1 from
        //    //(
        //    //select distinct convert(nvarchar(20), 齐套分析时间, 23) as FDate, 生产订单号, 生产订单明细行号 from {0}
        //    //where 是否齐套 = '未齐套'
        //    //)t1", TableName);
        //    //            var notCompleteSum = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
        //    //var completeRat = (float)(orderSum - notCompleteSum) / orderSum;
        //    decimal completeRat;
        //    if (orderSum == 0)
        //        completeRat = 0;
        //    else
        //        completeRat = Math.Round(((decimal)((orderSum - notCompleteSum)) * 100 / orderSum), 2);
        //    var FCompleteRate = $"齐套订单数:{orderSum - notCompleteSum};总订单数:{orderSum};齐套率:{completeRat}%";
        //    DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
        //    var begindate = dyFilter["FBeginDate"]?.ToString() ?? "1990 - 01 - 01 00:00:00";
        //    var enddate = dyFilter["FEndDate"]?.ToString() ?? "9999 - 01 - 01 00:00:00";
        //    result.AddTitle("FBeginDate", begindate);
        //    result.AddTitle("FEndDate", enddate);
        //    result.AddTitle("FCompleteRate", FCompleteRate);
        //    return result;
        //}
    }
}