/// <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"; }
|