多组织系统的设计思路

news2024/11/15 10:52:45

一、什么是多组织系统

多组织这个概念是一般多用于企业信息化系统。通常是指一个集团分拆了多个子公司进行运营,每家子公司负责集团业务的一个到多个部分,多家子公司共同支撑集团的全部业务。

子公司内部,在业务执行过程中相对独立, 甚至有自己的财务归集口径和运营管理模式,但最终数据需要归集到集团。

这类集团在上企业信息化系统时,需要系统有在子公司内独立运行的能力,也要求有组织间数据共享、协作、整合的能力。

常见的场景有:

1. 产销分离:一家公司负责销售,另一家公司负责生产。

2. 集采分收:集团公司负责采购计划,分子公司收货入库。

3. 集采集收:集团公司负责采购计划并采购入库,分子公司通过组织间调拨方式领料收货。

4. 内部购销:不同组织间,原材料、半成品、成品 通过买卖关系进行调货。

等等

二、多组织系统要达到的目标

1. 档案

使用一种或多种方式:

a. 档案共享:集团总公司制定部门、料品、人员 等等 编码规则,统一对部门、物料等各类档案进行定义和编码,然后各子公司读取集团公司的档案信息。

b. 档案下发:集团总公司制定的档案,可以按档案类型、档案编码下发到分子公司,并授与分子公司修改部分属性的权利。

c. 档案隔离:每家子公司除可以引用集团下发或共享的档案外,同时可以自己编制内部自用的档案案。

2. 业务往来

常见的业务往来:跨组织领料、跨组织发货、上游组织接单下游组织生产、

三、系统实现思路

限于篇幅仅从数据流层面讲讲实现原因

1.档案

a. 档案隔离:每个档案添加一个组织字段,代表档案由哪个组织制定,可以由哪个组织使用;

如果需要多个组织共同使用,通过下发或者共享方式实现。

b. 档案共享:即将组织字段清空,代表所有组织都可以全用。

c. 档案下发:即档案复制一份,在新数据里填上要下发的组织。

2. 业务往来

多组织内业务往来在系统中主要体现为:

  • 能够查看业务上下游的报表、单据
  • 能够参照上游组织的单据制订本组织的单据
  • 能够对下游组织的下达任务,即推送下游组织的单据

实现方式通常有两种:

  • 职能拆解法,常见于大型的ERP产品 
  • 业务协同法,常见于MES、WMS等现场执行系统。限于篇幅,下面仅从软件如何做数据控制的层面做一下介绍。

【职能拆解方式】

a. 职能梳理

整合全集团的全部业务,整理出集团的职能。 常见的职能划分:开票组织、库存组织、生产组织、采购组织 等等,具体职能划分 可参考大型ERP产品。

将上述职能提炼为 组织档案的 属性。

b.组织职能

在系统的组织档案上,给对应的组织启用 对应的职能。

c.职能字段定义

相比于单组织系统的单据,多组织系统的单据上需要预留这些职能组织对应的字段。每类职能预留留一个字段。   

固定职能编码 OR  使用职能自定义项 两种方式均可。

下面以职能自定义项来介绍实现原理,假设我们预置 16个职能自定义项, 在“系统管理-自定义项” 管理页面,设置整个系统启用多少个自定义项。

假设字段名叫 cBusOrgCode1、cBusOrgCode2、cBusOrgCode3... cBusOrgCode16,

字段对应的标题在自定义项设置里可以设置,例如:cBusOrgCode1 叫 开票组织,cBusOrgCode2 叫库存组织。  

组织信息  这个档案 有显示属性可以勾选,就看 自定义项里 启用了哪些自定义项,名称 跟着 自定义项的 项目名称 走。

d. 定义单据启用职能

单据头中数据表中预置 cBusOrgCode1、cBusOrgCode2。。。到 cBusOrgCode16   共16个自定义项。

每类单据启用哪些职能组织,只需要在原来的功能档案中,添加启用字段,bBusOrgCode1、bBusgOrgCode2...到cBusOrgCode16, 用这16个字段标识该类单据分别启用哪些职能字段。当然能够启用的范围 要受到 第c步 总体启用情况的限制,只能启用 “自定义项”管理中 已启用的职能字段。

e. 数据权限

用户登录系统后,可以看见哪些单据、参照哪些单据、操作哪些单据,按照上述划分的职能进行控制。

