王 垚
2021-02-18 0139536a43bc0ec80a31984b8e50c58286cfb5fa
nothing
6个文件已修改
1个文件已添加
180 ■■■■■ 已修改文件
src/BLL/Demo.BillView/Demo.BillView.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/PRD/Prd_Pickmtrl.cs 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/PRD/Pro_DayPlan.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/PRD/Pro_SCLLFSH.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/PRD/Pro_SCLLSH.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/PRD/Pro_ScDayImport.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/PRD/Pro_TlPush.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/Demo.BillView.csproj
@@ -222,6 +222,7 @@
    <Compile Include="PRD\ProTardinessDetails.cs" />
    <Compile Include="PRD\ProCompleteAnalysisMateriel.cs" />
    <Compile Include="PRD\ProCompleteAnalysisDetails.cs" />
    <Compile Include="PRD\Prd_Pickmtrl.cs" />
    <Compile Include="PRD\Pro_DayPlan.cs" />
    <Compile Include="PRD\Pro_DayPlanCheckSelectMenu.cs" />
    <Compile Include="PRD\Pro_DayPlanPushSCHB.cs" />
src/BLL/Demo.BillView/PRD/Prd_Pickmtrl.cs
New file
@@ -0,0 +1,150 @@
using Kingdee.BOS;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo.BillView.PRD
{
    [Description("[生产领料单] 表单插件"), HotUpdate]
    public class Prd_Pickmtrl : AbstractBillPlugIn
    {
        public override void BarItemClick(BarItemClickEventArgs e)
        {
            base.BarItemClick(e);
            try
            {
                if (e.BarItemKey.ToUpper() == "TBDAYPLANMENU")
                {
                    string pageId = Guid.NewGuid().ToString();
                    ListShowParameter showParameter = new ListShowParameter();
                    showParameter.FormId = "Paez_Sc_WorkBillAutoSortBill";
                    showParameter.PageId = pageId;
                    showParameter.UseOrgId = this.Context.CurrentOrganizationInfo.ID;
                    showParameter.IsLookUp = true;
                    this.View.ShowForm(showParameter);
                    this.View.ShowForm(showParameter, delegate (FormResult result)
                    {
                        object returnData = result.ReturnData;
                        if (returnData is ListSelectedRowCollection)
                        {
                            ListSelectedRowCollection listSelectedRowCollection = returnData as ListSelectedRowCollection;
                            if (listSelectedRowCollection != null)
                            {
                                DynamicObjectDataRow datarow = (DynamicObjectDataRow)listSelectedRowCollection[0].DataRow;
                                this.View.Model.SetValue("FMATERIALID", datarow.DynamicObject["FHMaterID_Id"].ToString());
                                this.View.Model.SetValue("FPROORDERNO", datarow.DynamicObject["FSCOrderNo"].ToString());
                                this.View.Model.SetValue("FQty", datarow.DynamicObject["FHOrderNeedQty"].ToString());
                                this.View.Model.SetValue("FDayPlanFID", datarow.DynamicObject["FID"].ToString());
                                this.View.Model.SetValue("FDayPlanFentryID", datarow.DynamicObject["t1_FENTRYID"].ToString());
                                this.View.Model.SetValue("FSourceBillNo", datarow.DynamicObject["FBillNo"].ToString());
                                this.View.Model.SetValue("FSourceBillType", datarow.DynamicObject["FBillTypeID"].ToString());
                            }
                        }
                    });
                }
            }
            catch (Exception ex)
            {
                this.View.ShowErrMessage(ex.Message.ToString());
            }
        }
        public override void EntryBarItemClick(BarItemClickEventArgs e)
        {
            base.EntryBarItemClick(e);
            if (e.BarItemKey.ToUpper() == "TBROWCLOSE")
            {
                int[] selectedIndexsR = this.View.GetControl<EntryGrid>("FEntity").GetSelectedRows();        //单据体数据    
                Array.Sort(selectedIndexsR);
                DynamicObjectCollection selectedRowsDy = this.Model.DataObject["FEntity"] as DynamicObjectCollection;        //选中行数据   
                DynamicObject selectedRow;
                StringBuilder result = new StringBuilder();
                List<string> sqlList = new List<string>();
                foreach (var item in selectedIndexsR)
                {
                    selectedRow = selectedRowsDy[item];
                    string sql = string.Format(@"
/*dialect*/
select isnull(c.FRealQty,0)FRealQty from Sc_WorkBillSortBillSub a
left join T_PRD_MORPTENTRY b on a.FEntryID = b.FDAYPLANFID
left join T_PRD_INSTOCKENTRY c on b.FENTRYID = c.FSrcEntryId
where a.FEntryID in ({0})", selectedRow["Id"]);
                    decimal FRealQty = DBServiceHelper.ExecuteScalar<decimal>(Context, sql, 0);
                    if (FRealQty == 0)
                    {
                        result.Append($"分录行:{selectedRow["Seq"]},日计划明细未下推生成生产入库单\r\n");
                        continue;
                    }
                    sql = string.Format(@"
/*dialect*/
select count(*)res from Sc_WorkBillSortBillSub a
left join Sc_DayPlanPPBomBillMain b on a.FEntryID = b.FDayPlanFID
left join Sc_DayPlanPPBomBillSub c on b.FID = c.FID
where a.FEntryID in ({0})
and FISSUETYPE in (1, 2)
and FDwyl * {1} < FPickedQty", selectedRow["Id"], FRealQty);
                    decimal Count = DBServiceHelper.ExecuteScalar<decimal>(Context, sql, 0);
                    if (Count > 0)
                    {
                        result.Append($"分录行:{selectedRow["Seq"]},下游领料单的已领料数小于入库的标准用量\r\n");
                        continue;
                    }
                    sql = string.Format(@"
/*dialect*/
update Sc_WorkBillSortBillSub set
FInStockCount = {0},
FNotInStockCount = FHQty - {0},
FHEntryCloseDate = getdate(),
FHCloseTypeSub = 1
where FEntryID={1}", FRealQty, selectedRow["Id"]);
                    sqlList.Add(sql);
                }
                DBServiceHelper.ExecuteBatch(Context, sqlList);
                this.View.Refresh();
                if (string.IsNullOrEmpty(result.ToString()))
                    this.View.ShowMessage("操作成功");
                else
                    this.View.ShowErrMessage(result.ToString());
            }
            else if (e.BarItemKey.ToUpper() == "TBROWCANCELCLOSE")
            {
                int[] selectedIndexsR = this.View.GetControl<EntryGrid>("FEntity").GetSelectedRows();        //单据体数据    
                Array.Sort(selectedIndexsR);
                DynamicObjectCollection selectedRowsDy = this.Model.DataObject["FEntity"] as DynamicObjectCollection;        //选中行数据   
                DynamicObject selectedRow;
                List<string> sqlList = new List<string>();
                foreach (var item in selectedIndexsR)
                {
                    selectedRow = selectedRowsDy[item];
                    string sql = string.Format(@"
/*dialect*/
update Sc_WorkBillSortBillSub set
FInStockCount = 0,
FNotInStockCount =0,
FHEntryCloseDate = null,
FHCloseTypeSub = 0
where FEntryID={0}", selectedRow["Id"]);
                    sqlList.Add(sql);
                }
                DBServiceHelper.ExecuteBatch(Context, sqlList);
                this.View.Refresh();
                this.View.ShowMessage("操作成功");
            }
        }
    }
}
src/BLL/Demo.BillView/PRD/Pro_DayPlan.cs
@@ -112,13 +112,15 @@
where FEntryID={1}", FRealQty, selectedRow["Id"]);
                    sqlList.Add(sql);
                }
                var fid = this.View.Model.GetPKValue();
                sqlList.Add($"update Sc_WorkBillSortBillMain set FCloseCount = (select sum(FNotInStockCount) from Sc_WorkBillSortBillSub where FID ={fid}) where FID ={fid}");
                DBServiceHelper.ExecuteBatch(Context, sqlList);
                this.View.Refresh();
                if (string.IsNullOrEmpty(result.ToString()))
                    this.View.ShowMessage("操作成功");
                else
                    this.View.ShowErrMessage(result.ToString());
            }
            else if (e.BarItemKey.ToUpper() == "TBROWCANCELCLOSE")
            {
@@ -140,6 +142,8 @@
where FEntryID={0}", selectedRow["Id"]);
                    sqlList.Add(sql);
                }
                var fid = this.View.Model.GetPKValue();
                sqlList.Add($"update Sc_WorkBillSortBillMain set FCloseCount = (select sum(FNotInStockCount) from Sc_WorkBillSortBillSub where FID ={fid}) where FID ={fid}");
                DBServiceHelper.ExecuteBatch(Context, sqlList);
                this.View.Refresh();
                this.View.ShowMessage("操作成功");
src/BLL/Demo.BillView/PRD/Pro_SCLLFSH.cs
@@ -33,6 +33,7 @@
            e.FieldKeys.Add("FBaseJoinQty");
            e.FieldKeys.Add("FDayPlanBillNo");
            e.FieldKeys.Add("FDayPlanFentryId");
            e.FieldKeys.Add("FisFX");
        }
        /// <summary>
        ///反审核 反更新日计划用料清单调拨数量
@@ -52,12 +53,14 @@
                foreach (var entryRow in entryRows)
                {
                    //生产用料清单为空时
                    if (Convert.ToString(entryRow["FDayPlanBillNo"]) == "")
                    if (Convert.ToString(entryRow["FDayPlanBillNo"]) == "" || !Convert.ToBoolean(entryRow["FisFX"]))
                        continue;
                    string fentryId = entryRow["FDayPlanFentryId"].ToString();
                    decimal FBaseQty = Convert.ToDecimal(entryRow["BaseActualQty"]);
                    sql = string.Format($"/*dialect*/update Sc_DayPlanPPBomBillSub set  FPickedQty -= {FBaseQty} where FEntryID = { fentryId} ");
                    sqlList.Add(sql);
                    sql = string.Format($"/*dialect*/update T_PRD_PICKMTRLDATA set  FisFX =  0 where FentryId = {entryRow["Id"]}");
                    sqlList.Add(sql);
                }
            }
            DBServiceHelper.ExecuteBatch(Context, sqlList);
