zhoulisky 11 months ago
parent
commit
5c6eff3435

+ 295 - 8
doc/sql/kd_dev.sql

@@ -11,7 +11,7 @@
  Target Server Version : 50741
  Target Server Version : 50741
  File Encoding         : 65001
  File Encoding         : 65001
 
 
- Date: 27/06/2025 00:58:52
+ Date: 27/06/2025 17:59:17
 */
 */
 
 
 SET NAMES utf8mb4;
 SET NAMES utf8mb4;
@@ -110,6 +110,210 @@ CREATE TABLE `kd_attach`  (
 -- ----------------------------
 -- ----------------------------
 
 
 -- ----------------------------
 -- ----------------------------
+-- Table structure for kd_budget_asset_cost
+-- ----------------------------
+DROP TABLE IF EXISTS `kd_budget_asset_cost`;
+CREATE TABLE `kd_budget_asset_cost`  (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `tenant_id` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '000000' COMMENT '租户ID',
+  `project_id` bigint(20) NULL DEFAULT NULL COMMENT '科研项目id,kd_project的主键',
+  `asset_id` bigint(20) NULL DEFAULT NULL COMMENT '资产id,kd_asset的主键',
+  `working_hours` int(11) NULL DEFAULT NULL COMMENT '在项目中的工作时长(月)',
+  `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_dept` bigint(20) NULL DEFAULT NULL COMMENT '创建部门',
+  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
+  `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+  `status` int(11) NULL DEFAULT 1 COMMENT '状态',
+  `is_deleted` int(11) NULL DEFAULT 0 COMMENT '是否已删除',
+  `cqdtfy_name` float(20, 2) NULL DEFAULT NULL COMMENT '长期待摊费用名称',
+  `cqdtfy_cost` float(20, 2) NULL DEFAULT NULL COMMENT '长期待摊费用预算金额',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目预算-无形资产摊销费用' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of kd_budget_asset_cost
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for kd_budget_commission_cost
+-- ----------------------------
+DROP TABLE IF EXISTS `kd_budget_commission_cost`;
+CREATE TABLE `kd_budget_commission_cost`  (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `tenant_id` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '000000' COMMENT '租户ID',
+  `project_id` bigint(20) NULL DEFAULT NULL COMMENT '科研项目id,kd_project的主键',
+  `unit_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '受托单位名称',
+  `content` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '工作内容',
+  `budget_cost` float(20, 2) NULL DEFAULT NULL COMMENT '委外费用/元',
+  `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_dept` bigint(20) NULL DEFAULT NULL COMMENT '创建部门',
+  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
+  `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+  `status` int(11) NULL DEFAULT 1 COMMENT '状态',
+  `is_deleted` int(11) NULL DEFAULT 0 COMMENT '是否已删除',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目预算-委托外部研究开发费' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of kd_budget_commission_cost
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for kd_budget_debug_cost
+-- ----------------------------
+DROP TABLE IF EXISTS `kd_budget_debug_cost`;
+CREATE TABLE `kd_budget_debug_cost`  (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `tenant_id` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '000000' COMMENT '租户ID',
+  `project_id` bigint(20) NULL DEFAULT NULL COMMENT '科研项目id,kd_project的主键',
+  `content` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '费用内容',
+  `budget_cost` float(20, 2) NULL DEFAULT NULL COMMENT '预算金额',
+  `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_dept` bigint(20) NULL DEFAULT NULL COMMENT '创建部门',
+  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
+  `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+  `status` int(11) NULL DEFAULT 1 COMMENT '状态',
+  `is_deleted` int(11) NULL DEFAULT 0 COMMENT '是否已删除',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目预算-装备调试费用与试验费用' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of kd_budget_debug_cost
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for kd_budget_depreciation_cost
+-- ----------------------------
+DROP TABLE IF EXISTS `kd_budget_depreciation_cost`;
+CREATE TABLE `kd_budget_depreciation_cost`  (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `tenant_id` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '000000' COMMENT '租户ID',
+  `project_id` bigint(20) NULL DEFAULT NULL COMMENT '科研项目id,kd_project的主键',
+  `asset_id` bigint(20) NULL DEFAULT NULL COMMENT '资产id,kd_asset的主键',
+  `working_hours` int(11) NULL DEFAULT NULL COMMENT '在项目中的工作时长(月)',
+  `cqdtfy_name` float(20, 2) NULL DEFAULT NULL COMMENT '长期待摊费用名称',
+  `cqdtfy_cost` float(20, 2) NULL DEFAULT NULL COMMENT '长期待摊费用预算金额',
+  `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_dept` bigint(20) NULL DEFAULT NULL COMMENT '创建部门',
+  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
+  `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+  `status` int(11) NULL DEFAULT 1 COMMENT '状态',
+  `is_deleted` int(11) NULL DEFAULT 0 COMMENT '是否已删除',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目预算-折旧费用于长期待摊费用' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of kd_budget_depreciation_cost
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for kd_budget_design_cost
+-- ----------------------------
+DROP TABLE IF EXISTS `kd_budget_design_cost`;
+CREATE TABLE `kd_budget_design_cost`  (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `tenant_id` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '000000' COMMENT '租户ID',
+  `project_id` bigint(20) NULL DEFAULT NULL COMMENT '科研项目id,kd_project的主键',
+  `content` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '设计内容或详情',
+  `budget_cost` float(20, 2) NULL DEFAULT NULL COMMENT '预算金额',
+  `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_dept` bigint(20) NULL DEFAULT NULL COMMENT '创建部门',
+  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
+  `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+  `status` int(11) NULL DEFAULT 1 COMMENT '状态',
+  `is_deleted` int(11) NULL DEFAULT 0 COMMENT '是否已删除',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目预算-设计费用' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of kd_budget_design_cost
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for kd_budget_direct_input_cost
+-- ----------------------------
+DROP TABLE IF EXISTS `kd_budget_direct_input_cost`;
+CREATE TABLE `kd_budget_direct_input_cost`  (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `tenant_id` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '000000' COMMENT '租户ID',
+  `project_id` bigint(20) NULL DEFAULT NULL COMMENT '科研项目id,kd_project的主键',
+  `technician_id` bigint(20) NULL DEFAULT NULL COMMENT '科技人员id',
+  `material_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '物资名称',
+  `usage` int(11) NULL DEFAULT NULL COMMENT '用量',
+  `unit_price` float(20, 2) NULL DEFAULT NULL COMMENT '单价',
+  `device_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '仪器设备名称',
+  `device_budget` float(20, 2) NULL DEFAULT NULL COMMENT '用于运行维护、维修的预算金额',
+  `fixed_asset_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '固定资产名称(租赁)',
+  `fixed_asset_budget` float(20, 2) NULL DEFAULT NULL COMMENT '租赁费用预算',
+  `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_dept` bigint(20) NULL DEFAULT NULL COMMENT '创建部门',
+  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
+  `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+  `status` int(11) NULL DEFAULT 1 COMMENT '状态',
+  `is_deleted` int(11) NULL DEFAULT 0 COMMENT '是否已删除',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目预算-直接投入费用' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of kd_budget_direct_input_cost
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for kd_budget_labor_cost
+-- ----------------------------
+DROP TABLE IF EXISTS `kd_budget_labor_cost`;
+CREATE TABLE `kd_budget_labor_cost`  (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `tenant_id` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '000000' COMMENT '租户ID',
+  `project_id` bigint(20) NULL DEFAULT NULL COMMENT '科研项目id,kd_project的主键',
+  `technician_id` bigint(20) NULL DEFAULT NULL COMMENT '科技人员id',
+  `working_hours` int(11) NULL DEFAULT NULL COMMENT '在项目中的工作时长(月)',
+  `monthly_average_labor_cost` float(20, 2) NULL DEFAULT NULL COMMENT '月平均人工费用/元',
+  `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_dept` bigint(20) NULL DEFAULT NULL COMMENT '创建部门',
+  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
+  `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+  `status` int(11) NULL DEFAULT 1 COMMENT '状态',
+  `is_deleted` int(11) NULL DEFAULT 0 COMMENT '是否已删除',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目预算-人员人工费用' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of kd_budget_labor_cost
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for kd_budget_other_cost
+-- ----------------------------
+DROP TABLE IF EXISTS `kd_budget_other_cost`;
+CREATE TABLE `kd_budget_other_cost`  (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `tenant_id` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '000000' COMMENT '租户ID',
+  `project_id` bigint(20) NULL DEFAULT NULL COMMENT '科研项目id,kd_project的主键',
+  `content` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '费用内容',
+  `budget_cost` float(20, 2) NULL DEFAULT NULL COMMENT '预算金额',
+  `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_dept` bigint(20) NULL DEFAULT NULL COMMENT '创建部门',
+  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
+  `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+  `status` int(11) NULL DEFAULT 1 COMMENT '状态',
+  `is_deleted` int(11) NULL DEFAULT 0 COMMENT '是否已删除',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目预算-其他费用' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of kd_budget_other_cost
+-- ----------------------------
+
+-- ----------------------------
 -- Table structure for kd_client
 -- Table structure for kd_client
 -- ----------------------------
 -- ----------------------------
 DROP TABLE IF EXISTS `kd_client`;
 DROP TABLE IF EXISTS `kd_client`;
@@ -502,6 +706,24 @@ INSERT INTO `kd_dict_biz` VALUES (1938279433271099393, '882990', 193827932945368
 INSERT INTO `kd_dict_biz` VALUES (1938279464023736322, '882990', 1938279329453686786, 'achievement_type', '国家新药', '国家新药', 3, '', 0, 1, 0);
 INSERT INTO `kd_dict_biz` VALUES (1938279464023736322, '882990', 1938279329453686786, 'achievement_type', '国家新药', '国家新药', 3, '', 0, 1, 0);
 INSERT INTO `kd_dict_biz` VALUES (1938279497171320834, '882990', 1938279329453686786, 'achievement_type', '国家一级中药保护品种', '国家一级中药保护品种', 4, '', 0, 1, 0);
 INSERT INTO `kd_dict_biz` VALUES (1938279497171320834, '882990', 1938279329453686786, 'achievement_type', '国家一级中药保护品种', '国家一级中药保护品种', 4, '', 0, 1, 0);
 INSERT INTO `kd_dict_biz` VALUES (1938279524312662018, '882990', 1938279329453686786, 'achievement_type', '集成电路布图设计专有权', '集成电路布图设计专有权', 5, '', 0, 1, 0);
 INSERT INTO `kd_dict_biz` VALUES (1938279524312662018, '882990', 1938279329453686786, 'achievement_type', '集成电路布图设计专有权', '集成电路布图设计专有权', 5, '', 0, 1, 0);
+INSERT INTO `kd_dict_biz` VALUES (1938417555870830593, '882990', 0, 'project_state', '-1', '项目状态', 1, '', 0, 1, 0);
+INSERT INTO `kd_dict_biz` VALUES (1938417664650104833, '882990', 1938417555870830593, 'project_state', '开展中', '开展中', 1, '', 0, 1, 0);
+INSERT INTO `kd_dict_biz` VALUES (1938417694014427138, '882990', 1938417555870830593, 'project_state', '已结题', '已结题', 2, '', 0, 1, 0);
+INSERT INTO `kd_dict_biz` VALUES (1938417723231948801, '882990', 1938417555870830593, 'project_state', '项目暂停', '项目暂停', 3, '', 0, 1, 0);
+INSERT INTO `kd_dict_biz` VALUES (1938417751342174209, '882990', 1938417555870830593, 'project_state', '项目终止', '项目终止', 4, '', 0, 1, 0);
+INSERT INTO `kd_dict_biz` VALUES (1938432575845421058, '882990', 0, 'trustee_type', '-1', '受托方类型', 5, '', 0, 1, 0);
+INSERT INTO `kd_dict_biz` VALUES (1938432678106746882, '882990', 1938432575845421058, 'trustee_type', '境内研究机构', '境内研究机构', 1, '', 0, 1, 0);
+INSERT INTO `kd_dict_biz` VALUES (1938432717247991810, '882990', 1938432575845421058, 'trustee_type', '境内高等学校', '境内高等学校', 2, '', 0, 1, 0);
+INSERT INTO `kd_dict_biz` VALUES (1938432747224682497, '882990', 1938432575845421058, 'trustee_type', '境内企业', '境内企业', 3, '', 0, 1, 0);
+INSERT INTO `kd_dict_biz` VALUES (1938432780078665730, '882990', 1938432575845421058, 'trustee_type', '境内个人', '境内个人', 4, '', 0, 1, 0);
+INSERT INTO `kd_dict_biz` VALUES (1938432814912360450, '882990', 1938432575845421058, 'trustee_type', '境外机构', '境外机构', 5, '', 0, 1, 0);
+INSERT INTO `kd_dict_biz` VALUES (1938432869497032706, '882990', 1938432575845421058, 'trustee_type', '境外个人', '境外个人', 6, '', 0, 1, 0);
+INSERT INTO `kd_dict_biz` VALUES (1938433287555895298, '882990', 0, 'contract_registration_type', '-1', '合同登记类型', 6, '', 0, 1, 0);
+INSERT INTO `kd_dict_biz` VALUES (1938433440098537474, '882990', 1938433287555895298, 'contract_registration_type', '技术开发合同', '技术开发合同', 1, '', 0, 1, 0);
+INSERT INTO `kd_dict_biz` VALUES (1938433472294014978, '882990', 1938433287555895298, 'contract_registration_type', '技术转让合同', '技术转让合同', 2, '', 0, 1, 0);
+INSERT INTO `kd_dict_biz` VALUES (1938433509149364225, '882990', 1938433287555895298, 'contract_registration_type', '技术许可合同', '技术许可合同', 3, '', 0, 1, 0);
+INSERT INTO `kd_dict_biz` VALUES (1938433539063140354, '882990', 1938433287555895298, 'contract_registration_type', '技术咨询合同', '技术咨询合同', 4, '', 0, 1, 0);
+INSERT INTO `kd_dict_biz` VALUES (1938433570444922882, '882990', 1938433287555895298, 'contract_registration_type', '技术服务合同', '技术服务合同', 5, '', 0, 1, 0);
 
 
 -- ----------------------------
 -- ----------------------------
 -- Table structure for kd_job_info
 -- Table structure for kd_job_info
@@ -866,11 +1088,14 @@ INSERT INTO `kd_menu` VALUES (1164733399669962602, 1164733399669962601, 'jobinfo
 INSERT INTO `kd_menu` VALUES (1164733399669962603, 1164733399669962601, 'jobinfo_edit', '修改', 'edit', '/job/jobinfo/edit', 'form', 2, 2, 2, 1, NULL, NULL, 0);
 INSERT INTO `kd_menu` VALUES (1164733399669962603, 1164733399669962601, 'jobinfo_edit', '修改', 'edit', '/job/jobinfo/edit', 'form', 2, 2, 2, 1, NULL, NULL, 0);
 INSERT INTO `kd_menu` VALUES (1164733399669962604, 1164733399669962601, 'jobinfo_delete', '删除', 'delete', '/api/blade-job/jobinfo/remove', 'delete', 3, 2, 3, 1, NULL, NULL, 0);
 INSERT INTO `kd_menu` VALUES (1164733399669962604, 1164733399669962601, 'jobinfo_delete', '删除', 'delete', '/api/blade-job/jobinfo/remove', 'delete', 3, 2, 3, 1, NULL, NULL, 0);
 INSERT INTO `kd_menu` VALUES (1164733399669962605, 1164733399669962601, 'jobinfo_view', '查看', 'view', '/job/jobinfo/view', 'file-text', 4, 2, 2, 1, NULL, NULL, 0);
 INSERT INTO `kd_menu` VALUES (1164733399669962605, 1164733399669962601, 'jobinfo_view', '查看', 'view', '/job/jobinfo/view', 'file-text', 4, 2, 2, 1, NULL, NULL, 0);
-INSERT INTO `kd_menu` VALUES (1932813523156529153, 0, 'technicianRoster', '技术人员花名册', 'technicianRoster', '/technician-roster', 'iconfont iconicon_cloud_history', 1, 1, 0, 1, '', '', 0);
-INSERT INTO `kd_menu` VALUES (1934910679367475202, 0, 'technicianMonthAvgSales', '技术人员年度月平均工资', 'technicianMonthAvgSales', '/technician-month-avg-sales', 'iconfont iconicon_at', 1, 1, 0, 1, '', '', 0);
-INSERT INTO `kd_menu` VALUES (1935261425149665281, 0, 'cyPersonRoster', '参研人员花名册', 'cyPersonRoster', '/cy-person-roster', 'iconfont iconicon_cloud_history', 1, 1, 0, 1, '', '', 0);
-INSERT INTO `kd_menu` VALUES (1935335404061319169, 0, 'cyPersonSumList', '项目参研人员汇总表', 'cyPersonSumList', '/cy-person-sum-list', 'iconfont iconicon_cloud_history', 1, 1, 0, 1, '', '', 0);
-INSERT INTO `kd_menu` VALUES (1935606582898319362, 0, 'highTechPersonSumList', '年度高新科技人员汇总表', 'highTechPersonSumList', '/high-tech-person-sum-list', 'iconfont iconicon_cloud_history', 1, 1, 0, 1, NULL, '', 0);
+INSERT INTO `kd_menu` VALUES (1932813523156529153, 1938458972353712129, 'technicianRoster', '技术人员花名册', 'technicianRoster', '/basic-resource/comp-basic-info/technician-roster', 'iconfont iconicon_cloud_history', 1, 1, 0, 1, '', 'comp-basic-info', 0);
+INSERT INTO `kd_menu` VALUES (1934910679367475202, 1938458972353712129, 'technicianMonthAvgSales', '技术人员年度月平均工资', 'technicianMonthAvgSales', '/basic-resource/comp-basic-info/technician-month-avg-sales', 'iconfont iconicon_at', 1, 1, 0, 1, '', '', 0);
+INSERT INTO `kd_menu` VALUES (1935261425149665281, 1938459578833293313, 'cyPersonRoster', '参研人员花名册', 'cyPersonRoster', '/tech-person/cy-person-roster', 'iconfont iconicon_cloud_history', 1, 1, 0, 1, '', '', 0);
+INSERT INTO `kd_menu` VALUES (1935335404061319169, 1938459578833293313, 'cyPersonSumList', '项目参研人员汇总表', 'cyPersonSumList', '/tech-person/cy-person-sum-list', 'iconfont iconicon_cloud_history', 1, 1, 0, 1, '', '', 0);
+INSERT INTO `kd_menu` VALUES (1935606582898319362, 1938459578833293313, 'highTechPersonSumList', '年度高新科技人员汇总表', 'highTechPersonSumList', '/tech-person/high-tech-person-sum-list', 'iconfont iconicon_cloud_history', 1, 1, 0, 1, '', '', 0);
+INSERT INTO `kd_menu` VALUES (1938458669290082305, 0, 'basicResource', '基础资源管理', 'basicResource', '/basic-resource', 'iconfont iconicon_setting', 1, 1, 0, 1, NULL, '', 0);
+INSERT INTO `kd_menu` VALUES (1938458972353712129, 1938458669290082305, 'compBasicInfo', '企业基础信息', 'compBasicInfo', '/basic-resource/comp-basic-info', 'iconfont iconicon_setting', 2, 1, 0, 1, '', '', 0);
+INSERT INTO `kd_menu` VALUES (1938459578833293313, 0, 'techPerson', '科技人员管理', 'techPerson', '/tech-person', 'iconfont iconicon_setting', 2, 1, 0, 1, NULL, '', 0);
 
 
 -- ----------------------------
 -- ----------------------------
 -- Table structure for kd_model
 -- Table structure for kd_model
@@ -1168,7 +1393,7 @@ CREATE TABLE `kd_project`  (
   `start_time` datetime NULL DEFAULT NULL COMMENT '研发开始时间',
   `start_time` datetime NULL DEFAULT NULL COMMENT '研发开始时间',
   `end_time` datetime NULL DEFAULT NULL COMMENT '研发结束时间',
   `end_time` datetime NULL DEFAULT NULL COMMENT '研发结束时间',
   `project_source` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目来源',
   `project_source` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目来源',
-  `implementation_format` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目开展形式\r\n\r\n',
+  `implementation_format` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目开展形式',
   `expected_outcome_form` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '预期成果形式',
   `expected_outcome_form` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '预期成果形式',
   `economic_objectives` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目技术经济目标',
   `economic_objectives` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目技术经济目标',
   `approval_document` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '立项批文',
   `approval_document` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '立项批文',
@@ -1182,13 +1407,75 @@ CREATE TABLE `kd_project`  (
   `status` int(11) NULL DEFAULT 1 COMMENT '状态',
   `status` int(11) NULL DEFAULT 1 COMMENT '状态',
   `is_deleted` int(11) NULL DEFAULT 0 COMMENT '是否已删除',
   `is_deleted` int(11) NULL DEFAULT 0 COMMENT '是否已删除',
   PRIMARY KEY (`id`) USING BTREE
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '技术人员花名册' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '科研项目' ROW_FORMAT = DYNAMIC;
 
 
 -- ----------------------------
 -- ----------------------------
 -- Records of kd_project
 -- Records of kd_project
 -- ----------------------------
 -- ----------------------------
 
 
 -- ----------------------------
 -- ----------------------------
+-- Table structure for kd_project_change_log
+-- ----------------------------
+DROP TABLE IF EXISTS `kd_project_change_log`;
+CREATE TABLE `kd_project_change_log`  (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `tenant_id` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '000000' COMMENT '租户ID',
+  `project_id` bigint(20) NULL DEFAULT NULL COMMENT '科研项目id,kd_project的主键',
+  `field_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '变更的字段名称',
+  `old_value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '变更前的值',
+  `new_value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '变更后的值',
+  `effective_time` datetime NULL DEFAULT NULL COMMENT '变更生效时间',
+  `change_reason` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '变更原因',
+  `attachment` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '附件',
+  `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_dept` bigint(20) NULL DEFAULT NULL COMMENT '创建部门',
+  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
+  `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+  `status` int(11) NULL DEFAULT 1 COMMENT '状态',
+  `is_deleted` int(11) NULL DEFAULT 0 COMMENT '是否已删除',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目-变更记录' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of kd_project_change_log
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for kd_project_outsourced
+-- ----------------------------
+DROP TABLE IF EXISTS `kd_project_outsourced`;
+CREATE TABLE `kd_project_outsourced`  (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `tenant_id` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '000000' COMMENT '租户ID',
+  `project_id` bigint(20) NULL DEFAULT NULL COMMENT '科研项目id,kd_project的主键',
+  `trustee_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '受托方全称',
+  `trustee_stype` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '受托方类型,业务字典 trustee_type',
+  `contract_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '合同名称',
+  `out_cost` float NULL DEFAULT NULL COMMENT '委外费用金额(万元)',
+  `contract_registration` tinyint(4) NULL DEFAULT NULL COMMENT '是否完成技术合同登记,0:否,1是',
+  `contract_registration_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '技术合同登记类型',
+  `contract_registration_cost` float(20, 2) NULL DEFAULT NULL COMMENT '技术合同登记金额(万元)',
+  `attachment_agreement` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '技术合同协议',
+  `attachment_invoice` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '委外费用发票',
+  `attachment_registration` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '技术合同登记证明',
+  `attachment_deliver` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '受托方交付成果',
+  `attachment` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '其他资料',
+  `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_dept` bigint(20) NULL DEFAULT NULL COMMENT '创建部门',
+  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
+  `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+  `status` int(11) NULL DEFAULT 1 COMMENT '状态',
+  `is_deleted` int(11) NULL DEFAULT 0 COMMENT '是否已删除',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目-委外项目' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of kd_project_outsourced
+-- ----------------------------
+
+-- ----------------------------
 -- Table structure for kd_region
 -- Table structure for kd_region
 -- ----------------------------
 -- ----------------------------
 DROP TABLE IF EXISTS `kd_region`;
 DROP TABLE IF EXISTS `kd_region`;

+ 21 - 0
kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/dto/AssetDTO.java

@@ -0,0 +1,21 @@
+
+package org.sky.scientific.pojo.dto;
+
+import org.sky.scientific.pojo.entity.AssetEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serial;
+
+/**
+ * 资产表 数据传输对象实体类
+ *
+ * @author Kd
+ * @since 2025-06-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class AssetDTO extends AssetEntity {
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+}

+ 88 - 0
kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/entity/AssetEntity.java

@@ -0,0 +1,88 @@
+
+package org.sky.scientific.pojo.entity;
+
+import lombok.Data;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.EqualsAndHashCode;
+import org.sky.core.tenant.mp.TenantEntity;
+import java.io.Serial;
+import java.util.Date;
+
+/**
+ * 资产表 实体类
+ *
+ * @author Kd
+ * @since 2025-06-27
+ */
+@Data
+@TableName("kd_asset")
+@Schema(description = "Asset对象")
+@EqualsAndHashCode(callSuper = true)
+public class AssetEntity extends TenantEntity {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 资产编码
+	 */
+	@Schema(description = "资产编码")
+	private String assetCode;
+	/**
+	 * 资产名称
+	 */
+	@Schema(description = "资产名称")
+	private String assetName;
+	/**
+	 * 所属年月
+	 */
+	@Schema(description = "所属年月")
+	private String yearAndMonth;
+	/**
+	 * 资产类别
+	 */
+	@Schema(description = "资产类别")
+	private String assetCategory;
+	/**
+	 * 功率
+	 */
+	@Schema(description = "功率")
+	private Integer power;
+	/**
+	 * 用途
+	 */
+	@Schema(description = "用途")
+	private String purpose;
+	/**
+	 * 开始日期
+	 */
+	@Schema(description = "开始日期")
+	private Date startTime;
+	/**
+	 * 使用寿命/月
+	 */
+	@Schema(description = "使用寿命/月")
+	private Integer serviceLife;
+	/**
+	 * 已使用月数
+	 */
+	@Schema(description = "已使用月数")
+	private Integer monthsUsed;
+	/**
+	 * 资产原值(元)
+	 */
+	@Schema(description = "资产原值(元)")
+	private Integer assetOriginalValue;
+	/**
+	 * 净残值(%)
+	 */
+	@Schema(description = "净残值(%)")
+	private Double salvageValue;
+	/**
+	 * 月折旧额/月摊销额(元)
+	 */
+	@Schema(description = "月折旧额/月摊销额(元)")
+	private Integer monthlyDepreciation;
+
+}

+ 21 - 0
kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/vo/AssetVO.java

@@ -0,0 +1,21 @@
+
+package org.sky.scientific.pojo.vo;
+
+import org.sky.scientific.pojo.entity.AssetEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serial;
+
+/**
+ * 资产表 视图实体类
+ *
+ * @author Kd
+ * @since 2025-06-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class AssetVO extends AssetEntity {
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+}

+ 136 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/controller/AssetController.java

@@ -0,0 +1,136 @@
+
+package org.sky.scientific.controller;
+
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import jakarta.validation.Valid;
+
+import org.sky.core.excel.util.ExcelUtil;
+import org.sky.core.mp.support.Condition;
+import org.sky.core.mp.support.Query;
+import org.sky.core.secure.KdUser;
+import org.sky.core.secure.annotation.IsAdmin;
+import org.sky.core.tool.api.R;
+import org.sky.core.tool.utils.DateUtil;
+import org.sky.core.tool.utils.Func;
+import org.sky.scientific.wrapper.AssetWrapper;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.sky.scientific.pojo.entity.AssetEntity;
+import org.sky.scientific.pojo.vo.AssetVO;
+import org.sky.scientific.excel.AssetExcel;
+import org.sky.scientific.service.IAssetService;
+import org.sky.core.boot.ctrl.KdController;
+import java.util.Map;
+import java.util.List;
+import jakarta.servlet.http.HttpServletResponse;
+
+/**
+ * 资产表 控制器
+ *
+ * @author Kd
+ * @since 2025-06-27
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/asset")
+@Tag(name = "资产表", description = "资产表接口")
+public class AssetController extends KdController {
+
+	private final IAssetService assetService;
+
+	/**
+	 * 资产表 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@Operation(summary = "详情", description  = "传入asset")
+	public R<AssetVO> detail(AssetEntity asset) {
+		AssetEntity detail = assetService.getOne(Condition.getQueryWrapper(asset));
+		return R.data(AssetWrapper.build().entityVO(detail));
+	}
+	/**
+	 * 资产表 分页
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@Operation(summary = "分页", description  = "传入asset")
+	public R<IPage<AssetVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> asset, Query query) {
+		IPage<AssetEntity> pages = assetService.page(Condition.getPage(query), Condition.getQueryWrapper(asset, AssetEntity.class));
+		return R.data(AssetWrapper.build().pageVO(pages));
+	}
+
+	/**
+	 * 资产表 自定义分页
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@Operation(summary = "分页", description  = "传入asset")
+	public R<IPage<AssetVO>> page(AssetVO asset, Query query) {
+		IPage<AssetVO> pages = assetService.selectAssetPage(Condition.getPage(query), asset);
+		return R.data(pages);
+	}
+
+	/**
+	 * 资产表 新增
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@Operation(summary = "新增", description  = "传入asset")
+	public R save(@Valid @RequestBody AssetEntity asset) {
+		return R.status(assetService.save(asset));
+	}
+
+	/**
+	 * 资产表 修改
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@Operation(summary = "修改", description  = "传入asset")
+	public R update(@Valid @RequestBody AssetEntity asset) {
+		return R.status(assetService.updateById(asset));
+	}
+
+	/**
+	 * 资产表 新增或修改
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@Operation(summary = "新增或修改", description  = "传入asset")
+	public R submit(@Valid @RequestBody AssetEntity asset) {
+		return R.status(assetService.saveOrUpdate(asset));
+	}
+
+	/**
+	 * 资产表 删除
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@Operation(summary = "逻辑删除", description  = "传入ids")
+	public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(assetService.deleteLogic(Func.toLongList(ids)));
+	}
+
+
+	/**
+	 * 导出数据
+	 */
+	@IsAdmin
+	@GetMapping("/export-asset")
+	@ApiOperationSupport(order = 9)
+	@Operation(summary = "导出数据", description  = "传入asset")
+	public void exportAsset(@Parameter(hidden = true) @RequestParam Map<String, Object> asset, KdUser kdUser, HttpServletResponse response) {
+		QueryWrapper<AssetEntity> queryWrapper = Condition.getQueryWrapper(asset, AssetEntity.class);
+		//if (!AuthUtil.isAdministrator()) {
+		//	queryWrapper.lambda().eq(Asset::getTenantId, kdUser.getTenantId());
+		//}
+		//queryWrapper.lambda().eq(AssetEntity::getIsDeleted, KdConstant.DB_NOT_DELETED);
+		List<AssetExcel> list = assetService.exportAsset(queryWrapper);
+		ExcelUtil.export(response, "资产表数据" + DateUtil.time(), "资产表数据表", list, AssetExcel.class);
+	}
+
+}

+ 122 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/excel/AssetExcel.java

@@ -0,0 +1,122 @@
+
+package org.sky.scientific.excel;
+
+
+import lombok.Data;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import java.io.Serializable;
+import java.io.Serial;
+import java.util.Date;
+
+
+/**
+ * 资产表 Excel实体类
+ *
+ * @author Kd
+ * @since 2025-06-27
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class AssetExcel implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("主键")
+	private Long id;
+	/**
+	 * 租户ID
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("租户ID")
+	private String tenantId;
+	/**
+	 * 资产编码
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("资产编码")
+	private String assetCode;
+	/**
+	 * 资产名称
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("资产名称")
+	private String assetName;
+	/**
+	 * 所属年月
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("所属年月")
+	private String yearAndMonth;
+	/**
+	 * 资产类别
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("资产类别")
+	private String assetCategory;
+	/**
+	 * 功率
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("功率")
+	private Integer power;
+	/**
+	 * 用途
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("用途")
+	private String purpose;
+	/**
+	 * 开始日期
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("开始日期")
+	private Date startTime;
+	/**
+	 * 使用寿命/月
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("使用寿命/月")
+	private Integer serviceLife;
+	/**
+	 * 已使用月数
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("已使用月数")
+	private Integer monthsUsed;
+	/**
+	 * 资产原值(元)
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("资产原值(元)")
+	private Integer assetOriginalValue;
+	/**
+	 * 净残值(%)
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("净残值(%)")
+	private Double salvageValue;
+	/**
+	 * 月折旧额/月摊销额(元)
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("月折旧额/月摊销额(元)")
+	private Integer monthlyDepreciation;
+	/**
+	 * 是否已删除
+	 */
+	@ColumnWidth(20)
+	@ExcelProperty("是否已删除")
+	private Integer isDeleted;
+
+}

+ 39 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/AssetMapper.java

@@ -0,0 +1,39 @@
+
+package org.sky.scientific.mapper;
+
+import org.sky.scientific.pojo.entity.AssetEntity;
+import org.sky.scientific.pojo.vo.AssetVO;
+import org.sky.scientific.excel.AssetExcel;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
+/**
+ * 资产表 Mapper 接口
+ *
+ * @author Kd
+ * @since 2025-06-27
+ */
+public interface AssetMapper extends BaseMapper<AssetEntity> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page 分页参数
+	 * @param asset 查询参数
+	 * @return List<AssetVO>
+	 */
+	List<AssetVO> selectAssetPage(IPage page, AssetVO asset);
+
+
+	/**
+	 * 获取导出数据
+	 *
+	 * @param queryWrapper 查询条件
+	 * @return List<AssetExcel>
+	 */
+	List<AssetExcel> exportAsset(@Param("ew") Wrapper<AssetEntity> queryWrapper);
+
+}

+ 40 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/AssetMapper.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.sky.scientific.mapper.AssetMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="assetResultMap" type="org.sky.scientific.pojo.entity.AssetEntity">
+        <result column="id" property="id"/>
+        <result column="tenant_id" property="tenantId"/>
+        <result column="asset_code" property="assetCode"/>
+        <result column="asset_name" property="assetName"/>
+        <result column="year_and_month" property="yearAndMonth"/>
+        <result column="asset_category" property="assetCategory"/>
+        <result column="power" property="power"/>
+        <result column="purpose" property="purpose"/>
+        <result column="start_time" property="startTime"/>
+        <result column="service_life" property="serviceLife"/>
+        <result column="months_used" property="monthsUsed"/>
+        <result column="asset_original_value" property="assetOriginalValue"/>
+        <result column="salvage_value" property="salvageValue"/>
+        <result column="monthly_depreciation" property="monthlyDepreciation"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="status" property="status"/>
+        <result column="is_deleted" property="isDeleted"/>
+    </resultMap>
+
+
+    <select id="selectAssetPage" resultMap="assetResultMap">
+        select * from kd_asset where is_deleted = 0
+    </select>
+
+
+    <select id="exportAsset" resultType="org.sky.scientific.excel.AssetExcel">
+        SELECT * FROM kd_asset ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 37 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/IAssetService.java

@@ -0,0 +1,37 @@
+
+package org.sky.scientific.service;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import org.sky.scientific.pojo.entity.AssetEntity;
+import org.sky.scientific.pojo.vo.AssetVO;
+import org.sky.scientific.excel.AssetExcel;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.sky.core.mp.base.BaseService;
+import java.util.List;
+
+/**
+ * 资产表 服务类
+ *
+ * @author Kd
+ * @since 2025-06-27
+ */
+public interface IAssetService extends BaseService<AssetEntity> {
+	/**
+	 * 自定义分页
+	 *
+	 * @param page 分页参数
+	 * @param asset 查询参数
+	 * @return IPage<AssetVO>
+	 */
+	IPage<AssetVO> selectAssetPage(IPage<AssetVO> page, AssetVO asset);
+
+
+	/**
+	 * 导出数据
+	 *
+	 * @param queryWrapper 查询条件
+	 * @return List<AssetExcel>
+	 */
+	List<AssetExcel> exportAsset(Wrapper<AssetEntity> queryWrapper);
+
+}

+ 39 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/AssetServiceImpl.java

@@ -0,0 +1,39 @@
+
+package org.sky.scientific.service.impl;
+
+import org.sky.scientific.pojo.entity.AssetEntity;
+import org.sky.scientific.pojo.vo.AssetVO;
+import org.sky.scientific.excel.AssetExcel;
+import org.sky.scientific.mapper.AssetMapper;
+import org.sky.scientific.service.IAssetService;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.sky.core.mp.base.BaseServiceImpl;
+import java.util.List;
+
+/**
+ * 资产表 服务实现类
+ *
+ * @author Kd
+ * @since 2025-06-27
+ */
+@Service
+public class AssetServiceImpl extends BaseServiceImpl<AssetMapper, AssetEntity> implements IAssetService {
+
+	@Override
+	public IPage<AssetVO> selectAssetPage(IPage<AssetVO> page, AssetVO asset) {
+		return page.setRecords(baseMapper.selectAssetPage(page, asset));
+	}
+
+
+	@Override
+	public List<AssetExcel> exportAsset(Wrapper<AssetEntity> queryWrapper) {
+		List<AssetExcel> assetList = baseMapper.exportAsset(queryWrapper);
+		//assetList.forEach(asset -> {
+		//	asset.setTypeName(DictCache.getValue(DictEnum.YES_NO, Asset.getType()));
+		//});
+		return assetList;
+	}
+
+}

+ 35 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/wrapper/AssetWrapper.java

@@ -0,0 +1,35 @@
+
+package org.sky.scientific.wrapper;
+
+import org.sky.core.mp.support.BaseEntityWrapper;
+import org.sky.core.tool.utils.BeanUtil;
+import org.sky.scientific.pojo.entity.AssetEntity;
+import org.sky.scientific.pojo.vo.AssetVO;
+import java.util.Objects;
+
+/**
+ * 资产表 包装类,返回视图层所需的字段
+ *
+ * @author Kd
+ * @since 2025-06-27
+ */
+public class AssetWrapper extends BaseEntityWrapper<AssetEntity, AssetVO> {
+
+	public static AssetWrapper build() {
+		return new AssetWrapper();
+ 	}
+
+	@Override
+	public AssetVO entityVO(AssetEntity asset) {
+		AssetVO assetVO = Objects.requireNonNull(BeanUtil.copyProperties(asset, AssetVO.class));
+
+		//User createUser = UserCache.getUser(asset.getCreateUser());
+		//User updateUser = UserCache.getUser(asset.getUpdateUser());
+		//assetVO.setCreateUserName(createUser.getName());
+		//assetVO.setUpdateUserName(updateUser.getName());
+
+		return assetVO;
+	}
+
+
+}