using Kingdee.BOS.App.Data; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Util; using Kingdee.K3.BD.NewCode.Core.Utils; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; namespace GZ.LJY000.Biori.STK_TransferDirect { [HotUpdate, Description("直接调拨单服务操作插件#")] public class OperationEventPlugInEx : AbstractOperationServicePlugIn { public override void OnPreparePropertys(PreparePropertysEventArgs e) { base.OnPreparePropertys(e); e.FieldKeys.Add("FToWorkShop"); e.FieldKeys.Add("FRowType"); e.FieldKeys.Add("FPackBillNo"); //e.FieldKeys.Add("FPackBillSeq"); //e.FieldKeys.Add("FPackBillEntryId"); e.FieldKeys.Add("FQty"); e.FieldKeys.Add("FPackBarCode"); DynamicObjectCollection Ab = null; List aa = new List(); aa.CopyTo(Ab.ToArray(), 0); } public override void OnAddValidators(AddValidatorsEventArgs e) { base.OnAddValidators(e); if (this.FormOperation.OperationId == 1) { ////添加检查校验器: //var validator = new VaildatorEventPlugInEx();//新增的校验器 //validator.EntityKey = "FEntity"; //e.Validators.Add(validator);//添加校验器 } } public override void EndOperationTransaction(EndOperationTransactionArgs e) { base.EndOperationTransaction(e); //保存8 提交9 审核1 反审核26 删除3 if (this.FormOperation.OperationId == 1) { DoComputePackgeQty(e.DataEntitys, false); } else if (this.FormOperation.OperationId == 26) { DoComputePackgeQty(e.DataEntitys, true); } } /// /// /// /// /// private void DoComputePackgeQty(DynamicObject[] dataEntitys, bool isInStock) { var dataEntityList = new List(); var sqlL = new List(); foreach (var data in dataEntitys) { var toWorkShop = data["FToWorkShop"].Long2Int(); foreach (var item in data["TransferDirectEntry"] as DynamicObjectCollection) { var packBillNo = item["FPackBillNo"]; var rowType = item["RowType"].ToString(); if (!packBillNo.IsNullOrEmpty() && rowType.Equals("Parent") && toWorkShop == 1) { sqlL.Add($" SELECT '{packBillNo}' AS FBILLNO , {item["Qty"]} AS QTY "); } } } if (isInStock) DoComputePackgeInStockQty(sqlL); else DoComputePackgeOutStockQty(sqlL); } /// /// 入库操作 /// /// private void DoComputePackgeInStockQty(List sqlL) { if (sqlL.Any()) { var updSqlL = $@"/*dialect*/ WITH #基础数据 AS ( {string.Join(" UNION ALL ", sqlL)} ) UPDATE t0 SET t0.FQTY = t0.FQTY + t1.QTY ,t0.FOUTSTOCKQTY = t0.FOUTSTOCKQTY - t1.QTY FROM T_PRD_PACKAGEINSTOCK t0 INNER JOIN #基础数据 t1 on t1.FBILLNO = t0.FBILLNO WHERE 1 = 1 AND t0.FDOCUMENTSTATUS = 'C' "; //更新组装单信 var resData = DBUtils.Execute(this.Context, updSqlL); if (resData > 0) { updSqlL = $@"/*dialect*/ WITH #基础数据 AS ( {string.Join(" UNION ALL ", sqlL)} ) UPDATE t0e SET t0e.FQTY = t0e.FQTY + (t1.QTY / t2.FDENOMINATOR * t2.FNUMERATOR) * 1.05 FROM T_PRD_PACKAGEINSTOCK t0 INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID INNER JOIN #基础数据 t1 on t1.FBILLNO = t0.FBILLNO INNER JOIN T_ENG_BOMCHILD t2 on t2.FID = t0.FBOMID AND t2.FMATERIALID = t0e.FMATERIALID WHERE 1 = 1 AND t0.FDOCUMENTSTATUS = 'C' "; var res = DBUtils.Execute(this.Context, updSqlL); } return; } } /// /// 出库操作 /// /// private void DoComputePackgeOutStockQty(List sqlL) { if (sqlL.Any()) { var updSqlL = $@"/*dialect*/ WITH #基础数据 AS ( {string.Join(" UNION ALL ", sqlL)} ) UPDATE t0 SET t0.FQTY = t0.FQTY - t1.QTY ,t0.FOUTSTOCKQTY = t0.FOUTSTOCKQTY + t1.QTY FROM T_PRD_PACKAGEINSTOCK t0 INNER JOIN #基础数据 t1 on t1.FBILLNO = t0.FBILLNO WHERE 1 = 1 AND t0.FDOCUMENTSTATUS = 'C' AND (t0.FQTY - t1.QTY) >= 0 "; //更新组装单信 var resData = DBUtils.Execute(this.Context, updSqlL); if (resData > 0) { updSqlL = $@"/*dialect*/ WITH #基础数据 AS ( {string.Join(" UNION ALL ", sqlL)} ) UPDATE t0e SET t0e.FQTY = t0e.FQTY - (t1.QTY / t2.FDENOMINATOR * t2.FNUMERATOR) * 1.05 FROM T_PRD_PACKAGEINSTOCK t0 INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID INNER JOIN #基础数据 t1 on t1.FBILLNO = t0.FBILLNO INNER JOIN T_ENG_BOMCHILD t2 on t2.FID = t0.FBOMID AND t2.FMATERIALID = t0e.FMATERIALID WHERE 1 = 1 AND t0.FDOCUMENTSTATUS = 'C' "; var res = DBUtils.Execute(this.Context, updSqlL); } return; } } } }