西藏巴青项目

休药期标准管理技术方案.md 7.3KB

休药期标准管理 — 技术方案

依据:同目录 休药期标准管理功能需求.md。本模块不设发布/下架(无 publish_status 等字段);仅 知识库同步 维度与 CRUD。库表、接口与其它标准模块实现相互独立。


1. 技术架构

说明
后端 RuoYi v3.9.2springboot2 分支):JDK 8、Spring Boot 2.x、Spring MVC、MyBatis、Druid
数据库 MySQL 5.7.39,InnoDB,utf8mb4
前端 若依 Vue2(与分支配套;路由、权限、字典按项目惯例)
知识库 HTTP 调用知识库后台管理服务;鉴权、URL、报文见《知识库接口对接说明》;本模块仅涉及添加/更新/删除(幂等)类变更,不涉及发布/下架可见性接口

分层ControllerService(状态校验、事务、知识库编排)→ Mapper/XML → domain(小驼峰 JSON 与 Jackson 一致)。

一致性(摘要)

  • 删除:本地删除前须为 kb_sync_status=0;删除流程中按需求对知识库发幂等删除通知(无条目则对端忽略),失败策略(阻断本地删 vs 异步补偿)由与知识库约定二选一并在实现中固定。
  • 移出:前置 kb_sync_status=1;成功后 kb_sync_status=0,清空 kb_doc_id
  • 同步:前置 kb_sync_status=0;成功后 kb_sync_status=1,写入 kb_doc_id(未对接 HTTP 时可占位 LOCAL-{id},与项目其它标准模块占位策略一致)。

2. 数据库设计

2.1 表 biz_withdrawal_period_standard

字段 类型 非空 默认值 说明
id bigint(20) Y 自增 主键
drug_name varchar(64) Y 药物名称(业务 1~20 字符;全表唯一,保存前 trim)
drug_type tinyint(4) Y 1抗生素 2抗原虫 3抗病毒 4激素
withdrawal_days int(11) Y 休药期天数,1~999
usage_guide varchar(600) Y 使用指南(需求 1~200 汉字,宽度留余量)
drug_effect varchar(600) Y 药物作用(同上)
kb_sync_status tinyint(4) Y 0 0 未同步,1 已同步
kb_doc_id varchar(128) N NULL 知识库文档 ID
create_by / create_time / update_by / update_time 若依惯例
remark varchar(500) N NULL 备注

索引PRIMARY KEY (id)UNIQUE KEY uk_drug_name (drug_name)KEY idx_create_time (create_time)KEY idx_drug_type (drug_type)KEY idx_kb (kb_sync_status)

合法 kb_sync_status:仅 01;应用层禁止写入其它值。

DDL 示例

CREATE TABLE `biz_withdrawal_period_standard` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `drug_name` varchar(64) NOT NULL COMMENT '药物名称(1~20字)',
  `drug_type` tinyint(4) NOT NULL COMMENT '1抗生素2抗原虫3抗病毒4激素',
  `withdrawal_days` int(11) NOT NULL COMMENT '休药期天数1~999',
  `usage_guide` varchar(600) NOT NULL COMMENT '使用指南',
  `drug_effect` varchar(600) NOT NULL COMMENT '药物作用',
  `kb_sync_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0未同步1已同步',
  `kb_doc_id` varchar(128) DEFAULT NULL COMMENT '知识库文档ID',
  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_drug_name` (`drug_name`),
  KEY `idx_create_time` (`create_time`),
  KEY `idx_drug_type` (`drug_type`),
  KEY `idx_kb` (`kb_sync_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='休药期标准';

2.2 枚举(后端/字典建议)

字段 含义
drug_type 14 抗生素 / 抗原虫 / 抗病毒 / 激素(顺序与需求列举一致)
kb_sync_status 0 未同步
1 已同步

3. 接口设计

统一响应AjaxResult / 分页 TableDataInfo(与 RuoYi 一致)。

Base Path/withdrawalPeriod/standard(若项目有全局 context-path 或网关前缀,实际 URL 需拼接)。

权限标识(建议)withdrawalPeriod:standard:list|query|add|edit|remove|syncKb|removeKb publish / offline

# 说明 Method URI 权限 要点
3.1 分页列表 GET /withdrawalPeriod/standard/list withdrawalPeriod:standard:list Query:pageNumpageSize(默认与项目列表一致,如 20)、keyword drug_name 模糊)、drugType(精确,可空);排序建议 create_time DESC, id DESC
3.2 详情 GET /withdrawalPeriod/standard/{id} withdrawalPeriod:standard:query 返回全字段含 kbSyncStatuskbDocId
3.3 新增 POST /withdrawalPeriod/standard withdrawalPeriod:standard:add Body:drugNamedrugTypewithdrawalDaysusageGuidedrugEffect;落库 kb_sync_status=0kb_doc_id
3.4 修改 PUT /withdrawalPeriod/standard withdrawalPeriod:standard:edit Body 含 id kb_sync_status=0;校验字段同需求 4.1kb_sync_status=1 时自动推库(与需求「已同步不可改」一致,改内容须先移出)
3.5 删除 DELETE /withdrawalPeriod/standard/{ids} withdrawalPeriod:standard:remove kb_sync_status=0kb_sync_status=1 须先 removeKb;删前/删后按约定调知识库幂等删除;再删本地记录
3.6 同步知识库 POST /withdrawalPeriod/standard/syncKb/{id} withdrawalPeriod:standard:syncKb 前置 kb_sync_status=0;成功则 kb_sync_status=1,写入 kb_doc_id
3.7 移出知识库 POST /withdrawalPeriod/standard/removeKb/{id} withdrawalPeriod:standard:removeKb 前置 kb_sync_status=1;成功则 kb_sync_status=0,清空 kb_doc_id

校验(摘要)drugName 1~20 且 全表唯一countByDrugNameExcludeId,修改时传 excludeId;重复提示「药物名称已存在」);drugType ∈ {1,2,3,4}withdrawalDays 整数 1~999;usageGuide / drugEffect 长度按需求汉字上限(WithdrawalPeriodStandardValidation + BizWithdrawalPeriodStandardServiceImpl)。


4. 与功能需求的对应(便于验收)

需求章节 技术落点
4.1 新增字段 2.1 + POST 3.3
4.2 列表 GET 3.1keyworddrug_namedrugType
4.3 修改 PUT 3.4kb_sync_status=0
4.4 删除 DELETE 3.5 + 知识库幂等删除
4.5 / 4.6 POST 3.6 / 3.7
无发布/下架 无对应接口与表字段

5. 交付清单(勾选)

  • DDL:sql/biz_withdrawal_period_standard.sql(与 §2.1 一致)及菜单按钮权限 SQL
  • Domain / Mapper / XML / Service / Controller(包路径与项目 architecture 模块惯例一致即可)
  • 单测:状态守卫、字段校验;接口测试:MockMvc 或集成环境
  • 与知识库真实 HTTP 对接(或占位策略)按《知识库接口对接说明》排期