Пример #1
0
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            //base.AfterExecuteOperationTransaction(e);

            //var task = Task.Factory.StartNew(() => {
            //                                            List<AbsSynchroDataInfo> temp = new List<AbsSynchroDataInfo>();
            //                                            if (e.DataEntitys == null) return;
            //                                            List<DynamicObject> dataEntitys = e.DataEntitys.ToList();

            //                                            if (dataEntitys == null || dataEntitys.Count <= 0)
            //                                            {
            //                                                return;
            //                                            }

            //                                            List<AbsSynchroDataInfo> datas = GetK3Datas(this.Context, dataEntitys).ToList();

            //                                            if (datas != null && datas.Count > 0)
            //                                            {
            //                                                if (temp.All(a => datas.Any(b => a.Equals(b))))
            //                                                {
            //                                                    temp = temp.Concat(datas).ToList();

            //                                                    if (IsConnectSuccess(this.Context))
            //                                                    {
            //                                                        this.DyamicObjects = e.DataEntitys.ToList();
            //                                                        SynchroK3DataToWebSite(this.Context);
            //                                                        SynchroDataHelper.WriteSynSalOrderStatus(this.Context, temp.Select(o => (K3SalOrderStatusInfo)o).ToList());

            //                                                    }
            //                                                }

            //                                            }
            //                                        }
            //                                );
        }
Пример #2
0
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);
            StatisticsSaleOrder statics = new StatisticsSaleOrder();

            var task = Task.Factory.StartNew(() =>
            {
                if (e.DataEntitys == null)
                {
                    return;
                }
                List <DynamicObject> dataEntitys = e.DataEntitys.ToList();

                if (dataEntitys == null || dataEntitys.Count <= 0)
                {
                    return;
                }

                this.DyamicObjects = e.DataEntitys.ToList();
                SynchroK3DataToWebSite(this.Context);

                if (e.DataEntitys != null && e.DataEntitys.Count() > 0)
                {
                    statics.StatisticsOrderCount(this.Context, e.DataEntitys.ToList());
                }
            }
                                             );
        }
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            try
            {
                string sql = string.Empty;
                if (e.DataEntitys != null && e.DataEntitys.Count <DynamicObject>() > 0)
                {
                    foreach (DynamicObject item in e.DataEntitys)
                    {
                        //收款单id
                        string Fid = item["Id"].ToString();
                        sql = string.Format(@"/*dialect*/ update T_AR_RECEIVEBILLSRCENTRY  SET FORDERQTY=t2.FQTY FROM T_AR_RECEIVEBILLSRCENTRY t1 
                                                inner join T_SAL_ORDERENTRY  t2 on t1.FORDERENTRYID=t2.FENTRYID 
                                                left join T_AR_RECEIVEBILL t3 on t3.FID=t1.FID where t3.FID={0}", Fid);

                        //更新收款单上的销售订单数量
                        DBServiceHelper.Execute(Context, sql);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new KDException("", "更新收款单上的销售订单数量失败:" + ex.ToString());
            }
        }
Пример #4
0
 public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
 {
     if (result != null && !result.Success && !string.IsNullOrWhiteSpace(result.Message))
     {
         throw new Exception(result.Message);
     }
 }
Пример #5
0
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            //base.AfterExecuteOperationTransaction(e);

            //var task = Task.Factory.StartNew(() => {
            //                                            if (e.DataEntitys == null || e.DataEntitys.Count() < 0)
            //                                            {
            //                                                return;
            //                                            }

            //                                            AbstractModifySalOrder modify = new ModifySalOrderPlugIn();
            //                                            List<DynamicObject> dataEntitys = e.DataEntitys.ToList();

            //                                            List<K3SalOrderInfo> orders = GetOrders(dataEntitys);
            //                                            List<HttpResponseResult> results = modify.SendRequest(this.Context, orders, RequestType.LOCK);

            //                                            if (results != null)
            //                                            {
            //                                                if (results.GroupBy(r => r.Success == true).ToList().Count != 1)
            //                                                {
            //                                                    throw new Exception("不符合合单条件");
            //                                                }
            //                                            }
            //                                            else
            //                                            {
            //                                                throw new Exception("Redis服务器没有反应!");
            //                                            }
            //                                        }
            //                                );
        }
Пример #6
0
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            var viewService = ServiceHelper.GetService <IViewService>();
            var saveService = ServiceHelper.GetService <ISaveService>();

            var mirrorField     = this.BusinessInfo.GetField("FMirrorId").AsType <BaseDataField>();
            var supMetadata     = FormMetaDataCache.GetCachedFormMetaData(this.Context, mirrorField.LookUpObject.FormId);
            var supBusinessInfo = supMetadata.BusinessInfo.GetSubBusinessInfo("FPHMXContactId");
            var supField        = supBusinessInfo.GetField("FPHMXContactId").AsType <BaseDataField>();

            //获取物料数据包。
            var dataEntities = e.SelectedRows.Select(data => data.DataEntity)
                               .Where(data => data.FieldProperty <DynamicObject>(mirrorField) != null)
                               .Where(data => !data.PkId <string>().IsNullOrEmptyOrWhiteSpace())
                               .Where(data => !data.PkId <string>().EqualsIgnoreCase(data.FieldProperty <DynamicObject>(mirrorField).FieldRefProperty <DynamicObject>(mirrorField, "FPHMXContactId").PkId <string>()))
                               .Select(data =>
            {
                var sup = data.FieldProperty <DynamicObject>(mirrorField);
                supField.RefIDDynamicProperty.SetValue(sup, data.PkId <string>());                   //先把对应的主键赋值过去。
                return(sup);
            }).ToArray();

            if (!dataEntities.Any())
            {
                return;
            }

            //获取分配的数据包
            var masterIds = dataEntities.Select(data => data.MasterId()).Distinct().ToList();

            if (!masterIds.Any())
            {
                masterIds.Add(0);
            }
            var para = new QueryBuilderParemeter();

            para.FormId = mirrorField.LookUpObject.FormId;
            para.FilterClauseWihtKey = "FMasterId in (Select FID From TABLE(fn_StrSplit(@MasterIds,',',1))) and FSUPPLIERID <> FMasterId";
            para.SqlParams.Add(new SqlParam("@MasterIds", KDDbType.udt_inttable, masterIds));
            var allocateEntities = viewService.LoadFromCache(this.Context, mirrorField.RefFormDynamicObjectType, para);

            //为分配的数据包关联赋值。
            dataEntities.Join(allocateEntities,
                              left => left.MasterId <int>(),
                              right => right.MasterId <int>(),
                              (left, right) =>
            {
                supField.RefIDDynamicProperty.SetValue(right, left.FieldRefIdProperty <string>(supField));
                return(right);
            }).ToArray();
            //合并两个数据包,再补充里面字段数据包并无事务保存。
            var merge = dataEntities.Concat(allocateEntities).ToArray();

            if (merge.Any())
            {
                saveService.Save(this.Context, merge);
            }

            base.AfterExecuteOperationTransaction(e);
        } //end method
Пример #7
0
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);
            HttpResponseResult result = null;
            var task = Task.Factory.StartNew(() =>
            {
                if (e.DataEntitys == null)
                {
                    return;
                }
                List <DynamicObject> dataEntitys = e.DataEntitys.ToList();

                if (dataEntitys == null || dataEntitys.Count <= 0)
                {
                    return;
                }

                this.DyamicObjects = e.DataEntitys.ToList();
                SynchroK3DataToWebSite(this.Context);
                IEnumerable <AbsSynchroDataInfo> datas = GetK3Datas(this.Context, this.DyamicObjects, ref result);

                if (datas != null && datas.Count() > 0)
                {
                    LogHelper.WriteSynSalOrderStatus(this.Context, datas.Select(o => (K3SalOrderStatusInfo)o).ToList());
                }
            }
                                             );
        }
