diff --git a/Writerside/images/200.png b/Writerside/images/200.png new file mode 100644 index 0000000..1f1ead3 Binary files /dev/null and b/Writerside/images/200.png differ diff --git a/Writerside/images/201.png b/Writerside/images/201.png new file mode 100644 index 0000000..b24ab61 Binary files /dev/null and b/Writerside/images/201.png differ diff --git a/Writerside/images/202.png b/Writerside/images/202.png new file mode 100644 index 0000000..b3489b6 Binary files /dev/null and b/Writerside/images/202.png differ diff --git a/Writerside/images/204.png b/Writerside/images/204.png new file mode 100644 index 0000000..7c53de1 Binary files /dev/null and b/Writerside/images/204.png differ diff --git a/Writerside/images/3000.png b/Writerside/images/3000.png new file mode 100644 index 0000000..6c893b9 Binary files /dev/null and b/Writerside/images/3000.png differ diff --git a/Writerside/images/30001.png b/Writerside/images/30001.png new file mode 100644 index 0000000..1f658bf Binary files /dev/null and b/Writerside/images/30001.png differ diff --git a/Writerside/in.tree b/Writerside/in.tree index 076894b..d4ecd33 100644 --- a/Writerside/in.tree +++ b/Writerside/in.tree @@ -3,11 +3,30 @@ SYSTEM "https://resources.jetbrains.com/writerside/1.0/product-profile.dtd"> + name="公务员文档" + start-page="公务员文档.md"> + + + + + + + + + + + + + + + + + + + - + diff --git a/Writerside/topics/公务员文档.md b/Writerside/topics/公务员文档.md new file mode 100644 index 0000000..04d4219 --- /dev/null +++ b/Writerside/topics/公务员文档.md @@ -0,0 +1,3 @@ +# 公务员文档 + +Start typing here... \ No newline at end of file diff --git a/Writerside/topics/增加第二版排序.md b/Writerside/topics/增加第二版排序.md new file mode 100644 index 0000000..47781fe --- /dev/null +++ b/Writerside/topics/增加第二版排序.md @@ -0,0 +1,29 @@ +# 增加第二版排序 + +## 思路 + + + + # 优势 +1. 查询只排序单字段 +# 缺点 +1. 同步更新的时候,可能无法全局进行更新处理 +2. 如果部分数据发生变更时或人员集体内排序号发生更新,需要全局进行数据更新操作 + + + # 优势 +1. 将部分字段进行更新时拆分 +# 缺点 +1. 但是无法解决部分上级节点顺序发生变化情况 +2. 如果部分数据发生变更时,需要全局进行数据更新操作 + + + +主要针对如何处理上级机构如果存在重新排序时,应该如何进行处理。 +或者说"部分数据发生变更时",不进行全部数据更新操作。 + +## 结论 + +增加使用字段 `A01.A0157 is '前置遍历序号(废弃:人事关系所在机构代码)'` 的作用。 + +原意义已不使用。 diff --git a/Writerside/topics/排序说明.md b/Writerside/topics/排序说明.md new file mode 100644 index 0000000..4dc785c --- /dev/null +++ b/Writerside/topics/排序说明.md @@ -0,0 +1,16 @@ +# 排序开始 + +对于公务员系统,应该存在排序,在队伍建设,人们总是习惯关注在某一个队伍行列中,自己所在行列的上司在职务执行中的排序。 + +排序是一种展示人员职务重要性和先后顺序的指标。 + +## 现状 + +当前公务员系统存在两大重要的排序字段(人员任职机构中的最高机构代码:`TORGID`,排序字段:`SORTID`),在顺序创建机构时, +对于 `TORGID` 是按照顺序进行排列展示的,就没有问题,人员就可以按照先机构后人员进行顺序展示,但是存在机构排序操作,即 +在操作机构,同一个父节点下的机构存在不同顺序(有异与顺序机构排序号)。 + +## 思考 + +按照查询习惯进行排序需要,又存在需要“先机构后人员”的查询需要,也有从机构到逐渐下探到底,然后逐个上浮查询兄弟机构, +逐渐到根,依次展示,专业名称叫“前置排序”。 \ No newline at end of file diff --git a/Writerside/topics/开始.md b/Writerside/topics/校核开始.md similarity index 98% rename from Writerside/topics/开始.md rename to Writerside/topics/校核开始.md index 4d1f5cd..4bc3f18 100644 --- a/Writerside/topics/开始.md +++ b/Writerside/topics/校核开始.md @@ -1,4 +1,4 @@ -# 《%mainJob%》开始 +# 校核开始 ## 功能位置 diff --git a/Writerside/topics/点击机构查询.md b/Writerside/topics/点击机构查询.md new file mode 100644 index 0000000..689ba1c --- /dev/null +++ b/Writerside/topics/点击机构查询.md @@ -0,0 +1,61 @@ +# 点击机构查询 + +## 功能操作 + +常规查询方式,点击机构进行数据查询。 + +## 基本操作 + +* 数据默认查询 + * 排序垃圾数据 + * 现职人员 + * 人员类别(公务员) + * 报表条件(如:统计中央一级) + * 统计范围(按照统计关系所在单位,,默认包含下级) + * 操作用户的权限脚本 + +```sql +-- 默认点击查询 +select tmp.a0000, '0A9E21F1CBA1276AE0743D859E081777' sessionid, +(@i := @i + 1) as i +from (select @i := 0) as it, + (select a01.a0000, '0A9E21F1CBA1276AE0743D859E081777' sessionid + from A01 a01 + where 1 = 1 + and a01.status != '4' -- 排序垃圾数据 + and a0163 = '1' -- 现职人员 + and exists(select 1 + from a02 a02, + competence_userdept cu + where cu.userid = '1' + and a02.A0201B = b0111 + and a01.a0000 = a02.a0000 + and a0281 = 'true' -- 职务输出 + and a02.a0201b like '001.001.007%') -- 权限脚本 + order by length(torgid), (select concat(LPAD(SORTID, 6, 0), torgid ) + from b01 where B0111 = torgid) asc, -- 数据排序 + torder asc, a0000 asc) tmp + +-- 点击“其他人员”机构 +select tmp.a0000, '0A9E21F1CBA1276AE0743D859E081777' sessionid, +(@i := @i + 1) as i +from (select @i := 0) as it, + (select a01.a0000, '0A9E21F1CBA1276AE0743D859E081777' sessionid + from A01 a01 + where 1 = 1 + and a01.status != '4' -- 排序垃圾数据 + and not exists (select 1 + from a02, + b01 + where a02.a0000 = a01.a0000 + and b0111 = a0201b + and a0281 = 'true' -- 职务输出 + and b0111 != '-1') -- 权限脚本 + and a0163 = '1' + order by length(torgid), (select concat(LPAD(SORTID, 6, 0), torgid) + from b01 where B0111 = torgid) asc, -- 数据排序 + torder asc, a0000 asc) tmp + +``` + + diff --git a/Writerside/topics/直统开始.md b/Writerside/topics/直统开始.md new file mode 100644 index 0000000..48ce8db --- /dev/null +++ b/Writerside/topics/直统开始.md @@ -0,0 +1,35 @@ +# 直统开始 + +## 功能操作 +![3000.png](3000.png) + +在人员直统功能中,选择统计类别,统计报表,统计单位进行数据统计。 + +实际情况数据直统,是实时数据统计,统计数据不进行数据存储。 + +数据直统也是统计数据反方向进行统计验证。 + +## 数据直统 + +数据统计存在条件信息。 + +* 数据直统 + * 排序垃圾数据 + * 现职人员 + * 人员类别(公务员) + * 报表条件(如:统计中央一级) + * 统计范围(按照统计关系所在单位,,默认包含下级) + * 操作用户的权限脚本 + +```sql +SELECT a01.* +FROM A01 a01 + LEFT JOIN b01 a02 ON a02.b0111 = a01.a0195 +where a01.a0163 = '1' -- 现职人员 + and a01.status!='4' -- 排序垃圾数据 + and ( a0195 like '001.001.005%' ) -- 统计范围 + and a02.b0124 ='11' -- 报表条件(如:统计中央一级) + and a0160='1' -- 人员类别(公务员) + AND EXISTS(SELECT 1 FROM competence_userdept cu + WHERE cu.userid='1' AND A0195 = b0111 ) -- 权限脚本 +``` \ No newline at end of file diff --git a/Writerside/topics/第一版排序.md b/Writerside/topics/第一版排序.md new file mode 100644 index 0000000..47dab78 --- /dev/null +++ b/Writerside/topics/第一版排序.md @@ -0,0 +1,85 @@ +# 第一版排序 + +## 操作机构排序 +![200.png](200.png){ thumbnail="true" style="block" } + +在机构管理中,进行机构拖动,然后进行数据存储,存储时,按照同父节点进行顺序从(1到n进行顺序增加)。 + +## 操作人员排序 + +![201.png](201.png){ thumbnail="true" style="block" } + +需要注意的是,不同的职务,如果职务属于不同的科室,则展示的排序顺序也会不一样。 + +每一个人在每一个有职务的机构的排序均不一样,当然在整体来看,人员的集体内排序号以“按照机构最高的职务,排序靠前的顺序”进行展示。 + +例如: +![202.png](202.png){ thumbnail="true" style="block" } + +余某某,在“宁波市人民政府”和“宁波市教育局”两个单位任职,分别如下 + +| ---- | ---- | ---- | +| 机构名 | 机构码 | 排序号 | +| 宁波市人民政府 | 001.001.002 | 4 | +| 宁波市教育局 | 001.001.002.004 | 1 | + +这是这个人员,由于在“宁波市人民政府”任职,编码或者层次深度更小,则最终人员的集体内排序应为 + +`TORGID` = `001.001.002` 和 `SORTID` = `4` + +其实主要是针对“机构码”的计算,寻找深度小的任职单位。 + +那么同样任职深度的单位,如何进行计算操作呢!这是一个比较复杂的问题。按照原则,如果相同深度机构, +应该在比较是否同父节点,同父节点,按照机构排序码进行比较,不是同父父节点,按照上级节点谁靠前,先排谁。 + +## 操作人员算法 + +> 这里简化了后面比较复杂的情况。以 SQL 函数的方式进行数据比较查询性能上可能存在局限。 + +* 数据更新 + ```sql + -- 定义函数 + create function get_torgid(V0000 varchar(120)) returns varchar(199) + begin + DECLARE FunctionResult VARCHAR(199); + select min(a0201b) into FunctionResult from + (select a02.A0201B + from a02, b01 + where a02.a0000 = V0000 + and b01.b0111 = a02.a0201b + and a02.a0281 = 'true' + and a0201b <> '-1' + order by b01.sortid) a02 LIMIT 1; + return FunctionResult; + end; + + -- 在基本数据发生保存时,即人员集体内排序或人员职务信息发生保存时。 + -- 更新人员整体的集体内排序标识 + update a01 set a01.torgid= get_torgid(a0000) where a0000 = '${a0000}'; + update a01 set a01.torder= + lpad( + ifnull( + (select max(a0225) from a02 + where a01.a0000 = a02.a0000 and + a02.a0281 = 'true' and + a01.torgid=a02.a0201b) + ,'1') + ,5,'0') where a01.a0000 = '${a0000}'; + ``` + + * 数据查询 + + ![204.png](204.png) { thumbnail="true" style="block" } + + > 这里虽然能部分解决机构排序号的问题,但是上级单位的排序号还是会影响整体排序。 + + 在手动排序功能下,默也是认排序方式, + + ```sql + select a01.a0000, 'xxx' sessionid from A01 a01 + order by length(torgid), -- 为了描述深度 + (select concat(LPAD(SORTID, 6, 0), torgid) from b01 + where B0111=torgid) asc, -- 为了拼接机构排序码 + torder asc, -- 人员排序号 + a0000 asc -- 无效字段 + ``` \ No newline at end of file diff --git a/Writerside/topics/编制统计开始.md b/Writerside/topics/编制统计开始.md new file mode 100644 index 0000000..aba68fd --- /dev/null +++ b/Writerside/topics/编制统计开始.md @@ -0,0 +1,48 @@ +# 编制统计开始 + +## 现状 + +> 这里简化基本数据统计。 + + +* 统计情况 + + * 数据统计展示 + + ![30001.png](30001.png) { thumbnail="true" style="block" } + + > 这里虽然数据按照遍历下级数据,但是速度还是可以满足基本数据统计。 + + * 数据统计标准 + + * 现职人员 + * 任职状态 + * 是否领导职务 + * 班子成员类别代码 = 指定值 + * 【隐藏】领导成员 a0201d = '1' (因为存在领导成员类型,默认是领导成员) + + * 脚本部分 + + ```sql + -- 正职 + Select Count(distinct t.a0000) + From A02 t + where t.a0201e = '1' -- 班子成员类别代码(正职) + and t.a0201b in (select b0111 from b01 where (B0121 = '${b0111}' + and b0194 = '2') or B0111 = '${b0111}') -- 指定范围 + and t.a0219 = '1' -- 是否领导职务 + and t.a0255 = '1' -- 任职状态 + and exists (select 1 from a01 b where b.a0000 = t.a0000 + and b.a0163 = '1') -- 现职人员 + + -- 副职 + Select Count(distinct t.a0000) + From A02 t + where t.a0201e = '3' -- 班子成员类别代码(副职) + and t.a0201b in (select b0111 from b01 where (B0121 = '${b0111}' and + b0194 = '2') or B0111 = '${b0111}') -- 指定范围 + and t.a0219 = '1' -- 是否领导职务 + and t.a0255 = '1' -- 任职状态 + and exists (select 1 from a01 b where b.a0000 = t.a0000 + and b.a0163 = '1') -- 现职人员 + ``` diff --git a/Writerside/topics/规则分类.md b/Writerside/topics/规则分类.md index 9d44718..2746126 100644 --- a/Writerside/topics/规则分类.md +++ b/Writerside/topics/规则分类.md @@ -1,4 +1,4 @@ -# 《%mainJob%》分类 +# 校核分类 > 校核规则主要分为无前提条件校核和有前提条件校核两个部分。 diff --git a/Writerside/topics/规则详解.md b/Writerside/topics/规则详解.md index 666fa0d..5a063e2 100644 --- a/Writerside/topics/规则详解.md +++ b/Writerside/topics/规则详解.md @@ -1,4 +1,4 @@ -# 《%mainJob%》规则详解 +# 规则详解 ## 每年变动规则 {collapsible="true"}