1
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user