C/S架构软件开发平台 - 旗舰版V6.0 - 工厂管理(多工厂模式)


 工厂管理(多工厂模式)-开发框架文库

1、前言

应客户要求,CSFrameworkV6旗舰版提供多工厂数据支持。

同一个账套数据库要能存储多个工厂的资料。

多工厂支持

多工厂模式应用在一个账套中,是指一个独立的账套数据库中存储多个工厂的数据。

功能特点:

  • 提供工厂管理与维护界面
  • 登录界面选择工厂
  • 业务数据,或特定基础资料数据使用工厂编码标识(FactoryId)隔离
  • 设置用户的工厂权限
  • 一个用户支持一个或多个工厂
  • 查看或操作拥有权限的工厂数据
  • 主界面切换工厂

多账套支持

多工厂与多账套本质区别:

  • 多工厂:是指一个独立的数据库账套存储多个工厂的数据
  • 多账套:数据按集团公司或工厂隔离,一个公司或一个工厂建立一个独立的数据库

参考:https://www.cscode.net/archive/newdoc/cs-210903193558082-57.html

2、工厂管理

界面

系统管理 -> 工厂管理

C/S架构软件开发平台 - 旗舰版V6.0 - 工厂管理(多工厂模式)

C/S架构软件开发平台 - 旗舰版V6.0 - 工厂管理(多工厂模式)

工厂模型(tb_Factory)

