王 垚
2021-02-03 8f8bf1c2419cd76bcc2be603132336c25138b96b
正确答案
3个文件已修改
1个文件已添加
144 ■■■■ 已修改文件
src/BLL/Demo.BillView/Demo.BillView.csproj 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/PRD/PODemandPlanListFilter.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/PRD/ProCompleteAnalysisDetails.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/Demo.BillView.csproj
@@ -110,8 +110,17 @@
    <Reference Include="Kingdee.BOS.WinForm.KDS20Lib, Version=7.0.104.1, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\..\..\packages\ZD.Cloud.Common.7.2.3\lib\net452\Kingdee.BOS.WinForm.KDS20Lib.dll</HintPath>
    </Reference>
    <Reference Include="Kingdee.K3.BD.ServiceHelper">
      <HintPath>..\..\..\..\..\办公\K3Cloud\WebSite\bin\Kingdee.K3.BD.ServiceHelper.dll</HintPath>
    </Reference>
    <Reference Include="Kingdee.K3.Core, Version=7.2.904.6, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\..\..\packages\ZD.Cloud.Common.7.2.3\lib\net452\Kingdee.K3.Core.dll</HintPath>
    </Reference>
    <Reference Include="Kingdee.K3.MFG.Common.BusinessEntity">
      <HintPath>..\..\..\..\..\办公\K3Cloud\WebSite\bin\Kingdee.K3.MFG.Common.BusinessEntity.dll</HintPath>
    </Reference>
    <Reference Include="Kingdee.K3.MFG.ServiceHelper">
      <HintPath>..\..\..\..\..\办公\K3Cloud\WebSite\bin\Kingdee.K3.MFG.ServiceHelper.dll</HintPath>
    </Reference>
    <Reference Include="Kingdee.K3.Mobile.Business.PlugIn, Version=7.5.1507.2, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\..\..\packages\ZD.Cloud.Common.7.2.3\lib\net452\Kingdee.K3.Mobile.Business.PlugIn.dll</HintPath>
@@ -195,6 +204,7 @@
  </ItemGroup>
  <ItemGroup>
    <Compile Include="PRD\LogService.cs" />
    <Compile Include="PRD\PODemandPlanListFilter.cs" />
    <Compile Include="PRD\PODemandPlanListLoad.cs" />
    <Compile Include="PRD\ProTardinessDetails.cs" />
    <Compile Include="PRD\ProCompleteAnalysisMateriel.cs" />
