n
王 垚
2021-03-01 4958dfb5be9a68f5b3176babd09b53294db14002
n
2个文件已修改
4个文件已添加
398 ■■■■■ 已修改文件
src/BLL/Demo.BillView/Demo.BillView.csproj 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/PRD/KDExtension.cs 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/PRD/Pro_DayPlanBG.cs 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/PRD/Pro_RJHYLQDBGFSH.cs 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/PRD/Pro_RJHYLQDBGSH.cs 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/PRD/Pro_RjhylqdDatachange.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.BillView/Demo.BillView.csproj
@@ -214,6 +214,7 @@
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="PRD\KDExtension.cs" />
    <Compile Include="PRD\LogService.cs" />
    <Compile Include="PRD\PODemandPlanListFilter.cs" />
    <Compile Include="PRD\PODemandPlanListLoad.cs" />
@@ -226,10 +227,13 @@
    <Compile Include="PRD\Pro_DayPlan.cs" />
    <Compile Include="PRD\Pro_DayPlanCheckSelectMenu.cs" />
    <Compile Include="PRD\Pro_DayPlanPushSCHB.cs" />
    <Compile Include="PRD\Pro_DayPlanBG.cs" />
    <Compile Include="PRD\Pro_PPBomSubmit.cs" />
    <Compile Include="PRD\Pro_RJHYLQDBGFSH.cs" />
    <Compile Include="PRD\Pro_SCHBFSH.cs" />
    <Compile Include="PRD\Pro_SCLLFSH.cs" />
    <Compile Include="PRD\Pro_SCHBSH.cs" />
    <Compile Include="PRD\Pro_RJHYLQDBGSH.cs" />
    <Compile Include="PRD\Pro_SCLLSH.cs" />
    <Compile Include="PRD\Pro_RjhylqdDatachange.cs" />
    <Compile Include="PRD\Pro_PPBomSave.cs" />
