This commit is contained in:
PastSaid
2024-07-16 10:33:50 +08:00
parent e8a1f46c3d
commit fa480006a8
132 changed files with 20893 additions and 4519 deletions

View File

@@ -0,0 +1,142 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Xml;
using BGP.K3.BOS.Core.Xml;
using BGP.K3.GSP.Core.Gsp;
using Kingdee.BOS;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Orm.Metadata.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
namespace GZ.BGP.K3.GSP.Business.PlugIn.BaseData
{
[Description("BGP供应商表单插件")]
[HotUpdate]
public class BGPSUPPLIEREDIT : AbstractBillPlugIn
{
public override void AfterButtonClick(AfterButtonClickEventArgs e)
{
base.AfterButtonClick(e);
if (e.Key == "F_BGP_BUTTON")
{
AddEntryMasterId();
}
}
private void AddEntryMasterId()
{
string text = $"SELECT FID,FKERNELXML FROM T_META_OBJECTTYPE WHERE FID='{Model.BusinessInfo.GetForm().Id}'";
DynamicObjectCollection source = DBServiceHelper.ExecuteDynamicObject(base.Context, text, (IDataEntityType)null, (IDictionary<string, Type>)null, CommandType.Text, new SqlParam[0]);
DynamicObject dynamicObject = source.FirstOrDefault();
if (dynamicObject != null)
{
string text2 = dynamicObject["FKERNELXML"].ToString();
XmlDocument val = XmlUtility.ConvertStringToXmlDocument(text2);
XmlElement elementsNode = XmlUtility.GetElementsNode(val);
XmlElement appearancesNode = XmlUtility.GetAppearancesNode(val);
((XmlNode)elementsNode).AppendChild(TextFieldNode(val, "FSupplierContact"));
((XmlNode)appearancesNode).AppendChild(TextTextFieldAppearance(val, "FSupplierContact"));
if (SaveMasterIdMetadata(Model.BusinessInfo.GetForm().Id, ((XmlNode)val).OuterXml))
{
addCloumm("BGP_t_Cust_Entry100249", "FSupplierContact");
}
}
}
private XmlNode TextFieldNode(XmlDocument doc, string entryKey)
{
string value = $"F{entryKey}".ToUpperInvariant();
XmlNode val = (XmlNode)(object)doc.CreateElement("TextField");
CreateAttribute(doc, val, "ElementType", "1");
CreateAttribute(doc, val, "ElementStyle", "0");
CreateXmlNode(doc, val, "ConditionType", "0");
CreateXmlNode(doc, val, "PropertyName", value);
CreateXmlNode(doc, val, "EntityKey", entryKey.ToUpperInvariant());
CreateXmlNode(doc, val, "FieldName", value);
CreateXmlNode(doc, val, "ListTabIndex", "100");
CreateXmlNode(doc, val, "Name", "分录MasterId");
CreateXmlNode(doc, val, "Id", Guid.NewGuid().ToString("N").ToLowerInvariant());
CreateXmlNode(doc, val, "Key", value);
return val;
}
private XmlNode TextTextFieldAppearance(XmlDocument doc, string entryKey)
{
string value = $"F{entryKey}".ToUpperInvariant();
XmlNode val = (XmlNode)(object)doc.CreateElement("TextFieldAppearance");
CreateAttribute(doc, val, "ElementType", "1");
CreateAttribute(doc, val, "ElementStyle", "1");
CreateAttribute(doc, CreateXmlNode(doc, val, "EmptyText", ""), "action", "setnull");
CreateXmlNode(doc, val, "Key", value);
CreateXmlNode(doc, val, "ListDefaultWidth", "100");
CreateXmlNode(doc, val, "EntityKey", entryKey.ToUpperInvariant());
CreateXmlNode(doc, val, "Tabindex", "100");
CreateXmlNode(doc, val, "LabelWidth", "100");
CreateXmlNode(doc, val, "Width", "100");
CreateXmlNode(doc, val, "Visible", "1023");
CreateXmlNode(doc, val, "VisibleExt", "100");
CreateXmlNode(doc, val, "Caption", "分录MasterId");
CreateXmlNode(doc, val, "Id", Guid.NewGuid().ToString("N").ToLowerInvariant());
return val;
}
private XmlAttribute CreateAttribute(XmlDocument doc, XmlNode node, string attributeName, string value)
{
XmlAttribute val = doc.CreateAttribute(attributeName);
((XmlNode)val).Value = value;
((XmlNamedNodeMap)node.Attributes).SetNamedItem((XmlNode)(object)val);
return val;
}
private XmlNode CreateXmlNode(XmlDocument doc, XmlNode Pnode, string nodeName, string value)
{
XmlNode val = (XmlNode)(object)doc.CreateElement(nodeName);
SetInnerText(val, value);
Pnode.AppendChild(val);
return val;
}
private void SetInnerText(XmlNode node, string txt)
{
if (node != null)
{
node.InnerText = txt;
}
}
private bool SaveMasterIdMetadata(string fid, string xml)
{
string strSQL = "UPDATE T_META_OBJECTTYPE SET FKERNELXML=@FKERNELXML WHERE FID=@FID";
DBUtils.Execute(paramList: new SqlParam[2]
{
new SqlParam("@FID", KDDbType.String, fid),
new SqlParam("@FKERNELXML", KDDbType.Xml, xml)
}, ctx: base.Context, strSQL: strSQL);
return true;
}
private bool addCloumm(string tablename, string entryKey)
{
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_0023: Invalid comparison between Unknown and I4
string arg = $"F{entryKey}".ToUpperInvariant();
string strSQL = "";
if ((int)GspDatabaseTypeHelper.GetGspDatabaseType(base.Context) == 1)
{
strSQL = string.Format("/*dialect*/\r\n IF NOT EXISTS (SELECT 1 FROM syscolumns INNER JOIN sysobjects ON sysobjects.id = syscolumns.id \r\n\t\t WHERE syscolumns.name = '{1}' AND sysobjects.name = '{0}')\r\n BEGIN\r\n ALTER TABLE {0} ADD {1} VARCHAR(50) null \r\n END", tablename, arg);
}
DBUtils.Execute(base.Context, strSQL);
return true;
}
}
}

View File

