Beispiel #1
0
        }//end method

        public static void Delete(this IEnumerable <DynamicObject> dataObject, Context ctx, Func <DynamicObject, object> selector = null)
        {
            DynamicObject[] dataArray = dataObject.ToArray();
            if (dataArray.Any())
            {
                var group = dataArray.Select(data => new { DataEntity = data, DataType = data.DynamicObjectType })
                            .GroupBy(a => a.DataType)
                            .Select(g => new { DataType = g.Key, Ids = g.Select(a => a.DataEntity).Select(data => selector != null ? selector(data) : data.PkId()).ToArray() })
                            .ToList();

                group.ForEach(g => BusinessDataServiceHelper.Delete(ctx, g.Ids, g.DataType));
            } //end if
        }     //end method
Beispiel #2
0
        }     //end method

        public static IOperationResult Delete(this IEnumerable <DynamicObject> dataObject, Context ctx, BusinessInfo businessInfo, OperateOption option = null, Func <DynamicObject, object> selector = null)
        {
            if (option == null)
            {
                option = OperateOption.Create();
            }
            option.SetIgnoreWarning(true);
            option.SetIgnoreInteractionFlag(true);

            object[] pkIds = selector != null?dataObject.Select(selector).ToArray() : dataObject.Select(data => data.PkId()).ToArray();

            IOperationResult result = BusinessDataServiceHelper.Delete(ctx, businessInfo, pkIds, option, OperationNumberConst.OperationNumber_Delete);

            return(result);
        }//end method
        /// <summary>
        /// 反审核并删除需要删除的销售订单
        /// </summary>
        /// <param name="pkids"></param>
        /// <param name="p"></param>
        /// <param name="ctx"></param>
        private void UnAuditBill(Context ctx, string p, string[] pkids)
        {
            //反审核服务
            FormMetadata  meta          = MetaDataServiceHelper.Load(ctx, p, true) as FormMetadata;
            OperateOption UnAuditOption = OperateOption.Create();
            var           UnAuditResult = BusinessDataServiceHelper.UnAudit(ctx, meta.BusinessInfo, pkids, UnAuditOption);

            if (UnAuditResult.IsSuccess)
            {
                //删除服务
                OperateOption deleteOption = OperateOption.Create();
                var           delectResult = BusinessDataServiceHelper.Delete(ctx, meta.BusinessInfo, pkids, deleteOption);
                //删除成功将成功信息及状态返回写中间表
                if (delectResult.IsSuccess)
                {
                    OperateResultCollection successResult = delectResult.OperateResult;
                    List <string>           succSql       = new List <string>();
                    foreach (OperateResult item in successResult)
                    {
                        if ("SAL_SaleOrder".Equals(p))
                        {
                            string strSql = string.Format(@"/*dialect*/UPDATE SALE_MAIN@ZyK3Link
                                                                              SET FFLAG = '3', FUPDATEDATE = '{0}', FERRORMESSAGE = '{1}'
                                                                              WHERE FSALBILLNO = '{2}'
                                                                             ", System.DateTime.Now.ToString(), item.Number.ToString() + "销售订单删除成功",
                                                          item.Number);
                            succSql.Add(strSql);
                        }
                        if ("ENG_BOM".Equals(p))
                        {
                            string strSql = string.Format(@"/*dialect*/UPDATE BOM_MAIN@ZyK3Link
                                                                             SET FFLAG = '3', FUPDATEDATE = '{0}', FERRORMESSAGE = '{1}'
                                                                             WHERE FSALBILLNO = '{2}'
                                                                           ", System.DateTime.Now.ToString(), item.Number.ToString() + "物料清单删除成功",
                                                          item.Number);
                            succSql.Add(strSql);
                        }
                        if ("BD_MATERIAL".Equals(p))
                        {
                            string strSql = string.Format(@"/*dialect*/UPDATE PRD_MAIN@ZyK3Link
                                                                              SET FFLAG = '3', FUPDATEDATE = '{0}', FERRORMESSAGE = '{1}'
                                                                              WHERE FSALBILLNO = '{2}'
                                                                            ", System.DateTime.Now.ToString(), item.Number.ToString() + "物料删除成功",
                                                          item.Number);
                            succSql.Add(strSql);
                        }
                    }
                    Kingdee.BOS.Log.Logger.Info(DateTime.Now.ToString() + "deleteSucc", succSql.ToString(), true);
                    DBUtils.ExecuteBatch(ctx, succSql, 100);
                }
                else
                {
                    //多条记录被删除,一部分删除成功,一部分删除失败,将成功和失败的信息及状态都返写回中间表
                    List <ValidationErrorInfo> errorDeleteList = new List <ValidationErrorInfo>();
                    errorDeleteList = delectResult.ValidationErrors;//删除失败记录返写中间表
                    if (errorDeleteList != null && errorDeleteList.Count() > 0)
                    {
                        List <string> errorSql = new List <string>();
                        for (int k = 0; k < errorDeleteList.Count(); k++)
                        {
                            if ("SAL_SaleOrder".Equals(p))
                            {
                                string strSql = string.Format(@"/*dialect*/UPDATE SALE_MAIN@ZyK3Link
                                                                              SET FFLAG = '2', FUPDATEDATE = '{0}', FERRORMESSAGE = '{1}'
                                                                              WHERE FSALBILLNO = (SELECT FBILLNO FROM T_SAL_ORDER WHERE FID = '{2}')
                                                                             ", System.DateTime.Now.ToString(), errorDeleteList[k].Message, errorDeleteList[k].BillPKID);
                                errorSql.Add(strSql);
                            }
                            if ("ENG_BOM".Equals(p))
                            {
                                string strSql = string.Format(@"/*dialect*/UPDATE BOM_MAIN@ZyK3Link
                                                                             SET FFLAG = '2', FUPDATEDATE = '{0}', FERRORMESSAGE = '{1}'
                                                                             WHERE FSALBILLNO = (SELECT FNUMBER FROM T_ENG_BOM WHERE FID = '{2}')
                                                                           ", System.DateTime.Now.ToString(), errorDeleteList[k].Message, errorDeleteList[k].BillPKID);
                                errorSql.Add(strSql);
                            }
                            if ("BD_MATERIAL".Equals(p))
                            {
                                string strSql = string.Format(@"/*dialect*/UPDATE PRD_MAIN@ZyK3Link
                                                                              SET FFLAG = '2', FUPDATEDATE = '{0}', FERRORMESSAGE = '{1}'
                                                                              WHERE FSALBILLNO = (SELECT FNUMBER FROM T_BD_MATERIAL WHERE FID = '{2}')
                                                                            ", System.DateTime.Now.ToString(), errorDeleteList[k].Message, errorDeleteList[k].BillPKID);
                                errorSql.Add(strSql);
                            }
                        }
                        Kingdee.BOS.Log.Logger.Error(DateTime.Now.ToString() + "deleteError", errorSql.ToString(), new Exception());
                        DBUtils.ExecuteBatch(ctx, errorSql, 100);
                    }
                    //删除成功记录返回写中间表
                    OperateResultCollection successResult = delectResult.OperateResult;
                    if (successResult != null && successResult.Count() > 0)
                    {
                        List <string> succSql = new List <string>();
                        foreach (OperateResult item in successResult)
                        {
                            if ("SAL_SaleOrder".Equals(p))
                            {
                                string strSql = string.Format(@"/*dialect*/UPDATE SALE_MAIN@ZyK3Link
                                                                              SET FFLAG = '3', FUPDATEDATE = '{0}', FERRORMESSAGE = '{1}'
                                                                              WHERE FSALBILLNO = '{2}'
                                                                             ", System.DateTime.Now.ToString(), item.Number.ToString() + "销售订单删除成功",
                                                              item.Number);
                                succSql.Add(strSql);
                            }
                            if ("ENG_BOM".Equals(p))
                            {
                                string strSql = string.Format(@"/*dialect*/UPDATE BOM_MAIN@ZyK3Link
                                                                             SET FFLAG = '3', FUPDATEDATE = '{0}', FERRORMESSAGE = '{1}'
                                                                             WHERE FSALBILLNO = '{2}'
                                                                           ", System.DateTime.Now.ToString(), item.Number.ToString() + "物料清单删除成功",
                                                              item.Number);
                                succSql.Add(strSql);
                            }
                            if ("BD_MATERIAL".Equals(p))
                            {
                                string strSql = string.Format(@"/*dialect*/UPDATE PRD_MAIN@ZyK3Link
                                                                              SET FFLAG = '3', FUPDATEDATE = '{0}', FERRORMESSAGE = '{1}'
                                                                              WHERE FSALBILLNO = '{2}'
                                                                            ", System.DateTime.Now.ToString(), item.Number.ToString() + "物料删除成功",
                                                              item.Number);
                                succSql.Add(strSql);
                            }
                            Kingdee.BOS.Log.Logger.Info(DateTime.Now.ToString() + "deleteSucc", succSql.ToString(), true);
                            DBUtils.ExecuteBatch(ctx, succSql, 100);
                        }
                    }
                }
            }
            else
            {
                //审核失败记录的信息及状态反写回中间表
                List <ValidationErrorInfo> errorUnAuditList = new List <ValidationErrorInfo>();
                errorUnAuditList = UnAuditResult.ValidationErrors;
                List <string> errorSql = new List <string>();
                for (int k = 0; k < errorUnAuditList.Count(); k++)
                {
                    if ("SAL_SaleOrder".Equals(p))
                    {
                        string strSql = string.Format(@"/*dialect*/UPDATE SALE_MAIN@ZyK3Link
                                                                          SET FFLAG = '2', FUPDATEDATE = '{0}', FERRORMESSAGE = '{1}'
                                                                          WHERE FSALBILLNO = (SELECT FBILLNO FROM T_SAL_ORDER WHERE FID = '{2}')
                                                                        ", System.DateTime.Now.ToString(), errorUnAuditList[k].Message, errorUnAuditList[k].BillPKID);
                        errorSql.Add(strSql);
                    }
                    if ("ENG_BOM".Equals(p))
                    {
                        string strSql = string.Format(@"/*dialect*/UPDATE BOM_MAIN@ZyK3Link
                                                                          SET FFLAG = '2', FUPDATEDATE = '{0}', FERRORMESSAGE = '{1}'
                                                                          WHERE FSALBILLNO = (SELECT FNUMBER FROM T_ENG_BOM WHERE FID = '{2}')
                                                                        ", System.DateTime.Now.ToString(), errorUnAuditList[k].Message, errorUnAuditList[k].BillPKID);
                        errorSql.Add(strSql);
                    }
                    if ("BD_MATERIAL".Equals(p))
                    {
                        string strSql = string.Format(@"/*dialect*/UPDATE PRD_MAIN@ZyK3Link
                                                                          SET FFLAG = '2', FUPDATEDATE = '{0}', FERRORMESSAGE = '{1}'
                                                                          WHERE FSALBILLNO = (SELECT FNUMBER FROM T_BD_MATERIAL WHERE FID = '{2}')
                                                                          ", System.DateTime.Now.ToString(), errorUnAuditList[k].Message, errorUnAuditList[k].BillPKID);
                        errorSql.Add(strSql);
                    }
                }
                Kingdee.BOS.Log.Logger.Error(DateTime.Now.ToString() + "UnAuditError", errorSql.ToString(), new Exception());
                DBUtils.ExecuteBatch(ctx, errorSql, 100);
            }
        }