王 垚
2021-02-23 2e5a31b54bc716a9dcaf28df6870b372f9af795c
问题更改上传
4个文件已修改
254 ■■■■ 已修改文件
src/BLL/Demo.BillView/PRD/ProCompleteAnalysisDetails.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/PRD/Pro_ScDayImport.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs 239 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.Report/PRD/prd_ExtractionPlanDetail.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/PRD/ProCompleteAnalysisDetails.cs
@@ -9,6 +9,7 @@
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using ZD.Cloud.Logger;
namespace Demo.BillView
{
@@ -22,6 +23,7 @@
        string FHICMOInterID = "";
        public override void OnLoad(EventArgs e)
        {
            LogHelper.Info("[齐套分析明细加载列表]");
            base.OnLoad(e);
            if (this.View.OpenParameter.GetCustomParameter("FHMainICMOInterID") == null)
            {
@@ -58,6 +60,7 @@
                        this.Model.SetValue("FOrgId", dt.Rows[i]["FHStockOrgID"], i);//库存组织  
                        this.Model.SetValue("FOwnerTypeId", dt.Rows[i]["FOwnerTypeId"], i);//货主类型  
                        this.Model.SetValue("FOwnerId", dt.Rows[i]["FOwnerId"], i);//货主 
                        this.Model.SetValue("FErpClsID", dt.Rows[i]["FErpClsID"], i);//物料属性
                    }
                }
@@ -174,6 +177,7 @@
                    this.Model.SetValue("FPlanDate", dt.Rows[i]["FPlanDate"].ToString(), i);//日计划日期   
                    this.Model.SetValue("FOrgId", dt.Rows[i]["FHStockOrgID"], i);//库存组织  
                    this.Model.SetValue("FOwnerTypeId", dt.Rows[i]["FOwnerTypeId"], i);//货主类型  
                        this.Model.SetValue("FErpClsID", dt.Rows[i]["FErpClsID"], i);//物料属性
                    this.Model.SetValue("FOwnerId", dt.Rows[i]["FOwnerId"], i);//货主 
                }
            }
src/BLL/Demo.BillView/PRD/Pro_ScDayImport.cs
@@ -302,7 +302,7 @@
                }
                foreach (DynamicObject current in entityDataObjoct)
                {
                    if (string.IsNullOrEmpty(Convert.ToString(current["FSalOrderNo"])) || string.IsNullOrEmpty(Convert.ToString(current["FSCOrderNo"])))
                    if (string.IsNullOrEmpty(Convert.ToString(current["FSCOrderNo"])))
                        continue;
                    //根据生产订单号和物料查询是否存在明细
                    sql = string.Format(@"/*dialect*/SELECT T1.FBILLNO,T2.* FROM T_PRD_MO T1
@@ -335,9 +335,9 @@
                    JObject jsonModel = new JObject();
                    jsonModel.Add("FPreparatDate", date.ToString());//编制日期
                    jsonModel.Add("FSCOrderNo", current["FSCOrderNo"].ToString()); //生产订单号FSCOrderNo
                    jsonModel.Add("FHSeOrderBillNo", current["FSalOrderNo"].ToString());//销售订单号
                    jsonModel.Add("FHSeOrderBillNo", Convert.ToString(current["FSalOrderNo"]));//销售订单号
                    jsonModel.Add("FHOrderLev", current["FOrderLevel"].ToString());//订单等级
                    jsonModel.Add("FSalOrderCount", current["FOrderLevel"].ToString());//销售订单数量
                    jsonModel.Add("FHOrderQty", Convert.ToString(current["FSalOrderCount"]));//销售订单数量
                    jsonModel.Add("FHOrderCommitDate", current["FDeliveryDate"].ToString());//交货期HOrderCommitDate
                                                                                            //jsonModel.Add("FBatch", current["FBatch"].ToString());//批次
                    jsonModel.Add("FBatch", FLOT);//批次
@@ -441,7 +441,6 @@
            }
            catch (Exception ex)
            {
                this.View.ShowErrMessage(ex.ToString());
            }
src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs
@@ -19,6 +19,7 @@
using Kingdee.BOS.Util;
using Kingdee.K3.Core.SCM.STK;
using Kingdee.K3.SCM.ServiceHelper;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NPOI.HSSF.UserModel;
using NPOI.SS.Formula.Functions;
@@ -136,10 +137,10 @@
        /// <param name="e"></param>    
        public override void EntityRowDoubleClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EntityRowClickEventArgs e)
        {
            LogHelper.Info("[行双击事件]");
            base.EntityRowClick(e);
            DynamicFormShowParameter formPa = new DynamicFormShowParameter();
            if (e.ColKey == "FDELAYLNUM")
            {
                //生产计划平台拖期明细跳转
@@ -154,6 +155,7 @@
                formPa.CustomParams.Add("FHMainICMOEntryID", Convert.ToString(this.View.Model.GetValue("FHMainSourceEntryID", e.Row).ToString()));
                formPa.CustomParams.Add("FHICMOInterID", Convert.ToString(this.View.Model.GetValue("FDayPlanWorkID", e.Row).ToString()));
                formPa.CustomParams.Add("FMatrailId_Id", Convert.ToString((this.View.Model.GetValue("FMatrailId", e.Row) as DynamicObject)["Id"].ToString()));
            }
            this.View.ShowForm(formPa);
        }
