/// <summary>
        /// 取消
        /// </summary>
        /// <param name="rowsKeyValues">多主键时以^分割</param>
        /// <param name="loginUser"></param>
        /// <returns></returns>
        public bool CancelInfos(List <string> rowsKeyValues, string loginUser)
        {
            ///验证是否符合取消规则 ExecuteResult;业务错误 40, 程序错误 50 提交:10 重发:60
            int cnt = dal.GetCounts("" +
                                    "[EXECUTE_RESULT] in (" + (int)ExecuteResultConstants.Error + "," + (int)ExecuteResultConstants.Exception + "," + (int)ExecuteResultConstants.Submit + "," + (int)ExecuteResultConstants.Resend + ") and " +
                                    "[ID] in (" + string.Join(",", rowsKeyValues.ToArray()) + ")");

            if (cnt != rowsKeyValues.Count)
            {
                throw new Exception("MC:0x00000201");///执行结果为处理中或完成不可取消
            }
            StringBuilder @string = new StringBuilder();

            foreach (var rowsKeyValue in rowsKeyValues)
            {
                @string.AppendLine(CommonBLL.GetUpdateResultLogSql("VMI", Convert.ToInt64(rowsKeyValue), ExecuteResultConstants.Cancel, string.Empty, string.Empty, string.Empty, loginUser));
            }
            using (var trans = new TransactionScope())
            {
                if (@string.Length > 0)
                {
                    CommonDAL.ExecuteNonQueryBySql(@string.ToString());
                }
                trans.Complete();
            }
            return(true);
        }