Пример #8
0
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);
            if (!e.DataEntitys.Any())
            {
                return;
            }
            var metas = this.FormOperation.AppBusinessService.Where(item => item.IsEnabled)
                        .Where(item => !item.IsForbidden)
                        .Where(item => item is AutoPushBusinessServiceMeta)
                        .Cast <AutoPushBusinessServiceMeta>()
                        .Where(item => item.RealSourceFormId.EqualsIgnoreCase(this.BusinessInfo.GetForm().Id))
                        .Where(item => item.TargetFormId.EqualsIgnoreCase(PIWMSFormPrimaryKey.Instance.InNotice()))
                        .ToArray();

            if (!metas.Any())
            {
                return;
            }
            var convertService   = ServiceHelper.GetService <IConvertService>();
            var doNothingService = ServiceHelper.GetService <IDoNothingService>();

            foreach (var meta in metas)
            {
                var rule = convertService.GetConvertRules(this.Context, meta.RealSourceFormId, meta.TargetFormId)
                           .Where(item => item.Status)
                           .Where(item => meta.ConvertRuleKey.IsNullOrEmptyOrWhiteSpace() ? item.IsDefault : meta.ConvertRuleKey.EqualsIgnoreCase(item.Key))
                           .FirstOrDefault();
                if (rule == null)
                {
                    continue;
                }

                var entryKey     = rule.GetDefaultConvertPolicyElement().SourceEntryKey;
                var selectedRows = e.DataEntitys.SelectMany(data => data.EntryProperty(this.BusinessInfo.GetEntity(entryKey))
                                                            .Where(entry => entry.FieldProperty <bool>(this.BusinessInfo.GetField(this.AutoPushFieldKey)))
                                                            .Select(entry => new { EntryId = entry.PkId().ToChangeTypeOrDefault <string>(), BillId = data.PkId().ToChangeTypeOrDefault <string>() }))
                                   .Select(a => new ListSelectedRow(a.BillId, a.EntryId, 0, rule.SourceFormId).Adaptive(row =>
                {
                    row.EntryEntityKey = entryKey;
                    return(row);
                })).ToArray();
                if (!selectedRows.Any())
                {
                    continue;
                }

                PushArgs pushArgs   = new PushArgs(rule, selectedRows);
                var      pushResult = convertService.Push(this.Context, pushArgs);
                this.OperationResult.MergeResult(pushResult);
                if (pushResult.IsSuccess)
                {
                    rule.TargetFormMetadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, rule.TargetFormId);
                    var dataEntities = pushResult.TargetDataEntities.Select(data => data.DataEntity).ToArray();
                    var uploadResult = doNothingService.DoNothingWithDataEntity(this.Context, rule.TargetFormMetadata.BusinessInfo, dataEntities, "Upload");
                    this.OperationResult.MergeResult(uploadResult);
                } //end if
            }     //end foreach
        }         //end method
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            if (e.DataEntitys != null && e.DataEntitys.Count <DynamicObject>() > 0)
            {
                foreach (DynamicObject item in e.DataEntitys)
                {
                    long biiID = Convert.ToInt64(item["Id"]);
                    DynamicObjectCollection entityCollection = item["HS_AdjustmentBillEntry"] as DynamicObjectCollection;
                    if (Convert.ToString(item["BillTYpe_Id"]).Equals("4d20243e32b14834aae8a96525354bcd"))//入库成本调整单
                    {
                        foreach (DynamicObject entity in entityCollection)
                        {
                            long   xmxxID      = -1;
                            long   PURCHASERID = -1;
                            string billNo      = Convert.ToString(entity["SrcBillNo"]);
                            string strSql      = string.Format(@"/*dialect*/select F_PAEZ_XMXX,FPURCHASERID from t_STK_InStock where fbillno = '{0}'", billNo);
                            using (IDataReader reader = DBUtils.ExecuteReader(this.Context, strSql))
                            {
                                while (reader.Read())
                                {
                                    xmxxID      = Convert.ToInt64(reader["F_PAEZ_XMXX"]);
                                    PURCHASERID = Convert.ToInt64(reader["FPURCHASERID"]);
                                }
                            }
                            if (xmxxID != -1)
                            {
                                string updateSql = string.Format(@"update T_HS_AdjustmentBillEntry set FProjectBillNo = {0} where FSRCBILLNO = '{1}' and fid = {2}", xmxxID, billNo, biiID);
                                DBUtils.Execute(this.Context, updateSql);
                            }
                            if (PURCHASERID != -1)
                            {
                                string updateSql = string.Format(@"update T_HS_AdjustmentBillEntry set F_Detail_PURCHASERID = {0} where FSRCBILLNO = '{1}' and fid = {2}", PURCHASERID, billNo, biiID);
                                DBUtils.Execute(this.Context, updateSql);
                            }
                        }
                    }
                    //if (Convert.ToString(item["BillTYpe_Id"]).Equals("d040f688e69b406186aecfb5d9a86101"))//出库成本调整单
                    //{
                    //    foreach (DynamicObject entity in entityCollection)
                    //    {
                    //        string billNo = Convert.ToString(entity["SrcBillNo"]);

                    //        string strSql = string.Format(@"/*dialect*/select distinct a.FProjectBillNo from T_HS_AdjustmentBillEntry a inner join T_HS_AdjustmentBill b on a.FID = b.FID where b.FBILLNO = '{0}'", billNo);
                    //        long xmxxID = DBUtils.ExecuteScalar<long>(this.Context, strSql, -1, null);
                    //        if (xmxxID != -1)
                    //        {
                    //            string updateSql = string.Format(@"update T_HS_AdjustmentBillEntry set FProjectBillNo = {0} where FSRCBILLNO = '{1}' and fid = {2}", xmxxID, billNo, biiID);
                    //            DBUtils.Execute(this.Context, updateSql);
                    //        }
                    //    }
                    //}
                }
            }
        }
Пример #10
0
 public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
 {
     base.AfterExecuteOperationTransaction(e);
     if (e.DataEntitys != null && e.DataEntitys.Count <DynamicObject>() > 0)
     {
         foreach (DynamicObject item in e.DataEntitys)
         {
             item["BusinessType"] = "NORMAL";//普通销售
         }
     }
 }