系统实现概述:

  • 考虑到用户在单据界面上翻页的情况,不能拿着 当前单据的信息(制单组织、单据类型、单据号)去调用平台接口,判断是否有权查看。而是应该提供一个方法,这个方法给到业务开发组,业务开发组在查询单据的代码上,把它作为附加的查询条件。这样在单据翻页和单据列表中查询时,都能控制住单据的可见范围
  • 由平台提供统一的方法,控制登录系统的人员 能够看到 哪些组织、哪些类型、哪些编号的单据。传入参数:当前人员、当前组织、当前单据类型;返回参数 是一个过滤条件,类似cBusOrgCode1 in ('xxx') AND cBusOrgCode2 in ('yyy') 。  业务组开发拿到它后,对数据进行过滤。
  • 基于跨组织往来的改造: 

       伪代码=>

                    原组织隔离在查询数据时有限制“单据.制单组织 = (登录人.当前登录组织)”   

                    现在修改为                                                                                     

                  业务单据.表头. 制单组织 = ( 登录人.所在组织)    or ( 平台方法返回的过滤条件 )

  • 原来单组织模式下的功能权限和权限数据保持不变

【业务协同方式】

a. 提炼集团业务,制定协同路线

如下图是产销分离的协同路线设置,总公司组织编码是001,负责销售;生产子公司编码是 002,负责生产;

还可以设置不同的协同路径,定义不同的组织间传递规则。

b. 单据按协同路线传递

单据的单据头添加 协同路线,需要做跨组织业务的单据,在制单过程中录入协同路线。

单据在单据的保存后或审核后事件中,按照上面的单据规则,触发生成下游组织的单据。实现上下游组织业务协同。

协同路线仅定义多组织间单据类型的传递规则,并不记录 具体单据的上下游关联。

c.数据权限
  • 上游组织在制单或审核单据后,自动触发生成下游组织单据的方式,我们称为推式生单;

(如上图中的“发起组织”,审核完“采购订单”后,系统自动生成“接收组织”的采购订单。)

  • 同时也支持下游组织查看上游单据,并拉取上游单据的信息,生成下游单据,我们称为拉式生单;( 如上图中的“接收组织”,主动查看“发起组织”的采购订单。)
  • 除组织隔离需要改造外,原单组织系统下的功能权限和数据权限保持不变。
  • 跨组织业务相关的单据,可以由两种方式实现数据权限:
  • 一是在每类单据表头 添加一个来源组织字段,查询数据时过滤条件为:单据.单据头.来源组织 = 用户.当前组织, 这种方式简单粗暴,甚至可以不用顾及  协同路线。
  • 二是通过平台提供一个方法,这个方法用于获取 当前类型的单据 该用户 能够查看的单据ID(基础数据来源于参照生单记录)。  传入参数:  单据类型、当前用户、当前组织。  返回参数:单据ID。   业务组开发 拿到这个返回参数,作为查询条件 过滤数据。

以上是个人的一些分享与总结,欢迎交流碰撞。 Q304418200.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1996996.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c++标准库STL————string类的基础模拟

string类 一、构造类函数1.构造一个空内容的对象2.用已知对象进行拷贝构造3.用c语言字符串的形式构造 二、容量型函数三、对象访问四、修改类操作4、非成员函数 一、构造类函数 c11提供了许多参数的重组,但通常这四种类型的构造较为常用。 1.构造一个空内容的对象 …

Python 机器学习求解 PDE 学习项目 基础知识(4)PyTorch 库函数使用详细案例

PyTorch 库函数使用详细案例 前言 在深度学习中,PyTorch 是一个广泛使用的开源机器学习库。它提供了强大的功能,用于构建、训练和评估深度学习模型。本文档将详细介绍如何使用以下 PyTorch 相关库函数,并提供相应的案例示例: to…

我在高职教STM32——I2C通信之读写EEPROM(1)

大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正是如此,才有了借助CSDN平台寻求认同感和成就感的想法。在这里,我准备陆续把自己花了很多心思设计的教学课件分…

日撸Java三百行(day18:循环队列)

目录 一、顺序队列与循环队列 二、代码实现 1.循环队列创建 2.循环队列遍历 3.循环队列入队 4.循环队列出队 5.数据测试 6.完整的程序代码 总结 一、顺序队列与循环队列 在昨天,我们提到队列实现除了采用链式存储结构,还可以采用顺序存储结构&…

数字电路波形图绘制工具WaveDrom简介

最近写东西的时候,需要画波形图,无意中找到了一蛮好用的工具:WaveDrom WaveDrom 是一个 JavaScript 应用程序。WaveJSON 是一种描述数字时序图的格式。WaveDrom 直接在浏览器内部渲染这些时序图。元素 “signal” 是一个 WaveLane 数组。每个…

NO.4 软件外包公司

今天我们来聊聊国内的四大软件外包公司。这些公司不仅在国内市场中占据重要地位,还对全球软件外包行业产生了影响。 部分数据来源网络排名,按照职位量、增长速度排名,排名仅供参考,去某家公司一定要多方位参考,比如企查…

uniapp基础知识【搬代码】

基础知识 HTML、css、javaScript&#xff08;ES6&#xff09; HTML结构 1.View 类似于传统html中的div&#xff0c;用于包裹各种元素内容。 2.text文本 3.swoper 4.image 5.video 6.button 7.input <template><!-- <view class"content"><imag…