src/BLL/Demo.BillView/PRD/KDExtension.cs
New file
@@ -0,0 +1,108 @@
using Kingdee.BOS.Orm.DataEntity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo.BillView.PRD
{
    public static class KDExtension
    {
        /// <summary>
        /// 获取一级值 可用于获取文本、数组
        /// </summary>
        /// <param name="dynamicObject"></param>
        /// <param name="key"></param>
        /// <returns></returns>
        public static object GetValue(this DynamicObject dynamicObject, string propertyName)
        {
            return dynamicObject[propertyName];
        }
        private static long GetLongTime2()
        {
            return (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000;
        }
        /// <summary>
        /// 获取一级基础资料或单据体对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="dynamicObject"></param>
        /// <param name="key"></param>
        /// <returns></returns>
        public static T GetValue<T>(this DynamicObject dynamicObject, string propertyName)
        {
            var value = dynamicObject.GetValue(propertyName);
            if (value != null)
            {
                return (T)Convert.ChangeType(value, typeof(T));
            }
            return default(T);
        }
        /// <summary>
        /// 获取基础资料的属性
        /// </summary>
        /// <param name="dynamicObject"></param>
        /// <param name="dataBaseKey"></param>
        /// <param name="propertyName"></param>
        /// <returns></returns>
        public static object GetDataBaseProperty(this DynamicObject dynamicObject, string dataBaseKey, string propertyName)
        {
            var dataBase = dynamicObject.GetValue<DynamicObject>(dataBaseKey);
            if (dataBase != null)
            {
                return dataBase.GetValue(propertyName);
            }
            return null;
        }
        public static T GetDataBaseProperty<T>(this DynamicObject dynamicObject, string dataBaseKey, string propertyName)
        {
            var dataBase = dynamicObject.GetValue<DynamicObject>(dataBaseKey);
            if (dataBase != null)
            {
                var value = dataBase.GetValue(propertyName)?.ToString();
                return (T)Convert.ChangeType(value, typeof(T));
            }
            return default(T);
        }
        /// <summary>
        /// 获取基础资料的编码
        /// </summary>
        /// <param name="dynamicObject"></param>
        /// <param name="dataBaseKey"></param>
        /// <returns></returns>
        public static object GetDataBaseNumber(this DynamicObject dynamicObject, string dataBaseKey)
        {
            return dynamicObject.GetDataBaseProperty(dataBaseKey, "Number");
        }
        public static T GetDataBaseNumber<T>(this DynamicObject dynamicObject, string dataBaseKey)
        {
            return dynamicObject.GetDataBaseProperty<T>(dataBaseKey, "Number");
        }
        /// <summary>
        /// 获取基础资料的内码
        /// </summary>
        /// <param name="dynamicObject"></param>
        /// <param name="dataBaseKey"></param>
        /// <returns></returns>
        public static object GetDataBaseId(this DynamicObject dynamicObject, string dataBaseKey)
        {
            return dynamicObject.GetDataBaseProperty(dataBaseKey, "Id");
        }
        public static T GetDataBaseId<T>(this DynamicObject dynamicObject, string dataBaseKey)
        {
            return dynamicObject.GetDataBaseProperty<T>(dataBaseKey, "Id");
        }
    }
}
src/BLL/Demo.BillView/PRD/Pro_DayPlanBG.cs
New file
@@ -0,0 +1,100 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Newtonsoft.Json.Linq;
using ZD.Cloud.Logger;
using ZD.Cloud.WebApi;
using Demo.Model.Model;
using System.Diagnostics;
using System.Linq;
using Kingdee.BOS.Core.Bill.PlugIn.Args;
namespace Demo.BillView.PRD
{
    /// <summary>
    /// 日计划用料清单变更单 表单插件
    /// </summary>
    [Description("日计划用料清单变更单表单插件")]
    [Kingdee.BOS.Util.HotUpdate]
    public class Pro_DayPlanBG : AbstractBillPlugIn
    {
        CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/");
        public override void DataChanged(DataChangedEventArgs e)
        {
            base.DataChanged(e);
            var model = this.View.Model;
            double FHQty = Convert.ToDouble(model.GetValue("FHQty"));
            if (e.Field.Key.Contains("FUseRateNew"))
            {
                if (e.OldValue == e.NewValue)
                    return;
                var m = e.Row;
                double FNumerator = Convert.ToDouble(model.GetValue("FNumerator", e.Row));//分子
                double FDenominator = Convert.ToDouble(model.GetValue("FDenominator", e.Row));//分母
                double FUseRateNew = Convert.ToDouble(model.GetValue("FUseRateNew", e.Row));//使用比例
                double Hqty;
                if (FNumerator == 0 || FDenominator == 0)
                {
                    Hqty = Math.Ceiling(FHQty * (FUseRateNew / 100));
                }
                Hqty = Math.Ceiling((FNumerator / FDenominator) * FHQty * (FUseRateNew / 100));
                this.View.Model.SetValue("FHQtyMustNew", Hqty, e.Row);//新计划数量
                int FentryID = Convert.ToInt32(model.GetEntryPKValue("FEntity",e.Row));//明细表id
                //查询同项次的序号
                string sql =
                    $"select top 1 FSEQ from Sc_DayPlanPPBomBillSubBG where FReplaceGroup in(select FReplaceGroup from Sc_DayPlanPPBomBillSubBG where FEntryID = {FentryID} )and FEntryID<> { FentryID} ";
                int Fseq = DBServiceHelper.ExecuteScalar<int>(Context,sql,0);
                if (Fseq > 0) {
                    this.View.Model.SetValue("FUseRateNew", 100 - FUseRateNew, Fseq - 1);//新计划数量
                }
            }
            if (e.Field.Key.Contains("FHQtyMustNew"))
            {
                if (e.OldValue == e.NewValue)
                    return;
                var m = e.Row;
                double FNumerator = Convert.ToDouble(model.GetValue("FNumerator", e.Row));//分子
                double FDenominator = Convert.ToDouble(model.GetValue("FDenominator", e.Row));//分母
                double FHQtyMustNew = Convert.ToDouble(model.GetValue("FHQtyMustNew", e.Row));//新计划数量
                double Hqty;
                if (FNumerator == 0 || FDenominator == 0)
                {
                    Hqty = Math.Ceiling(FHQtyMustNew / FHQty * 100);
                }
                Hqty = Math.Ceiling(FHQtyMustNew / ((FNumerator / FDenominator) * FHQty) * 100);
                this.View.Model.SetValue("FUseRateNew", Hqty, e.Row);//新计划数量
                int FentryID = Convert.ToInt32(model.GetEntryPKValue("FEntity", e.Row));//明细表id
                //查询同项次的序号
                string sql =
                    $"select top 1 FSEQ from Sc_DayPlanPPBomBillSubBG where FReplaceGroup in(select FReplaceGroup from Sc_DayPlanPPBomBillSubBG where FEntryID = {FentryID} )and FEntryID<> { FentryID} ";
                int Fseq = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
                if (Fseq > 0)
                {
                    double FUseRateNew = Convert.ToDouble(model.GetValue("FUseRateNew", e.Row));//使用比例
                    this.View.Model.SetValue("FUseRateNew", 100 - FUseRateNew, Fseq - 1);//新计划数量
                }
            }
        }
        //public override void BeforeSave(BeforeSaveEventArgs e)
        //{
        //    base.BeforeSave(e);
        //    e.Cancel = true;
        //}
    }
}
src/BLL/Demo.BillView/PRD/Pro_RJHYLQDBGFSH.cs
New file
@@ -0,0 +1,89 @@
using System;
using System.Collections.Generic;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.App;
using Kingdee.BOS.Core.Metadata.FieldElement;
using System.ComponentModel;
using Kingdee.BOS.ServiceHelper;
using Kingdee.K3.SCM.App;
using ZD.Cloud.Logger;
namespace Demo.DynamicForm.PRD
{
    [Description("[日计划用料清单变更-反审核]按钮功能]")]
    [HotUpdate]
    public class Pro_RJHYLQDBGFSH : AbstractOperationServicePlugIn
    {
        public override void OnPreparePropertys(PreparePropertysEventArgs e)
        {
            base.OnPreparePropertys(e);
            e.FieldKeys.Add("FSrcBillType");
            e.FieldKeys.Add("FSrcBillNo");
            e.FieldKeys.Add("FBillNo");
            e.FieldKeys.Add("FDayPlanId");
            e.FieldKeys.Add("FDayPlanFentryId");
            e.FieldKeys.Add("FHQtyMust");
            e.FieldKeys.Add("FHQtyMustNew");
            e.FieldKeys.Add("FUseRate");
            e.FieldKeys.Add("FUseRateNew");
            e.FieldKeys.Add("FHPPBomEntryID");
            e.FieldKeys.Add("FDwyl");
        }
        /// <summary>
        ///审核更新日计划用料清单领料数量
        /// </summary>
        /// <param name="e"></param>
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);
            List<string> sqlList = new List<string>();
            string sql = "";
            //审核时更新生产用料清单表明细领料数量
            Entity entity = this.BusinessInfo.GetEntity("FEntity");//获取明细信息
            foreach (var billObj in e.SelectedRows)
            {
                DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity)
                            as DynamicObjectCollection;
                foreach (var entryRow in entryRows)
                {
                    string fDayPlanFentryId = entryRow["FDayPlanFentryId"].ToString();
                    string fHQtyMust = entryRow["FHQtyMust"].ToString();
                    string fUseRate = entryRow["FUseRate"].ToString();
                    string fDwyl = entryRow["FDwyl"].ToString();
                    string fHPPBomEntryID = entryRow["FHPPBomEntryID"].ToString();
                    sql = string.Format($"/*dialect*/update Sc_DayPlanPPBomBillSub set FHQtyMust = {fHQtyMust},FUseRate = { fUseRate}  where FEntryID ={fDayPlanFentryId} ");
                    sqlList.Add(sql);
                    sql = string.Format(@"/*dialect*/
update T_PRD_PPBOMENTRY set
FBASENEEDQTY = c.FHQtyMust,
FBASEMUSTQTY = c.FHQtyMust,
FSTDQTY = c.FHQtyMust,
FNEEDQTY = c.FHQtyMust,
FMUSTQTY = c.FHQtyMust,
FUSERATE = (c.FHQtyMust / {0} / b.FQTY *100)
from T_PRD_PPBOMENTRY a
join T_PRD_PPBOM b on a.FID=b.FID
join (select sum(FHQtyMust)   FHQtyMust,FHPPBomEntryID from Sc_DayPlanPPBomBillSub where FHPPBomEntryID = {1} group by FHPPBomEntryID) c on a.FENTRYID=c.FHPPBomEntryID
where a.FENTRYID = {1}", fDwyl, fHPPBomEntryID);
                    sqlList.Add(sql);
                    sql = string.Format(@"/*dialect*/
update T_PRD_PPBOMENTRY_Q set
FNOPICKEDQTY = b.FMUSTQTY - a.FPICKEDQTY,
FBASENOPICKEDQTY = b.FMUSTQTY - a.FPICKEDQTY
from T_PRD_PPBOMENTRY_Q a
join T_PRD_PPBOMENTRY   b on a.FENTRYID=b.FENTRYID
where a.FENTRYID = {0}
", fHPPBomEntryID);
                    sqlList.Add(sql);
                }
            }
            DBServiceHelper.ExecuteBatch(Context, sqlList);
        }
    }
}
src/BLL/Demo.BillView/PRD/Pro_RJHYLQDBGSH.cs
New file
@@ -0,0 +1,91 @@
using System;
using System.Collections.Generic;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.App;
using Kingdee.BOS.Core.Metadata.FieldElement;
using System.ComponentModel;
using Kingdee.BOS.ServiceHelper;
using Kingdee.K3.SCM.App;
using ZD.Cloud.Logger;
namespace Demo.DynamicForm.PRD
{
    [Description("[日计划用料清单变更-审核]按钮功能]")]
    [HotUpdate]
    public class Pro_RJHYLQDBGSH : AbstractOperationServicePlugIn
    {
        public override void OnPreparePropertys(PreparePropertysEventArgs e)
        {
            base.OnPreparePropertys(e);
            e.FieldKeys.Add("FSrcBillType");
            e.FieldKeys.Add("FSrcBillNo");
            e.FieldKeys.Add("FBillNo");
            e.FieldKeys.Add("FDayPlanId");
            e.FieldKeys.Add("FDayPlanFentryId");
            e.FieldKeys.Add("FHQtyMust");
            e.FieldKeys.Add("FHQtyMustNew");
            e.FieldKeys.Add("FUseRate");
            e.FieldKeys.Add("FUseRateNew");
            e.FieldKeys.Add("FHPPBomEntryID");
            e.FieldKeys.Add("FDwyl");
        }
        /// <summary>
        ///审核更新日计划用料清单领料数量
        /// </summary>
        /// <param name="e"></param>
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);
            List<string> sqlList = new List<string>();
            string sql = "";
            //审核时更新生产用料清单表明细领料数量
            Entity entity = this.BusinessInfo.GetEntity("FEntity");//获取明细信息
            foreach (var billObj in e.SelectedRows)
            {
                DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity)
                            as DynamicObjectCollection;
                foreach (var entryRow in entryRows)
                {
                    string fDayPlanFentryId = entryRow["FDayPlanFentryId"].ToString();
                    string fHQtyMustNew = entryRow["FHQtyMustNew"].ToString();
                    string fUseRateNew = entryRow["FUseRateNew"].ToString();
                    string fDwyl = entryRow["FDwyl"].ToString();
                    string fHPPBomEntryID = entryRow["FHPPBomEntryID"].ToString();
                    if (fHQtyMustNew == "0")
                        continue;
                    sql = string.Format($"/*dialect*/update Sc_DayPlanPPBomBillSub set FHQtyMust = {fHQtyMustNew},FUseRate = { fUseRateNew}  where FEntryID ={fDayPlanFentryId} ");
                    sqlList.Add(sql);
                    sql = string.Format(@"/*dialect*/
update T_PRD_PPBOMENTRY set
FBASENEEDQTY = c.FHQtyMust,
FBASEMUSTQTY = c.FHQtyMust,
FSTDQTY = c.FHQtyMust,
FNEEDQTY = c.FHQtyMust,
FMUSTQTY = c.FHQtyMust,
FUSERATE = (c.FHQtyMust / {0} / b.FQTY *100)
from T_PRD_PPBOMENTRY a
join T_PRD_PPBOM b on a.FID=b.FID
join (select sum(FHQtyMust)   FHQtyMust,FHPPBomEntryID from Sc_DayPlanPPBomBillSub where FHPPBomEntryID = {1} group by FHPPBomEntryID) c on a.FENTRYID=c.FHPPBomEntryID
where a.FENTRYID = {1}", fDwyl, fHPPBomEntryID);
                    sqlList.Add(sql);
                    sql = string.Format(@"/*dialect*/
update T_PRD_PPBOMENTRY_Q set
FNOPICKEDQTY = b.FMUSTQTY - a.FPICKEDQTY,
FBASENOPICKEDQTY = b.FMUSTQTY - a.FPICKEDQTY
from T_PRD_PPBOMENTRY_Q a
join T_PRD_PPBOMENTRY   b on a.FENTRYID=b.FENTRYID
where a.FENTRYID = {0}
", fHPPBomEntryID);
                    sqlList.Add(sql);
                }
            }
            DBServiceHelper.ExecuteBatch(Context, sqlList);
        }
    }
}
src/BLL/Demo.BillView/PRD/Pro_RjhylqdDatachange.cs
@@ -27,17 +27,19 @@
            var model = this.View.Model;
            double FHQty = Convert.ToDouble(model.GetValue("FHQty"));
            //分子
            if (e.Field.Key.Contains("FNumerator") || e.Field.Key.Contains("FDenominator"))
            if (e.Field.Key.Contains("FNumerator") || e.Field.Key.Contains("FDenominator") || e.Field.Key.Contains("FUseRate"))
            {
                double FNumerator = Convert.ToDouble(model.GetValue("FNumerator", e.Row));//分子
                double FDenominator = Convert.ToDouble(model.GetValue("FDenominator", e.Row));//分母
                double FUseRate = Convert.ToDouble(model.GetValue("FUseRate", e.Row));//使用比例
                if (FNumerator == 0 || FDenominator == 0)
                    return;
                var Hqty = Math.Ceiling((FNumerator / FDenominator) * FHQty);
                var Hqty = Math.Ceiling((FNumerator / FDenominator) * FHQty * (FUseRate / 100));
                this.View.Model.SetValue("FHQtySub", Hqty, e.Row);//计划数量
                this.View.Model.SetValue("FHQtyMust", Hqty, e.Row);//应发数量
                this.View.Model.SetValue("FDwyl", FNumerator / FDenominator, e.Row);//单位用量
            }