1 基本说明

1.1 公司系统

01.常用信息1
    a.Gitlab
        a.说明1
            地址:http://192.168.1.249,旧
            地址:http://192.168.3.200:80,新,由14.6.1升至18.11.10
            地址:http://111.53.193.159:9099/zhgh/sxlq-zhgh-server.git
            账号:zhangyu
            密码:qeER159263
            邮箱:[email protected]
            令牌:WUNX6-bz8fyCzCaDa6nT
        b.说明2
            账号:songjingjing
            密码:110999song
            令牌:zy896hw72pdjsy9EAssZ,20260112-20260930
        c.说明3
            GitLab已完成SMTP邮件服务配置,密码找回、令牌创建、系统通知均可正常接收。
            如无法收到相关邮件,请自行检查账号内绑定的邮箱信息。
    b.Server
        a.说明1
            nexus               192.168.1.210:8081              zkzx        zkzx@123.         废
            nexus               192.168.1.249:8081              zkzx        zkzx@123.         废
            nexus               192.168.3.210:8081              zkzx        zkzx@123.         定
        b.说明2
            nacos               192.168.1.249:8848/nacos        zkzx        zkzx666
            nacos               192.168.1.231:28848/nacos       nacos       zkzx231
        c.说明3
            sonar               192.168.1.249:9000
            kibana              192.168.1.249:5601
            jenkins             192.168.1.249:8080
            rocketmq            192.168.1.249:18080
    c.统一登录
        a.网址
            https://www.sxlq.com:7011/cas/login
            sunxiaoxiong
            mfLMvieg0?R8
        b.网址
            https://www.sxlq.com:7011/cas/login
            songjingjing
            Abc123!@#45678
    d.项目协作
        a.禅道
            地址:http://192.168.3.104/
            用户名:姓名小写全拼
            初始密码:Zkzx123
            全新密码:Zkzx123
        b.使用
            项目:路桥甄选
            需求:项目云服务器部署
            任务:XXXXXXXXXXXXX
            计划:XXXXXXXXXXXXX
            测试:BUG、用例、测试单、测试报告

02.常用信息2
    a.100
        a.数据,mysql
            网址:192.168.3.100:23306
            账号:root
            密码:zkzx@231
            -------------------------------------------------------------------------------------------------
            账号:sunxiaoxiong
            密码:mfLMvieg0?
            -------------------------------------------------------------------------------------------------
            账户:zhangyu
            密码:tpekvPxGR81hm6
            账号权限:[email protected].%
            库表权限:sxlq_lqzx%,比如【sxlq_lqzx_20260521_165336】
            -------------------------------------------------------------------------------------------------
            账户:sxlq_lqzx
            密码:Lqzx@2026Db!9xk
            账号权限:[email protected].%
            库表权限:sxlq_lqzx%,比如【sxlq_lqzx_20260521_165336】
            -------------------------------------------------------------------------------------------------
            推荐 方案 A:在 mysql8042 容器中执行以下 SQL,创建用户并授权:
            CREATE USER IF NOT EXISTS 'sxlq_lqzx'@'192.168.%' IDENTIFIED WITH mysql_native_password BY 'Lqzx@2026Db!9xk';
            GRANT ALL PRIVILEGES ON `sxlq_lqzx%`.* TO 'sxlq_lqzx'@'192.168.%';
            FLUSH PRIVILEGES;
        b.数据,redis
            网址:192.168.3.100:6379
            密码:zkzx@100(旧)
            密码:无密码(新)
    b.102
        a.服务
            网址:192.168.3.102
            账号:root
            密码:zkzx@102
    c.103
        a.数据,minio
            网址:http://192.168.3.103
            账号:zkzx
            密码:zkzx@103
    d.105
        a.服务
            网址:192.168.3.105
            账号:root
            密码:zkzx@105
        b.面板,baota
            网址:http://192.168.3.105:33886/4f2218a2
            账号:zkzxroot
            密码:QNmsZ~[C9Ws$
            转发端口:5980、5990
            IP限制:192.168.1.200(智奇),192.168.1.11(自己,wifi),192.168.1.164(自己,网线)
            IP限制:192.168.1.177(孙晓雄),192.168.1.177(宋晶晶)
            IP限制:192.168.1.200,192.168.1.11,192.168.1.164,192.168.1.177,192.168.1.165
    e.200
        a.面板,jenkins
            网址:http://192.168.3.200:8080/
            账号:zkzx
            密码:ELm0i2}AN7i!
    f.231
        a.服务
            网址:192.168.1.231
            账号:root
            密码:[email protected]

03.常用信息3
    a.20260414,工会上线
        a.说明1
            工会先放231服务器
            231逐步淘汰,centos7有问题
            231服务器,docker跑不起来
            nacos别折腾了,直接jar包运行读本地yml
            nacos在docker里,231的nacos折腾好也不会继续用了
            直接231jar包运行,本地读yml,不用nacos
            但是保留nacos的版本,服务器之后弄好再说
        b.说明2
            前端 pnpm 启动
            钉钉 发交易 到 h5页面
            钉钉登录不上,光开放端口没用,钉钉登陆需要钉钉管理控制台绑定回调ip
            挂的哪个组织的钉钉,钉钉用户和统一登陆用户是两套

1.2 公司网站

01.187
    a.1panel
        http://101.42.36.187:8090/tencentcloud
        1nvyurf67r
        qwhl6dxf4y
    b.数据库
        101.42.36.187:3306
        root
        mysql_JRK8kp
        -----------------------------------------------------------------------------------------------------
        101.42.36.187:3306
        sxlq_lqzx
        7NnHs6CpMixC7B4T
        -----------------------------------------------------------------------------------------------------
        101.42.36.187:3306
        sxlq_zhgh
        GSwtEarHj2BawDse

02.100、102、105、231
    a.ai
        n8n          mysla       qwER159263              http://192.168.3.102:8094
        Dify         mysla       qwER159263              http://192.168.3.102:8095      dify@2026
        Coze         mysla       qwER159263              http://192.168.3.102:8096
        MaxKB        admin       MaxKB@123..             http://192.168.3.102:8099      WY^L1U+3&#mD
        SQLBot       admin       SQLBot@123456           http://192.168.3.102:8098
        PostgreSQL   root        Password123@pg
    b.sxlq_cas
        https://www.sxlq.com:7011/cas/login
        https://ekp.sxlq.com:9000/sys/portal/page.jsp
        -----------------------------------------------------------------------------------------------------
        zhangyu1
        DctD>z:-u#K!
        Abcd1234@
        -----------------------------------------------------------------------------------------------------
        sunxiaoxiong
        mfLMvieg0?R8
        -----------------------------------------------------------------------------------------------------
        songjingjing
        Abc123!@#45678
    c.sxlq_zhgh
        http://111.53.193.159:18080     暴露端口          192.168.1.136:8080
        http://111.53.193.159:18081     暴露端口          192.168.1.136:8081
        http://111.53.193.159:10003     服务器
        admin
        xiaoyuan
        sunxiaoxiong
        ceshi123456@Tp

03.已上线
    a.159公网IP
        规则名称:zkzx_lqzx_105
        协议:IPv4
        生效接口:WAN1
        外部端口:20010 (1-65535,格式为X或X-X或X,X)
        内部端口:80 (1-65535,格式为X或X-X或X,X)
        内部服务器IP:192.168.3.105
        服务协议:ALL

1.3 集团系统

01.WIFI信息
    a.门禁
        海康云眸Lite
    b.WIFI
        http://192.168.1.253:8888/wifi
        zkzx
        zkzx20210902
    c.WIFI
        Science And Technology Center
        glkxjjjs
    d.WIFI
        Provisional Institutions
        whxjzgxf
        -----------------------------------------------------------------------------------------------------
        IPv4 地址           10.0.100.212
        IPv4 DNS 服务器     202.99.192.68   114.114.114.114
    e.WIFI
        ZKZX_2578
        9952Gs\2
        -----------------------------------------------------------------------------------------------------
        LQKJDS_5G
        whxjzgxf
        -----------------------------------------------------------------------------------------------------
        http://1.1.1.3/ac_portal/default/pc.html
        张瑜2
        123456
    f.NetWork
        网络接口             设备名        MAC 地址
        Wi-Fi               en1          d0:11:e5:75:32:43
        Ethernet(有线网卡)  en0          d0:11:e5:6b:f4:b2
        Ethernet Adapter    en5          76:a8:15:f3:97:f2
        Ethernet Adapter    en6          76:a8:15:f3:97:f3
        Ethernet Adapter    en7          76:a8:15:f3:97:f5
        Thunderbolt Bridge  bridge0      36:11:9c:c4:e3:40
        Thunderbolt 1/2/4   en2/en3/en4  36:11:9c:c4:e3:40/44/4c
        -----------------------------------------------------------------------------------------------------
        最常用的两个:
        Wi-Fi MAC: d0:11:e5:75:32:43
        有线网卡 MAC: d0:11:e5:6b:f4:b2

02.路桥集团
    a.Gitlab
        地址:10.10.20.39
        账号:zhgh
        密码:qeER159263
        邮箱:[email protected]
        令牌:_6y4MHGz_kGD6My2bZR7
    b.Gitlab
        地址:10.0.7.27
        账号:zhangyu
        密码:123123..
    c.服务情况
        nacos               10.10.20.39:8848/nacos          nacos          Zkzx@2025
        mysql               10.10.20.39:3306                root           Tpccn@8710881        sxlq_zhgh          本地是mysql5.7.36、远程是mysql8.0.42
        redis               10.10.20.39:6379                Tpccn@8710881
    d.数据库
        网址:10.10.20.41
        账号:root
        密码:[email protected]
    e.数据库
        网址:10.10.20.39
        账号:root
        密码:[email protected]
    f.数据库
        网址:jdbc:informix-sqli://10.10.20.39:9088/luqiao_tenderservice:INFORMIXSERVER=gbase01;CLIENT_LOCALE=zh_cn.utf8;NEWCODESET=UTF8,zh_cn.UTF8,57372;DB_LOCALE=zh_cn.utf8;IFX_USE_STRENC=true;
        账号:informix
        密码:GBase123

03.阿里云空间
    a.codeup
        zhgh-web          https://codeup.aliyun.com/6978119e58acb3fac7af052e/sxlq/zhgh-web.git
        zhgh-h5           https://codeup.aliyun.com/6978119e58acb3fac7af052e/sxlq/zhgh-h5.git
        zhgh-app          https://codeup.aliyun.com/6978119e58acb3fac7af052e/sxlq/zhgh-app.git
        sxlq-zhgh-time    https://codeup.aliyun.com/6978119e58acb3fac7af052e/sxlq/sxlq-zhgh-time.git
        sxlq-zhgh-server  https://codeup.aliyun.com/6978119e58acb3fac7af052e/sxlq/sxlq-zhgh-server.git
        zhgh-docs         https://codeup.aliyun.com/6978119e58acb3fac7af052e/team-zy/zhgh-docs.git
    b.HTTPS密码/git-pull
        主邮箱:[email protected]
        克隆账号:93789345281512611
        克隆密码:6rBHkhfdFw.BjgU
    c.个人访问令牌
        pt-3x75eeDUqBCcMheP58CcA9A6_f78434c3-6d10-4118-982f-b3aa62d84854,20260127
    d.仓库验证
        TOKEN="pt-3x75eeDUqBCcMheP58CcA9A6_f78434c3-6d10-4118-982f-b3aa62d84854"
        GIT_SERVER="https://codeup.aliyun.com/6978119e58acb3fac7af052e"
        USERNAME="6978119e58acb3fac7af052e"

04.Gitlab1
    a.分类1
        ssh://[email protected]:222/zkzx-layer/auth-service.git           --统一认证服务
        ssh://[email protected]:222/zkzx-layer/dmp-gather.git             --数据采集服务
        ssh://[email protected]:222/zkzx-layer/dmp-govern.git             --数据治理服务
        ssh://[email protected]:222/zkzx-layer/dmp-open.git               --数据开放服务
        ssh://[email protected]:222/zkzx-layer/dmp-parent.git             --DPM父工程
    b.分类2
        ssh://[email protected]:222/zkzx-layer/document.git               --文档服务
        ssh://[email protected]:222/zkzx-layer/test-service.git           --测试服务
        ssh://[email protected]:222/zkzx-layer/es-service.git             --搜索服务
        ssh://[email protected]:222/zkzx-layer/gateway.git                --统一网关
        ssh://[email protected]:222/zkzx-layer/gen-server.git             --代码生成服务
    c.分类3
        ssh://[email protected]:222/zkzx-layer/layer-core.git             --核心组件库
        ssh://[email protected]:222/zkzx-layer/layer-db.git               --数据库组件
        ssh://[email protected]:222/zkzx-layer/layer-monomer.git          --单体服务模块
        ssh://[email protected]:222/zkzx-layer/layer-monomer-web.git      --单体Web模块
        ssh://[email protected]:222/zkzx-layer/layer-nacos.git            --Nacos配置
    d.分类4
        ssh://[email protected]:222/zkzx-layer/layer-parent.git           --Layer父工程
        ssh://[email protected]:222/zkzx-layer/layer-sentinel.git         --Sentinel熔断限流
        ssh://[email protected]:222/zkzx-layer/layer-web.git              --Web组件
        ssh://[email protected]:222/zkzx-layer/readme.git                 --项目说明
        ssh://[email protected]:222/zkzx-layer/report-service.git         --报表服务
    e.分类5
        ssh://[email protected]:222/zkzx-layer/sys-service.git            --系统管理服务
        ssh://[email protected]:222/zkzx-layer/workflow-service.git       --工作流服务
        ssh://[email protected]:222/yanfa/zkzx-fileview.git               --文件预览组件
        ssh://[email protected]:222/yanfa/zkzx-upload.git                 --文件上传组件
    f.陵川县交旅融合信息化
        git clone ssh://[email protected]:222/zkzx-lcjl-20251225/zkzx-lcjl.git
        git clone http://zhangyu:[email protected]/zkzx-lcjl-20251225/zkzx-lcjl.git
        -----------------------------------------------------------------------------------------------------
        203.207.100.74:53306
        root
        zkzx@2022
        -----------------------------------------------------------------------------------------------------
        http://lcjl.lczf.cn:50003/hotel/login
        haomeng
        haomeng@1234

05.Gitlab2
    a.分类1-DMP服务
        a.说明
            数据管理平台核心服务层,负责数据的全生命周期管理。
        b.服务列表
            仓库名称              说明                Git地址
            auth-service          统一认证服务         zkzx-layer/auth-service
            dmp-gather            数据采集服务         zkzx-layer/dmp-gather
            dmp-govern            数据治理服务         zkzx-layer/dmp-govern
            dmp-open              数据开放服务         zkzx-layer/dmp-open
            dmp-parent            DPM父工程           zkzx-layer/dmp-parent
    b.分类2-基础服务
        a.说明
            提供系统运行所需的基础支撑服务。
        b.服务列表
            仓库名称              说明                Git地址
            document              文档服务            zkzx-layer/document
            test-service          测试服务            zkzx-layer/test-service
            es-service            搜索服务            zkzx-layer/es-service
            gateway               统一网关            zkzx-layer/gateway
            gen-server            代码生成服务        zkzx-layer/gen-server
    c.分类3-核心组件
        a.说明
            封装的核心业务组件和通用功能模块。
        b.组件列表
            仓库名称              说明                Git地址
            layer-core            核心组件库          zkzx-layer/layer-core
            layer-db              数据库组件          zkzx-layer/layer-db
            layer-monomer         单体服务模块        zkzx-layer/layer-monomer
            layer-monomer-web     单体Web模块         zkzx-layer/layer-monomer-web
            layer-nacos           Nacos配置          zkzx-layer/layer-nacos
    d.分类4-基础框架
        a.说明
            微服务架构的基础框架和父工程配置。
        b.框架列表
            仓库名称              说明                Git地址
            layer-parent          Layer父工程         zkzx-layer/layer-parent
            layer-sentinel        Sentinel熔断限流    zkzx-layer/layer-sentinel
            layer-web             Web组件            zkzx-layer/layer-web
            readme                项目说明            zkzx-layer/readme
            report-service        报表服务            zkzx-layer/report-service
    e.分类5-业务服务
        a.说明
            具体的业务功能服务实现。
        b.服务列表
            仓库名称              说明                Git地址
            sys-service           系统管理服务        zkzx-layer/sys-service
            workflow-service      工作流服务          zkzx-layer/workflow-service
            zkzx-fileview         文件预览组件        yanfa/zkzx-fileview
            zkzx-upload           文件上传组件        yanfa/zkzx-upload

1.4 集团运维

01.常用信息1
    a.服务器
        a.10.10.125.14,189台
            admin
            inCloud@s10
        b.10.10.125.35,55台
            admin
            inCloud@s8
    b.端口映射
        a.上网认证系统
            http://10.254.254.253/webAuth/
            ABcd@132456
        b.出口防火墙
            http://10.254.254.253/framework.php
            admin
            Asdf!@#$1234
        c.服务器防火墙-主
            http://172.16.1.4/framework.php
            admin
            ABcd@132456
    c.出口防火墙
        a.信息
            AF_001
            10.254.254.253
        b.说明
            策略 -> 地址转换 -> 编辑IPv4地址转换
            公网IP:59.49.35.195:2708
            服务器IP-出口防火墙IP:172.16.1.227:2708
    d.服务器防火墙-主
        a.信息
            AF_002
            172.16.1.4
        b.说明
            策略 -> 应用控制策略
            目的地址:10.10.20.218、10.10.20.219、10.10.20.220
            服务:36521、19921、34679、37100、37200
    e.完整网络链路
        a.说明
            出口防火墙:做目的 NAT,实现公网端口映射到内网 172.16.1.227:2708
            服务器防火墙:依靠应用控制策略,管控 10.10.20.218/219/220 这几个地址的指定端口流量通行
            完整入站链路:外网 → 59.49.35.195:2708 → AF_001 → 172.16.1.227:2708 → AF_002 → 内网业务设备
            完整出站链路:10.10.20.218/219/220(内网源)→ AF_002(端口放行)→ 172.16.1.0 网段 → AF_001(源 NAT 为公网 IP)→ 互联网
        b.场景1:外网用户 → 访问内网服务(公网入站流量,对应地址转换规则)
            外网客户端 → 公网 IP 59.49.35.195:2708 → 出口防火墙 AF_001
            出口防火墙做端口地址转换 (NAT),将访问流量转发到:172.16.1.227:2708(内网服务地址)
            该地址处于服务器防火墙 AF_002(172.16.1.4)所在的 172.16.1.0 内网段,流量经过服务器主防火墙 AF_002,最终抵达后端业务主机。
        c.场景2:内网主机 → 主动访问外部(内网出站流量,含服务器防火墙策略)
            内网主机(如 172.16.1.227、10.10.20.x 网段主机)发起访问
            源端:内网主机(10.10.20.218/219/220 等)→ 先经过服务器主防火墙 AF_002(172.16.1.4)
            防火墙应用策略放行 36521、19921 等指定端口流量,允许该网段对外通信;
            流量进入上层内网,到达出口防火墙 AF_001(10.254.254.254.253);
            出口防火墙做源 NAT,把内网私网 IP 转换成公网 IP 59.49.35.195,最终访问互联网。
    f.字段划分+命名方案
        a.方案1:通用运维字段(适合台账、文档、运维表格,通俗易懂)
            共划分6 个基础字段,覆盖全部信息,无冗余:
            公网访问地址:存储 59.49.35.195:2708(外网入站入口 IP + 端口)
            内网服务地址:存储 172.16.1.227:2708(NAT 映射后的内网目标 IP + 端口)
            受控内网终端 IP:存储 10.10.20.218、10.10.20.219、10.10.220(出站流量管控源地址)
            放行业务端口:存储 36521、19921、34679、37100、37200(防火墙放行端口)
            流量方向:标注「入站 / 出站 / 双向」(区分两种业务场景)
            关联防火墙:标注 AF_001(出口防火墙)、AF_002(服务器防火墙)(关联网络设备)
        b.方案2:标准网络配置字段(适合配置清单、策略表、设备配置文档,专业规范)
            共划分5 个标准字段,贴合防火墙 / NAT 策略术语:
            外网映射地址:公网 IP + 端口 59.49.35.195:2708
            NAT 转换后目的地址:内网服务 IP + 端口 172.16.1.227:2708
            源地址对象:受控内网 IP 列表 10.10.20.218、10.10.219、10.10.220
            服务端口对象:业务端口列表 36521、19921、34679、37100、37200
            策略归属设备:AF_001、AF_002
        c.方案3:极简字段(适合简易记录表、备注清单,仅保留核心 4 项)
            公网 IP 及端口
            内网映射 IP 及端口
            管控终端 IP
            业务放行端口

02.常用信息2
    a.10.10.125.14
        SCVM系统虚拟机
        成本管理
        人力资源管理
        蓝凌三重一大
        法规部
        工程管理部
        财务系统
        基础信息平台
        制度库
        多经车辆管理
        物资公司采集系统
        招采电商
        投资开发
        线上环境-数据共享交换平台
        档案系统
        电子签章
        科技管理部
        安质环
        全面预算
        智慧工会
        资产管理
        国资监管
        会计档案与税务
        成本测算
        数字一体化管理平台
        协同办公OA
        网络安全
        资金部
        纪委
        智慧交通
        数据中台-正式环境
        测试环境-数据管理平台-主数据系統
        测试环境-数据共享交换平台
        线上环境-数据管理平台-数据资产系统
        线上环境-数据管理平台-主数据系统
        数据库服务器-数据管理_数据共享
        物资设备服务编码数据平台
        合同管理系统
        综合办公室
        物料会计系统财务部
        市场开发
        党建管理系统
        投资管理新服务器与市场分离
        问题解答平台
        EKP16
        运营管理部
        建设一体化平台2
        建设一体化平台1
        施工项目业务管理2
        施工项目业务管理1
        访客系统
        堡垒前置机
        混凝土检测系统
        运维Windows
        共享打印
    b.10.10.125.35
        财务管理系统
        电子商务平台
        协同办公
        基建机器人公司
        会计档案与税务
        人力组织
        工单系统
        招标采购
        纪检
        网络安全管理
        智慧隧道系统
        主数据测试环境
        一体化大屏
        案件系统
        资产系统
        蓝凌
        安全管理
        智慧工会
        环水保系统
        晋路安
        国产打印机服务
        合同管理平台-测试
        工人劳务实名制系统
        附件转换-新
        标识解析元码通
        资产前置机
        DeepSeek

03.服务器,10.10.125.14
    SCVM系统虚拟机
    	SCVM_10_10_125_30
    	SCVM_10_10_125_29
    	SCVM_24
    	SCVM_23
    	SCVM_20
    	SCVM_19
    	SCVM_13
    	SCVM_12
    	SCVM_11
    成本管理
    	新成本系统服务器
    	新成本系统数据库
    	成本测试
    人力资源管理
    	人力交控对接
    蓝凌三重一大
    	流程监控
    	EKP代码-152
    	电商接口-116
    法规部
    	法审子系统服务器
    	法务合规系统
    	案件FTP服务器
    	案件数据库
    	案件应用服务器
    工程管理部
    	建设管理新
    	施工一体化平台4
    	施工一体化平台3
    	施工一体化平台2
    	施工一体化平台1
    	建设系统数据库
    	施工系统数据库
    	施工系统应用
    	日报APP
    	建设系统应用
    财务系统
    	财务智能审核
    	财务B节点
    	财务报告分析
    	附件档案服务器
    	发票池服务
    	财务数据库
    	财务应用A节点
    	财务nginx服务器
    基础信息平台
    	基础平台数据库同步
    	门户数据库
    	基础平台南大通用数据库
    	工作流缓存
    	工作流监控
    	门户
    	cas_4a
    	主数据_ESB_mule
    制度库
    	空
    多经车辆管理
    	路桥行升级改造应用
    	路桥行
    物资公司采集系统
    	暂时停用-桥路易购物资集采系统
    	物资公司集采管理
    招采电商
    	电商平台测试1
    	前端应用
    	第三只眼录像存储服务器
    	第三只眼监控服务器
    	数据库服务器
    	中间件服务器
    	业务应用服务器2
    	业务应用服务器1
    	代理服务器
    	招采转换
    	电商采购应用
    	电商采购数据库
    	招采Gbase
    	招采应用服务器2
    	招采代理服务器
    投资开发
    	投资开发系统
    	投资开发数据库服务器
    线上环境-数据共享交换平台
    	Runtime应用
    	Runtime应用
    	OpenApi应用
    	Mo管理端
    档案系统
    	档系统备份
    	存储服务器
    	缓存服务器
    	网关_web服务器
    	文件处理服务器
    	应用服务器
    	数据库服务器
    电子签章
    	电子签章与物资系统对接服务
    	电子签章数据库
    	电子签章应用
    	电子签章数据库测试
    	电子签章应用测试
    	电子签章系统
    科技管理部
    	技术管理大数据
    安质环
    	质量系统应用
    	区块链服务器1
    全面预算
    	全面预算数据库服务器
    	全面预算应用服务器2
    	全面预算应用服务器1
    智慧工会
    	空
    资产管理
    	资产管理系统
    国资监管
    	空
    会计档案与税务
    	测试环境应用及数据库
    	备份服务器
    	数据库服务器2
    	数据库服务器1
    	应用服务器2
    	应用服务器1
    	税务运维Windows
    	开票税务主控
    	开票税务前置
    	电子档案对接
    	会计档案系统
    成本测算
    	成本测算数据库
    	成本测算应用
    数字一体化管理平台
    	数字一体化管理平台
    协同办公OA
    	空
    网络安全
    	交通厅信息发布
    	会议系统
    资金部
    	资金直连查询
    	跨银行交换中心
    纪委
    	智慧监督Windows服务器
    	智慧监督平台1
    	纪检谈话平台
    	纪法—查通一把手监督
    	纪检实务平台
    智慧交通
    	空
    数据中台-正式环境
    	数据存储计算2
    	数据存储计算1
    	Doris数据同步
    	主服务ApiSix2
    	主服务ApiSix
    	数据中台数据存储及计算节点3
    	数据中台数据存储及计算节点2
    	数据中台数据存储及计算节点1
    	数据中台大数据集群主节点2
    	数据中台大数据集群主节点1
    	数据中台中间件3
    	数据中台中间件2
    	数据中台中间件1
    	数据中台应用2
    	数据中台应用1
    测试环境-数据管理平台-主数据系統
    	空
    测试环境-数据共享交换平台
    	Runtime应用
    线上环境-数据管理平台-数据资产系统
    	空
    线上环境-数据管理平台-主数据系统
    	主数据系统3
    	主数据系统2
    	主数据系统1
    	元数据子系统
    	数据流子系统
    	Es中间件
    	Azkaban中间件
    	管理端
    数据库服务器-数据管理_数据共享
    	数据库主库
    物资设备服务编码数据平台
    	内部平台后端与数据库服务器
    	清洗软件与数据库服务器
    	外部平台后端与数据库服务器
    	内部平台前端服务器
    	外部平台前端服务器
    合同管理系统
    	功能服务器
    	数据库服务器
    	应用服务器
    综合办公室
    	办公用品领用柜
    物料会计系统财务部
    	安全平台应用新
    	安全管理系统数据库写
    	组织人力系统数据库
    	质量系统数据库写服务器
    	会计物料数据同步
    	材料会计数据库写
    	组织人力系统应用
    	物料会计应用
    市场开发
    	市场开发Linux应用测试
    	市场开发二期数据库
    	市场开发二期应用
    党建管理系统
    	党建应用
    	党建系统数据库
    投资管理新服务器与市场分离
    	投资管理数据库
    	投资管理应用
    问题解答平台
    	问题解答数据库
    	问题解答文件服务器
    	问题解答平台应用
    EKP16
    	新文件服务器-EKP
    	DB16-新数据库87
    	EKP新负载
    	业务中台-三重一大
    	EKP短信服务
    	Convert16
    	DB16
    	Redis16
    	Search16
    	EKP16-03
    	EKP16-02
    	EKP16-01
    运营管理部
    	运营业财一体化
    建设一体化平台2
    建设一体化平台1
    施工项目业务管理2
    施工项目业务管理1
    访客系统
    堡垒前置机
    混凝土检测系统
    运维Windows
    共享打印

04.服务器,10.10.125.35
    财务管理系统
    	财务监管平台中间库
    	财务监管
    	国资穿透监管-法
    	财务D节点
    	财务C节点
    电子商务平台
    	招采测试3
    	招采测试2
    	招采测试1
    	招采资信库web
    	招采资信库数据库
    	招采资信库负载
    	电子商务平台测试2
    协同办公
    	九思OA-252
    基建机器人公司
    	一企-屏
    	智能拌合站
    	经营管理系统
    会计档案与税务
    	电子会计凭证2
    	电子会计凭证平台
    人力组织
    	人力数据库服务器
    	培训一体化应用
    	培训一体化数据库
    	人力资源应用-16
    	干部综合管理系統
    工单系统
    	新工单应用服务器
    	新工单应用服务器
    	工单系统服务器
    招标采购
    	集中采购数据库
    	集中采购应用程序
    纪检
    	智慧监督
    网络安全管理
    	火绒服务器端
    智慧隧道系统
    	隧道管理系統数据
    	隧道管理系統应用
    主数据测试环境
    	Mo管理端
    	主数据数据库
    	MySQL数据库
    一体化大屏
    	一体化大屏后台管理端
    	一体化大屏代码仓库
    案件系统
    	案件系统测试
    资产系统
    	资产系统数据库
    蓝凌
    	合同管理-133
    	蓝凌运维
    安全管理
    	平安交通
    智慧工会
    	智慧工会数据库
    	智慧工会应用服务
    环水保系统
    	环水保智能检测管理平台-数据库服务器
    	环水保智能检测管理平台-应用
    晋路安
    	晉路安协作队伍打卡
    	物料系统数据库读
    国产打印机服务
    合同管理平台-测试
    工人劳务实名制系统
    附件转换-新
    标识解析元码通
    资产前置机
    DeepSeek

1.5 端口分布

00.aries系列(无端口)
    a.aries
        00.project          无    保理项目文档
        01.zkzx-lcjl        无    SQL 数据文件
        03.layer-core       无    服务文档&Demo
        04.langchain-plus   无    AI 方案资料(图片/pptx/xlsx)
        05.bid-thrid-tools  无    bsr/tbs/zbs 桌面工具(Eclipse RCP),无 web 端口

01.cmkj系列
    a.cmkj-hot
        项目             端口      说明
        server-hot       34100     Python 后端 (.env.example PORT)
        web-hot-pc       34101     PC 前端 Vite (vite.config.js)
    b.cmkj-paint
        项目             端口      说明
        server-paint     34000     Python 后端 (.env.example PORT)
        web-paint-ht     34001     H5 前端 Vite
        web-paint-pc     34002     PC 前端 Vite

02.dzsw系列(无端口)
    a.dzsw
        dzsw-docs           无    纯文档目录,无服务监听

03.inter系列
    a.ai-chat-maxkb
        项目             端口      说明
        backend          8184      FastAPI 后端 (settings.py PORT)
        frontend         5276      Vite 前端,代理到 localhost:8184
    b.ai-query-sqlbot
        项目             端口      说明
        backend          8084      Node 后端 (.env PORT)
        frontend         5176      Vite 前端,代理到 localhost:8084
    c.其余子项(无端口)
        daily-work       无        任务汇报/任务清单,纯文档+脚本
        firm-work        无        信息/端口/打印,纯文档+脚本
        ai-resource      无        文档与资源整理,无监听

04.lcjl系列
    a.lcjl
        项目             端口      说明
        server           8989      Spring Boot 后端 (application.yml port)
        web-admin-pc     80        PC 管理端 Vue CLI (vue.config.js port 默认 80)
        web-dash-pc      8081      PC 大屏端 Vite
        web-guide-ht     8080      H5 引导端 Vite
        web-wx-mi        无        微信小程序,在开发者工具中运行,无端口

05.lqbl系列
    a.lqbl
        项目             端口      说明
        server           9372      Spring Boot 后端 (application.yml port)
        web-api-ht       7990      H5 前端 Vite,代理到后端
        web-api-mi       无        微信小程序,无端口

06.lqkc系列
    a.lqkc
        项目             端口      说明
        server           9472      Spring Boot 后端 (application.yml port)
        web-api-pc       8980      PC 前端 Vite,代理到 localhost:9172
        web-api-ht       8990      H5 前端 Vite,代理到 localhost:9172
        web-mock-pc      8981      PC Mock,仅开发用
        web-mock-ht      8991      H5 Mock,仅开发用

07.lqzx系列
    a.lqzx(主项目,端口与 lqkc 相同)
        项目             端口      说明
        server-stand     9172      Spring Boot 后端
        server-safe      9172      安全服务后端(端口同上,需分环境启动)
        web-api-pc       5980      PC 合并版 Vite
        web-api-ht       5990      H5 合并版 Vite
        web-double-pc    5980      PC 双版本
        web-double-ht    5990      H5 双版本
        web-mock-pc      5980      PC Mock
        web-mock-ht      5990      H5 Mock
    b.lqzx 多端拆分(web-* 系列)
        项目             端口      说明
        web-zgh-ht       5981      职工 H5,代理 localhost:9170
        web-zgh-pc       5982      职工 PC,代理 localhost:9072
        web-gys-pc       5983      供应商 PC,代理 localhost:9072
        web-gsda-pc      5984      路衍管理员 PC,代理 localhost:9072
        web-gsdb-pc      5985      子公司管理员 PC,代理 localhost:9072
        web-zwh-pc       6081      政务号 PC

08.rwgl系列
    a.rwgl(微服务,配置在 Nacos 192.168.1.249:8848,端口源自 manage.sh)
        项目             端口      说明
        gateway          9080      API 网关
        auth-server      9081      OAuth2 认证服务
        sys-server       9082      系统核心业务服务
        sxlq-rwgl-web    8088      PC 前端 Vite (vite.config.js port)

09.third系列
    a.third-bsr
        项目             端口      说明
        backend          9073      Spring Boot 后端 (application.yml port)
        frontend         5173      Vite 前端,代理到 localhost:9073
    b.third-tbs
        项目             端口      说明
        backend          9074      Spring Boot 后端
        frontend         5174      Vite 前端,代理到 localhost:9074
    c.third-zbs
        项目             端口      说明
        backend          9075      Spring Boot 后端
        frontend         5175      Vite 前端,代理到 localhost:9075
    d.bid-thrid-tools(无端口)
        桌面工具         无        Eclipse RCP 客户端,本地运行无 web 端口

10.thlq系列
    a.thlq
        项目             端口      说明
        server           9272      Spring Boot 后端 (application.yml port)
        web-api-ht       6990      H5 前端 Vite,代理到后端
        web-api-mi       无        微信小程序,无端口

11.zhgh系列
    a.zhgh(微服务,配置在 Nacos,端口源自 manage.sh)
        项目             端口      说明
        gateway          9070      API 网关
        auth-server      9071      OAuth2 认证服务
        sys-server       9072      系统核心业务服务 (bootstrap.yml port)
        zhgh-web         7080      PC 前端 Vite
        zhgh-app         无        App 端源码,本地运行无 web 端口
        zhgh-h5          无        H5 源码(结构未含独立 dev server)

1.6 排查信息

01.服务器说明
    a.查看系统
        a.参数
            Static hostname: localhost.localdomain
                   Icon name: computer-vm
                     Chassis: vm
                  Machine ID: 92305feebc6240b381280ce8ff6aa3e3
                     Boot ID: 251b94bf7be545dcb731ff19014b83ad
              Virtualization: vmware
            Operating System: Rocky Linux 8.5 (Green Obsidian)
                 CPE OS Name: cpe:/o:rocky:rocky:8:GA
                      Kernel: Linux 4.18.0-348.7.1.el8_5.x86_64
                Architecture: x86-64
        b.说明
            操作系统:Rocky Linux 8.5 (Green Obsidian)
            内核版本:Linux 4.18.0-348.7.1.el8_5.x86_64
            架构:x86-64
            虚拟化:VMware
    b.查看情况
        a.查看jar包
            $ ps -ef
            $ ps -ef | grep java
        b.查看redis目录
            [root@localhost logs]# ps -ef | grep redis
            redis       3850       1  0 1月12 ?       00:33:22 /usr/bin/redis-server 127.0.0.1:6379
            root     1731531 1730430  0 11:08 pts/0    00:00:00 grep --color=auto redis
    c.nginx
        a.位置
            [root@localhost hr-backend]# nginx -t
            nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
            nginx: configuration file /etc/nginx/nginx.conf test is successful
        b.日志
            tail -f /var/log/nginx/access.log                                       --访问日志
            tail -f /var/log/nginx/error.log                                        --错误日志

02.程序位置
    a.查看pid、查看程序目录
        ps -ef | grep java                                                      --查看进程
        ------------------------------------------------------------------------
        lsof -i:9981                                                            --命令1:查找9981对应pid
        ps -ef | grep java | grep 1723891                                       --命令2:查找pid对应java
        tail -f jeecgboot-2025-02-06.0.log                                      --命令3:查看日志
        ------------------------------------------------------------------------
        ps -ef | grep $(lsof -ti:9981)                                          --组合命令
        ps -ef | grep $(lsof -ti:9981) | grep java                              --组合命令
        kill -9 [pid]
    b.curl测试
        curl --location 'http://172.17.10.201:9981/jeecg-boot/mo/isp/getIndicator' \
        --header 'Content-Type: application/json' \
        --data '{
            "indicatorDate": 202501
        }'
    c.前端日志
        tail -f /var/log/nginx/access.log                                       --访问日志
        tail -f /var/log/nginx/error.log                                        --错误日志
    d.后端日志
        cd /root/myprojects/logs/                                               --每天日志
        tail -f jeecgboot-2025-02-06.0.log                                      --实时日志ONObject dataParam = new JSONObject();
                    dataPa
    e.停止、启动
        ps -ef | grep java                                                      --查看进程
        kill [pid]                                                              --优雅停机
        ------------------------------------------------------------------------
        sh /root/hr-project/backend-start.sh start                              --启动
        tail -f /root/hr-project/hr-backend/jeecg-module-system/jeecg-system-start/logs/jeecgboot-2025-03-02.0.log  --日志

03.查看系统
    a.使用uname -a命令
        uname -a                                                                --显示系统内核版本
    b.查看发行版特定的版本文件:
        cat /etc/redhat-release                                                 --适用于RedHat/CentOS系统
        cat /etc/debian_version                                                 --适用于Debian系统
        cat /etc/ubuntu-release                                                 --适用于Ubuntu系统
    c.使用hostnamectl命令
        hostnamectl                                                             --查看主机名和其他信息(适用于systemd系统)
    d.查看性能1
        lscpu                                                                   --查看 CPU 信息
        cat /proc/cpuinfo                                                       --查看详细的 CPU 信息
        free -h                                                                 --查看内存信息
        cat /proc/meminfo                                                       --查看详细的内存信息
        ------------------------------------------------------------------------
        df -h                                                                   --查看磁盘使用情况
        top                                                                     --查看系统负载和性能
        vmstat                                                                  --查看系统的虚拟内存、进程、CPU 活动等信息
        ------------------------------------------------------------------------
        dmesg | grep -i vmware                                                  --查看是否vmware虚拟化机器
        lscpu | grep -i hypervisor                                              --查看是否vmware虚拟化机器
    e.查看性能2
        echo "=== CPU 信息 ==="
        lscpu | grep -E '^CPU\(s\):|^Model name:|^Socket\(s\):|^Thread\(s\) per core:|^Core\(s\) per socket:'
        echo -e "\n=== 内存信息 ==="
        free -h
        echo -e "\n=== 磁盘信息 ==="
        df -h --total | grep 'total'
        echo -e "\n=== 显卡信息 ==="
        lspci | grep -i --color 'vga\|3d\|2d'

04.查看ip端口
    a.netstat命令
        yum install net-tools                                                   --安装 net-tools
        netstat -tunlp | grep 9981                                              --查看具体某个端
    b.ss命令
        ss -tunlp | grep 9981                                                   --查看具体某个端
    c.lsof命令
        yum install lsof                                                        --安装 lsof
        lsof -i                                                                 --查看所有网络连接
        lsof -i:9981
    d.firewall-cmd命令
        firewall-cmd --list-ports                                               --查看所有开放的端口
        firewall-cmd --query-port=9981/tcp                                      --查询某个端口是否开放

05.防火墙
    a.systemctl
        systemctl stop firewalld                                                --关闭防火墙
        systemctl disable firewalld                                             --禁止开机自启
        systemctl status firewalld                                              --防火墙状态
        systemctl start firewalld                                               --开启防火墙
        systemctl enable firewalld                                              --开启开机自启
    b.firewall-cmd
        firewall-cmd --reload                                                   --重启防火墙
        firewall-cmd --zone=public --add-port=3306/tcp --permanent              --开放3306端口
        firewall-cmd --zone=public --remove-port=3306/tcp --permanent           --关闭3306端口
        firewall-cmd --zone=public --list-ports                                 --查看开放端口
        firewall-cmd --zone=public --query-port=3306/tcp                        --查看具体端口
        firewall-cmd --state                                                    --查看防火墙状态

06.nginx
    a.查看nginx配置文件
        cd /etc/nginx/
        ls
        cat nginx.conf
    b.查看conf.d目录下的配置
        cd /etc/nginx/conf.d/
        ls
        cat *.conf
    c.查看sites-enabled目录(如果存在)
        cd /etc/nginx/sites-enabled/
        ls
    d.检查nginx配置是否正确
        nginx -t
    e.查看nginx进程
        ps -ef | grep nginx
    f.访问日志
        tail -f /var/log/nginx/access.log
    g.错误日志
        tail -f /var/log/nginx/error.log

07.自定义DNS
    a.编辑hosts文件
        vi /etc/hosts
        # 添加格式如下:
        # IP地址      域名
        192.168.1.100   example.com
        192.168.1.101   test.com
    b.修改DNS服务器
        vi /etc/resolv.conf
        # 添加或修改nameserver
        nameserver 8.8.8.8
        nameserver 114.114.114.114
    d.刷新DNS缓存
        systemctl restart NetworkManager
        # 或
        nscd -i hosts  # 如果安装了nscd
    e.测试DNS解析
        nslookup example.com
        ping example.com
    f.查看DNS是否生效
        # 查看当前DNS服务器
        cat /etc/resolv.conf
        # 测试DNS解析
        dig @8.8.8.8 example.com

08.系统编码1
    a.linux
        [root@localhost hr-backend]# stat /etc/locale.conf
          File: /etc/locale.conf
          Size: 19              Blocks: 8          IO Block: 4096   regular file
        Device: fd00h/64768d    Inode: 67431224    Links: 1
        Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
        Access: 2025-03-08 10:50:06.920797929 +0800
        Modify: 2022-01-11 10:28:26.559915054 +0800
        Change: 2022-01-11 10:28:26.559915054 +0800
         Birth: 2022-01-11 10:28:26.558915052 +0800
        -----------------------------------------------------------------------------------------------------
        通常情况下,Java会使用操作系统的默认字符编码
        Access 字段表示文件的最后访问时间,这是指文件内容最后一次被读取的时间,而不是文件被修改或更改的时间
    b.查看编码
        $ locale
        $ cat /etc/locale.conf
        -----------------------------------------------------------------------------------------------------
        LANG=C.UTF-8      不提供特定语言的特性;用默认的、简单的格式            公司服务器,默认编码
        LANG=en_US.UTF-8  美国英语的语言特性;美国的习惯格式化日期、时间、货币   腾讯云服务器,默认编码
    c.查看系统安装的字符编码
        $ locale -a
        -----------------------------------------------------------------------------------------------------
        locale: Cannot set LC_CTYPE to default locale: No such file or directory
        locale: Cannot set LC_MESSAGES to default locale: No such file or directory
        locale: Cannot set LC_COLLATE to default locale: No such file or directory
        C
        C.utf8
        POSIX
        zh_CN
        zh_CN.gb18030
        zh_CN.gbk
        zh_CN.utf8
        zh_HK
        zh_HK.utf8
        zh_SG
        zh_SG.gbk
        zh_SG.utf8
        zh_TW
        zh_TW.euctw
        zh_TW.utf8
    d.生成编码
        # 打开 /etc/locale.gen 文件
        vi /etc/locale.gen
        # 确保文件中包含以下行(如果没有,请添加)
        C.UTF-8 UTF-8
        # 生成语言环境
        sudo locale-gen
        # 设置默认语言环境
        sudo update-locale LANG=C.UTF-8
    e.修改编码
        # 临时更改
        export LANG=C.UTF-8
        # 永久更改
        vi /etc/locale.conf
        LANG=C.UTF-8
        # 更新当前会话
        source /etc/locale.conf

09.系统编码2
    a.如果要设置中文版的字体编,在每个文件中增加以下内容
        # cat /etc/profile.d/locale.sh
        # vim /etc/profile.d/locale.sh
        export LC_CTYPE=zh_CN.UTF-8
        export LC_ALL=zh_CN.UTF-8

        # cat /etc/locale.conf
        # vim /etc/locale.conf
        LANG=zh_CN.UTF-8

        # cat /etc/sysconfig/i18n
        # vim /etc/sysconfig/i18n
        LANG=zh_CN.UTF-8

        # cat /etc/environment
        # vim /etc/environment
        LANG=zh_CN.UTF-8
        LC_ALL=zh_CN.UTF-8

        # source /etc/profile.d/locale.sh
        # source /etc/locale.conf
        # source /etc/sysconfig/i18n
        # source /etc/environment
    b.如果要设置英文版的字体编码。在每个文件中增加以下内容
        # cat /etc/profile.d/locale.sh
        # vim /etc/profile.d/locale.sh
        export LC_CTYPE=en_US.UTF-8
        export LC_ALL=en_US.UTF-8

        # cat /etc/locale.conf
        # vim /etc/locale.conf
        LANG=en_US.UTF-8

        # cat /etc/sysconfig/i18n
        # vim /etc/sysconfig/i18n
        LANG=en_US.UTF-8

        # cat /etc/environment
        # vim /etc/environment
        LANG=en_US.UTF-8
        LC_ALL=en_US.UTF-8

        # source /etc/profile.d/locale.sh
        # source /etc/locale.conf
        # source /etc/sysconfig/i18n
        # source /etc/environment
    c.临时更改
        export LANG=C.UTF-8
        export LANG=zh_CN.utf8

2 工作说明

2.1 电子商务

01.常用信息1
    a.20260601
        10点半,我们一起过一下后端的开发框架与规范,大家同步下信息,以及这周的任务
    b.20260602
        后续业务开发建议的流程,大家可以看下,有好的想法大家可以及时沟通,
        另外可以提前熟悉一下聚合跟、领域对象、值对象、领域服务、领域事件的概念,熟悉下项目分层结构以及调用流程
    c.20260605
        今天大家一起再把现有base-server接口一起都测试一下,有问题的都提出来,熟悉一下开发框架与流程,下周我们正式开发业务模块,下周计划开发内容:
        业务侧:
        采购计划、采购计划看板 (凯轩、嘉伟、周翔)
        技术侧:
        审批流集成(采购计划审批流)(周翔)
        技术中台-领域事件中心设计(贺泽瑞)
        技术中台-日志体系方案(贺泽瑞)
    d.20260628
        项目排期表      https://www.kdocs.cn/l/cdhjfcNoSota
        功能点梳理      https://www.kdocs.cn/l/cuUPPIKsXObX

02.常用信息2
    a.说明
        CPU           arm、c86
        服务器操作系统  统信UOS、银河麒麟
        数据库         达梦V9(集中)
        java版本       21【国产jdk】
        中间件         nginx、redis、rocketMQ、es、tomcat?
        运维监控       prometheus、grafana
        小工具         编标、投标【识别硬件信息、加密】、评标【解密】
        客户端         统信UOS、银河麒麟、windows
        附件服务       rustFS
        AI            飞致云maxkb/dify
        预览服务       kkfileview
        历史数据迁移    数据结构、兼容历史数据
        历史附件迁移    附件迁移
    b.信创环境
        国产CPU       龙芯、鲲鹏、飞腾
        国产数据库     达梦、人大金仓
        国产操作系统    麒麟、统信UOS、中科方德
        信创一体机     Zabbix,搭载海光 CPU + 麒麟 Kylin 操作系统 + 腾讯 TDSQL 数据库 + DataEase 数据可视化平台

03.常用信息3
    a.wifi
        http://192.168.1.253:8888/wifi
        ZCZKZX
        LQjtZCzx@2026
    b.测试服务器
        10.0.7.28
    c.jenlins
        http://10.0.7.28:8080
        ZKZXADMIN
        Zkzx123!@#
    d.nacos
        http://10.0.7.28:8848/nacos
        nacos
        Zkzx123!@#
    e.kkfileview
        http://10.0.7.28:8012
    f.redis
        host: 10.0.7.28
        port: 6379
        database: 1
        password: Zkzx..
    g.datasource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://10.0.7.28:3306/system_server?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
        username: root
        password: Zkzx123!@#

04.常用信息4
    a.项目背景
        "2022年中科智信与集团签署了电子商务平台升级项目(电子商务平台二期),首次实现了微服务架构,集成了智能云标书室,实现了集团线上招采的全流程智能管理。
        由于项目多次迭代,分属不同厂家建设,代码交接存在问题,系统架构复杂,碎片化严重,小工具、数据库无人维护切技术老旧,系统在使用过程中时长出现问题,运维压力大。
        从25年年初到现在,我方投入了驻场运维服务(同昌团队、中科团队),解决了部分问题,也配合集团开发了部分功能模块和功能点,未彻底解决系统存在的问题和优化用户体验,落实国资委信创改造的要求,我方与招采中心计划对项目进行三期升级改造。"
    b.项目里程碑
        a.商务
            七月(项目立项、项目建议书、PPT)
            八月(交控立项审批)
            九月(招投标、合同)
            十月(开票,预付款回款)
        b.技术
            6-12月(开发、数据迁移)
            1月(部署、测试、培训、上线)
            2月(试运行)
    c.项目组织
        a.项目人员
            魏德良、贺泽瑞、周翔、贾凯轩、李嘉伟、董霄源
        b.项目分工
            项目经理:魏德良(管理与协调,对项目整体结果(进度、成本、质量、范围)负责)
            架构师:贺泽瑞(技术设计与把控,对系统的技术可行性、架构合理性、技术风险负责)
            后端开发:周翔、贾凯轩、李嘉伟(后台逻辑与数据实现,对服务端代码质量、接口稳定性、数据正确性负责)
            前端开发:董霄源(界面呈现与交互实现,对页面还原度、交互流畅度、多端兼容性负责)"
    d.项目风险
        a.商务
            集团对项目金额的审核
            项目工作内容,是否包含AI
            是否可以通过交控立项审批
        b.技术
            前端资源紧缺,目前只有一个前端开发工程师
            信创适配(服务器、服务器操作系统、终端、终端操作系统、浏览器)
        c.小工具实现的方式
            数据迁移(数据库、附件)
            中间件是否包含除了服务器和数据库之外的"

2.2 路桥保理

01.保理项目1
    a.3个用户
        1.管理 2.核心企业 3.供应商
    b.基本业务
        路桥#1(核心企业)欠 供应商(多个N)给不了,保理 给 供应商 预支钱
        债务关系 变成(路桥#1(核心企业)与 保理单位)
    c.20260515
        转写:转写_中科智信空间科技&互融云演示交流会议
        转写文件:https://meeting.tencent.com/ctm/lvZMrY9Ba9

02.20260515
    a.业务模式定位
        a.业务类型
            反保理,核心作用是给核心企业拉长账期。
        b.角色归属
            放款方/资金方、保理单位均为路桥自身;保理业务对标日常信息、金融行业标准。
        c.业务本质
            内部左口袋转右口袋,维稳整体资金供应链;打通内部业务线条,夯实底层业务基础,屏蔽外部其他业务系统接入,简化前端繁杂业务流程。
    b.业务底层依托逻辑
        a.业务依托
            基于票据开展业务,而非单纯靠数据驱动。
        b.操作方式
            通过放款OCR识别、上传票据,搭建应付账款堡垒池。
    c.系统业务功能模块
        包含以下核心业务办理功能:保理业务处理、接口业务申请、授信业务管理、通用事项申请、贷前票据管理、票据信息查询、保理业务查询。
    d.中登网(央行应收账款质押登记平台)核心说明
        a.平台属性
            由国家央行牵头搭建,用于全国企业应收账款、应付账款的公示与融资登记专用平台。
        b.两大核心作用
            a.增信保真
                企业应付账款在中登网完成登记后,融资方风控认可度大幅提升,敢于放款。
            b.防范一债多融
                金融机构放款后可在平台对应收账款做标记占位,锁定该笔账款融资权限,杜绝同一笔应收/应付账款向多家机构重复融资,规避类“房产多重抵押”的金融风险。
        c.企业不愿登记的两大顾虑
            a.信息公示曝光
                登记属于公开公示,不愿对外披露自身欠款规模、负债情况。
            b.关联信用质疑
                大量应付账款公示登记,易被市场解读为核心企业付款能力、资金周转存在问题;若到期未履约付款,还会留下公开不良记录。
    e.产品与风控规则
        a.差异化定价
            按不同产品、不同账期设定差异化利率,配套对应风险控制手段。
        b.应付账款池搭建两种路径
            a.直连对接
                直接读取企业财务系统数据,自动形成应付账款池。
            b.内部传导
                未对接财务系统时,通过内部渠道传递信息,人工录入搭建应付账款池。
    f.业务发起与流程模式差异
        a.理想正向流程
            提前备好应付账款信息,主动推送、引导融资方发起借款需求(参考吉利车企模式:主机厂归集供应商采购合同,前置梳理账款资源)。
        b.当前实际流程
            需走发票验真环节,由供应商作为业务发起方,暂未实现前置归集账款、主动推送融资的模式。

2.3 太行灵泉

01.阿里云
    a.面板
        网址:https://dc.console.aliyun.com/next/index
        账号:15503637661
        密码:Joker.950719
        实例:i-2ze7onmljt6a5u8r903t
    b.机器
        实例规格:ecs.c5.xlarge
        机器性能:4 核(vCPU)、8 GiB
        公网IP:101.200.202.58
        主私网IP:172.23.231.198
        操作系统:CentOS 7.9 64位
    c.连接
        网址:101.200.202.58:8801
        账号:root
        密码:Sxlq123456-
        连接:ssh -p 8801 [email protected]
    d.数据,mysql
        网址:101.200.202.58:13306
        账号:root
        密码:Sxlq123456-
    e.数据,redis
        网址:101.200.202.58:6379
        密码:无密码(新)

02.沟通信息
    a.20260605
        1.更新前端UI:背景图、组件、样式
        2.更新题库:下周一,智奇
        3.背景补充:二维码 -> 扫,码已经给了太行灵泉,已经开始印码去啦
        4.服务器:部署aliyun、部署路径
        5.二维码:http://thlq.zxszgl.com/
    b.20260608
        设想在答题的过程中设置小奖励,以激励大家参与的积极性,这个设置容易达成吗?
        可以了解一下您指的小奖励大概是什么内容吗?50~100元区间
        按答题分数前100名,前50名100元的礼品,后50名50元的礼品,设置约定一下收官时间
        -----------------------------------------------------------------------------------------------------
        目前只能做到先答题,第二步开发小程序,更换二维码是吗?这个就看是否强制填写手机号了
        从第一步角度而言,如果是强制的话,可能答题率等会降低。目的也是统计一下,有个激励方案
        让多答题的得到鼓励,规则里说明,填报信息就参与排名,不填报不参与奖励,可以吗
        -----------------------------------------------------------------------------------------------------
        请填写昵称,手机号,信息仅用于积分统计,排名及奖品兑换。
        活动时间:2026年6月1日6月30日
        奖项设置:第1-50名:价值100元价值礼品
        第51-100名:价值约为50元价值礼品
        活动结束后,我们将根据后台数据联系获奖者。
    c.20260610,H5
        3道题(1、2、3) 
        -> 个人信息 
        -> 数据统计【扫码次数(打开链接次数)、答题人数】
        -----------------------------------------------------------------------------------------------------
        http://thlq.zxszgl.com/dashBoard
        https://lanhuapp.com/link/#/invite?sid=lX2kz53a
        开屏动画,最多3s,大概提示是,人人讲安全、个个会应急,排查整治风险隐患
        -----------------------------------------------------------------------------------------------------
        https://lanhuapp.com/link/#/invite?sid=lxojzZga
        https://lanhuapp.com/web/#/item/project/stage?pid=def32cc8-afa1-4a27-8503-6e9a980c3a50&tid=e9ee143a-b995-4bb0-80f3-df7d71a3a607&see=all&corpId=null

2.4 科技创新

01.常用信息1
    a.账号密码
        https://techs.sxlq.com:9094/#/login?redirect=%2Fdashboard%2Fworkplace%3Flg%3D1
        18636648587
        Sxll@1234
    b.原生资料
        【金山文档 | WPS云文档】 科技创新管理平台(1)     https://www.kdocs.cn/l/caQct777GTWZ
    c.20260715
        智慧工会项目建设方案.docx -> 科技管理平台项目建设方案.docx
        对接【财务、合同、人事系统】,辅助功能合并到技术管理

3 陵川交旅

3.1 基本信息

01.常用信息1
    a.系统模块
        若依主系统
        1.数据分析平台
        2.餐饮管理系统
        3.景区票务管理系统
        4.酒店管理系统
        5.电子音乐公路管理平台
        6.公路运管养数字管控平台
        7.智信数字交旅:中科智信空间科技(山西)有限公司
    b.陵川旅游平台
        https://lcjl.lczf.cn/cms/foodPromotion
        管理员         lcjlgly2022       Lcjlgly@@2022
        普通账号       lcjlgly           Lcjlgly@@2022
        音乐公路       yyglgly           yyglgly@1234
        七彩太行景区    qcthjq            qcthjq@1234
        悦太行咖啡      happykafa        happykafa@1234
        好梦住宿        haomeng          haomeng@1234             酒店管理系统
        运管养管理后台   ygygly           zkzxygy@2022
        陵川网址        https://lcjl.lczf.cn/index  
        运管养管理后台   http://lcjl.lczf.cn:21002/home            运营、管理、养护
    c.项目名称
        zkzx-lcjl-ui-main -> lcjl-web-admin-pc = 后台管理端
        lcjl-ticketing-test -> lcjl-web-dash-pc = 运营管理PC端
        lcjl-web-gather-main -> lcjl-web-guide-ht = 导览聚合H5
        lcjl-web-map-main -> lcjl-web-map-ht = 地图导览H5
    d.文档协作
        【金山文档 | WPS云文档】 0401.游客服务平台          
        https://www.kdocs.cn/l/ctryOa3rzgIq
        【金山文档 | WPS云文档】 0402.餐饮管理系统          
        https://www.kdocs.cn/l/cvg4S75YY4M8
        【金山文档 | WPS云文档】 0403.景区服务平台          
        https://www.kdocs.cn/l/cgpkw1KIP2fL
        【金山文档 | WPS云文档】 0404.酒店管理系统          
        https://www.kdocs.cn/l/cr7xjS8kF2A7
        【金山文档 | WPS云文档】 0405.底层数据管理平台       
        https://www.kdocs.cn/l/cdujUfNegbxP
        【金山文档 | WPS云文档】 0406.数据大屏              
        https://www.kdocs.cn/l/coDkwbuZF7fr
        【金山文档 | WPS云文档】 0407运管养管理平台
        https://www.kdocs.cn/l/cnG65nf8PUff             暂定125页
    e.文档协作
        【金山文档 | WPS云文档】 0501.游客服务平台
        https://www.kdocs.cn/l/crFwrnwc2HJi             121页
        【金山文档 | WPS云文档】 0502.餐饮管理系统
        https://www.kdocs.cn/l/cipQqlGBrHnZ             14页
        【金山文档 | WPS云文档】 0503.景区服务平台
        https://www.kdocs.cn/l/cdoyAoAznQdm              9页
        【金山文档 | WPS云文档】 0504.酒店管理系统
        https://www.kdocs.cn/l/cftW3tjS9GYO              26页
        【金山文档 | WPS云文档】 0505.底层数据管理平台
        https://www.kdocs.cn/l/chRfI39mmixH              97页
        【金山文档 | WPS云文档】 0506.数据大屏
        https://www.kdocs.cn/l/cn1ScRgg6CGk              11页
        -----------------------------------------------------------------------------------------------------
        121 + 14 + 9 + 26 + 97 + 11 = 278 页

3.2 会议内容

01.20260701
    a.方案
        1.开源github后端
        2.捋一下功能,功能重做
    b.小程序
        1.酒店管理系统:5个中的1个,只有PC端+小程序端
        2.小程序维保:首页中只维护【住宿】板块,我的【我的订单】
        3.民宿、酒店:民宿只有1个接入微信支付,只有【好梦松庙驿站】
        4.源码:季昌有源码,暂时未维护
    c.桌面端
        1.五个模块:首页、酒店管理、客房管理、预订记录、入住记录
        2.主要维保内容:押金支付、退回,对接公安系统
        3.只有【haomeng】,好梦松庙驿站,有【支付功能】,其他【民宿+酒店】也能登录
        4.首页【功能模块】:层级不一致,只出现在【首页】:入住办理、今日线上预订、客房续住、退房管理
        5.用户群体:酒店前台
        6.支付链路:小程序 -> 下单/退单(支付原路返回) -> PC的【今日线上预订】能看到这笔记录,没有客满,有一条记录【取消订单】
        7.关闭预定:小程序,相当于就没有这个酒店的【客房信息】了
        8.源码路径:lcjl-ticketing-test/src/views/hotel
    d.维护情况
        1.使用人数:基本失修,使用人数较少,只有开发者维护数据
        2.多久更新:出问题更新,上一次更新,去年(后台没咋动,加入酒店支付)
        3.不确定:接多租户,目前是一个租户的方式去运维
        4.景点设计的功能比较多,其他比较少,只维护【酒店管理系统】
    e.当前任务
        1.酒店实施建设方案:这周五交方案
        2.目前PDF页数,景区(128页-134页),酒店(135页-142页),餐饮(142-148页)
        2.目前PDF页数,景区(134页-140页),酒店(141页-148页),餐饮(148-154页)
        3.lcjl-ticketing-test,大屏需要加什么东西,源码位置【lcjl-ticketing-test/src/views/bigDataBoard】

02.20260701
    a.五大系统
        1.小陵伴游小程序                     文档1
        2.底层数据管理平台(若依主系统)        文档2
        3.商户管理平台:景区、餐饮、住宿        文档3(3个子文档)
        4.数据大屏                          文档4:各个商户统计,数字(餐饮、景区)
        5.运管养管理平台                     文档5
    b.支付合作
        方式1:各自走各自的微信支付(小程序方向)
        方式2:运营单位(统一收支),等待锁定结果来确定【方案】内容
    c.公安系统
        每家酒店的联网情况不一样,方案待讨论
    d.三个商户
        景区+餐饮:原代码不要动,看板数据,做统计数据,做大屏联动
        酒店:民宿+酒店,小程序(预定+支付)
    e.小程序
        我的:订单分层级,参考美团,比如待付款、待收货/待使用、待评价、退款/售后
        私人定制:目前会出现2个同样的地方,创建行程时,第1天 与 第2天 路线内容重复
    f.PC端
        订单:完整的交易追踪
        改动:页面层级结构,将首页的【页面】层级化

03.20260710
    a.说明
        运管养 作为单个项目,相对于 陵川交旅 是2个完全不同的架构,旧的代码 有点维护不起来,这个清理工作,初期摸排过来了
        陵川那边,你就理解为是 2个项目,需要做 针对性 代码修复
        你大概理解下,就是离 代码写好,可维护 有较大差距,这是 我写代码 负责的角度。
    b.说明
        游客服务平台、商户服务平台、公路运营养总调平台、大数据管理平台、底层数据管理平台
        目前文档有410页,预测需要厚2倍,也就是改成400*3=1200页
    c.说明
        左侧(主平台)          陵川县交旅融合管理平台
        右侧 5 个子系统切换     数据分析平台、餐饮管理系统、景区票务管理系统、酒店管理系统、电子音乐公路管理平台
    d.说明
        项目背景,是 已经 二手接过来的项目,合同已经签订了,
        然后 用户推广有问题,现在要重新推广,合同上没有多余钱,
        新的功能 是 甲方 将不满意的功能 删掉后,新的功能 用 删掉的功能 这部分钱 来做 新的功能开发
    e.说明
        暂时不用完善代码,不要动现有代码,熟悉就好
        抛弃现有运管养的内容,当做新项目做,不用完善代码

3.3 项目调试

01.运管养管理系统
    a.登录
        原文:zkzxygy@2022
        加密后:IqjuB66aCTf8rgEYV07x3g==

3.4 游客服务平台

3.5 餐饮管理平台

3.6 景区服务平台

3.7 酒店管理系统

01.常用信息1
    a.公共基础功能
        a.账号登录
            用户名+密码+验证码
        b.首页数据看板
            a.经营数据统计
                今日线上预订、昨日线上预订、本月线上营收、本月退款总额
            b.线上预订趋势图
                按日/月切换
            c.快捷操作入口
                今日待入住、今日退款订单、房型快速配置、订单导出
            d.业务提示
                区分线上小程序业务与线下PMS业务边界
        c.微信前台消息通知配置
            a.微信ID管理
                绑定/删除前台管理员微信OpenID
            b.通知模板配置
                配置微信服务通知模板
            c.消息推送机制
                全场景订单消息自动推送
            d.推送日志管理
                推送日志查询、防重复推送机制
    b.酒店管理模块
        a.酒店基础档案管理
            a.信息录入
                新增/编辑酒店信息:名称、分类、电话、楼层、地址、经纬度、简介、入住须知
            b.配套服务
                配套服务设施录入展示
        b.门店收费规则统一配置
            a.押金设置
                入住押金标准设置
            b.退房规则
                超时退房计费规则
            c.服务费配置
                基础服务费配置
        c.信息同步
            信息同步至小程序酒店详情页
    c.客房管理模块
        a.房型管理
            a.基础操作
                房型新增、编辑、删除
            b.基础信息录入
                必填项:名称、售价、面积、床位规格、可住人数、线上房间数、是否加床、是否含早、退订类型、最晚退订时间、房型介绍
            c.图片管理
                房型图片上传管理(jpg/png,≤500KB)
            d.分时段自定义定价
                a.时间段管理
                    新增/删除调价时间段
                b.价格设置
                    设置对应时段售价
            e.列表展示
                价格、面积、床位、库存、配套标签
        b.房间管理
            a.房间操作
                房间新增、编辑、查看、删除
            b.筛选搜索
                房间名称、房型、楼层、有无窗户
            c.属性配置
                楼层、有无窗户、是否禁烟
            d.列表展示
                分页列表展示房间数据
    d.预订记录模块(核心订单管理)
        a.筛选查询
            预订日期、手机号、订单状态、订单类型
        b.订单列表差异化展示
            a.颜色区分
                待支付(灰色)、已预订待入住(黑色)、部分退款(橙色)、全额退款取消(红色)、超时关闭(置灰)、已完成(绿色)
        c.订单默认过滤规则
            自动隐藏已完结订单(已完成/全额退款/超时关闭)
        d.订单基础操作
            a.查看详情
                查看订单完整详情(支付单号、支付时间、退款记录、操作日志)
            b.取消订单
                商家主动取消订单(填写取消原因、全额自动退款)
            c.归档标记
                订单手动标记「已完成」归档
            d.关闭订单
                手动关闭超时未支付订单(释放线上库存)
        e.退款业务功能
            a.自助退款
                用户小程序自助退款(符合规则自动全额退款,无需人工审核)
            b.人工退款
                后台人工部分退款(限制最大可退金额、多次退款、留存退款流水)
            c.失败重试
                退款失败一键重试
        f.订单消息联动
            订单变更推送前台、游客小程序通知

02.常用信息2
    a.台账管理模块
        a.营收统计
            a.汇总统计
                按日/月/年汇总线上收款、总退款、净营收
            b.分类统计
                按房型分类统计订单量、收入
        b.退款流水查询
            a.记录展示
                展示所有全额/部分退款记录(订单号、时间、金额、操作人、微信退款单号)
            b.检索存档
                关键词检索退款单据,数据永久存档不可删除
        c.报表导出
            a.待入住订单
                今日待入住订单Excel
            b.退款订单
                今日取消退款订单Excel
            c.营收总表
                月度线上营收总表
            d.对账报表
                财务对账专用线上收支报表
    b.微信小程序游客端功能
        a.酒店浏览
            酒店列表、酒店详情、配套设施、入住须知查看
        b.房型预订流程
            a.选择信息
                选择入住/离店日期、房型、房间数量(支持多间团单)
            b.填写信息
                填写多名入住人实名、身份证号
            c.计算锁定
                系统自动计算总价、锁定线上房间库存
            d.支付下单
                微信支付下单;支付失败支持重新支付/放弃订单
        c.个人订单中心
            a.订单查询
                查询全部线上预订订单
            b.自助退款
                符合规则自主申请全额退款
            c.通知查看
                查看退改规则、退款到账通知
        d.状态同步
            订单状态实时同步,接收服务通知
    c.支付运维配套功能(后台运维侧)
        a.账户配置
            酒店独立收款账户绑定、费率核对、退款权限开通
        b.通道监控
            全平台支付通道7*24监控,异常自动告警
        c.流水汇总
            自动汇总单店日/月/年收支流水
        d.对账处理
            账单导出、资金差额核对处理
        e.故障登记
            支付故障手工登记、网络恢复自动补流水
        f.远程协助
            商家支付相关问题远程协助(解绑、退款、对账)

3.8 数据管理平台

3.9 运管养管理系统

01.常用信息1
    a.材料整理
        1.背景
        2.喂开源材料,找关键词
        3.整理0x系列的文字材料
        4.输出1x、2x版本的文字材料、读取README合成
        5.请你按照符合人类设计,来思考和修复这个问题,打磨5轮
    b.ppt形式方案
        不要背景,功能模块有哪些,配图,
        功能模块能解决哪些问题,硬件大概需要哪些,不要标记数量,(需实地调研)
        这些硬件监测的是什么数据,这些数据能干嘛
    c.20260715
        登录【192.168.1.231:28848/nacos】,账号密码在【mysql数据库】里面
        实际业务数据库都在【pg数据库】,查看【layer.yml】,在192.168.1.249数据库,也是pg数据库
        -----------------------------------------------------------------------------------------------------
        datasource:
          postgre:
            url: jdbc:postgresql://localhost:5432
            driver-class-name: org.postgresql.Driver
            username: postgres
            password: zkzx@123.

02.常用信息2
    a.管控平台及解决方案
        华为云:提供开天公路aPaaS平台,基于AI感知与数字孪生能力,联合伙伴沉淀公路全生命周期行业经验。
        招商交科:发布“交科智脑”数智化运营方案及“两通一云”数字化平台,涵盖路网监测、养护决策与运行调度。
        省级实践:如湖北交投打造的“荆楚行”AI大模型及“阡陌通”施工管控平台,实现路网险情秒级预警和工程全过程智能监管。
    b.核心功能模块通常包含
        AI智能巡检:利用AI算法与无人机/巡检车自动识别坑槽、抛撒物、边坡形变,秒级生成派工单。
        数字孪生与BIM:建立高精度公路数字化模型,对桥梁、隧道、路基进行全生命周期健康监测。
        应急指挥协同:多源数据融合,打通公众出行服务(如“e路畅通”)与后台调度,实现事故一键救援与快速清障闭环。

4 甄选商城

4.1 基本信息

01.时间安排
    a.20260417
        1.开发周期:2026.4.15-2026.5.22
        2.测试联调:2026.5.23-2026.5.30
        3.上线日期:2026.5.31
        4.修复BUG:2026.6.1-2026.6.20
    b.20260421
        ZKZX - 路桥甄选 - 开发
        路衍 - 甄选 试运行测试
        职工端(h5)            2026/4/27      2026/4/30
        职工端(PC端)          2026/5/9        2026/5/12
        供应商端(pc端)         2026/5/15       2026/5/19
        子公司管理端(pc端)     2026/5/22       2026/5/22
        路衍管理端(pc端)       2026/5/22       2026/5/22
    c.20260427
        20260415-20260427,8天
        项目整体已完成30%。5个用户端已搭建完成,包括商品分类、供应商管理、地址管理等核心功能。
        这周项目将进行2项任务检查,1.对不同用户看到的页面内容进行调整;2.对业务逻辑进行分工和代码核实。
    d.20260514
        20260428-20260514,9天
        项目整体已完成65%。统一登录和权限体系已搭建完成,钉钉审批待办已接入,积分管理、供应商入驻、商品上架等后台核心功能与5个用户端页面已开发完成,
        8轮问题已修复闭环。本周将进行2项任务,1.推进物流追踪和台账报送功能;2.完善前端权限过滤和列表控制。
    e.20260529
        20260515-20260531,11天
        项目整体已完成80%。目前有4个剩余问题,
        第1个(供应商可以上自己的套餐,路衍公司审核套餐);
        第2个(员工不参与选购,自动发到他自己的子公司,给他发送一个默认套餐);
        第3个(员工下单后,可以撤回订单,一旦报到路衍公司,不可更改子公司整体报送结果);
        第4个(各子公司下的人员名单,暂时数据不齐,等待业务方提供最新一批数据);预计于20260531号,完成项目开发与上线。
    f.20260601
        1.截至本周日2026.6.7日,此项目需全部收尾,不论原因和理由
        2.已上报领导此项目已全部结束,本周日报不要写跟甄选项目相关的工作内容
        3.下周需携带完整以开发完未上线的系统,前往业主单位开展培训预演工作
        如未完成,整个项目组包括我,全部扣除6月部分绩效,望周知
    g.20260625
        1.钉钉开放人员的范围大小
        2.钉钉读取人员的公网IP白名单

02.钉钉免登
    a.凭证信息
        Client ID (AppKey)          dingzrlswuq7eubudh7s
        Client Secret (AppSecret)   QuPSC42ObBBRvo2V1V51uYfmJgRX2YhmNzKU_BUPYV5TQwFkzZhhtxYBEZA_a4AJ
        Corp ID                     ding7b95c950a2f9e75a35c2f4657eb6378f
        AgentId                     4038597639
    b.网页应用配置
        生效端                       移动端、PC端
        移动端首页地址                 http://111.53.193.159:20010?corpid=$CORPID$
        PC端首页地址                  http://111.53.193.159:20010?corpid=$CORPID$
    c.安全设置
        IP白名单                     111.53.193.159
        重定向URL(回调域名)           http://111.53.193.159:20010/lqzx/web/api/ht/
        端内免登地址                  http://111.53.193.159:20010/lqzx/web/api/ht/
    d.接入登录
        回调域名                      http://111.53.193.159:20010/lqzx/web/api/ht/
    e.接入分享
        iOS分享                      未启用
        Android分享                  未启用
        鸿蒙分享                      未启用

03.运维工作
    a.活动配置
        a.启动活动后,有如下字段
            年度:2026                        不可编辑
            节日:春节                         不可编辑
            选购开始:2026-05-31 11:00:00      可编辑,可以更改任意时间,不影响【重发积分、订单问题】
            选购截止:2026-08-29 10:59:59      可编辑,可以更改任意时间,不影响【重发积分、订单问题】
            积分额度:1000                     不能编辑,已下单的用户,已经有了一笔订单了,此时保存活动配置,用户还可以下单一笔订单。2笔订单号:WO-20260630-476353、WO-FILL-20260625-100545
            助农占比:30%                      不能编辑,会对下单用户的比例进行大的变化
            默认订单                           不能编辑,走默认订单的才不能编辑,不走默认订单(已下单)可以重新启动。【历史已下单快照数据:不管了;未下单的默认订单:只做这个检测】
        b.删除按钮
            <el-button
                v-if="row.status !== 1"
                type="danger"
                link
                @click="handleDelete(row)"
                >删除</el-button
            >
        c.人员禁用
            保证活动开始前,人员列表启用/禁用状态,不变动
    b.人员问题
        a.纯净数据库
            sxlq_lqzx_pure
        b.模拟账号
            删除 admin、gsda_test、gsdb_test、zgh_test 模拟账号
    c.项目启动
        a.查看
            ps -ef | grep java
        b.命令
            cd /workspace/lqzx/lqzx-server-stand && \
            nohup java -Dspring.profiles.active=baota -DDB_NAME=sxlq_lqzx_20260701_173128 \
            -jar target/lqzx-server-stand-1.0.0.jar > /tmp/lqzx-server.log 2>&1 0<&- &

04.交接工作
    a.账号信息
        20260716,4台服务器,第一台服务器,密码修改过
        -----------------------------------------------------------------------------------------------------
        [root@i-68mo0wvt ~] cd /home/oroiect/zkzx-lcil
        [root@i-68mo0wvt ~] #./ruoyi-admin20260204songdayel.sh
        [root@i-68mo0wvt ~] java - jar ruoyi-admin20260204songdayel. jar --spring.config.location=classpath:/,./config/
    b.数据同步
        20260716,mysql
        ip和端口:192.168.3.100:23306
        账号:sunxiaoxiong
        密码:mfLMvieg0?R8
        -----------------------------------------------------------------------------------------------------
        DmApi这个数据库中
        OrgServiceImpl表是组织
        UserServiceImpl表是用户
        导出2个表的结构和数据,在路桥甄选数据库中执行
        -----------------------------------------------------------------------------------------------------
        修改OrgServiceImpl表为task_org_service
        修改UserServiceImpl表为task_user_service
        定时任务在文件D:\develop\work\lqzx_web\lqzx-server-stand\src\main\java\com\zkzx\layer\lqzx\task\LqzxHrSyncSchedulerV1.java
        定时任务执行后会同步数据
        -----------------------------------------------------------------------------------------------------
        甄选之后不是不部署集团吗 同步手册 你参考下
        同步之前最好问下智奇 是不是最新的 低代码拉回来的数据 应该是 但是最好问下 
        我昨天看 之前人员数量什么的和钉钉的组织架构数量对不上 不知道什么原因
        不知道是不是最近有调整还是,6月份我记得同步过一次
        -----------------------------------------------------------------------------------------------------
        dingtalk:
          app-key: "dingzrlswuq7eubudh7s"                                                 # ✅ SysAuthService:54 (来源: zhgh bootstrap.yml)
          app-secret: "QuPSC42ObBBRvo2V1V51uYfmJgRX2YhmNzKU_BUPYV5TQwFkzZhhtxYBEZA_a4AJ"  # ✅ SysAuthService:56
          corp-id: "ding7b95c950a2f9e75a35c2f4657eb6378f"                                 # ✅ AuthConfig (来源: zhgh-app/App.vue)
        -----------------------------------------------------------------------------------------------------
        对了钉钉这个 记得到时候更新全集团的

4.2 账号信息

01.常用信息1
    a.sxlq_lqzx
        http://localhost:5980/gys/dashboard?token=lqzx-dev-gys-2026
        -----------------------------------------------------------------------------------------------------
        http://101.42.36.187/lqzx/web/api/pc/
        http://101.42.36.187/lqzx/web/api/ht/
        -----------------------------------------------------------------------------------------------------
        http://192.168.3.105/lqzx/web/api/pc/
        http://192.168.3.105/lqzx/web/api/ht/
        -----------------------------------------------------------------------------------------------------
        http://111.53.193.159:20010/lqzx/web/api/pc/
        http://111.53.193.159:20011/lqzx/web/api/ht/
        -----------------------------------------------------------------------------------------------------
        admin
        gsda_test
        gsdb_test
        zgh_test
        gys_test
        -----------------------------------------------------------------------------------------------------
        ceshi123456@Tp
        供应商,拼音首字母(首字大写,其余小写)+ @lq123.
        普通用户,拼音首字母(首字大写,其余小写)+ @lq123!
        供应商:loginName 首字母大写其余小写 + @lq123.
        普通用户:名字拼音首字母大写 + @lq123!(如常新忠 → Cxz@lq123!)
        -----------------------------------------------------------------------------------------------------
        yclhnykjyxgs
        Yclhnykjyxgs@lq123.
        -----------------------------------------------------------------------------------------------------
        songxiaoxiong
        Sxx@lq123!
        -----------------------------------------------------------------------------------------------------
        songjingjing
        Sjj@lq123!
    b.sxlq_lqzx
        -- 内网pc端
        http://192.168.3.105/lqzx/web/api/pc/
        -- 内网h5端
        http://192.168.3.105/lqzx/web/api/ht/
        -- 外网pc端
        http://111.53.193.159:20010/lqzx/web/api/pc/login
        -- 外网h5端
        http://111.53.193.159:20010/lqzx/web/api/ht/login
        -----------------------------------------------------------------------------------------------------
        路衍公司-路衍管理员
        账号:gaoyang
        密码:Gy@lq123!
        路衍公司-子公司管理员
        账号:baijinlong
        密码:Bjl@lq123!
        路衍公司-普通用户
        账号:changhui
        密码:Ch@lq123!
        -----------------------------------------------------------------------------------------------------
        供应商
        账号:Lqsm
        密码:Lqsm@lq123.
        账号:Lqgm
        密码:Lqgm@lq123.
        账号:yclhnykjyxgs
        密码:Yclhnykjyxgs@lq123.
        账号:lysmgs
        密码:Lysmgs@lq123.
        账号:qwspgyl
        密码:Qwspgyl@lq123.
        -----------------------------------------------------------------------------------------------------
        集团总部-路衍管理员
        账号:changxinzhong
        密码:Cxz@lq123!
        集团总部-子公司管理员
        账号:baiyongsheng
        密码:Bys@lq123!
        集团总部-普通用户
        账号:guoxin3
        密码:Gx@lq123!
        -----------------------------------------------------------------------------------------------------
        路桥八公司-路衍管理员
        账号:anye
        密码:Ay@lq123!
        路桥八公司-子公司管理员
        账号:andongsheng
        密码:Ads@lq123!
        路桥八公司-普通用户
        账号:anxiaoxin
        密码:Axx@lq123!
        -----------------------------------------------------------------------------------------------------
        太原联络线公司-路衍管理员
        账号:liangxin
        密码:Lx@lq123!
        太原联络线公司-子公司管理员
        账号:ansijie
        密码:Asj@lq123!
        太原联络线公司-普通用户
        账号:baipengwen
        密码:Bpw@lq123!

02.常用信息2
    a.sxlq_lqzx
        云采联合农业科技   ycthnykjyxgs
        路衍商贸有限公司   lysmgs
        桥味食品供应链     qwspgyt
        绿源农场直供       lynczg
        恒信日用品公司     hxrypgs
        路桥商贸          Lqsm
        路桥国贸          Lagm
        http://localhost:9172/sys/auth/login?loginName=yclhnykjyxgs&password=Yclhnykjyxgs@lq123.&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=lysmgs&password=Lysmgs@lq123.&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=qwspgyl&password=Qwspgyl@lq123.&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=lynczg&password=Lynczg@lq123.&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=hxrypgs&password=Hxrypgs@lq123.&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=lhsm&password=Lhsm@lq123.&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=lhgm&password=Lhgm@lq123.&captchaCode=8
        -----------------------------------------------------------------------------------------------------
        管理员             admin
        常新忠(路衍管理员) changxinzhong
        白永胜(管理员)    baiyongsheng
        白建红(管理员)    baijianhong
        董亮(管理员)      dongliang
        侯杰(管理员)      houjie1
        孙晓雄(管理员)     sunxiaoxiong
        http://localhost:9172/sys/auth/login?loginName=admin&password=ceshi123456@Tp&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=changxinzhong&password=Cxz@lq123!&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=baiyongsheng&password=Baiyongsheng@lq123!&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=baijianhong&password=Baijianhong@lq123!&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=dongliang&password=Dongliang@lq123!&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=houjie1&password=Houjie1@lq123!&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=sunxiaoxiong&password=Sunxiaoxiong@lq123!&captchaCode=8
        -----------------------------------------------------------------------------------------------------
        山西路桥集团(总公司)
        郭鑫(职工)         guoxin3
        郭吴(职工)         guohao2
        辰润交通公司
        白金虎(职工)       baijinhu
        白露(职工)         bailu
        临汾国道公司
        高艳龙(职工)       gaoyanlong
        籍晓婷(职工)       jixiaoting
        中科智信公司
        成林(职工)         chenglin
        邓晓荣(职工)       dengxiaorong
        宋晶晶(职工)       songjingjing
        http://localhost:9172/sys/auth/login?loginName=guoxin3&password=Guoxin3@lq123!&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=guohao2&password=Guohao2@lq123!&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=baijinhu&password=Baijinhu@lq123!&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=bailu&password=Baitu@lq123!&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=gaoyanlong&password=Gaoyanlong@lq123!&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=jixiaoting&password=Jixiaoting@lq123!&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=chenglin&password=Chenglin@lq123!&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=dengxiaorong&password=Dengxiaorong@lq123!&captchaCode=8
        http://localhost:9172/sys/auth/login?loginName=songjingjing&password=Songjingjing@lq123!&captchaCode=8
    b.sxlq_lqzx
        云采联合农业科技   ycthnykjyxgs
        路衍商贸有限公司   lysmgs
        桥味食品供应链     qwspgyt
        绿源农场直供       lynczg
        恒信日用品公司     hxrypgs
        路桥商贸          Lqsm
        路桥国贸          Lqgm
        http://localhost:5980?loginName=yclhnykjyxgs&password=Yclhnykjyxgs@lq123.&captchaCode=8&redirect=/gys/order
        http://localhost:5980?loginName=lysmgs&password=Lysmgs@lq123.&captchaCode=8&redirect=/gys/order
        http://localhost:5980?loginName=qwspgyl&password=Qwspgyl@lq123.&captchaCode=8&redirect=/gys/order
        http://localhost:5980?loginName=lynczg&password=Lynczg@lq123.&captchaCode=8&redirect=/gys/order
        http://localhost:5980?loginName=hxrypgs&password=Hxrypgs@lq123.&captchaCode=8&redirect=/gys/order
        http://localhost:5980?loginName=lqsm&password=Lqsm@lq123.&captchaCode=8&redirect=/gys/order
        http://localhost:5980?loginName=lqgm&password=Lqgm@lq123.&captchaCode=8&redirect=/gys/order
        -----------------------------------------------------------------------------------------------------
        管理员             admin
        常新忠(路衍管理员) changxinzhong
        白永胜(管理员)    baiyongsheng
        白建红(管理员)    baijianhong
        董亮(管理员)      dongliang
        侯杰(管理员)      houjie1
        孙晓雄(管理员)     sunxiaoxiong
        http://localhost:5980?loginName=admin&password=ceshi123456@Tp&captchaCode=8&redirect=/gsda/dashboard
        http://localhost:5980?loginName=changxinzhong&password=Cxz@lq123!&captchaCode=8&redirect=/gsda/dashboard
        http://localhost:5980?loginName=baiyongsheng&password=Bys@lq123!&captchaCode=8&redirect=/gsdb/hq/report
        http://localhost:5980?loginName=baijianhong&password=Bjh@lq123!&captchaCode=8&redirect=/gsdb/hq/report
        http://localhost:5980?loginName=dongliang&password=Dl@lq123!&captchaCode=8&redirect=/gsdb/hq/report
        http://localhost:5980?loginName=houjie1&password=Hj@lq123!&captchaCode=8&redirect=/gsdb/hq/report
        -----------------------------------------------------------------------------------------------------
        山西路桥集团(总公司)
        郭鑫(职工)         guoxin3
        郭吴(职工)         guohao2
        辰润交通公司
        白金虎(职工)       baijinhu
        白露(职工)         bailu
        临汾国道公司
        高艳龙(职工)       gaoyanlong
        籍晓婷(职工)       jixiaoting
        中科智信公司
        成林(职工)         chenglin
        宋晶晶(职工)       songjingjing
        http://localhost:5980?loginName=guoxin3&password=Gx@lq123!&captchaCode=8&redirect=/zgh/order/list
        http://localhost:5980?loginName=guohao2&password=Gh@lq123!&captchaCode=8&redirect=/zgh/order/list
        http://localhost:5980?loginName=baijinhu&password=Bjh@lq123!&captchaCode=8&redirect=/zgh/order/list
        http://localhost:5980?loginName=gaoyanlong&password=Gyl@lq123!&captchaCode=8&redirect=/zgh/order/list
        http://localhost:5980?loginName=jixiaoting&password=Jxt@lq123!&captchaCode=8&redirect=/zgh/order/list
        http://localhost:5980?loginName=chenglin&password=Cl@lq123!&captchaCode=8&redirect=/zgh/order/list
        http://localhost:5980?loginName=songjingjing&password=Sjj@lq123!&captchaCode=8&redirect=/zgh/order/list

4.3 会议内容

01.常用信息1
    a.说明
        文件:上传下载
        FLOW:钉钉待办、审批流
        RBAC:用户权限、用户认证、组织架构
        数据库:192.168.3.100 -> sxlq_shop
    b.文件
         SysAttachmentController -> /upload 或 /upload/batch
    c.FLOW
        注意,用户统一走公共接口,然后获取登录信息
        路衍配置子公司管理员      "isSuper": 1
    d.RBAC
        SysServiceController
        sex                   性别 0男 1女
        status                状态 0在用 1停用
        isRevise              首次登录 是否强制修改(,0-是,1-否)
    e.相关信息
        侯杰     970618
        宋晶晶   110999    S110999
        孙晓雄   1qaz@WSX  sxxxm
        -----------------------------------------------------------------------------------------------------
        供应商:拼音首字母(首字大写,其余小写)+ @lq123.
        普通用户:拼音首字母(首字大写,其余小写)+ @lq123!
    f.层级结构
        职工端    首页、甄选商城、领取记录、收货地址
        供应商    首页、商品管理、订单处理、账号设置
        子公司    首页、组织/员工、配送地点、台账报表
        路衍公司  首页、子公司管理、供应商管理、商品管理、商品审核、活动配置、活动积分、台账报送

02.常用信息2
    a.任务
        sex 0 1
        type 中文
        -----------------------------------------------------------------------------------------------------
        原有字段不要动,用 新字段 
        "orgName": "山西路桥集团",
        "fullname": "山西路桥建设集团有限公司",
    b.根据组织表deptCode获取关联用户(组织用户)
        角色:中文名
        roles: [xxx,xxx]          role:"xxxx,xxxx"  用
    c.根据user(ID、英文名)登录,返回的信息是什么                 已有接口,接口改造,扩充     目前只返回token  (只返回token,放弃改造)(若返回用户信息,添加进来)
        别人接口
        角色:中文名
        roles: [xxx,xxx]          role:"xxxx,xxxx"  用
    d.根据user(ID / 英文名,加索引)登录,获取当前用户信息       信息【ID、用户名、英文名、【role:"xxxx,xxxx" 】,部门】    
        自己接口
        roles: [xxx,xxx]          role:"xxxx,xxxx"  用               数据库精准锁定数据,防止篡改
    e.待办
        未做
    f.审批流
        未做
    g.minio
        endpoint: http://192.168.1.231:9000
        access-key: minioadmin
        secret-key: minioadmin
        bucket-name: lqzx
        preview-url: http://192.168.1.231:9000

03.常用信息3
    a.说明
        助农分类,必须达到30%
        开放2次,几万人同时在选,在岗2w,不能崩
        购物车提交时,可以提交地址
        支持福利方案一键选+自由商品自选双模式
        系统强制校验订单助农占比30%,不达标无法提交
        订单全流程跟踪,自动生成福利发放与助农采购台账
    b.选购
        送货流程:供应商配送,只做台账
        选购流程:时间限制,国庆之后,5天内自己选完
        选购流程:待办,距离选购时间还有XXX久,钉钉提醒,提前配置
        默认选购:多次员工之后,仍未选,默认福利方案。默认就给一套选购内容。默认选
    c.移动端
        导航:选购、订单、地址
        一、选购
        顶部:姓名+公司名称+xxx年 xxx节日福利选购 xxx元额度
        左侧:分类导航栏:第一个福利方案,第二个助农专区,剩下的随便搞几个分类做演示
        右侧:商品详情:福利方案只能选一个,点击福利方案新的页面,福利方案详情,福利方案名称+方案内的商品(图片、名称、金额)
        底部:已选金额:xxx(已选额度)/yyy(福利额度)、助农占比:xxx(y%)、提交订单
        购物车:参考美团
        二、订单
        筛选:年份,节日
        订单:
        1、卡片形式,tittle:xxx年 xxx节日 福利选购订单,显示选购的一个上坡
        2、点击卡片进入选购商品详情页:商品卡片列表,图片+名称+金额
        三、地址管理
        参考美团

04.常用信息4
    a.分类1
        功能清单表里没有的 但是你们实际情况做了的,也可以补充进去
        开发过程中有任何问题及时反馈 我这边想办法解决,务必在规定时间内开发完成
        sxx 在 Apifox 邀请你加入项目 路桥甄选 https://app.apifox.com/invite/project?token=BcfclmKAWnRAjEcf5RVsW
    b.分类2
        路桥甄选目前还有一个事情不明确
        1.不确定是独立系统还是内嵌在工会当中,所以暂时不接统一登录
        2.前端正常用ai开发,如果是内嵌最后统一改颜色,如果是独立的就我们自己弄
        3.所以正常做,有颜色需要了,最后ai统一改
        -----------------------------------------------------------------------------------------------------
        已确定,作为工会的一个单独模块,链接跳转
        用户这一块跟工会系统做对接,单点登录
    c.分类3
        关于福利额度积分,目前有两种情况
        1.接工会积分
        2.我们独立的,路衍设置然后下发,也就是目前的业务流程
        这一块先按照2来走,预留1的接口,需求方也不知道他们想要啥,没人能定下来
        -----------------------------------------------------------------------------------------------------
        支持福利方案一键选+自由商品自选双模式
        系统强制校验订单助农占比30%,不达标无法提交
        订单全流程跟踪,自动生成福利发放与助农采购台账
    d.分类4
        1.按照这个思路做一下动画
        2.有些信息是ai给编的,需要路桥人全面审核过一遍
        3.提取文字信息
        4.产生交易、地址、新闻
    e.分类5
        供应商 - 商品管理模块中,套餐状态为已下架的商品,在编辑保存后,会导致原有用户已下单的历史记录发生变更。
        建议:供应商上传商品、套餐后,商品初始状态设为待审核;待审核状态支持撤回操作,目前撤回后商品状态为已下架,建议单独新增已撤回状态。
        供应商对已下架商品、套餐进行编辑时,直接走新增流程,可避免供应商修改已下架商品、套餐内容后,造成过往选购该商品或套餐的历史订单数据里,商品信息、金额等内容被改动。
        除此之外,也可新增后端接口逻辑:判断当前商品、套餐是否存在关联订单记录,若存在订单记录则编辑操作走新增,若无订单记录则走更新。

05.常用信息5
    a.说明1
        路衍-福利方案-新增任务设置了选购时间 选购开始前一天早上9点或者如果是当天设置的选购时间就立马提醒或者如果今天13号设置的从12号开始也要立马提醒 
        提醒调用统一待办接口 发送一条待阅信息给每一个用户状态status=0是启用并且不是删除状态is_deleted=0的用户,
        还要过滤user_type不等于00的用户(00是集团用户,11是供应商)发送通知
    b.说明2
        路衍-福利方案-新增任务设置了选购时间 选购时间结束前三天早上9点发送统一待办中的待阅信息提醒用户选购商品,
        提醒内容包含年份,节日,额度,选购时间,要有红字警示信息:当前未选购如果在选购时间内未自主选购,将取消选购资格,
        会按照默认方案发放==提醒范围查询用户状态status=0是启用并且不是删除状态is_deleted=0的用户,还要过滤user_type不等于00--
        还要过滤在当前选购时间的年份 节日在订单列表已存在已选购状态的用户不再提醒
    c.说明3
        D:\develop\work\lqzx_web\lqzx-server-stand\src\main\java\com\zkzx\layer\lqzx\controller\LqzxGsdbController.java
        中reportSubmitBatch方法 子公司一键报送要发统一待办 --统一待办中的的link地址通过网页代办人能查看待办信息,也能一键报送供应商  
        mobileLink移动端地址是发送钉钉附带地址 h5链接通过钉钉登录查看待办信息,也能一键报送供应商
        统一待办参考D:\develop\work\lqzx_web\lqzx-server-stand\src\main\java\com\zkzx\layer\wsdl\SysNotifyTodoTestController.java 
        sendTodo--发送待办 待办类型type(1-表示审批类待办(待办),2-表示为通知类待办(待阅))--appName的值修改路桥甄选
        setTodoDone--发送已办
    d.说明4
        路衍管理员一键报送供应商接口D:\develop\work\lqzx_web\lqzx-server-stand\src\main\java\com\zkzx\layer\lqzx\controller\
        LqzxGsdaController.java文件中ledgerSend方法 需要增加调用统一待办中的已办接口 把待办信息设置为已办
    e.说明5
        appId:dingoavwjkbcp8h7tfdwmz
        appSecret:Igo-llZFA4Ah-L6N5sXF8AqlgVEQcktJ_Bn---HtNj7KZzCQ__jY_BjkqZjL1GGH
        Client ID (原 AppKey 和 SuiteKey):dingzrlswuq7eubudh7s
        Client Secret (原 AppSecret 和 SuiteSecret):QuPSC42ObBBRvo2V1V51uYfmJgRX2YhmNzKU_BUPYV5TQwFkzZhhtxYBEZA_a4AJ
    f.说明6
        https://ekp.sxlq.com:9000/lqzx/web/api/pc/zgh/shop
        https://ekp.sxlq.com:9000/resource/ding_load.jsp?callbackUrl=https%3A%2F%2Fekp.sxlq.com%3A9000%2Fsys%2Fnotify%2Fsys_notify_todo%2FsysNotifyTodo.do%3Fmethod%3Dview%26fdId%3D19e3df620c8e466ddcbb6c54ecd82874%26mdingclose%3D1&title=%E5%BE%85%E5%8A%9E%E4%BA%8B%E5%AE%9C
        https://www.sxlq.com:7011/cas/login?service=https%3A%2F%2Fekp.sxlq.com%3A9000%2Flqzx%2Fweb%2Fapi%2Fht%2Fhome
    g.说明7
        1.子公司:员工已提交/全部员工数 能显示出来哪些员工没提交
        2.路衍:子公司已报送/全部子单位 能显示出来哪些单位没报送
    h.说明8
        task_org_service表  9741条
        task_user_service   25592条
        sys_org             990条 
        sys_user            9917条
        curl -s -X POST http://127.0.0.1:9172/lqzx/task/hr-sync -H "Authorization: lqzx-dev-admin-2026" -H "Content-Type: application/json"

4.4 工作内容

01.20260508
    a.甄选商城
        1.任务时间,1月1号 至 1月30号
        2.积分管理:工会联动(定时任务)、员工积分(积分管理)
        3.领取记录:先年,后节日,状态4个;导出(隐藏)
    b.供应商
        1.订单处理:
          年份 节日 子公司 
          一条订单【2026年 中秋(全部大的折叠-子公司-员工)】,导出订单
          10个公司,10个sheet
        2.统计对账:删
        3.核心:商品+发货
    c.子公司
        1.多个子公司(切换按钮) -> 只能看2个公司 -> 自己公司账户
        2.账户管理 -> 子公司管理 -> 做
        3.系统配置 -> 左树右表
        4.首页 -> 当前节日 -> 台账 -> 待处理,哪一年什么节日,括号(当前节日)
        5.台账报送 -> 早上10点统一推送,有时间提醒;公司总体,非个人;一键报送;10个公司,10个sheet
          中科智信 发送给 路桥公司
          已完成
          年份
          节日
          应报送,未报送
          是否报送
    d.路衍公司
        1.首页:节日进度(当前节日),订单处理不要了
        2.供应商:默认密码,后面小眼睛,首字大写,其余小写,Zkzx@lq123.
        3.个人职工:默认密码,后面小眼睛,首字大写,其余小写,Zkzx@lq123!
        4.商品分类:无置顶,哪家公司+哪家供应商(名称、电话、图片),显示助农标签;右上角看到商品详情
        5.福利方案:新增任务(年份+节日+时间,开始+结束)、小卡片(详情+实际方案)
        6.台账报送:当前节日 -> 台账 -> 待处理,哪一年什么节日,括号(当前节日)
          推送 -> 早上10点统一推送,有时间提醒;公司总体,非个人;一键报送;10个公司,10个sheet
                    中科智信 发送给 路桥公司
                    已完成
                    年份
                    节日
                    应报送,未报送
                    是否报送
        7.发任务:直接重置额度
        8.默认福利方案:时间配置(置灰)

02.20260519
    a.管理方式
        供应商    上下架
        福利方案   2026年,9月1号 - 9月10号
        数据链路   员工订单 -> 子公司 -> 路衍公司 -> 各个供应商
    b.多个套餐
        分类      每个分类有哪些东西(套餐+商品)
        商品      每个商品的价钱+电话+地址
        -----------------------------------------------------------------------------------------------------
        灵活性     个人+套餐(灵活)
        多个套餐   100的、200的,全是套餐,比如700=300+100+300
        -----------------------------------------------------------------------------------------------------
        供应商     1.多个套餐(每个套餐对应1个供应商)  2.套餐审核
    c.数据链路
                                    一键报送               一键报送
        员工订单      -> 子公司          ->      路衍公司      ->        供应商
                  (当前公司:中科智信)         (内部查看)
    d.自动发货
        默认    子公司地址
        默认    一个套餐
    e.项目周期
        一期    目前工作
        二期    供应商 <-> 子公司      合同+签字+结算单
                 |
               路衍公司
    f.线下流程
        工会办公室:工会管理员 -> 请示 -> 通知工会全部人员
        发起任务:线下配置人员(已经审批)
        整体公司:导出全部公司(1个公司发1次上报)
    g.员工选购
        1.选购时间
        2.员工下单后,可以撤回订单,一旦报到路衍公司,不可更改子公司整体报送结果
        3.各子公司下的人员名单,暂时数据不齐,等待业务方提供最新一批数据
        4.员工未选购,截止时间前3天也要发起一次
        5.腾讯会议:全员参加+供应商

03.20260529
    a.积分满额
        智能凑单,1块到9块
        整数套餐,100+600,没有组合套餐,但是可以购物车添加多个套餐
        提交订单:必须选够活动设置的额度,不然不给提交订单,助农比例不到对应比例不给提交订单
    b.商品管理
        分类是动态的
        单品、套餐的分类是多选
        供应商的套餐,只能选的(已审核的商品)
        单品,一个一个审核,只能上架已审核的单品
    c.节日发放
        没有一人一单
    d.菜单更改
        积分配置,删除菜单
    e.小毛病
        导出,合并
    f.时间安排
        公司IP地址
        空环境、空账号测试
        开发时间:20260601
        测试时间:20260601-20260607
        测试+培训:20260608-20260612

04.20260608
    a.运营顺序
        配置活动 — 管理员创建 festival_config(status=0 未开始),设置预算、助农比例、时间
        准备商品 — 供应商提交商品 → 管理员审核通过(status=1)
        配置默认订单模板 — 管理员编辑默认订单(选商品、凑满预算)→ 系统校验 SUM(price × qty) == pointsBudget
        锁定配置 — 管理员将活动改为 status=1(进行中)
        职工选购 / Scheduler 自动选购 — 此时所有配置应处于"冻结"状态
        活动结束 — status=2,不再接受新订单
    b.JS免登
        PC统一登陆
        http://111.53.193.159:20010/lqzx/web/api/pc/cas-login
        -----------------------------------------------------------------------------------------------------
        HT统一登录
        http://111.53.193.159:20010/lqzx/web/api/ht/dingtalk-login
        -----------------------------------------------------------------------------------------------------
        HT手动登录
        http://111.53.193.159:20010/lqzx/web/api/ht/
        -----------------------------------------------------------------------------------------------------
        找霄源要了工会前端改的,这个地址智能在钉钉里面打开,所以免登
        钉钉不在线也不可能会有这个链接,这个到时候统一登录钉钉地址就用这个
        还有个上传图片的,已经让AI修了,这个应该是外网访问附件内网跨域的问题
    c.20260611
        1.测系统
        2.并发测试+压力测试
        3.用户手册
        4.银河麒麟高级服务器操作系统V11
        -----------------------------------------------------------------------------------------------------
        我要加个配置,上传文件的有跨域
        修改成了前端展示图片从后端接口获取的
        但是这个接口被别的拦截了,需要加个优先级,把这个优先级提到最高
        -----------------------------------------------------------------------------------------------------
        方案落地前,请在实际目标麒麟机器上跑 4 条命令并把输出贴回来,以验证我的通识判断:
        cat /etc/os-release      # 确认是 Kylin V11 + 版本细节
        uname -m                 # 确认 CPU 架构(预期 x86_64)
        ldd --version            # 确认 glibc 版本(Java 8 需 ≥ 2.17)
        which yum dnf            # 确认包管理器(预期 yum 可用)
        输出符合预期 → 方案可直接执行;不符合 → 我按实际环境调整对应章节。
    d.20260612
        pc-base-url: http://111.53.193.159:20010/lqzx/web/api/pc/cas-login
        ht-base-url: http://111.53.193.159:20010/lqzx/web/
        client-host-url: http://111.53.193.159:20010/login-continue
    e.20260630
        页面地址:http://localhost:5980/gsda/activity,该页面为活动配置页。
        当前状态为「进行中」的活动,操作栏现有两个按钮:编辑、结束;点击结束按钮后,员工无法再选购商品,但供应商会放开商品、套餐的修改权限,若此时供应商修改商品,会导致部分已下单用户手中的商品为变更前的旧版本商品。
        需求:在「进行中」状态活动的操作栏新增一个按钮 —— 暂停;点击暂停后,活动状态变更为「已暂停」。员工不能继续选购商品(该逻辑无需改动,原本就仅允许进行中状态可选购),子公司、路衍管理员也无法进行报送操作(该逻辑无需改动,原本就仅允许进行中状态可报送)。
        权限规则调整:供应商编辑、下架商品及套餐时,除当前已有「活动进行中不允许操作」的限制外,新增规则:活动状态为「已暂停」时,同样不允许对商品、套餐执行编辑、下架操作;即已暂停和进行中状态在编辑和下架逻辑一致。
        各活动状态对应的操作按钮展示规则:
        已暂停状态:操作栏展示编辑、结束、开始三个按钮;点击「开始」,活动状态变更为进行中。
        进行中状态:操作栏展示编辑、结束、暂停三个按钮。
        新增启动类操作校验规则:活动配置点击【启动】或【重新启动】按钮时,需要增加前置校验,校验规则为:当前全部活动里,不能存在状态为「已暂停」的活动,若存在则不允许启动。
    f.20260702
        20260720部署上线
        20260925中秋节,春节前,结算单
        -----------------------------------------------------------------------------------------------------
        路衍<=>各个子公司 或 路衍<=>各个供应商
        谷X提供【结算单】模版(XXX选【多少东西】,总金额是多少)
        路衍给各个子公司,签字盖章(电子章、扫描件),活动结束一周内

05.20260615
    a.服务器
        人数较多,请耐心等待
    b.分类1
        自动开始:0601设置未开始,然后0605自动开始           废弃
        未报送多少人:确认
        报送公司:一批一批
    c.分类2
        公司处理,时间控制,最后时间
    d.分类3
        考核评分(打分情况),管理员培训,报表
        履约、电子签章
        派送、服务态度、退换货
        根据上述要求,来决定是否继续来让某个供应商来做
    e.分类4
        批量查询,订单号,有效时效,每个公司需要收货订单
    f.分类5
        路衍首页,加一列是否报送供应商
    g.分类6
        1.供应商
        2.管理员审核
        3.创建活动
        4.无需系统操作,等待人选购
        5.用户下单,供应商,京东物流

06.20260616
    a.审批配置
        1.部室负责人有几个,
        2.A要准备提交后,给部门负责人,必须工会主席同意才能到路衍公司吗?
        3.路衍的B这儿了,B审完点提交,必须工会主席同意才能到供应商吗?
        -----------------------------------------------------------------------------------------------------
        A是子公司的管理员,现在员工都选完了,A要准备提交给路衍了,A点完提交,是不是需要自动流转给A的部室负责人,
        然后再流转给工会主席。就到了路衍的B这儿了,B审完点提交,自动流转给我了,然后是工会主席,就到供应商了
        @略略略 是我们路衍负责工会的,他就相当于是那个A
        @五味人生 相当于那个B
        -----------------------------------------------------------------------------------------------------
        @赵小瘦💋 赵红丽,作为普通员工,进行商品挑选
        @略略略 王嘉宇,作为子公司管理员,审核赵红丽选的商品及人数。
        @静儿 石静,作为管理员的部室负责人,审批王嘉宇提上来的流程。
        @徐晓妮 徐晓妮,作为工会主席,审批石静的流程。然后王嘉宇点推送。子公司流程结束。
        @五味人生 张国柱,作为路衍公司审核各单位角色,审核王嘉宇提的流程。
        @流卡哇ᯤ⁶ᴳ 谷亮,作为部室负责人,审核张国柱提上来的流程。
        @徐晓妮 徐晓妮,作为部室分管领导,审批谷亮提上来的流程。通过后,张国柱点推送。
        @华 王国华,作为供应商,接收张国柱推送的流程。
    b.账号密码
        谷亮,张国柱,充当管理端管理员
        王嘉宇,充当子公司管理员
        石静,充当员工挑选商品
        -----------------------------------------------------------------------------------------------------
        guliang
        zhangguozhu
        wangjiayu
        shijing3
        -----------------------------------------------------------------------------------------------------
        SELECT login_name, is_super, is_admin FROM sys_user
        WHERE login_name IN ('guliang', 'zhangguozhu', 'wangjiayu', 'shijing3');
        -----------------------------------------------------------------------------------------------------
        UPDATE sys_user
        SET is_super = 0,
            is_admin = 0
        WHERE login_name IN ('gaoyang', 'quhanning', 'baijinlong');
        -----------------------------------------------------------------------------------------------------
        UPDATE sys_user
        SET
            is_super = CASE login_name
                WHEN 'guliang' THEN 1
                WHEN 'zhangguozhu' THEN 1
                WHEN 'wangjiayu' THEN 1
                WHEN 'shijing3' THEN 0
            END,
            is_admin = CASE login_name
                WHEN 'guliang' THEN 1
                WHEN 'zhangguozhu' THEN 1
                WHEN 'wangjiayu' THEN 0
                WHEN 'shijing3' THEN 0
            END
        WHERE login_name IN ('guliang', 'zhangguozhu', 'wangjiayu', 'shijing3');
    c.迁移达梦
        http://127.0.0.1:3500/detail.html?id=2069354581074247680
        -----------------------------------------------------------------------------------------------------
        -- dept_name长度需要扩大 达梦是字节计算
        select * from sys_dept where dept_name like '%党委办公室(综合办公室、机关党委、团委)%';
        
        SELECT dept_name, CHAR_LENGTH(dept_name) FROM sys_dept WHERE dept_name LIKE '党委办公室(综合办公室、机关党委、团委)%';
        
        -- username长度需要扩大 达梦是字节计算 
        select * from sys_user where username = '云采联合农业科技有限公司';
        
        -- word长度需要扩大 达梦是字节计算 
        select * from sys_org where orgId = '10031' and word = '山西路桥第八工程有限公司总经理办公会会议纪要〔2025〕11号';
        
        -- fullname长度需要扩大 达梦是字节计算 
        select * from task_org_service where ID = '7000' and  fullname = '山西路桥建设集团有限公司长城1号旅游扶贫公路天镇段项目部,山西路桥建设集团有限公司长城1号旅游扶贫公路新荣段项目部,山西路桥建设集团有限公司长城1号旅游扶贫公路左云段项目部项目班子';

5 电子档案

5.1 [1]基本信息

01.常用信息1
    a.电子档案
        网址:https://ekp.sxlq.com:9000/sys/portal/page.jsp
        网址:https://www.sxlq.com:7011/cas/login?service=https%3A%2F%2Fekp.sxlq.com%3A9000%2F
        账号:wangzi
        密码:Wangzi198995.
        账号:wangzi
        密码:wz198995
        -----------------------------------------------------------------------------------------------------
        网址:http://1.1.1.3/ac_portal/default/pc.html
        账号:王子
        密码:123456
        -----------------------------------------------------------------------------------------------------
        网址:https://cnzdzx.com/
        说明:北京当代档案事务咨询中心
        -----------------------------------------------------------------------------------------------------
        晨毅:kiyotaka
        晨毅:18335981268
        权限:https://gitee.com/halavah/lq-server/invite_link?invite=14a6cbee3edd265d08c85cf9e46576ca183c0c6c4cdebf4bb7993663152babc51d91d49653059bfd03eac9232b9ccfc5
        权限:https://gitee.com/halavah/lq-web/invite_link?invite=14a6cbee3edd265d08c85cf9e46576ca41869e7745d9bfcab7993663152babc5e5420d53f8a44bff03eac9232b9ccfc5
        权限:https://gitee.com/halavah/dzda-claude/invite_link?invite=14a6cbee3edd265d08c85cf9e46576cad50feb937c0769c8b7993663152babc54202ebd44f0c073d03eac9232b9ccfc5
        权限:https://gitee.com/halavah/dzda-docs/invite_link?invite=14a6cbee3edd265d08c85cf9e46576ca9337e946ca5a4bb5b7993663152babc5d866502858fe471c03eac9232b9ccfc5
    b.项目环境
        1.mysql:公司内网,需要提供 表结构+表数据,当前生产环境的sql真实数据
        2.redis:公司内网,是否有 缓存预热的key 等固定信息
        3.minio:公司内网,是否有 预先防止的文件+图片
        4.ftp:公司内网,192.168.220.133,FTP下载目录,是否可以真实测试
        5.storage:公司内网,192.168.220.133,备份服务器+数据库服务器,是否可以真实测试
        6.backup:公司内网,192.168.220.131,容灾备份服务器,是否可以真实测试
    c.工作安排
        0.时间安排:每周五,给集团汇报
        1.本地还原生产环境:查看网站情况
        2.功能测试:按钮、报错
        3.压力测试
        4.按照接口文档,过代码
        5.一期、二期,下周三出一份:整体评估项目与否,按照页面来走清单
        6.目的:按照页面来走,验收系统
        7.清单:健康清单、页面清单、功能清单、压力清单
        8.表格:序号、合同清单、问题描述、佐证、影响业务
        9.漏洞:SQL注入、中间件版本与依赖、流程引擎、老版本pom漏洞

02.常用信息2
    a.说明    
        每周三,将档案系统相关需解决事宜清单发到群内
        每天下午5.00,在群内发一下当日电子档案进度情况
    b.20260713
        电子档案系统,20260713,日汇报情况
        今天完成:
        1.依赖漏洞清单,已梳理完毕
        2.账号信息清单,已梳理完毕
        3.九大业务流程,已初步梳理完毕
        明日安排:
        1.根据页面维度,以《代码审查清单.xlsx》为标准,为周三提供审查清单
        2.档案三大指标(四性检测、元数据提取、封装),对落地代码情况进行业务整理
    c.20260714  
        电子档案系统,20260714,日汇报情况
        今天完成:
        1.《依赖漏洞清单@20260714.pdf》,已梳理,并在【最新代码】中已升级解决文件中对应的问题
        2.《页面审查清单@20260714.xlsx》,所有页面内容已初步梳理完毕,待梳理问题
        3.《服务器权限申请单@20260714.xlsx》,已梳理完毕,待去集团驻场查看服务器项目代码运行情况
        4.对接集团,账号+问题复现+生产情况,待沟通集团服务器相关地址账号密码,沟通完毕之后,预计集团驻场2-3天处理服务器问题
        5.对接九方华科,最新代码情况,已沟通并解决
        明日安排:
        1.档案三大指标(四性检测、元数据提取、封装),进一步梳理文档
        2.后续在《页面审查清单@20260714.xlsx》,及时追踪并完善审查情况
    d.20260715
        电子档案系统,20260715,日汇报情况
        今天完成:
        1.《页面审查清单@20260715.xlsx》,根据【档案人员】描述,将核心问题能准确定位
        2.《电子档案运行问题@20260715.docx》,与【档案人员】梳理出了6类问题,其中3个容易解决(已初步定位),3个难的问题(查看生产情况后具体排查)
        3.对接集团,确认于【明日】驻场集团查看【代码运行情况】,来定位【3个难的问题】到底是什么原因导致
        4.对接档案科,将核心业务锁定到了【预归档、整理库、保存库、检索】这4个方向,记录了实际遇到的真实问题
        明日安排:
        1.驻场集团,排查服务器的代码运行情况
        2.解决6类中的【问题1:增强搜索】这项问题
    e.20260716
        电子档案系统,20260716,日汇报情况
        今天完成:
        1.《服务器运行排查情况@20260716.docx》,对服务器进行初步排查并审定结果
        2.《四性检测+元数据提取+封装@20260716.docx》,针对3个指标,已完成准确定位及梳理。
        3.已完成集团王学峰主任要求输出的《电子档案项目需求确认表@20260716.docx》
        4.对接电子档案开发商,已确定数据隔离问题:每次通过【集团堡垒机】进行远程维护代码,权限由【集团】掌握账号权限,无资料泄露风险
        明日安排:
        1.继续梳理系统功能模块相关问题
        2.解决集团王慧提出的部分系统运行bug问题
        3.向集团综办进行周汇报
    f.20260717
        电子档案系统,20260717,日汇报情况
        今天完成:
        1.《电子档案运行问题@20260717.docx》,与九方华科逐项逐点来沟通双方修复意见,并准确记录每项对方提供的修复思路和方法。
        2.《服务器运行排查情况@20260717.docx》,对服务器基本情况进行多次判别确认,方便后续接受生产运维,能够准确严谨地解决问题
        3.《四性检测@20260717.docx》,调研符合国家标准的正确指标,为后续沟通此核心问题提供理论依据,进而审批九方华科代码作为评判标准
        4.向集团综办进行周汇报
        周六日安排:
        1.对于剩余50%系统摸排清单,进行继续迭代补充,确保推进电子档案系统维护任务的顺利进行
        2.解决集团王慧提出的部分系统运行bug问题

03.常用信息3
    a.说明1
        1.本周运维工作整体,干了那些事,进度怎么样。说事不说技术。
        2.系统本身问题梳理,有几个解决了几个
        3.对接哪几个问题,王慧,解决哪几个,什么时候能解决,哪几个我们解决,几个九方解决
        4.四性检测,只写 【哪几个类,整个哪几个对,哪几个不对】,他是怎么回复的。元数据提取,封装就是没做。
        5.继续梳理,预计达到百分之多少,集团帮我协调哪几件事情。
        6.合同,哪几个是合同内,哪几个是合同外的;第1、4部分(已完成),第3部分(业务人员说制度已经有汇编)
    b.说明2
        a.本周运维工作整体概况
            作为开篇总起,简要概括本周核心工作方向、整体推进节奏与总体完成情况,让听众快速建立全局认知。
        b.系统本体问题梳理与整改进度
            对应你提到的「系统问题梳理进度与情况」,聚焦系统自身运行故障、功能缺陷、性能异常等问题的台账梳理、分类分布与整改完成情况。
        c.使用方对接问题处理进展
            对应你提到的「对接使用方问题梳理及数量、解决进度」,聚焦各使用单位/用户反馈的业务问题,
            涵盖问题受理数量统计、问题类型梳理、已解决/待解决进度闭环情况。
        d.核心档案功能专项问题推进
            对应你提到的「四性检测+元数据提取+封装问题及开发商答复」,
            作为专项模块单独呈现(属于电子档案系统核心业务能力,且涉及开发商协同),
            包含专项问题清单梳理、开发商对接沟通情况、官方答复与落地方案跟进。
        e.下周工作计划安排
            对应你提到的[下周工作进展」,明确下周核心工作项、优先级与预期达成目标。
        f.需集团协调支持事项
            针对跨部门协同、需开发商限期配合或需集团决策的卡点问题,集中提出协调诉求,提升问题推动效率。

5.2 [1]系统模块

01.系统功能
    a.问题清单
        整体健康清单
        代码审查清单
        依赖漏洞清单
        压力测试清单
    b.功能清单
        预归档管理:电子文件接收
        档案接收:电子文件接收、四性检测、收集整编、数据操作
        档案整理:审批入库、自动编号、组件、组卷、移动分类、打回整编
        档案利用:档案借阅、全文检索(可实现结构化数据的全文检索)、分词检索、分类检索、二维库房
        档案保存:档案上架、报表打印
        档案统计:门类统计、保管期限统计、年度统计
        档案鉴定:到期自动鉴定、销毁鉴定
        档案配置:全宗管理、类目管理、元数据管理、模板管理
        系统管理:用户管理、角色管理、部门管理、备份管理、日志管理、公告管理、回收站管理

02.前台门户
    a.公告
        公告:档案法、档案管理条例、档案管理办法等相关法律条文
    b.档案检索
        跨库检索
        收集库检索
        整理库检索
        保存库检索
        财务会计档案系统

03.后台门户
    a.首页
        切换不同公司
        档案总数
        档案借阅次数
        待办事项
        各保管期限梳理统计
        各门类下档案统计
    b.预归档管理
        四性检测
        在线接收
        离线接收
    c.档案接收
        待检查
        待接收
    d.档案整理
        档案整理
    e.档案保存
        档案保存
    f.档案鉴定
        待鉴定
        待审核
        已鉴定
        已销毁
    g.档案利用
        档案检索
        档案借阅
    h.档案统计
        档案统计
    i.日志公告
        公告管理
        三员日志
        日志管理
        档案备份
    j.档案配置
        全宗管理
        类目管理
        元数据管理
    k.系统管理
        角色管理
        岗位管理
        部门、人员管理
        三员配置
        四性检测
        档案配置
        备份配置
        消息设置
        回收站
        任务队列
    l.运维管理
        功能管理
        字典管理
        版本管理
    m.帮助中心
        帮助中心管理端
        帮助中心

5.3 [1]会议沟通

01.综合问题
    a.说明1
        电子档案,代码审查,出问题清单
        梳理清单,项目问题找出来,给施工方,后期公司运维
        你给我个时间,我研判一下;谈1个月,底线3周
        如果非要砍,那就按砍下,咱们最的据理争的结果来做
        3周是考虑到档案系统,审查范围比较大,要求有细粒度
    b.说明2
        四性检测(假的,重要)
        元数据提取(重要)
        封装
    c.说明3
        每周四:出一批问题清单
        当前情况:有合同、有功能清单
        表格:序号、问题描述、佐证、影响业务
        表格:序号、合同清单、问题描述、佐证、影响业务

02.电子档案问题反馈群
    a.说明1
        王-NO.9:学峰主任,您看看有什么工作的安排可以在这个群里通知
        忠怒:开会时候确定的两名相对规定的运维人员
        王-NO.9:主任,目前我们暂定的技术人员就是群里的这两位,他们现在正在分析这个系统,准备完善一下问题清单,随后交给九方华科进行解决,待问题解决后再确定最终的运维人员正式接手系统
        忠怒:什么时候可以确定问题清单?确定一个时间
        王-NO.9:现在技术人员昨天和今天都在分析这个系统,明天给您答复,完善问题清单需要的时间
        忠怒:好的,大家辛苦一下,抓紧时间,尽快了结
    b.说明2
        已解散

03.集团电子档案运维群
    a.说明1
        侯杰:你好,问题清单大概什么时候可以整理出来[抱拳]@芸熙 
    b.说明2
        第一个是功能问题:进入后台后,左侧的“归档”栏里可以看到各个单位上传的内容。但我想要第一时间精准地找到某个单位,目前这里没有搜索功能,所以我想加一个搜索功能。
        第二个是一公司的系统,你看到他打点开一公司,它这个大纲呢,在系统里面只显示了3~6,没有显示127和9。
        然后一公司这边儿,他上传的时候,按理说咱们管理类文件不是应该是按件来归档吗?它里面只显示的是散文件或者是卷,这个应该是系统的bug问题。
        对了一公司,这个还有他就是即便就是按错误的散文件卷这样子上传之后,但是他就找不到存储的地方。也就是他挂接后找不到存储地方。应该是他挂接后不是有一个存储或者是归档嘛,他就找不到这个功。
        第三个,咱们这个系统里面出现的第一个是西余高速什么高速,然后第二个它有个西余公司,这两个是不是有有一些那个重复呢?咱们里面只显示一个,因为它俩是一个单位。
        第二,第四个6公司推过来的OA里,从OA推过来的这些文件,按理按理说不是应该就显示的是他们本单位的发文嘛,可是推过来的全部都是集团的收文。
        新通公司进入咱们的这个归档的这一栏里面之后,你看一下左手边这一块儿,它是个空的。里面按理说各个单位都能显示出来。还有就是他们的分类大纲啥的都没有显示。
        德海租赁公司,他们的分类大纲也是只显示01和04。他们本单位这儿显示的是01和04,咱们集团的这个系统里面显示的是02和06。这他俩就是互不对应。你看,你们看一下。
    c.说明3
        这个群解散了,大家有问题在运维群沟通,王慧姐,问题清单到时候发到那个群里@芸熙

04.电子档案-内部协作
    a.说明
        因为周五开会的时候,冀总和苏总有提出来让你组织,所以,咱们自己内部过一下,知道以下这个事情
        代码审查,冀总让周六日,把问题全部找出来。一个月,没问题吧,这个时间周期,时间我们把控,不能再被领导们带着走了
        大家都清楚一下这个事情哈,明天开会,估计我们都要参会。
        按照集团要求,就是这两三天就要弄完,所以,我们一定把我们自己的时间边界掐死,不能被左右
    b.合同清单
        1.制度清单:有,不一定全面
        2.部署情况:集团不让部署到下发公司
        3.制度评审:路桥、交控、省档案局,评审
    c.汇报思路
        1.目标:一个月时间
        2.汇报:目前情况,怎么做
    d.存在问题
        1.业务丢失
        2.谁来维护代码
        3.谁来保证功能完整性
    e.要点问题
        1.中科智信彻底接手
        2.问题,梳理明白,明确职责
        3.同步最多一个月,缩短时间
        4.解决日常问题
        5.督促验收,走合同
    f.最小修改原则
        重要
        一般
        -----------------------------------------------------------------------------------------------------
        四性检测,不要动,是啥就是啥
        这个问题不要有自己想法,我们要汇报综办,你也别自己修复这个,这是大问题
        -----------------------------------------------------------------------------------------------------
        还是那个原则,小问题改,大问题不动。
        就像私人检测仪,就是那张图片,这些东西动都不要动。
        咱们没这个本事,就算有咱也不动。这就是他们验收最大的问题。
        -----------------------------------------------------------------------------------------------------
        我看你在群里说要修改四性检测元数据封装,你不用顾虑什么,把不把影响降最低,这不是你考虑的事情。
        你只需要这一块儿是要重中之重。我要跟集团汇报的,他就是个假玩意儿,就不能弄不能用,
        所以说咱别动,动了到时候问题都是我们的,所以说你咱咱也弄不了
        -----------------------------------------------------------------------------------------------------
        抽空看看这个行不行,这是我们之前财务系统用的需求确认单,每次按要求把修改的内容填进去,让双方签字
    g.核心原则
        1.数据隔断
        2.程序修改,要经过审批
        3.联系单
        4.合同,哪几个是合同内,哪几个是合同外的;第1、4部分(已完成),第3部分(业务人员说制度已经有汇编)
        -----------------------------------------------------------------------------------------------------
        如果是我们自己解决,就不用让他们知道了
        如果让对方解决的,再发给他们,发给他们需要解决的问题,我们讨论后再发
    h.电子档案需求确认表@20260716.docx
        要求做一个需求确认表,以后人家有啥要求,就通过这个表双方确认
        王雪峰明说需求需要双方确认签字,是嘛
        -----------------------------------------------------------------------------------------------------
        那就分块 ,不要混在一起
        一、需求点
        二、解决措施
        三、确认签署
        -----------------------------------------------------------------------------------------------------
        他倒是没说这么细,就要求提供一个需求确认表,我用的久写的
        我觉得应该双方都得签字吧
        -----------------------------------------------------------------------------------------------------
        需求内容:综办要求电子档案系统内的档案数据九方华科不得随意下载、变动、删除。
        解决办法:采用数据隔断方式,关闭九方华科在【集团堡垒机】的数据访问权限,只保留其【本地具备系统调试与问题解决能力】即可,堡垒机账号与权限均由【集团】统一掌握,全程受控、可审计,无资料泄露风险。
        需求内容:九方华科不得随意维护服务器代码等。
        解决办法:九方华科对系统程序的一切后续修改,须事先提交【中科智信】进行代码审查,经审批同意后方可实施部署;中科智信会定期检查对方是否有恶意修改行为,并及时反馈并解决。
        -----------------------------------------------------------------------------------------------------
        为保障电子档案管理系统的安全稳定运行与档案数据的保密性,沟通事项如下:
        1、数据隔断与运维方式:鉴于档案数据的保密性要求,需要及时关闭九方华科在【集团堡垒机】的数据访问权限,只保留其【本地具备系统调试与问题解决能力】即可,堡垒机账号与权限均由【集团】统一掌握,全程受控、可审计,无资料泄露风险。
        2、程序修改审批:九方华科对系统程序的一切后续修改,须事先提交【中科智信】进行代码审查,经审批同意后方可实施部署,该要求已与九方华科完成有效沟通。
        3、服务器查看协助:为准确掌握系统运行情况,需与【集团数字化管理部】开通【服务器权限】,协助查看服务器运行状态,配合开展后续运维情况。
    i.运维工作
        事由:为电子档案平台的运维工作,查看程序运行情况
        申请事项:查看相关服务器信息,如下:10.10.20.77 数据库;10.10.20.78 Redis;
        数据库备份;10.10.20.79 MinIO、FTP、存储备份;10.10.20.204 备份服务器
        -----------------------------------------------------------------------------------------------------
        1.给我们开通服务器之后是否能全面解决这7个问题
        2.能否直接抛开电子档案开发商,我们全面接手
        3.月底必须解决完,能解决多少是多少
        -----------------------------------------------------------------------------------------------------
        序号  优先级  问题类型  问题点   问题描述   是否解决    发现时间   解决日期
    j.关于探查电子档案服务器的账号开通函
        抬头:山西路桥公司综合办公室
        -----------------------------------------------------------------------------------------------------
        中科智信空间科技(山西)有限公司
            1.我司需要开通集团电子档案服务器
            2.原因:因工作运维需要
            3.开给中科智信公司的张瑜,张瑜在项目中担任运维工作
        -----------------------------------------------------------------------------------------------------
        保证点
            1.保证该开通账号给张瑜后,不随意向别人透漏和传播
            2.保证登录账号后,做到服务器上的资料的保密性、安全性

05.集团档案系统-交接沟通群
    a.说明
        a.说明 
            那我这边创建一个我们两个公司之间的内部沟通群,稍后辛苦把贵公司的技术也拉到群内。有问题直接发给我吧,我统一跟技术反馈。
            目前阶段我们公司的技术还在熟悉档案系统的代码,预计需要1个月时间,每周都会同步对应的内容给到贵公司,我们共同协作走完系统交接
            可以,那你每周把问题发给我就行
    b.对接集团
        a.对接王慧
            1.要一个王慧账号
            2.针对表格问题,需要打开问题复现
        b.对接综办
            1.给到电子档案系统服务器权限和账号密码
            数据中台数据同步情况
            对接政务情况
            文件存储情况
            代码运行情况
    c.对接九方
        a.提问
            您好,我们技术判定之后,
            1.我们拿到的不是最新的代码
            2.辛苦给到一个最新的代码,最好给一个git地址,方便我们双方能同步沟通代码情况
            3.交接的这段时间,暂时贵公司先不做代码方面的修改
            4.后续遇到业务问题,麻烦贵公司能辛苦解答一下
        b.回答
            代码全部看master就行,已知问题都已经修改提交了
        c.检测
            模块                 真假                  关键证据
            真实性检测(8项)     ✅真功能              长度/类型/范围/查重/文件存在性/页数对比/必填校验,有完整逻辑;record 表78万行数据;归档不通过返回508阻断
            完整性(5项)        ❌占位                代码里5项全部 setTest("true"),无任何逻辑
            可用性(4项)        ❌占位                4项全部写死true
            安全性(2项)        ❌占位                2项全部写死true
            元数据提取           ✅真功能              dom4j解析归档包内doc.xml/vol.xml,反射取值做检测
            封装(PackController) ❌死代码             路径写死d:/a/pack、内容写死、JDomUtil是demo模板、永远返回ERROR
            同事质疑的check方法   ⚠️bug属实,但归错了体系 list.get(0).getTypeId() 确实只取第一条——但这是规范性检查(体系A)的bug,不是四性检测(体系B)的问题
        d.20260714
            ALTER TABLE `work_order` ADD COLUMN `deptCode` varchar(100) NULL COMMENT '部门编号' AFTER `failCount`;
        e.20260716
            您好,我们这边想咨询一下,每次【电子档案系统】运维到【路桥集团】,
            你们是【集团】给咱们九方华科开网络权限【间接运维】,还是【直接有特殊网络渠道,直接运维】?
            就是一点,这个每次运维,是如何运维的?麻烦给我们简单介绍下
            -------------------------------------------------------------------------------------------------
            这个运维方式,麻烦告诉下我们。由于 档案的保密性,你们本地 能达到 调试 + 解决问题 能力 就可以,
            我方将关闭绕过网络授权直连、部署访问服务器的权限。您看下 还有哪里不解的地方。
            后续,我们这边确定了 修改哪几点,再联系您那边呢。
            -------------------------------------------------------------------------------------------------
            1.封装:测试类,模拟数据
            2.四性检测:跟业务系统(OA,质保),当时能提供的资料给不全,导致这个四类没做全
            3.安全性:没有技术手段,做成真的
            4.完整性、可用性:涉及业务系统改造,当时专家(清华大学)让九方做的方案
        f.20260717
            去年9月份,二级单位与分类信息,已经配置了公司信息
            OA,其实是对接【合同系统】的接口
            -------------------------------------------------------------------------------------------------
            您好,这个是集团王慧提出来的问题,我们梳理出来的,有几个不太会解决,您空了给技术看一下,明天简单沟通一下原因和解决办法 我们来处理
            之后可能我们运维过程中可能也会遇到解决不了的问题,也麻烦您这边叫上技术给我们说一个解决方案 感谢
            没事,技术看完明天给你们个回复

5.4 [2]生产情况

01.常用信息1
    a.说明
        20260714:最新代码+数据库
        20260715:dev是 mysql,lq是 mariadb
    b.luqiao-server
        master               2026/7/9 15:26         修改下载的附件名为id.pdf,防止附件名称过长
        BatchMounting        2025/11/24 18:03       生成脚本                                  已合并master,不关注
        featch-lzp           2026/1/22 13:38        前端代码提交                               已合并master,不关注
        opt                  2026/4/21 13:38        feat:目录树优化                           已合并master,不关注
        zjg                  2026/6/15 14:42        三方系统归档-添加路桥六公司逻辑               已合并master,不关注
        zjq_v3               2025/10/27 17:45       1.流程加签添加 2.角色岗位办理调整             相比较,【有 5 个 master 没有的独立提交】,看起来是2025年的代码,是不是已经处理过了
        -----------------------------------------------------------------------------------------------------
        | # | commit | 时间 | 作者 | 说明 |
        | --- | --- | --- | --- | --- |
        | 1 | 47f03fc | 2025-10-22 17:42 | zjq | 1.流程拒绝开发 2.档案利用-借阅列表按钮权限调整 |
        | 2 | 06b141e | 2025-10-24 17:50 | zjq | 流程调整 |
        | 3 | fc4f4f6 | 2025-10-25 17:52 | zjq | 流程角色、岗位调整 |
        | 4 | ff40529 | 2025-10-25 17:54 | zjq | 任务队列取消注释 |
        | 5 | eef3287 | 2025-10-27 17:45 | zjq | 1.流程加签添加 2.角色岗位办理调整 |
    c.luqiao-web
        master               2026/5/18 13:38        修改昔榆档案编号         最新主线
        warm-flow            2025/10/22 17:15       修改借阅流程             相比较,【有 5 个 master 没有的独立提交】,看起来是2025年的代码,是不是已经处理过了
        -----------------------------------------------------------------------------------------------------
        | # | commit | 时间 | 作者 | 说明 |
        | --- | --- | --- | --- | --- |
        | 1 | 0675e1e | 2025-10-10 | YangGe | 修复帮助中心点击确定无提示 |
        | 2 | c83bbd3 | 2025-10-11 | YangGe | 流程提交 |
        | 3 | ec94198 | 2025-10-11 | 悦耳 | 修改流程 |
        | 4 | 837d544 | 2025-10-14 | 悦耳 | 修改借阅流程 |
        | 5 | 347357c | 2025-10-22 | 悦耳 | 修改借阅流程 |

02.常用信息2
    a.公共情况
        序号  服务器用途                             IP/域名            端口      协议            配置项                     userName        alias           appName
        1     dmapi 数据中台                        10.10.20.99       8888      Dameng         dm.base                   daxt_api_user   online          daxt
    b.集团生产/联调环境:application-lq.yml
        序号  服务器用途                             IP/域名            端口      协议            配置项                      账号         密码
        1     业务数据库                            10.10.20.77       8066      MariaDB/MySQL  spring.datasource.url      root         TqJHol%Hf*ug
        2     Redis 缓存                           10.10.20.78       10072     Redis          spring.redis.host/port     无            WaAi)^Kx^bFJ
        3     MinIO 对象存储                        10.10.20.79       9001      HTTP           minio.endpoint             minioadmin   09VkE@$L
        4     CAS 认证中心                          www.sxlq.com      7011      HTTPS          cas.server-url-prefix
        5     本服务外网映射(CAS 回调)              220.194.141.75    7502      HTTP           cas.client-host-url
        6     FTP 文件下载                          10.10.20.79       21        FTPS            ftp.ip                    ftps         kjWt1s#SH5@
        7     storage 备份 SSH(MinIO 数据)         10.10.20.79       22        SSH(SFTP)      storage.ip                 dangan79     @v$nU#!7S#79
        8     storage.database 备份 SSH(数据库)    10.10.20.78       22        SSH(SFTP)      storage.database.ip        dangan78     @v$nU#!7S#78
        9     backup 备份服务器 SSH                 10.10.20.204      22         SSH(SFTP)      backup.ip                 dangan204    @v$nU#!7S#204
    c.开发本地环境:application-dev.yml
        序号  服务器用途                 IP/域名           端口     协议        配置项                   所属profile    是否核心 备注
        1     业务数据库                192.168.1.100     3306    MySQL      spring.datasource.url   dev            否       库名 daxt_lq
        2     Redis                   192.168.1.100     6379    Redis      spring.redis.host/port  dev          否       默认端口
        3     MinIO                   192.168.1.100     9000    HTTP       minio.endpoint          dev          否       http://192.168.1.100:9000/
        4     CAS 认证中心              www.sxlq.com      7011   HTTPS      cas.server-url-prefix   dev          否       与lq共用集团CAS
        5     FTP                     192.168.220.133    21     FTP        ftp.ip                  dev          否       下载目录 /home/ftptest/
        6     storage 备份 SSH         192.168.220.133    22     SSH(SFTP)  storage.ip              dev          否       与FTP同机
        7     storage.database SSH    192.168.220.133    22     SSH(SFTP)  storage.database.ip     dev          否       与FTP同机
        8     备份服务器 SSH            192.168.220.131    22     SSH(SFTP)  backup.ip               dev          否       独立机
        9     dmapi 数据中台            10.10.20.99        8888   Dameng     dm.base

03.常用信息3
    a.jar包情况
        确定是不是【2026/7/9】最新jar包
    b.
    
    
    c.
    
    
    d.
    
    
    
    

5.5 [2]指标情况

01.常用信息1
    a.四性检测
        "TestingController(规范性检查)中,check 方法仅处理第一条检测标准。
        方法接收多个检测标准ids,但仅通过 list.get(0).getTypeId()获取第一条标准的 typeId 进行检测,完全忽略后续检测标准,业务逻辑错误。"	

5.6 [2]代码情况

01.账号信息
    a.数据库
        库.password == MD5(前端RSA解密后的明文)
        测试时连续输错 3 次该账号会被锁,需改库 `loginNumber=0` 解锁
        -----------------------------------------------------------------------------------------------------
        58 张业务表(含 mock)+ 32 张工作流表(Activiti 25 + warm-flow 7),总计90张表
    b.部门分配
        一级部门       二级部门       三级部门       四级部门
                      集团总部       共享事务中心   信息技术部
                                    综合办公室
        XXX有限公司                  集团领导       综合处
                      ------------------------------------
                      XX一公司
                      XX二公司       培训中心      综合处、信息处
    c.账号信息1
        admin        admin
        wanghui8     123456         e10adc3949ba59abbe56e057f20f883e     王慧     集团人员
        maxl         123456         e10adc3949ba59abbe56e057f20f883e     马学利   测试人员
        feihan       123456         e10adc3949ba59abbe56e057f20f883e     孟锦     测试人员
        liangyj      123456         e10adc3949ba59abbe56e057f20f883e     梁雅君   测试人员
        wangmeng     空             空
    d.账号信息2
        所属部门                                  姓名     用户名        手机号        岗位                 角色
        XXX有限公司-集团总部-共享事务中心-信息技术部   闫佳宾    yanjiabin   13391515173   部门负责人            领导
        XXX有限公司-XX二公司-培训中心-综合处         韩旭君    hanxujun    13391515173     
        XXX有限公司-集团总部-综合办公室              王蒙      wangmeng    13391515173   部门负责人、办公室主任  领导             统一登录
        XXX有限公司-集团总部-综合办公室              王慧      wanghui8    13391515173   本单位档案员          超级管理员        统一登录+账号密码         同时拥有「接收审批 + 鉴定 + 鉴定审批」三类权限
        XXX有限公司-集团总部-集团领导-综合处          刘洋     liuyang      13391515173     

02.三方系统
    a.整体描述
        CAS 单点登录(sxlq.com)
        warm-flow 工作流(借阅审批等,与 Activiti 5.23 并存)
        ureport2 报表 + jxls / poi-tl 模板导出
        Apache CXF WebService(政务服务归档接收,路径 /receives/)
        tess4j OCR + Apache Tika 文件类型识别
        MinIO / AWS S3 对象存储、FTP/SFTP 文件传输
        dmapi SDK(sxlq 政务平台用户/组织架构单向同步)
    b.activiti:借阅申请
        借阅申请(门户 H5)
          → UseBorrowServiceImpl.startProcessInstanceByKey("borrow")  ← Activiti 启动流程
          → act_ru_task 写入待办
          → UserUseController 查 act_ru_task 显示待办列表
          → 审批人操作 → taskService.claim + complete  ← Activiti 流转
          → act_hi_* 记录历史
        -----------------------------------------------------------------------------------------------------
        门户 H5 借阅不是独立页面,它内嵌在 searchResult/index.vue(提交入口)和 personal_data/index.vue(我的借阅管理)里;
        门户借阅走 Activiti,后台借阅走 warm-flow——这就是双引擎共存的根源。
    c.dmapi:达梦数据库
        dm.properties 是 dmapi 业务 SDK 的专属配置文件,
        独立于 Spring 的 application*.yml 体系——由 dmapi-client.jar 内部的 PropertyUtil,
        用 ClassLoader.getResourceAsStream("dm.properties") 按固定文件名直接加载,
        不走 @PropertySource / @Value。它给 SDK 提供 dmapi 平台的连接地址、账号、应用标识,用于从集团政务平台拉取用户/组织数据。
    d.CXF:政务服务归档接收
        XXXXXX
    e.Tika:文件类型识别
        XXXXXX
    f.dmapi:sxlq 政务平台用户/组织架构单向同步
        XXXXXX

03.定时任务
    a.Spring @Scheduled 任务(8 个生效)
        #  类:行号                  方法                          cron / 间隔      人话            功能                                                                 风险
        1  ScheduledTask:45         autoIdent                     0 0 1 * * ?     每天 01:00      档案自动鉴定:扫保管期限到期(30年/10年)的档案,状态改"加入鉴定"           全表扫描 archives_doc,数据量大时慢
        2  ScheduledTask:133        fixedRate                     0 0 1 * * ?     每天 01:00      借阅到期处理:把已到期借阅(state=2 且超 endTime)改 state=3                 全表扫描 use_borrow_record
        3  ScheduledTask:150        clearTemp                     0 0 1 * * ?     每天 01:00      清理临时文件:删 TEMP_PATH 目录                                           依赖 Redis 的 TEMP_PATH 配置
        4  ScheduledTask:160        clearDataReceive              0 0 2 * * ?     每天 02:00      清理 WebService 临时文件:删 OSS_DIR/receive/                              同上
        5  ScheduledTask:171        clearDataTemp                 0 0 2 * * ?     每天 02:00      清理上传附件临时文件:删 OSS_DIR/temp/                                     同上
        6  DeptServiceImpl:39       syncDeptInfoNewScheduled      0 0 23 ? * SUN  每周日 23:00    组织同步:从 dmapi 拉组织数据(2864 条)落库                               见 11.dmapi 报告,内网不可达失败
        7  UserServiceImpl:579      syncUserInfoNewScheduled      0 30 23 ? * SUN 每周日 23:30    用户同步:从 dmapi 拉用户(22766 条)落库                                  同上
        8  ArchivesAcceptServiceImpl:96 syncZBClass              0 0 22 ? * SUN  每周日 22:00    质保资料分类树同步:同步"离隰"全宗的施工分类                               硬编码全宗名"离隰"
        9  MountTaskScheduler:87    pollTask                      fixedDelay=10000 每 10 秒      挂接任务轮询:从 mount_task_status 取等待中任务执行(全局并发上限 5)        高频任务,启动日志常见"全局并发已达5"
        注:1/2/3 三个任务的 cron 都是 0 0 1 * * ?(每天凌晨1点),会同时触发——ThreadPoolTaskScheduler 默认线程池大小 1(见 DaxtApplication:52-53),这三个会串行排队执行。
    b.SchedulingConfigurer 动态 cron 任务(2 个)
        #  类                          方法                                cron 来源                                                  功能                     风险
        10 DifferentBackupServiceImpl configureTasks:77 → addTriggerTask 数据库 archives_backup 表的 cron 字段(backupType=2)       差异备份:按数据库配置的 cron 执行增量备份  cron 从数据库读,改库即改时间
        11 FullBackupServiceImpl    configureTasks:81 → addTriggerTask 数据库 archives_backup 表的 cron 字段(backupType=1)+ cron 表 全量备份:按数据库配置的 cron 执行全量备份  同上,且差异备份依赖全量备份先跑
        这两个备份任务的 cron 表达式不在代码里也不在 yml 里,而在数据库 archives_backup 表——运维通过页面改数据库配置即可调整备份时间,无需改代码重启。

5.7 [3]维护情况

00.生产排查
    a.问题
        涉及2套OA系统,一新一旧
        电子会计档案管理系统、会计档案管理系统
    b.20260713
        本周核心:4核心功能正常,7个问题、四性检测
        上传按钮:一公司 / 六公司(右上角,推送)
        -----------------------------------------------------------------------------------------------------
        问题1:进入后台,需在首页增加搜索功能,达到精准找到某个单位功能。
        问题2:一公司在本单位系统里显示的分类大纲不全,只显示了3至6、8、10大类,没有显示1、2、7、9大类。
        问题3:一公司上传档案时,应选择按件归档,系统里只显示的是散文件或者是卷,无从选择。
        问题4:一公司挂接流程走完后,无法存储。
        问题5:昔榆公司名称需改为正规简称,上传数据双方系统不匹配。
        问题6:六公司由OA系统推送过来的发文显示成为集团的收文,所属性不对。
        问题7:德海租赁公司对方系统中分类大纲只显示出01、04类,集团系统中分类大纲显示为02-06类

01.业务梳理
    a.登录角色  
        超级管理员,李沐建、王慧
        普通角色:各个子公司
    b.借阅情况
        不使用了,只使用【统一流程】
    c.系统交互
        该系统:一公司、六公司、德海租赁公司
        上传下载:集团OA,并非【政务服务】
    d.前台门户
        公告:更换频率低,按照个人理解,这个是应该经常更换,维护起来的
        档案检索:使用频率少,借阅没有走这个系统,走的是流程门户
        财务会计档案系统:并联进来,无使用记录
    e.核心四步
        1.预归档:模版+目录,上传+挂载(图片压缩),选择【件/卷】      【这里面能修改】                   (挂接对了,只要挂接成功)
        2.整理库:往整理库(批量操作),放分类                      【这里面不能修改】
        3.保存库:往保存库(批量操作),放分类                      【只能简单名称修改,归档内容不能修改】
        4.检索:跨库检索、收集库检索、整理库检索、保存库检索
    f.收文与推文
        六公司:下属单位
        他们家推过来的【批办单】,叫做【山西路桥六公司公文批办单】,叫做【推文】
        现在集团批办单,叫做【山西路桥集团公文批办单】,叫做【收文】
    g.四性检测
        赵力夫,【没有拦截,推过来的,全能看到了】,推断为【检测严格度不高】
        四性检测,代表【必须有元数据.xml】,否则没有通过【四性检测】,就【没法】存在【在线接收/离线接收】
    h.扩展方向
        1.各公司【档案上传情况】,离线接收 -> 档案保存,后台查看【相关维护数据】,进行【考核单】
        2.继续培训,最好【操作手册】

02.20260715
    a.问题1:前台检索增强
        a.说明
            场景:待接收,找不到档案了,需要【跨库检索】,但是,某个档案出现【发文/收文,一个标题,出现六七行】,得找【档案号】才能真正查询到
            需求:不确定【时间】,才去【跨库搜索】
            跨库检索:超管,每个公司、全部时间都能检索
        b.解决
            详情表格,多一些【搜索条件+按钮】
    b.问题2:目录树增强搜索
        a.说明
            进入后台,需在首页增加搜索功能,达到精准找到某个单位功能。
        b.解决
            目录树:档案保存,类似的树管理这一块,到【公司】就可以了 
    c.问题3:双方系统,分类对应不上
        a.说明
            一公司在本单位系统里显示的分类大纲不全,只显示了3至6、8、10大类,没有显示1、2、7、9大类。
            一面有问题,超管没问题,一公司有问题
        b.解决
            档案接收 -> 待接受,(超管)收不到      
            一个公司 在 离线接收(一公司),上传哪个按键
            在线接收(目前跟OA,后期跟哪些系统打通,再去联通)
        c.备注
            一公司账号,上传哪个按键(其他人员,件、卷),正常显示是什么
        d.20260717
            权限没有及时更新
            本地调试:跟公司要账号,判断出问题,定位+复现,模拟账号
    d.问题4:无法按件,上次存储
        a.说明
            上传档案时,应选择按件归档,系统里只显示的是散文件或者是卷,无从选择。一公司挂接流程走完后,无法存储。页面在哪里?
        b.解决
            没有保存,上传就是有问题。卷、散文件、多个【件】,上传就是有问题
        c.备注
            只有 一公司 反馈了,图片,类目号是 错的,件号 四位数
        d.20260717
            使用不熟悉,疑似在线接收,导入模板,
            散文件,还没有 哪个卷里面,外面散着呢,就没有 档号/宗号
    e.问题5:对接有问题
        a.说明
            昔榆公司名称需改为正规简称,上传数据双方系统不匹配。
        b.解决
            昔榆公司(组织树 删掉),昔阳(3XXXX多)、超管(2990件)
        c.备注
            昔阳(技术反馈,更新不及时)
        d.20260717
            全宗管理,改动。修改组织账号
    f.问题6:归档混乱
        a.说明
            六公司由OA系统推送过来的发文显示成为集团的收文,所属性不对。
        b.解决
            内容正确不,收发文开头不对劲
            集团的 推的 文件 -> OA系统 -> 正常是 集团,显示 六公司/集团 都混合,都有问题
            六公司,OA系统,点击推送,【呈现】发现 2个菜单 混合
            右上角 归档按钮
        c.20260717
            历史遗留,OA公司 与 集团,ID混合导致,协调 起来
    g.问题7:双方系统,分类对应不上
        a.说明
            德海租赁公司对方系统中分类大纲只显示出01、04类,集团系统中分类大纲显示为02-06类
            两面有问题,超管有问题,一公司有问题
        b.解决
            档案接收 -> 待接受,(超管)收不到      
            一个公司 在 离线接收(一公司),上传哪个按键
            在线接收(目前跟OA,后期跟哪些系统打通,再去联通)
        c.20260717
            角色权限,不更新
    h.问题8:离线数据字段有空缺,类似字段空缺也要检查
        a.说明
            档案鉴定、已鉴定、已销毀 有字段为空。
            档案利用 的 档案检索。表格列,全宗号字段为空
        b.20260717
            20260717:2种原因,
            1.业务人员:就是没有值,做目录,如实记录日期情况
            2.这是一个BUG,具体怎么显示不清楚
            全宗号:机关单位 给 省档案号,【档案号】省 没有 开号,也就存入不进去,体验期
    i.问题9:档案备份,大量显示失败
        a.说明
            存储空间不足
        b.20260717
            定时任务(周期),存储空间不足。目前剩余1000GB,备份显示2000GB,放不进去。全量备份,与 集团 跟进 备份 周期
    j.问题10:版本依赖升级问题
        a.说明
            fastjson这种重大BUG
        b.20260717
            根据git私人仓库,给对方发放权限

6 智慧工会

6.1 服务框架

01.常见信息1
    a.微服务快速开发平台
        采用前后端分离的模式,前端 (基于 Vue、Element-UI)。
        后端采用SpringCloud全家桶,并同时对其基础组件做了高度的封装,单独出一个框架:LayerCore。
        LayerCore已推送至Nexus私服仓库,直接引入即可,减少了工程的臃肿,也可更注重于业务开发。
        集成Sentinel从流量控制、熔断降级、系统负载等多个维度保护服务的稳定性。
        注册中心、配置中心选型Nacos,为工程瘦身的同时加强各模块之间的联动。
        极简封装了SysServer底层,用更少的代码换来拓展性更强的ACL系统。
        整合OAuth2,实现了终端认证系统,可控制系统的token权限互相隔离,达到接口级别认证。
        整合Security,封装了Secure模块,采用JWT做Token认证,可拓展集成Redis等细颗粒度控制方案。
        集成Flowable工作流引擎,自定义页面,API接口开发,流程快速定制。
        封装RocketMq事件流消息,封装了RocketMq模块,高性能数据管道、流分析、数据集成、服务间削峰、解耦、异步。
        封装OSS高性能对象存储服务器。支持公有、私有化部署。海量、安全、低成本、高可靠的云存储服务,存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择。
        封装Elasticsearch组件、分布式、RESTful 风格的搜索和数据分析引擎,支持多服务聚合索引查询,提升查询响应等。
        整合Skywalking支持可视化告警、支持JVM监控、支持全局调用统计等等。
        fat jar -> docker -> k8s + jenkins部署架构。
        项目分包明确,规范微服务的开发模式,使包与包之间的分工清晰。
    b.服务工程结构
        LayerService
        ├── layer-client -- Feign服务提供
        ├── layer-common -- 常用工具封装包
        ├── src -- 业务服务
        ├    ├── application -- 应用层
        ├    ├── controller -- 控制器
        ├    ├── engine -- 原生层
        ├    ├── ├── components -- 组件层
        ├    ├── ├── ├── redis -- 缓存层
        ├    ├── ├── ├── mq -- 消息层
        ├    ├── ├── domain -- 领域层
        ├    ├── ├── ├── beans -- 内部包装
        ├    ├── ├── ├── constants -- 领域常量
        ├    ├── ├── ├── convertot -- 转换器
        ├    ├── ├── ├── core -- 领域值对象
        ├    ├── ├── ├── enums -- 领域枚举
        ├    ├── ├── ├── service -- 细粒度逻辑
        ├    ├── ├── mapper -- ORM映射层
        ├    ├── ├── service -- 粗粒度逻辑
        ├    ├── ├── utils -- 工具类
        ├    ├── feign -- Feign实现
        ├    ├── infrastructure -- 组件层
        ├    ├── ├── application -- 组件应用层
        ├    ├── ├── exception -- 异常包装
        ├    ├── ├── listener -- 消息监听
        ├    ├── interfaces -- 抽象层
        ├    ├── ├── adaptors -- 适配器
        ├    ├── ├── service -- 抽象逻辑
        └──  └──support -- 远程支持转换
    c.在线演示
        Kibana-数据可视化和挖掘工具      http://192.168.1.253:5601/app/kibana
        Jenkins-CICD                    http://192.168.1.253:8080/login
        Nexus-私服依赖库                 http://192.168.1.253:8081
        SonarQube 代码缺陷检测           http://192.168.1.253:9000
        Rocketmq 消息可视化              http://192.168.1.253:18080
        Nacos 服务发现和配置中心         http://192.168.1.253:8848/nacos/index.html

02.常用信息2
    a.父坐标
        <!-- 父根坐标 -->
        <parent>
            <groupId>com.zkzx.layer</groupId>
            <artifactId>layer-parent</artifactId>
            <version>1.6.0</version>
            <relativePath/>
        </parent>
    b.子坐标
        <!-- 核心启动模块 -->
        <dependency>
            <groupId>com.zkzx.layer</groupId>
            <artifactId>layer-core-boot</artifactId>
            <version>${layer.core.version}</version>
        </dependency>
        <!-- 安全认证模块 -->
        <dependency>
            <groupId>com.zkzx.layer</groupId>
            <artifactId>layer-core-secure</artifactId>
            <version>${layer.core.version}</version>
        </dependency>
        <!-- 缓存封装模块 -->
        <dependency>
            <groupId>com.zkzx.layer</groupId>
            <artifactId>layer-core-cache</artifactId>
            <version>${layer.core.version}</version>
        </dependency>
        <!-- 系统服务客户端 -->
        <dependency>
            <groupId>com.zkzx.layer</groupId>
            <artifactId>sys-client</artifactId>
            <version>${layer.core.version}</version>
        </dependency>
        <!-- MyBaits映射 -->
        <dependency>
            <groupId>com.zkzx.layer</groupId>
            <artifactId>layer-core-mybatis</artifactId>
            <version>${layer.core.version}</version>
        </dependency>

03.常用信息3
    a.位置
        layer-core,1.6.1
        http://192.168.1.249:8081/#browse/browse:maven-releases:cn
    b.com.zkzx.fam
        auth-service
        fam-client
        fam-common
        fam-parent
        fam-service
        gateway
        sys-client
        sys-common
        sys-service
    c.com.zkzx.labour
        auth-service
        gateway
        labour-client
        labour-common
        labour-parent
        labour-service
        netty-client
        netty-common
        netty-service
        sys-client
        sys-common
        sys-service
    d.com.zkzx.layer
        building-manage
        layer-core
        layer-core-boot
        layer-core-cache
        layer-core-cloud
        layer-core-elasticsearch
        layer-core-flowable
        layer-core-gen
        layer-core-knife4j
        layer-core-launch
        layer-core-log
        layer-core-monomer
        layer-core-monomer-com
        layer-core-mybatis
        layer-core-nacos
        layer-core-oss
        layer-core-poi
        layer-core-redis
        layer-core-rocketmq
        layer-core-search
        layer-core-secure
        layer-core-sentinel
        layer-core-tool
        layer-core-transaction
        layer-monomer
        layer-parent
        sys-client
        sys-common
        sys-service
    e.com.zkzx.purchase
        bidopening-client
        bidopening-common
        bidopening-server
        cloudbidopening-client
        cloudbidopening-common
        cloudbidopening-server
        clouduploadvideo-client
        log-client
        log-common
        mall-client
        mall-common
        mobile-client
        mobile-common
        mobile-server
        parent-common
        purchase-client
        purchase-common
        purchase-parent
        purchase-server
        report-server
        sys-client
        sys-common
        sys-server
        workflow-client
        workflow-common
        workflow-server
    f.com.zkzx.ygy
        ygy-common
        ygy-gateway
        ygy-parent
        ygy-service
        ygy-service-common
        ygy-sys-client
        ygy-sys-common
        ygy-sys-service

6.2 对接权限:auth

01.图例
    a.关系图
                                      sys_menu (菜单表)
                                      [menu_id, menu_name, parent_id, ...]
                                         ↑              ↑
                                         | sys_role_menu | sys_acl_module_menu
                                         |              ↑
                                         |         sys_acl_module
                                         |         (权限模块)
                                         |
        sys_dept (部门表)            sys_role (角色表)
        [dept_id, dept_name,         [role_id, role_name,
         parent_id, ...]              role_key, data_scope, ...]
           ↑          ↑                ↑              ↑
           |          |  sys_role_dept |              |
           |          +----------------+              |
           |                                          |
           | sys_user_dept              sys_user_role  |
           |                                          |
           ↓                                          ↓
           +----------→  sys_user (用户表)  ←---------+
                         [user_id, login_name,
                          password, username, ...]
    b.关联关系说明
        关联表                关系               说明
        sys_user_role        用户 ↔ 角色         多对多,一个用户可拥有多个角色
        sys_role_menu        角色 ↔ 菜单         多对多,一个角色可分配多个菜单权限
        sys_user_dept        用户 ↔ 部门         多对多,支持一人多部门
        sys_role_dept        角色 ↔ 部门         多对多,角色级数据权限控制
        sys_acl_module_menu  权限模块 ↔ 菜单      多对多,扩展权限模块映射
        sys_dept.parent_id   部门 → 部门         自引用树形结构
        sys_menu.parent_id   菜单 → 菜单         自引用树形结构
    c.权限链路1
        用户(User) --分配角色-→ 角色(Role) --授予菜单-→ 菜单(Menu)
           |                       |
           +----- 归属部门 --------+----- 数据权限(部门) ---→ 部门(Dept)
    d.权限链路2
                          职位表(Postion)
                              ↓
        三方表(Third)<---> 用户(User) <---> 角色(Role) <---> 菜单(Menu)
                              ↑                ↑             ↑
                          部门(Depart)------------------------

02.表设计
    a.用户表 (sys_user)
        a.说明
            存储系统用户的基础信息、档案资料及状态
        b.字段
            user_id                 BIGINT          --PK  用户ID(主键)
            dept_id                 BIGINT          --FK  部门ID,关联部门表
            login_name              VARCHAR         --UQ  登录账号,系统唯一标识
            password                VARCHAR         --    密码,加密存储
            username                VARCHAR         --    用户昵称
            user_type               VARCHAR         --    用户类型(00:系统用户)
            email                   VARCHAR         --    用户邮箱
            phone                   VARCHAR         --    手机号码
            sex                     TINYINT         --    性别(1:男 2:女)
            avatar                  VARCHAR         --    头像路径
            age                     INT             --    年龄
            birthday                DATE            --    出生日期
            status                  TINYINT         --    帐号状态(1:正常 2:停用)
            is_admin                TINYINT         --    是否管理员
            is_super                TINYINT         --    是否超级管理员
            is_revise               TINYINT         --    首次登录强制修改(0:是 1:否)
            per_card_id             VARCHAR         --    身份证号
            -------------------------------------------------------------------------------------------------
            education               VARCHAR         --    学历
            user_degree             VARCHAR         --    学位
            major                   VARCHAR         --    专业
            skills                  VARCHAR         --    技能特长
            certificates            VARCHAR         --    资质证书
            company                 VARCHAR         --    所属单位
            awards                  TEXT            --    获奖情况
            work_experience         TEXT            --    个人工作简历
            talent_type             VARCHAR         --    用户类型(人才)
            hobby                   VARCHAR         --    兴趣爱好
            reading_preference      VARCHAR         --    阅读偏好
            writing_strength        VARCHAR         --    文体特长
            join_date               DATETIME        --    入会时间
            membership_status       TINYINT         --    会员状态(1:正常 2:停用 3:待入会)
            -------------------------------------------------------------------------------------------------
            login_ip                VARCHAR         --    最后登录IP
            login_date              DATETIME        --    最后登录时间
            order_num               INT             --    排序号
            create_by               VARCHAR         --    创建者
            create_time             DATETIME        --    创建时间
            update_by               VARCHAR         --    更新者
            update_time             DATETIME        --    更新时间
            remark                  VARCHAR         --    备注
            is_deleted              TINYINT         --    逻辑删除标记
        c.模拟数据
            示例数据(user_id | login_name | username | sex | status | is_admin | is_super | membership_status):
            ┌──────────────────────┬──────────┬─────────┬─────┬────┬──────┬───────┬────┐
            │ 1                    │ admin    │ 管理员  │ 1   │ 0  │ 1    │ 1     │ 1  │
            │ 2025090823314500006  │ user_01  │ 测试员A │ 2   │ 0  │ NULL │ NULL  │ 2  │
            │ 2025090823314500007  │ user_02  │ 测试员B │ 1   │ 0  │ NULL │ NULL  │ 2  │
            │ 2025090823314500008  │ user_03  │ 测试员C │ 1   │ 0  │ NULL │ NULL  │ 2  │
            │ 2025090823314500009  │ user_04  │ 测试员D │ 1   │ 0  │ NULL │ NULL  │ 2  │
            │ 2025090823314500010  │ user_05  │ 测试员E │ 1   │ 0  │ NULL │ NULL  │ 2  │
            └──────────────────────┴──────────┴─────────┴─────┴────┴──────┴───────┴────┘
    b.角色表 (sys_role)
        a.说明
            定义系统角色及其数据权限范围
        b.字段
            role_id                 BIGINT          --PK  角色ID(主键)
            role_name               VARCHAR         --    角色名称
            role_key                VARCHAR         --    角色权限字符串(如 'admin', 'common')
            role_sort               INT             --    显示顺序
            status                  TINYINT         --    角色状态(0:正常 1:停用)
            data_scope              VARCHAR         --    数据范围(全部/本部门/本人)
            tag                     VARCHAR         --    角色标记
            category                VARCHAR         --    类别(ROLE, USER, DEPT)
            create_by               VARCHAR         --    创建者
            create_time             DATETIME        --    创建时间
            update_by               VARCHAR         --    更新者
            update_time             DATETIME        --    更新时间
            remark                  VARCHAR         --    备注
            is_deleted              TINYINT         --    逻辑删除标记
        c.模拟数据
            示例数据(role_id | role_name | role_key | role_sort | status | data_scope | is_deleted):
            ┌──────────────────────┬──────────┬───────────┬──────┬────┬────┬────┐
            │ 1957981916791595009  │ 员工     │ ROLE_USER │ 1    │ 0  │ 4  │ 0  │
            │ 1957981991102078978  │ 副部长   │           │ 2    │ 0  │ 4  │ 0  │
            │ 1957982028880175106  │ 部长     │           │ 3    │ 0  │ 4  │ 0  │
            │ 1957982081195728897  │ 分管领导 │           │ 4    │ 0  │ 4  │ 0  │
            │ 1957982123214266370  │ 领导     │           │ 5    │ 0  │ 4  │ 0  │
            │ 1978652047028871170  │ 游客     │ VISITOR   │ NULL │ 0  │ 3  │ 1  │
            └──────────────────────┴──────────┴───────────┴──────┴────┴────┴────┘
    c.菜单表 (sys_menu)
        a.说明
            管理系统路由、页面及按钮权限,树形结构(parent_id + ancestors)
        b.字段
            menu_id                 BIGINT          --PK  菜单ID(主键)
            menu_name               VARCHAR         --    菜单名称
            parent_id               BIGINT          --FK  父菜单ID(0为顶级)
            ancestors               VARCHAR         --    祖级列表(如 0,1,2)
            order_num               INT             --    显示顺序
            url                     VARCHAR         --    请求地址/路由路径
            target                  VARCHAR         --    打开方式(_blank, _self)
            menu_type               CHAR            --    菜单类型(M:目录 C:菜单 F:按钮)
            visible                 TINYINT         --    菜单可见性(0:显示 1:隐藏)
            status                  TINYINT         --    状态(0:启用 1:禁用)
            view_perms              VARCHAR         --    页面权限标识
            btn_perm                VARCHAR         --    按钮权限
            icon                    VARCHAR         --    菜单图标
            create_by               VARCHAR         --    创建者
            create_time             DATETIME        --    创建时间
            update_by               VARCHAR         --    更新者
            update_time             DATETIME        --    更新时间
            remark                  VARCHAR         --    备注
        c.模拟数据
            示例数据(menu_id | menu_name | parent_id | type | visible | status | btn_perm | ancestors):
            ┌──────────────────────┬──────────────┬──────────────────────┬─────┬───┬───┬──────┬─────────────────────────┐
            │ 1527223905157287937  │ 工作台       │ 0                    │ M   │ 0 │ 0 │      │ 0                       │
            │ 1544133614929387521  │ 系统管理     │ 0                    │ M   │ 0 │ 0 │      │                         │
            │ 1544871137888616450  │ 组织架构     │ 1900420753829920768  │ C   │ 0 │ 0 │      │ 0,1888...,1900...       │
            │ 1545318477049008129  │ 角色管理     │ 1544133614929387521  │ C   │ 0 │ 0 │      │ ,1544133614929387521    │
            │ 1544871693961052162  │ 菜单管理     │ 1544133614929387521  │ C   │ 0 │ 0 │      │ ,1544133614929387521    │
            │ 1844948141704052736  │ 菜单管理     │ 1544871693961052162  │ Z   │ 0 │ 0 │ U    │ 0,1544133614929387521   │
            │ 1844948141704052737  │ 菜单管理     │ 1544871693961052162  │ Z   │ 0 │ 0 │ D    │ 0,1544133614929387521   │
            │ 1844948141704052738  │ 菜单管理     │ 1544871693961052162  │ Z   │ 0 │ 0 │ A    │ 0,1544133614929387521   │
            └──────────────────────┴──────────────┴──────────────────────┴─────┴───┴───┴──────┴─────────────────────────┘
    d.部门表 (sys_dept)
        a.说明
            定义企业组织结构树,树形结构(parent_id + ancestors)
        b.字段
            dept_id                 BIGINT          --PK  部门ID(主键)
            parent_id               BIGINT          --FK  父部门ID(0为顶级)
            ancestors               VARCHAR         --    祖级列表(如 0,1,2)
            dept_name               VARCHAR         --    部门名称
            dept_alias_name         VARCHAR         --    部门简称
            short_name              VARCHAR         --    短名称
            code                    VARCHAR         --    部门编码
            order_num               INT             --    显示顺序
            status                  TINYINT         --    状态(0:正常 1:停用)
            -------------------------------------------------------------------------------------------------
            sys_org_type            VARCHAR         --    组织类型
            approval_mode           TINYINT         --    审批模式(0:默认 1:普通)
            valid_date              DATE            --    有效期
            warning_days            INT             --    提醒天数
            description             VARCHAR         --    描述
            -------------------------------------------------------------------------------------------------
            create_by               VARCHAR         --    创建人
            create_time             DATETIME        --    创建时间
            update_by               VARCHAR         --    更新人
            update_time             DATETIME        --    更新时间
            is_deleted              TINYINT         --    逻辑删除标记
        c.模拟数据
            示例数据(dept_id | parent_id | dept_name | order_num | status | ancestors | code | sys_org_type):
            ┌──────────────────────┬───────────────────────┬────────────────────┬───┬───┬─────────────────────────────┬────────────┬──────┐
            │ 1                    │ 0                     │ 三晋集团           │ 0 │ 0 │ 0                           │ LQ00000000 │ NULL │
            │ 2008744808133156865  │ 1                     │ 集团总部           │ 0 │ 0 │ 0,1                         │ LQ01000000 │ NULL │
            │ 2008745258483965954  │ 2008744808133156865   │ 集团总部工会       │ 0 │ 0 │ 0,1,2008744808133156865     │ NULL       │ 3    │
            │ 2008745393502806017  │ 1                     │ 基建施工板块       │ 0 │ 0 │ 0,1                         │ NULL       │ NULL │
            │ 2008746003086172162  │ 2008745393502806017   │ 一公司工会委员会   │ 0 │ 0 │ 0,1,2008745393502806017     │ LQ02000000 │ 1    │
            │ 2008747682657460225  │ 1                     │ 路域经济版块       │ 0 │ 0 │ 0,1                         │ NULL       │ NULL │
            └──────────────────────┴───────────────────────┴────────────────────┴───┴───┴─────────────────────────────┴────────────┴──────┘
    e.关联表
        a.用户-角色关联表 (sys_user_role)
            id                      BIGINT          --PK  主键ID
            user_id                 BIGINT          --FK  用户ID
            role_id                 BIGINT          --FK  角色ID
        b.用户-部门关联表 (sys_user_dept)
            id                      BIGINT          --PK  主键ID
            user_id                 BIGINT          --FK  用户ID
            dept_id                 BIGINT          --FK  部门ID
        c.角色-菜单关联表 (sys_role_menu)
            id                      BIGINT          --PK  主键ID
            role_id                 BIGINT          --FK  角色ID
            menu_id                 BIGINT          --FK  菜单ID
        d.角色-部门关联表 (sys_role_dept)
            id                      BIGINT          --PK  主键ID
            role_id                 BIGINT          --FK  角色ID
            dept_id                 BIGINT          --FK  部门ID
            -------------------------------------------------------------------------------------------------
            示例数据(role_id | dept_id | id):
            ┌──────────────────────┬──────────┬──────────────────────┐
            │ 1957982028880175106  │ 1        │ 1957982029010198530  │  -- 部长 → 三晋集团
            │ 1957982123214266370  │ 1        │ 1957982123277180929  │  -- 领导 → 三晋集团
            │ 1957982081195728897  │ 1        │ 1957982147461537793  │  -- 分管领导 → 三晋集团
            │ 1957981991102078978  │ 1        │ 1978639006866354178  │  -- 副部长 → 三晋集团
            │ 1957981916791595009  │ 1        │ 1978646671453675521  │  -- 员工 → 三晋集团
            │ 1978652047028871170  │ 1        │ 2010611414593404929  │  -- 游客 → 三晋集团
            └──────────────────────┴──────────┴──────────────────────┘
        e.权限模块-菜单关联表 (sys_acl_module_menu)
            id                      BIGINT          --PK  主键ID
            acl_module_id           BIGINT          --FK  权限模块ID
            menu_id                 BIGINT          --FK  菜单ID
        f.用户-角色-部门 三方关联表 (sys_user_role_dept)
            user_id                 BIGINT      NOT NULL                 --FK  用户ID
            role_id                 BIGINT      NOT NULL                 --FK  角色ID
            dept_id                 BIGINT      NOT NULL                 --FK  部门ID
            post_id                 BIGINT      NULL                     --FK  岗位ID
            id                      BIGINT      NOT NULL                 --PK  主键ID
            flag                    TINYINT     NOT NULL DEFAULT 0       --    是否默认值(0:否 1:是)
            status                  TINYINT     NOT NULL DEFAULT 0       --    状态(0:在用 1:停用)
            creation_date           DATETIME    NULL                     --    创建日期
            effective_date          DATETIME    NULL                     --    生效日期
            expiration_date         DATE        NULL                     --    到期日期
            alert_date              DATE        NULL                     --    预警日期
            change_date             DATETIME    NULL                     --    更新时间(转出时间)
            update_date             DATETIME    NULL                     --    更新日期(会员迁出时间)
            -------------------------------------------------------------------------------------------------
            示例数据(user_id | role_id→角色 | dept_id | flag | status | creation_date):
            ┌──────────────────────┬──────────────────────┬──────────────────────┬────┬───┬─────────────────────┐
            │ 2025090509115200014  │ 1957981916791595009  │ 2008748067342245890  │ 0  │ 0 │ 2026-01-07 14:35:54 │  -- 员工
            │ 2025090509115200004  │ 1957982123214266370  │ 2008748067342245890  │ 0  │ 0 │ 2026-01-07 14:37:09 │  -- 领导
            │ 2025090509115200013  │ 1957982028880175106  │ 2008748067342245890  │ 0  │ 0 │ 2026-01-07 14:37:37 │  -- 部长
            │ 2025090509115200002  │ 1957982028880175106  │ 2008748067342245890  │ 0  │ 0 │ 2026-01-07 14:38:31 │  -- 部长
            │ 2025090509115200010  │ 1957981916791595009  │ 2008748067342245890  │ 0  │ 0 │ 2026-01-07 14:41:14 │  -- 员工
            │ 2025090509115200012  │ 1957981916791595009  │ 2008748067342245890  │ 0  │ 0 │ 2026-01-12 16:10:34 │  -- 员工
            └──────────────────────┴──────────────────────┴──────────────────────┴────┴───┴─────────────────────┘
        g.三委角色组织关联表 (sys_user_role_dept_agent)
            id                      BIGINT      NOT NULL                 --PK  主键ID
            user_id                 BIGINT      NOT NULL                 --FK  用户ID
            role_id                 BIGINT      NOT NULL                 --FK  角色ID
            dept_id                 BIGINT      NOT NULL                 --FK  部门ID
            post_id                 BIGINT      NULL                     --FK  岗位ID
            flag                    TINYINT(1)  NOT NULL DEFAULT 0       --    是否默认值(0:否 1:是)
            status                  TINYINT(1)  NOT NULL DEFAULT 0       --    状态(0:在用 1:停用)
            creation_date           DATETIME    NULL                     --    创建日期
            update_date             DATETIME    NULL                     --    更新日期(会员迁出时间)
            -------------------------------------------------------------------------------------------------
            示例数据(id | user_id | role_id→角色 | dept_id→部门):
            ┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐
            │ 2010549747790508033  │ 2025090509115200002  │ 1957981916791595009  │ 2008748433010057218  │  -- 员工 → 女职工委员会
            └──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┘
    f.权限模块表 (sys_acl_module)
        a.权限模块来源映射,标记来源实体类型
            权限模块来源映射,标记来源实体类型
            -------------------------------------------------------------------------------------------------
            source_id               BIGINT      NOT NULL                 --FK  来源ID(用户/角色/部门ID)
            acl_module_id           BIGINT      NOT NULL                 --PK  权限模块ID
            source_module           VARCHAR(10) NOT NULL                 --    来源模块(USER / ROLE / DEPT)
            status                  SMALLINT    NOT NULL                 --    状态
            -------------------------------------------------------------------------------------------------
            示例数据(source_id | acl_module_id | source_module | status):
            ┌──────────────────────┬──────────────────────┬───────┬────┐
            │ 1545232488251138049  │ 1545325401832329218  │ USER  │ 0  │
            │ 1545324702696378369  │ 1546321092813733890  │ DEPT  │ 0  │
            │ 1546453192409817089  │ 1546453331266445313  │ ROLE  │ 0  │
            │ 1546450193859981314  │ 1546663026669330433  │ ROLE  │ 0  │
            │ 1527102251278192641  │ 1546692703790202882  │ DEPT  │ 0  │
            │ 1957649930439230977  │ 1957650820937863169  │ ROLE  │ 0  │
            └──────────────────────┴──────────────────────┴───────┴────┘
        b.权限模块-菜单关联表 (sys_acl_module_menu)
            扩展的权限模块与菜单的映射关系
            -------------------------------------------------------------------------------------------------
            acl_module_id           BIGINT      NOT NULL                 --FK  权限模块ID
            menu_id                 BIGINT      NOT NULL                 --FK  菜单ID
            id                      BIGINT      NOT NULL                 --PK  主键ID
            -------------------------------------------------------------------------------------------------
            示例数据(acl_module_id | menu_id | id):
            ┌──────────────────────┬──────────────────────┬──────────────────────┐
            │ 1958460326392975361  │ 1893605403258781696  │ 2008791049969729537  │
            │ 1958460326392975361  │ 1845004101724766208  │ 2008791049969729538  │
            │ 1958460326392975361  │ 1845004101724766209  │ 2008791049969729539  │
            │ 1958460326392975361  │ 1845031967645073408  │ 2008791049969729541  │
            │ 1957987697322647553  │ 1893140007639580672  │ 2013827359558291457  │
            │ 1957987539012837377  │ 1893230670741766145  │ 2013842841908731906  │
            └──────────────────────┴──────────────────────┴──────────────────────┘
    g.枚举值速查
        a.通用
            is_deleted              0:未删除          1:已删除
        b.用户 (sys_user)
            status                  1:正常            2:停用
            sex                     1:男              2:女
            is_revise               0:强制修改        1:正常
            membership_status       1:正常            2:停用            3:待入会
        c.角色 (sys_role)
            status                  0:正常            1:停用
            category                ROLE              USER              DEPT
        d.菜单 (sys_menu)
            menu_type               M:目录            C:菜单             F:按钮          Z:操作权限
            visible                 0:显示            1:隐藏
            status                  0:启用            1:禁用
            btn_perm                U:更新            D:删除             A:新增
        e.部门 (sys_dept)
            status                  0:正常            1:停用
            approval_mode           0:默认            1:普通
        f.三方关联表 (sys_user_role_dept / sys_user_role_dept_agent)
            flag                    0:否                    1:是(默认值)
            status                  0:在用                  1:停用

6.3 对接流程:flow

01.架构设计:数据模型设计
    a.TaskApprovalProcess(流程定义表)
        a.基本信息
            表名:task_approval_process。
            作用:定义审批流程的基本信息,包括流程名称、适用业务类型、所属部门等。
        b.字段设计
            id:BIGINT类型,主键ID,约束为PK且AUTO_INCREMENT。
            process_name:VARCHAR(100)类型,流程名称,约束为NOT NULL,例如"工服申领审批"。
            name:VARCHAR(100)类型,适用业务类型名称,约束为NOT NULL。
            code:VARCHAR(50)类型,业务类型编码,约束为NOT NULL、UNIQUE,例如"uniform_claim"。
            description:VARCHAR(500)类型,流程描述,约束为NULL。
            status:VARCHAR(10)类型,状态,约束为NOT NULL,0代表启用,1代表禁用。
            dept_id:BIGINT类型,部门ID,约束为NULL,为空表示通用流程。
            dept_name:VARCHAR(100)类型,部门名称,约束为NULL。
            create_time:DATETIME类型,创建时间,约束为NOT NULL,默认当前时间。
        c.关键设计点
            code字段:业务类型唯一标识,用于业务系统调用时指定流程。
            dept_id字段:支持按部门定制流程,为空表示通用流程(所有部门可用),不为空表示特定部门的专属流程。
            流程优先级:查询时优先匹配部门专属流程,无则使用通用流程。
        d.数据示例
            -- 通用流程
            INSERT INTO task_approval_process (process_name, name, code, status, dept_id)
            VALUES ('工服申领审批', '工服申领', 'uniform_claim', '0', NULL);

            -- 部门专属流程
            INSERT INTO task_approval_process (process_name, name, code, status, dept_id, dept_name)
            VALUES ('人力资源部-工服申领审批', '工服申领', 'uniform_claim', '0', 1001, '人力资源部');
    b.TaskApprovalNode(节点配置表)
        a.基本信息
            表名:task_approval_node。
            作用:定义审批流程中的各个节点,包括节点顺序、审批人类型、审批人配置等。
        b.字段设计
            node_id:BIGINT类型,节点ID,约束为PK且AUTO_INCREMENT。
            process_id:BIGINT类型,流程ID,约束为NOT NULL,外键关联task_approval_process.id。
            node_name:VARCHAR(50)类型,节点名称,约束为NOT NULL,例如"部门审批"。
            approverifier_type:VARCHAR(20)类型,审批人类型,约束为NOT NULL,可选值为USER或ROLE。
            verifier:VARCHAR(500)类型,审批人配置,约束为NULL,存储用户ID或角色ID,逗号分隔。
            node_order:INT类型,节点顺序,约束为NOT NULL,从1开始。
            is_final_node:INT类型,是否最终节点,约束为NOT NULL,0代表否,1代表是。
        c.关键设计点
            approverifier_type:审批人类型。
            USER为指定用户审批,verifier存储用户ID。
            ROLE为指定角色审批,verifier存储角色ID,系统自动查询该角色下的用户。
            ---------------------------------------------------------------------------------------------
            verifier:审批人配置。
            单个审批人为"123"。
            多个审批人为"123,456,789"(逗号分隔)。
            ---------------------------------------------------------------------------------------------
            node_order:节点顺序,从1开始连续编号,决定审批流转顺序。
            ---------------------------------------------------------------------------------------------
            is_final_node:最终节点标识,最终节点审批完成后流程结束,触发业务策略Handler执行。
        d.数据示例
            -- 第一个节点:部门领导审批
            INSERT INTO task_approval_node (process_id, node_name, approverifier_type, verifier, node_order, is_final_node)
            VALUES (1, '部门领导审批', 'ROLE', '10', 1, 0);

            -- 第二个节点:人力资源部审批(最终节点)
            INSERT INTO task_approval_node (process_id, node_name, approverifier_type, verifier, node_order, is_final_node)
            VALUES (1, '人力资源部审批', 'ROLE', '20', 2, 1);
    c.TaskApprovalMain(流程实例表)
        a.基本信息
            表名:task_approval_main。
            作用:存储审批流程的实例数据,记录流程的当前状态、当前节点、当前审批人等实时信息。
        b.字段设计
            id:BIGINT类型,主键ID,约束为PK且AUTO_INCREMENT。
            approval_flow_id:VARCHAR(50)类型,流程唯一标识,约束为NOT NULL且UNIQUE,格式为UUID。
            business_type:VARCHAR(50)类型,业务类型,约束为NOT NULL,对应process.code。
            business_id:BIGINT类型,业务ID,约束为NOT NULL,关联业务表主键。
            process_id:BIGINT类型,流程定义ID,约束为NOT NULL,外键关联task_approval_process.id。
            initiator_id:BIGINT类型,发起人ID,约束为NOT NULL。
            initiator_name:VARCHAR(50)类型,发起人姓名,约束为NOT NULL。
            flow_status:INT类型,流程状态,约束为NOT NULL,见状态枚举。
            current_node_id:BIGINT类型,当前节点ID,约束为NULL,外键关联task_approval_node.node_id。
            current_node_name:VARCHAR(50)类型,当前节点名称,约束为NULL。
            current_approver_id:BIGINT类型,当前审批人ID,约束为NULL。
            current_approver_name:VARCHAR(50)类型,当前审批人姓名,约束为NULL。
            next_node_id:BIGINT类型,下一节点ID,约束为NULL。
            next_node_name:VARCHAR(50)类型,下一节点名称,约束为NULL。
            pending_start_time:DATETIME类型,待审批开始时间,约束为NULL。
            approval_complete_time:DATETIME类型,审批完成时间,约束为NULL。
            latest_approval_opinion:VARCHAR(500)类型,最新审批意见,约束为NULL。
            dept_id:BIGINT类型,部门ID,约束为NULL。
            dept_name:VARCHAR(100)类型,部门名称,约束为NULL。
            org_name:VARCHAR(100)类型,所属单位,约束为NULL。
            remark:VARCHAR(500)类型,备注,约束为NULL。
            create_time:DATETIME类型,创建时间,约束为NOT NULL。
            update_time:DATETIME类型,更新时间,约束为NOT NULL。
        c.关键设计点
            approval_flow_id:
            流程唯一标识,UUID格式全局唯一,用于关联审批历史记录。
            ---------------------------------------------------------------------------------------------
            business_type + business_id:
            业务关联,通过业务类型和业务ID定位到具体业务数据,支持查询某个业务的审批状态。
            -------------------------------------------------------------------------------------------------
            当前状态字段:
            current_node_*表示当前处于哪个节点。
            current_approver_*表示当前应由谁审批。
            next_node_*表示下一节点是什么(便于前端展示)。
            ---------------------------------------------------------------------------------------------
            时间字段:
            pending_start_time为当前节点进入时间,用于计算审批耗时。
            approval_complete_time为流程完成时间。
    d.TaskApprovalHistory(审批历史表)
        a.基本信息
            表名:task_approval_history。
            作用:记录审批流程的完整历史轨迹,包括每个节点的审批人、审批时间、审批意见等。
        b.字段设计
            id:BIGINT类型,主键ID,约束为PK且AUTO_INCREMENT。
            approval_flow_id:VARCHAR(50)类型,流程ID,约束为NOT NULL,外键关联task_approval_main.approval_flow_id。
            business_type:VARCHAR(50)类型,业务类型,约束为NOT NULL。
            business_id:BIGINT类型,业务ID,约束为NOT NULL。
            process_id:BIGINT类型,流程定义ID,约束为NOT NULL。
            node_id:BIGINT类型,节点ID,约束为NULL。
            node_name:VARCHAR(50)类型,节点名称,约束为NULL。
            node_order:INT类型,节点顺序,约束为NULL。
            approver_id:BIGINT类型,审批人ID,约束为NOT NULL。
            approver_name:VARCHAR(50)类型,审批人姓名,约束为NOT NULL。
            operator_type:INT类型,操作人类型,约束为NOT NULL,1代表审批人,2代表发起人。
            approval_type:INT类型,审批类型,约束为NOT NULL,见状态枚举。
            approval_status:INT类型,审批状态,约束为NOT NULL,见状态枚举。
            next_node_id:BIGINT类型,下一节点ID,约束为NULL。
            next_node_name:VARCHAR(50)类型,下一节点名称,约束为NULL。
            approval_opinion:VARCHAR(500)类型,审批意见,约束为NULL。
            attachment_paths:VARCHAR(1000)类型,附件路径,约束为NULL,逗号分隔。
            approval_time:DATETIME类型,审批时间,约束为NULL。
            approval_duration:VARCHAR(50)类型,审批耗时,约束为NULL,人性化展示如"2小时30分钟"。
            dept_id:BIGINT类型,部门ID,约束为NULL。
            dept_name:VARCHAR(100)类型,部门名称,约束为NULL。
            org_name:VARCHAR(100)类型,所属单位,约束为NULL。
            remark:VARCHAR(500)类型,备注,约束为NULL。
            create_time:DATETIME类型,创建时间,约束为NOT NULL。
        c.关键设计点
            历史记录类型:
            包括发起审批记录(记录发起人的操作)、待审批记录(记录待审批人的待办状态)、审批完成记录(记录审批人的审批结果)。
            ---------------------------------------------------------------------------------------------
            状态变化追踪:
            approval_type为操作类型(同意/驳回/转审等)。
            approval_status为最终状态。同一个节点可能有多条记录(如转审前后)。
            ---------------------------------------------------------------------------------------------
            审批耗时计算:
            create_time为待审批记录生成时间。
            approval_time为审批处理时间。
            approval_duration为耗时等于approval_time减去create_time。
            ---------------------------------------------------------------------------------------------
            完整轨迹:按create_time升序查询可得到完整审批轨迹,支持审批流程的可视化展示。
        d.历史记录示例
            -- 记录1:发起人发起审批
            INSERT INTO task_approval_history (approval_flow_id, node_id, node_name, approver_id, approver_name,
                approval_type, approval_status, approval_opinion, create_time, approval_time)
            VALUES ('uuid-123', 1, '部门领导审批', 1001, '张三', 1, 1, '发起审批', NOW(), NOW());

            -- 记录2:第一个节点审批人的待审批记录
            INSERT INTO task_approval_history (approval_flow_id, node_id, node_name, approver_id, approver_name,
                approval_type, approval_status, approval_opinion, create_time)
            VALUES ('uuid-123', 1, '部门领导审批', 2001, '李四', 2, 2, '待审批', NOW());

            -- 记录3:第一个节点审批人审批通过
            UPDATE task_approval_history SET
                approval_type = 0, approval_status = 0, approval_opinion = '同意',
                approval_time = NOW(), approval_duration = '1小时30分钟'
            WHERE id = 2;

            -- 记录4:第二个节点审批人的待审批记录
            INSERT INTO task_approval_history (approval_flow_id, node_id, node_name, approver_id, approver_name,
                approval_type, approval_status, approval_opinion, create_time)
            VALUES ('uuid-123', 2, '人力资源部审批', 3001, '王五', 2, 2, '待审批', NOW());
    e.表关系设计
        TaskApprovalProcess与TaskApprovalNode的关系:一对多。一个流程定义包含多个审批节点,通过process_id关联。
        TaskApprovalProcess与TaskApprovalMain的关系:一对多。一个流程定义可以实例化多个流程实例,通过process_id关联。
        TaskApprovalMain与TaskApprovalHistory的关系:一对多。一个流程实例包含多条审批历史记录,通过approval_flow_id关联。
        TaskApprovalNode与TaskApprovalHistory的关系:一对多。一个节点可以有多条历史记录(转审、驳回重新审批等),通过node_id关联。

02.架构设计:策略模式设计
    a.设计思想
        a.说明
            审批工作流系统采用**策略模式**实现业务逻辑与审批流程的解耦
        b.核心思想
            审批流程引擎只负责流程的流转控制
            具体的业务处理由各业务模块自行实现
            通过策略接口统一业务处理的标准
        c.优势
            业务解耦:审批引擎不依赖具体业务
            易于扩展:新增业务只需实现接口
            维护简单:业务逻辑变更不影响流程引擎
            测试友好:可独立测试业务策略
    b.FinalNodeHandler接口
        a.说明
            包路径:com.zkzx.layer.task.strategy。接口名称:FinalNodeHandler。作用:最终节点审批完成后的业务处理策略接口。
        b.代码
            package com.zkzx.layer.task.strategy;

            /**
             * 最终节点审批完成后的业务处理策略接口
             */
            public interface FinalNodeHandler {

                /**
                 * 获取当前策略支持的业务类型
                 * @return 业务类型(如uniform_claim、move_in等)
                 */
                String getBusinessType();

                /**
                 * 最终节点审批完成后的业务处理逻辑
                 * @param businessId 业务ID
                 * @param approvalType 审批状态(查看ApprovalEnum.FlowStatus)
                 *   - 0=同意(审批通过)
                 *   - 3=已退回(审批驳回)
                 *   - 4=已拒绝(审批拒绝)
                 *   - 5=已撤销(审批撤回)
                 *   - 6=已完成(审批完成)
                 */
                void handle(Long businessId, Integer approvalType);

                /**
                 * 查询业务审批详情
                 * @param businessId 业务ID
                 * @return 业务详情对象(各业务返回结构不同)
                 */
                Object searchProcess(Long businessId);

                /**
                 * 解析业务参数并执行业务逻辑
                 * @param jsonParams 前端传的业务参数JSON串
                 * @return 业务ID
                 */
                Long parseParamsAndExecute(String jsonParams);
            }
        c.说明
            getBusinessType方法:获取当前策略支持的业务类型。返回值:String,业务类型(如uniform_claim、move_in等)。
            handle方法:最终节点审批完成后的业务处理逻辑。参数:Long businessId(业务ID),Integer approvalType(审批状态,查看ApprovalEnum.FlowStatus)。审批状态说明:0代表同意(审批通过),3代表已退回(审批驳回),4代表已拒绝(审批拒绝),5代表已撤销(审批撤回),6代表已完成(审批完成)。
            searchProcess方法:查询业务审批详情。参数:Long businessId(业务ID)。返回值:Object,业务详情对象(各业务返回结构不同)。
            parseParamsAndExecute方法:解析业务参数并执行业务逻辑。参数:String jsonParams(前端传的业务参数JSON串)。返回值:Long,业务ID。
            getBusinessType方法调用时机为系统启动时,作用是注册业务类型,返回业务类型编码。handle方法调用时机为审批完成、驳回、拒绝时,作用是处理业务逻辑,返回void。searchProcess方法调用时机为查看审批详情时,作用是查询业务数据,返回业务详情对象。parseParamsAndExecute方法调用时机为通用提交审批时,作用是保存业务数据,返回业务ID。
    c.FinalNodeHandlerFactory工厂类
        a.说明
            包路径:com.zkzx.layer.task.strategy。类名:FinalNodeHandlerFactory。作用:最终节点处理策略工厂(动态获取对应业务类型的策略)。
        b.代码
            package com.zkzx.layer.task.strategy;

            import org.springframework.stereotype.Component;
            import javax.annotation.PostConstruct;
            import javax.annotation.Resource;
            import java.util.HashMap;
            import java.util.List;
            import java.util.Map;

            /**
             * 最终节点处理策略工厂(动态获取对应业务类型的策略)
             */
            @Component
            public class FinalNodeHandlerFactory {

                // 注入所有实现了FinalNodeHandler接口的Bean
                @Resource
                private List<FinalNodeHandler> finalNodeHandlers;

                // 缓存:业务类型 -> 策略实现
                private Map<String, FinalNodeHandler> handlerMap;

                /**
                 * 初始化:将策略Bean按业务类型存入Map
                 */
                @PostConstruct
                public void init() {
                    handlerMap = new HashMap<>();
                    for (FinalNodeHandler handler : finalNodeHandlers) {
                        handlerMap.put(handler.getBusinessType(), handler);
                    }
                }

                /**
                 * 根据业务类型获取对应的策略
                 * @param businessType 业务类型
                 * @return 策略实现(默认返回DefaultFinalNodeHandler)
                 */
                public FinalNodeHandler getHandler(String businessType) {
                    FinalNodeHandler handler = handlerMap.get(businessType);
                    // 若未找到对应策略,返回默认策略
                    return handler != null ? handler : handlerMap.get("DEFAULT");
                }
            }
        c.说明
            依赖注入:注入所有实现了FinalNodeHandler接口的Bean。
            初始化方法:初始化:将策略Bean按业务类型存入Map。
            getHandler方法:根据业务类型获取对应的策略。参数:String businessType(业务类型)。返回值:FinalNodeHandler,策略实现(默认返回DefaultFinalNodeHandler)。
            -------------------------------------------------------------------------------------------------
            自动注册:Spring自动注入所有实现类,无需手动注册。
            延迟初始化:@PostConstruct确保所有Bean初始化完成后再构建Map。
            默认策略:未找到对应策略时返回默认实现,避免空指针。
            线程安全:handlerMap初始化后只读,天然线程安全。
    d.策略实现示例
        a.示例1:维权保护业务Handler
            package com.zkzx.layer.bis.wqfw.flow;

            import com.alibaba.fastjson.JSON;
            import com.alibaba.fastjson.JSONObject;
            import com.zkzx.layer.bis.wqfw.service.RightsProtectionMainService;
            import com.zkzx.layer.task.enmu.ApprovalEnum;
            import com.zkzx.layer.task.strategy.FinalNodeHandler;
            import org.springframework.stereotype.Component;
            import javax.annotation.Resource;

            @Component
            public class RightsProtectionNodeHandler implements FinalNodeHandler {

                @Resource
                private RightsProtectionMainService rightsProtectionMainService;

                @Override
                public String getBusinessType() {
                    // 返回业务类型编码(需与流程配置的code一致)
                    return "RightsProtection-Submit";
                }

                @Override
                public void handle(Long businessId, Integer approvalType) {
                    // 根据审批结果处理业务逻辑
                    if (ApprovalEnum.FlowStatus.REJECTED.getCode().equals(approvalType)
                            || ApprovalEnum.FlowStatus.REFUSED.getCode().equals(approvalType)) {
                        // 审批驳回或拒绝:修改状态为草稿
                        rightsProtectionMainService.updateToDraft(businessId);

                    } else if (ApprovalEnum.FlowStatus.WITHDRAW.getCode().equals(approvalType)) {
                        // 审批撤回:修改状态为作废
                        rightsProtectionMainService.updateToInvalid(businessId);

                    } else if (ApprovalEnum.FlowStatus.COMPLETED.getCode().equals(approvalType)) {
                        // 审批完成:修改状态为已生效
                        rightsProtectionMainService.updateToApproved(businessId);
                    }
                }

                @Override
                public Object searchProcess(Long businessId) {
                    // 返回业务详情
                    return rightsProtectionMainService.getMainCaseDetail(businessId);
                }

                @Override
                public Long parseParamsAndExecute(String jsonParams) {
                    // 解析参数并保存业务数据
                    JSONObject jsonObject = JSON.parseObject(jsonParams);
                    Long id = Long.valueOf(jsonObject.get("id").toString());
                    rightsProtectionMainService.checkExitStatus(id);
                    return id;
                }
            }
        b.说明
            包路径:com.zkzx.layer.bis.wqfw.flow。类名:RightsProtectionNodeHandler。注解:@Component。
            依赖注入:注入RightsProtectionMainService。
            getBusinessType实现:返回业务类型编码(需与流程配置的code一致)。返回值:RightsProtection-Submit。
            handle实现:根据审批结果处理业务逻辑。审批驳回或拒绝:修改状态为草稿。审批撤回:修改状态为作废。审批完成:修改状态为已生效。
            searchProcess实现:返回业务详情,调用rightsProtectionMainService.getMainCaseDetail(businessId)。
            parseParamsAndExecute实现:解析参数并保存业务数据。解析参数获取ID,调用rightsProtectionMainService.checkExitStatus(id),返回id。
            -------------------------------------------------------------------------------------------------
            @Component注解:标注为Spring Bean,自动注册到工厂。
            getBusinessType():返回与流程配置一致的业务类型编码。
            handle():根据不同审批结果执行不同业务逻辑。
            searchProcess():查询业务详情用于前端展示。
            parseParamsAndExecute():用于通用提交场景,保存业务数据。

03.架构设计:枚举设计
    a.ApprovalEnum.FlowStatus(审批状态枚举)
        a.枚举定义
            包路径:com.zkzx.layer.task.enmu。
            枚举名称:FlowStatus。
            作用:审批流程状态枚举。
        b.代码示例
            package com.zkzx.layer.task.enmu;

            /**
             * 审批流程状态枚举
             */
            public enum FlowStatus {
                AGREE(0, "同意"),
                SUBMITTED(1, "已提交"),
                APPROVING(2, "审批中"),
                REJECTED(3, "已退回"),
                REFUSED(4, "已拒绝"),
                WITHDRAW(5, "已撤销"),
                COMPLETED(6, "已完成"),
                TRANSFERRED(7, "已转审"),
                DRAFT(8, "暂存");

                private final Integer code;
                private final String desc;

                FlowStatus(Integer code, String desc) {
                    this.code = code;
                    this.desc = desc;
                }

                public Integer getCode() {
                    return code;
                }

                public String getDesc() {
                    return desc;
                }

                /**
                 * 根据编码获取枚举实例
                 */
                public static FlowStatus getByCode(Integer code) {
                    for (FlowStatus type : values()) {
                        if (type.getCode().equals(code)) {
                            return type;
                        }
                    }
                    throw new IllegalArgumentException("无效的审批类型编码:" + code);
                }
            }
        c.状态详解
            0代表同意,用于审批历史记录中标记某个节点审批通过。
            1代表已提交,用于审批历史记录中标记发起人的发起操作。
            2代表审批中,用于流程主表状态,表示流程正在审批。
            3代表已退回,用于流程主表状态,表示流程被驳回到发起人或上一节点。
            4代表已拒绝,用于流程主表状态,表示审批被拒绝,流程终止。
            5代表已撤销,用于流程主表状态,表示发起人主动撤回审批。
            6代表已完成,用于流程主表状态,表示所有节点审批通过,流程结束。
            7代表已转审,用于审批历史记录中标记某个节点的转审操作。
            8代表暂存,用于流程主表状态,表示业务数据已保存但未发起审批。
        c.状态流转图
            保存草稿后进入暂存状态。发起审批后进入审批中状态。
            在审批中状态下,审批通过则保持审批中并进入下一节点。
            审批驳回则转为已退回状态。审批拒绝则转为已拒绝状态。
            发起人撤回则转为已撤销状态。最终节点审批通过则转为已完成状态。
            已退回状态下可重新提交审批进入审批中状态,或直接结束。
            已拒绝、已撤销、已完成状态均直接结束。
    b.ApprovalEnum.NodeType(节点类型枚举)
        a.枚举定义
            枚举名称:NodeType。
            作用:节点类型枚举。
        b.代码示例
            /**
             * 节点类型枚举
             */
            public enum NodeType {
                FINAL_NODE(1, "最终节点"),
                NORMAL_NODE(0, "普通节点");

                private final Integer code;
                private final String desc;

                NodeType(Integer code, String desc) {
                    this.code = code;
                    this.desc = desc;
                }

                public Integer getCode() {
                    return code;
                }

                public String getDesc() {
                    return desc;
                }
            }
        c.节点类型说明
            0代表普通节点,即流程中间节点,行为是审批通过后流转到下一节点。
            1代表最终节点,即流程最后一个节点,行为是审批通过后流程结束,触发业务Handler。
        d.使用示例
            // 判断是否为最终节点
            if (ApprovalEnum.NodeType.FINAL_NODE.getCode().equals(currentNode.getIsFinalNode())) {
                // 最终节点审批完成,流程结束
                approvalMain.setFlowStatus(ApprovalEnum.FlowStatus.COMPLETED.getCode());
                // 触发业务策略处理
                finalNodeHandlerFactory.getHandler(businessType).handle(businessId, flowStatus);
            } else {
                // 普通节点审批完成,流转到下一节点
                TaskApprovalNode nextNode = taskApprovalNodeService.selectNextNode(processId, currentOrder);
                // ... 流转逻辑
            }
    c.CommonTaskEnum(业务类型枚举)
        a.枚举定义
            包路径:com.zkzx.layer.task.enmu。枚举名称:CommonTaskEnum。作用:公共业务类型码值。
        b.代码示例
            package com.zkzx.layer.task.enmu;

            import lombok.AllArgsConstructor;
            import lombok.Getter;

            /**
             * 公共业务类型码值
             */
            @Getter
            @AllArgsConstructor
            public enum CommonTaskEnum {

                MOVE_IN("move_in", "会员迁入"),
                MOVE_OUT("move_out", "会员迁出"),
                STEP_OUT("step_out", "会员退会"),
                REGISTER_APPROVAL("register_approval", "入会登记审批"),
                BUSINESS_PUBLIC("business_public", "企务公开"),
                ACTIVITY_SUBMIT("activity_submit", "活动提交"),
                WELFARE_SAVE("welfare_save", "福利保存"),
                UNIFORM_CLAIM("uniform_claim", "工服申领");

                private final String code;
                private final String desc;

                /**
                 * 根据code获取枚举
                 */
                public static CommonTaskEnum of(String code) {
                    for (CommonTaskEnum value : values()) {
                        if (value.getCode().equals(code)) {
                            return value;
                        }
                    }
                    return null;
                }
            }
        c.包含类型
            move_in代表会员迁入。
            move_out代表会员迁出。
            step_out代表会员退会。
            register_approval代表入会登记审批。
            business_public代表企务公开。
            activity_submit代表活动提交。
            welfare_save代表福利保存。
            uniform_claim代表工服申领。
        d.使用说明
            业务类型注册:每个业务模块需要在此枚举中注册业务类型。
            与流程配置对应:code值需与TaskApprovalProcess.code一致。
            日志友好:desc用于日志输出,方便问题排查。
            统一管理:集中管理所有业务类型,避免硬编码。
        e.使用示例
            // 获取业务类型描述
            String desc = Optional.ofNullable(CommonTaskEnum.of(dto.getBusinessType()))
                .map(CommonTaskEnum::getDesc)
                .orElse("未知");

            log.info("发起审批成功,业务类型:{},流程ID:{}", desc, flowId);

11.业务接入:接入前准备
    a.解业务审批需求
        a.核心问题清单
            业务是什么:需要审批的业务场景,如工服申领、会员迁入、活动提交等。
            谁发起审批:审批发起人角色,如普通员工、部门负责人、管理员。
            审批几个节点:审批流程节点数量,如1个节点(单级审批)、2-3个节点(多级审批)。
            谁来审批:每个节点的审批人,如部门领导、人力资源部、财务部等。
            审批通过后做什么:审批完成后的业务处理,如更新状态、发放物品、发送通知等。
            审批驳回后做什么:审批驳回后的业务处理,如恢复草稿状态、清空数据、发送通知等。
        b.需求分析示例:工服申领
            业务背景:
            员工满足条件后可申领工服,需要部门领导和人力资源部双重审批,审批通过后自动记录发放记录。
            -------------------------------------------------------------------------------------------------
            需求分析:
            业务名称为工服申领,业务编码为uniform_claim,发起人为普通员工或代理人。
            -------------------------------------------------------------------------------------------------
            审批流程包含两个节点:
            节点1为部门领导审批,审批人类型为角色,审批角色为部门负责人;
            节点2为人力资源部审批(最终节点),审批人类型为角色,审批角色为人力资源部审批员。
            -------------------------------------------------------------------------------------------------
            审批通过后需更新申领单状态为"已通过",创建发放记录,发送通知给员工。
            审批驳回后需更新申领单状态为"已驳回",保留申领数据供修改,发送驳回通知。
            审批拒绝后需更新申领单状态为"已拒绝",流程终止。
    c.确定审批节点和审批人
        a.节点设计原则
            简洁高效:节点数量不宜过多(建议1-3个)。
            职责清晰:每个节点审批人职责明确。
            顺序合理:按业务逻辑自然顺序排列。
        b.审批人类型选择
            指定用户:适用场景为固定审批人,配置方式为配置用户ID,优点是明确,缺点是不灵活。
            指定角色:适用场景为动态审批人,配置方式为配置角色ID,优点是灵活且易维护。
            -------------------------------------------------------------------------------------------------
            推荐方案:
            一级审批(部门领导)使用角色,系统自动根据发起人部门查找对应领导;
            二级审批(职能部门)使用角色,配置职能部门角色ID。
        c.节点配置示例
            -- 工服申领审批流程
            -- 节点1:部门领导审批(普通节点)
            INSERT INTO task_approval_node
            (process_id, node_name, approverifier_type, verifier, node_order, is_final_node)
            VALUES
            (1, '部门领导审批', 'ROLE', '10', 1, 0);

            -- 节点2:人力资源部审批(最终节点)
            INSERT INTO task_approval_node
            (process_id, node_name, approverifier_type, verifier, node_order, is_final_node)
            VALUES
            (1, '人力资源部审批', 'ROLE', '20', 2, 1);
    d.准备业务实体和服务
        a.业务表设计要求
            CREATE TABLE biz_your_business (
                id BIGINT PRIMARY KEY AUTO_INCREMENT,

                -- 业务字段
                -- ...

                -- 审批相关字段(必须)
                approval_flow_id VARCHAR(50) COMMENT '审批流程ID',
                flow_status INT COMMENT '流程状态:0-草稿 2-审批中 3-已驳回 4-已拒绝 6-已完成',

                -- 审批时间字段(可选)
                submit_time DATETIME COMMENT '提交时间',
                approval_time DATETIME COMMENT '审批完成时间',

                -- 其他字段
                create_time DATETIME,
                update_time DATETIME
            );
            -------------------------------------------------------------------------------------------------
            业务表必须包含审批相关字段:
            approval_flow_id(VARCHAR类型,审批流程ID),
            flow_status(INT类型,流程状态:0-草稿 2-审批中 3-已驳回 4-已拒绝 6-已完成)。
            -------------------------------------------------------------------------------------------------
            可选审批时间字段:
            submit_time(提交时间),approval_time(审批完成时间)。
        b.Service层准备
            public interface IYourBusinessService extends IService<YourBusinessEntity> {

                /**
                 * 提交审批
                 */
                R<Boolean> submit(YourBusinessDTO dto);

                /**
                 * 审批通过后处理(由Handler调用)
                 */
                void updateToApproved(Long businessId);

                /**
                 * 审批驳回后处理(由Handler调用)
                 */
                void updateToRejected(Long businessId);

                /**
                 * 审批拒绝后处理(由Handler调用)
                 */
                void updateToRefused(Long businessId);

                /**
                 * 查询业务详情(用于审批详情展示)
                 */
                YourBusinessVO getDetail(Long businessId);
            }
            -------------------------------------------------------------------------------------------------
            业务Service需要提供以下方法:submit用于提交审批。
            updateToApproved用于审批通过后处理(由Handler调用)。
            updateToRejected用于审批驳回后处理(由Handler调用)。
            updateToRefused用于审批拒绝后处理(由Handler调用)。
            getDetail用于查询业务详情(用于审批详情展示)。

12.业务接入:五步接入法
    a.步骤1:配置审批流程
        a.配置流程定义
            在task_approval_process表中插入流程配置。
            -------------------------------------------------------------------------------------------------
            INSERT INTO task_approval_process
            (process_name, name, code, description, status, dept_id, dept_name, create_time)
            VALUES
            ('工服申领审批', '工服申领', 'uniform_claim', '员工工服申领审批流程', '0', NULL, NULL, NOW());

            -- 部门专属流程(仅适用于特定部门,可选)
            INSERT INTO task_approval_process
            (process_name, name, code, description, status, dept_id, dept_name, create_time)
            VALUES
            ('人力资源部-工服申领审批', '工服申领', 'uniform_claim', '人力资源部专属审批流程', '0', 1001, '人力资源部', NOW());
            -------------------------------------------------------------------------------------------------
            配置要点:
            code为业务类型编码,需与Handler中的getBusinessType()返回值一致。
            status为0代表启用,1代表禁用。
            dept_id为NULL表示通用流程,不为NULL表示部门专属流程。
        b.配置审批节点
            在task_approval_node表中插入节点配置。
            -------------------------------------------------------------------------------------------------
            -- 假设上面插入的流程ID为1
            -- 节点1:部门领导审批
            INSERT INTO task_approval_node
            (process_id, node_name, approverifier_type, verifier, node_order, is_final_node)
            VALUES
            (1, '部门领导审批', 'ROLE', '10', 1, 0);

            -- 节点2:人力资源部审批(最终节点)
            INSERT INTO task_approval_node
            (process_id, node_name, approverifier_type, verifier, node_order, is_final_node)
            VALUES
            (1, '人力资源部审批', 'ROLE', '20', 2, 1);
            -------------------------------------------------------------------------------------------------
            配置要点:
            node_order从1开始连续编号,决定审批顺序。
            is_final_node最后一个节点设置为1。
            approverifier_type为USER代表指定用户,ROLE代表指定角色。
            verifier单个审批人为"123",多个审批人为"123,456,789"(逗号分隔)。
        c.注册业务类型枚举
            在CommonTaskEnum中注册业务类型,定义code和desc。
            -------------------------------------------------------------------------------------------------
            @Getter
            @AllArgsConstructor
            public enum CommonTaskEnum {
                // ... 其他业务类型

                UNIFORM_CLAIM("uniform_claim", "工服申领");

                private final String code;
                private final String desc;
            }
    b.步骤2:实现FinalNodeHandler策略
        a.说明
            创建业务Handler实现类,必须添加@Component注解。
            getBusinessType()返回值必须与流程配置的code一致。
            handle()方法处理所有审批结果的业务逻辑。
            searchProcess()方法返回业务详情,供审批详情页展示。
            parseParamsAndExecute()方法用于通用提交场景,可选实现。
        b.代码
            package com.zkzx.layer.bis.empbenefits.uniform.flow;

            import com.alibaba.fastjson.JSON;
            import com.alibaba.fastjson.JSONObject;
            import com.zkzx.layer.bis.empbenefits.uniform.service.IUniformClaimService;
            import com.zkzx.layer.task.enmu.ApprovalEnum;
            import com.zkzx.layer.task.strategy.FinalNodeHandler;
            import lombok.extern.slf4j.Slf4j;
            import org.springframework.stereotype.Component;
            import javax.annotation.Resource;

            /**
             * 工服申领审批策略Handler
             */
            @Slf4j
            @Component
            public class UniformClaimHandler implements FinalNodeHandler {

                @Resource
                private IUniformClaimService uniformClaimService;

                @Override
                public String getBusinessType() {
                    // 返回业务类型编码(需与流程配置的code一致)
                    return "uniform_claim";
                }

                @Override
                public void handle(Long businessId, Integer approvalType) {
                    log.info("工服申领审批回调,业务ID:{},审批类型:{}", businessId, approvalType);

                    // 根据审批结果处理业务逻辑
                    if (ApprovalEnum.FlowStatus.COMPLETED.getCode().equals(approvalType)) {
                        // 审批完成:更新状态为已通过
                        uniformClaimService.updateToApproved(businessId);

                    } else if (ApprovalEnum.FlowStatus.REJECTED.getCode().equals(approvalType)) {
                        // 审批驳回:更新状态为草稿,允许重新提交
                        uniformClaimService.updateToRejected(businessId);

                    } else if (ApprovalEnum.FlowStatus.REFUSED.getCode().equals(approvalType)) {
                        // 审批拒绝:更新状态为已拒绝,流程终止
                        uniformClaimService.updateToRefused(businessId);

                    } else if (ApprovalEnum.FlowStatus.WITHDRAW.getCode().equals(approvalType)) {
                        // 审批撤回:更新状态为已撤回
                        uniformClaimService.updateToWithdraw(businessId);
                    }
                }

                @Override
                public Object searchProcess(Long businessId) {
                    // 返回业务详情(用于审批详情页展示)
                    return uniformClaimService.getDetail(businessId);
                }

                @Override
                public Long parseParamsAndExecute(String jsonParams) {
                    // 解析参数并保存业务数据(用于通用提交场景)
                    JSONObject jsonObject = JSON.parseObject(jsonParams);
                    // 这里可以解析参数并保存业务数据
                    // 返回业务ID
                    return jsonObject.getLong("id");
                }
            }
        c.实现要点
            必须添加@Component注解,Spring才能自动注册。
            返回值必须与流程配置的code一致。
            处理所有审批结果的业务逻辑。返回业务详情,供审批详情页展示。
            用于通用提交场景,可选实现。
    c.步骤3:注入TaskApprovalExecuteService
        a.说明
            在业务ServiceImpl中注入审批服务TaskApprovalExecuteService,并定义业务类型常量。
        b.代码实现
            @Service
            @Slf4j
            public class UniformClaimServiceImpl extends ServiceImpl<UniformClaimMapper, UniformClaimEntity>
                implements IUniformClaimService {

                // 注入审批服务
                @Autowired
                private TaskApprovalExecuteService taskApprovalExecuteService;

                // 定义业务类型常量
                private static final String BUSINESS_TYPE = "uniform_claim";

                // ... 其他代码
            }
    d.步骤4:构建审批DTO并发起审批
        a.说明
            实现业务提交审批方法,进行业务数据校验,保存业务数据,构建审批DTO,发起审批。
        b.代码
            @Override
            @Transactional(rollbackFor = Exception.class)
            public R<Boolean> submit(UniformClaimSubmitParam param) {

                // 1. 业务数据校验
                validateBusinessData(param);

                // 2. 保存业务数据
                UniformClaimEntity claim = new UniformClaimEntity();
                claim.setEmployeeId(param.getEmpId());
                claim.setClaimStatus(0); // 0=草稿
                this.save(claim);

                // 3. 构建审批DTO
                TaskApprovalOperateDTO approvalDTO = buildApprovalDTO(claim.getId(), param);

                // 4. 发起审批
                R<Boolean> approvalResult = taskApprovalExecuteService.startApproval(approvalDTO);
                if (!approvalResult.isSuccess()) {
                    log.error("审批流程发起失败,申领单ID: {}, 失败原因: {}",
                              claim.getId(), approvalResult.getMsg());
                    throw new IllegalStateException("审批流程发起失败: " + approvalResult.getMsg());
                }

                log.info("工服申领审批流程发起成功,申领单ID: {}", claim.getId());
                return approvalResult;
            }

            /**
             * 构建审批DTO
             */
            private TaskApprovalOperateDTO buildApprovalDTO(Long claimId, UniformClaimSubmitParam param) {
                TaskApprovalOperateDTO dto = new TaskApprovalOperateDTO();

                // 设置业务类型和业务ID
                dto.setBusinessType(BUSINESS_TYPE);
                dto.setBusinessId(claimId);

                // 获取当前用户信息
                UserCommon user = taskApprovalExecuteService.getUser();
                dto.setOperatorId(user.getUserId());
                dto.setOperatorName(user.getUsername());
                dto.setOperatorType(2); // 2=发起人

                // 设置首个节点审批人(必须)
                dto.setNextApproverId(param.getNextApproverId());
                dto.setNextApproverName(param.getNextApproverName());

                // 其他参数
                dto.setApprovalOpinion("");
                dto.setRemark(param.getRemark());

                return dto;
            }
        c.关键参数说明
            businessType为String类型,必填,代表业务类型编码。
            businessId为Long类型,必填,代表业务数据ID。
            operatorId为Long类型,必填,代表发起人ID。
            operatorName为String类型,必填,代表发起人姓名。
            operatorType为Integer类型,必填,代表操作人类型,发起审批时固定为2。
            nextApproverId为Long类型,必填,代表首个节点审批人ID。
            nextApproverName为String类型,必填,代表首个节点审批人姓名。
            approvalOpinion为String类型,非必填,代表审批意见。
            remark为String类型,非必填,代表备注。
    e.步骤5:处理审批回调
        a.Handler逻辑
            在Handler的handle()方法中实现业务回调逻辑,根据审批状态调用Service中不同方法。
            -------------------------------------------------------------------------------------------------
            @Override
            public void handle(Long businessId, Integer approvalType) {
                if (ApprovalEnum.FlowStatus.COMPLETED.getCode().equals(approvalType)) {
                    // 审批通过:执行业务逻辑
                    uniformClaimService.updateToApproved(businessId);
                }
                // ... 其他状态处理
            }
        b.Service逻辑
            在Service中实现具体业务方法,如updateToApproved,更新申领单状态,创建发放记录,发送通知。
            -------------------------------------------------------------------------------------------------
            @Override
            @Transactional(rollbackFor = Exception.class)
            public void updateToApproved(Long businessId) {
                // 1. 更新申领单状态
                this.update(Wrappers.<UniformClaimEntity>lambdaUpdate()
                    .set(UniformClaimEntity::getClaimStatus, 2) // 2=已通过
                    .set(UniformClaimEntity::getApprovalTime, new Date())
                    .eq(UniformClaimEntity::getId, businessId)
                );

                // 2. 创建发放记录
                uniformIssueRecordService.createIssueRecord(businessId);

                // 3. 发送通知
                notificationService.sendApprovalSuccessNotification(businessId);

                log.info("工服申领审批通过处理完成,业务ID:{}", businessId);
            }

13.业务接入:完整接入示例
    a.工服申领业务接入
        a.业务背景
            员工申领工服需要部门领导和人力资源部双重审批
            审批通过后自动创建发放记录。
        b.数据库配置
            流程定义和节点配置的SQL语句。
            -------------------------------------------------------------------------------------------------
            -- 流程定义
            INSERT INTO task_approval_process
            (process_name, name, code, description, status, create_time)
            VALUES
            ('工服申领审批', '工服申领', 'uniform_claim', '员工工服申领审批流程', '0', NOW());

            -- 节点配置
            INSERT INTO task_approval_node VALUES
            (NULL, 1, '部门领导审批', 'ROLE', '10', 1, 0),
            (NULL, 1, '人力资源部审批', 'ROLE', '20', 2, 1);
        c.Handler实现
            UniformClaimHandler类实现了FinalNodeHandler接口,处理工服申领审批逻辑。
            -------------------------------------------------------------------------------------------------
            @Slf4j
            @Component
            public class UniformClaimHandler implements FinalNodeHandler {

                @Resource
                private IUniformClaimService uniformClaimService;

                @Override
                public String getBusinessType() {
                    return "uniform_claim";
                }

                @Override
                public void handle(Long businessId, Integer approvalType) {
                    if (ApprovalEnum.FlowStatus.COMPLETED.getCode().equals(approvalType)) {
                        uniformClaimService.updateToApproved(businessId);
                    } else if (ApprovalEnum.FlowStatus.REJECTED.getCode().equals(approvalType)) {
                        uniformClaimService.updateToDraft(businessId);
                    } else if (ApprovalEnum.FlowStatus.REFUSED.getCode().equals(approvalType)) {
                        uniformClaimService.updateToRefused(businessId);
                    }
                }

                @Override
                public Object searchProcess(Long businessId) {
                    return uniformClaimService.getDetail(businessId);
                }

                @Override
                public Long parseParamsAndExecute(String jsonParams) {
                    JSONObject json = JSON.parseObject(jsonParams);
                    return json.getLong("id");
                }
            }
        d.Service实现
            UniformClaimServiceImpl类实现了IUniformClaimService接口,包含提交审批、审批通过、驳回、拒绝等逻辑。
            -------------------------------------------------------------------------------------------------
            @Service
            @Slf4j
            public class UniformClaimServiceImpl extends ServiceImpl<UniformClaimMapper, UniformClaimEntity>
                implements IUniformClaimService {

                @Autowired
                private TaskApprovalExecuteService taskApprovalExecuteService;

                @Resource
                private IUniformIssueRecordService uniformIssueRecordService;

                private static final String BUSINESS_TYPE = "uniform_claim";

                @Override
                @Transactional(rollbackFor = Exception.class)
                public R<Boolean> claimSubmit(UniformClaimSubmitParam param) {

                    // 1. 校验申领资格
                    if (!uniformIssueRecordService.isEligible(param.getEmpId())) {
                        throw new IllegalArgumentException("该员工未到申领周期");
                    }

                    // 2. 创建申领单
                    UniformClaimEntity claim = new UniformClaimEntity();
                    claim.setEmployeeId(param.getEmpId());
                    claim.setRoleConfigId(param.getRoleConfigId());
                    claim.setClaimStatus(0); // 0=草稿
                    claim.setAppliedAt(DateUtil.date());
                    this.save(claim);

                    // 3. 保存申领明细
                    List<UniformClaimDetailEntity> detailList = buildDetailList(param, claim);
                    uniformClaimDetailService.saveBatch(detailList);

                    // 4. 发起审批流程
                    TaskApprovalOperateDTO approvalDTO = buildApprovalDTO(claim.getId(), param);
                    R<Boolean> approvalResult = taskApprovalExecuteService.startApproval(approvalDTO);

                    if (!approvalResult.isSuccess()) {
                        log.error("审批流程发起失败,申领单ID: {}, 失败原因: {}",
                                  claim.getId(), approvalResult.getMsg());
                        throw new IllegalStateException("审批流程发起失败: " + approvalResult.getMsg());
                    }

                    log.info("工服申领审批流程发起成功,申领单ID: {}", claim.getId());
                    return approvalResult;
                }

                private TaskApprovalOperateDTO buildApprovalDTO(Long claimId, UniformClaimSubmitParam param) {
                    TaskApprovalOperateDTO dto = new TaskApprovalOperateDTO();
                    dto.setBusinessType(BUSINESS_TYPE);
                    dto.setBusinessId(claimId);

                    // 获取当前用户信息
                    UserCommon user = taskApprovalExecuteService.getUser();
                    dto.setOperatorId(user.getUserId());
                    dto.setOperatorName(user.getUsername());
                    dto.setOperatorType(2);

                    // 设置首个节点审批人
                    dto.setNextApproverId(param.getNextApproverId());
                    dto.setNextApproverName(param.getNextApproverName());

                    dto.setApprovalOpinion("");
                    dto.setRemark("");

                    return dto;
                }

                @Override
                @Transactional(rollbackFor = Exception.class)
                public void updateToApproved(Long businessId) {
                    // 更新申领单状态
                    this.update(Wrappers.<UniformClaimEntity>lambdaUpdate()
                        .set(UniformClaimEntity::getClaimStatus, 2) // 2=已通过
                        .set(UniformClaimEntity::getApprovalTime, new Date())
                        .eq(UniformClaimEntity::getId, businessId)
                    );

                    // 创建发放记录
                    uniformIssueRecordService.createIssueRecord(businessId);

                    log.info("工服申领审批通过处理完成,业务ID:{}", businessId);
                }

                @Override
                public void updateToDraft(Long businessId) {
                    this.update(Wrappers.<UniformClaimEntity>lambdaUpdate()
                        .set(UniformClaimEntity::getClaimStatus, 0) // 0=草稿
                        .eq(UniformClaimEntity::getId, businessId)
                    );
                }

                @Override
                public void updateToRefused(Long businessId) {
                    this.update(Wrappers.<UniformClaimEntity>lambdaUpdate()
                        .set(UniformClaimEntity::getClaimStatus, 3) // 3=已拒绝
                        .eq(UniformClaimEntity::getId, businessId)
                    );
                }
            }
    b.维权保护业务接入
        a.业务背景
            员工提交维权申请后需要审批,审批通过后状态更新为"已生效",审批驳回后恢复为"草稿"状态。
        b.Handler实现
            RightsProtectionNodeHandler类实现了FinalNodeHandler接口,处理维权保护审批逻辑。
            -------------------------------------------------------------------------------------------------
            @Component
            public class RightsProtectionNodeHandler implements FinalNodeHandler {

                @Resource
                private RightsProtectionMainService rightsProtectionMainService;

                @Override
                public String getBusinessType() {
                    return "RightsProtection-Submit";
                }

                @Override
                public void handle(Long businessId, Integer approvalType) {
                    // 根据审批结果处理业务逻辑
                    if (ApprovalEnum.FlowStatus.REJECTED.getCode().equals(approvalType)
                            || ApprovalEnum.FlowStatus.REFUSED.getCode().equals(approvalType)) {
                        // 审批驳回或拒绝:修改状态为草稿
                        rightsProtectionMainService.updateToDraft(businessId);

                    } else if (ApprovalEnum.FlowStatus.WITHDRAW.getCode().equals(approvalType)) {
                        // 审批撤回:修改状态为作废
                        rightsProtectionMainService.updateToInvalid(businessId);

                    } else if (ApprovalEnum.FlowStatus.COMPLETED.getCode().equals(approvalType)) {
                        // 审批完成:修改状态为已生效
                        rightsProtectionMainService.updateToApproved(businessId);
                    }
                }

                @Override
                public Object searchProcess(Long businessId) {
                    // 返回维权案件详情
                    return rightsProtectionMainService.getMainCaseDetail(businessId);
                }

                @Override
                public Long parseParamsAndExecute(String jsonParams) {
                    JSONObject jsonObject = JSON.parseObject(jsonParams);
                    Long id = Long.valueOf(jsonObject.get("id").toString());
                    rightsProtectionMainService.checkExitStatus(id);
                    return id;
                }
            }

21.API手册:核心服务概览
    a.TaskApprovalExecuteService服务说明
        a.基本信息
            服务名称为TaskApprovalExecuteService。
            服务职责包括审批流程的发起与执行,审批节点的流转控制,审批状态的管理与查询,审批历史的记录与追踪。
        b.服务位置
            com.zkzx.layer.task.service.TaskApprovalExecuteService。
        c.使用方式
            ---
            @Service
            public class YourBusinessService {

                @Autowired
                private TaskApprovalExecuteService taskApprovalExecuteService;

                // ... 使用审批服务
            }
            ---
    b.主要方法列表
        startApproval方法用于发起审批流程,调用场景为业务提交审批时。
        doNodeApproval方法用于执行节点审批,调用场景为审批人处理审批时。
        subCommit方法用于通用提交审批,调用场景为前端统一提交入口。
        queryApprover方法用于查询审批人列表,调用场景为前端选择审批人时。
        queryProcessTodo方法用于查询待办审批,调用场景为待办列表查询。
        queryProcessDone方法用于查询已办审批,调用场景为已办列表查询。
        searchProcess方法用于查看审批详情,调用场景为审批详情页展示。

22.API手册:发起审批API
    a.startApproval方法详解
        a.方法签名
            /**
             * 发起审批流程
             * @param dto 审批操作DTO
             * @return 审批结果
             */
            @Transactional(rollbackFor = Exception.class)
            public R<Boolean> startApproval(TaskApprovalOperateDTO dto)
        b.方法作用
            创建审批流程实例。
            记录审批历史(发起记录+首个节点待审批记录)。
            发送待办通知给首个审批人。
        c.执行流程
            业务Service调用startApproval。
            审批服务校验必填字段。
            查询审批流程定义。
            查询第一个节点。
            生成流程UUID。
            插入审批主表记录。
            插入发起人操作记录。
            插入首个审批人待审批记录。
            发送待办通知。
            返回成功。
    b.参数说明
        a.TaskApprovalOperateDTO参数详解
            businessType为String类型,必填,代表业务类型编码,示例值为uniform_claim。
            businessId为Long类型,必填,代表业务数据ID,示例值为123456。
            operatorId为Long类型,必填,代表操作人ID(发起人),示例值为1001。
            operatorName为String类型,必填,代表操作人姓名,示例值为张三。
            operatorType为Integer类型,必填,代表操作人类型,示例值为2(固定为2=发起人)。
            nextApproverId为Long类型,必填,代表首个节点审批人ID,示例值为2001。
            nextApproverName为String类型,必填,代表首个节点审批人姓名,示例值为李四。
            approvalOpinion为String类型,非必填,代表审批意见,示例值为请审批。
            remark为String类型,非必填,代表备注,示例值为空字符串。
            attachmentPaths为List<String>类型,非必填,代表附件路径列表,示例值为path1, path2。
        b.返回值
            R<Boolean>对象,包含success、code、msg、data字段。
            -------------------------------------------------------------------------------------------------
            R<Boolean> {
                success: true,
                code: 200,
                msg: "发起审批成功!",
                data: true
            }
    c.调用示例
        a.完整示例
            ---
            @Service
            @Slf4j
            public class UniformClaimServiceImpl {

                @Autowired
                private TaskApprovalExecuteService taskApprovalExecuteService;

                private static final String BUSINESS_TYPE = "uniform_claim";

                @Transactional(rollbackFor = Exception.class)
                public R<Boolean> submit(UniformClaimSubmitParam param) {

                    // 1. 保存业务数据
                    UniformClaimEntity claim = new UniformClaimEntity();
                    claim.setEmployeeId(param.getEmpId());
                    claim.setClaimStatus(0); // 0=草稿
                    this.save(claim);

                    // 2. 构建审批DTO
                    TaskApprovalOperateDTO dto = new TaskApprovalOperateDTO();
                    dto.setBusinessType(BUSINESS_TYPE);
                    dto.setBusinessId(claim.getId());

                    // 获取当前用户
                    UserCommon user = taskApprovalExecuteService.getUser();
                    dto.setOperatorId(user.getUserId());
                    dto.setOperatorName(user.getUsername());
                    dto.setOperatorType(2); // 2=发起人

                    // 设置首个节点审批人
                    dto.setNextApproverId(param.getNextApproverId());
                    dto.setNextApproverName(param.getNextApproverName());

                    dto.setApprovalOpinion("请审批");
                    dto.setRemark("");

                    // 3. 发起审批
                    R<Boolean> result = taskApprovalExecuteService.startApproval(dto);

                    if (!result.isSuccess()) {
                        log.error("发起审批失败: {}", result.getMsg());
                        throw new BusinessException("发起审批失败: " + result.getMsg());
                    }

                    log.info("发起审批成功,业务ID: {}", claim.getId());
                    return result;
                }
            }
            ---
    d.注意事项
        a.必须设置nextApproverId
            发起审批时必须指定首个节点的审批人,否则会抛出异常。获取方式包括前端选择后传参,或后端查询审批人列表。
        b.流程配置必须存在
            发起审批前,必须确保task_approval_process表中存在对应的流程配置,流程配置的status为'0'(启用状态),流程配置的code与businessType一致。
        c.事务处理建议
            审批成功后,不要在后续抛异常导致回滚。正确做法是审批成功后不再抛异常。

23.API手册:执行审批API
    a.doNodeApproval方法详解
        a.方法签名
            ---
            /**
             * 执行节点审批(支持同意/驳回/撤回/转审)
             * @param dto 审批操作DTO
             * @return 审批结果
             */
            @Transactional(rollbackFor = Exception.class)
            public R<Boolean> doNodeApproval(TaskApprovalOperateDTO dto)
            ---
        b.方法作用
            处理审批人的审批操作。更新审批状态和历史记录。流转到下一节点或结束流程。触发业务Handler回调。
    b.支持的操作类型
        a.操作列表
            同意审批的approvalType为0,说明为审批通过,流转到下一节点,流程影响为流程继续。
            驳回审批的approvalType为3,说明为驳回到上一节点或发起人,流程影响为流程回退。
            拒绝审批的approvalType为4,说明为直接拒绝,流程影响为流程终止。
            转审操作的approvalType为7,说明为转交给其他人审批,流程影响为流程不变。
            撤回审批的approvalType为5,说明为发起人撤回审批,流程影响为流程终止。
    c.同意审批
        a.参数配置
            TaskApprovalOperateDTO dto = new TaskApprovalOperateDTO();
            dto.setApprovalFlowId("uuid-123"); // 流程ID
            dto.setBusinessType("uniform_claim");
            dto.setBusinessId(123456L);
            dto.setCurrentNodeId(nodeId); // 当前节点ID
            dto.setOperatorId(2001L); // 当前审批人ID
            dto.setOperatorName("李四");
            dto.setOperatorType(1); // 1=审批人

            // 同意审批的关键参数
            dto.setApprovalType(0); // 0=同意
            dto.setApprovalOpinion("同意"); // 审批意见
            dto.setNextApproverId(3001L); // 下一节点审批人ID(非最终节点时必填)
            dto.setNextApproverName("王五"); // 下一节点审批人姓名
            -------------------------------------------------------------------------------------------------
            设置approvalFlowId(流程ID),
            businessType,businessId,currentNodeId(当前节点ID),
            operatorId(当前审批人ID),
            operatorName,operatorType(1=审批人)。
            设置approvalType为0(同意),
            approvalOpinion(审批意见),
            nextApproverId(下一节点审批人ID,非最终节点时必填),
            nextApproverName(下一节点审批人姓名)。
        b.执行逻辑
            判断是否为最终节点。如果是最终节点,流程结束,更新主表状态为已完成,触发业务Handler,发送完成通知。
            如果不是最终节点,流转到下一节点,更新当前节点和审批人,插入下一节点待审批记录,发送待办通知。
        c.调用示例
            非最终节点审批需设置nextApproverId。最终节点审批不需要设置nextApproverId。
    d.驳回审批
        a.参数配置
            TaskApprovalOperateDTO dto = new TaskApprovalOperateDTO();
            dto.setApprovalFlowId("uuid-123");
            dto.setCurrentNodeId(nodeId);
            dto.setOperatorId(2001L);
            dto.setOperatorName("李四");
            dto.setOperatorType(1);

            // 驳回审批的关键参数
            dto.setApprovalType(3); // 3=已退回
            dto.setApprovalOpinion("材料不齐全,请补充"); // 驳回原因
            dto.setReturnedStatus(returnedStatus); // 1=退回上一节点,2=退回发起人
            -------------------------------------------------------------------------------------------------
            设置approvalFlowId,currentNodeId,operatorId,operatorName,operatorType。
            设置approvalType为3(已退回),approvalOpinion(驳回原因),returnedStatus(1=退回上一节点,2=退回发起人)。
        b.驳回类型说明
            returnedStatus为1时代表退回上一节点,行为是流程回退到上一审批节点,由上一节点审批人重新审批,主表状态为审批中。
            returnedStatus为2时代表退回发起人,行为是流程退回到发起人,发起人修改后重新提交,主表状态为已退回。
        c.执行逻辑
            驳回审批。
            如果returnedStatus为1(上一节点),查询上一节点,查询上一节点审批人,插入待审批记录给上一节点审批人,主表状态设为审批中,发送待办通知。
            如果returnedStatus为2(发起人),获取发起人信息,插入待审批记录给发起人,主表状态设为已退回,发送驳回通知。
        d.调用示例
            退回上一节点需设置returnedStatus为1。退回发起人需设置returnedStatus为2。
    e.拒绝审批
        a.参数配置
            TaskApprovalOperateDTO dto = new TaskApprovalOperateDTO();
            dto.setApprovalFlowId("uuid-123");
            dto.setCurrentNodeId(nodeId);
            dto.setOperatorId(2001L);
            dto.setOperatorName("李四");
            dto.setOperatorType(1);

            // 驳回审批的关键参数
            dto.setApprovalType(3); // 3=已退回
            dto.setApprovalOpinion("材料不齐全,请补充"); // 驳回原因
            dto.setReturnedStatus(returnedStatus); // 1=退回上一节点,2=退回发起人
            -------------------------------------------------------------------------------------------------
            设置approvalFlowId,currentNodeId,operatorId,operatorName,operatorType。
            设置approvalType为4(已拒绝),approvalOpinion(拒绝原因)。
        b.执行逻辑
            更新当前记录为已拒绝。更新主表状态为已拒绝。清空当前节点和审批人。触发业务Handler。发送拒绝通知。
        c.与驳回的区别
            拒绝审批流程状态为已拒绝(终止),不可重新提交,触发Handler。驳回审批流程状态为已退回(可重新提交),触发Handler。
        d.调用示例
            设置approvalType为4,approvalOpinion。
    f.转审操作
        a.参数配置
            TaskApprovalOperateDTO dto = new TaskApprovalOperateDTO();
            dto.setApprovalFlowId("uuid-123");
            dto.setCurrentNodeId(nodeId);
            dto.setOperatorId(2001L);
            dto.setOperatorName("李四");
            dto.setOperatorType(1);

            // 拒绝审批的关键参数
            dto.setApprovalType(4); // 4=已拒绝
            dto.setApprovalOpinion("不符合审批条件,拒绝"); // 拒绝原因
            -------------------------------------------------------------------------------------------------
            设置approvalFlowId,currentNodeId,operatorId(当前审批人),operatorName,operatorType。
            设置approvalType为7(已转审),approvalOpinion(转审原因),nextApproverId(新审批人ID,必填),nextApproverName(新审批人姓名,必填)。
        b.执行逻辑
            更新原审批人记录为已转审。插入新审批人的待审批记录。更新主表当前审批人。节点不变。发送待办通知给新审批人。
        c.转审特点
            当前节点不变。只是更换审批人。新审批人拥有完整的审批权限(同意/驳回/转审)。不能转审给自己。
        d.调用示例
            设置approvalType为7,nextApproverId,nextApproverName。
    g.撤回审批
        a.参数配置
            TaskApprovalOperateDTO dto = new TaskApprovalOperateDTO();
            dto.setApprovalFlowId("uuid-123");
            dto.setCurrentNodeId(nodeId);
            dto.setOperatorId(2001L); // 当前审批人
            dto.setOperatorName("李四");
            dto.setOperatorType(1);

            // 转审操作的关键参数
            dto.setApprovalType(7); // 7=已转审
            dto.setApprovalOpinion("转审给王五处理"); // 转审原因
            dto.setNextApproverId(3001L); // 新审批人ID(必填)
            dto.setNextApproverName("王五"); // 新审批人姓名(必填)
            -------------------------------------------------------------------------------------------------
            设置approvalFlowId,currentNodeId,operatorId(发起人ID),operatorName,operatorType(2=发起人)。
            设置approvalType为5(已撤销),approvalOpinion(撤回原因)。
        b.权限限制
            只有发起人可以撤回。只有审批中的流程可以撤回。已完成/已拒绝/已退回的流程不能撤回。
        c.执行逻辑
            校验是否发起人。如果不是发起人,抛出异常。如果是发起人,更新当前记录为已撤销。
            更新主表状态为已撤销。清空当前节点和审批人。触发业务Handler。发送撤回通知。
        d.调用示例
            设置operatorId为initiatorId,operatorType为2,approvalType为5。

24.API手册:通用提交API
    a.subCommit方法详解
        a.方法签名
            /**
             * 通用提交审批(自动保存业务数据并发起审批)
             * @param request 通用提交DTO
             * @return 提交结果
             */
            public R<?> subCommit(CommonCommitDTO request)
        b.方法作用
            前端统一提交入口。自动匹配审批流程。调用业务Handler保存数据。自动发起审批流程。
        c.适用场景
            前端通用审批提交页面。业务数据保存和审批发起一体化。支持免审批场景(无流程时直接执行业务逻辑)。
    b.自动流程匹配逻辑
        a.逻辑流程
            解析业务参数。调用Handler.parseParamsAndExecute。保存业务数据,返回业务ID。查询审批流程。如果找到流程,发起审批,返回审批结果。如果无流程,免审批,直接调用Handler.handle,返回成功。
        b.流程匹配规则
            优先匹配部门专属流程,查询条件为code = businessType AND dept_id = 当前用户部门ID AND status = '0'。无专属流程则匹配通用流程,查询条件为code = businessType AND dept_id IS NULL AND status = '0'。无流程则免审批,直接执行业务逻辑,不发起审批。
    c.调用示例
        a.CommonCommitDTO参数
            businessType为String类型,必填,代表业务类型编码。
            params为String类型,必填,代表业务参数JSON串。
            nextApproverId为Long类型,必填,代表首个节点审批人ID。
            nextApproverName为String类型,必填,代表首个节点审批人姓名。
        b.前端调用示例
            ---
            // 前端通用提交
            const submitApproval = async () => {
              const params = {
                businessType: 'uniform_claim',
                params: JSON.stringify({
                  id: 123456,
                  empId: 1001,
                  roleConfigId: 2001,
                  size: 'XL'
                }),
                nextApproverId: 3001,
                nextApproverName: '李四'
              };

              const result = await api.post('/approval/subCommit', params);
              if (result.success) {
                message.success('提交成功');
              }
            };
            ---
        c.后端Controller
            ---
            @RestController
            @RequestMapping("/approval")
            public class ApprovalController {

                @Autowired
                private TaskApprovalExecuteService taskApprovalExecuteService;

                @PostMapping("/subCommit")
                public R<?> subCommit(@RequestBody CommonCommitDTO request) {
                    return taskApprovalExecuteService.subCommit(request);
                }
            }
            ---
        d.Handler实现parseParamsAndExecute
            ---
            @Override
            public Long parseParamsAndExecute(String jsonParams) {
                // 解析参数
                JSONObject json = JSON.parseObject(jsonParams);
                Long id = json.getLong("id");

                // 如果id存在,说明是更新
                if (id != null) {
                    return id;
                }

                // 否则是新增,保存业务数据
                UniformClaimEntity entity = new UniformClaimEntity();
                entity.setEmployeeId(json.getLong("empId"));
                entity.setRoleConfigId(json.getLong("roleConfigId"));
                entity.setSize(json.getString("size"));
                uniformClaimService.save(entity);

                return entity.getId();
            }
            ---

25.API手册:查询审批人API
    a.queryApprover方法详解
        a.方法签名
            /**
             * 根据业务编码查询审批人下拉列表
             * @param code 业务类型编码
             * @return 审批人列表
             */
            public R<?> queryApprover(String code)
        b.方法作用
            查询首个节点的审批人列表。支持角色查询和用户查询。用于前端选择审批人。
        c.查询逻辑
            查询部门专属流程。如果找到,使用专属流程。如果未找到,查询通用流程。查询第一个节点。如果审批人类型为USER,查询指定用户。如果审批人类型为ROLE,查询角色下的用户。返回用户列表。
    b.返回数据结构
        a.数据结构
            R<List<SysUser>>对象,包含success、code、data字段。data为用户列表,包含userId、name、username、deptId、deptName。
        b.示例
            R<List<SysUser>> {
                success: true,
                code: 200,
                data: [
                    {
                        userId: 2001,
                        name: "李四",
                        username: "lisi",
                        deptId: 1001,
                        deptName: "人力资源部"
                    },
                    {
                        userId: 2002,
                        name: "王五",
                        username: "wangwu",
                        deptId: 1001,
                        deptName: "人力资源部"
                    }
                ]
            }
    c.调用示例
        a.后端调用
            // 查询首个节点审批人列表
            R<?> result = taskApprovalExecuteService.queryApprover("uniform_claim");

            if (result.isSuccess()) {
                List<SysUser> approverList = (List<SysUser>) result.getData();

                if (approverList != null && !approverList.isEmpty()) {
                    // 使用第一个审批人
                    SysUser approver = approverList.get(0);
                    dto.setNextApproverId(approver.getUserId());
                    dto.setNextApproverName(approver.getName());
                }
            }
        b.前端调用
            // 获取审批人列表
            const fetchApprovers = async () => {
              const result = await api.get('/approval/queryApprover', {
                params: { code: 'uniform_claim' }
              });

              if (result.success) {
                setApproverList(result.data);
              }
            };

            // 渲染选择器
            <Select
              placeholder="请选择审批人"
              onChange={(value, option) => {
                setNextApproverId(value);
                setNextApproverName(option.label);
              }}
            >
              {approverList.map(user => (
                <Option key={user.userId} value={user.userId} label={user.name}>
                  {user.name} - {user.deptName}
                </Option>
              ))}
            </Select>

26.API手册:待办/已办查询API
    a.queryProcessTodo方法详解
        a.方法签名
            /**
             * 查询当前用户的待办审批
             * @param current 页码
             * @param size 每页大小
             * @param code 业务类型(可选)
             * @param status 流程状态(可选)
             * @return 待办审批分页列表
             */
            public R<IPage<TaskApprovalMain>> queryProcessTodo(
                Integer current,
                Integer size,
                String code,
                String status
            )
        b.查询逻辑
            获取当前用户ID。查询待审批历史记录。提取流程ID列表。如果流程ID列表为空,返回空列表。如果不为空,查询审批主表。按待审批开始时间倒序。返回分页结果。
        c.返回数据结构
            R<IPage<TaskApprovalMain>> {
                success: true,
                data: {
                    records: [
                        {
                            id: 1,
                            approvalFlowId: "uuid-123",
                            businessType: "uniform_claim",
                            businessId: 123456,
                            initiatorName: "张三",
                            flowStatus: 2, // 审批中
                            currentNodeName: "部门领导审批",
                            currentApproverName: "李四",
                            pendingStartTime: "2026-02-08 10:00:00",
                            deptName: "技术部"
                        }
                    ],
                    total: 10,
                    current: 1,
                    size: 10
                }
            }
            -------------------------------------------------------------------------------------------------
            R<IPage<TaskApprovalMain>>对象,包含records、total、current、size字段。
            records包含审批主表信息,如id、approvalFlowId、businessType、businessId、initiatorName、flowStatus、currentNodeName、currentApproverName、pendingStartTime、deptName。
    b.queryProcessDone方法详解
        a.方法签名
            /**
             * 查询当前用户的待办审批
             * @param current 页码
             * @param size 每页大小
             * @param code 业务类型(可选)
             * @param status 流程状态(可选)
             * @return 待办审批分页列表
             */
            public R<IPage<TaskApprovalMain>> queryProcessTodo(
                Integer current,
                Integer size,
                String code,
                String status
            )
        b.查询逻辑
            queryProcessTodo获取当前用户ID。查询待审批历史记录。提取流程ID列表。如果流程ID列表为空,返回空列表。如果不为空,查询审批主表。按待审批开始时间倒序。返回分页结果。
        c.返回数据结构
            R<IPage<TaskApprovalMain>>对象,包含success、data字段。
            data包含records(列表)、total、current、size。
            records包含审批主表信息,如id、approvalFlowId、businessType、businessId、initiatorName、flowStatus(审批中为2)、currentNodeName、currentApproverName、pendingStartTime、deptName。
    c.分页查询示例
        a.后端Controller
            @RestController
            @RequestMapping("/approval")
            public class ApprovalController {

                @Autowired
                private TaskApprovalExecuteService taskApprovalExecuteService;

                /**
                 * 查询待办审批
                 */
                @GetMapping("/todo")
                public R<IPage<TaskApprovalMain>> queryTodo(
                        @RequestParam(defaultValue = "1") Integer current,
                        @RequestParam(defaultValue = "10") Integer size,
                        @RequestParam(required = false) String code,
                        @RequestParam(required = false) String status) {
                    return taskApprovalExecuteService.queryProcessTodo(current, size, code, status);
                }

                /**
                 * 查询已办审批
                 */
                @GetMapping("/done")
                public R<IPage<TaskApprovalMain>> queryDone(
                        @RequestParam(defaultValue = "1") Integer current,
                        @RequestParam(defaultValue = "10") Integer size,
                        @RequestParam(required = false) String processName,
                        @RequestParam(required = false) String status) {
                    return taskApprovalExecuteService.queryProcessDone(current, size, processName, status);
                }
            }
        b.前端调用
            // 查询待办审批
            const fetchTodoList = async (page = 1, size = 10) => {
              const result = await api.get('/approval/todo', {
                params: {
                  current: page,
                  size: size,
                  code: 'uniform_claim', // 可选:按业务类型过滤
                  status: '2' // 可选:按状态过滤
                }
              });

              if (result.success) {
                setTodoList(result.data.records);
                setTotal(result.data.total);
              }
            };

            // 查询已办审批
            const fetchDoneList = async (page = 1, size = 10) => {
              const result = await api.get('/approval/done', {
                params: {
                  current: page,
                  size: size,
                  status: '6' // 可选:只查已完成的
                }
              });

              if (result.success) {
                setDoneList(result.data.records);
                setTotal(result.data.total);
              }
            };

27.API手册:查看审批详情API
    a.searchProcess方法详解
        a.方法签名
            ---
            /**
             * 查看审批流程详情
             * @param request 查询请求(包含id或approvalFlowId)
             * @return 审批详情
             */
            public R<?> searchProcess(TaskApprovalOperateDTO request)
            ---
        b.方法作用
            查询业务详情(调用Handler.searchProcess)。查询当前/下一节点审批人列表。查询完整审批历史记录。用于审批详情页展示。
    b.返回数据结构
        a.SearchProcessVO结构
            SearchProcessVO {
                searchProcess: Object,           // 业务详情(由Handler返回)
                list: List<SysUserDTO>,          // 下一节点审批人列表
                historyList: List<TaskApprovalHistory>,  // 审批历史记录
                operateDTO: TaskApprovalOperateDTO,      // 流程操作信息
                userDTOS: List<SysUserDTO>       // 当前节点审批人列表(转审用)
            }
            -------------------------------------------------------------------------------------------------
            包含searchProcess(业务详情,由Handler返回)。
            list(下一节点审批人列表)。
            historyList(审批历史记录)。
            operateDTO(流程操作信息)。
            userDTOS(当前节点审批人列表,转审用)。
        b.完整返回示例
            success为true。
            data包含searchProcess(id、employeeId、employeeName、claimStatus、approvalTime)。
            list包含下一节点审批人信息(userId、name、deptName)。
            historyList包含历史记录(nodeName、approverName、approvalStatus、approvalOpinion、approvalTime、approvalDuration)。
            operateDTO包含流程信息(id、approvalFlowId、businessType、currentNodeId、currentNodeName、isFinalNode)。
            userDTOS包含当前节点审批人信息。
    c.调用示例
        a.后端Controller
            @RestController
            @RequestMapping("/approval")
            public class ApprovalController {

                @Autowired
                private TaskApprovalExecuteService taskApprovalExecuteService;

                /**
                 * 查看审批详情
                 */
                @PostMapping("/searchProcess")
                public R<?> searchProcess(@RequestBody TaskApprovalOperateDTO request) {
                    return taskApprovalExecuteService.searchProcess(request);
                }
            }
        b.前端调用
            // 查看审批详情
            const fetchProcessDetail = async (id) => {
              const result = await api.post('/approval/searchProcess', {
                id: id
              });

              if (result.success) {
                const { searchProcess, historyList, list, operateDTO, userDTOS } = result.data;

                // 业务详情
                setBusinessDetail(searchProcess);

                // 审批历史
                setApprovalHistory(historyList);

                // 下一节点审批人列表(同意审批时使用)
                setNextApproverList(list);

                // 当前节点审批人列表(转审时使用)
                setCurrentApproverList(userDTOS);

                // 流程信息
                setProcessInfo(operateDTO);
              }
            };
        c.前端展示审批历史
            // 渲染审批时间轴
            <Timeline>
              {historyList.map(item => (
                <Timeline.Item
                  key={item.id}
                  color={item.approvalStatus === 0 ? 'green' : item.approvalStatus === 2 ? 'blue' : 'red'}
                >
                  <div>
                    <strong>{item.nodeName}</strong>
                    <span style={{marginLeft: 10}}>{item.approverName}</span>
                  </div>
                  <div>{item.approvalOpinion}</div>
                  <div style={{color: '#999'}}>
                    {item.approvalTime}
                    {item.approvalDuration && ` (耗时: ${item.approvalDuration})`}
                  </div>
                </Timeline.Item>
              ))}
            </Timeline>

6.4 智慧工会:清单

00.进度
    a.20260123
        a.项目方案
            完成项目汇报PPT方案制作,公司内部讨论通过。
            截止日期:2026.01.30
            负责人:魏德良、京丽芳
        b.项目汇报
            去集团给领导汇报最终版方案,推进立项。
            截止日期:2026.02.06
            负责人:魏德良、京丽芳
        c.项目立项
            编写项目立项材料,配合工会完成项目立项工作
            截止日期:2026.02.13
            负责人:魏德良、京丽芳
        d.已开发功能客户核对
            节假日福利、生日福利等
            截止日期:2026.02.24
            负责人:魏德良、京丽芳。
        e.功能开发与确认
            与客户逐步确认每个模块的功能,进行开发工作,预计完成【维护】板块的所有后端开发工作【约20个功能点】,前端开发需协调。
            截止日期:2026.02.24
            负责人:张瑜、李嘉伟、周翔、董霄源、魏德良、魏佑宁。
        f.任务开始
            可以参考这样子的,结合群里的资料盒原型图,形成自己的详细设计说明书,明天下午咱们一起过一下功能,没问题的话就可以开始排期开发了
            大家按照各自的模块设计开始开发吧,周五中午左右把做了的功能都上线一下,下午开会过一遍。
    b.女职工工作
        a.女职工活动
            20260130,之前由【宋晶晶】负责
            合并到活动管理了,前端有一个是否指定人员,如果指定,点击选择按钮,选择你要发放活动公告给哪些人
            这个选择人员页面,就类似于用户管理的页面,可以发,发给钉钉上指定的人员
            中帼先进集体、中帼先进个人,这两个也放到劳模工匠管理
        b.20260324
            一级模块  具体任务                                                 优先级  截止日期     负责人              协作人
            项目立项  推进项目建议书评审、项目造价手续                             ※※※    2026.04.24  魏德良      
            项目研发  已开发内容全模块梳理,形成 todolist 待优化列表                ※※※    2026.03.27  魏德良      
            项目研发  完成系统优化改造                                           ※※※    2026.04.12  周翔、张瑜、李嘉伟   张智奇、魏德良
            项目研发  完成项目测试工作                                           ※※※    2026.04.17  郭子漉
            项目研发  完成项目移动端、大屏、工作台、全模块页面优化工作                 ※※※    2026.04.24  董霄源      
            项目研发  完成系统各角色操作手册工作                                   ※※※    2026.04.24  郭子漉      
            项目研发  完成客户汇报演示工作,推进系统培训上线                         ※※※    2026.04.24  魏德良      

01.维护
    a.职工关怀
        a.职工互助帮扶
            统筹基金募集、申请、审批及公示,支持数据导入与线上办理,实现流程规范、数据留存可追溯。
        b.困难职工帮扶
            困难职工信息建档、动态维护,支持申请与公示,为精准帮扶提供数据支撑。
        c.送温暖慰问
            管理慰问活动计划、实施及结果,支持信息导入与记录汇总,形成规范台账。
    b.职工福利
        a.节假日福利
            用于对工会法定节假日福利的标准设置、发放记录及统计分析进行统一管理。
        b.生日慰问
            自动化管理工会会员生日慰问福利,含当月生日名单统计、往期未发放人员查询、重复数据删除、清单生成后不可修改、发放记录登记及台账查询。
        c.职工健康
            用于对工会会员年度体检福利的标准配置、人员范围及实施情况进行管理,不包含医疗诊断及健康数据分析功能。
        d.工作服装
            规范工服预算、配置、申领发放及离职清算,支持“三年一换”与差额清算。
        e.独生子女奖励
            管理补助资格申报、校验、判定及月度台账生成,以人力系统数据及规则为依据。
        f.其他福利
            登记临时性福利台账。
    c.工会经费
        a.预算管理
            全流程管理年度及专项预算的编制、执行、监控与统计。
        b.财务管理
            统一配置会费标准、自动计算、记录收缴情况及查询台账。
    d.女职工服务
        a.日常活动
            策划组织女工主题活动,联动“全国书香三八”,支持报名、作品提交及成果展示。
        b.荣誉申报
            登记、查询巾帼类荣誉信息,提供统计数据支撑。
    e.心理咨询
        a.心理咨询预约
            过程管理,可在线预约专业心理咨询师进行 1 对 1 服务
        b.专属心理测评
            内容(心理健康 / 职业倦怠 / 压力状态 / 人格特质)、测评记录(时间、类型、核心结论)、支持按 “年度 / 测评类型” 筛选;
        c.特殊群体“心理关爱”
            女职工(孕期心理调适、职场性别压力疏导)、困难职工心理支持、
        d.心理科普内容
            包含 “心灵课堂” 栏目、心理科普视频(职工心理调适短视频)
        e.总结
            记录管理心理咨询服务,建立维护台账,实现规范记录与数据汇总。
    f.维权服务
        a.维权申请
            台账化管理维权事项,记录服务对象信息与处理进度,支持过程跟踪与结果查询。
        b.维权案例库
            略

02.建设
    a.工会组织
        a.组织架构
            管理工会内部组织、会员及岗位信息,实现规范记录与动态维护。
    b.会员管理
        a.会员画像
            用于对工会会员的基础信息、兴趣特长及偏好进行记录和维护,实现会员信息的可查询、可分析和动态管理。
        b.人才库
            登记管理工会及所属单位人才信息,支持附件上传与修改。
    c.劳动与技能竞赛
        a.劳动竞赛
            用于对劳动竞赛活动的基本信息、参赛人员、获奖结果及相关资料进行统一登记、查询和留档管理,并支持优秀获奖人员向劳模评选业务的推优衔接。
        b.技术比武
            用于对技术比武活动的基本信息、参赛人员、获奖结果及相关资料进行统一登记、查询和留档管理,并支持优秀获奖人员向劳模评选业务的推优衔接。
        c.安康杯
            用于对“安康杯”竞赛活动的方案发布、组织报名、过程检查、考核评分及评选表彰进行全流程数字化管理,实现竞赛台账统一归档。
    d.创新活动
        a.五小发明
            用于对“五小发明”和职工创新成果的信息登记、统计查询、资料归档及表彰台账进行统一管理,支持与技术中心季度表彰工作的业务衔接。
        b.劳模工匠
            用于对各级劳模、工匠人员信息及其荣誉情况进行统一登记、统计和台账管理,为表彰管理和相关业务提供数据支撑。

03.参与
    a.民主管理
        a.企务公开
            支持下级公司、各部门提交公开文件,由工会审批后线上发布并归档,在线发布信息,支持职工查看与反馈(采纳可获积分)。
        b.职代会
            用于管理职工代表大会相关工作的模块,实现议题、提案、在线投票到结果公示的全流程线上化。
        c.工代会
            用于管理工会代表大会相关工作的模块,实现代表管理、建家活动投票及会议全流程管理。
        d.职工董事
            用于对职工董事的选任信息、履职活动、提案建议、会议参与及考核评价进行全周期数字化管理。

04.教育
    a.培训
        a.培训计划
            管理培训相关信息(名称、类型、内容等),支持新增、编辑等操作。
        b.培训结果
            系统化管理培训完成情况、考核结果、证书发放及资料归档。
    b.创新理论宣讲
        管理职工理论学习与思想教育活动,涵盖宣讲计划及学习数据统计。
    c.文体活动
        a.活动策划
            用于对工会文体活动进行统一策划登记和信息管理,支撑活动组织与过程留痕。
        b.活动结果
            用于对已开展的文体活动结果资料进行统一归档和查询管理,形成活动实施结果档案。
    d.工会阵地
        a.荣誉中心
            用于对工会荣誉的登记与管理,实现线上台账。
        b.职工之家
            用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
        c.职工书屋
            用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
        d.职工活动室
            用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
        e.职工(劳模)创新工作室
            用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
        f.妈咪小屋
            用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
        g.安康工作站
            用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
        h.工匠学院
            用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
        i.司机之家
            用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
    e.资料中心
        对工会工作相关的各类资料文件进行集中登记、分类存储与展示管理,支持资料名称、类型、用途等核心信息的录入与公开呈现,方便职工在线查询、查看所需资料。
    f.阅读中心
        全周期数字化运营工会年度主题阅读活动,涵盖方案发布、报名参与、作品提交、分级审核评选、成果展示归档,联动积分激励体系,打造“书香工会”线上阵地。
    g.工会动态
        用于发布工会相关新闻、通知、基层活动情况等信息,支持信息登记发布与职工在线查看。

11.Apifox
    a.流程管理
        会员用户下拉框
        流程管理查看
        流程管理增改
        流程管理删除
        流程管理分页查询
        流程管理业务类型下拉框
        流程管理审批人下拉框
        工会组织下拉框
    b.会员
        集团用户查询
        会员画像分页
        分页查询系统游离用户
        分页查询系统有组织用户
        分页查询非会员用户
        分页查询系统会员用户
        邀请入会
        查询入会游客工会登记表
    c.活动管理
        验证码
        活动类型下拉框
        登录
        活动保存
        提交活动内容
        发送公告
        活动报名
        报名人员列表
        活动签到
        活动列表展示
        测试审批
        活动删除
        活动详情
        活动结束发送消息给负责人改变状态
        获取负责人
        招募人员列表
        活动结果登记
        活动结果登记列表
        场地列表
        物资列表
        活动确认结束按钮
    d.审批管理
        待办分页查询
        审批人下拉
        公共审批
        公共提交
        会员迁入提交传参
        审批查看详情
        已办分页查询
        会员迁出提交传参
    e.职工关怀
        a.困难职工帮扶管理
            ZGBF-0001-困难职工档案分页查询
            ZGBF-0002-困难职工帮扶申请-保存
            困难职工帮扶审批-公共提交
            ZGBF-0003-公示-分页查询
            ZGBF-0004-公示-保存
            ZGBF-0010-文件导入
            ZGBF-0011-修改导入档案的项目信息、文件附件
        b.职工互助帮扶管理
            ZGHZ-0010-职工募集明细-导入
    f.民主管理
        企务公开新增/修改
        企务公开查看详情
        企务公开删除
        企务公开分页查询
        企务公开--首页分页查询

12.UI设计图-PC
    a.工作台
        系统主界面及功能导航入口。
    b.维护
        a.职工关怀
            a.职工互助帮扶
                统筹基金募集、申请、审批及公示,支持数据导入与线上办理,实现流程规范、数据留存可追溯。
            b.困难职工帮扶
                困难职工信息建档、动态维护,支持申请与公示,为精准帮扶提供数据支撑。
            c.送温暖慰问
                管理慰问活动计划、实施及结果,支持信息导入与记录汇总,形成规范台账。
        b.职工福利
            a.节假日福利
                用于对工会法定节假日福利的标准设置、发放记录及统计分析进行统一管理。
            b.生日慰问
                自动化管理工会会员生日慰问福利,含当月生日名单统计、往期未发放人员查询、重复数据删除、清单生成后不可修改、发放记录登记及台账查询。
            c.职工健康
                用于对工会会员年度体检福利的标准配置、人员范围及实施情况进行管理,不包含医疗诊断及健康数据分析功能。
            d.工作服装
                规范工服预算、配置、申领发放及离职清算,支持“三年一换”与差额清算。
            e.独生子女奖励
                管理补助资格申报、校验、判定及月度台账生成,以人力系统数据及规则为依据。
            f.其他福利
                登记临时性福利台账。
        c.工会经费
            a.预算管理
                全流程管理年度及专项预算的编制、执行、监控与统计。
            b.财务管理
                统一配置会费标准、自动计算、记录收缴情况及查询台账。
        d.女职工服务
            a.日常活动
                策划组织女工主题活动,联动“全国书香三八”,支持报名、作品提交及成果展示。
            b.荣誉申报
                登记、查询巾帼类荣誉信息,提供统计数据支撑。
        e.心理咨询
            记录管理心理咨询服务,建立维护台账,实现规范记录与数据汇总。
        f.维权服务
            a.维权申请
                台账化管理维权事项,记录服务对象信息与处理进度,支持过程跟踪与结果查询。
            b.维权案例库
                维权相关案例的归集与查询库。
    c.建设
        a.工会组织
            a.组织架构
                管理工会内部组织、会员及岗位信息,实现规范记录与动态维护。
        b.会员管理
            a.会员画像
                用于对工会会员的基础信息、兴趣特长及偏好进行记录和维护,实现会员信息的可查询、可分析和动态管理。
            b.人才库
                登记管理工会及所属单位人才信息,支持附件上传与修改。
        c.劳动与技能竞赛
            a.劳动竞赛
                用于对劳动竞赛活动的基本信息、参赛人员、获奖结果及相关资料进行统一登记、查询和留档管理,并支持优秀获奖人员向劳模评选业务的推优衔接。
            b.技术比武
                用于对技术比武活动的基本信息、参赛人员、获奖结果及相关资料进行统一登记、查询和留档管理,并支持优秀获奖人员向劳模评选业务的推优衔接。
            c.安康杯
                用于对“安康杯”竞赛活动的方案发布、组织报名、过程检查、考核评分及评选表彰进行全流程数字化管理,实现竞赛台账统一归档。
        d.创新活动
            a.五小发明
                用于对“五小发明”和职工创新成果的信息登记、统计查询、资料归档及表彰台账进行统一管理,支持与技术中心季度表彰工作的业务衔接。
            b.劳模工匠
                用于对各级劳模、工匠人员信息及其荣誉情况进行统一登记、统计和台账管理,为表彰管理和相关业务提供数据支撑。
    d.参与
        a.民主管理
            a.企务公开
                支持下级公司、各部门提交公开文件,由工会审批后线上发布并归档,在线发布信息,支持职工查看与反馈(采纳可获积分)。
            b.职代会
                用于管理职工代表大会相关工作的模块,实现议题、提案、在线投票到结果公示的全流程线上化。
            c.工代会
                用于管理工会代表大会相关工作的模块,实现代表管理、建家活动投票及会议全流程管理。
            d.职工董事
                用于对职工董事的选任信息、履职活动、提案建议、会议参与及考核评价进行全周期数字化管理。
    e.教育
        a.培训
            a.培训计划
                管理培训相关信息(名称、类型、内容等),支持新增、编辑等操作。
            b.培训结果
                系统化管理培训完成情况、考核结果、证书发放及资料归档。
        b.创新理论宣讲
            管理职工理论学习与思想教育活动,涵盖宣讲计划及学习数据统计。
        c.文体活动
            a.活动策划
                用于对工会文体活动进行统一策划登记和信息管理,支撑活动组织与过程留痕。
            b.活动结果
                用于对已开展的文体活动结果资料进行统一归档和查询管理,形成活动实施结果档案。
        d.工会阵地
            a.荣誉中心
                用于对工会荣誉的登记与管理,实现线上台账。
            b.职工之家
                用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
            c.职工书屋
                用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
            d.职工活动室
                用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
            e.职工(劳模)创新工作室
                用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
            f.妈咪小屋
                用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
            g.安康工作站
                用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
            h.工匠学院
                用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
            i.司机之家
                用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
        e.资料中心
            对工会工作相关的各类资料文件进行集中登记、分类存储与展示管理,支持资料名称、类型、用途等核心信息的录入与公开呈现,方便职工在线查询、查看所需资料。
        f.阅读中心
            全周期数字化运营工会年度主题阅读活动,涵盖方案发布、报名参与、作品提交、分级审核评选、成果展示归档,联动积分激励体系,打造“书香工会”线上阵地。
        g.工会动态
            用于发布工会相关新闻、通知、基层活动情况等信息,支持信息登记发布与职工在线查看。
    f.系统设置
        a.积分兑换
            用于管理职工积分及积分规则的模块。支持积分规则配置、积分发放、积分记录查询等功能。
        b.预警提醒
            用于对各类预警规则进行管理的模块。
    g.AI智能体
        a.智能问数
            用于支持工会相关数据的智能查询、统计分析,用户可通过自然语言或预设条件查询经费使用、活动参与率、帮扶数据等核心指标,实现数据快速提取与可视化呈现,为工会决策提供数据支持。
        b.智能问答
            用于搭建工会服务智能咨询平台,解答职工关于福利申领、活动参与、维权流程、经费政策等常见问题,支持7x24小时自动响应,减少人工咨询压力,提升职工服务效率与体验。

13.UI设计图-APP
    a.个人中心
        a.个人中心管理
            提供对个人基本信息、组织机构查询、工会服务办理等相关信息的新增、编辑、删除以及查询等功能服务,包括姓名、头像、联系方式、所属组织、服务办理记录、消息通知等字段信息。
    b.新闻咨询
        a.新闻咨询管理
            提供对新闻资讯相关信息的查询、浏览、评论、分享等功能服务,包括资讯标题、发布时间、正文内容、作者、浏览量、点赞量、评论内容等字段信息。
    c.培训与活动管理
        a.培训管理
            提供对学习课程、阅读资料、分享内容等相关信息的查询、浏览、上传、下载等功能服务,包括课程名称、阅读书籍、分享心得、发布时间、点赞量、评论内容等字段信息。
        b.活动管理
            提供对各类活动参与、文体人才展示相关信息的查询、报名、投票、点赞等功能服务,包括活动名称、活动详情、报名状态、人才风采、投票结果等字段信息。
    d.工会阵地
        a.工会阵地使用申请
            提供对工会阵地使用申请相关信息的新增、编辑、删除以及查询等功能服务,包括阵地名称、申请时间、使用时间段、使用用途、申请人、审批状态等字段信息。
    e.积分管理
        a.积分获取
            提供对积分获取相关信息的查询、统计等功能服务,包括积分类型、获取时间、积分数量、获取场景等字段信息。
        b.积分商城
            提供对积分兑换相关信息的查询、统计等功能服务,包括兑换商品、所需积分、兑换时间、兑换状态等字段信息。

6.5 智慧工会:分配

00.分配
    a.技能
        请使用 work-log-workflow 技能生成工作日志:
        前端-建设/劳动竞赛--页面搭建(含列表、筛选、资料展示、推优衔接功能)  计划于 2026.02.28 完成
        后端-建设/劳动竞赛--接口开发(含 CRUD、文档留档、向劳模推优逻辑接口)    计划于 2026.02.28 完成
        ...
        周期:2026/2/26 ~ 2026/3/24

01.张瑜
    a.一期任务
        后端-日常活动
        后端-荣誉申报
        后端-心理咨询
        -----------------------------------------------------------------------------------------------------
        前端-心理咨询--页面搭建(含列表、筛选、新增/编辑弹窗)
        后端-心理咨询--接口开发(含增删改查)
        数据库-心理咨询--表设计与创建
        -----------------------------------------------------------------------------------------------------
        前端-女职工工作/女职工活动--页面搭建(含列表、筛选、新增/编辑弹窗)
        后端-女职工工作/女职工活动--接口开发(含增删改查)
        前端-女职工工作/巾帼先进集体--页面搭建(含列表、筛选、新增/编辑弹窗、附件上传)
        后端-女职工工作/巾帼先进集体--接口开发(含增删改查、附件上传)
        前端-女职工工作/巾帼先进个人--页面搭建(含列表、筛选、新增/编辑弹窗、附件上传)
        后端-女职工工作/巾帼先进个人--接口开发(含增删改查、附件上传)
        数据库-女职工工作--表设计与创建
    b.二期任务
        建设:劳动与技能竞赛、创新活动
        教育:工会阵地
        AI智能体:智能问数、智能问答
        -----------------------------------------------------------------------------------------------------
        请使用 work-log-workflow 技能生成工作日志:
        前端-建设/劳动竞赛--页面搭建(含列表、筛选、资料展示、推优衔接功能)                                计划于 2026.02.28 完成
        后端-建设/劳动竞赛--接口开发(含 CRUD、文档留档、向劳模推优逻辑接口)                               计划于 2026.02.28 完成
        前端-建设/技术比武--页面搭建(含列表、筛选、获奖结果登记台账)                                      计划于 2026.03.04 完成
        后端-建设/技术比武--接口开发(含增删改查、获奖资料管理)                                            计划于 2026.03.04 完成
        前端-建设/安康杯--页面搭建(含方案发布、报名、评分表彰、台账归档展示)                              计划于 2026.03.06 完成
        后端-建设/安康杯--接口开发(含报名校验、考核评分逻辑、全流程数字化接口)                            计划于 2026.03.06 完成
        前端-建设/五小发明--页面搭建(含成果登记、统计查询、表彰展示)                                      计划于 2026.03.11 完成
        后端-建设/五小发明--接口开发(含信息登记 CRUD、统计分析、衔接外部接口)                             计划于 2026.03.11 完成
        前端-建设/劳模工匠--页面搭建(含身份登记、荣誉展示、统计台账展示)                                  计划于 2026.03.13 完成
        后端-建设/劳模工匠--接口开发(含劳模身份管理、荣誉记录 CRUD 接口)                                  计划于 2026.03.13 完成
        -----------------------------------------------------------------------------------------------------
        前端-教育/工会阵地(荣誉中心)--页面搭建(含详情展示、多媒体资料维护)                                 计划于 2026.03.18 完成
        前端-教育/工会阵地(职工之家)--页面搭建(含详情展示、多媒体资料维护)                                 计划于 2026.03.18 完成
        前端-教育/工会阵地(职工书屋)--页面搭建(含详情展示、多媒体资料维护)                                 计划于 2026.03.18 完成
        前端-教育/工会阵地(职工活动室)--页面搭建(含详情展示、多媒体资料维护)                               计划于 2026.03.20 完成
        前端-教育/工会阵地(职工(劳模)创新工作室)--页面搭建(含详情展示、多媒体资料维护)                    计划于 2026.03.20 完成
        前端-教育/工会阵地(妈咪小屋)--页面搭建(含详情展示、多媒体资料维护)                                 计划于 2026.03.20 完成
        前端-教育/工会阵地(安康工作站)--页面搭建(含详情展示、多媒体资料维护)                               计划于 2026.03.20 完成
        前端-教育/工会阵地(工匠学院)--页面搭建(含详情展示、多媒体资料维护)                                 计划于 2026.03.20 完成
        前端-教育/工会阵地(司机之家)--页面搭建(含详情展示、多媒体资料维护)                                 计划于 2026.03.20 完成
        -----------------------------------------------------------------------------------------------------
        后端-教育/工会阵地(荣誉中心)--接口开发(含阵地基础信息维护、多媒体文件处理接口)                    计划于 2026.03.18 完成
        后端-教育/工会阵地(职工之家)--接口开发(含阵地基础信息维护、多媒体文件处理接口)                    计划于 2026.03.18 完成
        后端-教育/工会阵地(职工书屋)--接口开发(含阵地基础信息维护、多媒体文件处理接口)                    计划于 2026.03.18 完成
        后端-教育/工会阵地(职工活动室)--接口开发(含阵地基础信息维护、多媒体文件处理接口)                  计划于 2026.03.20 完成
        后端-教育/工会阵地(职工(劳模)创新工作室)--接口开发(含阵地基础信息维护、多媒体文件处理接口)      计划于 2026.03.20 完成
        后端-教育/工会阵地(妈咪小屋)--接口开发(含阵地基础信息维护、多媒体文件处理接口)                    计划于 2026.03.20 完成
        后端-教育/工会阵地(安康工作站)--接口开发(含阵地基础信息维护、多媒体文件处理接口)                   计划于 2026.03.20 完成
        后端-教育/工会阵地(工匠学院)--接口开发(含阵地基础信息维护、多媒体文件处理接口)                    计划于 2026.03.20 完成
        后端-教育/工会阵地(司机之家)--接口开发(含阵地基础信息维护、多媒体文件处理接口)                    计划于 2026.03.20 完成
        前端-智能问数--页面搭建(支持 子阵地,含详情展示、多媒体资料维护)                                  计划于 2026.03.24 完成
        后端-智能问数--接口开发(含阵地基础信息维护、多媒体文件处理接口)                                   计划于 2026.03.24 完成
        -----------------------------------------------------------------------------------------------------
        前端-智能问答--页面搭建(支持 子阵地,含详情展示、多媒体资料维护)                                  计划于 2026.03.24 完成
        后端-智能问答--接口开发(含阵地基础信息维护、多媒体文件处理接口)                                   计划于 2026.03.24 完成
        周期:2026/2/26 ~ 2026/3/24

02.周翔
    a.一期任务
        后端-预算管理
        后端-财务管理
        后端-维权申请
        后端-维权案例库
        -----------------------------------------------------------------------------------------------------
        后端-预算统计开发年度、专项、执行率统计接口
        后端-预算监控数据定时生成、查询、预警接口
        后端-预算执行、执行记录查询接口
        后端-预算编制预新增、编辑、删除、提交审核接口
        -----------------------------------------------------------------------------------------------------
        后端-维权案例新增、编辑、删除、列表查询、详情查询
        后端-维权事项受理、维权处理进度登记、维权事项办结、维权事项撤回、维权台账查询、维权结果统计查询
        后端-维权申请新增、编辑、删除、列表查询、详情查询
        -----------------------------------------------------------------------------------------------------
        后端-年度汇缴统计,汇缴统计查询,导出接口
        后端-会费收缴登记,收缴记录查询,收缴状态更新接口
        后端-职工基数查询,一键获取计算基数,基数导出接口
        后端-会费标准生效逻辑(开发标准生效/失效逻辑,支持按时间/人员类型生效,确保计算时取最新有效标准)
        后端-会费标准配置接口(开发会费标准新增 / 编辑/删除 /查询接口,配置缴纳比例、基数计算规则、适用人员类型)
    b.一期进度
        培训计划 - 2026/2/26
        培训结果 - 2026/2/28
        创新理论宣讲 - 2026/3/4
        活动策划 - 2026/3/6
        活动结果 - 2026/3/11
        资料中心 - 2026/3/13
        阅读中心 - 2026/3/18
        工会动态 - 2026/3/18
        预警提醒 - 2026/3/24

03.李嘉伟
    a.一期任务
        后端-送温暖慰问
        后端-工作服装
        后端-独生子女奖励
        后端-其他福利
        -----------------------------------------------------------------------------------------------------
        慰问活动管理-支持按条件筛选后导出Excel
        慰问活动管理-自动生成规范台账
        慰问活动管理-信息导入,支持Excel批量导入慰问活动数据
        慰问活动管理-建表,添加索引
        慰问活动管理-新增、编辑、删除、查询慰问活动详情
        -----------------------------------------------------------------------------------------------------
        工作服装-审批日志-关键变更审批记录
        工作服装-预算与台账-生成发放与清算台账,支持导出
        工作服装-预算与台账-支持年度工服预算配置与实际支出对比
        工作服装-离职清算-员工未满3年离职时,系统按比例计算应扣款项 (差额清算)
        工作服装-申领与发放-支持管理员审核并登记发放记录
        工作服装-申领与发放-员工提交申领,系统校验资格 (上次发放时间≥ 3年)
        工作服装-周期管理-默认执行"三年一换"规则,系统自动判断员工是否满足申领条件
        工作服装-分析业务-初始化数据库表
        -----------------------------------------------------------------------------------------------------
        独生子女奖励-台账管理-生成月度发放台账,标记发放状态 (待发/已发/失败)
        独生子女奖励-本单位上年度在岗职工平均工资配置绑定
        独生子女奖励-奖励金额计算规则,本单位上年度在岗职工平均工资× 30%(该工资需人工配置)
        独生子女奖励-材料上传,退休证信息、独生子女光荣证等图片文件
        独生子女奖励-信息维护,对退休职工独生子女一次性奖励相关信息的新增、编辑、删除以及查询
        独生子女奖励-数据对接,对接人力资源系统数据,校验信息
        独生子女奖励-分析业务,初始化数据库表
        -----------------------------------------------------------------------------------------------------
        其他福利-附件支持-可上传审批单、签收单等证明材料
        其他福利-台账导出-支持按时间、对象等条件查询并导出Excel台账
        其他福利-基础信息记录-记录对象、金额/物品、发放时间、事由说明等CRUD
        其他福利-业务分析初始化数据库表
    b.一期进度
        民主管理:
        整合测试库数据(2026-02-26)- 本地数据库合并测试库;
        企务公开(2026-02-27/2026-03-03)- 后端API(创建/查询/状态更新),文件上传(支持PDF/DOCX);
        职代会(2026-03-03/2026-03-10)- 提案创建与列表相关API,投票接口(单选/多选),投票结果统计;
        工代会(2026-03-10/2026-03-15)- 用户权限对接(RBAC),代表信息维护(CRUD),建家活动投票相关API;
        职工董事(2026-03-15/2026-03-18)- 董事信息展示,履职记录录入(表单),提案提交(复用职代会提案模型);
        -----------------------------------------------------------------------------------------------------
        系统设置:
        积分兑换(2026-03-19/2026-03-24)- 积分展示相关API,自动积分发放接口(供企务公开调用),个人积分查询,积分明细相关,积分获取渠道日志,积分操作相关 & 日志。

04.董霄源
    a.一期任务
        前端-在职职工独生子女费用新增页--页面搭建
        前端-在职职工独生子女费列表页--页面搭建
        -----------------------------------------------------------------------------------------------------
        前端-独生子女申领信息列表页--接口对接
        前端-独生子女申领信息列表页--页面搭建
        前端-独生子女申领信息填报页面--接口对接
        前端-独生子女申领信息填报--页面搭建
        -----------------------------------------------------------------------------------------------------
        前端-送温暖慰问活动新增,删除,编辑--接口对接
        前端-送温暖慰问活动列表接口,删除--接口对接
        前端-送温暖慰问活动计划新增页--页面搭建
        前端-送温暖活动列表页--页面搭建
    b.一期进度
        建设模块:劳动竞赛,技术比武,安康杯,五小发明,劳模工匠页面搭建及接口对接--2026/3/9
        参与模块:企务公开,职代会,工代会,职工董事页面开发接口对接--2026/3/13
        教育模块:培训,理论宣讲,文体活动,荣誉中心,职工之家,职工书屋,职工活动室,创新工作室,妈咪小屋,安康工作站,工匠学院,司机之家,资料中心,阅读中心,工会动态页面开发接口对接--2026/3/19
        系统设置:积分兑换,预警提醒页面搭建及接口对接--2026/3/24

11.智能问数
    a.说明1
        后端开发-数据模型设计 & 查询指标接口框架搭建
        后端开发-自然语言解析模块接口开发(经费/帮扶类)
        后端开发-预设条件查询接口开发(活动参与率/多维筛选)
        后端开发-统计分析聚合接口开发(数据汇总/趋势计算)
        后端开发-可视化数据接口开发(图表数据格式化输出)
        后端开发-接口联调 & 文档留档
        -----------------------------------------------------------------------------------------------------
        前端开发-页面框架搭建 & 路由配置 & 子阵地结构
        前端开发-自然语言输入框 & 查询结果列表页开发
        前端开发-数据可视化图表组件开发(折线/柱状/饼图)
        前端开发-多媒体资料维护页面开发
        前端开发-前后端联调 & 样式优化 & 问题修复
        -----------------------------------------------------------------------------------------------------
        测试-后端接口单元测试(自然语言解析模块)
        测试-后端接口单元测试(查询统计模块)
    b.说明2
        ====================================================================
                            智能问数项目工作计划
        ====================================================================
        项目: 工会项目 - 智能问数
        负责人: 张瑜
        周期: 2026/02/26 - 2026/03/24

        【项目概述】
        智能问数是基于自然语言处理的数据查询分析系统,用户可以通过自然
        语言提问,系统自动解析并返回可视化数据分析结果。

        --------------------------------------------------------------------
        【工作计划详情】
        --------------------------------------------------------------------

        日期          | 任务类别 | 具体任务内容                              | 工时
        -------------|----------|-------------------------------------------|------
        2026/02/26   | 后端开发 | 数据模型设计 & 查询指标接口框架搭建         | 2
                     | 后端开发 | 自然语言解析模块接口开发(经费/帮扶类)     | 2
        2026/02/27   | 后端开发 | 预设条件查询接口开发(活动参与率/多维筛选) | 2
        2026/03/02   | 后端开发 | 统计分析聚合接口开发(数据汇总/趋势计算)   | 2
        2026/03/03   | 后端开发 | 可视化数据接口开发(图表数据格式化输出)    | 2
        2026/03/04   | 后端开发 | 接口联调 & 文档留档                       | 2
        2026/03/05   | 前端开发 | 页面框架搭建 & 路由配置 & 子阵地结构      | 3
        2026/03/06   | 前端开发 | 自然语言输入框 & 查询结果列表页开发        | 3
        2026/03/09   | 前端开发 | 数据可视化图表组件开发(折线/柱状/饼图)   | 3
        2026/03/10   | 前端开发 | 多媒体资料维护页面开发                    | 2
        2026/03/11   | 前端开发 | 前后端联调 & 样式优化 & 问题修复          | 2
        --------------------------------------------------------------------
        2026/03/13   | 测试     | 后端接口单元测试(自然语言解析模块)       | 3
                     | 测试     | 后端接口单元测试(查询统计模块)          | 2
                     | 修复     | Bug修复与回归测试                        | 2
        2026/03/16   | 优化     | 自然语言解析准确率优化                    | 3
                     | 优化     | 查询性能优化(数据库索引/查询语句优化)   | 2
                     | 测试     | 优化后功能验证                           | 2
        2026/03/17   | 功能开发 | 数据导出功能(支持Excel/PDF导出)         | 3
                     | 功能开发 | 数据缓存机制实现(常用查询结果缓存)      | 2
                     | 测试     | 导出功能测试                            | 2
        2026/03/18   | 功能开发 | 查询历史记录功能(历史保存/快速复用)     | 3
                     | 功能开发 | 收藏夹功能(常用查询收藏管理)            | 2
                     | 测试     | 历史记录功能测试                        | 2
        2026/03/19   | 优化     | 图表交互体验优化(hover提示/点击联动)    | 3
                     | 优化     | 查询响应加载动画优化(骨架屏/进度提示)   | 2
                     | 测试     | 用户体验验证                            | 2
        2026/03/20   | 功能开发 | 数据权限控制实现(按角色/部门数据隔离)   | 3
                     | 功能开发 | 查询审计日志记录                         | 2
                     | 测试     | 权限与审计功能测试                      | 2
        2026/03/23   | 集成     | 前后端集成测试(全流程端到端测试)        | 3
                     | 集成     | 与工会其他子系统接口联调                 | 2
                     | 修复     | 联调问题修复                            | 2
        2026/03/24   | 验收     | 用户验收测试准备                        | 2
                     | 验收     | 用户验收测试执行与问题收集               | 3
                     | 文档     | 部署文档与用户操作手册编写               | 2

        --------------------------------------------------------------------
        【交付物清单】
        --------------------------------------------------------------------
        1. 测试文档: 单元测试报告、集成测试报告
        2. 功能模块: 数据导出、查询历史、收藏夹、权限控制、审计日志
        3. 优化项: NLP准确率提升、查询性能优化、用户体验优化
        4. 文档: 部署文档、用户操作手册

12.智能问答
    a.说明1
        后端开发-知识库数据模型设计 & FAQ管理接口框架
        后端开发-FAQ增删改查接口开发(福利/活动/维权类)
        后端开发-意图识别 & 关键词匹配接口开发
        后端开发-多轮对话会话管理接口开发
        后端开发-自动响应逻辑接口 & 兜底回复机制
        后端开发-接口联调 & 文档留档
        -----------------------------------------------------------------------------------------------------
        前端开发-页面框架搭建 & 路由配置 & 子阵地结构
        前端开发-对话窗口组件(消息气泡/输入框/发送逻辑)
        前端开发-FAQ知识库管理页面开发
        前端开发-多媒体资料维护页面开发
        前端开发-前后端联调 & 样式优化 & 问题修复
        -----------------------------------------------------------------------------------------------------
        测试-后端接口单元测试(意图识别模块)
        测试-后端接口单元测试(会话管理模块)
        测试-前端接口单元测试(意图识别模块)
        测试-前端接口单元测试(会话管理模块)
    b.说明2
        ====================================================================
                            智能问答项目工作计划
        ====================================================================
        项目: 工会项目 - 智能问答
        负责人: 张瑜
        周期: 2026/02/26 - 2026/03/24

        【项目概述】
        智能问答是基于FAQ知识库的对话系统,通过意图识别和关键词匹配,
        为用户提供工会相关问题的自动解答服务。

        --------------------------------------------------------------------
        【工作计划详情】
        --------------------------------------------------------------------

        日期          | 任务类别 | 具体任务内容                              | 工时
        -------------|----------|-------------------------------------------|------
        2026/02/26   | 后端开发 | 知识库数据模型设计 & FAQ管理接口框架      | 3
        2026/02/27   | 后端开发 | FAQ增删改查接口开发(福利/活动/维权类)    | 2
        2026/03/02   | 后端开发 | 意图识别 & 关键词匹配接口开发             | 2
        2026/03/03   | 后端开发 | 多轮对话会话管理接口开发                  | 2
        2026/03/04   | 后端开发 | 自动响应逻辑接口 & 兜底回复机制           | 2
        2026/03/05   | 后端开发 | 接口联调 & 文档留档                      | 2
        2026/03/06   | 前端开发 | 页面框架搭建 & 路由配置 & 子阵地结构     | 3
        2026/03/09   | 前端开发 | 对话窗口组件(消息气泡/输入框/发送逻辑)  | 3
        2026/03/10   | 前端开发 | FAQ知识库管理页面开发                    | 3
        2026/03/11   | 前端开发 | 多媒体资料维护页面开发                   | 2
        2026/03/12   | 前端开发 | 前后端联调 & 样式优化 & 问题修复         | 2
        --------------------------------------------------------------------
        2026/03/13   | 测试     | 后端接口单元测试(意图识别模块)          | 3
                     | 测试     | 后端接口单元测试(会话管理模块)          | 2
                     | 修复     | Bug修复与回归测试                       | 2
        2026/03/16   | 优化     | 意图识别准确率优化(扩充训练样本)        | 3
                     | 优化     | FAQ知识库结构优化(多层级分类/标签体系)  | 2
                     | 测试     | 优化后功能验证                          | 2
        2026/03/17   | 功能开发 | 多模态答案支持(图文混排/视频链接)       | 3
                     | 功能开发 | 答案推荐算法优化(相关问题推荐)         | 2
                     | 测试     | 推荐功能测试                           | 2
        2026/03/18   | 功能开发 | 快捷问题入口开发(高频问题快捷按钮)      | 2
                     | 功能开发 | 问题反馈功能开发(答案不满意/建议反馈)   | 3
                     | 测试     | 反馈功能测试                           | 2
        2026/03/19   | 优化     | 对话交互体验优化(打字机效果/快捷回复)   | 3
                     | 优化     | 答案富文本展示优化(Markdown渲染)        | 2
                     | 测试     | 用户体验验证                           | 2
        2026/03/20   | 功能开发 | 人工客服转接功能(无法解答时转人工)      | 3
                     | 功能开发 | 会话评价功能(满意/不满意评价收集)      | 2
                     | 测试     | 转接与评价功能测试                     | 2
        2026/03/23   | 集成     | 前后端集成测试(全流程端到端测试)        | 3
                     | 集成     | 与工会其他子系统接口联调                | 2
                     | 修复     | 联调问题修复                           | 2
        2026/03/24   | 验收     | 用户验收测试准备                       | 2
                     | 验收     | 用户验收测试执行与问题收集              | 3
                     | 文档     | 部署文档与FAQ维护手册编写              | 2

6.6 智慧公会:思路

01.常见信息1
    a.项目结构
        a.清理
            1.清理 sys-common/target 目录
            2.清理 sys-server/target 目录
            3.进入 sys-common 目录,执行 mvn clean install -DskipTests
            4.返回 sys-server 目录,执行 mvn clean package -DskipTests
            5.找到 JAR 文件并启动服务
        b.启动流程
            .github/start-sys-server.ps1 (或 .sh)
                ↓
            导航到 ../sys-server
                ↓
            清理 sys-common/target 和 sys-server/target
                ↓
            构建 sys-common (install 到本地仓库)
                ↓
            构建 sys-server (依赖 sys-common)
                ↓
            启动 sys-server
    b.常见问题
        a.鉴权
            gateway.yml
              security:
                oauth2:
                  resourceserver:
                    jwt:
                      jwk-set-uri: http://192.168.1.177:9071/rsa/publicKey
        b.放开权限
            secure:
              ignore:
                urls:
                  - "/layer/v1/sys-service/nzgfw/**" # 女职工服务-免鉴权
                  - "/layer/v1/sys-service/xlzx/**"  # 心理咨询-免鉴权

02.常见信息2
    a.说明
        a.登录
            http://111.53.193.159:10003/login
            admin
            ceshi123456@Tp
        b.服务
            auth-server    9071
            gateway        9070
            sys-server     9072
        c.项目原型
            for windows
            http://team.yindangu.com/p/gIKGkO
            -------------------------------------------------------------------------------------------------
            https://lanhuapp.com/link/#/invite?sid=lx0vu4de
            分享人: 183****8670
            团队名称: 183****8670的团队的团队
            相关项目: 工会
            链接有效期: 20260302~20260316
        d.项目启动
            1.开启surge,解决"/layer/v1/auth-service/obtain/captcha",500报错
            2.先gateway,再auth-service,最后sys-server
    b.公共规范
        a.表公共设计
            字段属性       字段名         数据库字段
            Long           id             id
            Integer        isDeleted      is_deleted
            LocalDateTime  createTime     create_time
            Long           createUser     create_user
            LocalDateTime  updateTime     update_time
            Long           updateUser     update_user
            Long           createDept     create_dept
        b.模块规范
            系统表:sys_xxx
            控制器前缀:/模块名称/xxx
            业务表前缀:模块名称_xxx
    c.审批流
        a.主表+子表
            资金募集管理
            http://127.0.0.1:8080/EmployeeCare/interEmployee/fundManage/fund-raising-index
        b.审批流
            UniformClaimServiceImpl          自己接入
            TaskApprovalExecuteService       审批工具类
    d.代码位置
        a.审批流
            111.53.193.159:10003/system/approval/approval-index
            -------------------------------------------------------------------------------------------------
            系统管理 -> 审批管理 -> 适用业务 -> 【福利保存、活动提交、会员迁出】
            流程名称:职代会会议审批
            流程编码:cy_zdh_conterence_meeting
            -------------------------------------------------------------------------------------------------
            系统设置 -> 审批列表 -> 表格显示
        b.文件上传
            components -> global -> form -> G-form-add.vue
            文件上传,G-file-upload
            -------------------------------------------------------------------------------------------------
            system -> affair -> affair-add.vue
            label: "附件", prpp: "fileUrls", type: "upload", limit: 10, tipText: "支持上传多个附件"
            -------------------------------------------------------------------------------------------------
            // 获取详情
            const getDetail= () =x {
                // 处理 fileUrls 字段,将 JSON 字符串转换成数组
            // 表单回滚
        c.公共组件
            components -> activity -> BudgetPointsSection.vue
            请选择是否发放积分
            请选择是否启用预算
            -------------------------------------------------------------------------------------------------
            activityManage -> plan -> adivityPlanAdd.vue
        d.会员画像
            分页查询培训计划列表(会员画像/人才库使用)
            pxgl -> controller -> TrainingController -> /trainingPLan/pageDefault

03.常用信息3
    a.代码位置
        a.审批流
            111.53.193.159:10003/system/approval/approval-index
            -------------------------------------------------------------------------------------------------
            系统管理 -> 审批管理 -> 适用业务 -> 【福利保存、活动提交、会员迁出】
            流程名称:职代会会议审批
            流程编码:cy_zdh_conterence_meeting
            -------------------------------------------------------------------------------------------------
            系统设置 -> 审批列表 -> 表格显示
        b.文件上传
            components -> global -> form -> G-form-add.vue
            文件上传,G-file-upload
            -------------------------------------------------------------------------------------------------
            system -> affair -> affair-add.vue
            label: "附件", prpp: "fileUrls", type: "upload", limit: 10, tipText: "支持上传多个附件"
            -------------------------------------------------------------------------------------------------
            // 获取详情
            const getDetail= () =x {
                // 处理 fileUrls 字段,将 JSON 字符串转换成数组
            // 表单回滚
        c.公共组件
            components -> activity -> BudgetPointsSection.vue
            请选择是否发放积分
            请选择是否启用预算
            -------------------------------------------------------------------------------------------------
            activityManage -> plan -> adivityPlanAdd.vue
        d.会员画像
            分页查询培训计划列表(会员画像/人才库使用)
            pxgl -> controller -> TrainingController -> /trainingPLan/pageDefault
    b.任务模块
        a.女职工服务
            a.日常活动
                策划组织女工主题活动,联动“全国书香三八”,支持报名、作品提交及成果展示。
            b.荣誉申报
                登记、查询巾帼类荣誉信息,提供统计数据支撑。
        b.心理咨询
            记录管理心理咨询服务,建立维护台账,实现规范记录与数据汇总。
        c.劳动与技能竞赛
            a.劳动竞赛
                用于对劳动竞赛活动的基本信息、参赛人员、获奖结果及相关资料进行统一登记、查询和留档管理,并支持优秀获奖人员向劳模评选业务的推优衔接。
            b.技术比武
                用于对技术比武活动的基本信息、参赛人员、获奖结果及相关资料进行统一登记、查询和留档管理,并支持优秀获奖人员向劳模评选业务的推优衔接。
            c.安康杯
                用于对“安康杯”竞赛活动的方案发布、组织报名、过程检查、考核评分及评选表彰进行全流程数字化管理,实现竞赛台账统一归档。
        d.创新活动
            a.五小发明
                用于对“五小发明”和职工创新成果的信息登记、统计查询、资料归档及表彰台账进行统一管理,支持与技术中心季度表彰工作的业务衔接。
            b.劳模工匠
                用于对各级劳模、工匠人员信息及其荣誉情况进行统一登记、统计和台账管理,为表彰管理和相关业务提供数据支撑。
        e.工会阵地
            a.荣誉中心
                用于对工会荣誉的登记与管理,实现线上台账。
            b.职工之家
                用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
            c.职工书屋
                用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
            d.职工活动室
                用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
            e.职工(劳模)创新工作室
                用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
            f.妈咪小屋
                用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
            g.安康工作站
                用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
            h.工匠学院
                用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。
            i.司机之家
                用于对工会阵地信息进行台账化管理和查询,支持阵地详情信息及多媒体资料的记录与维护,实现工会阵地管理工作的信息化、规范化和可查询。

04.常用信息4
    a.分类1
        a.说明1
            a.组织架构
                2个页面、拓扑图、统计多少人
                点不开(UI问题),新旧不一致,5个角色,人,详情,参考用户管理
            b.用户管理
                管理员:不同组织有不同选择,获取非会员名单,不同组织有不同选项
                组织代码:新旧、其他公司也能拉到工会,一个人不能出现2个工会,迁入迁出的记录
            c.会员管理
                当前工会多少人
                什么角色
                主席、副主席、科员
            d.审批列表
                管理员、部门管理员、个人(查看审批)
                教育 -> 文体活动 -> 活动策划(统一,5个活动)
                送温暖 -> 10个活动,有统一审批、有页面审批、走权限
                模块字段 -> 负责维护这一块、名称、下拉
            e.通用方式
                             负责人
                               |
                登记(发布) -> 审批 -> 结果登记(评价)
                            (管理员)
        b.说明2
            a.工作服装
                工服配置列表:基本信息
                工服申领,离职清算
                根据时间、XXX来确定
                时间限制:12个月
                几种类型:不同岗位、申领,跟角色挂钩
            b.职工福利
                每个板块都去关联(预算)
            c.送温暖慰问
                活动预算(通用、下拉选择)
                审批列表、有权限(跟角色)
                年度预算、专项预算(占用、执行、释放)
                买东西与预算
    b.分类2
        c.说明3
            a.民主管理
                会议活动/职工代表:议题 -> 会议 -> 发布
                无投票、只签到
            b.文体活动
                推公共(活动开始、结束)
                审批结束 -> 自动推公告
                描述:活动(富文本、图片)
            c.培训计划
                结果登记(下一步)(是否需要签到)
                发起、审批、签到、登记、结果登记
            d.培训结果
                报名人数、实际人数、附件
                不需要明细表
        d.说明4
            a.预算管理
                列表、记录(公共接口)
                工会经费 -> 预算管理 -> 提交审批 -> 每1笔有多个
            b.独生子女福利
                一次发放、多个发放
            c.维权申请
                申请人(代申请)、帮办、汇报进度
                推到维权案例库
    c.分类3
        e.说明5
            a.日常活动,集成到会员画像
                步骤式
                报名 -> 邀请20个人,待办(未确认),详情,多少人,最大报名
                新增 -> 活动状态隐藏
                功能 -> 待办是否报名
            b.荣誉申报,集成到会员画像
                关联到 会员画像,定时推到列表
                走审批
            c.心理咨询,集成到会员画像,参考(维权申请)
                必填、非必填(咨询人:自己、咨询日期:当前、咨询师:不自己)
        f.说明6
            a.竞赛
                流程 
                -> 公告 
                -> 主动报名
                1.待办(报名)-> 通知
                2.公告(报名)-> 主动
            b.五小发明
                筛选项
                详情(一条是一条)
                单表(子表 -> 主表),删子表
            c.劳模工匠
                单表
        g.说明7
            a.工会阵地
                组织架构(有几个阵地)
                每个类型 -> 每个中心 -> 都需要活动
                以职工之家为例,办活动
                荣誉中心,工会(有几个、列举几个):干了多少活动、多会办了、结果统计
            b.积分规则
                发起流程 -> 获取多少积分、模块积分
                输入框、下拉框
                通用积分规则
                配置 -> 活动发起人 -> 可以设置
            c.其他
                工作台 -> 待审、已审
                阅读中心 -> 一本书为例
        h.说明8
            a.工会阵地
                工作台
                新增阵地
                新增列表:关联图片、发起活动 -> 台账记录(读书活动) -> 签到记录
                阵地详情

7 智慧系统

7.1 服务部署

01.常用信息1
    a.服务器
        网址:192.168.3.102
        账号:root
        密码:zkzx@102
    b.项目部署
        MaxKb:192.168.3.102:8080
        SQLBot:192.168.3.102:8000
        admin
        7T0GSEfr.b=9

02.常用信息2
    a.docker私服镜像
        {
          "registry-mirrors": ["http://192.168.1.210:8081/repository/docker-group/"],
          "insecure-registries": ["192.168.1.210:8081"]
        }

03.常用信息3
    a.飞致书
        尊敬的张先生/女士:
        欢迎加入飞致云客户支持门户!您的账户已经创建,您的登录账户为:[email protected]为了确保账户安全并便于您登录,请点击以下链接来设置您的账户密码:
        此链接将在24小时后过期,若您未能在此期间完成设置,请随时联系您的客户经理。
        诚挚地,FIT2CLOUD飞致云客户支持团队
        -----------------------------------------------------------------------------------------------------
        [email protected]
        g4*WqcZ~gpAS
        -----------------------------------------------------------------------------------------------------
        https://support.fit2cloud.com/?kc_action=UPDATE_PASSWORD&kc_action=UPDATE_PASSWORD&state=c8a51c60-4fa3-4eaf-b77a-e6b8363953a3&session_state=928fb534-4bf8-416a-6783-c2994897e2e7&iss=https%3A%2F%2Fsso.fit2cloud.com%2Frealms%2Ffit2cloud&code=850774df-d87c-3897-c286-7a80d4172628.928fb534-4bf8-416a-6783-c2994897e2e7.79115473-7344-4174-8d0f-9bf16012d061#/maintenances
    b.信息沟通
        1.知识库,对问题进行向量化
        2.智能体,配置提示词、知识库
        简易智能体,大致就是这么使用吧
        现在在测高级智能体,X-Pack使用
        -----------------------------------------------------------------------------------------------------
        实际环境一般用高级的,简易智能体场景比较简单

7.2 智能问答

01.常用信息1
    a.
    
    b.

    

02.常用信息2



7.3 智能问数

01.常用信息1


02.常用信息2



8 集团系统

8.1 官网信息

01.常用信息1
    a.电子商务平台
        官网首页:https://www.sxlq.com/index
        电子商务平台:http://220.194.141.75:10201/showStock/index
        登录入口:投标人/供应商登录
        登录账号:ZCZKZX
        登录密码:LQjtZCzx@2026
    b.小工具情况
        bsr                 评标工具
        tbs                 投标工具
        zbs                 招标工具
        bid-file-tools      招投标文件编制系统

02.常用信息2
    a.环境信息
        bsr,评标工具
        tbs,投标工具
        zbs,招标工具
        -----------------------------------------------------------------------------------------------------
        供应商
        LQYGSGYS,CS002,CS003,LCY,YGSGYSB,JYB1,JYB3,JYB2,TEST2021,SWZCCS
        ceshi123456@Tp
        -----------------------------------------------------------------------------------------------------
        项目负责人
        JJGSZBDL
        Jjzb7080993..!
        -----------------------------------------------------------------------------------------------------
        测试数据库
        url: jdbc:informix-sqli://10.10.20.39:9088/luqiao_tenderservice:INFORMIXSERVER=gbase01;CLIENT_LOCALE=zh_cn.utf8;NEWCODESET=UTF8,zh_cn.UTF8,57372;DB_LOCALE=zh_cn.utf8;IFX_USE_STRENC=true;
        username: informix
        password: GBase123
    b.BSR
        数据接口服务(正式):http://ds2.sxlq.com:8880/tenderService
        数据接口服务(测试):http://10.10.20.41:9016/tenderService
        更新接口服务:https://ds.sxlq.com:9982/updateSite/bsr_online/repository
        官网网站地址:http://220.194.141.75:10201
        评标服务地址:https://ds.sxlq.com:9982/onlinebidopening
        新平台网站地址:http://ds2.sxlq.com:8880
        是否自动更新:是
        是否启动时自动环境检测:是
    c.ZBS
        数据接口服务(正式):http://220.194.141.75:8880/tenderService
        更新接口服务:https://ds.sxlq.com:9982/updateSite/zbs/repository
        官网网站地址:http://220.194.141.75:10201
        -----------------------------------------------------------------------------------------------------
        JJGSZBDL
        Jjzb7080993..!
        -----------------------------------------------------------------------------------------------------
        heyuanqiao
        ZCzx@5606026
        -----------------------------------------------------------------------------------------------------
        zbs -> 我的标书库 -> 打开 -> 解除/添加编辑限制 -> 请输入解除限制权限密码
        jtzc258258
        zczx0311
        -----------------------------------------------------------------------------------------------------
        测试、正式
        10.10.20.209,堡垒机
        curl -X POST "http://220.194.141.75:8880/tenderService/sys/macro/option" -d "code=word.password&type=string"
        luqiao_tenderservice ->  sys_macro -> code = "word password"
    d.配置
        BSR:d:\workspace\bid-thrid-tools\bsr\com.enuo.rcp.bsr.res\bsr.properties
        TBS:d:\workspace\bid-thrid-tools\tbs\com.sniper.rcp.tbs.res\tbsx.properties
        ZBS:d:\workspace\bid-thrid-tools\zbs\com.enuo.rcp.zbsx.res\zbsx.properties
        -----------------------------------------------------------------------------------------------------
        配置项说明:
        A = 数据接口地址(登录、数据服务等)
        B = 更新接口地址
        C = 官网地址
        D = WebSocket 地址(仅 BSR)
        X = 官网地址(仅 BSR/ZBS)
        注意:这些值是 RSA 加密的,需要使用工具加密后再写入

03.常见信息3
    a.20260402,第二信封异常,bsr,评标工具
        a.工单管理
            工单编号 -> GD26040111
            采购方案编号 -> 2026-WZGS-WZ-029
            采购方案编号 -> 2025-LQ3GS-FW-213,直接流标
        b.采购方案
            采购方案 -> 采购方案管理 -> 方案编号 -> 2026-WZGS-WZ-029
            评标 -> 评标结果 -> 分数没有过60分可以直接往下走么
        c.问题描述1
            聊城市创立机械制造有限公司 57.9
            分数没有过60分可以直接往下走么,走 第1张图的【招采中心复核】流程吗?
        d.问题描述2
            商务技术打分之后,不够六十分,为什么可以开第二信封
            第1信封,必须有3家审核通过,才可以开第2信封
            第2信封,不足3家,不能开第2信封
        e.问题分析
            评标结果:94.7  是否推荐中标供应商  是
            评标结果:76.8  是否推荐中标供应商  是
            评标结果:57.9  是否推荐中标供应商  否
        f.问题答复
            问题描述:评标流程中,通过商务技术评审的供应商不足3家时,系统未阻止开启第二信封
            问题解决:在"推荐供应商提交"和"确认第二信封开标",两个关键入口,增加不足3家硬性阻止校验
            解决方案:重新编译exe,发布评标工具后,重新安装客户端
    b.20260407,第二信封异常,bsr,评标工具
        a.工单管理
            采购方案编号 -> 2026-LQ1GS-FW-012 2026-LQ1GS-FW-012_1
        b.页面报错
            20260407,界面异常【同步参与者(供应商)数据异常(vdz_bidding_room_participant)】
            请等待,项目负责人完成第二信封开标
        c.解决方案
            排查:有条数据 没有正确存储,抽空我看下 什么数据 导致的。
            项目负责人,尚未完成第二信封开标操作,开标室记录尚未建立,导致外部平台在执行 INSERT/UPDATE 时触发数据完整性约束失败。
            目前,大家操作的时候,尤其 第二信封,等待 30-60s,尤其是 组长的机器
            组长机器、专家机器,关键步骤,同一时间,不要 同时点击
        d.相关说明
            1台组长、3台专家
            解密倒计时:0:32:34

8.2 项目环境

01.项目架构
    a.项目描述
        a.开发环境
            组件              版本
            JDK               11
            Eclipse IDE       2022-06,必须是 "Eclipse IDE for RCP and RAP Developers"
            Maven             3.8.0
        b.技术栈
            技术            版本                           说明
            编程语言        Java 11.0.11                   必需版本
            框架            Eclipse RCP 3.x                基于 org.eclipse.ui
            Eclipse 平台    4.17 (2020-06)                 避免与 E4 冲突
            UI              SWT/JFace                      原生 GUI
            Maven           3.6.3                          构建工具
            Tycho           2.7.5                          Eclipse RCP Maven 插件
            模板引擎         Thymeleaf 3.0.9                HTML 模板
            表达式           OGNL 3.1.12                    表达式语言
            日志             Log4j 1.2.13 / SLF4J 1.7.25    日志框架
    b.源码结构
        a.概述
            属性            值
            Bundle ID      com.enuo.rcp.bsr
            启动器          bsr.exe
            技术架构        Eclipse RCP 3.x
            构建工具        Maven + Tycho
        b.核心Bundle
            bsr/
            ├── com.enuo.rcp.bsr/                  # 主程序插件
            │   ├── src/                           # 源代码
            │   │   └── com/enuo/rcp/bsr/
            │   │       ├── product/               # 应用入口
            │   │       │   ├── Application.java   # 主类
            │   │       │   └── ApplicationWorkbenchAdvisor.java
            │   │       └── branch/                # 业务代码
            │   │           ├── dialogs/           # 对话框
            │   │           ├── editors/           # 编辑器
            │   │           ├── handlers/          # 处理器
            │   │           ├── perspectives/      # 透视图
            │   │           └── actions/           # 操作动作
            │   ├── build.properties               # 构建配置
            │   ├── plugin.xml                     # 插件配置
            │   └── pom.xml                        # Maven 配置
            ├── com.enuo.rcp.bsr.base/             # 依赖库插件
            │   ├── lib/                           # 第三方 JAR
            │   │   ├── attoparser-2.0.4.jar
            │   │   ├── javassist-3.20.0-GA.jar
            │   │   ├── ognl-3.1.12.jar
            │   │   ├── slf4j-api-1.7.25.jar
            │   │   ├── thymeleaf-3.0.9.jar
            │   │   └── unbescape-1.1.5.jar
            │   └── build.properties
            ├── com.enuo.rcp.bsr.images/           # 图片资源
            ├── com.enuo.rcp.bsr.res/              # 静态资源
            │   └── resources/
            │       └── bsr.properties             # 配置文件
            ├── com.enuo.rcp.bsr.feature/          # 功能特性
            │   └── feature.xml
            └── com.enuo.rcp.bsr.product/          # 产品配置
                ├── bsr.product                    # 产品配置文件
                └── pom.xml
        c.源码包结构
            com.enuo.rcp.bsr/
            ├── product/                           # 应用入口
            │   ├── Application.java               # 主类(IApplication)
            │   └── ApplicationWorkbenchAdvisor.java
            ├── branch/                            # 分支功能(核心)
            │   ├── dialogs/                       # 对话框
            │   │   ├── LoginDialog.java           # 登录对话框
            │   │   ├── ExpertLoginDialog.java     # 评审员登录
            │   │   ├── BidProcessDialog.java      # 评审流程
            │   │   ├── BidRulesDialog.java        # 评审规则
            │   │   ├── AvoidDialog.java           # 回避确认
            │   │   └── DiagnosticDialog.java      # 诊断工具
            │   ├── editors/                       # 编辑器
            │   │   ├── HomeEditor.java            # 首页
            │   │   ├── ExpertWorkbenchEditor.java # 评审员项目列表
            │   │   ├── LeaderWorkbenchEditor.java # 负责人项目列表
            │   │   └── EvaluationConsoleEditor.java # 评审操作台
            │   ├── handlers/                      # 处理器
            │   │   ├── DiagnosticWizard.java      # 诊断向导
            │   │   └── ...
            │   ├── perspectives/                  # 透视图
            │   │   └── Perspective.java           # 主透视图
            │   └── actions/                       # 操作动作
            │       ├── CreateProjectAction.java   # 创建项目
            │       ├── JoinProjectAction.java     # 加入项目
            │       ├── OpenBidFileAction.java     # 打开文件
            │       ├── ZGEditorAction.java        # 资格审查
            │       ├── JGFEditorAction.java       # 技术评分
            │       ├── ZGFEditorAction.java       # 综合评分
            │       └── TPEditorAction.java        # 评审汇总
            ├── utils/                             # 工具类
            │   ├── IpUtils.java                   # IP 工具
            │   ├── PropertyUtil.java              # 属性工具
            │   └── ...
            └── update/                            # 更新功能
                └── P2UpdateUtil.java              # P2 更新工具
    c.打包结构
        a.使用 Tycho (Maven) 进行无头构建
            product/
            ├── plugins/                    # 所有依赖的插件 JAR
            │   ├── org.eclipse.core.runtime_*.jar
            │   ├── org.eclipse.swt_*.jar
            │   ├── org.eclipse.swt.win32_*.jar
            │   └── com.your.company.app_*.jar
            ├── features/                   # Feature 描述文件(如果使用 Feature)
            │   └── org.eclipse.rcp_*/
            ├── configuration/              # OSGi 配置
            │   ├── config.ini
            │   └── org.eclipse.equinox.simpleconfigurator/
            ├── .eclipseproduct             # 产品信息
            ├── executable.exe              # Windows 启动器
            ├── executable.ini              # 启动配置
            └── artifacts.jar               # p2 元数据
        b.使用 Eclipse IDE 导出一次
            zbs/
            ├── ZBSEdit.exe                 # 启动器 (326 KB)
            ├── ZBSEdit.ini                 # 启动配置
            ├── artifacts.xml               # p2 构件元数据 (41 KB)
            ├── configuration/              # OSGi 配置目录
            │   └── config.ini              # OSGi 核心配置
            ├── features/                   # Feature 目录 (13个)
            │   ├── org.eclipse.rcp_4.5.0.v20150603-2331/
            │   ├── org.eclipse.e4.rcp_1.4.0.v20150603-0857/
            │   ├── org.eclipse.emf.ecore_2.12.0.v20160420-0247/
            │   ├── org.eclipse.ecf.*.feature_*.*/
            │   ├── com.enuo.rcp.zbsx.feature_3.0.0.202404020012/
            │   └── com.enuo.rcp.zbsx.product.feature_3.0.0.202404020012/
            ├── plugins/                    # Plugin 目录 (177个)
            │   ├── org.eclipse.core.runtime_*.jar
            │   ├── org.eclipse.swt_*.jar
            │   ├── org.eclipse.swt.win32.win32.x86_*.jar
            │   ├── com.enuo.rcp.zbsx*.jar  # 你的业务插件
            │   └── ...
            ├── jre/                        # 绑定的 JRE (630个文件)
            │   ├── bin/                    # 可执行文件 (java.exe, javaw.exe)
            │   └── lib/                    # 运行时库
            ├── p2/                         # p2 安装元数据
            │   └── org.eclipse.equinox.p2.engine/
            ├── ICE_JNIRegistry.dll         # JNI 注册表访问库 (64 KB)
            ├── jacob-1.15-M4-x64.dll       # Jacob 64位库 (217 KB)
            ├── jacob-1.15-M4-x86.dll       # Jacob 32位库 (176 KB)
            ├── jacob-1.18-x64.dll          # Jacob 64位库 (205 KB)
            ├── jacob-1.18-x86.dll          # Jacob 32位库 (167 KB)
            ├── unins000.exe                # 卸载程序 (2.5 MB)
            └── unins000.dat                # 卸载数据 (597 KB)
    d.线上环境
        a.目标结构分析(已安装 ZBS)
            C:\Users\mysla\AppData\Local\Programs\luqiao\zbs\
            ├── ZBSEdit.exe                    ← 启动器(原生 exe)
            ├── ZBSEdit.ini                    ← 启动配置
            ├── artifacts.xml                  ← p2 元数据
            ├── configuration/                 ← OSGi 配置
            ├── features/                      ← 功能集
            ├── plugins/                       ← 插件
            ├── p2/                           ← p2 安装元数据
            ├── jre/                          ← 绑定的 JRE 目录
            ├── ICE_JNIRegistry.dll            ← JNI 库(根目录)
            ├── jacob-1.15-M4-x64.dll         ← JNI 库(根目录)
            ├── jacob-1.15-M4-x86.dll         ← JNI 库(根目录)
            ├── jacob-1.18-x64.dll            ← JNI 库(根目录)
            ├── jacob-1.18-x86.dll            ← JNI 库(根目录)
            ├── unins000.exe                  ← 卸载程序(Inno Setup)
            └── unins000.dat                  ← 卸载程序数据
        b.关键特征
            ✅ 有原生启动器 ZBSEdit.exe
            ✅ 有 JRE 目录
            ✅ DLL 文件在根目录(不是在 plugins 里)
            ✅ 有 Inno Setup 卸载程序

02.项目调试
    a.使用eclipse 2020-06 R
        a.官网
            https://www.eclipse.org/downloads/packages/release/2020-06/r
        b.乱码问题
            方案               优点                  缺点                            适用性
            ftfy库             自动检测+修复,成熟    需要Python环境                  ⭐⭐⭐⭐⭐
            手动映射表          精确控制              工作量巨大,无法覆盖所有情况     ⭐⭐
            IDEA转换            GUI操作简单           批量处理困难,可能误判          ⭐⭐⭐
            chardet+编码转换    检测准确              对已损坏文件无效                ⭐
        c.Office处理
            openpyxl            表格处理
    b.编码设置
        a.打开偏好设置
            Windows: Window → Preferences
            Mac: Eclipse → Preferences
        b.设置工作空间编码
            导航到: General → Workspace
            Text file encoding: 选择 Other: UTF-8
            点击 Apply 和 Apply and Close
        c.20260123,解决方案
            GBK.to.UTF-8_v1.6.0.exe
            https://github.com/Roger-WIN/GBKtoUTF-8
    c.sun语法忽略,修改编译器错误/警告设置
        a.打开 Eclipse 偏好设置
            菜单栏:Window → Preferences 或快捷键:Alt + W → P
        b.导航到 Java 编译器设置
            路径:Java → Compiler → Errors/Warnings,找到并展开 Deprecated and restricted API 部分
        c.修改以下选项
            设置项:Forbidden reference (access rules),原值:Error / Warning,改为:Ignore
            设置项:Discouraged reference (access rules),原值:Warning / Error,改为:Ignore
        d.应用设置
            点击 Apply 和 OK
        e.清理并重新编译项目
            右键项目 → Project → Clean...,选择你的项目,点击 Clean,等待项目重新构建
    d.开发提示
        a.产品配置关键点
            ---
            <!-- bsr.product 重要配置 -->
            <product>
                <!-- 应用类型 -->
                <application>com.enuo.rcp.bsr.application</application>
                <!-- 只包含 3.x feature,不要包含 E4 -->
                <features>
                    <feature id="org.eclipse.rcp"/>
                    <!-- 不要添加:<feature id="org.eclipse.e4.rcp"/> -->
                </features>
                <!-- 禁用 E4 addons -->
                <property name="e4.enabledAddons" value=""/>
                <!-- 无 -consoleLog,避免黑框 -->
                <programArgs></programArgs>
            </product>
            ---
        b.build.properties 编码配置
            所有插件都需要添加:javacDefaultEncoding.. = UTF-8。
            已添加的插件包括:
            com.enuo.rcp.bsr/build.properties
            com.enuo.rcp.bsr.base/build.properties
            com.enuo.rcp.bsr.images/build.properties
            com.enuo.rcp.bsr.res/build.properties
        c.日志查看
            移除 -consoleLog 后,日志位置:workspace/.metadata/.log。

03.相关位置
    a.Application右键启动
        选择 Run Configurations
        -> 左侧选择 Eclipse Application
        -> Workspace Data 填写 【默认配置】                                                  --配置1
        -> Program arguments 追加 【默认配置】                                               --配置2
        -> VM arguments 追加 【可选,-Dfile.encoding=UTF-8】                                 --配置3
        -> 点击 Run
    b.Application启动类
        D:\workspace\bid-thrid-tools\bsr\com.enuo.rcp.bsr\src\com\enuo\rcp\bsr\Activator.java
        D:\workspace\bid-thrid-tools\tbs\com.sniper.rcp.tbs.product\src\com\sniper\rcp\tbs\product\Application.java
        D:\workspace\bid-thrid-tools\zbs\com.enuo.rcp.zbsx.product\src\com\enuo\rcp\zbsx\product\Application.java
        -----------------------------------------------------------------------------------------------------
        @SuppressWarnings("restriction")
        public class Application implements IApplication {
            在你的项目中找到 Application 类(实现了 IApplication 接口)
            右键点击 Application.java
            选择 Run As → Eclipse Application
        }
    c.Application编译exe
        C:\software\jdk-11.0.11\bin\javaw.exe
        -----------------------------------------------------------------------------------------------------
        D:\workspace\bid-thrid-tools\bsr\com.enuo.rcp.bsr.product\target\products\com.enuo.rcp.bsr.bsr_product\win32\win32\x86_64\
        D:\workspace\bid-thrid-tools\tbs\com.sniper.rcp.tbs.product.repository\target\products\tbs\win32\win32\x86_64\
        D:\workspace\bid-thrid-tools\zbs\com.enuo.rcp.zbsx.product.repository\target\products\zbs\win32\win32\x86_64\
    d.启动exe
        C:\Users\mysla\luqiao
        C:\Users\mysla\AppData\Local\Programs\luqiao\zbs
        -----------------------------------------------------------------------------------------------------
        C:\Users\mysla\.m2\p2-local-mirror\eclipse-4.17-2020-06
        C:\Users\mysla\.m2\p2-local-mirror\eclipse-2020-06-full
        -----------------------------------------------------------------------------------------------------
        控制台启动器 (ZBSEditc.exe) 的作用:
        在命令行中运行应用
        调试时可以看到控制台输出
        适合开发和调试阶段
        -----------------------------------------------------------------------------------------------------
        GUI 启动器 (ZBSEdit.exe) 的作用:
        标准的 Windows 应用
        用户双击运行
        适合生产环境

8.3 环境修复

01.云标室环境
    a.问题背景
        a.云标室环境检查逻辑
            问题现象:在非云标室环境(本地开发环境)下打开小工具时,应用弹出错误提示:提示:请在云标室环境下打开小工具! [退出]。
        b.原因分析
            硬编码IP检查:云标室环境定义为 10.10.x 网段,本地开发环境通常是 192.168.x.x 或 127.0.0.1,应用通过IP地址判断是否在云标室环境。
        c.代码位置
            文件:com.enuo.rcp.bsr/src/com/enuo/rcp/bsr/branch/editors/HomeEditor.java
            方法:callInterface() (第173-189行)
            触发位置:首页加载时调用
        d.问题代码
            ---
            private boolean callInterface(){
                try {
                    // 获取当前IP
                    InetAddress ipAddr = InetAddress.getLocalHost();
                    String currentIP = ipAddr.getHostAddress();

                    // 判断是否在10.10网段
                    if(currentIP.startsWith("10.10.10")){
                      return true;  // 只有在10.10网段才允许打开
                    }else{
                      return false;  // 其他环境返回false,触发错误弹框
                    }
                  } catch (Exception e) {
                    e.printStackTrace();
                    return false;
                  }
            }
            ---
        e.影响
            本地开发环境无法打开小工具,影响开发效率,每次调试都需要修改代码或切换网络环境。
    b.解决方案(已实施)
        a.修改信息
            修改文件:D:\workspace\bid-thrid-tools\bsr\com.enuo.rcp.bsr\src\com\enuo\rcp\bsr\branch\editors\HomeEditor.java
            修改位置:callInterface() 方法(第173-189行)
        b.修改内容
            ---
            private boolean callInterface(){
                try {
                    // 获取当前IP
                    InetAddress ipAddr = InetAddress.getLocalHost();
                    String currentIP = ipAddr.getHostAddress();

                    // 2026-01-18 修改:跳过云标室环境检查,允许在本地环境打开小工具
                    // 原逻辑:if(currentIP.startsWith("10.10.10")) return true; else return false;
                    return true;  // 直接返回true,跳过所有环境检查
                  } catch (Exception e) {
                    e.printStackTrace();
                    return true;  // 出错时也允许打开
                  }
            }
            ---
        c.修改说明
            移除IP网段硬编码检查(10.10.10),直接返回true,允许在任何环境下打开小工具,异常处理也返回true,确保出错时不阻止功能使用。
    c.验证步骤
        a.重新构建应用
            ---
            cd D:\workspace\bid-thrid-tools\bsr
            mvn clean package -DskipTests
            ---
        b.测试启动应用
            ---
            cd D:\workspace\bid-thrid-tools\bsr\com.enuo.rcp.bsr.product\target\products\com.enuo.rcp.bsr.bsr_product\win32\win32\x86_64
            .\bsr.exe
            ---
        c.验证结果
            应用正常启动,无"请在云标室环境下打开小工具"错误提示。
            小工具按钮可以正常点击打开。
            在本地开发环境(192.168.x.x)下正常工作。
    d.技术说明
        a.场景对比
            场景            IP网段         修改前行为       修改后行为
            云标室环境      10.10.x        允许打开        允许打开
            本地开发环境    192.168.x.x    拒绝打开(弹框) 允许打开
            家庭网络        192.168.x.x    拒绝打开(弹框) 允许打开
            其他网络        任意           拒绝打开(弹框) 允许打开
        b.安全性考虑
            当前修改:适用场景为开发环境和测试环境,安全性为无IP限制,任何环境都可以使用小工具。
        c.如需恢复IP限制(生产环境)
            a.方式1:使用配置文件
                a.配置文件
                    ---
                    // 在 bsr.properties 中添加
                    allowLocalTool=true  // 或 false
                    ---
                b.代码实现
                    ---
                    private boolean callInterface(){
                        try {
                            String allowLocalTool = PropertyUtil.getProperty("allowLocalTool", "true");
                            if("true".equalsIgnoreCase(allowLocalTool)){
                              return true;
                            }

                            InetAddress ipAddr = InetAddress.getLocalHost();
                            String currentIP = ipAddr.getHostAddress();

                            // 只在明确禁用时才检查IP
                            if(!"true".equalsIgnoreCase(allowLocalTool) && currentIP.startsWith("10.10.10")){
                              return true;
                            }else{
                              return false;
                            }
                          } catch (Exception e) {
                            e.printStackTrace();
                            return true;
                          }
                    }
                    ---
            b.方式2:使用系统属性
                a.启动命令
                    ---
                    # 启动时添加参数
                    .\bsr.exe -DallowLocalTool=false
                    ---
                b.代码实现
                    ---
                    // Application.java start()方法中添加
                    String allowLocalTool = System.getProperty("allowLocalTool", "true");
                    CachePool.allowLocalTool = "true".equalsIgnoreCase(allowLocalTool);
                    ---
            c.方式3:使用命令行参数
                a.启动命令
                    ---
                    # 启动时添加参数
                    .\bsr.exe --skip-cloud-check
                    ---
                b.代码实现
                    ---
                    // Application.java start()方法中添加
                    String[] args = (String[]) context.getArguments().get("application.args");
                    if(args.length > 0 && args[0].equals("--skip-cloud-check")){
                      CachePool.skipCloudCheck = true;  // 全局标记跳过检查
                    }
                    ---
    e.相关文件修改
        文件                      修改内容                         位置
        HomeEditor.java           callInterface()方法直接返回true  第173-189行

02.移除启动控制台黑框
    a.原因分析
        a.根本原因
            控制台黑框的出现是由于产品配置中设置了 -consoleLog 参数。
            文件位置:com.enuo.rcp.bsr.product/bsr.product
            问题配置(第 23 行):<programArgs>-consoleLog</programArgs>
        b.技术说明
            参数        作用                        副作用
            -consoleLog 将 Eclipse 日志输出到控制台 强制显示控制台窗口
            (无此参数) 日志输出到 .metadata/.log 文件 无控制台窗口
            Eclipse Launcher 行为:当检测到 -consoleLog 参数时,Eclipse launcher 会创建一个控制台窗口。即使使用 javaw.exe(无控制台版本的 JVM),仍会显示黑框。这是 -consoleLog 的预期行为,便于开发者查看实时日志。
        c.问题描述
            问题现象:双击 bsr.exe 启动应用时,同时出现两个窗口:1. 黑框控制台窗口(CMD/控制台) 2. 图形界面应用窗口(Eclipse RCP GUI)。
            用户体验:控制台黑框影响用户体验,对于普通用户来说显得不专业,希望只显示图形界面。
    b.解决方案
        a.修改产品配置文件
            文件:[bsr/com.enuo.rcp.bsr.product/bsr.product](../../bsr/com.enuo.rcp.bsr.product/bsr.product)
            修改位置:第 23 行
        b.修改前
            ---
            <launcherArgs>
               <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
               </vmArgsMac>
               <programArgs>-consoleLog</programArgs>
               <vmArgs>-Dfile.encoding=UTF-8
            ...
            ---
        c.修改后
            ---
            <launcherArgs>
               <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
               </vmArgsMac>
               <programArgs></programArgs>
               <vmArgs>-Dfile.encoding=UTF-8
            ...
            ---
        d.关键变化
            将 <programArgs>-consoleLog</programArgs> 改为 <programArgs></programArgs>,即删除 -consoleLog 参数。
    c.实施步骤
        a.修改配置文件
            ---
            # 编辑产品配置文件
            notepad D:\workspace\bid-thrid-tools\bsr\com.enuo.rcp.bsr.product\bsr.product
            ---
            找到第 23 行,删除 -consoleLog。
        b.重新构建项目
            ---
            cd D:\workspace\bid-thrid-tools\bsr
            mvn clean package -DskipTests
            ---
        c.验证修改
            检查生成的 bsr.ini 文件:
            ---
            type D:\workspace\bid-thrid-tools\bsr\com.enuo.rcp.bsr.product\target\products\com.enuo.rcp.bsr.bsr_product\win32\win32\x86_64\bsr.ini
            ---
            预期结果(-consoleLog 已被移除):
            ---
            -startup
            plugins/org.eclipse.equinox.launcher_1.5.800.v20200727-1323.jar
            --launcher.library
            plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.1300.v20200819-0940
            -vmargs                     ← 这里直接是 -vmargs,没有 -consoleLog
            -Dfile.encoding=UTF-8
            ...
            ---
        d.测试运行
            ---
            # 双击运行
            D:\workspace\bid-thrid-tools\bsr\com.enuo.rcp.bsr.product\target\products\com.enuo.rcp.bsr.bsr_product\win32\win32\x86_64\bsr.exe
            ---
            预期效果:只显示图形界面窗口,无控制台黑框,应用正常启动和运行。
    d.日志查看方案
        a.移除 -consoleLog 后如何查看日志?
            方式              日志位置                                                说明
            工作区日志文件    workspace/.metadata/.log                               Eclipse 平台日志
            Log4j 日志        控制台(如需要可重新添加 -consoleLog)                   应用自定义日志
        b.临时启用控制台日志(调试用)
            如果需要临时查看控制台日志进行调试:
            方案 A:手动修改 bsr.ini
            ---
            # 在 bsr.ini 第 4 行后添加
            -startup
            plugins/org.eclipse.equinox.launcher_1.5.800.v20200727-1323.jar
            --launcher.library
            plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.1300.v20200819-0940
            -consoleLog                    ← 添加这一行
            -vmargs
            ---
            方案 B:命令行参数
            ---
            # 从命令行启动,添加 -consoleLog 参数
            bsr.exe -consoleLog
            ---
            方案 C:重新构建(调试版本)
            ---
            <!-- 在 bsr.product 中重新添加 -->
            <programArgs>-consoleLog</programArgs>
            ---
            然后重新运行 mvn clean package。
    e.影响分析
        a.用户体验改进
            方面        修改前               修改后
            启动窗口    2个(黑框 + GUI)    1个(仅 GUI)
            专业度      有黑框显得不专业      纯 GUI,更专业
            日志可见性  实时可见             需查看日志文件
        b.功能影响
            功能        影响    说明
            应用启动    无影响 正常启动
            日志记录    无影响 仍记录到 .metadata/.log
            调试体验    需适应 开发时需查看日志文件
        c.适用场景
            推荐移除 -consoleLog(当前修改):生产环境发布,最终用户使用,不需要实时查看日志的场景。
            保留 -consoleLog:开发调试阶段,需要实时监控日志的场景,问题排查阶段。

03.Eclipse开发环境启动BSR应用
    a.问题描述
        a.问题现象
            在 Eclipse IDE 中右键 Application.java → Run As → Eclipse Application 后:应用启动成功(控制台显示正常运行),没有错误日志,看不到任何 UI 界面。
        b.典型表现
            控制台输出:中文字体设置成功: Microsoft YaHei UI,工作区检查已跳过,[其他正常日志...]。
            但是:桌面上没有应用窗口,任务栏没有应用图标,Alt + Tab 也找不到窗口。
        c.问题描述
            解决在 Eclipse 中启动 BSR 应用后看不到 UI 界面的问题
    b.根本原因
        a.工作区冲突
            问题:BSR 应用使用了 Eclipse IDE 的工作区。
            Eclipse IDE 工作区(开发环境使用):D:\workspace\bid-thrid-tools\workspace
            BSR 应用工作区(应用运行时使用):应该独立,但实际被 IDE 占用
            冲突后果:应用状态与 IDE 状态混淆,Workbench 无法正确初始化,UI 窗口无法正常显示。
        b.技术解释
            Eclipse RCP 应用启动时需要:创建独立的 Display 和 Shell,初始化自己的 Workbench,加载插件和扩展点。
            如果与 Eclipse IDE 共用工作区:IDE 的 Workbench 已经存在,应用的 Workbench 无法正确创建,导致 UI 不可见。
    c.解决方案
        a.方案一:配置独立工作区(推荐用于开发调试)
            a.步骤
                1. 打开运行配置:Run → Run Configurations...
                2. 找到或创建配置:左侧选择 Eclipse Application,找到 BSR 相关的配置,或点击 New 创建。
                3. 设置工作区:切换到 Arguments 标签页,在 VM arguments 或 Program arguments 中添加:-data D:\workspace\bid-thrid-tools\bsr\workspace。
                或使用相对路径(更便携):-data workspace。
                4. 应用并运行:点击 Apply,点击 Run。
            b.验证
                启动后应该看到:应用窗口正常显示,标题:2021版电子评标工具,控制台输出:中文字体设置成功: Microsoft YaHei UI。
        b.方案二:从产品配置启动(推荐)
            a.步骤
                1. 在 Project Explorer 中找到 com.enuo.rcp.bsr.product 项目
                2. 展开,找到 bsr.product 文件
                3. 右键点击 bsr.product
                4. 选择 Run As → Eclipse Application
            b.优点
                产品配置中已包含所有必要设置,自动使用独立工作区,更接近实际运行环境。
        c.方案三:直接运行已构建的 exe(最简单)
            a.适用场景
                不需要调试代码,只需验证功能,快速测试应用。
            b.步骤
                ---
                # 直接双击运行
                D:\workspace\bid-thrid-tools\bsr\com.enuo.rcp.bsr.product\target\products\com.enuo.rcp.bsr.bsr_product\win32\win32\x86_64\bsr.exe
                ---
                或从命令行:
                ---
                cd D:\workspace\bid-thrid-tools\bsr\com.enuo.rcp.bsr.product\target\products\com.enuo.rcp.bsr.bsr_product\win32\win32\x86_64
                .\bsr.exe
                ---
            c.优点
                无需配置,启动速度快,与生产环境一致。
    d.工作区配置对比
        a.不设置独立工作区(有问题)
            Eclipse IDE 工作区: D:\workspace\bid-thrid-tools\workspace → BSR 应用也使用这个工作区 → 冲突!UI 不显示。
        b.设置独立工作区(正常)
            Eclipse IDE 工作区: D:\workspace\bid-thrid-tools\workspace
            BSR 应用工作区: D:\workspace\bid-thrid-tools\bsr\workspace → 各自独立,正常工作。
    e.完整运行配置示例
        a.Eclipse Application 配置
            Main 标签页:Project: com.enuo.rcp.bsr.product,Application: com.enuo.rcp.bsr.application
            Arguments 标签页:
            Program arguments:-data workspace
            VM arguments:-Dfile.encoding=UTF-8,-Dsun.jnu.encoding=UTF-8
            Plug-ins 标签页:选择: Launch with: workspace plug-ins only (或 all plug-ins),验证: 点击 "Validate Plug-ins" 确保无错误
    f.常见问题排查
        a.应用启动但看不到 UI
            检查清单:
            检查项                  命令/操作                              预期结果
            工作区是否独立          检查运行配置的 -data 参数              不是 IDE 工作区
            窗口是否隐藏            Alt + Tab                              能找到应用窗口
            进程是否存在            任务管理器查看 java.exe                有 BSR 相关进程
            控制台有错误            查看 Console 视图                      无 ERROR 日志
        b.启动失败
            可能原因:
            1. Target Platform 未配置:解决:Window → Preferences → Plug-in Development → Target Platform,添加 Eclipse 2020-06 仓库
            2. 依赖缺失:解决:在运行配置的 Plug-ins 标签页,选择 "Launch with all plug-ins"
            3. 工作区被锁定:解决:删除工作区目录下的 .metadata/.lock 文件,或使用新的工作区目录
        c.中文乱码
            确保以下配置:1. 项目编码:UTF-8,2. 工作区编码:UTF-8,3. VM 参数:-Dfile.encoding=UTF-8

04.P2离线库制作方案
    a.p2 离线库关键信息
        a.离线库位置
            C:\Users\mysla\.m2\p2-local-mirror\eclipse-4.17-2020-06\
        b.离线库规模
            项目              数值
            Features 数量     75 个
            Plugins 数量      720 个
            总大小            346 MB
            源位置            C:\software\eclipse (Eclipse 4.16.0)
        c.运行原理
            ┌─────────────┐      依赖请求      ┌──────────────┐
            │  Maven项目   │ ────────────────> │ Nexus 私服   │
            └─────────────┘                    └──────────────┘
                   ▲                                  │
                   │                                  │ 查询代理仓库
                   │                                  ▼
                   │                          ┌──────────────┐
                   │                          │ Maven Central│
                   │                          └──────────────┘
                   │
                   │ 如果本地缓存存在
                   └─────────────── Maven检查 _remote.repositories
                                  └── 记录的仓库ID = "nexus"
                                   └── 当前配置有 "nexus"
                                    └── 使用本地缓存 ✓
    b.如何使用离线库
        a.操作说明
            修改三个项目的 pom.xml 文件以指向本地离线仓库。
        b.BSR 项目配置
            a.文件路径
                D:\workspace\bid-thrid-tools\bsr\pom.xml
            b.配置内容
                ---
                <repositories>
                    <!-- 本地 p2 离线仓库 -->
                    <repository>
                        <id>eclipse-2020-06-local</id>
                        <url>file:///C:/Users/mysla/.m2/p2-local-mirror/eclipse-4.17-2020-06</url>
                        <layout>p2</layout>
                    </repository>
                </repositories>
                ---
        c.TBS 项目配置
            a.文件路径
                D:\workspace\bid-thrid-tools\tbs\pom.xml
            b.配置内容
                ---
                <repositories>
                    <!-- 本地 p2 离线仓库 -->
                    <repository>
                        <id>eclipse-2020-06-local</id>
                        <url>file:///C:/Users/mysla/.m2/p2-local-mirror/eclipse-4.17-2020-06</url>
                        <layout>p2</layout>
                    </repository>
                </repositories>
                ---
        d.ZBS 项目配置
            a.文件路径
                D:\workspace\bid-thrid-tools\zbs\pom.xml
            b.配置内容
                ---
                <repositories>
                    <!-- 本地 p2 离线仓库 -->
                    <repository>
                        <id>eclipse-2020-06-local</id>
                        <url>file:///C:/Users/mysla/.m2/p2-local-mirror/eclipse-4.17-2020-06</url>
                        <layout>p2</layout>
                    </repository>
                </repositories>
                ---
    c.Maven settings.xml 配置
        a.文件位置
            C:\Users\mysla\.m2\settings.xml
        b.关键配置
            ---
            <!-- 镜像配置 -->
            <mirrorOf>external:*</mirrorOf>
            ---
        c.配置说明
            external:* 表示不镜像 file:// 协议的仓库,允许使用本地离线库。
    d.测试命令
        a.BSR 项目测试
            ---
            cd D:\workspace\bid-thrid-tools\bsr
            mvn clean package -DskipTests
            ---
        b.TBS 项目测试
            ---
            cd D:\workspace\bid-thrid-tools\tbs
            mvn clean package -DskipTests
            ---
        c.ZBS 项目测试
            ---
            cd D:\workspace\bid-thrid-tools\zbs
            mvn clean package -DskipTests
            ---
        d.断网测试
            ---
            mvn clean package -o -DskipTests
            ---

8.4 构建eclipse

01.常见版本
    a.核心概念
        a.RCP是什么
            RCP (Rich Client Platform) 不是 Eclipse 的某个发行版本,而是 Eclipse 平台的应用开发框架。
        b.常见混淆点
            概念                                 类型         说明
            Eclipse SDK                          发行版本     完整的 Eclipse 开发环境
            Eclipse IDE for Java                 发行版本     面向 Java 开发者的 IDE
            Eclipse RCP                          框架/技术    用来开发应用的框架
            Eclipse for RCP/Plug-in Developers   发行版本     用来开发 RCP 应用的 IDE
    b.Eclipse发行版本对比
        a.Eclipse SDK (Software Development Kit)
            最完整的发行版本
            ├── RCP 框架 (核心)
            ├── JDT (Java Development Tools)
            ├── PDE (Plug-in Development Environment)
            ├── Git 集成 (EGit)
            ├── Maven 集成 (M2E)
            └── 所有其他工具
        b.Eclipse IDE for Java Developers
            面向 Java 开发者
            ├── RCP 框架
            ├── JDT
            ├── 基础 Git 支持
            └── 核心 Java 工具
        c.Eclipse for RCP and Plug-in Developers
            面向 RCP 应用开发者
            ├── RCP 框架
            ├── PDE (插件开发工具)
            ├── WindowBuilder (UI 设计器)
            ├── RCP 测试工具
            └── RCP 文档和示例
        d.Eclipse RCP (Runtime)
            仅包含 RCP 运行时
            ├── Equinox (OSGi 框架)
            ├── SWT (原生 UI 工具包)
            ├── JFace (UI 框架)
            └── 核心工作台
    c.版本图示
        a.生态系统
            ┌────────────────────────────────────────────────────────┐
            │                    Eclipse 生态系统                    │
            │                                                         │
            │  ┌─────────────┐  ┌─────────────┐  ┌──────────────┐  │
            │  │Eclipse IDE  │  │  你的应用    │  │  其他 RCP     │  │
            │  │  (开发者)   │  │   (BSR等)   │  │   应用        │  │
            │  └──────┬──────┘  └──────┬──────┘  └──────┬───────┘  │
            │         │                │                │          │
            │         └────────┬───────┴────────────────┘          │
            │                  ↓                                     │
            │         ┌──────────────────────┐                     │
            │         │   Eclipse RCP 框架    │                     │
            │         │  (Workbench + JFace) │                     │
            │         └───────────┬──────────┘                     │
            │                     ↓                                 │
            │         ┌──────────────────────┐                     │
            │         │    SWT + Equinox     │                     │
            │         └──────────────────────┘                     │
            │                                                         │
            └────────────────────────────────────────────────────────┘
        b.版本包含关系图
            ┌──────────────────────────────────────────────────────────┐
            │                    Eclipse SDK                            │
            │                   (最完整,300+ MB)                        │
            │  ┌────────────────────────────────────────────────────┐  │
            │  │        Eclipse IDE for Java Developers             │  │
            │  │                 (~200 MB)                           │  │
            │  │  ┌──────────────────────────────────────────────┐  │  │
            │  │  │      Eclipse for RCP/Plug-in Developers      │  │  │
            │  │  │                (~180 MB)                      │  │  │
            │  │  │  ┌────────────────────────────────────────┐  │  │  │
            │  │  │  │         Eclipse RCP                    │  │  │  │
            │  │  │  │         (~50 MB)                        │  │  │  │
            │  │  │  │  ┌──────────────────────────────────┐  │  │  │  │
            │  │  │  │  │    Equinox + SWT + JFace         │  │  │  │  │
            │  │  │  │  │         (核心)                    │  │  │  │  │
            │  │  │  │  └──────────────────────────────────┘  │  │  │  │
            │  │  │  └────────────────────────────────────────┘  │  │  │
            │  │  └──────────────────────────────────────────────┘  │  │
            │  └────────────────────────────────────────────────────┘  │
            └──────────────────────────────────────────────────────────┘
        c.Eclipse平台与RCP架构的兼容性
            Eclipse平台     3.xRCP        4.xRCP     混合架构
            3.x             完全支持      不支持      不支持
            4.0-4.16        完全支持      完全支持    完全支持
            4.17            BSR使用       完全支持    完全支持
            4.18+           可能有E4冲突  完全支持     完全支持

02.使用定版
    a.版本选型
        a.报错
            你在 JDK 1.7.0_80 环境下,以下三个包无法识别/报错:
            sun.misc.BASE64Encoder
            sun.misc.BASE64Decoder
            com.sun.management.OperatingSystemMXBean
            org.eclipse.ui.internal.ide.model.WorkbenchAdapterBuilder
            -------------------------------------------------------------------------------------------------
            经发现,这IDE工具版本过高
        b.版本信息
            Eclipse IDE for RCP and RAP Developers
            Version: 2019-03 (4.11.0)
            Build id: 20190314-1200
            -------------------------------------------------------------------------------------------------
            经发现,20260114,我使用Mars版本
        c.版本兼容性问题
            Eclipse     版本  代号     平台版本    发布年份    最低 JDK 要求   支持 JDK 7?   支持 JDK 8?
            3.6 Helios  3.6   2010    JDK 5       ✅         是              ✅           是
            3.7 Indigo  3.7   2011    JDK 6       ✅         是              ✅           是
            4.2 Juno    4.2   2012    JDK 6       ✅         是              ✅           是
            4.3 Kepler  4.3   2013    JDK 6       ✅         是              ✅           是
            4.4 Luna    4.4   2014    JDK 7       ✅         是              ✅           是
            4.5 Mars    4.5   2015    JDK 7       ✅         是              ✅           是
            4.6 Neon    4.6   2016    JDK 8       ❌         否              ✅           是
        d.OSGi 兼容性规则
            场景                                      是否兼容
            Bundle 要求 JavaSE-1.7,运行在 JDK 8 上    ✅ 兼容(向下兼容)
            Bundle 要求 JavaSE-1.8,运行在 JDK 7 上    ❌ 不兼容(无法向上兼容)
            简单理解:新的 JDK 可以运行旧的代码,但旧的 JDK 无法运行要求新特性的代码。
        e.通用步骤
            检查 Problems 视图:查看所有错误和警告的详细信息。
            刷新项目:右键项目 -> Refresh,或按F5。
            清理项目:右键项目 -> Clean...,然后重新构建。
            尝试快速修复 (Quick Fix):在有错误的地方按Ctrl+1,查看自动修复建议。
    b.各种图标
        e.红色叉号 (X)
            a.描述
                通常表示严重的编译错误(Error),代码有语法问题。
            b.解决
                检查 Problems视图,双击错误定位到代码行修改。
        b.红色感叹号 (!)
            a.描述
                可能表示警告(Warning)或配置问题。
            b.解决
                检查 Build Path:右键项目 -> Properties -> Java Build Path -> Libraries,查看是否有红叉的JAR包,通常是路径引用错误或文件丢失,需要删除后重新添加或更新。
                更新 Maven 项目:右键项目 -> Maven -> Update Project...,修复pom.xml同步问题。
                配置 JDK:右键项目 -> Properties -> Java Build Path -> Libraries -> Add Library -> JRE System Library,确认JDK路径正确。
                检查编译器设置:右键项目 -> Properties -> Java Compiler,确保相关设置正确。
        c.红色小感叹号 (!) (jar包上)
            a.描述
                指该JAR包被引用但实际不存在。
            b.解决
                在Build Path中移除该JAR包或更新引用。

03.IDE配置
    a.编码问题
        a.全局设置(推荐首先设置)
            a.打开偏好设置
                Windows: Window → Preferences
                Mac: Eclipse → Preferences
            b.设置工作空间编码
                导航到: General → Workspace
                Text file encoding: 选择 Other: UTF-8
                点击 Apply 和 Apply and Close
            c.设置 JSP/XML/HTML 编码
                General → Editors → Text Editors → Spelling
                Web → HTML Files → Encoding: 设置为 ISO 10646/Unicode(UTF-8)
                Web → XML Files → Encoding: 设置为 ISO 10646/Unicode(UTF-8)
                Web → CSS Files → Encoding: 设置为 ISO 10646/Unicode(UTF-8)
            d.设置 Java 编译器编码
                Java → Compiler → Building
                Encoding: 设置为 UTF-8
                (或添加 -encoding UTF-8 到编译器参数)
        b.项目级别设置
            右键点击项目 bsr
            选择: Properties → Resource
            Text file encoding: 选择 Other: UTF-8
            点击 Apply 和 Apply and Close
        c.对单个文件转换编码(如果已有文件乱码)
            a.方法A:使用 Eclipse 转换
                右键点击乱码的文件(如 DiagnosticWizard.java)
                选择 Properties → Resource
                Text file encoding:
                先尝试改为 GBK 或 GB18030,点击 Apply
                如果显示正常,再改回 UTF-8
                或者直接使用 Convert to UTF-8 选项
            b.方法B:使用文本编辑器手动转换
                用 Notepad++ 或 VSCode 打开文件
                编码 → 转为 UTF-8
                保存
        d.重新导入项目
            如果设置后仍有问题,可以重新导入项目:
            删除项目(不删除源代码)
            右键项目 → Delete
            取消勾选 "Delete project contents on disk"
            重新导入
            File → Import → General → Existing Projects into Workspace
            选择 D:\workspace\bid-thrid-tools\bsr
            确保编码设置为 UTF-8
    b.Eclipse 访问限制设置步骤
        a.方法一:修改编译器错误/警告设置
            a.打开 Eclipse 偏好设置
                菜单栏:Window → Preferences 或快捷键:Alt + W → P
            b.导航到 Java 编译器设置
                路径:Java → Compiler → Errors/Warnings,找到并展开 Deprecated and restricted API 部分
            c.修改以下选项
                设置项:Forbidden reference (access rules),原值:Error / Warning,改为:Ignore
                设置项:Discouraged reference (access rules),原值:Warning / Error,改为:Ignore
            d.应用设置
                点击 Apply 和 OK
            e.清理并重新编译项目
                右键项目 → Project → Clean...,选择你的项目,点击 Clean,等待项目重新构建
        b.方法二:修改特定 JAR 的访问规则
            a.打开 Build Path 配置
                右键项目 → Properties,选择 Java Build Path,选择 Libraries 标签页
            b.定位目标库
                展开 JRE System Library,展开 rt.jar(或模块化 JDK 中的对应项)
            c.设置 Access Rules
                点击 Access rules(如果没有,点击 Edit 按钮),添加规则:sun/misc/** 可访问性为 Accessible,com/sun/management/** 可访问性为 Accessible
            d.完成配置
                点击 Finish → Apply → OK
        c.方法三:针对 Eclipse 内部 API
            a.适用对象
                针对 org.eclipse.ui.internal.ide.model.WorkbenchAdapterBuilder 等内部 API
            b.打开配置
                右键项目 → Properties,选择 Java Build Path → Libraries
            c.找到依赖
                找到并展开 Eclipse 插件依赖,展开 Plug-in Dependencies,找到 org.eclipse.ui.ide
            d.设置规则
                在 Access Rules 中添加规则:org/eclipse/ui/internal/** → Accessible
        d.验证是否生效
            a.检查错误状态
                设置完成后,打开有报错的 Java 文件,查看红色错误标记是否消失
            b.手动清理项目
                菜单栏选择 Project → Clean...,重新构建整个工作空间
            c.重启程序
                如果仍有问题,尝试重启 Eclipse
        e.快速检查清单
            1.Window → Preferences → Java → Compiler → Errors/Warnings
            2.Deprecated and restricted API → Forbidden reference → Ignore
            3.Deprecated and restricted API → Discouraged reference → Ignore
            4.Apply → OK
            5.Project → Clean...
            6.检查错误是否消失
    c.在 Eclipse 中运行 RCP 应用
        a.第一步:确保 BSR 项目已导入到 Eclipse
            a.打开与确认
                打开 Eclipse
                确认 bsr 相关项目已经在 Project Explorer 中:
                com.enuo.rcp.bsr
                com.enuo.rcp.bsr.base
                com.enuo.rcp.bsr.images
                com.enuo.rcp.bsr.res
                com.enuo.rcp.bsr.feature
                com.enuo.rcp.bsr.product
            b.导入操作
                如果没有,请导入:
                File → Import → General → Existing Projects into Workspace
                选择 D:\workspace\bid-thrid-tools\bsr 目录
        b.第二步:配置 Target Platform(重要!)
            a.操作1
                Window → Preferences → Plug-in Development → Target Platform
                点击 Add 或编辑现有平台
                选择 Nothing: Start with an empty target definition
                点击 Add → Software Site
            b.操作2
                输入:
                Name: Eclipse 2020-06
                Location: https://download.eclipse.org/releases/2020-06/
                选择需要的组件(或全选),点击 Finish
                勾选新创建的目标平台,点击 Apply
        c.第三步:启动方式
            a.方式1:从产品配置启动(推荐)
                找到 com.enuo.rcp.bsr.product 项目
                展开,找到 bsr.product 文件
                右键点击 bsr.product
                选择 Run As → Eclipse Application
                或选择 Debug As → Eclipse Application(调试模式)
            b.方式2:从插件启动
                找到 com.enuo.rcp.bsr 项目
                展开 src/com/enuo/rcp/bsr/product
                右键点击 Application.java
                选择 Run As → Eclipse Application
            c.方式3:使用运行配置
                点击顶部工具栏的 Run 下拉菜单
                选择 Run Configurations...
                左侧选择 Eclipse Application
                点击 New 创建新配置
                Name: 输入 BSR Application
                Project: 浏览选择 com.enuo.rcp.bsr.product
                Application: 选择 com.enuo.rcp.bsr.application
                Arguments 标签页:
                VM arguments: 添加 -Dfile.encoding=UTF-8
                点击 Run
        d.第四步:验证启动
            启动成功后,应该看到:
            应用窗口标题:"2021版电子评标工具"
            控制台输出:类似 中文字体设置成功: Microsoft YaHei UI
        e.常见问题
            a.问题1:找不到 "Run As → Eclipse Application"
                原因:项目没有被识别为 Eclipse 插件项目
                解决:
                右键项目 → Properties
                选择 Eclipse Plug-in Development → Nature
                确认勾选了 Plug-in Developer Resources
                点击 Apply
            b.问题2:启动时报错 "Application could not be found"
                原因:产品配置中的 Application ID 不匹配
                解决:
                打开 com.enuo.rcp.bsr.product/bsr.product
                找到第 4 行左右:
                <product ... application="com.enuo.rcp.bsr.application" ...>
                确认 plugin.xml 中有对应的 application 定义
            c.问题3:依赖解析失败
                原因:Target Platform 未正确配置
                解决:
                Window → Preferences → Plug-in Development → Target Platform
                确保当前平台已加载并激活
                点击 Reload Target Platform 按钮
        f.最简单的启动方法
            如果以上配置太复杂,直接运行已经构建好的可执行文件:
            ---
            # 直接运行 exe
            D:\workspace\bid-thrid-tools\bsr\com.enuo.rcp.bsr.product\target\products\com.enuo.rcp.bsr.bsr_product\win32\win32\x86_64\bsr.exe
            ---
            这是之前用 Maven 构建好的版本,不需要 Eclipse 也能运行。
        g.Application.java 查找指南
            a.文件位置
                D:\workspace\bid-thrid-tools\bsr\com.enuo.rcp.bsr\src\com\enuo\rcp\bsr\product\Application.java
            b.BSR 与 ZBS 的区别
                BSR 项目路径:
                bsr\com.enuo.rcp.bsr\src\com\enuo\rcp\bsr\product\Application.java (插件名: com.enuo.rcp.bsr)
                ZBS 项目路径:
                zbs\com.enuo.rcp.zbsx.product\src\com\enuo\rcp\zbsx\product\Application.java (插件名: com.enuo.rcp.zbsx.product)
            c.在 Eclipse 中找到 BSR 的 Application.java
                方法1(资源管理器):
                在 Project Explorer 中找到 com.enuo.rcp.bsr 项目
                展开项目
                展开 src 文件夹
                依次展开:com.enuo.rcp.bsr → product
                就能看到 Application.java
                方法2(快捷键):
                使用 Ctrl+Shift+R (Open Resource) 直接搜索 Application.java
                然后选择 com.enuo.rcp.bsr 项目中的那个

04.编译部署
    a.部署方式
        a.汇总
            部署方式          适用场景                复杂度          推荐指数
            Eclipse IDE 导出  快速原型、小规模部署     ⭐            ⭐⭐⭐
            Tycho + Maven     生产环境、CI/CD         ⭐⭐⭐       ⭐⭐⭐⭐⭐
            P2 更新站点        需要在线更新            ⭐⭐⭐⭐    ⭐⭐⭐⭐
            手动部署          特殊环境、离线部署       ⭐⭐         ⭐⭐
        b.Eclipse IDE 导出
            ┌─────────────────────────────────────────┐
            │         Eclipse RCP Application         │
            │  ┌───────────────────────────────────┐  │
            │  │   OSGi Framework (Equinox)        │  │
            │  │  ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │  │
            │  │  │Bundle│ │Bundle│ │Bundle│ │...│ │  │
            │  │  └─────┘ └─────┘ └─────┘ └─────┘ │  │
            │  └───────────────────────────────────┘  │
            └─────────────────────────────────────────┘
        c.docker运行
            ┌─────────────────────────────────────────┐
            │         Windows 主机                     │
            │  ┌───────────────────────────────────┐  │
            │  │     Docker Desktop                │  │
            │  │  ┌─────────────────────────────┐ │  │
            │  │  │   Windows 容器               │ │
            │  │  │  ┌───────────────────────┐  │ │  │
            │  │  │  │  BSR 应用             │  │ │  │
            │  │  │  │  - JDK 11             │  │ │  │
            │  │  │  │  - Office              │  │ │  │
            │  │  │  │  - Jacob DLL           │  │ │  │
            │  │  │  └───────────────────────┘  │ │  │
            │  │  │         ↓                   │ │  │
            │  │  │  ┌───────────────────────┐  │ │  │
            │  │  │  │  RDP 服务器          │  │ │  │
            │  │  │  └───────────────────────┘  │ │  │
            │  │  └─────────────────────────────┘ │  │
            │  └───────────────────────────────────┘  │
            │              ↓                           │
            │     RDP 客户端连接                       │
            └─────────────────────────────────────────┘
    b.使用 Tycho (Maven) 进行无头构建
        a.原理
            通过 Maven + Tycho 插件,从 `.product` 文件自动构建出可独立运行的 RCP 应用。
        b.优点
            完全不需要打开 Eclipse IDE
            可以集成到 CI/CD 流程
            命令行一键构建
            支持多平台导出(Windows/Linux/macOS)
            标准化的 Maven 构建流程
        c.底层运行
            ┌─────────────────────────────────────────────────────────┐
            │                    Maven 3.6.3                          │
            │  ┌───────────────────────────────────────────────────┐  │
            │  │            Tycho 2.7.5 (RCP 插件)                 │  │
            │  │                                                   │  │
            │  │  ┌─────────────────────────────────────────────┐  │  │
            │  │  │        p2 目标平台 (Eclipse 2020-06)        │  │  │
            │  │  │                                             │  │  │
            │  │  │  ┌──────────┐  ┌──────────┐  ┌──────────┐  │  │  │
            │  │  │  │   bsr    │  │ bsr.base │  │ bsr.prod │  │  │  │
            │  │  │  │  plugin  │  │  plugin  │  │ product  │  │  │  │
            │  │  │  └──────────┘  └──────────┘  └──────────┘  │  │  │
            │  │  └─────────────────────────────────────────────┘  │  │
            │  └───────────────────────────────────────────────────┘  │
            └─────────────────────────────────────────────────────────┘
    c.使用 Eclipse IDE 导出一次
        a.原理
            a.说明
                在 Eclipse IDE 中使用产品导出向导导出一次,之后直接运行导出的可执行文件。
            b.操作
                1.在 Eclipse 中打开产品配置文件,com.enuo.rcp.bsr/bsr.product
                2.选择 "Exporting" 标签页,The product includes native launcher artifacts ✅已勾选,这是生成 exe 的关键配置!
                3.点击 "Export Product",直接点击导出向导链接: 在 Exporting 部分,点击 "Eclipse Product export wizard" 链接
                4.选择导出目录
                5.完成
        b.RCP产品打包要点
            a.基本结构
                启动器 (.exe)
                配置文件
                plugins/ (插件)
                features/ (功能集)
                configuration/ (OSGi 配置)
            b.可选组件
                jre/ (绑定 JRE)
                *.dll (JNI 本地库)
                p2/ (更新元数据)
            c.打包方式
                简单: 目录复制
                中等: ZIP 压缩
                专业: Inno Setup 安装程序
            d.分发策略
                完整包: 适合小规模
                在线安装: 适合大规模
        c.产品大小分析
            a.ZBS产品组成(334MB)
                JRE:          ~150 MB (45%)
                Plugins:      ~120 MB (36%)
                Features:      ~50 MB (15%)
                JNI DLLs:       ~1 MB (0.3%)
                其他:          ~13 MB (4%)
            b.优化建议
                使用 JRE 组件裁剪 (可减少 ~50 MB)
                移除不需要的语言包
                使用 ProGuard 压缩 JAR
        d.内置JRE
            jre/
            ├── bin/
            │   ├── java.exe         # Java 控制台启动器
            │   ├── javaw.exe        # Java 窗口启动器 (无控制台)
            │   ├── server/          # JVM 服务端模式库
            │   └── client/          # JVM 客户端模式库
            └── lib/
                ├── rt.jar           # 运行时类库 (Java 8)
                ├── modules          # Java 模块 (Java 9+)
                └── ...
            -------------------------------------------------------------------------------------------------
            绑定的 JRE 优势:
            用户无需预先安装 Java
            确保使用特定版本的 Java
            避免版本冲突
            简化部署流程
        e.底层运行
            ┌─────────────────────────────────────────────────────────────┐
            │                    Maven + Tycho 构建                        │
            └─────────────────────────────────────────────────────────────┘
                                          ↓
            ┌─────────────────────────────────────────────────────────────┐
            │                  构建产物 (334 MB)                          │
            │  products/zbs/win32/win32/x86_64/                          │
            │    ├── ZBSEdit.exe                                          │
            │    ├── plugins/ (177个 JAR)                                 │
            │    ├── features/ (13个)                                     │
            │    ├── configuration/                                       │
            │    ├── jre/ (如果绑定)                                      │
            │    └── *.dll (JNI 库)                                       │
            └─────────────────────────────────────────────────────────────┘
                                          ↓
            ┌─────────────────────────────────────────────────────────────┐
            │                   打包选项                                  │
            ├─────────────────┬───────────────────┬───────────────────────┤
            │   目录复制       │    ZIP 压缩        │    Inno Setup         │
            │ → 直接使用       │ → 解压使用         │ → setup.exe 安装      │
            │                 │                   │                       │
            │ 无安装过程        │ 无安装向导          │ 专业安装向导          │
            │ 无卸载程序        │ 无卸载程序          │ 自动卸载              │
            │ 手动创建快捷方式   │ 手动创建快捷方式     │ 自动创建快捷方式       │
            └─────────────────┴───────────────────┴───────────────────────┘
    d.Inno Setup导出方案
        a.一键构建命令
            ---
            cd D:\workspace\bid-thrid-tools-bak\zbs
            mvn clean package
            ---
        b.构建流程
            Maven 构建流程
            ├─ 1. tycho-compiler-plugin        → 编译代码
            ├─ 2. tycho-p2-director-plugin     → 生成产品
            │     ├─ materialize-products      → 创建产品目录
            │     └─ archive-products          → 打包为 ZIP
            │
            ├─ 3. exec-maven-plugin
            │     ├─ copy-dlls                 → 复制 DLL 到根目录
            │     ├─ copy-jre                  → 复制 JRE 到产品目录
            │     └─ generate-installer        → 运行 Inno Setup 编译器
            │
            └─ 4. 构建完成
               ├─ target/products/             → 产品文件
               ├─ target/zbs-setup-*.exe       → 安装程序
               └─ target/*.zip                 → 产品压缩包
        c.构建产物
            target/
            ├── products/                                    # 产品文件
            │   └── com.enuo.rcp.zbsx.product.zbsx_product/
            │       └── win32/
            │           └── win32/
            │               └── x86_64/
            │                   ├── ZBSEdit.exe             # 启动器
            │                   ├── ZBSEdit.ini             # 配置
            │                   ├── artifacts.xml
            │                   ├── jacob-*.dll             # JNI 库(根目录)
            │                   ├── jre/                    # JRE 目录
            │                   ├── features/
            │                   ├── plugins/
            │                   ├── configuration/
            │                   └── p2/
            │
            ├── zbs-setup-3.0.0.exe                          # 安装程序
            └── com.enuo.rcp.zbsx.product-3.0.0-SNAPSHOT.zip # 产品压缩包
        d.用户安装流程
            用户运行 zbs-setup-3.0.0.exe
                ↓
            显示安装向导
                ↓
            选择安装目录(默认: C:\Program Files\luqiao\zbs)
                ↓
            选择快捷方式选项
                ↓
            复制文件
                ├─ ZBSEdit.exe
                ├─ *.dll
                ├─ jre/
                ├─ features/
                ├─ plugins/
                └─ ...
                ↓
            创建快捷方式
                ├─ 开始菜单
                ├─ 桌面(可选)
                └─ 快速启动栏(可选)
                ↓
            生成卸载程序
                ├─ unins000.exe
                └─ unins000.dat
                ↓
            完成安装
        e.卸载流程
            用户运行卸载程序
                ├─ 从"添加/删除程序"运行
                └─ 或直接运行 unins000.exe
                ↓
            显示卸载向导
                ↓
            删除文件
                ├─ ZBSEdit.exe
                ├─ *.dll
                ├─ jre/
                ├─ features/
                ├─ plugins/
                └─ ...
                ↓
            删除快捷方式
                ├─ 开始菜单
                ├─ 桌面
                └─ 快速启动栏
                ↓
            删除注册表项
                ↓
            完成卸载
        f.流程图示
            ┌─────────────────────────────────────────────────────────────┐
            │                    完整打包流程                              │
            ├─────────────────────────────────────────────────────────────┤
            │  1. Maven Tycho 构建                                         │
            │     ↓ 生成产品基础结构(exe + plugins + features)           │
            │                                                              │
            │  2. Maven 插件复制 DLL                                       │
            │     ↓ 将 jacob-*.dll 从 plugin 复制到根目录                 │
            │                                                              │
            │  3. Maven 插件复制 JRE                                       │
            │     ↓ 将 JRE 从系统复制到产品目录                            │
            │                                                              │
            │  4. Maven 调用 Inno Setup 编译器                             │
            │     ↓ 生成安装程序(.exe)                                   │
            │                                                              │
            │  5. 用户运行安装程序                                         │
            │     ↓ 安装到目标目录                                         │
            │                                                              │
            │  6. Inno Setup 自动生成卸载程序                              │
            │     → unins000.exe + unins000.dat                           │
            └─────────────────────────────────────────────────────────────┘
    e.pom镜像
        a.官方镜像
            <repositories>
                <!-- Eclipse p2 仓库 - 2020-06 版本 (Eclipse 4.17) -->
                <!-- ZBS 使用纯 3.x 架构,使用 4.17 版本的库 -->
                <!-- 注意:阿里云镜像的p2仓库结构不完整,无法用于Tycho构建,必须使用官方源 -->
                <repository>
                    <id>eclipse-2020-06</id>
                    <url>https://download.eclipse.org/releases/2020-06/</url>
                    <layout>p2</layout>
                </repository>
                <!-- Eclipse 更新站点 - 4.17 版本 -->
                <repository>
                    <id>eclipse-2020-06-update</id>
                    <url>https://download.eclipse.org/eclipse/updates/4.17/</url>
                    <layout>p2</layout>
                </repository>
                <!-- ECF 更新站点 -->
                <repository>
                    <id>ecf-updates</id>
                    <url>https://download.eclipse.org/rt/ecf/3.14.17/site.p2/</url>
                    <layout>p2</layout>
                </repository>
            </repositories>
        b.本地镜像
            <repositories>
                <!-- 本地 p2 离线仓库 - 从 C:\software\eclipse 拷贝 -->
                <!-- 使用本地离线库,避免联网下载,提高构建速度 -->
                <!-- 位置: C:\Users\mysla\.m2\p2-local-mirror\eclipse-4.17-2020-06 -->
                <repository>
                    <id>eclipse-2020-06-local</id>
                    <url>file:///C:/Users/mysla/.m2/p2-local-mirror/eclipse-2020-06-full</url>
                    <layout>p2</layout>
                </repository>
                <!-- JustJ JRE p2 离线仓库 - 用于打包 JRE 到产品中 -->
                <!-- 下载脚本位置: aries/chapter09/Download-JustJ-JRE.ps1 -->
                <repository>
                    <id>justj-jre11</id>
                    <url>file:///C:/Users/mysla/.m2/p2-local-mirror/justj-jre11-full</url>
                    <layout>p2</layout>
                </repository>
            </repositories>

8.5 梳理需求

01.需求收集
    a.评标工具
        a.对象
            评标流程
        b.设计
            首页            筛选框、表格(采购单位、方案编号、方案名称...)、操作(评标)
            查看标书        方案基本信息、包件信息、录入会议信息
            评标-人员信息   专家确认信息、评标专家回避承诺书、
            评标-人员投票   专家组长、评标组长
            评标-资格审查   根据材料逐个对供应商进行评审,确认无误,进入下一阶段
            评标-谈判报价   启动谈判后,开始报价,可延长报价,根据报价来决定此轮报价
            评标-技术打分   根据材料逐个对供应商进行评审得分,确认无误,进入下一阶段
            评标-价格评审   由专家组长勾选推荐供应商,来确定结果,来进入下一阶段
            评标-评审报告   一键生成PDF,将结果送至项目负责人处
    b.投标工具
        a.对象
            供应商
        b.设计
            供应商报名   由电子商务平台进入
            投标-编辑   新建投标书,选择投标项目,然后填写信息后,合并PDF、验章,生成标书
            投标-上传   上传前,设置标书密码
    c.编标工具
        a.对象
            代理机构
        b.设计
            新建招标书   导入项目
            查看标书    项目编号、项目名称、包组编号、采购类型、...

02.功能清单
    a.编标小工具
        a.登陆
            登陆编标小工具
        b.进入招标文件编辑工具
            新建招标书
            我的标书库
            模版管理
        c.新建招标书
            导入项目        导入采购项目
            完成表单        输入新建招标书相关信息
            选择模版        选择新建招标书的模版文件
            完成            进入新建招标书详情页
        d.编辑招标书
            项目信息
            标书正文
            更新云数据
            从云数据获取数据
            导出word
            章节内容提取     展示域与值
            保存
            导出word
            生成pdf
        e.资格审查(第二信封)
            新增审查标准与审查项    新增审查标准与审查项
            使用模版
            存为模版
            上移
            下移
            删除                   删除新增审查标准与审查项
    b.投标小工具
        a.登陆
            供应商登陆小工具
        b.新建投标书
            选择招标书
            已报名项目列表展示
            下载
        c.投标书列表展示
            展示列表
            查看公告
            查看招标文件
            打开:打开对应的招标项目
            删除:删除对应的已报名的招标项目
        d.导入投标文件
            导入商务技术PDF投标文件
            导入价格PDF投标文件
            商务技术标书正文
        e.评标导航
            根据左侧采购单位设置的专家评审项目,将自己上传上来的资料绑定对应的评审项目,所有绑定完成,
            即可进入下一步(左侧绑定什么,专家看到的资料就是什么,请认真核对是否绑定正确)"
        f.确认报价
            选择税率
            输入报价相关信息
            输入报价
            保存
            重置物料清单
            生成正式投标文件
        g.上传投标文件
            输入密码
            确认上传
    c.评标小工具
        a.进入评标厅
            登陆                      输入专家手机号和参与码进行登陆
            项目负责人                点击以项目负责人身份进入评标小工具
            专家                      点击以专家身份进入评标小工具
        b.进入评标
            参与项目列表展示           参与项目列表展示
            评标                      点击评标按钮进入对应项目开始评标
        c.确认信息
            专家信息展示               专家信息展示
            确认信息                   确认信息专家信息
        d.评标专家回避承诺书
            评标专家回避承诺书展示      展示评标专家回避承诺书,包含采购单位/项目名称/专家等信息
            勾选已阅读专家回避承诺书    确认专家点击签署回避承诺书
            下一步                     进入下一步流程
        e.评标专家廉洁自律承诺书
            评标专家廉洁自律承诺书展示  展示评标专家回避承诺书,包含采购单位/项目名称/专家等信息
            勾选已阅读专家回避承诺书    确认专家点击签署回避承诺书
            下一步                     进入下一步流程
        f.选择专家组长投票
            展示专家列表                展示推荐专家名称、投票进度、专家组长名称、专家列表
            投票                        选者要投票的专家进行投票
            进入下一环节                待专家组长确认后进入下一环境
        g.资格性审查
            投标文件展示                展示投标文件
            上一家                      切换到上一家投标文件
            下一家                      切换到下一家投标文件
            查看招标书                  查看招标书
            评审指标列表                 评审指标列表
            通过                        通过对应指标
            不通过                      不通过对应指标
            汇总提交                    所有供应商评审完毕后点击汇总提交
        h.确认无误,完成资格性评审
            确认无误,完成资格性评审
            解锁                        如需修改点击“解锁”进行修改
            关闭                        关闭当前界面
            进入下一步                 (等待各专家评审完毕后,由专家组长)点击“进入下一步”
        i.谈判报价
            自动谈判                    由专家组长开启谈判,并且仅在桥谈判、询比、单一流程(谈判+最低价)流程中有
            结束谈判
            废标
            跳过谈判
            查看报价表
            开始第二轮报价
            延长第二轮报价
            结束第二轮报价
            供应商报价列表展示
            作废
            发送信息
        j.商务打分
            投标文件展示                 展示投标文件
            上一家                       切换到上一家投标文件
            下一家                       切换到下一家投标文件
            查看招标书                   查看招标书
            评审指标列表                  评审指标列表
            通过                          通过对应指标
            不通过                        不通过对应指标
            汇总提交                      所有供应商评审完毕后点击汇总提交
        k.确认无误,完成商务评分
            确认无误,完成商务评分
            解锁                          如需修改点击“解锁”进行修改
            关闭                          关闭当前界面
            进入下一步                    (等待各专家评审完毕后,由专家组长)点击“进入下一步”
        l.查看商务评分汇总表
            点击“确认结果,并进入下一环节”
            重新评审环节
            废标
        m.技术评分打分
            投标文件展示                   展示投标文件
            上一家                         切换到上一家投标文件
            下一家                         切换到下一家投标文件
            查看招标书                     查看招标书
            评审指标列表                   评审指标列表
            通过                           通过对应指标
            不通过                         不通过对应指标
            汇总提交                        所有供应商评审完毕后点击汇总提交
        n.确认无误,完成技术评分
            确认无误,完成商技术评分
            解锁                           如需修改点击“解锁”进行修改
            关闭                           关闭当前界面
            进入下一步                     (等待各专家评审完毕后,由专家组长)点击“进入下一步”
        o.查看技术评分汇总表
            点击“确认结果,并进入下一环节”
            重新评审环节
            废标
        p.价格评审
            保存评审结果
            进入下一环节
        q.推荐中标人
            投标人列表展示
            勾选推荐中标人
            确认无误,进入下一环节
            重新评审该环节
            环节跳转
            关闭
        r.人生成评标报告
            评标历史展示                    展示评审报告、专家签到表、评分明细表、承诺书等
            确认报告                        项目经理确认报告
            质疑报告                        项目经理提出质疑

03.BSR系统
    a.评标大厅
        a.左上角
            刷新
            更多搜索
        b.表格列表
            采购单位                                 方案编号            方案名称           编制人        采购方式        预算金额(元)     申报时间                 审核时间                 审核状态     流程状态     操作
            山西路桥建设集团有限公司招标采购中心       CG202101130001      公111采购计划2     XX           公开招标         600,000.00       2021-01-12 13:11:18     2021-01-12 13:12:20      审核通过     开评标       【评标大厅】
        c.方案基本信息
            采购方案名称                 方案编号                         是否框架协议
            方案类型                     招采类型                         项目预算金额(元)
            采购方式                     计划预算金额(元)               币种
            是否选取招标代理             立项依据
            承办方式                     采购实施部门
            代理机构                     是否双信封招标
            开标评标地点                 是否收取资格预审文件费用
            评审办法
            是否暗标项目
            标书是否收费
            是否收取投标保证金
            项目简介
            开标评标地点
            备注
        d.包件信息
            序号包件名称     最少响应供应商个数     包件标书费(元)     投标保证金(元)     包件说明     操作
            1               jt131采购计gk计划001   3                                                   评标大厅
        e.录入会议信息
            好视通会议室号:123
            好视通会议室密码:123
        f.包件信息
            a.主表
                序号            包件编号               包件名称                    最少响应供应商个数   是否有关联的短名单目录库     短名单目录库     项目包件预算金额(元)   交货时间       交货地址                                  包件说明
                1               1                      jt131采购计gk计划001       3                   是                         钢筋短名单目录   400,000.00              2021-01-13    山西省太原市迎泽区文庙街道太原集团A栋202
            b.子表
                序号            物资设备服务编码        物资设备服务名称            计量单位            采购数量                   含税预算单价(元) 含税金额(元)      非税预算单价(元)      非税金额(元)      市场单价(元)      备注
                1               00000000001            普通热轧带肋钢筋HRB3356mm   吨                  20                        20,000.00         400,000.00         19,400.00              388,000.00         21,000.00
    b.进入评标
        a.说明
            等项目负责人分发评标资料后点击“评标”开始评标
        b.菜单名:专家评标项目列表
            项目编号             项目名称                包组编号                 采购方式               项目负责人              操作                  备注
            CG202101130001       jt131采购计gk计划001    1                       公开招标               中心管理员              【评标】               评标资料获取进度:完成
    c.确认信息
        a.说明
            核实信息无误后点击“确认信息”
        c.菜单名:专家评标操作台
            CG202101130001_itit131采购计gk计划001
            刷新                                                       当前步骤:请确认专家信息
            -------------------------------------------------------------------------------------------------
            请确认评标专家信息,如有不符请与项目负责人联系!
            -------------------------------------------------------------------------------------------------
            专家信息
            姓名:解博           手机号:18636905787
    d.评标专家回避承诺书
        a.说明
            阅读“评标专家回避承诺书”,并勾选“我已阅读评标专家回避承诺书”后,再点击下一步
        b.内容
            评标专家回避承诺书
            -------------------------------------------------------------------------------------------------
            本人受海逸恒安项目管理有限公司邀请,担任项目山西路桥物资采购项目1的评委。本人郑重承诺,有下列情形之一的,应主动申请回避,如有违反,同意取消本人评标专家资格,并承担相应的法律责任:
            1、投标人或投标人王要负责人的近亲属;
            2、项目主管部门或监督管理部门的人员;
            3、与投标人有其他社会关系或者经济利益关系,可能影响对投标公正评审的;
            4、曾因在招标、评标以及其他与招标投标活动有关活动中从事违法行为而受过行政处罚或刑事处罚的;
            5、其他依法应当回避的人员。
            特此承诺!
            承诺人(签字):解博
            -------------------------------------------------------------------------------------------------
            我已阅读评标专家回避承诺书。
            下一步
    e.评标专家廉洁自律承诺书
        a.说明
            阅读“评标专家廉洁自律承诺书”,并勾选“我已阅读评标专家廉洁自律承诺书”后,再点击下一步
        b.内容
            评标专家廉洁自律承诺书
            -------------------------------------------------------------------------------------------------
            本人作为山西路桥物资采购项目1项目的评审委员会成员,谨在此郑重承诺:
            1、严格遵守《中华人民共和国招标投标法》、《中华人民共和国保密法》等国家法律及国家有关部门关于招投标的法规规章,维护国家利益;
            2、客观、公正地履行职责,遵守职业道德,严格按照招标文件规定的评标标准、办法和有关法律、法规的规定进行评标,对所提出的评审意见承担个人责任;
            3、履行相关的保密义务,遵守评标纪律,不私下接触投标人,不收受他人的财物或其他好处,不透漏对投标文件的评审和比较、中标候选人的推荐情况以及与评标有关的其他情况;
            4、自觉抵制违法违规的招投标活动,协助、配合专家库管理部门的监督、检查工作;
            5、如有违反上述承诺的行为发生,自愿接受主管部门处理。
            特此承诺!
            承诺人(签字):解博
            -------------------------------------------------------------------------------------------------
            我已阅读评标专家廉洁自律承诺书。
            下一步
    f.投票
        a.说明
            选择其中一位专家点击"投票"
        b.菜单名:专家评标操作台
            CG202101130001_itit131采购计gk计划001
            刷新                                                    当前步骤:推荐专家组长进行中,请进行投票
            -------------------------------------------------------------------------------------------------
            请为您所支持的专家投票,也可以为自己投票,得票数量最高者将担任专家组长,每人每次只能投一票。
            请您进行第[1]轮投票!
            结果提示:专家票数最多,成为该评标专家组长!
            -------------------------------------------------------------------------------------------------
            姓名            部门            专家类型            操作
            专家二二二                      推荐专家            投票
            专家一号                        推荐专家            投票
            -------------------------------------------------------------------------------------------------
            请确认评标专家信息,如有不符请与项目负责人联系!
            专家信息
            姓名:解博           手机号:18636905787
        c.等待专家投票结束后,点击关闭
            推荐组长投票进行中...
                                       您推选【专家一号】为专家组长
                                       【专家一号】成为本次评标组长!
            当前专家总数量(位):3
            已投票专家数量(位):3
    g.资格性审查
        a.操作1
            a.说明
                ①参照左边的材料,逐个评审审查项。
                ②点击下一家供应商进行评审。
                ③各供应商评审完毕后,点击汇总提交。
            b.界面
                马霞   马中
                ---------------------------------------------------------------------------------------------
                当前评审供人:马中
                上一家        下一家          查看招标书           汇总提交
                ---------------------------------------------------------------------------------------------
                选择对比供应商:查看
                ---------------------------------------------------------------------------------------------
                评审指标            是否通过
                注册资本达1000w     通过       不通过
                无劳动纠纷          通过       不通过
        b.操作2
            a.说明
                点击“确认无误,完成资格性评审”,如需修改点击“解锁”进行修改
            b.界面
                正在评审中。。。                                                  提示:  符合  不符合  未完成
                ---------------------------------------------------------------------------------------------
                评审指标               A001          A002          A003
                资格审查第一项         通过           通过          通过
                资格审查第二项         通过           通过          通过
                ---------------------------------------------------------------------------------------------
                温馨提示:
                一旦确认提交后,将无法修改本次评审分数。提交后,耐心等待组长的审核!
                若对结果有异议可以通过“解锁”后,进行修改。再使用“保存”进行保存修改后结果。
                ---------------------------------------------------------------------------------------------
                保存   解锁     确认无误,完成资格性评审   关闭
        c.操作3
            a.说明
                (等待各专家评审完毕后,由专家组长)点击“进入下一步”
            b.界面
                评审完成,请耐心等待组长审核!                                     提示:  符合  不符合  未完成
                ---------------------------------------------------------------------------------------------
                评审指标               A001          A002          A003
                资格审查第一项         通过           通过          通过
                资格审查第二项         通过           通过          通过
                ---------------------------------------------------------------------------------------------
                温馨提示:
                一旦确认提交后,将无法修改本次评审分数。提交后,耐心等待组长的审核!
                若对结果有异议可以通过“解锁”后,进行修改。再使用“保存”进行保存修改后结果。
                ---------------------------------------------------------------------------------------------
                保存   解锁     请耐心等待组长审核...  进入下一步   关闭
        d.操作4
            a.说明
                查看资格性评审汇总表,点击"确认结果,并进入下一环节"
            b.界面
                XXXXXX