Пример #11
0
        /// <summary>
        /// 在检验单的保存或审核时,会把酶活相关数据反写到收料单,导致收料单上的酶活量跟批次号主档资料里面的跟踪信息对不上,这里重新保存一下收料单以便刷新批号主档资料
        /// </summary>
        /// <param name="e"></param>
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);

            if (e.DataEntitys.IsEmpty())
            {
                return;
            }
            List <long> lstEntrys = new List <long>();

            foreach (var item in e.DataEntitys)
            {
                DynamicObjectCollection dyCollection = item["Entity"] as DynamicObjectCollection;
                foreach (DynamicObject dyEntry in dyCollection)
                {
                    lstEntrys.Add(Convert.ToInt64(dyEntry["Id"]));
                }
            }
            List <string> sqlLst = new List <string>();
            //先根据检验单与收料单的酶活总量的差异更新即时库存主表
            string sql = string.Format(@"/*dialect*/   
                        update t set t.FSECQTY=t.FSECQTY-(FUPDATESECQTY-FAUXUNITQTY)
                        from T_STK_INVENTORY t inner join (
                        select b.FJNQTY,x.FAUXUNITQTY,x.FENTRYID,tg.FUPDATESECQTY,tg.FLOGID,tg.FINVENTORYID
                         from  T_QM_INSPECTBILLENTRY_LK c  
                        inner join T_QM_INSPECTBILLENTRY b on c.FENTRYID=b.FENTRYID
                        inner join  T_PUR_ReceiveEntry x on x.FENTRYID =c.fsid and x.fid =c.FSBILLID
                        inner join (select MAX(FUPDATETIME) as FLastTime,FSOURENTRYID,FSOURFORMID from T_STK_INVENTORYLOG where FSOURFORMID='PUR_ReceiveBill' and FOPERATIONNUMBER='Audit'
                        group by FSOURENTRYID,FSOURFORMID) tgg on tgg.FSOURENTRYID=x.FENTRYID
                        inner join  T_STK_INVENTORYLOG tg on tg.FSOURFORMID=tgg.FSOURFORMID and tg.FSOURENTRYID=tgg.FSOURENTRYID and tg.FUPDATETIME=tgg.FLastTime
                        where  c.FRULEID ='QM_PURReceive2Inspect' and  c.FENTRYID in ({0}) 
                        and tg.FUPDATESECQTY<>x.FAUXUNITQTY) t1 on t.FID=t1.FINVENTORYID ;", string.Join(",", lstEntrys));

            sqlLst.Add(sql);
            //先根据检验单与收料单的酶活总量的差异更新即时库存日志表
            sql = string.Format(@"/*dialect*/   
                        update tg set tg.FUPDATESECQTY=x.FAUXUNITQTY
                         from  T_QM_INSPECTBILLENTRY_LK c  
                        inner join T_QM_INSPECTBILLENTRY b on c.FENTRYID=b.FENTRYID
                        inner join  T_PUR_ReceiveEntry x on x.FENTRYID =c.fsid and x.fid =c.FSBILLID
                        inner join (select MAX(FUPDATETIME) as FLastTime,FSOURENTRYID,FSOURFORMID from T_STK_INVENTORYLOG where FSOURFORMID='PUR_ReceiveBill' and FOPERATIONNUMBER='Audit'
                        group by FSOURENTRYID,FSOURFORMID) tgg on tgg.FSOURENTRYID=x.FENTRYID
                        inner join  T_STK_INVENTORYLOG tg on tg.FSOURFORMID=tgg.FSOURFORMID and tg.FSOURENTRYID=tgg.FSOURENTRYID and tg.FUPDATETIME=tgg.FLastTime
                        where  c.FRULEID ='QM_PURReceive2Inspect' and c.FENTRYID in ({0}) 
                        and tg.FUPDATESECQTY<>x.FAUXUNITQTY ;", string.Join(",", lstEntrys));
            sqlLst.Add(sql);


            if (sqlLst.Count > 0)
            {
                DBUtils.ExecuteBatch(this.Context, sqlLst, 2);
            }
        }
Пример #12
0
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);
            string          strSql = "INSERT INTO t_demo_purServTest(FID,FNAME,FCREATEDATE) VALUES(@ID,@NAME,@CREATEDATE)";
            List <SqlParam> paras  = new List <SqlParam> {
                new SqlParam("@ID", KDDbType.Int32, DateTime.Now.Second),
                new SqlParam("@Name", KDDbType.String, "AfterExecuteOperationTransaction"),
                new SqlParam("@CREATEDATE", KDDbType.DateTime, DateTime.Now)
            };

            DBUtils.ExecuteStoreProcedure
            DBUtils.Execute(this.Context, strSql, paras);
        }
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);
            var sql = "SELECT EntryID,MaterialID,MateriNumber,MaterialName,SupplierID,SupplierName,Price,Bitmap FROM dbo.SY_V_PRICELIST";

            using (DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql))
            {
                var table = ds.Tables[0];
                table.TableName = "JPTPrice";
                TableSender sender = new TableSender(table);
                sender.TransportData();
            }
        }
Пример #14
0
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            //base.AfterExecuteOperationTransaction(e);

            //var task = Task.Factory.StartNew(() => {
            //                                            if (e.DataEntitys == null || e.DataEntitys.Count() < 0)
            //                                            {
            //                                                return;
            //                                            }

            //                                            List<DynamicObject> dataEntitys = e.DataEntitys.ToList();
            //                                            List<DeliveryNotice> notices = GetDeliveryNotices(dataEntitys);
            //                                        }
            //                                );
        }
 public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
 {
     base.AfterExecuteOperationTransaction(e);
     foreach (var dataEntity in e.DataEntitys)
     {
         var a   = Convert.ToString(dataEntity["ID"]);
         var sql = $"SELECT F_SY_PLEntryID AS EntryID,F_SY_MATERIAL AS CloudMatID,sup.FNAME AS [CloudSupplierName],de.F_SY_RAmount AS [Price] ,F_SY_SUPPLIER as SupplierID FROM SY_T_KeyRFQDetail de LEFT JOIN dbo.T_BD_SUPPLIER_L sup ON de.F_SY_SUPPLIER=sup.FSUPPLIERID WHERE FID ={a}";
         using (DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql))
         {
             var table = ds.Tables[0];
             table.TableName = "JPTPlan";
             TableSender sender = new TableSender(table);
             sender.TransportData();
         }
     }
 }
Пример #16
0
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);
            if (e.DataEntitys == null)
            {
                return;
            }
            var billGroups = e.DataEntitys;

            //List<string> sql = new List<string>();
            foreach (var billGroup in billGroups)
            {
                string billno = Convert.ToString(billGroup["Billno"]);
                string sql    = string.Format(@"/*dialect*/update T_IV_SALESICENTRY set FALLAMOUNTVIEW=t2.FALLAMOUNT,FDISCOUNTAMOUNTVIEW=t2.FDISCOUNTAMOUNT,FDETAILTAXAMOUNTVIEW=t2.FDETAILTAXAMOUNT,FNOTAXAMOUNTVIEW=t2.FNOTAXAMOUNT from T_IV_SALESICENTRY t1 join T_IV_SALESICENTRY_o t2 on t2.FENTRYID=t1.FENTRYID join T_IV_SALESIC t3 on t3.fid =t1.fid where t3.Fbillno='{0}'", billno);
                DBUtils.Execute(this.Context, sql);
            }
        }
Пример #17
0
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);

            /*
             * 标准件入库单
             * 单据头
             * 入库单号
             * 项目号
             * 单据体
             * 物料编号
             * 数量
             * 批号
             * ************************************
             * 外协件入库单
             * 单据头
             * 入库单号
             * 项目号
             * 单据体
             * 物料编号
             * 数量
             * 批号
             * 外协计划号
             */
            if (e.DataEntitys != null && e.DataEntitys.Count <DynamicObject>() > 0)
            {
                foreach (DynamicObject DataEntity in e.DataEntitys)
                {
                    //标准采购入库
                    if (Convert.ToString(DataEntity["FBillTypeID_Id"]).Equals("a1ff32276cd9469dad3bf2494366fa4f"))
                    {
                        string sJon = CreateJson(DataEntity);
                        if (!sJon.Equals("传递参数拼接失败"))
                        {
                            //ResManager
                            //调用MES提供的接口
                        }
                    }
                    //外协采购入库
                    else if (Convert.ToString(DataEntity["FBillTypeID"]).Equals(""))
                    {
                        CreateJson(DataEntity);
                    }
                }
            }
        }
Пример #18
0
        /// </summary>
        /// <param name="e"></param>
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);

            if (this.OperationResult.IsSuccess && IdList != null && IdList.Count() > 0)
            {

                foreach (string RKTZD in IdList)
                {

                    string SQL = "/*dialect*/update  SZXY_t_BZRKTZD set F_SZXY_RKDNO=''  where FID='" + RKTZD + "'";

                    DBServiceHelper.Execute(this.Context, SQL);
                }
            }

        }