src/BLL/Demo.BillView/PRD/PODemandPlanListFilter.cs
New file
@@ -0,0 +1,58 @@
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.K3.Core.MFG.EntityHelper;
using System.ComponentModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using Kingdee.K3.Core.BD.ServiceArgs;
using Kingdee.K3.MFG.Common.BusinessEntity.PRD;
using Kingdee.K3.BD.ServiceHelper;
using Kingdee.K3.Core.BD;
using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.Orm;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Log;
using Kingdee.K3.Core.MFG;
using Kingdee.BOS.Core.SqlBuilder;
using Kingdee.BOS.Core.Metadata;
using Kingdee.K3.MFG.ServiceHelper;
using Kingdee.BOS;
namespace Demo.BillView.PRD
{
    [Description("提料计划列表过滤")]
    [HotUpdate]
    public class PODemandPlanListFilter : AbstractListPlugIn
    {
        public override void PrepareFilterParameter(global::Kingdee.BOS.Core.List.PlugIn.Args.FilterArgs e)
        {
            base.PrepareFilterParameter(e);
            //如果过滤条件含有最新结果关键字,则在此基础上处理,以支持最新结果内置方案另存增加条件(关键字是根据生产订单状态过滤)
            if (e.FilterString.IsNullOrEmptyOrWhiteSpace())
            {
                int FSupplierId = GetSupplierId();
                if (FSupplierId > 0)
                    e.FilterString = " FSUPPLIERID IN (102629)";
            }
            else
            {
                int FSupplierId = GetSupplierId();
                if (FSupplierId > 0)
                    e.FilterString += " AND FSUPPLIERID IN (102629)";
            }
        }
        public int GetSupplierId()
        {
            long userId = this.Context.UserId;
            string sql = $"/*dialect*/ select FSupplierId from T_SEC_user a join T_SCP_USERDATA b on a.FUSERID = b.FUSERID where FUSERTYPE = 2 and a.FUSERID ={userId}";
            int FSupplierId = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
            return FSupplierId;
        }
    }
}
src/BLL/Demo.BillView/PRD/ProCompleteAnalysisDetails.cs
@@ -17,6 +17,9 @@
    public class ProCompleteAnalysisDetail : AbstractDynamicFormPlugIn
    {
        bool did = false;
        string FHMainICMOInterIDr = "";
        string FHMainICMOEntryID = "";
        string FHICMOInterID = "";
        public override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
@@ -29,9 +32,9 @@
            {
                if (did)
                    return;
                string FHMainICMOInterIDr = this.View.OpenParameter.GetCustomParameter("FHMainICMOInterID").ToString();//主生产订单主内码
                string FHMainICMOEntryID = this.View.OpenParameter.GetCustomParameter("FHMainICMOEntryID").ToString();// 主生产订单子内码
                string FHICMOInterID = this.View.OpenParameter.GetCustomParameter("FHICMOInterID").ToString();//日计划订单主内码
                  FHMainICMOInterIDr = this.View.OpenParameter.GetCustomParameter("FHMainICMOInterID").ToString();//主生产订单主内码
                  FHMainICMOEntryID = this.View.OpenParameter.GetCustomParameter("FHMainICMOEntryID").ToString();// 主生产订单子内码
                  FHICMOInterID = this.View.OpenParameter.GetCustomParameter("FHICMOInterID").ToString();//日计划订单主内码
                string sql = string.Format(@"/*dialect*/select * from JIT_MOMaterReadysBill where FHMainICMOInterIDr ='{0}' and FHMainICMOEntryID ='{1}' and FHICMOInterID='{2}' order by FPlanDate, FHStockQty desc ,FHMaterID ", FHMainICMOInterIDr, FHMainICMOEntryID, FHICMOInterID);
                DataTable dt = DBServiceHelper.ExecuteDataSet(this.Context, sql).Tables[0];
                if (dt.Rows.Count > 0)
@@ -112,8 +115,8 @@
        /// </summary>
        public void SearchList()
        {
            string sqlwhere = " where 1=1";
            string sql = string.Format(@"/*dialect*/select * from JIT_MOMaterReadysBill ");
            string sqlwhere = $" where FHMainICMOInterIDr ='{FHMainICMOInterIDr}' and FHMainICMOEntryID ='{FHMainICMOEntryID}' and FHICMOInterID='{FHICMOInterID}'";
            string sql = string.Format(@"/*dialect*/select * from JIT_MOMaterReadysBill  ");
            //物料
            if ((this.Model.GetValue("FMateralId") as DynamicObject) != null)
            {
@@ -135,6 +138,7 @@
            string PRDBillNo = Convert.ToString(this.Model.GetValue("FScOrderNo"));
            if (!string.IsNullOrEmpty(PRDBillNo))
                sqlwhere += $" and FPRDBillNo='{PRDBillNo}'";
            sql += sqlwhere;
            sql += "order by FPlanDate, FHStockQty desc ,FHMaterID";
            DataTable dt = DBServiceHelper.ExecuteDataSet(this.Context, sql).Tables[0];
src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs
@@ -84,13 +84,9 @@
                {
                    Save();
                }
                if (e.BarItemKey.ToUpper() == "TBCOMPLETE")
                {
                    //CompleteSetAnalysis();
                    //COMPLETEMAIN();
                    COMPLETE();
                    SearchList();
                }
                //提料计划
                if (e.BarItemKey.ToUpper() == "TBEXTRACTION")
@@ -108,9 +104,7 @@
                    finally
                    {
                        this.View.ShowMessage("操作成功!");
                    }
                }
                //预留
                if (e.BarItemKey.ToUpper() == "TBRESERVE")
@@ -120,7 +114,6 @@
                //释放
                if (e.BarItemKey.ToUpper() == "TBRELEASE")
                {
                    Release();
                }
            }
@@ -403,9 +396,7 @@
                {
                    // 需要捕获错误,以确保处理结束时,关闭进度滚动界面
                    // 引入功能实际处理函数
                    //this.CompleteSetAnalysis();
                    this.CompleteSetAnalysisBySQL();
                }
                finally
                {
@@ -692,8 +683,8 @@
LEFT JOIN T_STK_Inventory a on T1.FStockOrgId = a.FStockOrgId and T1.FMATERIALID =a.FMATERIALID 
LEFT JOIN JIT_MOMaterReadysBill B ON T1.FStockOrgId = b.FHSTOCKORGID and T1.FMATERIALID =b.FHMATERID and a.FOwnerId = b.FOwnerId 
LEFT join T_ORG_Organizations c on a.FOWNERID = c.FORGID
join t_BD_Stock d on a.FSTOCKID =d.FSTOCKID
where d.FAvailableComplete<>0
--join t_BD_Stock d on a.FSTOCKID =d.FSTOCKID
--where d.FAvailableComplete<>0
--where T1.FMATERIALID in (105773)
");
                ListInventory = ds.ToModelList<PRD_Inventory>();
@@ -712,8 +703,8 @@
LEFT JOIN T_STK_Inventory a on T1.FStockOrgId = a.FStockOrgId and T1.FMATERIALID =a.FMATERIALID 
LEFT JOIN JIT_MOMaterReadysBill B ON T1.FStockOrgId = b.FHSTOCKORGID and T1.FMATERIALID =b.FHMATERID
--where T1.FMATERIALID in (105773)
join t_BD_Stock d on a.FSTOCKID =d.FSTOCKID
where d.FAvailableComplete<>0
--join t_BD_Stock d on a.FSTOCKID =d.FSTOCKID
--where d.FAvailableComplete<>0
group by T1.FStockOrgId,T1.FMATERIALID
");
                ListInventoryByStockOrgId = ds.ToModelList<PRD_Inventory>();
@@ -873,7 +864,7 @@
                    if (item.FOwnerId != null)
                        FBatchModel.Add("FOwnerId", new JObject() { ["FNUMBER"] = item.FOwnerId });
                    Fentity.Add(FBatchModel);
                    if (i >= 20 && (i % 20 == 0 || i == completeAnalysisTempModel.Count))
                    if ((i >= 20 || i == completeAnalysisTempModel.Count) && (i % 20 == 0 || i == completeAnalysisTempModel.Count))
                    {
                        LogHelper.Info("齐套分析批量执行,记录循环的当前条数" + i);
                        JObject jsonRoot = new JObject()
@@ -943,8 +934,8 @@
LEFT JOIN T_STK_Inventory a on T1.FStockOrgId = a.FStockOrgId and T1.FMATERIALID =a.FMATERIALID 
LEFT JOIN JIT_MOMaterReadysBill B ON T1.FStockOrgId = b.FHSTOCKORGID and T1.FMATERIALID =b.FHMATERID and a.FOwnerId = b.FOwnerId 
LEFT join T_ORG_Organizations c on a.FOWNERID = c.FORGID
join t_BD_Stock d on a.FSTOCKID =d.FSTOCKID
where d.FAvailableComplete<>0
--join t_BD_Stock d on a.FSTOCKID =d.FSTOCKID
--where d.FAvailableComplete<>0
--where T1.FMATERIALID in (105773)
");
                ListInventory = ds.ToModelList<PRD_Inventory>();
@@ -962,8 +953,8 @@
) T1 
LEFT JOIN T_STK_Inventory a on T1.FStockOrgId = a.FStockOrgId and T1.FMATERIALID =a.FMATERIALID 
LEFT JOIN JIT_MOMaterReadysBill B ON T1.FStockOrgId = b.FHSTOCKORGID and T1.FMATERIALID =b.FHMATERID
join t_BD_Stock d on a.FSTOCKID =d.FSTOCKID
where d.FAvailableComplete<>0
--join t_BD_Stock d on a.FSTOCKID =d.FSTOCKID
--where d.FAvailableComplete<>0
--where T1.FMATERIALID in (105773)
group by T1.FStockOrgId,T1.FMATERIALID
");
@@ -982,6 +973,7 @@
JOIN T_ORG_Organizations t5 on a.FHPRDORGID = t5.FORGID
--条件为今天往后的日计划 + 今天之前未关闭的日计划
where (FHEntryCloseDate is null and DATEDIFF(D,GETDATE(),FHMASTERDATE)<0)or DATEDIFF(D,GETDATE(),FHMASTERDATE)>=0
and b.FHQTY>0
ORDER BY b.FHMASTERDATE,a.FHOrderLev 
";
                ds = DBServiceHelper.ExecuteDataSet(Context, sql);
@@ -1000,7 +992,7 @@
                    var _BomList = BomList.Where(x => x.FHMASTERDATE == item.FHMASTERDATE && x.FPRDMOENTYID == item.FPRDMOENTYID).ToList();
                    foreach (var _item in _BomList)
                    {
                        //该日计划物料需要数
                        //该日计划物料需要数
                        decimal need = _item.PlanCount;
                        var sjkcList = ListInventoryByStockOrgId.Where(x => x.FMATERIALID == _item.FMATERIALID2 && x.FStockOrgId == _item.FStockOrgId).FirstOrDefault();
                        //真正需要取计算的数量(拆分货主)
@@ -1062,7 +1054,9 @@
                        {
                            decimal occupyMaterial = 0;
                            if (occupyDic.ContainsKey(_item.FMATERIALID2))
                            {
                                occupyMaterial = occupyDic[_item.FMATERIALID2];
                            }
                            completeAnalysisTempModel.Add(new Demo.Model.Model.CompleteAnalysisTempModel
                            {
                                FHMainICMOInterIDr = _item.FPRDMOMAINID,
@@ -1092,8 +1086,8 @@
                }
                LogHelper.Info($"齐套分析,数据准备完成,保存到Model实体,总行数:{completeAnalysisTempModel.Count},耗时:" + sw.Elapsed);
                List<string> sqlList = new List<string>();
                int jdtmmm = 1;
                foreach (var item in completeAnalysisTempModel)
                {
                    sql = string.Format(@"
@@ -1107,14 +1101,10 @@
delete   z_JIT_MOMaterReadysBill
", item.FHMainICMOInterIDr, item.FHMainICMOEntryID, item.FHICMOInterID, item.FHICMOEntryID, item.FHMaterID, item.FHStockOrgID, item.FHStockQty, item.FHLeftQty, item.FHPRDORGID, item.FUnitDosage, item.FSumPlanCount, item.FPRDBillNo, item.FOwnerId == null ? "0" : item.FOwnerId, item.FPlanDate.ToString("yyyy-MM-dd"), item.FComPlete, item.FLackCount, item.FOccupyCount, item.FCompleteCount1);
                    sqlList.Add(sql);
                    //if (sql.Contains("559"))
                    //    LogHelper.Info("记录sql559:" + sql);
                    this.View.Session["ProcessRateValue"] = Convert.ToInt32((Convert.ToDecimal(98) / completeAnalysisTempModel.Count) * jdtmmm);
                    jdtmmm++;
                }
                LogHelper.Info("批量执行sql开始:");
                DBServiceHelper.ExecuteBatch(Context, sqlList);
                LogHelper.Info("批量执行sql结束:");
                //执行完成后 更新日计划工单状态
                DBServiceHelper.Execute(Context, @"
/*dialect*/update Sc_WorkBillSortBillSub set FComplete = '未齐套' where FEntryID IN (select distinct FHICMOEntryID from JIT_MOMaterReadysBill where isnull(FCOMPLETE,'未齐套') ='未齐套')
@@ -1588,7 +1578,7 @@
                        //if (!string.IsNullOrEmpty(_DayPlanMaterial[0].FID))
                        //    model.Add("FID", _DayPlanMaterial[0].FID);
                        Fentity.Add(model);
                        if (i >= 20  && (i % 20 == 0 || i == fidList.Count))
                        if ((i >= 20 || i == fidList.Count) && (i % 20 == 0 || i == fidList.Count))
                        {
                            LogHelper.Info("日计划用料清单批量执行,记录循环的当前条数" + i);
                            JObject jsonRoot = new JObject()
@@ -1673,6 +1663,22 @@
AND FComplete ='未齐套'
AND FERPCLSID=1 
 AND T2.FENTRYID not in (select distinct FHSOURCEENTRYID from CG_PODEMANDPLANBILLSUB where FHSOURCEINTERID IN ({0}))
AND T1.FID in ({0})
order by FHMASTERDATE
", FDayPlanWorkID);
                sql = string.Format(@"
 /*dialect*/
SELECT T1.FID,FHMASTERDATE,t1.FEntryID,T1.FBILLNO, FNeedQty,(FLeadtime+FLeadTtime2)FFIXLEADTIME,t5.FMAXPOQTY,FJITBatch FMINPOQTY,FJITMATERIALGROUP,FJITMaterielDemand,FJITSafeStock,t1.FMATERIALID,t6.FNumber,NeedQty, FStockOrgId
FROM   (
select FHICMOINTERID FID,FHICMOENTRYID FEntryID,FPlanDate FHMASTERDATE,FLackCount NeedQty,FHMATERID FMATERIALID,FHStockOrgID FStockOrgId,FPRDBILLNO FBillNo,FSumPlanCount FNeedQty from JIT_MOMaterReadysBill
)T1
JOIN T_BD_MATERIAL T6 ON T1.FMATERIALID = T6.FMATERIALID
join t_BD_MaterialBase t4 on T1.FMATERIALID = t4.FMATERIALID
join t_BD_MaterialPlan t5 on T1.FMATERIALID = t5.FMATERIALID
WHERE  DATEDIFF(D,GETDATE(),FHMASTERDATE) >=0
AND FERPCLSID=1
AND T1.NeedQty>0
AND T1.FENTRYID not in (select distinct FHSOURCEENTRYID from CG_PODEMANDPLANBILLSUB where FHSOURCEINTERID IN ({0}))
AND T1.FID in ({0}) 
order by FHMASTERDATE
", FDayPlanWorkID);
@@ -1971,7 +1977,7 @@
                    }
                    model.Add("FEntity", Fentity);
                    FinalyResult.Add(model);
                    if (tlmmm >= 20 && (tlmmm % 20 == 0 || tlmmm == PODemandPlanList.Count))
                    if ((tlmmm >= 20 || tlmmm == PODemandPlanList.Count) && (tlmmm % 20 == 0 || tlmmm == PODemandPlanList.Count))
                    {
                        LogHelper.Info("齐套分析批量执行,记录循环的当前条数" + tlmmm);
                        JObject jsonRoot = new JObject()