427 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			427 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			C#
		
	
	
	
| 
								 | 
							
								using System;
							 | 
						|||
| 
								 | 
							
								using System.Collections.Generic;
							 | 
						|||
| 
								 | 
							
								using System.Linq;
							 | 
						|||
| 
								 | 
							
								using System.Text;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								namespace BLL
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    /// <summary>
							 | 
						|||
| 
								 | 
							
								    /// 单据代码记录表
							 | 
						|||
| 
								 | 
							
								    /// </summary>
							 | 
						|||
| 
								 | 
							
								    public class CodeRecordsService
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 根据主键读取编码
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="menuId"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="projectId"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="unitId"></param>
							 | 
						|||
| 
								 | 
							
								        /// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        public static string ReturnCodeByDataId(string dataId)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            string code = string.Empty;
							 | 
						|||
| 
								 | 
							
								            var codeRecords = Funs.DB.Sys_CodeRecords.FirstOrDefault(x => x.DataId == dataId);
							 | 
						|||
| 
								 | 
							
								            if (codeRecords != null)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                code = codeRecords.Code;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            return code;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 根据主键删除编码表记录
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="dataId"></param>
							 | 
						|||
| 
								 | 
							
								        /// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        public static void DeleteCodeRecordsByDataId(string dataId)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            var codeRecords = Funs.DB.Sys_CodeRecords.FirstOrDefault(x => x.DataId == dataId);
							 | 
						|||
| 
								 | 
							
								            if (codeRecords != null)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                ///删除文件柜A中数据
							 | 
						|||
| 
								 | 
							
								               // BLL.FileCabinetAItemService.DeleteFileCabinetAItemByID(dataId);
							 | 
						|||
| 
								 | 
							
								                Funs.DB.Sys_CodeRecords.DeleteOnSubmit(codeRecords);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region 根据菜单id、项目id返回编码 (用于页面新增显示)
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 根据菜单id、项目id返回编码 (用于页面新增显示)
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="menuId"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="projectId"></param>
							 | 
						|||
| 
								 | 
							
								        /// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        public static string ReturnCodeByMenuIdProjectId(string menuId, string projectId, string unitId)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                string code = string.Empty;
							 | 
						|||
| 
								 | 
							
								                string ruleCodes = string.Empty;
							 | 
						|||
| 
								 | 
							
								                int digit = 4;
							 | 
						|||
| 
								 | 
							
								                string symbol = "-"; ///间隔符 
							 | 
						|||
| 
								 | 
							
								                var codeRecords = (from x in db.Sys_CodeRecords where x.MenuId == menuId && x.ProjectId == projectId orderby x.CompileDate descending select x).FirstOrDefault();
							 | 
						|||
| 
								 | 
							
								                if (codeRecords != null && !string.IsNullOrEmpty(codeRecords.RuleCodes))
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    ruleCodes = codeRecords.RuleCodes;
							 | 
						|||
| 
								 | 
							
								                    if (codeRecords.Digit.HasValue)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        digit = codeRecords.Digit.Value;
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    ////项目
							 | 
						|||
| 
								 | 
							
								                    string ruleCode = string.Empty;
							 | 
						|||
| 
								 | 
							
								                    var project = ProjectService.GetProjectByProjectId(projectId);
							 | 
						|||
| 
								 | 
							
								                    if (project != null)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        string projectCode = project.ProjectCode; ///项目编号                               
							 | 
						|||
| 
								 | 
							
								                        ////编码规则表
							 | 
						|||
| 
								 | 
							
								                        var sysCodeTemplateRule = db.ProjectData_CodeTemplateRule.FirstOrDefault(x => x.MenuId == menuId && x.ProjectId == projectId);
							 | 
						|||
| 
								 | 
							
								                        if (sysCodeTemplateRule != null)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            symbol = sysCodeTemplateRule.Symbol;
							 | 
						|||