Пример #19
0
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);

            //仅支持从WebAPI提交数据后自动在线程中下推目标单据。
            if (this.Context.ClientInfo.ClientType != ClientType.WebApi)
            {
                return;
            }

            var dataEntities = e.SelectedRows.Select(row => row.DataEntity).ToArray();

            MainWorker.QuequeTask(() =>
            {
                var doNothingService = ServiceHelper.GetService <IDoNothingService>();
                var result           = doNothingService.DoNothingWithDataEntity(this.Context, this.BusinessInfo, dataEntities, "PHMXGenTarget");
                result.RepairPKValue();
                var collection = result.OperateResult.GetFailResult();
                if (!collection.Any())
                {
                    return;
                }
                var logs = collection.Select(item => new LogObject
                {
                    SubSystemId  = this.BusinessInfo.GetForm().SubsysId,
                    ObjectTypeId = this.BusinessInfo.GetForm().Id,
                    pkValue      = item.PKValueIsNullOrEmpty ? item.PKValue.ToString() : string.Empty,
                    OperateName  = this.FormOperation.OperationName.Value(this.Context),
                    Description  = item.Message,
                    Environment  = OperatingEnvironment.BizOperate
                }).ToList();
                if (logs.Any())
                {
                    var logService = ServiceHelper.GetService <ILogService>();
                    logService.BatchWriteLog(this.Context, logs);
                }//end if
            },
                                  callback =>
            {
                if (callback.Success)
                {
                    Logger.Error(this.GetType().FullName, callback.Message, callback.Exception);
                } //end if
            });
        }         //end method
Пример #20
0
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            //base.AfterExecuteOperationTransaction(e);

            //var task = Task.Factory.StartNew(() =>
            //{
            //    SynchroK3DataToWebSite(this.Context,synDatas);
            //    if (this.BusinessInfo.GetForm().Id.CompareTo("HS_List_ID") == 0)
            //    {
            //        if (synDatas != null && synDatas.Count() > 0)
            //        {
            //            List<ListInfo> listInfos = synDatas.Select(i => (ListInfo)i).ToList();
            //            UpdateMaterialInfo(this.Context, listInfos);
            //        }
            //    }
            //}
            //);
        }
Пример #21
0
 public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
 {
     base.AfterExecuteOperationTransaction(e);
     if (e.DataEntitys != null && e.DataEntitys.Count <DynamicObject>() > 0)
     {
         foreach (DynamicObject item in e.DataEntitys)
         {
             long materialId = Convert.ToInt64(item["id"]);
             //查询批号主档,确认该物料是否在系统中存在历史批号
             //通过物料id获取masterID
             string masterSql = string.Format(@"/*dialect*/SELECT FMASTERID FROM T_BD_MATERIAL WHERE FMATERIALID = {0}", materialId);
             long   masterId  = DBUtils.ExecuteScalar <long>(this.Context, masterSql, 0, null);
             if (masterId != 0)
             {
                 //通过masterId获取所有materialIds
                 string materialidSql        = string.Format(@"/*dialect*/SELECT FMATERIALID FROM T_BD_MATERIAL WHERE FMASTERID = {0}", masterId);
                 DynamicObjectCollection doc = DBUtils.ExecuteDynamicObject(this.Context, materialidSql) as DynamicObjectCollection;
                 string materialIds          = "";
                 foreach (DynamicObject dt in doc)
                 {
                     materialIds += "," + Convert.ToInt64(dt["FMATERIALID"]) + "";
                 }
                 materialIds = materialIds.Substring(1);
                 string phSql  = string.Format(@"/*dialect*/ SELECT FNUMBER FROM T_BD_LOTMASTER WHERE FMATERIALID in ({0})", materialIds);
                 string result = DBUtils.ExecuteScalar <string>(this.Context, phSql, "noResult", null);
                 DynamicObjectCollection phcol = DBUtils.ExecuteDynamicObject(this.Context, phSql) as DynamicObjectCollection;
                 if (phcol.Count() <= 0)
                 {
                     //更新语句
                     string strSql = string.Format(@"/*dialect*/UPDATE T_BD_MATERIALINVPTY SET FISAFFECTCOST=1 WHERE FINVPTYID=10004 and FISENABLE=1 and FISAFFECTCOST=0 and FMATERIALID = {0}", materialId);
                     DBUtils.Execute(this.Context, strSql);
                 }
                 ////批号主档没有对应物料批号
                 //if (result.Equals("noResult"))
                 //{
                 //    //更新语句
                 //    string strSql = string.Format(@"/*dialect*/UPDATE T_BD_MATERIALINVPTY SET FISAFFECTCOST=1 WHERE FINVPTYID=10004 and FISENABLE=1 and FISAFFECTCOST=0 and FMATERIALID = {0}", materialId);
                 //    DBUtils.Execute(this.Context, strSql);
                 //}
             }
         }
     }
 }
Пример #22
0
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            //base.AfterExecuteOperationTransaction(e);

            //var task = Task.Factory.StartNew(() => {
            //                                            if (e.DataEntitys == null) return;
            //                                            List<DynamicObject> dataEntitys = e.DataEntitys.ToList();

            //                                            if (dataEntitys == null || dataEntitys.Count <= 0)
            //                                            {
            //                                                return;
            //                                            }

            //                                            foreach (var item in dataEntitys)
            //                                            {
            //                                                if (item != null)
            //                                                {
            //                                                    int count = StatisticsOrderCount(this.Context, item);
            //                                                }
            //                                            }
            //                                        }
            //                                );
        }
Пример #23
0
        /// <summary>
        /// 按钮事件完毕开始检查费用应付单自动生成成本调整单
        /// </summary>
        /// <param name="e"></param>
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);

            if (this.OperationResult.IsSuccess && selectedRows != null && selectedRows.Count() != 0)
            {
                //foreach (DynamicObject dy in selectedRows)
                //{
                //    string Id = Convert.ToString(dy["Id"]);

                //    DynamicObject checkObejct = Utils.LoadFIDBillObject(this.Context, "PRD_INSTOCK", Id);

                //    string BILLNO = Convert.ToString(checkObejct["FBILLNO"]);

                //    string RKTZD = Convert.ToString(checkObejct["F_SZXY_RKTZD"]);

                //    string SQL = "/*dialect*/update  SZXY_t_BZRKTZD set F_SZXY_RKDNO=''  where FID='"+ RKTZD + "'";

                //    DBServiceHelper.Execute(this.Context, SQL);

                //}
            }
        }
Пример #24
0
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            var mirrorField  = this.BusinessInfo.GetField("FMirrorId").AsType <BaseDataField>();
            var orgMetadata  = FormMetaDataCache.GetCachedFormMetaData(this.Context, mirrorField.LookUpObject.FormId);
            var orgFieldKeys = mirrorField.GetRefPropertyKeys();

            if (orgFieldKeys.Any(key => !key.EqualsIgnoreCase("FPHMXContactId")))
            {
                orgFieldKeys.Add("FPHMXContactId");
            }
            var orgBusinessInfo = orgMetadata.BusinessInfo.GetSubBusinessInfo(orgFieldKeys);
            var orgField        = orgBusinessInfo.GetField("FPHMXContactId").AsType <BaseDataField>();

            //获取物料数据包。
            var dataEntities = e.SelectedRows.Select(data => data.DataEntity)
                               .Where(data => data.FieldProperty <DynamicObject>(mirrorField) != null)
                               .Where(data => !data.PkId <string>().IsNullOrEmptyOrWhiteSpace())
                               .Where(data => !data.PkId <string>().EqualsIgnoreCase(data.FieldProperty <DynamicObject>(mirrorField).FieldRefProperty <DynamicObject>(mirrorField, "FPHMXContactId").PkId <string>()))
                               .Select(data =>
            {
                var org = data.FieldProperty <DynamicObject>(mirrorField);
                orgField.RefIDDynamicProperty.SetValue(org, data.PkId <string>());                   //先把对应的主键赋值过去。
                return(org);
            }).ToArray();

            //再补充里面字段数据包并无事务保存。
            if (dataEntities.Any())
            {
                var viewService = ServiceHelper.GetService <IViewService>();
                dataEntities.Mend(orgField, ids => viewService.LoadFromCache(this.Context, ids, this.BusinessInfo.GetSubBusinessInfo(orgField.GetRefPropertyKeys()).GetDynamicObjectType()));

                var saveSevice = ServiceHelper.GetService <ISaveService>();
                saveSevice.Save(this.Context, dataEntities);
            }

            base.AfterExecuteOperationTransaction(e);
        } //end method
