分享

根据某一个字段模糊查询,比如生成合同编号

 实力决定地位 2015-08-03

   /// <summary>
       /// 生成合同编号
       /// </summary>
       /// <param name="context"></param>
       /// <param name="id"></param>
       /// <returns></returns>
       public static string GenerateContractNO(WCMSDATA  context, int id)
       {
           //取得合同
           var contract = context.WOO_CONTRACT.FirstOrDefault(a=>a.ID==id);
           if (!string.IsNullOrEmpty(contract.NO))
               return contract.NO;
           string strFinanceType = contract.FINANCE_TYPE == "付款" ? "01-" : "02-";

           //取得合同类别
           //var cat = context.WOO_TAX_TYPE.FirstOrDefault(t => t.CATEGORY_ID == contract.CATEGORY_ID);
           //string lx = "";
           //if (cat != null)
           //{
           //    lx = cat.REMARK;
           //}
           //取得签约主体
           var department = context.WOO_DEPARTMENT.FirstOrDefault(d => d.ID == contract.DEPARTMENT_ID);
           //取得签约主体简称

           //当前时间
           DateTime now = DateTime.Now;

           string no = "CUPD-" + department.SHORT_NAME + "-" + strFinanceType + DateTime.Now.Year.ToString() + "-";   //合同编号 = 公司名称简写-合同审批通过时间-合同收付款性质-合同流水号
           //按合同编号格式取得合同编号
           var query = context.WOO_CONTRACT;//GetQuery<WOO_CONTRACT>();
           // string like = "%-" + now.Year.ToString().Substring(2, 2) + "-" + strFinanceType + "____";
           string like = "%" + "CUPD-" + department.SHORT_NAME + "-" + strFinanceType + DateTime.Now.Year.ToString() + "-" + "%";
           //var nolist = query.Where(c => System.Data.Objects.SqlClient.SqlFunctions.PatIndex(like, c.NO) > 0).OrderByDescending(c => c.NO).Select(c => c.NO).ToList();
           var nolist = query.Where(p => SqlMethods.Like(p.NO, like)).OrderByDescending(c => c.NO).Select(c => c.NO).ToList();
           // nolist = nolist.ToList();
           //倒序遍历合同编号,看是否符合自动编号规则
           for (int i = 0; i < nolist.Count; i++)
           {
               //没有'-'不符合
               if (nolist[i].IndexOf("-") < 0)
                   continue;
               //取得流水号
               string numstring = nolist[i].Substring(nolist[i].LastIndexOf("-") + 1);
               //流水号不是5位长度,不符合
               if (numstring.Length != 4)
                   continue;
               int num = 0;
               //流水号不是数字格式,不符合
               if (!int.TryParse(numstring, out num))
                   continue;
               //按规则拼接合同编号
               return no + (num + 1).ToString().PadLeft(4, '0');
           }
           return no + "0001";
       }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多