src/BLL/Demo.BillView/PRD/Pro_SCLLSH.cs
@@ -37,7 +37,7 @@
            e.FieldKeys.Add("FBaseActualQty");
        }
        /// <summary>
        ///反审核 反更新日计划用料清单领料数量
        ///审核更新日计划用料清单领料数量
        /// </summary>
        /// <param name="e"></param>
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
@@ -59,6 +59,8 @@
                    sql = string.Format($"/*dialect*/update Sc_DayPlanPPBomBillSub set  FPickedQty = FPickedQty + {Convert.ToDecimal(entryRow["BaseActualQty"])} where FEntryID = {fentryId} ");
                    //LogHelper.Info("领料单的日计划用料清单ID:" + fentryId);
                    sqlList.Add(sql);
                    sql = string.Format($"/*dialect*/update T_PRD_PICKMTRLDATA set  FisFX =  1 where FentryId = {entryRow["Id"]}");
                    sqlList.Add(sql);
                }
            }
            DBServiceHelper.ExecuteBatch(Context, sqlList);
src/BLL/Demo.BillView/PRD/Pro_ScDayImport.cs
@@ -144,10 +144,11 @@
                                FBILLNO = _dt.Rows[0]["FBILLNO"].ToString();
                                FMoFBillType = _dt.Rows[0]["FMoFBillType"].ToString();
                            }
                            //物料编码 + 生产订单号 + 生产资源 + 生产订单行号 去判断是否导入过 带出日计划工单ID及编号
                            //物料编码 + 生产订单号 + 生产资源 + 生产订单行号 去判断是否导入过 带出日计划工单ID及编号 和 关闭数量(6.18更)
                            string fDayPlanID = "";
                            string fDayPlanBillNo = "";
                            sql = string.Format(@"select a.FID,FBILLNO,FSCOrderNo,FHMaterID,FHSourceID from Sc_WorkBillSortBillMain a JOIN T_BD_MATERIAL b ON a.FHMaterID = b.FMATERIALID
                            string fCloseCount = "";
                            sql = string.Format(@"select a.FID,FBILLNO,FSCOrderNo,FHMaterID,FHSourceID,a.FCloseCount from Sc_WorkBillSortBillMain a JOIN T_BD_MATERIAL b ON a.FHMaterID = b.FMATERIALID
left join T_ENG_WORKCENTER c on a.FHSourceID=c.fid 
 where FSCOrderNo ='{0}' and b.FNUMBER ='{1}' and a.FSRCBILLENTRYSEQ ='{3}' and (isnull(c.FNUMBER,'') ='{2}' or (select count(*) from T_ENG_WORKCENTER where isnull(c.FNUMBER,'') ='{2}')=0)", dt.Rows[i][1].ToString(), dt.Rows[i][5].ToString(), dt.Rows[i][4].ToString(), dt.Rows[i][2].ToString());
                            DataTable dayPlanDt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
@@ -155,6 +156,7 @@
                            {
                                fDayPlanID = dayPlanDt.Rows[0]["FID"].ToString();
                                fDayPlanBillNo = dayPlanDt.Rows[0]["FBILLNO"].ToString();
                                fCloseCount = dayPlanDt.Rows[0]["FCloseCount"].ToString();
                            }
                            //DynamicObject row = new DynamicObject(entity.DynamicObjectType);
                            this.Model.CreateNewEntryRow("FEntity");
@@ -176,6 +178,7 @@
                            this.Model.SetValue("FDayPlanID", fDayPlanID, i);//日计划工单ID
                            this.Model.SetValue("FDayPlanBillNo", fDayPlanBillNo, i);//日工单编号
                            this.Model.SetValue("FSRCBILLENTRYSEQ", dt.Rows[i][2].ToString(), i);//生产订单明细行号
                            this.Model.SetValue("FCloseCount", fCloseCount, i);//关闭数量
                            for (int j = 0; j <= 60; j++)
                            {
                                this.Model.SetValue("FT" + "" + j + "", dt.Rows[i][15 + j].ToString(), i);
@@ -296,8 +299,9 @@
                }
                foreach (DynamicObject current in entityDataObjoct)
                {
                    if (Convert.ToInt32(current["FNoScheduled"]) < 0)
                        _result += "序号:" + Convert.ToString(current["SEQ"]) + ",日计划总数量超出生产订单数量";
                    //未排数量= 总数 - 日计划    超出日计划为负 + 关闭数量 < 0 表示超出了总计划数量
                    if (Convert.ToInt32(current["FNoScheduled"]) + Convert.ToInt32(current["FCloseCount"]) < 0)
                        _result += "序号:" + Convert.ToString(current["SEQ"]) + ",日计划总数量超出生产订单数量+关闭数量";
                }
                if (_result != "")
                {
src/BLL/Demo.BillView/PRD/Pro_TlPush.cs
@@ -138,7 +138,7 @@
                            ["IsDeleteEntry"] = "false",
                            ["SubSystemId"] = "",
                            ["IsVerifyBaseDataField"] = "false",
                            // ["IsAutoSubmitAndAudit"] = true,//自动调用提交和审核功能
                            ["IsAutoSubmitAndAudit"] = true,//自动调用提交和审核功能
                            ["Model"] = model
                        };