Пример #25
0
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);

            var task = Task.Factory.StartNew(() =>
            {
                string docmentStatus  = null;
                List <string> numbers = null;

                if (e.DataEntitys == null)
                {
                    return;
                }

                List <DynamicObject> dataEntitys = e.DataEntitys.ToList();

                if (dataEntitys == null || dataEntitys.Count <= 0)
                {
                    return;
                }

                if (dataEntitys != null && dataEntitys.Count > 0)
                {
                    numbers = new List <string>();

                    foreach (var item in dataEntitys)
                    {
                        docmentStatus = SQLUtils.GetFieldValue(item, "DocumentStatus");
                        numbers.Add(SQLUtils.GetFieldValue(item, "BillNo"));
                    }
                }

                this.DyamicObjects = e.DataEntitys.ToList();
                SynchroK3DataToWebSite(this.Context);
            }
                                             );
        }
Пример #26
0
        /// <summary>
        /// 在检验单的保存或审核时,会把酶活相关数据反写到收料单,导致收料单上的酶活量跟批次号主档资料里面的跟踪信息对不上,这里重新保存一下收料单以便刷新批号主档资料
        /// </summary>
        /// <param name="e"></param>
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);

            if (e.DataEntitys.IsEmpty())
            {
                return;
            }

            string sql = @"/*dialect*/   
                        update t set t.FSECQTY =x.FACTRECEIVEQTY * x.FJNUnitEnzymes 
	                    from  T_QM_INSPECTBILL a   
	                    inner join T_QM_INSPECTBILLENTRY b on a.fid=b.fid
	                    inner join  T_QM_INSPECTBILLENTRY_LK c on b.FENTRYID =c.FENTRYID  and c.FRULEID ='QM_PURReceive2Inspect'  
	                    inner join  T_PUR_ReceiveEntry x on x.FENTRYID =c.fsid and x.fid =c.FSBILLID 
	                    inner join  T_PUR_Receive y on x.FID =y.fid  
	                    inner join T_BD_LOTMASTERBILLTRACE t on FBILLFORMID ='PUR_ReceiveBill'  and t.fbillid=x.FID and t.FBILLENTRYID =x.FENTRYID  
	                    inner join T_BD_LOTMASTER tt on t.FLOTID =tt.FLOTID 
	                    where  a.fid ={0} ;"    ;

            List <string> sqlLst           = new List <string>();
            FormMetadata  billTypeFormMeta = FormMetaDataCache.GetCachedFormMetaData(this.Context, "PUR_ReceiveBill");
            var           dyType           = billTypeFormMeta.BusinessInfo.GetDynamicObjectType();

            foreach (var item in e.DataEntitys)
            {
                sqlLst.Add(string.Format(sql, item["Id"]));
            }
            if (sqlLst.Count > 0)
            {
                DBUtils.ExecuteBatch(this.Context, sqlLst, 50);
            }

            CacheUtil.ClearCache(this.Context.DBId, "PUR_ReceiveBill");
            CacheUtil.ClearCache(this.Context.DBId, "BD_BatchMainFile");
        }
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            //(列表中批量审核场景下)取出所有数据包
            var queryService = ServiceHelper.GetService <IQueryService>();
            var viewService  = ServiceHelper.GetService <IViewService>();
            var dataEntites  = e.SelectedRows
                               .Select(data => data.DataEntity)
                               .ToArray();

            if (!dataEntites.Any())
            {
                return;
            }

            //取出所有的MasterId
            var    OrgIds       = dataEntites.Select(data => data.PkId <int>()).ToArray();
            string targetFormId = "BAH_BD_Organization";

            //找到对应普华物料的主键
            QueryBuilderParemeter para = new QueryBuilderParemeter();

            para.FormId              = targetFormId;
            para.SelectItems         = SelectorItemInfo.CreateItems("FID", "FMIRRORID");
            para.FilterClauseWihtKey = "FMirrorId in (Select FID From TABLE(fn_StrSplit(@OrgIds,',',1)))";
            para.SqlParams.Add(new SqlParam("@OrgIds", KDDbType.udt_inttable, OrgIds));
            var ids       = queryService.GetDynamicObjectCollection(this.Context, para).Select(data => data.Property <object>("FID")).ToArray();
            var mirrorids = queryService.GetDynamicObjectCollection(this.Context, para).Select(data => data.Property <int>("FMIRRORID")).ToArray();

            //用得到的主键去获取普华物料数据包
            var targetMetadata    = FormMetaDataCache.GetCachedFormMetaData(this.Context, targetFormId);
            var targetBillView    = targetMetadata.CreateBillView(this.Context);
            var targetBillService = targetBillView.AsDynamicFormViewService();
            var targetDataObjects = viewService.LoadFromCache(this.Context, ids, targetMetadata.BusinessInfo.GetDynamicObjectType()).ToList();

            //如果两边的数据包可以被关联,那么直接对应修改。
            dataEntites.Join(targetDataObjects,
                             left => left.PkId <int>(),
                             right => right.FieldProperty <DynamicObject>(targetMetadata.BusinessInfo.GetField("FMirrorId")).PkId <int>(),
                             (left, right) =>
            {
                targetBillView.Edit(right);
                targetBillService.UpdateValue("FNumber", -1, left.BDNumber());
                targetBillService.UpdateValue("FName", -1, new LocaleValue(left.BDName(this.Context)));
                return(right);
            }).ToArray();

            //如果数据包没有关联,则新增
            var unmatchDataEntities = dataEntites.Where(data => (mirrorids.Contains(data.PkId <int>()) == false))
                                      .ToArray();
            var addDataObjects = new List <DynamicObject>();

            foreach (var data in unmatchDataEntities)
            {
                targetBillView.AddNew();
                targetBillService.UpdateValue("FNumber", -1, data.BDNumber());
                targetBillService.UpdateValue("FName", -1, new LocaleValue(data.BDName(this.Context)));
                targetBillService.SetItemValueByID("FMirrorId", data.PkId <int>(), -1);
                addDataObjects.Add(targetBillView.Model.DataObject);
            }
            //合并待操作数据
            targetDataObjects.AddRange(addDataObjects);
            if (targetDataObjects.Any())
            {
                targetDataObjects.DoNothing(this.Context, targetMetadata.BusinessInfo, "Upload").Adaptive(op => this.OperationResult.MergeResult(op));
            }

            base.AfterExecuteOperationTransaction(e);
        }