| 
								 | 
							
								                            if (sysCodeTemplateRule.Digit.HasValue)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                digit = sysCodeTemplateRule.Digit.Value;
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (sysCodeTemplateRule.IsProjectCode == true)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                ruleCode = projectCode + symbol;
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (!string.IsNullOrEmpty(sysCodeTemplateRule.Prefix))
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                ruleCode += sysCodeTemplateRule.Prefix + symbol;
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (sysCodeTemplateRule.IsUnitCode == true)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                var unit = UnitService.GetUnitByUnitId(unitId);
							 | 
						|||
| 
								 | 
							
								                                if (unit != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    ruleCode += unit.UnitCode + symbol;
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            ruleCodes = ruleCode;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    else
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        var codeTempRule = db.Sys_CodeTemplateRule.FirstOrDefault(x => x.MenuId == menuId);
							 | 
						|||
| 
								 | 
							
								                        if (codeTempRule != null && !string.IsNullOrEmpty(codeTempRule.Prefix))
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            if (!string.IsNullOrEmpty(codeTempRule.Symbol))
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                symbol = codeTempRule.Symbol;
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            ruleCodes = codeTempRule.Prefix + symbol;
							 | 
						|||
| 
								 | 
							
								                            if (codeTempRule.Digit.HasValue)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                digit = codeTempRule.Digit.Value;
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                ////获取编码记录表最大排列序号              
							 | 
						|||
| 
								 | 
							
								                int maxNewSortIndex = 0;
							 | 
						|||
| 
								 | 
							
								                var maxSortIndex = db.Sys_CodeRecords.Where(x => (x.ProjectId == projectId || projectId == null) && x.MenuId == menuId).Select(x => x.SortIndex).Max();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                if (maxSortIndex.HasValue)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    maxNewSortIndex = maxSortIndex.Value;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                maxNewSortIndex = maxNewSortIndex + 1;
							 | 
						|||
| 
								 | 
							
								                code = (maxNewSortIndex.ToString().PadLeft(digit, '0'));   ///字符自动补零
							 | 
						|||
| 
								 | 
							
								                if (!string.IsNullOrEmpty(ruleCodes))
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    code = ruleCodes + code;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                return code;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region 根据菜单id、项目id插入一条编码记录(数据新增到数据库 生成编码)
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 根据菜单id、项目id插入一条编码记录(数据新增到数据库 生成编码)
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="menuId"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="projectId"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="unitId"></param>
							 | 
						|||
| 
								 | 
							
								        public static void InsertCodeRecordsByMenuIdProjectIdUnitId(string menuId, string projectId, string unitId, string dataId, DateTime? compileDate)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            var IsHaveCodeRecords = Funs.DB.Sys_CodeRecords.FirstOrDefault(x => x.DataId == dataId);
							 | 
						|||
| 
								 | 
							
								            if (IsHaveCodeRecords == null)  ///是否已存在编码
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                string ruleCode = string.Empty;
							 | 
						|||
| 
								 | 
							
								                string ruleCodeower = string.Empty;
							 | 
						|||
| 
								 | 
							
								                int digit = 4; ///流水位数
							 | 
						|||
| 
								 | 
							
								                string symbolower = "-"; ///业主间隔符
							 | 
						|||
| 
								 | 
							
								                int digitower = 4; ///业主流水位数
							 | 
						|||
| 
								 | 
							
								                string symbol = "-"; ///间隔符
							 | 
						|||
| 
								 | 
							
								                var project = BLL.ProjectService.GetProjectByProjectId(projectId); ////项目
							 | 
						|||
| 
								 | 
							
								                if (project != null && !string.IsNullOrEmpty(dataId))
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    string projectCode = project.ProjectCode; ///项目编号               
							 | 
						|||
| 
								 | 
							
								                    ////编码规则表
							 | 
						|||
| 
								 | 
							
								                    var sysCodeTemplateRule = BLL.ProjectData_CodeTemplateRuleService.GetProjectData_CodeTemplateRuleByMenuIdProjectId(menuId, projectId);
							 | 
						|||
| 
								 | 
							
								                    if (sysCodeTemplateRule != null)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        symbol = sysCodeTemplateRule.Symbol;
							 | 
						|||
| 
								 | 
							
								                        symbolower = sysCodeTemplateRule.OwerSymbol;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                        if (sysCodeTemplateRule.Digit.HasValue)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            digit = sysCodeTemplateRule.Digit.Value;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        if (sysCodeTemplateRule.OwerDigit.HasValue)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            digitower = sysCodeTemplateRule.OwerDigit.Value;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        if (sysCodeTemplateRule.IsProjectCode == true)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            ruleCode = projectCode + symbol;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        if (sysCodeTemplateRule.OwerIsProjectCode == true)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            ruleCodeower = projectCode + symbolower;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        if (!string.IsNullOrEmpty(sysCodeTemplateRule.Prefix))
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            ruleCode += sysCodeTemplateRule.Prefix + symbol;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        if (!string.IsNullOrEmpty(sysCodeTemplateRule.OwerPrefix))
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            ruleCodeower += sysCodeTemplateRule.OwerPrefix + symbolower;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        if (sysCodeTemplateRule.IsUnitCode == true || sysCodeTemplateRule.OwerIsUnitCode == true)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            var unit = BLL.UnitService.GetUnitByUnitId(unitId);
							 | 
						|||
| 
								 | 
							
								                            if (unit != null)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                if (sysCodeTemplateRule.IsUnitCode == true)
							 | 
						|||
| 
								 | 
							
								                                { ruleCode = unit.UnitCode + symbol; }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                                if (sysCodeTemplateRule.OwerIsUnitCode == true)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    ruleCodeower = unit.UnitCode + symbolower;
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                ////获取编码记录表最大排列序号              
							 | 
						|||
| 
								 | 
							
								                int maxNewSortIndex = 0;
							 | 
						|||
| 
								 | 
							
								                if (!String.IsNullOrEmpty(projectId))
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    var maxSortIndex = Funs.DB.Sys_CodeRecords.Where(x => x.ProjectId == projectId && x.MenuId == menuId).Select(x => x.SortIndex).Max();
							 | 
						|||
| 
								 | 
							
								                    if (maxSortIndex.HasValue)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        maxNewSortIndex = maxSortIndex.Value;
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    var maxSortIndexNull = Funs.DB.Sys_CodeRecords.Where(x => x.MenuId == menuId).Select(x => x.SortIndex).Max();
							 | 
						|||
| 
								 | 
							
								                    if (maxSortIndexNull.HasValue)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        maxNewSortIndex = maxSortIndexNull.Value;
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                maxNewSortIndex = maxNewSortIndex + 1;
							 | 
						|||
| 
								 | 
							
								                ////插入数据库
							 | 
						|||
| 
								 | 
							
								                Model.Sys_CodeRecords newCodeRecords = new Model.Sys_CodeRecords
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    CodeRecordId = SQLHelper.GetNewID(typeof(Model.Sys_CodeRecords))
							 | 
						|||
| 
								 | 
							
								                };
							 | 
						|||