泛微E-office 10 schema_mysql接口敏感信息泄露漏洞复现 [附POC]

文章目录 泛微E-office 10 schema_mysql接口敏感信息泄露漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现泛微E-office 10 schema_mysql接口敏感信息泄露漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内…

两篇论文同时获最佳论文荣誉提名,SIGGRAPH上首个Real-Time Live的中国团队用生成式AI创建3D世界

专注于计算机图形学的全球学术顶会 SIGGRAPH&#xff0c;正在出现新的趋势。 点击访问我的技术博客https://ai.weoknow.comhttps://ai.weoknow.com 在上周举行的 SIGGRAPH 2024 大会上&#xff0c;最佳论文等奖项中&#xff0c;来自上海科技大学 MARS 实验室的团队同时拿到两篇…

HTML表单元素

HTML表单元素 表单把用户的信息发给服务器。 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title> </head><body><form class"stylin_form1" action"process_form.php" met…

uni-app开发微信小程序注意事项,不要用element-ui

前端扩展组件千万不要用element-ui&#xff0c;开发的时候不报错&#xff0c;发布的时候会报错无法发布。 可以用vant weapp【注意是weapp】 iView weapp 附上hbuilder官方文档 组件的概念 | uni-app官网 (dcloud.net.cn)

git-贮藏区打补丁

1.显示所有贮藏 git stash list 2.将贮藏区的修改打补丁 git stash show -p stash{0} > patchName.patch commit打补丁 git 生成补丁文件及打补丁_git 生成指定目录补丁-CSDN博客 git patch的使用方法_git pattch-CSDN博客

「MyBatis」数据库相关操作

MyBatis 简介 MyBatis 是⼀个持久层框架&#xff0c;用于简化 JDBC 的开发 持久层指的就是持久化操作的层&#xff0c;通常指数据访问层 (dao)&#xff0c;是用来操作数据库的 Mapper 注解的接口表示该接口是 MyBatis 中的 Mapper 接口 回顾一下之前提到过的图 简单来说&…

如何选用合适的开源知识管理系统?10款软件推荐

国内外主流的10款开源知识管理软件对比&#xff1a;PingCode、Worktile、DokuWiki、MediaWiki、GitBook、Nuclino、Think、TiddlyWiki、AFFiNE、Foam。 在管理知识的广阔天地中&#xff0c;选择合适的工具可能会让你感到头痛。开源知识管理软件以其灵活性和成本效益在行业内脱颖…

Java设计模式-单例模式最佳实践

1. 单例模式简介 Java 单例模式是四大设计模式之一&#xff0c;属于创建型设计模式。从定义上看&#xff0c;它似乎是一种简单的设计模式&#xff0c;但在实现时&#xff0c;如若不注意&#xff0c;它会带来很多问题。 在本文中&#xff0c;我们将了解单例设计模式原则&#…

使用 GPU 加速的 XGBoost 预测出租车费用

目录 XGBoost GPU 加速的 XGBoost 用例数据集示例 将文件中的数据加载到 DataFrame 定义特征数组 保存模型 总结 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c; 可以当故事来看&#xf…

小智纯前端js报表实战5-绝对坐标-横向扩展

绝对坐标-横向扩展 概述 绝对坐标-横向扩展&#xff1a;绝对坐标定位 层次坐标是实现复杂报表的一个重要功能。 在进行小智报表模板设计时&#xff0c;单元格尚未进行扩展&#xff0c;但是有些时候需要获取扩展后的单元格并进行计算。例如&#xff0c;A1单元格扩展成A1-D1&am…

VUE+Spring前后台传值的坑,后台接收的String参数在末尾会出现 “=”

一、问题 VUESpringBoot做增删改查时&#xff0c;前端使用axios.post发起请求&#xff0c;传输主键字符型参数 taskId 到后台&#xff0c;后台再进行删除处理。 实际过程中发现后台拿到的数据再末尾多了一个等号&#xff0c;但是通过console.log(taskId)前台打印参数是正常的…

巴洛克风格的现代演绎,戴上亚法银耳机,感受古典雕花与现代声学的碰撞

flipears耳机品牌以其独特的风格、精细的配置和卓越的音质在耳机市场中很受欢迎&#xff0c;像是我最近用过的一款Artha Argentum亚法银&#xff0c;就采用了纯银外壳&#xff0c;而且用料扎实&#xff0c;具有出众的声学表现&#xff0c;带来了更干净清澈的声底。内在配置方面…

[Linux] LVM挂载的硬盘重启就掉的问题解决

问题&#xff1a;系统重启后挂在逻辑卷的盘会掉&#xff08;必现&#xff09; 环境&#xff1a;SUSE Linux 11 SP4 原因&#xff1a;boot.lvm是关闭的 解决&#xff1a;boot.lvm设置开启 参考资料&#xff1a; linux下lvm状态Not avaliable问题排查及处理(常见Suse操作系统…