Пример #28
0
        //public override void EndOperationTransaction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EndOperationTransactionArgs e)
        //{
        //    base.EndOperationTransaction(e);


        //    //List<K3SalOrderInfo> temp = new List<K3SalOrderInfo>();

        //    //if (e.DataEntitys == null) return;
        //    //List<DynamicObject> dataEntitys = e.DataEntitys.ToList();

        //    //if (dataEntitys == null || dataEntitys.Count <= 0)
        //    //{
        //    //    return;
        //    //}


        //    //foreach (var item in dataEntitys)
        //    //{
        //    //    if (SQLUtils.GetSaleOrderSourceNo(this.Context, item, "F_HS_SaleOrderSource_Id").CompareTo("XXBJDD") == 0
        //    //        && SQLUtils.GetFieldValue(item, "DocumentStatus").CompareTo("C") == 0 && SQLUtils.GetFieldValue(item, "BillNo").StartsWith("SO")
        //    //        && SQLUtils.GetFieldValue(item, "BillNo").Contains("_"))
        //    //    {
        //    //        K3SaleOrderFinance finance = GetOrderFinance(item, "SaleOrderFinance");//财务信息

        //    //        string FBillNo = SQLUtils.GetFieldValue(item, "BillNo");//订单号

        //    //        if (!string.IsNullOrWhiteSpace(FBillNo))
        //    //        {
        //    //            if (FBillNo.Contains("_"))
        //    //            {
        //    //                FBillNo = FBillNo.Substring(0, FBillNo.IndexOf("_"));
        //    //                SynOfflineSalOrderToHC.SynAllSalOrderToPHP(this.Context, false, FBillNo);
        //    //            }

        //    //        }
        //    //    }

        //    //}

        //}


        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);


            List <K3SalOrderInfo> orders = null;
            List <K3SalOrderInfo> temp   = new List <K3SalOrderInfo>();

            if (e.DataEntitys == null)
            {
                return;
            }
            List <DynamicObject> dataEntitys = e.DataEntitys.ToList();

            if (dataEntitys == null || dataEntitys.Count <= 0)
            {
                return;
            }
            orders = new List <K3SalOrderInfo>();

            foreach (var item in dataEntitys)
            {
                if (SQLUtils.GetSaleOrderSourceNo(this.Context, item, "F_HS_SaleOrderSource_Id").CompareTo("XXBJDD") == 0 &&
                    SQLUtils.GetFieldValue(item, "DocumentStatus").CompareTo("C") == 0 && SQLUtils.GetFieldValue(item, "BillNo").StartsWith("SO") &&
                    SQLUtils.GetFieldValue(item, "BillNo").Contains("_"))
                {
                    K3SaleOrderFinance finance = GetOrderFinance(item, "SaleOrderFinance"); //财务信息

                    string FBillNo = SQLUtils.GetFieldValue(item, "BillNo");                //订单号

                    if (!string.IsNullOrWhiteSpace(FBillNo))
                    {
                        if (FBillNo.Contains("_"))
                        {
                            FBillNo = FBillNo.Substring(0, FBillNo.IndexOf("_"));
                            //SynOfflineSalOrderToHC.SynAllSalOrderToPHP(false, FBillNo);
                        }
                    }

                    //order = new K3SalOrderInfo();

                    //K3SaleOrderFinance finance = GetOrderFinance(item, "SaleOrderFinance");//财务信息

                    //order.FBillNo = SQLUtils.GetFieldValue(item, "BillNo");//订单号
                    //order.F_HS_OriginOnlineOrderNo = SQLUtils.GetFieldValue(item, "F_HS_OriginOnlineOrderNo");//原线上订单单号
                    //order.FDate = Convert.ToDateTime(SQLUtils.GetFieldValue(item, "Date"));//订单日期
                    //order.PurseDate = TimeHelper.GetTimeStamp(order.FDate);//订单日期(时间戳)
                    //order.FNote = SQLUtils.GetFieldValue(item, "FNote");//备注
                    //order.FCustId = SQLUtils.GetCustomerNo(this.Context, item, "CustId_Id");//客户
                    //order.FSalerId = SQLUtils.GetSellerNo(this.Context, item, "SalerId_Id");//销售员
                    //order.OrderSource = SQLUtils.GetSaleOrderSourceNo(this.Context, item, "F_HS_SaleOrderSource_Id");//订单来源

                    //order.F_HS_PaymentStatus = SQLUtils.GetFieldValue(item, "F_HS_PaymentStatus");//付款状态
                    //order.FSettleCurrId = finance.FSettleCurrID;//结算币别

                    //order.F_HS_RateToUSA = Convert.ToDecimal(SQLUtils.GetFieldValue(item, "ExchangeRate"));//汇率
                    //order.F_HS_RecipientCountry = SQLUtils.GetCountryNo(this.Context, item, "F_HS_RecipientCountry_Id");//国家

                    //order.F_HS_DeliveryProvinces = SQLUtils.GetFieldValue(item, "F_HS_DeliveryProvinces");//省份
                    //order.F_HS_DeliveryCity = SQLUtils.GetFieldValue(item, "F_HS_DeliveryCity");//城市

                    //order.F_HS_DeliveryAddress = SQLUtils.GetFieldValue(item, "F_HS_DeliveryAddress");//具体地址
                    //order.F_HS_PostCode = SQLUtils.GetFieldValue(item, "F_HS_PostCode");//邮编

                    //order.F_HS_DeliveryName = SQLUtils.GetFieldValue(item, "F_HS_DeliveryName");//收货人
                    //order.F_HS_BillAddress = SQLUtils.GetFieldValue(item, "F_HS_BillAddress");//账单地址

                    //order.F_HS_MobilePhone = SQLUtils.GetFieldValue(item, "F_HS_MobilePhone");//联系人手机
                    //order.F_HS_ShippingMethod = SQLUtils.GetFieldValue(item, "F_HS_ShippingMethod");//发货方式

                    //order.FSETTLEMODEID = SQLUtils.GetFieldValue(item, "F_HS_PaymentMode");//结算方式

                    //order.FCustLevel = SQLUtils.GetCustGroupNo(this.Context, item, "F_HS_FGroup_Id");//客户分组

                    //order.FNote = SQLUtils.GetFieldValue(item, "Note");//备注
                    //order.F_HS_Channel = SQLUtils.GetFieldValue(item, "F_HS_OnlineOrderWay");//下单方式

                    //order.F_HS_CouponAmount = Convert.ToDecimal(SQLUtils.GetFieldValue(item, "F_HS_CouponAmount"));//优惠券金额
                    ////order.F_HS_Shipping = Convert.ToDecimal(SQLUtils.GetFieldValue(item, "F_HS_Shipping"));//运费

                    //order.F_HS_Points = Convert.ToDecimal(SQLUtils.GetFieldValue(item, "F_HS_Points"));//积分

                    //order.OrderEntry = GetOrderEntry(item, "SaleOrderEntry", order);//订单明细
                    //order.F_HS_Total = order.F_HS_Subtotal - order.F_HS_CouponAmount - order.F_HS_IntegralDeduction - order.F_HS_DiscountedAmount + order.F_HS_Shipping;//优惠后金额
                    //order.FApproveDate = TimeHelper.GetTimeStamp(Convert.ToDateTime(SQLUtils.GetFieldValue(item, "ApproveDate")));
                    //orders.Add(order);
                }
                //if (orders != null && orders.Count > 0)
                //{
                //    if (temp.All(a => orders.Any(b => a.Equals(b))))
                //    {
                //        temp = temp.Concat(orders).ToList();

                //        if (IsConnectSuccess(this.Context))
                //        {
                //            SynOfflineSalOrderToHC.SynSalOrderToPHP(this.Context, temp);
                //            temp.Clear();
                //        }
                //    }

                //}
            }
        }
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);

            //TODO:
            //0.泛亚场景,当Id和MasterId相同时,才触发同步事件。
            //1.准备物料的数据包,e.DataEntities,取物料MasterId。
            //2.用MasterId关联查询普华智造里物料MirrorId,通过这个步骤知道,哪些需要修改(调用Save方法),哪些需要新增(调用Draft方法)。
            //3.需要修改的,直接关联同步修改。
            //4.需要新增的,通过表单代理直接创建新数据包。
            //5.统一调用上传操作。

            //(列表中批量审核场景下)取出所有数据包
            var queryService = ServiceHelper.GetService <IQueryService>();
            var viewService  = ServiceHelper.GetService <IViewService>();
            var dataEntites  = e.SelectedRows
                               .Select(data => data.DataEntity)
                               .Where(data => data.FieldProperty <bool>(this.BusinessInfo.GetField("FPHMXEnablePHManagement")))
                               .Where(data => data.PkId <int>() == data.MasterId <int>())
                               .ToArray();

            if (!dataEntites.Any())
            {
                return;
            }

            //取出所有的MasterId
            var    masterIds    = dataEntites.Select(data => data.PkId <int>()).ToArray();
            string targetFormId = PIBDFormPrimaryKey.Instance.Material();

            //找到对应普华物料的主键
            QueryBuilderParemeter para = new QueryBuilderParemeter();

            para.FormId              = targetFormId;
            para.SelectItems         = SelectorItemInfo.CreateItems("FID", "FMIRRORID");
            para.FilterClauseWihtKey = "FMirrorId in (Select FID From TABLE(fn_StrSplit(@MasterIds,',',1)))";
            para.SqlParams.Add(new SqlParam("@MasterIds", KDDbType.udt_inttable, masterIds));
            var ids       = queryService.GetDynamicObjectCollection(this.Context, para).Select(data => data.Property <object>("FID")).ToArray();
            var mirrorids = queryService.GetDynamicObjectCollection(this.Context, para).Select(data => data.Property <int>("FMIRRORID")).ToArray();

            //用得到的主键去获取普华物料数据包
            var targetMetadata     = FormMetaDataCache.GetCachedFormMetaData(this.Context, targetFormId);
            var targetBusinessInfo = targetMetadata.BusinessInfo;
            var targetBillView     = targetMetadata.CreateBillView(this.Context);
            var targetBillService  = targetBillView.AsDynamicFormViewService();
            var targetDataObjects  = viewService.LoadFromCache(this.Context, ids, targetBusinessInfo.GetDynamicObjectType()).ToList();

            //如果两边的数据包可以被关联,那么直接对应修改。
            dataEntites.Join(targetDataObjects,
                             left => left.MasterId <int>(),
                             right => right.FieldProperty <DynamicObject>(targetMetadata.BusinessInfo.GetField("FMirrorId")).MasterId <int>(),
                             (left, right) =>
            {
                targetBillView.Edit(right);
                targetBillService.UpdateValue("FNumber", -1, left.BDNumber());
                targetBillService.UpdateValue("FName", -1, new LocaleValue(left.BDName(this.Context)));
                targetBillService.UpdateValue("FSpecification", -1, new LocaleValue(left.FieldProperty <LocaleValue>(this.BusinessInfo.GetField("FSpecification")).Value(this.Context)));

                //基本
                left.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity"))
                .Adaptive(sub =>
                {
                    this.BusinessInfo.GetField("FBaseUnitId").AsType <BaseDataField>()
                    .Adaptive(field =>
                    {
                        if (!sub.FieldProperty <DynamicObject>(field).FieldRefProperty <bool>(field, "FPHMXEA") ||
                            left.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <decimal>(this.BusinessInfo.GetField("FPHMXStdCty")) > 0M)
                        {
                            targetBillService.UpdateValue("FEnableCapacity", -1, true);
                            targetBillService.UpdateValue("FCapacityUnit", -1, new LocaleValue(sub.FieldProperty <DynamicObject>(field).BDName(this.Context)));
                            targetBillService.UpdateValue("FCapacityScale", -1, sub.FieldProperty <DynamicObject>(field).FieldRefProperty <int>(field, "FPrecision"));
                        }                            //end if
                    });
                });

                //库存
                var pkgId = left.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <DynamicObject>(this.BusinessInfo.GetField("FPHMXPkgId")).PkId <string>();
                if (!pkgId.IsNullOrEmptyOrWhiteSpace())
                {
                    var entries = targetBillView.Model.GetEntityDataObject(targetBusinessInfo.GetEntity("FPackageEntry"));
                    if (entries.Any(entry => entry.FieldProperty <DynamicObject>(targetBusinessInfo.GetField("FEntryPackageId")).PkId <string>().EqualsIgnoreCase(pkgId)) == false)
                    {
                        targetBillView.Model.InsertEntryRow("FPackageEntry", 0);
                        targetBillService.SetItemValueByID("FEntryPackageId", pkgId, 0);
                    }                    //end if

                    //设置标准容量。
                    entries.Where(entry => targetBillView.Model.GetValue("FEnableCapacity").ToType <bool>() && entry.FieldProperty <DynamicObject>(targetBusinessInfo.GetField("FEntryPackageId")).PkId <string>().EqualsIgnoreCase(pkgId))
                    .FirstOrDefault()
                    .Adaptive(pkg =>
                    {
                        if (pkg != null)
                        {
                            var index = entries.IndexOf(pkg);
                            targetBillService.UpdateValue("FStdCty", index, left.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <decimal>(this.BusinessInfo.GetField("FPHMXStdCty")));
                        }                           //end if
                    });

                    //设置默认包装。
                    targetBillService.SetItemValueByID("FPackageId", pkgId, -1);
                }                    //end if

                //设置有效期。
                if (targetBillView.Model.GetValue("FEnableExpiry").ToType <bool>())
                {
                    targetBillService.UpdateValue("FExpPeriod", -1, left.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <int>(this.BusinessInfo.GetField("FExpPeriod")));
                    targetBillService.UpdateValue("FExpUnit", -1, left.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <string>(this.BusinessInfo.GetField("FExpUnit")));
                }                    //end if
                return(right);
            }).ToArray();

            //如果数据包没有关联,则新增
            var unmatchDataEntities = dataEntites.Where(data => (mirrorids.Contains(data.MasterId <int>()) == false))
                                      .ToArray();

            foreach (var data in unmatchDataEntities)
            {
                targetBillView.AddNew();
                targetBillService.UpdateValue("FNumber", -1, data.BDNumber());
                targetBillService.UpdateValue("FName", -1, new LocaleValue(data.BDName(this.Context)));
                targetBillService.UpdateValue("FSpecification", -1, new LocaleValue(data.FieldProperty <LocaleValue>(this.BusinessInfo.GetField("FSpecification")).Value(this.Context)));

                //基本
                data.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity"))
                .Adaptive(sub =>
                {
                    this.BusinessInfo.GetField("FBaseUnitId").AsType <BaseDataField>()
                    .Adaptive(field =>
                    {
                        if (!sub.FieldProperty <DynamicObject>(field).FieldRefProperty <bool>(field, "FPHMXEA"))
                        {
                            targetBillService.UpdateValue("FEnableCapacity", -1, true);
                            targetBillService.UpdateValue("FCapacityUnit", -1, new LocaleValue(sub.FieldProperty <DynamicObject>(field).BDName(this.Context)));
                            targetBillService.UpdateValue("FCapacityScale", -1, sub.FieldProperty <DynamicObject>(field).FieldRefProperty <int>(field, "FPrecision"));
                        }        //end if
                    });
                });

                //库存
                data.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1"))
                .Adaptive(sub =>
                {
                    //设置分录包装。
                    var pkgId = sub.FieldProperty <DynamicObject>(this.BusinessInfo.GetField("FPHMXPkgId")).PkId <string>();
                    if (targetBusinessInfo.GetEntity("FPackageEntry").DefaultRows < 1)
                    {
                        targetBillView.Model.InsertEntryRow("FPackageEntry", 0);
                    }
                    targetBillService.SetItemValueByID("FEntryPackageId", pkgId, 0);

                    if (targetBillView.Model.GetValue("FEnableCapacity").ToType <bool>())
                    {
                        targetBillService.UpdateValue("FStdCty", 0, sub.FieldProperty <decimal>(this.BusinessInfo.GetField("FPHMXStdCty")));
                    }    //end if

                    //设置默认包装。
                    targetBillService.SetItemValueByID("FPackageId", pkgId, -1);
                });
                targetBillService.UpdateValue("FEnableLot", -1, data.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <bool>(this.BusinessInfo.GetField("FIsBatchManage")));
                targetBillService.UpdateValue("FEnableExpiry", -1, data.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <bool>(this.BusinessInfo.GetField("FIsKFPeriod")));
                targetBillService.UpdateValue("FExpPeriod", -1, data.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <int>(this.BusinessInfo.GetField("FExpPeriod")));
                targetBillService.UpdateValue("FExpUnit", -1, data.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <string>(this.BusinessInfo.GetField("FExpUnit")));
                targetBillService.UpdateValue("FLotExpiryUnique", -1, data.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <bool>(this.BusinessInfo.GetField("FIsExpParToFlot")));
                targetBillService.SetItemValueByID("FMirrorId", data.PkId <int>(), -1);
                targetDataObjects.Add(targetBillView.Model.DataObject);
            }//end foreach

            //统一调用上传操作。
            if (targetDataObjects.Any())
            {
                var op = targetDataObjects.DoNothing(this.Context, targetBusinessInfo, "Upload");
                this.OperationResult.MergeResult(op);
            } //end if
        }     //end method