C# 全选
    [Table("tb_Factory")]
    public class tb_Factory
    {

        #region 所有字段属性

        /// <summary>
        /// 自增字段
        /// </summary>
        [Key, Column(Order = 1)]
        public String isid { get; set; }

        /// <summary>
        /// 工厂编码
        /// </summary>
        public String FactoryId { get; set; }

        /// <summary>
        /// 工厂名称
        /// </summary>
        public String FactoryName { get; set; }

        /// <summary>
        /// 联系人
        /// </summary>
        public String OwnerName { get; set; }

        /// <summary>
        /// 联系人电话
        /// </summary>
        public String OwnerPhone { get; set; }

        /// <summary>
        /// 地址
        /// </summary>
        public String Address { get; set; }

        /// <summary>
        /// 办公室电话
        /// </summary>
        public String OfficeTel { get; set; }

        /// <summary>
        /// 使用
        /// </summary>
        public String FlagUse { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public String Remark { get; set; }

        /// <summary>
        /// 创建日期
        /// </summary>
        public DateTime? CreationDate { get; set; }

        /// <summary>
        /// 创建人
        /// </summary>
        public String CreatedBy { get; set; }

        /// <summary>
        /// 最后修改
        /// </summary>
        public DateTime? LastUpdateDate { get; set; }

        /// <summary>
        /// 最后修改人
        /// </summary>
        public String LastUpdatedBy { get; set; }

        #endregion
    }

3、用户管理界面分配工厂权限

功能特点

  • 用户管理界面增加工厂选择。
  • tb_MyUser表增加Factories VARCHAR(500)字段,表示当前用户拥有的一个或多个工厂的权限。勾选的工厂在登录界面可以选择。
  • tb_MyUser模型增加Factories属性
  • DataDictCache增加工厂缓存数据

界面

C/S架构软件开发平台 - 旗舰版V6.0 - 工厂管理(多工厂模式)

4、登录界面

选择一个工厂,然后登录。

功能特点

  • 增加工厂选择组件
  • 用户登录逻辑要判断当前用户是否拥有工厂权限
  • 若登录成功,缓存FactoryId、FactoryIDs作为全局变量使用

界面

C/S架构软件开发平台 - 旗舰版V6.0 - 工厂管理(多工厂模式)

 

5、主界面切换工厂

功能特点

  • 提供下拉菜单按钮切换工厂
  • 变更缓存(Loginer.CurrnetUser.FactoryId)

界面

当前工厂:宁德工厂

C/S架构软件开发平台 - 旗舰版V6.0 - 工厂管理(多工厂模式)

 

切换到湖州工厂:

 

C/S架构软件开发平台 - 旗舰版V6.0 - 工厂管理(多工厂模式)

 

6、数据隔离

功能特点

  • 资料表添加 FactoryId VARCHAR(50) 字段
  • 查询条件添加工厂选择组件,显示当前用户拥有权限的工厂列表
  • 支持选择一个或多个工厂,调用查询接口返回工厂数据
  • 默认设置当前登录的工厂编码
  • 查询结果表格显示工厂信息

界面

参考CSFrameworkV6.1《销售报价单》。

工厂查询条件(支持选择一个或多个工厂)

C/S架构软件开发平台 - 旗舰版V6.0 - 工厂管理(多工厂模式)

查询数据:

C/S架构软件开发平台 - 旗舰版V6.0 - 工厂管理(多工厂模式)

报价单号:QO202300000010,报价单详情:

C/S架构软件开发平台 - 旗舰版V6.0 - 工厂管理(多工厂模式)

 

7、代码参考

代码文件:frmQO.cs

绑定工厂组件数据源

C# 全选
  DataBinderTools.BoundFactory(txt_FactoryId);
  DataBinderTools.BoundFactory(lue_FactoryId, false);
  DataBinderTools.BoundFactory(txtFactoryId.Properties, false);

清空查询条件按钮事件

C# 全选
        private void btnEmpty_Click(object sender, EventArgs e)
        {
            //注意:忽略工厂编码txt_FactoryId被清空
            base.ClearContainerEditorText(pnlSearch, txt_FactoryId);
        }

筛选工厂数据

获取工厂查询条件的值,如:C01,C02

C# 全选
FactoryIDs = txt_FactoryId.EditValue.ToStringEx(),

代码文件:dalQO.cs

C# 全选
        /// <summary>
        /// 查询销售报价单
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public List<res_tb_QO> Query(req_QO input)
        {
            var q = _Database.GetQueryable<tb_QO>();

            //查询工厂
            if (!String.IsNullOrWhiteSpace(input.FactoryIDs))
            {
                var list = input.FactoryIDs.SplitToList();//C01,C02 转换为 List<String>
                q = q.Where(w => list.Contains(w.FactoryId));
            }
            //省略代码......
        }

 

新增模式,自动设置工厂编码的值

文件位置:bll_QO.cs

C# 全选
this.CurrentBusiness.Master.FactoryId = Core.Loginer.CurrentUser.FactoryId;

编辑模式,工厂编码不可修改(设为只读)

C# 全选
txtFactoryId.Properties.ReadOnly = true;

工厂缓存数据

文件位置:DataDictCache.cs

C# 全选
        /// <summary>
        /// 工厂缓存数据
        /// </summary>
        public List<tb_Factory> Factories
        {
            get
            {
                Func<List<tb_Factory>> action = delegate ()
                {
                    return new bll_Factory().GetLookupData();
                };

                return InitCache<tb_Factory>(action);
            }
        }

Loginer 登录用户实例

文件位置:CSFrameworkV6.Core.Loginer.cs

C# 全选
        /// <summary>
        /// 当前登录的工厂编码
        /// </summary>
        public string FactoryId { get; set; }

        /// <summary>
        /// 当前用户拥有的工厂编码
        /// </summary>
        public string FactoryIDs { get; set; }

功能说明

  • 用户登录成功,系统给2个属性赋值
  • 应用场景:var factoryId = Core.Loginer.CurrentUser.FactoryId

 

版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
评论列表

发表评论

评论内容
昵称:
关联文章

C/S架构软件开发平台 - 旗舰V6.0 - 工厂管理工厂模式
C/S架构软件开发平台 - 旗舰V6.0 - 通用选择窗体
C/S架构软件开发平台 - 旗舰V6 软件简介
C/S架构软件开发平台 - 旗舰V6.0 - 自动创建数据库备份计划
C/S架构软件开发平台 - 旗舰V6.0开发者技能要求
C/S架构软件开发平台 - 旗舰V6.0 - 用户自定义配置报表
C/S架构软件开发平台 - 旗舰V6.1 - 新功能汇总
C/S软件开发平台旗舰V6.0-迭代开发记录-财务科目管理
C/S架构软件开发平台 - 旗舰V6.0 - 数据库维护执行脚本更新
C/S架构软件开发平台 - 旗舰V6.0软件案例 - 股票软件工具
C/S软件开发平台旗舰V6.0 - 报表管理
C/S架构软件开发平台 - 旗舰V6.1 - 销售模块 - 客户管理
C/S架构软件开发平台 - 旗舰V6 主页
新增主从表业务单据窗体 | C/S架构软件开发平台 - 旗舰V6.0
C/S软件开发平台旗舰V6.0-迭代开发记录-主界面
C/S架构软件开发平台旗舰V6.0 - 使用FastReport.NET制作二维码报表
C/S架构软件快速开发平台-旗舰V5.1简介
C/S架构软件开发平台 - 旗舰V6.0 - 成功案例 - 喜鹊ERP-进销存ERP系统基础框架
C/S软件开发平台旗舰V6.0-迭代开发记录-系统登录
C/S架构软件开发平台旗舰V6.0-WebApi新增接口