| 
								 | 
							
								                if (project != null)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    newCodeRecords.ProjectId = project.ProjectId;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                newCodeRecords.MenuId = menuId;
							 | 
						|||
| 
								 | 
							
								                newCodeRecords.DataId = dataId;
							 | 
						|||
| 
								 | 
							
								                newCodeRecords.UnitId = unitId;
							 | 
						|||
| 
								 | 
							
								                newCodeRecords.SortIndex = maxNewSortIndex;
							 | 
						|||
| 
								 | 
							
								                newCodeRecords.CompileDate = compileDate;
							 | 
						|||
| 
								 | 
							
								                newCodeRecords.RuleCodes = ruleCode;
							 | 
						|||
| 
								 | 
							
								                newCodeRecords.Digit = digit;
							 | 
						|||
| 
								 | 
							
								                newCodeRecords.OwnerRuleCodes = ruleCodeower;
							 | 
						|||
| 
								 | 
							
								                newCodeRecords.OwerDigit = digitower;
							 | 
						|||
| 
								 | 
							
								                if (!string.IsNullOrEmpty(ruleCode))
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    newCodeRecords.Code = ruleCode + (maxNewSortIndex.ToString().PadLeft(digit, '0'));   ///字符自动补零   编码
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    newCodeRecords.Code = (maxNewSortIndex.ToString().PadLeft(digit, '0'));
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                if (!string.IsNullOrEmpty(ruleCodeower))
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    newCodeRecords.OwnerCode = ruleCodeower + (maxNewSortIndex.ToString().PadLeft(digitower, '0'));   ///字符自动补零  业主编码
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    newCodeRecords.OwnerCode = (maxNewSortIndex.ToString().PadLeft(digitower, '0'));
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                Funs.DB.Sys_CodeRecords.InsertOnSubmit(newCodeRecords);
							 | 
						|||