@@ -396,7 +398,7 @@
                {
                    // 需要捕获错误,以确保处理结束时,关闭进度滚动界面
                    // 引入功能实际处理函数
                    this.CompleteSetAnalysisBatch();
                    this.CompleteSetAnalysisBySQL();
                }
                finally
                {
@@ -998,7 +1000,7 @@
                Dictionary<string, decimal> occupyDic = new Dictionary<string, decimal>();
                foreach (var item in DatePlanList)
                {
                    //筛选出当日计划数据
                    var _BomList = BomList.Where(x => x.FHMASTERDATE == item.FHMASTERDATE && x.FPRDMOENTYID == item.FPRDMOENTYID).ToList();
                    foreach (var _item in _BomList)
@@ -1180,7 +1182,7 @@
                    this.Model.SetValue("FSEQ", i + 1, i);//序号
                    this.Model.SetValue("FCompleteSetCount", "", i);//总齐套数量
                    this.Model.SetValue("FProOrderCount", dt.Rows[i]["FHOrderNeedQty"].ToString(), i);//生产订单数量 
                    this.Model.SetValue("FSalOrderCount", dt.Rows[i]["FHSeOrderBillNo"].ToString(), i);//销售订单数量
                    this.Model.SetValue("FSalOrderCount", dt.Rows[i]["FHOrderQty"].ToString(), i);//销售订单数量
                    this.Model.SetValue("FBatch", dt.Rows[i]["FBatch"].ToString(), i);//批次号
                    this.Model.SetValue("FUnit", dt.Rows[i]["FHUnitID"].ToString(), i);//计量单位
                    this.Model.SetValue("FORGID", dt.Rows[i]["FHPRDORGID"].ToString(), i);//生产组织
@@ -1309,7 +1311,7 @@
                    this.Model.SetValue("FSEQ", i + 1, i);//序号
                    this.Model.SetValue("FCompleteSetCount", "", i);//总齐套数量
                    this.Model.SetValue("FProOrderCount", dt.Rows[i]["FHOrderNeedQty"].ToString(), i);//生产订单数量 
                    this.Model.SetValue("FSalOrderCount", dt.Rows[i]["FHSeOrderBillNo"].ToString(), i);//销售订单数量
                    this.Model.SetValue("FSalOrderCount", dt.Rows[i]["FHOrderQty"].ToString(), i);//销售订单数量
                    this.Model.SetValue("FBatch", dt.Rows[i]["FBatch"].ToString(), i);//批次号
                    this.Model.SetValue("FUnit", dt.Rows[i]["FHUnitID"].ToString(), i);//计量单位
                    this.Model.SetValue("FORGID", dt.Rows[i]["FHPRDORGID"].ToString(), i);//生产组织
@@ -1631,11 +1633,12 @@
        /// </summary>
        public void Extraction()
        {
            LogHelper.Info("[提料计划准备阶段]:测试测试测试测试测试测试测试测试");
            try
            {
                Stopwatch sw = new Stopwatch();
                sw.Start();//开始计时
                string sql = string.Format(@"/*dialect*/ select t1.FID from Sc_WorkBillSortBillMain t1");
                string sql = string.Format(@"/*dialect*/  select distinct FHICMOINTERID FID  from  JIT_MOMaterReadysBill ");
                DataTable fidDt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
                string FDayPlanWorkID = "";
                foreach (DataRow dr in fidDt.Rows)
@@ -1649,6 +1652,7 @@
 exec [提料计划预处理] '{0}'
 ", FDayPlanWorkID.Replace(",", "-"));
                DBServiceHelper.Execute(Context, sql);
                LogHelper.Info("[提料计划准备阶段]提料计划预处理sql:" + sql);
                //采购订单数据
                sql = @"
 /*dialect*/
@@ -1683,7 +1687,8 @@
 /*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
select FHICMOINTERID FID,FHICMOENTRYID FEntryID,FPlanDate FHMASTERDATE,FLackCount NeedQty,FHMATERID FMATERIALID,FHStockOrgID FStockOrgId,FPRDBILLNO FBillNo,FSumPlanCount FNeedQty from JIT_MOMaterReadysBill a
right join (select max(FID)FID from JIT_MOMaterReadysBill GROUP BY FHICMOENTRYID,FHMATERID) b on a.FID = b.FID
)T1
JOIN T_BD_MATERIAL T6 ON T1.FMATERIALID = T6.FMATERIALID
join t_BD_MaterialBase t4 on T1.FMATERIALID = t4.FMATERIALID
@@ -1700,7 +1705,7 @@
                List<DayPlanPpbom> DayPlanPpbom = ds.ToModelList<DayPlanPpbom>();
                //物料+库存组织分类
                var MaterialIDList = DayPlanPpbom.GroupBy(p => new { p.FMATERIALID, p.FStockOrgId }).Select(x => new PODemandPlanTemp { FMATERIALID = x.Key.FMATERIALID, FStockOrgId = x.Key.FStockOrgId }).ToList();
                var _MaterialIDList = MaterialIDList.Where(p => p.FMATERIALID == "105773").ToList();
                var _MaterialIDList = MaterialIDList.Where(p => p.FMATERIALID == "162305").ToList();
                LogHelper.Info("[提料计划准备阶段]总物料行数" + MaterialIDList.Count);
                //提料计划数据集临时存储集合
                List<PODemandPlanTemp> PODemandPlanTemp = new List<PODemandPlanTemp>();
@@ -1726,127 +1731,143 @@
                    string FJITSafeStock = _DayPlanPpbom.FirstOrDefault().FJITSafeStock; //JIT安全库存
                    decimal NeedQty = 0;
                    DateTime DATE = _DayPlanPpbom.FirstOrDefault().FHMASTERDATE;//第一个订货起始日期
                    int i = 1;
                    int i = 0;
                    //记录在最小采购量需求下的日计划明细FentyrID
                    List<int> FEntryIdList = new List<int>();
                    foreach (var _item in _DayPlanPpbom)
                    {
                        i++;
                        _PurchaseInventory = PurchaseInventory.Where(x => x.FMATERIALID == item.FMATERIALID && x.FStockOrgId == item.FStockOrgId && x.FQTY > 0).ToList();
                        if (_PurchaseInventory.Count == 0)
                        {
                            LogHelper.Info("[提料计划开始]当前物料明细无采购信息:" + item.FMATERIALID + " 库存组织:" + item.FStockOrgId);
                            break;
                        }
                        if (NeedQty == 0)
                            DATE = Convert.ToDateTime(_item.FHMASTERDATE).AddDays(-FFIXLEADTIME);
                        FEntryIdList.Add(_item.FENTRYID);
                        NeedQty += _item.NeedQty;
                        if ((FJITmaterialGroup == "总量控制规格类" || FJITmaterialGroup == "订单专用个性类") && FEntryIdList.Count < Convert.ToInt32(FJITMaterielDemand)) //订单专用个性类
                            continue;
                        if (NeedQty >= FMINPOQTY)
                        LogHelper.Info("记录明细id:" + _item.FENTRYID + "");
                        LogHelper.Info("总需求量:" + NeedQty + "");
                        LogHelper.Info("最小起订量:" + FMINPOQTY + "");
                        if (NeedQty <= FMINPOQTY)
                        {
                            /*修改前 判断方式
                            List<PurchaseInventory> _PurchaseInventory = PurchaseInventory.Where(x => x.FMATERIALID == item.FMATERIALID && x.FStockOrgId == item.FStockOrgId && x.FQTY > 0).ToList();
                            if (_PurchaseInventory.Count == 0)
                            LogHelper.Info("[提料计划]当前物料明细无采购信息:" + item.FMATERIALID + ",数量:" + NeedQty + ",最小起订量:" + FMINPOQTY + "");
                        }
                        if ((FJITmaterialGroup == "总量控制规格类" || FJITmaterialGroup == "订单专用个性类") && FEntryIdList.Count < Convert.ToInt32(FJITMaterielDemand) && i < _DayPlanPpbom.Count) //订单专用个性类
                            continue;
                        //if (NeedQty >= FMINPOQTY)
                        //{
                        foreach (var Purchase in _PurchaseInventory)
                        {
                            LogHelper.Info("物料:" + Purchase.FMATERIALID + ",采购订单数量:" + Purchase.FQTY);
                            if (Purchase.FQTY >= NeedQty)
                            {
                                NeedQty = 0;
                                foreach (int id in FEntryIdList)
                                {
                                    var DayPlanPpbomls = DayPlanPpbom.Where(c => c.FENTRYID == id && c.FMATERIALID == _item.FMATERIALID).FirstOrDefault();
                                    PODemandPlanTemp.Add(new Demo.Model.Model.PODemandPlan.PODemandPlanTemp
                                    {
                                        FID = DayPlanPpbomls.FID,
                                        FHMASTERDATE = DATE,
                                        FQty = DayPlanPpbomls.NeedQty,
                                        FBILLNO = DayPlanPpbomls.FBILLNO,
                                        FENTRYID = DayPlanPpbomls.FENTRYID,
                                        FMATERIALID = DayPlanPpbomls.FMATERIALID,
                                        FNumber = DayPlanPpbomls.FNumber,
                                        OLDDATE = DayPlanPpbomls.FHMASTERDATE,
                                        FFIXLEADTIME = FFIXLEADTIME,
                                        PurchseFID = Purchase.FID,
                                        PurchseFentryID = Purchase.FENTRYID,
                                        FSUPPLIERID = Purchase.FSUPPLIERID,
                                        PurchseFNUMBER = Purchase.FNUMBER,
                                        PurchseFBillNo = Purchase.FBillNo,
                                        PurchseFqty = Purchase.FQTY,
                                        FStockOrgId = Purchase.FStockOrgId, //采购组织
                                        FORGNumber = Purchase.FORGNumber
                                    });
                                    //扣除日计划明细已被分配的数量
                                    DayPlanPpbomls.NeedQty = 0;
                                }
                                FEntryIdList.Clear();
                                //更新采购订单
                                sqlList.Add($"/*dialect*/ update t_PUR_POOrderEntry set FPODemandPlanCount  =isnull(FPODemandPlanCount,0)+  '{NeedQty}' where FENTRYID = {Purchase.FENTRYID}");
                                //扣除当前行对应采购订单数量
                                var ls = PurchaseInventory.Where(c => c.FENTRYID == Purchase.FENTRYID).FirstOrDefault();
                                ls.FQTY -= NeedQty;
                                break;
                            }
                            */
                            foreach (var Purchase in _PurchaseInventory)
                            else
                            {
                                //LogHelper.Info("Purchase");
                                //LogHelper.Info("物料:" + Purchase.FMATERIALID + ",数量:" + Purchase.FQTY);
                                if (Purchase.FQTY >= NeedQty)
                                //更新总需求数量
                                NeedQty = NeedQty - Purchase.FQTY;
                                //采购订单数量
                                decimal _NeedQty = Purchase.FQTY;
                                List<int> mmm = new List<int>();
                                foreach (int id in FEntryIdList)
                                {
                                    foreach (int id in FEntryIdList)
                                    {
                                        var DayPlanPpbomls = DayPlanPpbom.Where(c => c.FENTRYID == id && c.FMATERIALID == _item.FMATERIALID).FirstOrDefault();
                                        PODemandPlanTemp.Add(new Demo.Model.Model.PODemandPlan.PODemandPlanTemp
                                        {
                                            FID = DayPlanPpbomls.FID,
                                            FHMASTERDATE = DATE,
                                            FQty = DayPlanPpbomls.NeedQty,
                                            FBILLNO = DayPlanPpbomls.FBILLNO,
                                            FENTRYID = DayPlanPpbomls.FENTRYID,
                                            FMATERIALID = DayPlanPpbomls.FMATERIALID,
                                            FNumber = DayPlanPpbomls.FNumber,
                                            OLDDATE = DayPlanPpbomls.FHMASTERDATE,
                                            FFIXLEADTIME = FFIXLEADTIME,
                                    var DayPlanPpbomls = DayPlanPpbom.Where(c => c.FENTRYID == id && c.FMATERIALID == _item.FMATERIALID).FirstOrDefault();
                                    decimal Qty = DayPlanPpbomls.NeedQty;//订单数量
                                    if (Qty == 0)
                                        LogHelper.Info("订单数量为0");
                                    if (Qty > _NeedQty)
                                        Qty = _NeedQty; //订单数量>采购订单数量 取采购订单
                                            PurchseFID = Purchase.FID,
                                            PurchseFentryID = Purchase.FENTRYID,
                                            FSUPPLIERID = Purchase.FSUPPLIERID,
                                            PurchseFNUMBER = Purchase.FNUMBER,
                                            PurchseFBillNo = Purchase.FBillNo,
                                            PurchseFqty = Purchase.FQTY,
                                            FStockOrgId = Purchase.FStockOrgId, //采购组织
                                            FORGNumber = Purchase.FORGNumber
                                        });
                                        //扣除日计划明细已被分配的数量
                                        DayPlanPpbomls.NeedQty = 0;
                                    }
                                    FEntryIdList.Clear();
                                    if (_NeedQty == 0)
                                        LogHelper.Info("订单数量为0");
                                    _NeedQty = _NeedQty - Qty;
                                    PODemandPlanTemp.Add(new Demo.Model.Model.PODemandPlan.PODemandPlanTemp
                                    {
                                        FID = DayPlanPpbomls.FID,
                                        FHMASTERDATE = DATE,
                                        FQty = Qty,
                                        FBILLNO = DayPlanPpbomls.FBILLNO,
                                        FENTRYID = DayPlanPpbomls.FENTRYID,
                                        FMATERIALID = DayPlanPpbomls.FMATERIALID,
                                        FNumber = DayPlanPpbomls.FNumber,
                                        OLDDATE = DayPlanPpbomls.FHMASTERDATE,
                                        FFIXLEADTIME = FFIXLEADTIME,
                                        PurchseFID = Purchase.FID,
                                        PurchseFentryID = Purchase.FENTRYID,
                                        FSUPPLIERID = Purchase.FSUPPLIERID,
                                        PurchseFNUMBER = Purchase.FNUMBER,
                                        PurchseFBillNo = Purchase.FBillNo,
                                        PurchseFqty = Purchase.FQTY,
                                        FStockOrgId = Purchase.FStockOrgId, //采购组织
                                        FORGNumber = Purchase.FORGNumber
                                    });
                                    //更新计划数量(剩余需要排的) 继续去计算下一个采购订单
                                    DayPlanPpbomls.NeedQty -= Qty;
                                    //更新采购订单
                                    sqlList.Add($"/*dialect*/ update t_PUR_POOrderEntry set FPODemandPlanCount  =isnull(FPODemandPlanCount,0)+  '{NeedQty}' where FENTRYID = {Purchase.FENTRYID}");
                                    //扣除当前行对应采购订单数量
                                    sqlList.Add($"/*dialect*/ update t_PUR_POOrderEntry set FPODemandPlanCount = isnull(FPODemandPlanCount,0)+ '{Qty}' where FENTRYID = {Purchase.FENTRYID}");
                                    //更新Model
                                    var ls = PurchaseInventory.Where(c => c.FENTRYID == Purchase.FENTRYID).FirstOrDefault();
                                    ls.FQTY -= NeedQty;
                                    break;
                                }
                                else
                                {
                                    //更新总需求数量
                                    NeedQty = NeedQty - Purchase.FQTY;
                                    decimal _NeedQty = Purchase.FQTY;//采购订单数量
                                    List<int> mmm = new List<int>();
                                    foreach (int id in FEntryIdList)
                                    ls.FQTY -= Qty;
                                    if (_NeedQty <= 0)
                                    {
                                        var DayPlanPpbomls = DayPlanPpbom.Where(c => c.FENTRYID == id && c.FMATERIALID == _item.FMATERIALID).FirstOrDefault();
                                        decimal Qty = DayPlanPpbomls.NeedQty;//订单数量
                                        if (Qty > _NeedQty)
                                            Qty = _NeedQty; //订单数量>采购订单数量 取采购订单
                                        _NeedQty = _NeedQty - DayPlanPpbomls.NeedQty;
                                        PODemandPlanTemp.Add(new Demo.Model.Model.PODemandPlan.PODemandPlanTemp
                                        foreach (var mm in mmm)
                                        {
                                            FID = DayPlanPpbomls.FID,
                                            FHMASTERDATE = DATE,
                                            FQty = Qty,
                                            FBILLNO = DayPlanPpbomls.FBILLNO,
                                            FENTRYID = DayPlanPpbomls.FENTRYID,
                                            FMATERIALID = DayPlanPpbomls.FMATERIALID,
                                            FNumber = DayPlanPpbomls.FNumber,
                                            OLDDATE = DayPlanPpbomls.FHMASTERDATE,
                                            FFIXLEADTIME = FFIXLEADTIME,
                                            PurchseFID = Purchase.FID,
                                            PurchseFentryID = Purchase.FENTRYID,
                                            FSUPPLIERID = Purchase.FSUPPLIERID,
                                            PurchseFNUMBER = Purchase.FNUMBER,
                                            PurchseFBillNo = Purchase.FBillNo,
                                            PurchseFqty = Purchase.FQTY,
                                            FStockOrgId = Purchase.FStockOrgId, //采购组织
                                            FORGNumber = Purchase.FORGNumber
                                        });
                                        //更新计划数量(剩余需要排的) 继续去计算下一个采购订单
                                        DayPlanPpbomls.NeedQty -= Qty;
                                        //更新采购订单
                                        sqlList.Add($"/*dialect*/ update t_PUR_POOrderEntry set FPODemandPlanCount = isnull(FPODemandPlanCount,0)+ '{Qty}' where FENTRYID = {Purchase.FENTRYID}");
                                        //更新Model
                                        var ls = PurchaseInventory.Where(c => c.FENTRYID == Purchase.FENTRYID).FirstOrDefault();
                                        ls.FQTY -= Qty;
                                        if (_NeedQty < 0)
                                        {
                                            foreach (var mm in mmm)
                                            {
                                                FEntryIdList.Remove(mm);
                                            }
                                            break;
                                            FEntryIdList.Remove(mm);
                                        }
                                        mmm.Add(id);
                                        break;
                                    }
                                    foreach (var mm in mmm)
                                    {
                                        FEntryIdList.Remove(mm);
                                    }
                                    mmm.Add(id);
                                }
                                //foreach (var mm in mmm)
                                //{
                                //    FEntryIdList.Remove(mm);
                                //}
                            }
                            NeedQty = 0;
                        }
                        NeedQty = 0;
                        //}
                        #region 剩下不足时按最小采购批次生成
                        //剩下不足时按最小采购批次生成
                        //else if (i == _DayPlanPpbom.Count && NeedQty > 0)
@@ -1951,12 +1972,12 @@
                        //    NeedQty = 0;
                        //}
                        #endregion
                        i++;
                    }
                }
                var PODemandPlanList222 = PODemandPlanTemp.GroupBy(p => new PODemandPlanTemp { PurchseFNUMBER = p.PurchseFNUMBER, FHMASTERDATE = p.FHMASTERDATE }).Select(x => new PODemandPlanTemp { PurchseFNUMBER = x.Key.PurchseFNUMBER, FHMASTERDATE = x.Key.FHMASTERDATE }).ToList();
                var PODemandPlanList = PODemandPlanTemp.GroupBy(p => new { p.PurchseFNUMBER, p.FHMASTERDATE }).Select(x => new PODemandPlanTemp { PurchseFNUMBER = x.Key.PurchseFNUMBER, FHMASTERDATE = x.Key.FHMASTERDATE }).ToList();
                LogHelper.Info($"提料计划,数据准备完成,保存到Model实体,总行数:{PODemandPlanList.Count},耗时:" + sw.Elapsed);
                LogHelper.Info($"提料计划,数据准备完成,保存到Model实体,总行数:{PODemandPlanTemp.Count},耗时:" + sw.Elapsed);
                int tlmmm = 1;
                JArray FinalyResult = new JArray();
                foreach (var item in PODemandPlanList)
@@ -1992,7 +2013,7 @@
                    FinalyResult.Add(model);
                    if ((tlmmm >= 20 || tlmmm == PODemandPlanList.Count) && (tlmmm % 20 == 0 || tlmmm == PODemandPlanList.Count))
                    {
                        LogHelper.Info("齐套分析批量执行,记录循环的当前条数" + tlmmm);
                        LogHelper.Info("提料计划新增批量执行,记录循环的当前条数" + tlmmm);
                        JObject jsonRoot = new JObject()
                        {
                            ["Creator"] = "",
src/BLL/Demo.Report/PRD/prd_ExtractionPlanDetail.cs
@@ -148,14 +148,14 @@
            header.AddChild("FQTY", new LocaleValue("物料信息&库存数量", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
            header.AddChild("FTRANSITQTY", new LocaleValue("物料信息&在途数量", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
            header.AddChild("TQSum", new LocaleValue("拖期明细&拖期数量", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
            header.AddChild("TQSum", new LocaleValue("提料拖期明细&提料拖期数量", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
            DataSet ds = DBServiceHelper.ExecuteDataSet(Context, "/*dialect*/select distinct convert(nvarchar(50),FHDATE,23) FHDATE from Cg_PODemandPlanBillMain where " + date + " and datediff(d,FHDATE,getdate())>0   ");
            DataTable dt = ds.Tables[0];
            if (dt.Rows.Count > 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    header.AddChild(dr[0].ToString(), new LocaleValue("拖期明细&" + dr[0].ToString() + "", this.Context.UserLocale.LCID), SqlStorageType.SqlDecimal);
                    header.AddChild(dr[0].ToString(), new LocaleValue("提料拖期明细&" + dr[0].ToString() + "", this.Context.UserLocale.LCID), SqlStorageType.SqlDecimal);
                }
            }
            header.AddChild("PlanSum", new LocaleValue("计划明细&合计", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);