Пример #30
0
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);
            if (e.DataEntitys == null)
            {
                return;
            }
            List <long> lstPkIds = new List <long>();

            foreach (DynamicObject billDataEntity in e.DataEntitys)
            {
                lstPkIds.Add(Convert.ToInt64(billDataEntity["Id"]));
            }
            if (lstPkIds == null || lstPkIds.Count == 0)
            {
                return;
            }


            //处理上游配方当的锁库逻辑
            //当前操作(反审核,撤销)执行时,1.重新锁定上游配方单与本单关联的数量2.重算上游配方单的锁库数量字段
            if (this.FormOperation.Operation.EqualsIgnoreCase("cancel") || this.FormOperation.Operation.EqualsIgnoreCase("unaudit"))
            {
                string sql = string.Format(@"SELECT t.FBILLNO, t.FID,t1.FENTRYID,t1.FSEQ, FSUPPLYORG AS FSTOCKORGID,	'BD_KeeperOrg' AS FKEEPERTYPEID,	t.FPARENTOWNERID  AS FKEEPERID,
	                                        t.FPARENTOWNERTYPEID AS FOWNERTYPEID,	t.FPARENTOWNERID AS FOWNERID,	FSTOCKID  AS FSTOCKID,
	                                        FSTOCKLOCID AS FSTOCKPLACEID,	TM.FMASTERID AS FMATERIALID,	t1.FAUXPROPID AS FAUXPROPERTYID,
	                                        FSTOCKSTATUSID AS FSTOCKSTATUSID,	FLOT AS FLOT,	FJNPRODUCEDATE AS FPRODUCTDATE,
	                                        FJNEXPIRYDATE AS FVALIDATETO,	t1.FBOMID AS FBOMID,	FMTONO AS FMTONO,FPROJECTNO AS FPROJECTNO,
	                                        t4.FBASEACTUALQTY AS FBASEQTY,	t1.FBASEUNITID AS FBASEUNITID,	0 AS FSECQTY,	FJNSECUNITID AS FSECUNITID,
	                                        t1.FUNITID AS FUNITID,t4.FBASEACTUALQTY AS FQTY 
	                                            FROM T_PRD_PPBOM t INNER JOIN T_PRD_PPBOMENTRY t1 ON t.FID=t1.FID
		                                        inner join T_PRD_PPBOMENTRY_Q t2 on t1.FENTRYID=t2.FENTRYID
		                                        INNER JOIN T_PRD_PPBOMENTRY_C t3 ON t1.FENTRYID=t3.FENTRYID
                                              inner join T_BD_MATERIAL TM on t1.FMATERIALID=TM.FMATERIALID 
		                                        inner join (select t2.FSID, sum(t2.FBASEACTUALQTY) as FBASEACTUALQTY FROM T_PRD_PickMtrl t INNER JOIN T_PRD_PickMtrlDATA t1 ON t.FID=t1.FID
                                        INNER JOIN T_PRD_PickMtrlDATA_LK t2 ON t1.FENTRYID=t2.FENTRYID
                                        where t2.FSTABLENAME='T_PRD_PPBOMENTRY' and t.FID in ({0})
                                        group by t2.FSID) t4 on t1.FENTRYID=t4.FSID", string.Join(",", lstPkIds));
                sql = string.Format(@" select ts.*,isnull(tk.FID,'') as FINVENTORYID
                                from ( {0} ) ts
                                LEFT JOIN T_STK_INVENTORY tk on ts.FSTOCKORGID=tk.FSTOCKORGID and tk.FKEEPERTYPEID=ts.FKEEPERTYPEID and tk.FKEEPERID=ts.FKEEPERID
                                        and tk.FOWNERTYPEID=ts.FOWNERTYPEID and tk.FOWNERID=ts.FOWNERID and tk.FSTOCKID=ts.FSTOCKID and tk.FSTOCKLOCID=ts.FSTOCKPLACEID and tk.FAUXPROPID=ts.FAUXPROPERTYID and
                                        tk.FSTOCKSTATUSID=ts.FSTOCKSTATUSID and tk.FLOT=ts.FLOT and tk.FBOMID=ts.FBOMID and tk.FMTONO=ts.FMTONO and tk.FPROJECTNO=ts.FPROJECTNO 
                                       
                                        and  tk.FBASEUNITID=ts.FBASEUNITID  and tk.FMATERIALID=ts.FMATERIALID  
                                inner join T_BD_MATERIALSTOCK MS on MS.FMATERIALID=ts.FMATERIALID and MS.FIsLockStock='1'
                                inner join T_BD_STOCK TSK on TSK.FSTOCKID=ts.FSTOCKID AND TSK.FALLOWLOCK='1'
                               
                                ", sql, "PRD_PPBOM");

                Common.LockCommon.LockInventory(this.Context, this.OperationResult, sql, "PRD_PPBOM");

                //重算单据上的锁库数量字段
                sql = string.Format(@"/*dialect*/update t set t.F_JN_BaseLockQty=isnull(TE.FQTY,0)
                                            from T_PRD_PPBOMENTRY_Q T left join 
                                            (select FDEMANDENTRYID,SUM(TKE.FBASEQTY) as FQTY from T_PLN_RESERVELINK TKH
                                              inner join  T_PLN_RESERVELINKENTRY TKE on TKE.FID = TKH.FID
                                            where FDEMANDFORMID='PRD_PPBOM'  
                                            group by FDEMANDENTRYID) TE on T.FEntryID=TE.FDEMANDENTRYID
                                            inner join (select t2.FSID
										           FROM T_PRD_PickMtrl t INNER JOIN T_PRD_PickMtrlDATA t1 ON t.FID=t1.FID
													INNER JOIN T_PRD_PickMtrlDATA_LK t2 ON t1.FENTRYID=t2.FENTRYID
													where t2.FSTABLENAME='T_PRD_PPBOMENTRY' and t.FID in ({0}) 
													) t4 on T.FENTRYID=t4.FSID "                                                    , string.Join(",", lstPkIds));

                DBUtils.Execute(this.Context, sql);
            }

            this.OperationResult.IsShowMessage = true;
        }