| 
								 | 
							
								                Funs.DB.SubmitChanges();
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region 根据菜单id,项目id 更新编码记录(当编码规则改变的时候 更新编码)
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 根据菜单id 更新编码记录(当编码规则改变的时候 更新编码)
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="menuId"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="projectId"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="unitId"></param>
							 | 
						|||
| 
								 | 
							
								        public static void UpdateCodeRecordsByMenuIdProjectId(string menuId, string projectId)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            var codeRecords = from x in Funs.DB.Sys_CodeRecords where x.MenuId == menuId && x.ProjectId == projectId select x;
							 | 
						|||
| 
								 | 
							
								            if (codeRecords.Count() > 0)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                foreach (var itemRecords in codeRecords)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    string ruleCode = string.Empty;
							 | 
						|||
| 
								 | 
							
								                    string ruleCodeower = string.Empty;
							 | 
						|||
| 
								 | 
							
								                    string symbol = "-"; ///间隔符
							 | 
						|||
| 
								 | 
							
								                    int digit = 4; ///流水位数
							 | 
						|||
| 
								 | 
							
								                    string symbolower = "-"; ///业主间隔符
							 | 
						|||
| 
								 | 
							
								                    int digitower = 4; ///业主流水位数
							 | 
						|||
| 
								 | 
							
								                    var project = BLL.ProjectService.GetProjectByProjectId(projectId);
							 | 
						|||
| 
								 | 
							
								                    if (project != null)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        string projectCode = project.ProjectCode; ///项目编号  
							 | 
						|||
| 
								 | 
							
								                        var sysCodeTemplateRule = BLL.ProjectData_CodeTemplateRuleService.GetProjectData_CodeTemplateRuleByMenuIdProjectId(menuId, projectId);////编码规则表
							 | 
						|||
| 
								 | 
							
								                        if (sysCodeTemplateRule != null)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            symbol = sysCodeTemplateRule.Symbol;
							 | 
						|||
| 
								 | 
							
								                            symbolower = sysCodeTemplateRule.OwerSymbol;
							 | 
						|||
| 
								 | 
							
								                            if (sysCodeTemplateRule.Digit.HasValue)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                digit = sysCodeTemplateRule.Digit.Value;
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (sysCodeTemplateRule.OwerDigit.HasValue)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                digitower = sysCodeTemplateRule.OwerDigit.Value;
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (sysCodeTemplateRule.IsProjectCode == true)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                ruleCode = projectCode + symbol;
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (sysCodeTemplateRule.OwerIsProjectCode == true)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                ruleCodeower = projectCode + symbolower;
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (!string.IsNullOrEmpty(sysCodeTemplateRule.Prefix))
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                ruleCode += sysCodeTemplateRule.Prefix + symbol;
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (!string.IsNullOrEmpty(sysCodeTemplateRule.OwerPrefix))
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                ruleCodeower += sysCodeTemplateRule.OwerPrefix + symbolower;
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (sysCodeTemplateRule.IsUnitCode == true || sysCodeTemplateRule.OwerIsUnitCode == true)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                var unit = BLL.UnitService.GetUnitByUnitId(itemRecords.UnitId);
							 | 
						|||