@@ -0,0 +1,115 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{3371CDA1-E2EF-4E6A-99F4-D6422A42A4D5}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>GZ.BGP.K3.GSP.Business.PlugIn</RootNamespace>
<AssemblyName>GZ.BGP.K3.GSP.Business.PlugIn</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="BGP.K3.GSP.APP.Core">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.APP.Core.dll</HintPath>
</Reference>
<Reference Include="BGP.K3.GSP.APP.Report">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.APP.Report.dll</HintPath>
</Reference>
<Reference Include="BGP.K3.GSP.APP.ServicePlugIn">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.APP.ServicePlugIn.dll</HintPath>
</Reference>
<Reference Include="BGP.K3.GSP.APP.Temp.ServicePlugIn">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.APP.Temp.ServicePlugIn.dll</HintPath>
</Reference>
<Reference Include="BGP.K3.GSP.Business.PlugIn">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.Business.PlugIn.dll</HintPath>
</Reference>
<Reference Include="BGP.K3.GSP.BusinessEntity">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.BusinessEntity.dll</HintPath>
</Reference>
<Reference Include="BGP.K3.GSP.Contracts">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.Contracts.dll</HintPath>
</Reference>
<Reference Include="BGP.K3.GSP.Core">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.Core.dll</HintPath>
</Reference>
<Reference Include="BGP.K3.GSP.Report.PlugIn">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.Report.PlugIn.dll</HintPath>
</Reference>
<Reference Include="BGP.K3.GSP.ServiceHelper">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.ServiceHelper.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.App">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.App.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.App.Core">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.App.Core.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.BusinessEntity">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.BusinessEntity.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.Contracts">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Contracts.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.Core">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Core.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.DataEntity">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.DataEntity.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.Model">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Model.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.ServiceHelper">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.ServiceHelper.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.Core">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.Core.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="StorageAndMaintenance\AutoMaintPlanEdit.cs" />
<Compile Include="StorageAndMaintenance\DrugMaintPlanEdit.cs" />
<Compile Include="StorageAndMaintenance\DrugMaintPlanEdits.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="sql\提取一般药品养护.sql" />
</ItemGroup>
<ItemGroup>
<Folder Include="BaseData\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("BGP.K3.GSP.Business.PlugIn")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("BGP.K3.GSP.Business.PlugIn")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("3371cda1-e2ef-4e6a-99f4-d6422a42a4d5")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,422 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using Kingdee.BOS;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.Bill.PlugIn.Args;
using Kingdee.BOS.Core.CommonFilter;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.BarElement;
using Kingdee.BOS.Core.Metadata.ControlElement;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Core.Permission;
using Kingdee.BOS.Core.SqlBuilder;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Model.ListFilter;
using Kingdee.BOS.Orm;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Serialization;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
namespace GZ.BGP.K3.GSP.Business.PlugIn.StorageAndMaintenance
{
[HotUpdate]
[Description("【自动生成养护监控方案配置】【表单插件】")]
public class AutoMaintPlanEdit : AbstractBillPlugIn
{
private FilterMetaData _filterMetaData;
private object _compareTypes;
private object _logicData;
private ListFilterModel _listFilterModel;
private Dictionary<string, FormMetadata> dctObjectMetaData = new Dictionary<string, FormMetadata>();
protected DataRule _dataRule = new DataRule();
private bool isDataRuleSuccess = true;
private BusinessInfo _currBusinessInfo;
private LayoutInfo _currLayoutInfo;
private SetLayoutInfoArgs _ee;
protected virtual bool FromXML => true;
public override void AfterBarItemClick(AfterBarItemClickEventArgs e)
{
base.AfterBarItemClick(e);
}
public override void OnSetBusinessInfo(SetBusinessInfoArgs e)
{
base.OnSetBusinessInfo(e);
FormMetadata formMetadata = (FormMetadata)ObjectUtils.CreateCopy(base.View.OpenParameter.FormMetaData);
_currBusinessInfo = formMetadata.BusinessInfo;
_currLayoutInfo = formMetadata.GetLayoutInfo();
}
public override void OnSetLayoutInfo(SetLayoutInfoArgs e)
{
base.OnSetLayoutInfo(e);
e.LayoutInfo = _currLayoutInfo;
e.BillLayoutInfo = _currLayoutInfo;
_ee = e;
base.View.SendDynamicFormAction(base.View);
}
public override void OnInitialize(InitializeEventArgs e)
{
base.OnInitialize(e);
InitialFilterMetaData();
InitialFilterGrid();
_currLayoutInfo.GetFormAppearance().Menu.GetBarItem("tbSplitButton_1");
_currLayoutInfo.GetFormAppearance().Menu.GetBarItem("tbButton_1");
_currLayoutInfo.GetFormAppearance().Menu.GetBarItem("tbSplitButton_1");
base.View.GetMainBarItem("tbNew");
BarButtonItem barButtonItem = new BarButtonItem();
barButtonItem.Key = "tbDdd";
barButtonItem.Name = "tbDdd";
barButtonItem.Description = new LocaleValue("测试");
barButtonItem.Caption = new LocaleValue("测试");
barButtonItem.Style = EnumBarItemStyle.BarButtonItem;
barButtonItem.IsShowTitle = true;
barButtonItem.Visible = -1;
barButtonItem.Seq = 16;
_currLayoutInfo.GetFormAppearance().Menu.AddBarItem(barButtonItem);
_currLayoutInfo.Appearances.Add(barButtonItem);
_currLayoutInfo.GetFormAppearance().Menu.GetAllBarItems();
_currLayoutInfo.GetFormAppearance().Menu.GetTopLevelBarItems();
}
public static DynamicObject[] GetQueryDatas(Context ctx, string formId, string filter)
{
FormMetadata formMetadata = MetaDataServiceHelper.Load(ctx, formId, true) as FormMetadata;
QueryBuilderParemeter queryBuilderParemeter = new QueryBuilderParemeter();
queryBuilderParemeter.FormId = formId;
queryBuilderParemeter.FilterClauseWihtKey = filter;
queryBuilderParemeter.BusinessInfo = formMetadata.BusinessInfo;
QueryBuilderParemeter queryBuilderParemeter2 = queryBuilderParemeter;
return BusinessDataServiceHelper.Load(ctx, formMetadata.BusinessInfo.GetDynamicObjectType(), queryBuilderParemeter2);
}
public override void BeforeUpdateValue(BeforeUpdateValueEventArgs e)
{
string text = ((e.Value != null) ? e.Value.ToString() : "");
if (StringUtils.EqualsIgnoreCase(e.Key, "FObjectTypeId"))
{
FillFilterGridData(GetFieldData(e.Value));
}
if (StringUtils.EqualsIgnoreCase(e.Key, "FFilterGrid"))
{
AnalyzeFilterSetting(text);
base.View.GetControl("FFilterGrid");
_listFilterModel.FilterObject.Setting = text;
_listFilterModel.FilterObject.GetFilterSQLString(base.Context, TimeServiceHelper.GetSystemDateTime(base.Context));
_listFilterModel.FilterObject.GetFilterRows();
}
if (StringUtils.EqualsIgnoreCase(e.Key, "FEntitySelect"))
{
_dataRule.SelectEntitis = text;
}
base.BeforeUpdateValue(e);
}
public override void AfterCreateNewData(EventArgs e)
{
if (base.View.ParentFormView != null)
{
object customParameter = base.View.ParentFormView.OpenParameter.GetCustomParameter("FObjectTypeId");
if (customParameter != null && !StringUtils.IsEmpty(customParameter.ToString()))
{
base.View.Model.SetValue("FObjectTypeId", customParameter);
}
}
base.AfterCreateNewData(e);
}
public override void AfterBindData(EventArgs e)
{
object pKValue = base.View.Model.GetPKValue();
_dataRule = new DataRule
{
Id = ((pKValue == null) ? "" : pKValue.ToString()),
DataRuleTable = base.View.Model.BusinessInfo.GetEntity(0).TableName
};
_dataRule = PermissionServiceHelper.GetDataRule(base.Context, _dataRule);
if (FromXML && !StringUtils.IsEmpty(_dataRule.CustomFilterSetting))
{
base.View.Model.DataObject = DeserializeCustomFilter(_dataRule.CustomFilterSetting);
}
if (base.View.Model.DataObject["FObjectTypeId_Id"] != null)
{
FillFilterGridData(base.View.Model.DataObject["FObjectTypeId_Id"].ToString());
}
if (base.View.Model.GetValue("FObjectTypeId") == null || string.IsNullOrWhiteSpace(base.View.Model.GetValue("FObjectTypeId").ToString()))
{
base.View.GetControl("FFilterGrid").Enabled = false;
}
base.AfterBindData(e);
}
private void InitialFilterMetaData()
{
if (_filterMetaData == null)
{
_filterMetaData = CommonFilterServiceHelper.GetFilterMetaData(base.Context, "");
JSONObject jSONObject = _filterMetaData.ToJSONObject();
jSONObject.TryGetValue(CommonFilterConst.JSONKey_CompareTypes, out _compareTypes);
jSONObject.TryGetValue(CommonFilterConst.JSONKey_Logics, out _logicData);
}
}
private void InitialFilterGrid()
{
FilterGrid control = base.View.GetControl<FilterGrid>(CommonFilterConst.ControlKey_FilterGrid);
control.SetCompareTypes(_compareTypes);
control.SetLogicData(_logicData);
}
private void InitialFilterGrid(ListFilterModel listFilterModel)
{
FilterGrid control = base.View.GetControl<FilterGrid>(CommonFilterConst.ControlKey_FilterGrid);
JSONArray filterFields = GetFilterFields(listFilterModel);
control.SetFilterFields(filterFields);
if (StringUtils.IsEmpty(_dataRule.SelectEntitis))
{
_dataRule.SelectEntitis = listFilterModel.EntityObject.Setting;
}
_listFilterModel.FilterObject.SetSelectEntity(_dataRule.SelectEntitis);
control.SetSelectEntities(_dataRule.SelectEntitis);
if (!StringUtils.IsEmpty(_dataRule.FilterSetting))
{
_listFilterModel.FilterObject.Setting = _dataRule.FilterSetting;
control.SetFilterRows(_listFilterModel.FilterObject.GetFilterRows());
}
}
protected virtual JSONArray GetFilterFields(ListFilterModel listFilterModel)
{
JSONArray jSONArray = new JSONArray();
foreach (Entity entry in listFilterModel.BillBusinessInfo.Entrys)
{
if (entry is HeadEntity || entry is SubHeadEntity)
{
jSONArray.AddRange(listFilterModel.FilterObject.GetFilterFieldListByEntityKey(entry.Key));
}
}
return jSONArray;
}
private void FillFilterGridData(string formid)
{
if (!StringUtils.IsEmpty(formid))
{
_listFilterModel = CreateListFilterModel(formid);
base.View.GetControl<FilterGrid>(CommonFilterConst.ControlKey_FilterGrid);
InitialFilterGrid(_listFilterModel);
InitialEntitySelect(_listFilterModel);
base.View.GetControl("FFilterGrid").Enabled = true;
}
}
protected string GetFieldData(object value)
{
if (value == null)
{
return "";
}
if (value is DynamicObject)
{
return ((DynamicObject)value)["Id"].ToString();
}
return value.ToString();
}
private ListFilterModel CreateListFilterModel(string formid)
{
ListFilterModel listFilterModel = new ListFilterModel();
FormMetadata bizObjectMetaData = GetBizObjectMetaData(formid);
listFilterModel.FilterObject.FilterMetaData = _filterMetaData;
listFilterModel.SetContext(base.Context, bizObjectMetaData.BusinessInfo, bizObjectMetaData.BusinessInfo.GetForm().GetFormServiceProvider());
listFilterModel.InitFieldList(bizObjectMetaData, null);
return listFilterModel;
}
public override void BeforeFilterGridF7Select(BeforeFilterGridF7SelectEventArgs e)
{
base.BeforeFilterGridF7Select(e);
e.CommonFilterModel = _listFilterModel;
}
private void InitialEntitySelect(ListFilterModel listFilterModel)
{
EntitySelect control = base.View.GetControl<EntitySelect>(CommonFilterConst.ControlKey_EntitySelect);
JSONArray allEntities = listFilterModel.EntityObject.GetAllEntities();
InitEntitisSetting(listFilterModel, control, allEntities);
JSONArray jSONArray = new JSONArray();
jSONArray.Add("FFilterGrid");
control.SetListeners(jSONArray);
}
protected virtual void InitEntitisSetting(ListFilterModel listFilterModel, EntitySelect entityselect, JSONArray entities)
{
string headEntitiesKey = GetHeadEntitiesKey(listFilterModel);
JSONArray jSONArray = new JSONArray();
foreach (object entity in entities)
{
if (headEntitiesKey.Contains(((JSONObject)entity)["Key"].ToString()))
{
jSONArray.Add(entity);
}
}
entityselect.SetEntities(jSONArray);
if (!StringUtils.IsEmpty(_dataRule.SelectEntitis))
{
listFilterModel.EntityObject.Setting = _dataRule.SelectEntitis;
}
entityselect.SetSelectEntities(listFilterModel.EntityObject.Setting);
}
private string GetHeadEntitiesKey(ListFilterModel listFilterModel)
{
string text = ",";
foreach (Entity entry in listFilterModel.BillBusinessInfo.Entrys)
{
if (entry is HeadEntity || entry is SubHeadEntity)
{
text = text + entry.Key.ToUpper() + ",";
}
}
return text;
}
private void AnalyzeFilterSetting(string strFilterSetting)
{
isDataRuleSuccess = true;
if (StringUtils.IsEmpty(strFilterSetting))
{
return;
}
_dataRule.FilterSetting = strFilterSetting;
if (_listFilterModel == null || _listFilterModel.FilterObject.AllFilterFieldList == null)
{
return;
}
string selectEntitis = _dataRule.SelectEntitis;
if (!StringUtils.IsEmpty(selectEntitis))
{
_listFilterModel.FilterObject.SetSelectEntity(selectEntitis);
}
_listFilterModel.FilterObject.Setting = strFilterSetting;
try
{
string filterSQLString = _listFilterModel.FilterObject.GetFilterSQLString(base.Context, TimeServiceHelper.GetSystemDateTime(base.Context));
_dataRule.FilterString = filterSQLString;
}
catch (Exception ex)
{
base.View.ShowErrMessage(ex.Message);
isDataRuleSuccess = false;
}
}
protected FormMetadata GetBizObjectMetaData(string strObjectTypeId)
{
if (dctObjectMetaData.ContainsKey(strObjectTypeId))
{
return dctObjectMetaData[strObjectTypeId];
}
FormMetadata cachedFormMetaData = FormMetaDataCache.GetCachedFormMetaData(base.Context, strObjectTypeId);
dctObjectMetaData[strObjectTypeId] = cachedFormMetaData;
return cachedFormMetaData;
}
public override void BeforeSave(BeforeSaveEventArgs e)
{
e.Cancel = !isDataRuleSuccess;
base.BeforeSave(e);
}
public override void AfterSave(AfterSaveEventArgs e)
{
_dataRule.CustomFilterSetting = SerializeCustomFilter();
_dataRule.Id = base.View.Model.GetPKValue().ToString();
_dataRule.DataRuleTable = base.View.Model.BusinessInfo.GetEntity(0).TableName;
PermissionInnerServiceHelper.SaveDataRule(base.Context, _dataRule);
base.AfterSave(e);
}
private string GetString(object obj)
{
if (obj == null)
{
return "";
}
return obj.ToString();
}
private string SerializeCustomFilter()
{
base.View.GetControl("FFilterGrid");
DcxmlBinder dcxmlBinder = new DynamicObjectDcxmlBinder(base.View.Model.BusinessInfo);
dcxmlBinder.OnlyDbProperty = false;
DcxmlSerializer dcxmlSerializer = new DcxmlSerializer(dcxmlBinder);
CultureInfo culture = new CultureInfo(2052);
dcxmlBinder.Culture = culture;
string text = dcxmlSerializer.SerializeToString(base.View.Model.DataObject, null);
if (!StringUtils.IsEmpty(text))
{
return text;
}
return "";
}
private DynamicObject DeserializeCustomFilter(string xml)
{
DcxmlBinder dcxmlBinder = new DynamicObjectDcxmlBinder(base.View.Model.BusinessInfo);
dcxmlBinder.OnlyDbProperty = false;
DcxmlSerializer dcxmlSerializer = new DcxmlSerializer(dcxmlBinder);
CultureInfo culture = new CultureInfo(2052);
dcxmlBinder.Culture = culture;
DynamicObject dynamicObject = (DynamicObject)dcxmlSerializer.DeserializeFromString(xml);
OrmUtils.DataEntityWalker(new DynamicObject[1] { dynamicObject }, dynamicObject.DynamicObjectType, delegate (DataEntityWalkerEventArgs e)
{
foreach (object dataEntity in e.DataEntities)
{
((DynamicObject)dataEntity).GetDataEntityType().SetFromDatabase(dataEntity);
}
});
dynamicObject.GetDataEntityType().SetPkSnapshot(dynamicObject, base.View.Model.DataObject.GetDataEntityType().GetPkSnapshot(base.View.Model.DataObject));
return dynamicObject;
}
}
}

View File

@@ -0,0 +1,90 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Text;
using BGP.K3.GSP.Business.PlugIn.Template;
using BGP.K3.GSP.Core.Gsp;
using Kingdee.BOS;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Orm.Metadata.DataEntity;
using Kingdee.BOS.ServiceHelper;
namespace GZ.BGP.K3.GSP.Business.PlugIn.StorageAndMaintenance
{
[Description("药品养护计划表单插件")]
public class DrugMaintPlanEdit : AbstractGspBillPlugIn
{
public override DynamicObject RequestOrg => Model.GetValue("F_BGP_OrgId") as DynamicObject;
public override string DeptFieldKey => "F_BGP_Department";
public override string EmpFieldKey => "F_BGP_Staff";
public override void BarItemClick(BarItemClickEventArgs e)
{
string barItemKey = e.BarItemKey;
DynamicObject dataObject = Model.DataObject;
if (barItemKey == "tbButtonComDraw" && dataObject["F_BGP_OrgId"] is DynamicObject dynamicObject)
{
DynamicObjectCollection dynamicObjectCollection = ReceivableDetail1(base.Context, dynamicObject[0]);
Entity entity = base.View.BusinessInfo.GetEntity("FEntity");
base.View.Model.GetEntityDataObject(entity);
int entryRowCount = Model.GetEntryRowCount(entity.Key);
for (int num = entryRowCount - 1; num > -1; num--)
{
base.View.Model.DeleteEntryRow("FEntity", num);
}
int count = dynamicObjectCollection.Count;
for (int i = 0; i < count; i++)
{
base.View.Model.CreateNewEntryRow("FEntity");
base.View.Model.SetValue("F_BGP_MaterialNo", dynamicObjectCollection[i]["FMaterialId"], i);
base.View.InvokeFieldUpdateService("FMaterialId", i);
base.View.Model.SetValue("F_BGP_Warehouse", dynamicObjectCollection[i]["FSTOCKID"], i);
base.View.Model.SetValue("F_BGP_Inventory", dynamicObjectCollection[i]["FBaseQty"], i);
base.View.Model.SetValue("F_BGP_BatchNo", dynamicObjectCollection[i]["FLot"], i);
base.View.Model.SetValue("F_BGP_Positions", dynamicObjectCollection[i]["FStockLocId"], i);
base.View.Model.SetValue("F_BGP_OverTime", dynamicObjectCollection[i]["overday"], i);
base.View.Model.SetValue("F_BGP_ShouldMainteDate", dynamicObjectCollection[i]["F_BGP_ShouldMainteDate"], i);
base.View.Model.SetValue("F_BGP_MeasuringUnit", dynamicObjectCollection[i]["FStockUnitId"], i);
base.View.Model.SetValue("F_BGP_UNITID", dynamicObjectCollection[i]["FBaseUnitId"], i);
base.View.Model.SetValue("F_BGP_MAINTEPLANDATE", dynamicObjectCollection[i]["F_BGP_MAINTEPLANDATE"], i);
base.View.Model.SetValue("F_BGP_MAINTECN", dynamicObjectCollection[i]["FBaseQty"], i);
base.View.Model.SetValue("F_BGP_ProductDate", dynamicObjectCollection[i]["FPRODUCEDATE"], i);
base.View.Model.SetValue("F_BGP_EffDate", dynamicObjectCollection[i]["FEXPIRYDATE"], i);
base.View.Model.SetValue("F_BGP_BaseQty", dynamicObjectCollection[i]["FBaseQty"], i);
base.View.Model.SetValue("F_BGP_InventoryState", dynamicObjectCollection[i]["FStockStatusId"], i);
base.View.Model.SetValue("F_BGP_OwnerTypeId", dynamicObjectCollection[i]["FOwnerTypeId"], i);
base.View.Model.SetValue("F_BGP_OwnerId", dynamicObjectCollection[i]["FOwnerId"], i);
base.View.Model.SetValue("F_BGP_KeeperTypeId", dynamicObjectCollection[i]["FKeeperTypeId"], i);
base.View.Model.SetValue("F_BGP_KeeperId", dynamicObjectCollection[i]["FKeeperId"], i);
}
}
}
public static DynamicObjectCollection ReceivableDetail1(Context cxt, object fOrg)
{
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
StringBuilder stringBuilder = new StringBuilder("/*dialect*/ ");
string gspDatabasetext = GspDatabaseTypeHelper.GetGspDatabasetext(cxt, "FORG");
SqlParam[] array = new SqlParam[1]
{
new SqlParam(gspDatabasetext, KDDbType.String, fOrg)
};
if ((int)GspDatabaseTypeHelper.GetGspDatabaseType(cxt) == 0)
{
stringBuilder.AppendFormat(" SELECT i.FSTOCKID, i.FMaterialId, FLot, FStockUnitId, FBaseUnitId, FQty,FBaseQty, FStockStatusId, FStockLocId ,DATEDIFF(day,Maintdate ,getdate())-90 overday,dateadd(day,90.7,Maintdate) as F_BGP_ShouldMainteDate,isnull(l.FPRODUCEDATE,i.FPRODUCEDATE)FPRODUCEDATE, isnull(l.FEXPIRYDATE,i.FEXPIRYDATE)FEXPIRYDATE,getdate() F_BGP_MAINTEPLANDATE \r\n ,FOwnerTypeId ,FOwnerId ,FKeeperTypeId,FKeeperId,FStockStatusId\r\nFROM T_STK_INVENTORY i, T_BD_MATERIAL m,T_BGP_MaintainType mt,\r\n(select isnull(F_BGP_MaintDate,FInStockDate) Maintdate, FLOTID,FPRODUCEDATE,FEXPIRYDATE from T_BD_LOTMASTER) l\r\nWHERE i.FMaterialId = m.FMaterialId \r\nand F_BGP_MaintainClass=mt.FID\r\nand F_BGP_DAY=90\r\nand l.FLOTID=i.FLot\r\nand DATEDIFF(day,Maintdate ,getdate())>90 and i.FSTOCKORGID={0} and FBaseQty>0\r\nand m.FDOCUMENTSTATUS='C' and FStockStatusId=10000\r\n order by F_BGP_DosageForm,FSTOCKID,FMaterialId ", gspDatabasetext);
}
else
{
stringBuilder.AppendFormat(" SELECT i.FSTOCKID, i.FMaterialId, FLot, FStockUnitId, FBaseUnitId, FQty,FBaseQty, FStockStatusId, FStockLocId ,\r\n ROUND(TO_NUMBER(Maintdate-sysdate))-90 overday,\r\n /*dateadd(day,90.7,Maintdate)*/\r\n Maintdate+90.7 as F_BGP_ShouldMainteDate,\r\n NVL(l.FPRODUCEDATE,i.FPRODUCEDATE)FPRODUCEDATE, NVL(l.FEXPIRYDATE,i.FEXPIRYDATE)FEXPIRYDATE,\r\n sysdate F_BGP_MAINTEPLANDATE \r\n ,FOwnerTypeId ,FOwnerId ,FKeeperTypeId,FKeeperId,FStockStatusId\r\nFROM T_STK_INVENTORY i, T_BD_MATERIAL m,T_BGP_MaintainType mt,\r\n(select NVL(F_BGP_MaintDate,FInStockDate) Maintdate, FLOTID,FPRODUCEDATE,FEXPIRYDATE from T_BD_LOTMASTER) l\r\nWHERE i.FMaterialId = m.FMaterialId \r\nand F_BGP_MaintainClass=mt.FID\r\nand F_BGP_DAY=90\r\nand l.FLOTID=i.FLot\r\nand ROUND(TO_NUMBER(Maintdate-sysdate)) >90 \r\nand i.FSTOCKORGID={0} and FBaseQty>0\r\nand m.FDOCUMENTSTATUS='C' and FStockStatusId=10000\r\n order by F_BGP_DosageForm,FSTOCKID,FMaterialId", gspDatabasetext);
}
return DBServiceHelper.ExecuteDynamicObject(cxt, stringBuilder.ToString(), (IDataEntityType)null, (IDictionary<string, Type>)null, CommandType.Text, array);
}
}
}

View File

@@ -0,0 +1,267 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using BGP.K3.GSP.Business.PlugIn.Template;
using BGP.K3.GSP.Contracts;
using BGP.K3.GSP.Core.Text;
using Kingdee.BOS;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.K3.Core.BD;
namespace GZ.BGP.K3.GSP.Business.PlugIn.StorageAndMaintenance
{
[Description("GSP药品养护计划表单插件")]
public class DrugMaintPlanEdits : AbstractGspBillPlugIn
{
public override string FEntityKey => "FENTITY";
public override string FEntityorm => "T_BGP_MAINTEPLANB";
public override string Materialidorm => "F_BGP_MATERIALNO";
public override string MaterialidKey => "F_BGP_MATERIALNO";
public override string LOTorm => "F_BGP_BATCHNO";
public override string LOTKey => "F_BGP_BATCHNO";
public override string ProduceDateorm => "F_BGP_PRODUCTDATE";
public override string ApprovalNoMKey => "F_BGP_APPROVALNOM";
public override string ApprovalNoKey => "F_BGP_APPROVALNOALL";
public override bool ISadd => false;
public override bool ISback => true;
public override DynamicObject RequestOrg => Model.GetValue("F_BGP_OrgId") as DynamicObject;
public override string DeptFieldKey => "F_BGP_Department";
public override string EmpFieldKey => "F_BGP_Staff";
public override void BarItemClick(BarItemClickEventArgs e)
{
_ = e.BarItemKey;
DynamicObject dataObject = Model.DataObject;
string barItemKey;
if ((barItemKey = e.BarItemKey) == null || !(barItemKey == "tbButtonComDraw"))
{
return;
}
DynamicObject dynamicObject = dataObject["F_BGP_OrgId"] as DynamicObject;
string leadtime = Model.GetValue("F_BGP_LeadTime").ToString();
if (dynamicObject == null)
{
return;
}
DynamicObjectCollection dynamicObjectCollection = ReceivableDetail1(base.Context, dynamicObject[0], leadtime);
Entity entity = base.View.BusinessInfo.GetEntity("FEntity");
base.View.Model.GetEntityDataObject(entity);
for (int num = Model.GetEntryRowCount(entity.Key) - 1; num > -1; num--)
{
base.View.Model.DeleteEntryRow("FEntity", num);
}
int count = dynamicObjectCollection.Count;
if (count < 1)
{
base.View.ShowNotificationMessage("无可提取数据!");
}
else
{
List<string> list = new List<string>();
for (int i = 0; i < count; i++)
{
if (!list.Contains(dynamicObjectCollection[i]["F_BGP_INVENTORYID"].ToString()))
{
list.Add(dynamicObjectCollection[i]["F_BGP_INVENTORYID"].ToString());
base.View.Model.CreateNewEntryRow("FEntity");
base.View.Model.SetValue("F_BGP_MaterialNo", dynamicObjectCollection[i]["FMaterialId"], i);
base.View.InvokeFieldUpdateService("FMaterialId", i);
base.View.Model.SetValue("F_BGP_Warehouse", dynamicObjectCollection[i]["FSTOCKID"], i);
base.View.Model.SetValue("F_BGP_Inventory", dynamicObjectCollection[i]["FBaseQty"], i);
base.View.Model.SetValue("F_BGP_BatchNo", dynamicObjectCollection[i]["FLot"], i);
base.View.Model.SetValue("F_BGP_Positions", dynamicObjectCollection[i]["FStockLocId"], i);
base.View.Model.SetValue("F_BGP_OverTime", dynamicObjectCollection[i]["overday"], i);
if (ConvertExtensionMethods.Pstring(dynamicObjectCollection[i]["F_BGP_ShouldMainteDate"]) != "0001-01-01 00:00:00")
{
base.View.Model.SetValue("F_BGP_ShouldMainteDate", dynamicObjectCollection[i]["F_BGP_ShouldMainteDate"], i);
}
base.View.Model.SetValue("F_BGP_MeasuringUnit", dynamicObjectCollection[i]["FStockUnitId"], i);
base.View.Model.SetValue("F_BGP_UNITID", dynamicObjectCollection[i]["FBaseUnitId"], i);
if (ConvertExtensionMethods.Pstring(dynamicObjectCollection[i]["F_BGP_MAINTEPLANDATE"]) != "0001-01-01 00:00:00")
{
base.View.Model.SetValue("F_BGP_MAINTEPLANDATE", dynamicObjectCollection[i]["F_BGP_MAINTEPLANDATE"], i);
}
base.View.Model.SetValue("F_BGP_MAINTECN", dynamicObjectCollection[i]["FBaseQty"], i);
if (ConvertExtensionMethods.Pstring(dynamicObjectCollection[i]["FPRODUCEDATE"]) != "0001-01-01 00:00:00")
{
base.View.Model.SetValue("F_BGP_ProductDate", dynamicObjectCollection[i]["FPRODUCEDATE"], i);
}
if (ConvertExtensionMethods.Pstring(dynamicObjectCollection[i]["FEXPIRYDATE"]) != "0001-01-01 00:00:00")
{
base.View.Model.SetValue("F_BGP_EffDate", dynamicObjectCollection[i]["FEXPIRYDATE"], i);
}
base.View.Model.SetValue("F_BGP_BaseQty", dynamicObjectCollection[i]["FBaseQty"], i);
base.View.Model.SetValue("F_BGP_InventoryState", dynamicObjectCollection[i]["FStockStatusId"], i);
base.View.Model.SetValue("F_BGP_OwnerTypeId", dynamicObjectCollection[i]["FOwnerTypeId"], i);
base.View.Model.SetValue("F_BGP_OwnerId", dynamicObjectCollection[i]["FOwnerId"], i);
base.View.Model.SetValue("F_BGP_KeeperTypeId", dynamicObjectCollection[i]["FKeeperTypeId"], i);
base.View.Model.SetValue("F_BGP_KeeperId", dynamicObjectCollection[i]["FKeeperId"], i);
base.View.Model.SetValue("F_BGP_AuxPropId", dynamicObjectCollection[i]["FAuxPropId"], i);
base.View.Model.SetValue("F_BGP_SecUnitId", dynamicObjectCollection[i]["FSecUnitId"], i);
base.View.Model.SetValue("F_BGP_SecQty", dynamicObjectCollection[i]["FSecQty"], i);
base.View.Model.SetValue("F_BGP_MaintDate", dynamicObjectCollection[i]["Maintdate"], i);
base.View.Model.SetValue("F_BGP_INVENTORYID", dynamicObjectCollection[i]["F_BGP_INVENTORYID"], i);
}
}
}
base.View.UpdateView("F_BGP_MaterialNo");
base.View.UpdateView("FEntity");
}
public override void EntryBarItemClick(BarItemClickEventArgs e)
{
string text;
if ((text = e.BarItemKey.ToUpper()) != null && text == "TBLOTCR_BGP")
{
UpdateMaintDt();
}
}
public void UpdateMaintDt()
{
if (!(Model.DataObject["F_BGP_OrgId"] is DynamicObject dynamicObject))
{
return;
}
StringBuilder stringBuilder = new StringBuilder();
SqlParam[] array = new SqlParam[1]
{
new SqlParam("@FORG", KDDbType.String, dynamicObject[0])
};
stringBuilder.Append($" SELECT *from T_STK_INVENTORY where FSTOCKORGID=@FORG ");
DynamicObjectCollection source = DBServiceHelper.ExecuteDynamicObject(base.Context, stringBuilder.ToString(), null, null, CommandType.Text, array);
Entity entity = base.View.BusinessInfo.GetEntity("FEntity");
DynamicObjectCollection subEntityRows = base.View.Model.GetEntityDataObject(entity);
Model.GetEntryRowCount(entity.Key);
List<DynamicObject> lidy = new List<DynamicObject>();
List<int> liin = new List<int>();
int num = 0;
int num2 = 0;
foreach (DynamicObject item in subEntityRows)
{
DynamicObject dynamicObject2 = source.Where((DynamicObject p) => p["fid"].ToString() == ConvertExtensionMethods.Pstring(item["F_BGP_INVENTORYID"])).FirstOrDefault();
if (dynamicObject2 != null && ConvertExtensionMethods.Pdecimal(dynamicObject2["FBASEQTY"]) < ConvertExtensionMethods.Pdecimal(item["F_BGP_BaseQty"]) - ConvertExtensionMethods.Pdecimal(item["F_BGP_BaseMaintQty"]))
{
lidy.Add(dynamicObject2);
liin.Add(num2);
num++;
}
num2++;
}
if (num > 0)
{
base.View.ShowMessage("检验结果有" + num + "笔的库存数量已经小于是否需要自动校正数量,并留存变更记录,且自动下推(【是】=执行/【否】=取消)", MessageBoxOptions.YesNo, delegate (MessageBoxResult result)
{
if (result == MessageBoxResult.Yes)
{
UpdateDt(liin, subEntityRows, lidy);
}
});
}
else
{
base.View.ShowMessage("检验结果库存数量数据正常,无需调整");
}
}
public void UpdateDt(List<int> liseq, DynamicObjectCollection subEntityRows, List<DynamicObject> lidy)
{
int num = Model.GetEntryRowCount("F_BGP_FChangeRecord");
IMaintInventoryService maintInventoryService = GspServiceFactory.GetMaintInventoryService(base.Context);
Dictionary<string, UnitConvert> dictionary = new Dictionary<string, UnitConvert>();
foreach (int item in liseq)
{
base.View.Model.CreateNewEntryRow("F_BGP_FChangeRecord");
DynamicObject dynamicObject = lidy.Where((DynamicObject p) => p["fid"].ToString() == subEntityRows[item]["F_BGP_INVENTORYID"].ToString()).FirstOrDefault();
base.View.Model.SetValue("F_BGP_MaterialNoCR", subEntityRows[item]["F_BGP_MaterialNo"], num);
base.View.Model.SetValue("F_BGP_UnitIDCR", subEntityRows[item]["F_BGP_MeasuringUnit"], num);
base.View.Model.SetValue("F_BGP_MainteCnOLD", subEntityRows[item]["F_BGP_MainteCn"], num);
base.View.Model.SetValue("F_BGP_InventoryOld", subEntityRows[item]["F_BGP_Inventory"], num);
base.View.Model.SetValue("F_BGP_UnitICR", subEntityRows[item]["F_BGP_UnitID"], num);
base.View.Model.SetValue("F_BGP_BaseQtyOld", subEntityRows[item]["F_BGP_BaseQty"], num);
base.View.Model.SetValue("F_BGP_DateCR", DateTime.Now, num);
base.View.Model.SetValue("F_BGP_INVENTORYIDCR", subEntityRows[item]["F_BGP_INVENTORYID"], num);
decimal num2 = ConvertExtensionMethods.Pdecimal(dynamicObject["FBaseQty"]);
decimal num3 = ConvertExtensionMethods.Pdecimal(subEntityRows[item]["F_BGP_BaseMaintQty"]);
decimal num4 = num2 + num3;
decimal num5 = maintInventoryService.ExchangeUnitQty(base.Context, ConvertExtensionMethods.Pint64(subEntityRows[item]["F_BGP_MaterialNo_id"]), ConvertExtensionMethods.Pint64(subEntityRows[item]["F_BGP_MaterialNo_id"]), ConvertExtensionMethods.Pint64(subEntityRows[item]["F_BGP_UnitID_id"]), ConvertExtensionMethods.Pint64(subEntityRows[item]["F_BGP_MeasuringUnit_id"]), num4, ref dictionary);
base.View.Model.SetValue("F_BGP_BaseQtyNew", num4, num);
base.View.Model.SetValue("F_BGP_InventoryNew", num4, num);
base.View.Model.SetValue("F_BGP_MainteCnNew", num5, num);
base.View.Model.SetValue("F_BGP_MainteCn", num5, item);
base.View.Model.SetValue("F_BGP_Inventory", num4, item);
base.View.Model.SetValue("F_BGP_BaseQty", num4, item);
num++;
}
BusinessDataServiceHelper.Save(base.Context, base.View.BusinessInfo, base.View.Model.DataObject);
base.View.ShowMessage("更新完毕");
}
public static DynamicObjectCollection ReceivableDetail1(Context cxt, object fOrg, string leadtime)
{
StringBuilder stringBuilder = new StringBuilder();
SqlParam[] array = new SqlParam[1]
{
new SqlParam("@FORG", KDDbType.String, fOrg)
};
stringBuilder.Append($@"
SELECT t0.fid F_BGP_INVENTORYID
,t0.FSTOCKID,t1.FMaterialId,t0.FLot,t0.FStockUnitId,t0.FBaseUnitId
,t0.FQty,t0.FBaseQty,t0.FStockStatusId,t0.FStockLocId
,DATEDIFF(DAY,t3.Maintdate,GETDATE()) - t2.F_BGP_DAY + 1 overday
,DATEADD(DAY,(t2.F_BGP_DAY + 0.7),t3.Maintdate) as F_BGP_ShouldMainteDate
,ISNULL(t3.FPRODUCEDATE,t0.FPRODUCEDATE) FPRODUCEDATE
,ISNULL(t3.FEXPIRYDATE,t0.FEXPIRYDATE) FEXPIRYDATE
,GETDATE() F_BGP_MAINTEPLANDATE,FOwnerTypeId,FOwnerId,FKeeperTypeId,FKeeperId
,FStockStatusId,FAuxPropId,FSecQty,FSecUnitId,t3.Maintdate
FROM T_STK_INVENTORY t0
INNER JOIN T_BD_MATERIAL t1 on t0.FMATERIALID = t1.FMASTERID AND t0.FSTOCKORGID = t1.FUSEORGID
INNER JOIN T_BGP_MaintainType t2 on t1.F_BGP_MAINTAINCLASS = t2.FID AND t2.FNUMBER = '01'
INNER JOIN (
SELECT ISNULL(t3.F_BGP_MaintDate,t3.FInStockDate) Maintdate,t3.FLOTID,t3.FPRODUCEDATE,t3.FEXPIRYDATE
FROM T_BD_LOTMASTER t3
) t3 on t3.FLOTID=t0.FLot
WHERE 1 = 1
AND DATEDIFF(DAY,t3.Maintdate ,GETDATE()) > t2.F_BGP_DAY - {leadtime} AND t0.FSTOCKORGID = @FORG
AND FBaseQty > 0 AND t1.FDOCUMENTSTATUS='C' AND FStockStatusId = 10000
AND NOT EXISTS (
SELECT 1 FROM T_BGP_MaintePlanB t4
WHERE t4.F_BGP_BaseQty > t4.F_BGP_BaseMaintQty AND t4.F_BGP_INVENTORYID= t0.fid
)
ORDER BY F_BGP_DosageForm,FSTOCKID,FMaterialId ");
return DBServiceHelper.ExecuteDynamicObject(cxt, stringBuilder.ToString(), null, null, CommandType.Text, array);
}
}
}

View File

@@ -0,0 +1,44 @@
declare @FORG int,@leatTime int
set @FORG = 1
SET @leatTime = 30
SELECT t0.fid F_BGP_INVENTORYID
,t0.FSTOCKID
,t1.FMaterialId
,FLot
,FStockUnitId, FBaseUnitId, FQty,FBaseQty, FStockStatusId
,FStockLocId ,DATEDIFF(DAY,Maintdate ,GETDATE())-89 overday
,dateadd(DAY,90.7,Maintdate) as F_BGP_ShouldMainteDate
,ISNULL(t3.FPRODUCEDATE,t0.FPRODUCEDATE) FPRODUCEDATE
,ISNULL(t3.FEXPIRYDATE,t0.FEXPIRYDATE) FEXPIRYDATE
,GETDATE() F_BGP_MAINTEPLANDATE
,FOwnerTypeId
,FOwnerId
,FKeeperTypeId
,FKeeperId
,FStockStatusId
,FAuxPropId
,FSecQty
,FSecUnitId
,Maintdate
FROM T_STK_INVENTORY t0
,T_BD_MATERIAL t1
,T_BGP_MaintainType t2
,(SELECT ISNULL(F_BGP_MaintDate,FInStockDate) Maintdate
,FLOTID,FPRODUCEDATE,FEXPIRYDATE
FROM T_BD_LOTMASTER) t3
WHERE t0.FMaterialId = t1.FMasterId
AND F_BGP_MaintainClass=t2.FID
AND t2.F_BGP_DAY = 90
AND t3.FLOTID=t0.FLot
AND DATEDIFF(DAY,Maintdate ,GETDATE()) > 90 - @leatTime
AND t0.FSTOCKORGID = @FORG
AND FBaseQty > 0
AND t1.FDOCUMENTSTATUS='C'
AND FStockStatusId = 10000
AND t1.FuseORGID=@FORG
AND NOT EXISTS(
SELECT F_BGP_INVENTORYID
FROM T_BGP_MaintePlanB mb
WHERE F_BGP_BaseQty > F_BGP_BaseMaintQty AND F_BGP_INVENTORYID= t0.fid
)
ORDER BY F_BGP_DosageForm,FSTOCKID,FMaterialId

View File

@@ -0,0 +1,28 @@
declare @FORG int,@leatTime int
set @FORG = 1
SET @leatTime = 30
SELECT t0.fid F_BGP_INVENTORYID
,t0.FSTOCKID,t1.FMaterialId,t0.FLot
,t0.FStockUnitId,t0.FBaseUnitId,t0.FQty,t0.FBaseQty
,t0.FStockStatusId,t0.FStockLocId
,DATEDIFF(DAY,t3.Maintdate,GETDATE()) - t2.F_BGP_DAY + 1 overday
,DATEADD(DAY,(t2.F_BGP_DAY + 0.7),t3.Maintdate) as F_BGP_ShouldMainteDate
,ISNULL(t3.FPRODUCEDATE,t0.FPRODUCEDATE) FPRODUCEDATE
,ISNULL(t3.FEXPIRYDATE,t0.FEXPIRYDATE) FEXPIRYDATE
,GETDATE() F_BGP_MAINTEPLANDATE,FOwnerTypeId,FOwnerId,FKeeperTypeId,FKeeperId,FStockStatusId,FAuxPropId,FSecQty,FSecUnitId,t3.Maintdate
FROM T_STK_INVENTORY t0
INNER JOIN T_BD_MATERIAL t1 on t0.FMATERIALID = t1.FMASTERID AND t0.FSTOCKORGID = t1.FUSEORGID
INNER JOIN T_BGP_MaintainType t2 on t1.F_BGP_MAINTAINCLASS = t2.FID AND t2.FNUMBER = '01'
CROSS APPLY (
SELECT ISNULL(t3.F_BGP_MaintDate,t3.FInStockDate) Maintdate,t3.FLOTID,t3.FPRODUCEDATE,t3.FEXPIRYDATE
FROM T_BD_LOTMASTER t3
WHERE t3.FLOTID=t0.FLot
) t3
WHERE 1 = 1
AND DATEDIFF(DAY,t3.Maintdate ,GETDATE()) > t2.F_BGP_DAY - 30 AND t0.FSTOCKORGID = @FORG
AND FBaseQty > 0 AND t1.FDOCUMENTSTATUS='C' AND FStockStatusId = 10000
AND NOT EXISTS (
SELECT 1 FROM T_BGP_MaintePlanB t4
WHERE t4.F_BGP_BaseQty > t4.F_BGP_BaseMaintQty AND t4.F_BGP_INVENTORYID= t0.fid
)
ORDER BY F_BGP_DosageForm,FSTOCKID,FMaterialId

View File

@@ -0,0 +1,103 @@
SELECT DATEDIFF(Day,ISNULL(T3.F_BGP_MAINTDATE,T3.FINSTOCKDATE),GETDATE()) AS DIFFDay
,T2.F_BGP_DAY
,ISNULL(T7.F_BGP_DAY,- 1) AS FNearDAY
,T2.F_BGP_DAY - DATEDIFF(Day,ISNULL(T3.F_BGP_MAINTDATE,GETDATE()),GETDATE()) AS FEnableDay
,T2.FNUMBER
,T0.FSTOCKORGID
,T1.FMATERIALID
,T1.FNUMBER AS FMaterialNum
,T1.F_BGP_ISCOLDCHAIN
,T1.F_BGP_ISSPECIAL
,T1.F_BGP_BIGCLASS
,T6.FNAME AS F_BGP_BIGCLASS_Name
,CONVERT(varchar(10),T1.F_BGP_FIRSTDATE,21) AS F_BGP_FirstDate
,(CASE WHEN T1.F_BGP_FirstDate IS NULL THEN 0 WHEN DATEDIFF(Year,T1.F_BGP_FirstDate,GetDate()) > 1 THEN 0 ELSE 1 END) AS DIFFYear
,(CASE WHEN T1.F_BGP_FirstDate IS NULL THEN 0 ELSE DATEDIFF(Year,T1.F_BGP_FirstDate,GetDate()) END) AS DIFFYear
,T1.F_BGP_MAINTAINCLASS
,'0' AS F_BGP_MainteState
,T0.FSTOCKUNITID
,T0.FBASEUNITID
,T0.FQTY
,T0.FBaseQty
,CONVERT(varchar( 10),isnull(T0.FPRODUCEDATE,T3.FPRODUCEDATE),21) AS FPRODUCEDATE
,CONVERT(varchar(10),isnull(T0.FEXPIRYDATE,T3.FEXPIRYDATE),21) AS FExpiryDate
,T0.FLOT
,T0.FSTOCKID
,T0.FSTOCKLOCID
,T5.FEXPUNIT
,T5.FEXPPERIOD
,CASE WHEN T5.FEXPUNIT = 'M' THEN T5.FExpPeriod
WHEN T5.FEXPUNIT = 'Y' THEN T5.FExpPeriod * 12
WHEN T5.FEXPUNIT = 'D' THEN T5.FExpPeriod / 30 ELSE 0 END AS FExpMonth
,ISNULL(T3.F_BGP_MAINTDATE + CAST(T2.F_BGP_DAY AS int),GETDATE()) AS F_BGP_SHOULDMAINTEDATE
,T3.FINSTOCKDATE
,DATEDIFF(Month,T3.FINSTOCKDATE,GETDATE()) AS FInStockMonth
,T0.FOWNERTYPEID
,T0.FOWNERID
,T0.FKEEPERTYPEID
,T0.FKEEPERID
,T0.FSTOCKSTATUSID
,FAuxPropId
,FSecQty
,FSecUnitId
,t10.FInStockDate FIRFInStockDate
,F_BGP_FirstStatus
,(Case WHEN T10.FInStockDate is null THEN 0 WHEN DateDiff(Year,T10.FInStockDate,GetDate()) > 1 THEN 0 else 1 end) FDIFFYear
,F_BGP_INVENTORYID
FROM (
SELECT fid F_BGP_INVENTORYID
,FSTOCKORGID
,FMATERIALID
,FBASEUNITID
,FSTOCKUNITID
,FLOT
,FSTOCKID
,FSTOCKLOCID
,FPRODUCEDATE
,FEXPIRYDATE
,FOWNERTYPEID
,FOWNERID
,FKEEPERTYPEID
,FKEEPERID
,FSTOCKSTATUSID
,SUM(FQTY) AS FQTY
,SUM(FBASEQTY) AS FBaseQty
,FAuxPropId
,SUM(FSecQty)as FSecQty
,FSecUnitId
FROM dbo.T_STK_INVENTORY
WHERE not exists(
SELECT distinct F_BGP_INVENTORYID
FROM T_BGP_MaintePlanB mb where F_BGP_BaseQty > F_BGP_BaseMaintQty AND F_BGP_INVENTORYID = T_STK_INVENTORY.fid )
GROUP BY FSTOCKORGID
,FMATERIALID
,FBASEUNITID
,FSTOCKUNITID
,FLOT
,FSTOCKID
,FSTOCKLOCID
,FPRODUCEDATE
,FEXPIRYDATE
,FOWNERTYPEID
,FOWNERID
,FKEEPERTYPEID
,FKEEPERID
,FSTOCKSTATUSID
,FAuxPropId
,FSecUnitId
,fid
) AS T0
INNER JOIN dbo.T_BD_MATERIAL AS T1 ON T0.FMATERIALID = T1.FMASTERID AND T0.FSTOCKORGID = T1.FUSEORGID
LEFT JOIN
(
SELECT FMATERIALID
,MIN(FInStockDate)FInStockDate
FROM T_BD_LotMaster
GROUP BY FMATERIALID
)T10 ON T1.FMATERIALID = T10.FMaterialID
INNER JOIN dbo.T_BGP_MaintainType AS T2 ON T1.F_BGP_MAINTAINCLASS = T2.FID
INNER JOIN dbo.T_BD_LOTMASTER AS T3 ON T0.FLOT = T3.FLOTID
INNER JOIN dbo.T_BD_MATERIALSTOCK AS T5 ON T0.FMATERIALID = T5.FMATERIALID
LEFT OUTER JOIN dbo.T_BGP_BigClass_L AS T6 ON T1.F_BGP_BIGCLASS = T6.FID
LEFT OUTER JOIN dbo.T_BGP_EffectType AS T7 ON T1.F_BGP_EFFECTTYPE = T7.FID
WHERE (T0.FBaseQty > 0)