| 
								 | 
							
								                                if (unit != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    if (sysCodeTemplateRule.IsUnitCode == true)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        if (sysCodeTemplateRule.IsProjectCode == true)
							 | 
						|||
| 
								 | 
							
								                                        {
							 | 
						|||
| 
								 | 
							
								                                            ruleCode = projectCode + symbol + unit.UnitCode + symbol;
							 | 
						|||
| 
								 | 
							
								                                        }
							 | 
						|||
| 
								 | 
							
								                                        else
							 | 
						|||
| 
								 | 
							
								                                        {
							 | 
						|||
| 
								 | 
							
								                                            ruleCode = unit.UnitCode + symbol;
							 | 
						|||
| 
								 | 
							
								                                        }
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                                    if (sysCodeTemplateRule.OwerIsUnitCode == true)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        if (sysCodeTemplateRule.OwerIsProjectCode == true)
							 | 
						|||
| 
								 | 
							
								                                        {
							 | 
						|||
| 
								 | 
							
								                                            ruleCode = projectCode + symbolower + unit.UnitCode + symbolower;
							 | 
						|||
| 
								 | 
							
								                                        }
							 | 
						|||
| 
								 | 
							
								                                        else
							 | 
						|||
| 
								 | 
							
								                                        {
							 | 
						|||
| 
								 | 
							
								                                            ruleCode = unit.UnitCode + symbolower;
							 | 
						|||
| 
								 | 
							
								                                        }
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    if (ruleCode != itemRecords.RuleCodes || ruleCodeower != itemRecords.OwnerRuleCodes)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        itemRecords.RuleCodes = ruleCode;
							 | 
						|||
| 
								 | 
							
								                        if (!string.IsNullOrEmpty(ruleCode))
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            itemRecords.Code = ruleCode + ((itemRecords.SortIndex).ToString().PadLeft(digit, '0'));   ///字符自动补零   编码
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        else
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            itemRecords.Code = ((itemRecords.SortIndex).ToString().PadLeft(digit, '0'));
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        itemRecords.OwnerRuleCodes = ruleCodeower;
							 | 
						|||
| 
								 | 
							
								                        if (!string.IsNullOrEmpty(ruleCodeower))
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            itemRecords.OwnerCode = ruleCodeower + ((itemRecords.SortIndex).ToString().PadLeft(digitower, '0'));   ///字符自动补零  业主编码
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        else
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            itemRecords.OwnerCode = ((itemRecords.SortIndex).ToString().PadLeft(digitower, '0')); ;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        Funs.DB.SubmitChanges();
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region 根据菜单id,项目id 重新排序并生成编码(当编码规则改变的时候 重新排序并生成编码)
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 根据菜单id 重新排序并生成编码(当编码规则改变的时候 重新排序并生成编码)
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="menuId"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="projectId"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="unitId"></param>
							 | 
						|||
| 
								 | 
							
								        public static void DatabaseRefreshCodeRecordsByMenuIdProjectId(string menuId, string projectId)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            var codeRecords = from x in Funs.DB.Sys_CodeRecords orderby x.CompileDate where x.MenuId == menuId && x.ProjectId == projectId select x;
							 | 
						|||
| 
								 | 
							
								            if (codeRecords.Count() > 0)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                int sortIndex = 0;
							 | 
						|||
| 
								 | 
							
								                foreach (var itemCodeRecord in codeRecords)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    sortIndex++;
							 | 
						|||
| 
								 | 
							
								                    itemCodeRecord.SortIndex = sortIndex;
							 | 
						|||
| 
								 | 
							
								                    if (!string.IsNullOrEmpty(itemCodeRecord.RuleCodes))
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        itemCodeRecord.Code = itemCodeRecord.RuleCodes + ((sortIndex).ToString().PadLeft(itemCodeRecord.Digit ?? 4, '0'));   ///字符自动补零   编码
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    else
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        itemCodeRecord.Code = ((sortIndex).ToString().PadLeft(itemCodeRecord.Digit ?? 4, '0'));
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    if (!string.IsNullOrEmpty(itemCodeRecord.OwnerRuleCodes))
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        itemCodeRecord.OwnerCode = itemCodeRecord.OwnerRuleCodes + ((sortIndex).ToString().PadLeft(itemCodeRecord.OwerDigit ?? 4, '0'));   ///字符自动补零  业主编码
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    else
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        itemCodeRecord.OwnerCode = ((sortIndex).ToString().PadLeft(itemCodeRecord.OwerDigit ?? 4, '0'));
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    Funs.DB.SubmitChanges();
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |