diff --git a/db/24年6月功能安全中心变更.sql b/db/24年6月功能安全中心变更.sql new file mode 100644 index 00000000..cc83c117 --- /dev/null +++ b/db/24年6月功能安全中心变更.sql @@ -0,0 +1,103 @@ +drop table if exists pay_functional_safety_center; +create table pay_functional_safety_center +( + id varchar(36) not null comment 'id', + parent_id varchar(36) null comment '父级id', + project_type int null comment '项目类型(1功能安全中心,2研究组,3项目组)', + project_name varchar(50) null comment '项目名称', + principal_id varchar(32) null comment '负责人id', + mission_and_objectives varchar(200) null comment '任务及目标', + remarks varchar(200) null comment '备注', + create_by varchar(32) null comment '创建人', + create_time datetime null comment '创建时间', + update_by varchar(32) null comment '更新人', + update_time datetime null comment '更新时间', + constraint Index_1 + unique (id) +) + comment '功能安全中心'; + +alter table pay_functional_safety_center + add primary key (id); +drop table if exists pay_functional_safety_center_subitem; +create table pay_functional_safety_center_subitem +( + id varchar(36) not null comment 'id', + project_id varchar(36) not null comment '项目id', + company_id varchar(32) null comment '成员单位id', + remarks varchar(50) null comment '备注', + create_by varchar(32) null comment '创建人', + create_time datetime null comment '创建时间', + update_by varchar(32) null comment '更新人', + update_time datetime null comment '更新时间', + constraint Index_1 + unique (id) +) + comment '功能安全中心成员'; + +alter table pay_functional_safety_center_subitem + add primary key (id); +drop table if exists pay_functional_safety_center_subitem_contacts; +create table pay_functional_safety_center_subitem_contacts +( + id varchar(36) not null comment 'id', + project_id varchar(36) not null comment '项目id', + subitem_id varchar(36) not null comment '项目成员id', + company_id varchar(32) null comment '成员单位id', + contacts_id varchar(32) null comment '企业联系人id', + remarks varchar(50) null comment '备注', + order_num int null comment '序号', + create_by varchar(32) null comment '创建人', + create_time datetime null comment '创建时间', + update_by varchar(32) null comment '更新人', + update_time datetime null comment '更新时间', + constraint Index_1 + unique (id) +) + comment '功能安全中心成员-联系人'; + +alter table pay_functional_safety_center_subitem_contacts + add primary key (id); + +insert into sys_dict_item (id, dict_id, item_text, item_value, description, sort_order, status, create_by, create_time, update_by, update_time) +values ('1803314563741982722', '1432280766382727169', '功能安全中心会议', '9', '', 9.00, 1, 'LKGLZ', '2024-06-19 14:31:11', 'LKGLZ', '2024-06-25 10:40:33'); + +alter table pay_meeting + add safety_center_id varchar(50) null comment '功能安全中心id'; + +ALTER TABLE pay_meeting + MODIFY COLUMN `remind` tinyint(1) NULL DEFAULT 0 COMMENT '是否提醒'; + +-- 功能安全中心菜单权限 +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808322558888558593', '1802969401866113025', '资料状态(嘉宾是否可以在企业端上传)', NULL, NULL, NULL, NULL, 2, 'safetyCenterMeetingSituation:guestsUploadFileFlag', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-03 10:11:10', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808097862171545601', '1802969401866113025', '删除', '', NULL, NULL, NULL, 2, 'safetyCenterMeetingSituation:delete', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:18:18', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808097770144321537', '1802969401866113025', '编辑', '', NULL, NULL, NULL, 2, 'safetyCenterMeetingSituation:edit', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:17:56', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808097712564916226', '1802969401866113025', '批量删除', '', NULL, NULL, NULL, 2, 'safetyCenterMeetingSituation:batchDel', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:17:42', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808097643329540097', '1802969401866113025', '导出', '', NULL, NULL, NULL, 2, 'safetyCenterMeetingSituation:export', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:17:26', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808097593895473153', '1802969401866113025', '添加参会人', NULL, NULL, NULL, NULL, 2, 'safetyCenterMeetingSituation:add', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:17:14', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808097528275587074', '1802969401866113025', '查询', NULL, NULL, NULL, NULL, 2, 'safetyCenterMeetingSituation:search', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:16:58', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808097135822950401', '1802967227660554241', '新增', '', NULL, NULL, NULL, 2, 'safetyCenterMember:add', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:15:25', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808097037156143105', '1802967227660554241', '编辑', NULL, NULL, NULL, NULL, 2, 'safetyCenterMember:edit', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:15:01', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808096969082589186', '1802967227660554241', '删除', NULL, NULL, NULL, NULL, 2, 'safetyCenterMember:delete', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:14:45', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808096803780874242', '1802967227660554241', '批量删除', '', NULL, NULL, NULL, 2, 'safetyCenterMember:batchDel', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:14:05', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808096742850220033', '1802967227660554241', '下载模板', '', NULL, NULL, NULL, 2, 'safetyCenterMember:downTemplate', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:13:51', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808096637346697217', '1802967227660554241', '导出', NULL, NULL, NULL, NULL, 2, 'safetyCenterMember:export', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:13:26', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808096551610929154', '1802967227660554241', '导入', '', NULL, NULL, NULL, 2, 'safetyCenterMember:import', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:13:05', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808096433390276610', '1802967227660554241', '查询', NULL, NULL, NULL, NULL, 2, 'safetyCenterMember:search', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:12:37', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808096164627664897', '1802970571397451777', '删除', '', NULL, NULL, NULL, 2, 'safetyCenterMeeting:delete', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:11:33', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808096100412870657', '1802970571397451777', '编辑', '', NULL, NULL, NULL, 2, 'safetyCenterMeeting:edit', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:11:18', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808096041596145666', '1802970571397451777', '上传文件', '', NULL, NULL, NULL, 2, 'safetyCenterMeeting:upload', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:11:04', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808095978861940737', '1802970571397451777', '会议纪要', '', NULL, NULL, NULL, 2, 'safetyCenterMeeting:uploadCouncil', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:10:49', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808095827002970113', '1802970571397451777', '发布', '', NULL, NULL, NULL, 2, 'safetyCenterMeeting:publish', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:10:13', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808095745981599745', '1802970571397451777', '批量删除', '', NULL, NULL, NULL, 2, 'safetyCenterMeeting:batchDel', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:09:53', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808095649277726722', '1802970571397451777', '导出', NULL, NULL, NULL, NULL, 2, 'safetyCenterMeeting:export', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:09:30', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808095579434176513', '1802970571397451777', '新增', NULL, NULL, NULL, NULL, 2, 'safetyCenterMeeting:add', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:09:14', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808095482008883201', '1802970571397451777', '查询', NULL, NULL, NULL, NULL, 2, 'safetyCenterMeeting:search', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:08:50', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808095111647645697', '1802631077112610817', '在研项目', NULL, NULL, NULL, NULL, 2, 'safetyCenter:underStudyProject', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:07:22', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808095031213477890', '1802631077112610817', '删除', NULL, NULL, NULL, NULL, 2, 'safetyCenter:delete', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:07:03', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808094969842421761', '1802631077112610817', '基本信息维护', '', NULL, NULL, NULL, 2, 'safetyCenter:edit', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:06:48', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808094888670056450', '1802631077112610817', '功能安全中心会议', NULL, NULL, NULL, NULL, 2, 'safetyCenter:meetingMaintenance', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:06:29', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808094800346402817', '1802631077112610817', '其他资料分发', NULL, NULL, NULL, NULL, 2, 'safetyCenter:fileMaintenance', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:06:08', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808094623023812610', '1802631077112610817', '批量删除', NULL, NULL, NULL, NULL, 2, 'safetyCenter:batchDel', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:05:26', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808094527150411777', '1802631077112610817', '新增', NULL, NULL, NULL, NULL, 2, 'safetyCenter:add', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:05:03', NULL, NULL, 0, 0, '1', 0, 1); +INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808094461882847233', '1802631077112610817', '查询', '', NULL, NULL, NULL, 2, 'safetyCenter:search', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-02 19:04:47', NULL, NULL, 0, 0, '1', 0, 1); diff --git a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/api/vo/IdsMapBody.java b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/api/vo/IdsMapBody.java new file mode 100644 index 00000000..895fe86e --- /dev/null +++ b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/api/vo/IdsMapBody.java @@ -0,0 +1,18 @@ +package com.jero.common.api.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author liJiaRao + * @date 2023-11-17 15:27 + */ +@Data +public class IdsMapBody { + /**id*/ + @ApiModelProperty(value = "id") + private String id; + /**ids*/ + @ApiModelProperty(value = "ids") + private String ids; +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/common/ProjectCommon.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/common/ProjectCommon.java index eed57f05..fb26b8c1 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/common/common/ProjectCommon.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/common/ProjectCommon.java @@ -41,6 +41,14 @@ public class ProjectCommon { * 项目类型(1:普通项目,2:工作组项目,3:会议项目,4:会员项目,5:标协会员项目,6:证书,7: 起草组项目) */ public final static String PROJECT_TYPE7 = "7"; + /** + * 项目类型(1:普通项目,2:工作组项目,3:会议项目,4:会员项目,5:标协会员项目,6:证书,7: 起草组项目,8: 功能安全中心项目) + */ + public final static String PROJECT_TYPE8 = "8"; + /** + * 项目类型(1:普通项目,2:工作组项目,3:会议项目,4:会员项目,5:标协会员项目,6:证书,7: 起草组项目,8: 打包项目,9: 功能安全中心项目) + */ + public final static String PROJECT_TYPE9 = "9"; /** * 来源(1:收入合同,2:打包管理) */ diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/mapper/xml/ProjectDetailMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/common/mapper/xml/ProjectDetailMapper.xml index 094bae6c..67261834 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/common/mapper/xml/ProjectDetailMapper.xml +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/mapper/xml/ProjectDetailMapper.xml @@ -133,6 +133,51 @@ AND ppc.id = #{projectId} + + UNION ALL + SELECT + pfsc.id, + g.project_name, + '', + g.principal_id, + su.realname, + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + g.create_time, + 9, + '', + '', + g.remarks, + '', + pfsc.company_id, + '', + '', + '', + '', + '', + '', + g.mission_and_objectives, + '', + '', + '', + '' + FROM + pay_functional_safety_center g + LEFT JOIN sys_user su ON g.principal_id = su.id + LEFT JOIN pay_functional_safety_center_subitem pfsc ON g.id = pfsc.project_id + + + AND pfsc.id = #{projectId} + + + + \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/mapper/xml/PayContactsManagementMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/company/mapper/xml/PayContactsManagementMapper.xml index e540256c..434d78a5 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/mapper/xml/PayContactsManagementMapper.xml +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/mapper/xml/PayContactsManagementMapper.xml @@ -69,4 +69,11 @@ phone = #{companyLoginVO.phone} + + \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayCompanyManagementService.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayCompanyManagementService.java index 5bb9f597..2cb6d3bb 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayCompanyManagementService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayCompanyManagementService.java @@ -1,6 +1,9 @@ package com.jero.company.service; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.jero.company.entity.PayCompanyAndContactsManagement; import com.jero.company.entity.PayCompanyManagement; @@ -121,4 +124,7 @@ public interface IPayCompanyManagementService extends IService pageSafetyCenter(Page page, QueryWrapper queryWrapper); + } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayContactsManagementService.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayContactsManagementService.java index 0bde0375..2af24513 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayContactsManagementService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayContactsManagementService.java @@ -1,5 +1,6 @@ package com.jero.company.service; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; @@ -85,4 +86,6 @@ public interface IPayContactsManagementService extends IService queryBySafetyCenter(QueryWrapper queryWrapper); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayCompanyManagementServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayCompanyManagementServiceImpl.java index eeaf06fd..e4ba21a2 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayCompanyManagementServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayCompanyManagementServiceImpl.java @@ -7,6 +7,8 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.common.ProjectCommon; import com.jero.common.common.RoleCommon; @@ -15,12 +17,10 @@ import com.jero.common.enums.ManagementMessageEnums; import com.jero.common.exception.JeroBootException; import com.jero.common.service.SendMessageService; import com.jero.common.system.vo.LoginUser; -import com.jero.common.util.AuthenticationUtils; import com.jero.common.util.PasswordUtil; import com.jero.common.util.ValidUtil; import com.jero.company.common.PayCompanyManagementCommon; import com.jero.company.common.PayContactsManagementCommon; -import com.jero.company.entity.MemberInfo; import com.jero.company.entity.PayCompanyAndContactsManagement; import com.jero.company.entity.PayCompanyManagement; import com.jero.company.entity.PayContactsManagement; @@ -710,6 +710,11 @@ public class PayCompanyManagementServiceImpl extends ServiceImpl pageSafetyCenter(Page page, QueryWrapper queryWrapper) { + return payCompanyManagementMapper.pageSafetyCenter(page, queryWrapper); + } + /** * 校验企业名称和信用代码是否匹配 * @param payCompanyManagement diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayContactsManagementServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayContactsManagementServiceImpl.java index 03113e01..d13bf321 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayContactsManagementServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayContactsManagementServiceImpl.java @@ -455,4 +455,9 @@ public class PayContactsManagementServiceImpl extends ServiceImpl queryBySafetyCenter(QueryWrapper queryWrapper) { + return baseMapper.queryBySafetyCenter(queryWrapper); + } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/common/SafetyCenterCommon.java b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/common/SafetyCenterCommon.java new file mode 100644 index 00000000..b5b66056 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/common/SafetyCenterCommon.java @@ -0,0 +1,20 @@ +package com.jero.functionalsafetycenter.common; + +/** + * @author liJiaRao + * @date 2024-06-25 10:10 + */ +public class SafetyCenterCommon { + /** + * 安全中心 + */ + public static final int PROJECT_TYPE_1 = 1; + /** + * 研究组 + */ + public static final int PROJECT_TYPE_2 = 2; + /** + * 项目组 + */ + public static final int PROJECT_TYPE_3 = 3; +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/controller/SafetyCenterController.java b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/controller/SafetyCenterController.java new file mode 100644 index 00000000..1c0ab357 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/controller/SafetyCenterController.java @@ -0,0 +1,298 @@ +package com.jero.functionalsafetycenter.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ArrayUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.jero.common.api.vo.IdsMapBody; +import com.jero.common.api.vo.Result; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.base.controller.JeroController; +import com.jero.common.system.query.QueryGenerator; +import com.jero.common.util.oConvertUtils; +import com.jero.functionalsafetycenter.common.SafetyCenterCommon; +import com.jero.functionalsafetycenter.entity.SafetyCenter; +import com.jero.functionalsafetycenter.service.SafetyCenterService; +import com.jero.functionalsafetycenter.vo.SafetyCenterEditVO; +import com.jero.member.entity.TbMemberProjectFile; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 功能安全中心(pay_functional_safety_center)表控制层 + * + * @author xxxxx + */ +@Slf4j +@Api(tags = "功能安全中心") +@RestController +@RequestMapping("SafetyCenter") +public class SafetyCenterController extends JeroController { + /** + * 服务对象 + */ + @Resource + private SafetyCenterService safetyCenterService; + + /** + * 分页列表查询 + */ + @ApiOperation(value = "功能安全中心-分页列表查询", notes = "功能安全中心-分页列表查询") + @RequiresPermissions("safetyCenter:search") + @GetMapping(value = "/page") + public Result> queryPageList(SafetyCenter safetyCenter, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(safetyCenter, req.getParameterMap()); + //只查询安全中心和研究组 + ArrayList objects = new ArrayList<>(); + objects.add(SafetyCenterCommon.PROJECT_TYPE_1); + objects.add(SafetyCenterCommon.PROJECT_TYPE_2); + queryWrapper.lambda().in(SafetyCenter::getProjectType,objects); + Page page = new Page<>(pageNo, pageSize); + IPage pageList = safetyCenterService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 分页列表查询 + */ + @ApiOperation(value = "功能安全中心-项目组分页列表查询", notes = "功能安全中心-分页列表查询") + @RequiresPermissions("safetyCenter:search") + @GetMapping(value = "/projectGroupPage") + public Result> queryProjectGroupPageList(SafetyCenter safetyCenter, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(safetyCenter, req.getParameterMap()); + //只查询项目组 + queryWrapper.lambda().eq(SafetyCenter::getProjectType,SafetyCenterCommon.PROJECT_TYPE_3); + Page page = new Page<>(pageNo, pageSize); + IPage pageList = safetyCenterService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 功能安全中心-企业端-分页列表查询 + * @param pageNo 页数 + * @param pageSize 条数 + * @return + */ + @ApiOperation(value="功能安全中心-企业端-分页列表查询") + @GetMapping(value = "/queryCompanyPageList") + public Result queryCompanyPageList(SafetyCenter safetyCenter, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + Page page = new Page<>(pageNo, pageSize); + IPage pageList = safetyCenterService.queryCompanyPageList(page, safetyCenter); + return Result.OK(pageList); + } + + /** + * 功能安全中心-企业端-分页列表查询 + * @param pageNo 页数 + * @param pageSize 条数 + * @return + */ + @ApiOperation(value="功能安全中心-企业端-项目组分页列表查询") + @GetMapping(value = "/queryCompanyProjectGroupPageList") + public Result queryCompanyProjectGroupPageList(SafetyCenter safetyCenter, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + Page page = new Page<>(pageNo, pageSize); + safetyCenter.setProjectType(SafetyCenterCommon.PROJECT_TYPE_3); + IPage pageList = safetyCenterService.queryCompanyPageList(page, safetyCenter); + return Result.OK(pageList); + } + + /** + * 列表查询 + */ + @ApiOperation(value = "功能安全中心-列表查询", notes = "功能安全中心-列表查询") + @RequiresPermissions("safetyCenter:search") + @GetMapping(value = "/list") + public Result> queryList(SafetyCenter safetyCenter, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(safetyCenter, req.getParameterMap()); + List list = safetyCenterService.list(queryWrapper); + return Result.OK(list); + } + + /** + * 添加 + */ + @AutoLog(value = "功能安全中心-添加研究组") + @ApiOperation(value = "功能安全中心-添加研究组", notes = "功能安全中心-添加") + @RequiresPermissions("safetyCenter:add") + @PostMapping(value = "/add") + public Result add(@Validated @RequestBody SafetyCenter safetyCenter) { + safetyCenter.setProjectType(SafetyCenterCommon.PROJECT_TYPE_2); + safetyCenterService.add(safetyCenter); + return Result.OK(Result.ADD_SUCCESS); + } + /** + * 添加 + */ + @AutoLog(value = "功能安全中心-添加项目组") + @ApiOperation(value = "功能安全中心-添加项目组", notes = "功能安全中心-添加项目组") + @RequiresPermissions("safetyCenter:add") + @PostMapping(value = "/addProjectGroup") + public Result addProjectGroup(@Validated @RequestBody SafetyCenter safetyCenter) { + safetyCenter.setProjectType(SafetyCenterCommon.PROJECT_TYPE_3); + + safetyCenterService.add(safetyCenter); + return Result.OK(Result.ADD_SUCCESS); + } + + /** + * 编辑 + */ + @AutoLog(value = "功能安全中心-编辑研究组") + @ApiOperation(value = "功能安全中心-编辑研究组", notes = "功能安全中心-编辑") + @RequiresPermissions("safetyCenter:edit") + @PostMapping(value = "/edit") + public Result edit(@Validated @RequestBody SafetyCenterEditVO safetyCenter) { + safetyCenterService.editById(safetyCenter); + return Result.OK(Result.EDIT_SUCCESS); + } + /** + * 编辑 + */ + @AutoLog(value = "功能安全中心-编辑项目组") + @ApiOperation(value = "功能安全中心-编辑项目组", notes = "功能安全中心-编辑") + @RequiresPermissions("safetyCenter:edit") + @PostMapping(value = "/editProjectGroup") + public Result editProjectGroup(@Validated @RequestBody SafetyCenterEditVO safetyCenter) { + safetyCenterService.editById(safetyCenter); + return Result.OK(Result.EDIT_SUCCESS); + } + + /** + * 通过id删除 + */ + @AutoLog(value = "功能安全中心-通过id删除") + @ApiOperation(value = "功能安全中心-通过id删除", notes = "功能安全中心-通过id删除") + @RequiresPermissions("safetyCenter:delete") + @PostMapping(value = "/delete") + public Result delete(@RequestBody IdsMapBody map) { + String id = map.getId(); + if (StringUtils.isBlank(id)) { + return Result.error(Result.NULL_ID); + } + safetyCenterService.deleteById(id); + return Result.OK(Result.DELETE_SUCCESS); + } + + /** + * 批量删除 + */ + @AutoLog(value = "功能安全中心-批量删除") + @ApiOperation(value = "功能安全中心-批量删除", notes = "功能安全中心-批量删除") + @RequiresPermissions("safetyCenter:batchDel") + @PostMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestBody IdsMapBody map) { + String ids = map.getIds(); + if (StringUtils.isBlank(ids)) { + return Result.error(Result.NULL_ID); + } + List idList = Arrays.asList(map.getIds().split(",")); + this.safetyCenterService.deleteByIds(idList); + return Result.OK(Result.DELETE_SUCCESS); + } + + /** + * 通过id查询 + */ + @AutoLog(value = "功能安全中心-通过id查询") + @ApiOperation(value = "功能安全中心-通过id查询", notes = "功能安全中心-通过id查询") + @RequiresPermissions("safetyCenter:search") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id") String id) { + SafetyCenter safetyCenter = safetyCenterService.queryById(id); + if (safetyCenter == null) { + throw new JeroBootException(Result.NULL_DATA); + } + return Result.OK(safetyCenter); + } + + /** + * 导出excel + */ + @ApiOperation(value = "功能安全中心-导出excel") + @RequiresPermissions("safetyCenter:export") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, SafetyCenter safetyCenter) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(safetyCenter, request.getParameterMap()); + //只查询安全中心和研究组 + ArrayList objects = new ArrayList<>(); + objects.add(SafetyCenterCommon.PROJECT_TYPE_1); + objects.add(SafetyCenterCommon.PROJECT_TYPE_2); + queryWrapper.lambda().in(SafetyCenter::getProjectType,objects); + Page page = new Page<>(-1, -1); + IPage pageList = safetyCenterService.page(page, queryWrapper); + List records = pageList.getRecords(); + List exportList; + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + exportList = records.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); + }else { + exportList = records; + } + if (exportList.isEmpty()) { + throw new JeroBootException("没有数据"); + } + + return super.exportListXls(exportList, SafetyCenter.class, "功能安全中心"); + } + + /** + * 导出excel + */ + @ApiOperation(value = "功能安全中心-导出项目组excel") + @RequiresPermissions("safetyCenter:export") + @GetMapping(value = "/exportProjectGroupXls") + public ModelAndView exportProjectGroupXls(HttpServletRequest request, SafetyCenter safetyCenter) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(safetyCenter, request.getParameterMap()); + //只查询项目组 + queryWrapper.lambda().eq(SafetyCenter::getProjectType,SafetyCenterCommon.PROJECT_TYPE_3); + Page page = new Page<>(-1, -1); + IPage pageList = safetyCenterService.page(page, queryWrapper); + List records = pageList.getRecords(); + List exportList; + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + exportList = records.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); + }else { + exportList = records; + } + if (exportList.isEmpty()) { + throw new JeroBootException("没有数据"); + } + + return super.exportListXls(exportList, SafetyCenter.class, "功能安全中心"); + } + + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/controller/SafetyCenterSubitemController.java b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/controller/SafetyCenterSubitemController.java new file mode 100644 index 00000000..532f9091 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/controller/SafetyCenterSubitemController.java @@ -0,0 +1,279 @@ +package com.jero.functionalsafetycenter.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.jero.common.api.vo.IdsMapBody; +import com.jero.common.api.vo.Result; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.common.aspect.annotation.DictPoint; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.base.controller.JeroController; +import com.jero.common.system.query.QueryGenerator; +import com.jero.common.system.vo.LoginUser; +import com.jero.common.util.oConvertUtils; +import com.jero.functionalsafetycenter.entity.SafetyCenter; +import com.jero.functionalsafetycenter.entity.SafetyCenterSubitem; +import com.jero.functionalsafetycenter.service.SafetyCenterService; +import com.jero.functionalsafetycenter.service.SafetyCenterSubitemService; +import com.jero.functionalsafetycenter.vo.SafetyCenterSubitemImport; +import com.jero.project.entity.PayWorkingGroup; +import com.jero.project.entity.PayWorkingGroupSubItem; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 功能安全中心成员(pay_functional_safety_center_subitem)表控制层 + * + * @author xxxxx + */ +@Slf4j +@Api(tags = "功能安全中心成员") +@RestController +@RequestMapping("SafetyCenterSubitem") +public class SafetyCenterSubitemController extends JeroController { + /** + * 服务对象 + */ + @Resource + private SafetyCenterSubitemService safetyCenterSubitemService; + + @Resource + private SafetyCenterService safetyCenterService; + + /** + * 分页列表查询 + */ + @RequiresPermissions("safetyCenterMember:search") + @ApiOperation(value = "功能安全中心成员-分页列表查询", notes = "功能安全中心成员-分页列表查询") + @GetMapping(value = "/page") + public Result> queryPageList(SafetyCenterSubitem safetyCenterSubitem, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + Page page = new Page<>(pageNo, pageSize); + IPage pageList = safetyCenterSubitemService.pageList(page, safetyCenterSubitem); + return Result.OK(pageList); + } + + /** + * 分页列表查询 + */ + @ApiOperation(value = "功能安全中心成员-企业端-分页列表查询", notes = "功能安全中心成员-分页列表查询") + @GetMapping(value = "/pageByCompany") + public Result> queryCompanyPageList(SafetyCenterSubitem safetyCenterSubitem, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + Page page = new Page<>(pageNo, pageSize); + IPage pageList = safetyCenterSubitemService.pageList(page, safetyCenterSubitem); + return Result.OK(pageList); + } + + /** + * 列表查询 + */ + @RequiresPermissions("safetyCenterMember:") + @ApiOperation(value = "功能安全中心成员-列表查询", notes = "功能安全中心成员-列表查询") + @GetMapping(value = "/list") + public Result> queryList(SafetyCenterSubitem safetyCenterSubitem, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(safetyCenterSubitem, req.getParameterMap()); + List list = safetyCenterSubitemService.list(queryWrapper); + return Result.OK(list); + } + + /** + * 添加 + */ + @AutoLog(value = "功能安全中心成员-添加") + @RequiresPermissions("safetyCenterMember:add") + @ApiOperation(value = "功能安全中心成员-添加", notes = "功能安全中心成员-添加") + @PostMapping(value = "/add") + public Result add(@Validated @RequestBody SafetyCenterSubitem safetyCenterSubitem) { + safetyCenterSubitemService.add(safetyCenterSubitem); + return Result.OK(Result.ADD_SUCCESS); + } + + /** + * 编辑 + */ + @AutoLog(value = "功能安全中心成员-编辑") + @RequiresPermissions("safetyCenterMember:edit") + @ApiOperation(value = "功能安全中心成员-编辑", notes = "功能安全中心成员-编辑") + @PostMapping(value = "/edit") + public Result edit(@Validated @RequestBody SafetyCenterSubitem safetyCenterSubitem) { + safetyCenterSubitemService.editById(safetyCenterSubitem); + return Result.OK(Result.EDIT_SUCCESS); + } + + /** + * 编辑 + */ + @DictPoint + @AutoLog(value = "功能安全中心成员-企业端-根据项目查询联系人") + @ApiOperation(value = "功能安全中心成员-企业端-根据项目查询联系人") + @GetMapping(value = "/getItemByProjectId") + public Result getItemByProjectId(@RequestParam(name = "projectId") String projectId) { + SafetyCenterSubitem subitem = safetyCenterSubitemService.getItemByProjectId(projectId); + return Result.OK(subitem); + } + /** + * 编辑 + */ + @AutoLog(value = "功能安全中心成员-企业端-编辑") + @ApiOperation(value = "功能安全中心成员-企业端-编辑") + @PostMapping(value = "/editByCompany") + public Result editByCompany(@Validated @RequestBody SafetyCenterSubitem safetyCenterSubitem) { + safetyCenterSubitemService.editById(safetyCenterSubitem); + return Result.OK(Result.EDIT_SUCCESS); + } + + /** + * 通过id删除 + */ + @AutoLog(value = "功能安全中心成员-通过id删除") + @RequiresPermissions("safetyCenterMember:delete") + @ApiOperation(value = "功能安全中心成员-通过id删除", notes = "功能安全中心成员-通过id删除") + @PostMapping(value = "/delete") + public Result delete(@RequestBody IdsMapBody map) { + String id = map.getId(); + if (StringUtils.isBlank(id)) { + return Result.error(Result.NULL_ID); + } + safetyCenterSubitemService.deleteById(id); + return Result.OK(Result.DELETE_SUCCESS); + } + + /** + * 批量删除 + */ + @AutoLog(value = "功能安全中心成员-批量删除") + @RequiresPermissions("safetyCenterMember:batchDel") + @ApiOperation(value = "功能安全中心成员-批量删除", notes = "功能安全中心成员-批量删除") + @PostMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestBody IdsMapBody map) { + String ids = map.getIds(); + if (StringUtils.isBlank(ids)) { + return Result.error(Result.NULL_ID); + } + List idList = Arrays.asList(map.getIds().split(",")); + this.safetyCenterSubitemService.deleteByIds(idList); + return Result.OK(Result.DELETE_SUCCESS); + } + + /** + * 通过id查询 + */ + @AutoLog(value = "功能安全中心成员-通过id查询") + @RequiresPermissions("safetyCenterMember:search") + @ApiOperation(value = "功能安全中心成员-通过id查询", notes = "功能安全中心成员-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id") String id) { + SafetyCenterSubitem safetyCenterSubitem = safetyCenterSubitemService.queryById(id); + if (safetyCenterSubitem == null) { + throw new JeroBootException(Result.NULL_DATA); + } + return Result.OK(safetyCenterSubitem); + } + + /** + * 导出excel + */ + @RequiresPermissions("safetyCenterMember:import") + @ApiOperation(value = "功能安全中心成员-导出excel") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, SafetyCenterSubitem safetyCenterSubitem) { + Page page = new Page<>(-1, -1); + IPage pageList = safetyCenterSubitemService.pageList(page, safetyCenterSubitem); + List records = pageList.getRecords(); + List exportList; + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + exportList = records.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); + }else { + exportList = records; + } + if (exportList.isEmpty()) { + throw new JeroBootException("没有数据"); + } + return super.exportListXls(exportList, SafetyCenterSubitem.class, "功能安全中心成员"); + } + + /** + * 模板下载 + * + * @return + */ + @RequiresPermissions("safetyCenterMember:downTemplate") + @ApiOperation(value = "功能安全中心成员-模板下载") + @GetMapping(value = "/downloadExcelModel") + public ModelAndView downloadExcelModel() { + return super.exportTemplate(SafetyCenterSubitem.class, "功能安全中心成员导入模板"); + } + + /** + * 通过excel导入数据 + */ + @RequiresPermissions("safetyCenterMember:import") + @ApiOperation(value = "功能安全中心成员-通过excel导入数据") + @PostMapping(value = "/importExcel") + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + String projectId = request.getParameter("projectId"); + if (StringUtils.isBlank(projectId)){ + throw new JeroBootException(Result.NULL_ID); + } + List excelData = super.getExcelData(request, SafetyCenterSubitemImport.class); + if (excelData.isEmpty()) { + throw new JeroBootException(Result.NULL_DATA); + } + safetyCenterSubitemService.importExcelData(projectId,excelData); + + return Result.OK("导入成功"); + } + + /** + * 功能安全中心成员-发布提醒列表查询 + */ + @RequiresPermissions("safetyCenterMember:search") + @ApiOperation(value = "功能安全中心成员-发布提醒列表查询") + @GetMapping(value = "/publishReminderList") + public Result publishReminderList(SafetyCenterSubitem safetyCenterSubitem, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest request) { + if (StringUtils.isBlank(safetyCenterSubitem.getProjectId())) { + return Result.error("功能安全中心id不能为空!"); + } + String chargeCompanyTemporaryName = request.getParameter("chargeCompanyTemporaryName"); + if(StringUtils.isNotBlank(chargeCompanyTemporaryName)){ + safetyCenterSubitem.setCompanyName(oConvertUtils.replaceAllPercent(chargeCompanyTemporaryName)); + } + SafetyCenter safetyCenter = safetyCenterService.getById(safetyCenterSubitem.getProjectId()); + if(Objects.isNull(safetyCenter)){ + return Result.error("功能安全中心!"); + } + Page page = new Page<>(pageNo, pageSize); + IPage pageList = safetyCenterSubitemService.publishReminderList(page, safetyCenterSubitem); + + return Result.OK(pageList); + } + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/entity/SafetyCenter.java b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/entity/SafetyCenter.java new file mode 100644 index 00000000..db74c077 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/entity/SafetyCenter.java @@ -0,0 +1,127 @@ +package com.jero.functionalsafetycenter.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.jero.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.util.Date; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +/** + *功能安全中心 + *@author liJiaRao + *@date 2024-06-12 15:13 + */ +@ApiModel(description="功能安全中心") +@Data +@TableName(value = "pay_functional_safety_center") +public class SafetyCenter { + /** + * id + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + @ApiModelProperty(value="id") + private String id; + + /** + * 父级id + */ + @TableField(value = "parent_id") + @ApiModelProperty(value="父级id") + private String parentId; + + /** + * 项目类型(1功能安全中心,2研究组,3项目组) + */ + @TableField(value = "project_type") + @ApiModelProperty(value="项目类型(1功能安全中心,2研究组,3项目组)") + private Integer projectType; + + /** + * 项目名称 + */ + @TableField(value = "project_name") + @ApiModelProperty(value="项目名称") + @Excel(name = "项目名称", width = 15) + private String projectName; + + /** + * 负责人id + */ + @TableField(value = "principal_id") + @ApiModelProperty(value = "负责人id") + @Excel(name = "负责人", width = 15, dictTable = "sys_user",dicText = "realname",dicCode = "id") + @Dict(dictTable = "sys_user",dicText = "realname",dicCode = "id") + private String principalId; + + /**负责人联系电话*/ + @TableField(exist = false) + @ApiModelProperty(value = "负责人联系电话") + private String principalPhone; + + /**负责人邮箱*/ + @TableField(exist = false) + @ApiModelProperty(value = "负责人邮箱") + private String principalEmail; + + /** + * 任务及目标 + */ + @TableField(value = "mission_and_objectives") + @ApiModelProperty(value="任务及目标") + @Excel(name = "任务及目标", width = 15) + private String missionAndObjectives; + + /** + * 备注 + */ + @TableField(value = "remarks") + @ApiModelProperty(value="备注") + @Excel(name = "备注", width = 15) + private String remarks; + + /** + * 创建人 + */ + @TableField(value = "create_by") + @ApiModelProperty(value="创建人") + private String createBy; + + /** + * 创建时间 + */ + @TableField(value = "create_time") + @ApiModelProperty(value="创建时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 更新人 + */ + @TableField(value = "update_by") + @ApiModelProperty(value="更新人") + private String updateBy; + + /** + * 更新时间 + */ + @TableField(value = "update_time") + @ApiModelProperty(value="更新时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 成员id + */ + @TableField(exist = false) + @ApiModelProperty(value="成员id") + private String subitemId; +} \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/entity/SafetyCenterSubitem.java b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/entity/SafetyCenterSubitem.java new file mode 100644 index 00000000..bd8fcd92 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/entity/SafetyCenterSubitem.java @@ -0,0 +1,124 @@ +package com.jero.functionalsafetycenter.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.jero.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.util.Date; +import java.util.List; + +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecgframework.poi.excel.annotation.ExcelCollection; + +import javax.validation.constraints.Size; + +/** + *功能安全中心成员 + *@author liJiaRao + *@date 2024-06-12 16:40 + */ +@ApiModel(description = "功能安全中心成员") +@Data +@TableName(value = "pay_functional_safety_center_subitem") +public class SafetyCenterSubitem { + /** + * id + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private String id; + + /** + * 项目id + */ + @TableField(value = "project_id") + @ApiModelProperty(value = "项目id") + private String projectId; + + /** + * 成员单位id + */ + @TableField(value = "company_id") + @ApiModelProperty(value = "成员单位id") + @Excel(name = "成员单位", width = 15, dictTable = "pay_company_management", dicText = "company_name", dicCode = "id", needMerge = true) + @Dict(dictTable = "pay_company_management", dicText = "company_name", dicCode = "id") + private String companyId; + /** + * 成员单位名称 + */ + @TableField(exist = false) + @ApiModelProperty(value = "成员单位名称") + private String companyName; + + /** + * 备注 + */ + @TableField(value = "remarks") + @ApiModelProperty(value = "备注") + @Excel(name = "备注", needMerge = true) + private String remarks; + + /** + * 创建人 + */ + @TableField(value = "create_by") + @ApiModelProperty(value = "创建人") + private String createBy; + + /** + * 创建时间 + */ + @TableField(value = "create_time") + @ApiModelProperty(value = "创建时间") + private Date createTime; + + /** + * 更新人 + */ + @TableField(value = "update_by") + @ApiModelProperty(value = "更新人") + private String updateBy; + + /** + * 更新时间 + */ + @TableField(value = "update_time") + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + /**企业联系人id*/ + @TableField(exist = false) + @ApiModelProperty(value = "企业联系人id") + @Dict(dictTable = "pay_contacts_management", dicText = "name", dicCode = "id") + private String contactsId; + + /**企业联系人姓名*/ + @TableField(exist = false) + @ApiModelProperty(value = "企业联系人姓名") + private String contactsName; + + /**企业联系人列表*/ + @TableField(exist = false) + @ApiModelProperty(value = "企业联系人列表") + @ExcelCollection(name = "企业联系人列表") + private List contactsList; + + + /**已提醒*/ + @TableField(exist = false) + @Dict(dicCode = "yn") + private Integer remind; + + /**邮件提醒*/ + @TableField(exist = false) + @Dict(dicCode = "yn") + private Integer mailRemind; + + /**会议id*/ + @TableField(exist = false) + private String meetingId; +} \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/entity/SafetyCenterSubitemContacts.java b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/entity/SafetyCenterSubitemContacts.java new file mode 100644 index 00000000..549f86b7 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/entity/SafetyCenterSubitemContacts.java @@ -0,0 +1,112 @@ +package com.jero.functionalsafetycenter.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.util.Date; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +/** + *功能安全中心成员-联系人 + *@author liJiaRao + *@date 2024-06-12 15:13 + */ +@ApiModel(description="功能安全中心成员-联系人") +@Data +@TableName(value = "pay_functional_safety_center_subitem_contacts") +public class SafetyCenterSubitemContacts { + /** + * id + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + @ApiModelProperty(value="id") + private String id; + + /** + * 项目id + */ + @TableField(value = "project_id") + @ApiModelProperty(value="项目id") + private String projectId; + + /** + * 项目成员id + */ + @TableField(value = "subitem_id") + @ApiModelProperty(value="项目成员id") + private String subitemId; + + /** + * 成员单位id + */ + @TableField(value = "company_id") + @ApiModelProperty(value="成员单位id") + private String companyId; + /** + * 成员单位名称 + */ + @TableField(exist = false) + @ApiModelProperty(value="成员单位名称") + private String companyName; + + /** + * 企业联系人id + */ + @TableField(value = "contacts_id") + @ApiModelProperty(value="企业联系人id") + @Excel(name = "企业联系人",dictTable = "pay_contacts_management", dicText = "name", dicCode = "id") + private String contactsId; + /** + * 企业联系人姓名 + */ + @TableField(exist = false) + @ApiModelProperty(value="企业联系人姓名") + private String contactsName; + + /** + * 备注 + */ + @TableField(value = "remarks") + @ApiModelProperty(value="备注") + @Excel(name = "备注") + private String remarks; + + /** + * 序号 + */ + @TableField(value = "order_num") + @ApiModelProperty(value="序号") + private Integer orderNum; + + /** + * 创建人 + */ + @TableField(value = "create_by") + @ApiModelProperty(value="创建人") + private String createBy; + + /** + * 创建时间 + */ + @TableField(value = "create_time") + @ApiModelProperty(value="创建时间") + private Date createTime; + + /** + * 更新人 + */ + @TableField(value = "update_by") + @ApiModelProperty(value="更新人") + private String updateBy; + + /** + * 更新时间 + */ + @TableField(value = "update_time") + @ApiModelProperty(value="更新时间") + private Date updateTime; +} \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/mapper/SafetyCenterMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/mapper/SafetyCenterMapper.java new file mode 100644 index 00000000..5d84c3ad --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/mapper/SafetyCenterMapper.java @@ -0,0 +1,16 @@ +package com.jero.functionalsafetycenter.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.jero.functionalsafetycenter.entity.SafetyCenter; +import org.apache.ibatis.annotations.Param; + +/** + * + *@author liJiaRao + *@date 2024-06-12 15:13 + */ +public interface SafetyCenterMapper extends BaseMapper { + IPage queryCompanyPageList(Page page, @Param("safetyCenter") SafetyCenter safetyCenter, @Param("userId") String userId); +} \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/mapper/SafetyCenterSubitemContactsMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/mapper/SafetyCenterSubitemContactsMapper.java new file mode 100644 index 00000000..e681f914 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/mapper/SafetyCenterSubitemContactsMapper.java @@ -0,0 +1,16 @@ +package com.jero.functionalsafetycenter.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jero.functionalsafetycenter.entity.SafetyCenterSubitemContacts; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * + *@author liJiaRao + *@date 2024-06-12 15:13 + */ +public interface SafetyCenterSubitemContactsMapper extends BaseMapper { + List listByParentIdAndContactIdList(@Param("parentId") String parentId, @Param("contactIdList") List contactIdList); +} \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/mapper/SafetyCenterSubitemMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/mapper/SafetyCenterSubitemMapper.java new file mode 100644 index 00000000..793853e4 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/mapper/SafetyCenterSubitemMapper.java @@ -0,0 +1,22 @@ +package com.jero.functionalsafetycenter.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.jero.functionalsafetycenter.entity.SafetyCenterSubitem; +import com.jero.project.entity.PayWorkingGroupSubItem; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author liJiaRao + * @date 2024-06-12 16:40 + */ +public interface SafetyCenterSubitemMapper extends BaseMapper { + IPage pageList(Page page, @Param("safetyCenterSubitem") SafetyCenterSubitem safetyCenterSubitem); + + List listByParentIdAndCompanyId(@Param("parentId") String parentId, @Param("companyId") String companyId); + + IPage publishReminderList(Page page, @Param("safetyCenterSubitem") SafetyCenterSubitem safetyCenterSubitem); +} \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/mapper/xml/SafetyCenterMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/mapper/xml/SafetyCenterMapper.xml new file mode 100644 index 00000000..903452f1 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/mapper/xml/SafetyCenterMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + id, parent_id, project_type, project_name, principal_id, mission_and_objectives, + remarks, create_by, create_time, update_by, update_time + + + + \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/mapper/xml/SafetyCenterSubitemContactsMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/mapper/xml/SafetyCenterSubitemContactsMapper.xml new file mode 100644 index 00000000..4c9c14b0 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/mapper/xml/SafetyCenterSubitemContactsMapper.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + id, project_id, subitem_id, company_id, contacts_id, remarks, order_num, create_by, + create_time, update_by, update_time + + + + \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/mapper/xml/SafetyCenterSubitemMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/mapper/xml/SafetyCenterSubitemMapper.xml new file mode 100644 index 00000000..07e49ad1 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/mapper/xml/SafetyCenterSubitemMapper.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + id, project_id, company_id, remarks, create_by, create_time, update_by, update_time + + + + + + + + \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/service/SafetyCenterService.java b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/service/SafetyCenterService.java new file mode 100644 index 00000000..8a357fa0 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/service/SafetyCenterService.java @@ -0,0 +1,76 @@ +package com.jero.functionalsafetycenter.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.api.ISysBaseAPI; +import com.jero.common.system.vo.LoginUser; +import com.jero.common.util.PasswordUtil; +import com.jero.functionalsafetycenter.common.SafetyCenterCommon; +import com.jero.functionalsafetycenter.vo.SafetyCenterEditVO; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.util.List; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.functionalsafetycenter.entity.SafetyCenter; +import com.jero.functionalsafetycenter.mapper.SafetyCenterMapper; + +import javax.annotation.Resource; + +/** + * + *@author liJiaRao + *@date 2024-06-12 15:13 + */ +@Service +public class SafetyCenterService extends ServiceImpl { + @Resource + private ISysBaseAPI sysBaseAPI; + public void add(SafetyCenter safetyCenter) { + Integer projectType = safetyCenter.getProjectType(); + if (projectType == null){ + throw new JeroBootException("项目类型不能为空"); + } + this.save(safetyCenter); + } + + public void editById(SafetyCenterEditVO safetyCenterEditVO) { + SafetyCenter safetyCenter = new SafetyCenter(); + safetyCenter.setId(safetyCenterEditVO.getId()); + safetyCenter.setProjectName(safetyCenterEditVO.getProjectName()); + safetyCenter.setPrincipalId(safetyCenterEditVO.getPrincipalId()); + safetyCenter.setMissionAndObjectives(safetyCenterEditVO.getMissionAndObjectives()); + safetyCenter.setRemarks(safetyCenterEditVO.getRemarks()); + this.updateById(safetyCenter); + } + + public void deleteById(String id) { + this.removeById(id); + } + + public void deleteByIds(List idList) { + for (String id : idList) { + deleteById(id); + } + } + + public SafetyCenter queryById(String id) { + SafetyCenter safetyCenter = this.getById(id); + return safetyCenter; + } + + public IPage queryCompanyPageList(Page page, SafetyCenter safetyCenter) { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + IPage safetyCenterIPage = baseMapper.queryCompanyPageList(page, safetyCenter, sysUser.getId()); + List records = safetyCenterIPage.getRecords(); + for (SafetyCenter record : records) { + String principalId = record.getPrincipalId(); + LoginUser user = sysBaseAPI.getUserById(principalId); + record.setPrincipalPhone(PasswordUtil.decrypt(user.getPhone())); + record.setPrincipalEmail(PasswordUtil.decrypt(user.getEmail())); + } + return safetyCenterIPage; + } +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/service/SafetyCenterSubitemContactsService.java b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/service/SafetyCenterSubitemContactsService.java new file mode 100644 index 00000000..6a8e12f7 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/service/SafetyCenterSubitemContactsService.java @@ -0,0 +1,74 @@ +package com.jero.functionalsafetycenter.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.jero.company.controller.PayContactsManagementController; +import com.jero.company.entity.PayContactsManagement; +import com.jero.company.service.IPayContactsManagementService; +import com.jero.temporary.entity.PayContactsManagementTemporary; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.functionalsafetycenter.entity.SafetyCenterSubitemContacts; +import com.jero.functionalsafetycenter.mapper.SafetyCenterSubitemContactsMapper; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * + *@author liJiaRao + *@date 2024-06-12 15:13 + */ +@Service +public class SafetyCenterSubitemContactsService extends ServiceImpl { + @Resource + private IPayContactsManagementService contactsManagementService; + + public void deleteBySubitemId(String subitemId){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SafetyCenterSubitemContacts::getSubitemId,subitemId); + List list = this.list(wrapper); + List idList = list.stream().map(SafetyCenterSubitemContacts::getId).collect(Collectors.toList()); + this.removeByIds(idList); + } + public List listBySubitemId(String subitemId){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SafetyCenterSubitemContacts::getSubitemId,subitemId); + return this.list(wrapper); + } + + public List listByParentIdAndContactIdList(String parentId, List contactIdList){ + return baseMapper.listByParentIdAndContactIdList(parentId,contactIdList); + } + + public boolean checkSafetyCenterSubitem(String projectId, String contactsId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SafetyCenterSubitemContacts::getProjectId,projectId); + wrapper.eq(SafetyCenterSubitemContacts::getContactsId,contactsId); + return count(wrapper) > 0; + } + + public List getContactsInfo(String projectId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SafetyCenterSubitemContacts::getProjectId,projectId); + wrapper.orderByDesc(SafetyCenterSubitemContacts::getSubitemId); + wrapper.orderByAsc(SafetyCenterSubitemContacts::getOrderNum); + List contactsList = this.list(wrapper); + if (contactsList.isEmpty()){ + return contactsList; + } + List contactsIdList = contactsList.stream().map(SafetyCenterSubitemContacts::getContactsId).distinct().collect(Collectors.toList()); + List payContactsManagements = contactsManagementService.listByIds(contactsIdList); + Map collectMap = payContactsManagements.stream().collect(Collectors.toMap(PayContactsManagement::getId, payContactsManagement -> payContactsManagement)); + + for (SafetyCenterSubitemContacts contacts : contactsList) { + String contactsId = contacts.getContactsId(); + PayContactsManagement payContactsManagement = collectMap.get(contactsId); + contacts.setContactsName(payContactsManagement.getName()); + contacts.setCompanyName(payContactsManagement.getCompanyName()); + } + + return contactsList; + } +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/service/SafetyCenterSubitemService.java b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/service/SafetyCenterSubitemService.java new file mode 100644 index 00000000..5fbb1452 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/service/SafetyCenterSubitemService.java @@ -0,0 +1,451 @@ +package com.jero.functionalsafetycenter.service; + +import cn.hutool.core.collection.CollStreamUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.vo.LoginUser; +import com.jero.company.entity.PayCompanyManagement; +import com.jero.company.entity.PayContactsManagement; +import com.jero.company.service.IPayCompanyManagementService; +import com.jero.company.service.IPayContactsManagementService; +import com.jero.functionalsafetycenter.common.SafetyCenterCommon; +import com.jero.functionalsafetycenter.entity.SafetyCenter; +import com.jero.functionalsafetycenter.entity.SafetyCenterSubitemContacts; +import com.jero.functionalsafetycenter.vo.SafetyCenterSubitemContactsImport; +import com.jero.functionalsafetycenter.vo.SafetyCenterSubitemImport; +import com.jero.project.entity.PayWorkingGroupSubItem; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.functionalsafetycenter.mapper.SafetyCenterSubitemMapper; +import com.jero.functionalsafetycenter.entity.SafetyCenterSubitem; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; + +/** + * + *@author liJiaRao + *@date 2024-06-12 15:13 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class SafetyCenterSubitemService extends ServiceImpl { + @Resource + private SafetyCenterService safetyCenterService; + @Resource + private SafetyCenterSubitemContactsService contactsService; + @Resource + private IPayCompanyManagementService payCompanyManagementService; + @Resource + private IPayContactsManagementService payContactsManagementService; + + public void add(SafetyCenterSubitem safetyCenterSubitem) { + String projectId = safetyCenterSubitem.getProjectId(); + SafetyCenter safetyCenter = safetyCenterService.getById(projectId); + if (safetyCenter == null){ + throw new JeroBootException("项目不存在"); + } + //判重,公司是否重复 + String companyId = safetyCenterSubitem.getCompanyId(); + PayCompanyManagement companyManagement = payCompanyManagementService.getById(companyId); + String companyName = companyManagement.getCompanyName(); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SafetyCenterSubitem::getProjectId,projectId); + wrapper.eq(SafetyCenterSubitem::getCompanyId,companyId); + if (this.count(wrapper) > 0){ + throw new JeroBootException("当前项目中已经存在,成员单位:"+companyName+""); + } + //判重,联系人是否重复 + List contactsList = safetyCenterSubitem.getContactsList(); + if (contactsList.isEmpty()){ + throw new JeroBootException("企业联系人不能为空"); + } + List contactIdList = contactsList.stream().map(SafetyCenterSubitemContacts::getContactsId).distinct().collect(Collectors.toList()); + if (contactIdList.size() != contactsList.size()){ + throw new JeroBootException("企业联系人重复"); + } + //判断父级是否有所选企业和所选联系人 + Integer projectType = safetyCenter.getProjectType(); + if (SafetyCenterCommon.PROJECT_TYPE_1 != projectType){ + //判断企业 + String parentId = safetyCenter.getParentId(); + LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); + wrapper1.eq(SafetyCenterSubitem::getProjectId,parentId); + wrapper1.eq(SafetyCenterSubitem::getCompanyId,companyId); + SafetyCenterSubitem parentCenterSubitem = this.getOne(wrapper1); + if (parentCenterSubitem == null){ + throw new JeroBootException("成员单位:"+ companyName +",无法添加到当前项目"); + } + //判断联系人 + String parentCenterSubitemId = parentCenterSubitem.getId(); + List parentContactList = contactsService.listBySubitemId(parentCenterSubitemId); + List parentContactIdList = parentContactList.stream().map(SafetyCenterSubitemContacts::getContactsId).distinct().collect(Collectors.toList()); + List contactNameList = new ArrayList<>(); + for (String contactId : contactIdList) { + if (!parentContactIdList.contains(contactId)){ + PayContactsManagement contactsManagement = payContactsManagementService.getById(contactId); + contactNameList.add(contactsManagement.getName()); + } + } + if (!contactNameList.isEmpty()){ + throw new JeroBootException("企业联系人:"+ String.join(",",contactNameList) +",无法添加到当前项目"); + } + } + //保存成员 + this.save(safetyCenterSubitem); + //保存成员单位联系人 + String subitemId = safetyCenterSubitem.getId(); + for (SafetyCenterSubitemContacts contacts : contactsList) { + contacts.setProjectId(projectId); + contacts.setCompanyId(companyId); + contacts.setSubitemId(subitemId); + } + contactsService.saveBatch(contactsList); + } + + public void editById(SafetyCenterSubitem safetyCenterSubitem) { + String subitemId = safetyCenterSubitem.getId(); + String projectId = safetyCenterSubitem.getProjectId(); + SafetyCenter safetyCenter = safetyCenterService.getById(projectId); + if (safetyCenter == null){ + throw new JeroBootException("项目不存在"); + } + + //判重,公司是否重复 + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String companyId; + //如果是企业用户,使用自己的公司id + if (sysUser.getIsCompanyUser()) { + companyId = sysUser.getCompanyId(); + safetyCenterSubitem.setCompanyId(companyId); + }else { + companyId = safetyCenterSubitem.getCompanyId(); + } + PayCompanyManagement companyManagement = payCompanyManagementService.getById(companyId); + String companyName = companyManagement.getCompanyName(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.ne(SafetyCenterSubitem::getId,subitemId); + wrapper.eq(SafetyCenterSubitem::getProjectId,projectId); + wrapper.eq(SafetyCenterSubitem::getCompanyId,companyId); + if (this.count(wrapper) > 0){ + throw new JeroBootException("当前项目中已经存在,成员单位:"+companyName+""); + } + //判重,联系人是否重复 + List contactsList = safetyCenterSubitem.getContactsList(); + if (contactsList.isEmpty()){ + throw new JeroBootException("企业联系人不能为空"); + } + List contactIdList = contactsList.stream().map(SafetyCenterSubitemContacts::getContactsId).distinct().collect(Collectors.toList()); + if (contactIdList.size() != contactsList.size()){ + throw new JeroBootException("企业联系人重复"); + } + //判断父级是否有所选企业和所选联系人 + Integer projectType = safetyCenter.getProjectType(); + if (SafetyCenterCommon.PROJECT_TYPE_1 != projectType){ + //判断企业 + String parentId = safetyCenter.getParentId(); + LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); + wrapper1.eq(SafetyCenterSubitem::getProjectId,parentId); + wrapper1.eq(SafetyCenterSubitem::getCompanyId,companyId); + SafetyCenterSubitem parentCenterSubitem = this.getOne(wrapper1); + if (parentCenterSubitem == null){ + throw new JeroBootException("成员单位:"+ companyName +",无法添加到当前项目"); + } + //判断联系人 + String parentCenterSubitemId = parentCenterSubitem.getId(); + List parentContactList = contactsService.listBySubitemId(parentCenterSubitemId); + List parentContactIdList = parentContactList.stream().map(SafetyCenterSubitemContacts::getContactsId).distinct().collect(Collectors.toList()); + List contactNameList = new ArrayList<>(); + for (String contactId : contactIdList) { + if (!parentContactIdList.contains(contactId)){ + PayContactsManagement contactsManagement = payContactsManagementService.getById(contactId); + contactNameList.add(contactsManagement.getName()); + } + } + if (!contactNameList.isEmpty()){ + throw new JeroBootException("企业联系人:"+ String.join(",",contactNameList) +",无法添加到当前项目"); + } + //区分删除的联系人 + List oldContactList = contactsService.listBySubitemId(subitemId); + List oldContactIdList = oldContactList.stream().map(SafetyCenterSubitemContacts::getContactsId).distinct().collect(Collectors.toList()); + //取差值,得到删除的联系人 + oldContactIdList.removeAll(contactIdList); + //删除子项目的联系人 + this.deleteChildrenByParentId(projectId,contactIdList); + } + this.updateById(safetyCenterSubitem); + //先删除之前保存的 + LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); + wrapper1.eq(SafetyCenterSubitemContacts::getSubitemId,subitemId); + contactsService.remove(wrapper1); + //保存成员单位联系人 + for (SafetyCenterSubitemContacts contacts : contactsList) { + contacts.setProjectId(projectId); + contacts.setCompanyId(companyId); + contacts.setSubitemId(subitemId); + } + contactsService.saveBatch(contactsList); + } + + public void deleteById(String id) { + SafetyCenterSubitem subitem = this.getById(id); + String projectId = subitem.getProjectId(); + SafetyCenter safetyCenter = safetyCenterService.getById(projectId); + Integer projectType = safetyCenter.getProjectType(); + if (SafetyCenterCommon.PROJECT_TYPE_3 != projectType){ + //删除下级同企业成员 + List subitemList = this.listByParentIdAndCompanyId(projectId, subitem.getCompanyId()); + for (SafetyCenterSubitem safetyCenterSubitem : subitemList) { + deleteById(safetyCenterSubitem.getId()); + } + } + //删除成员 + this.removeById(id); + //删除联系人 + contactsService.deleteBySubitemId(id); + } + + public void deleteByIds(List idList) { + for (String id : idList) { + deleteById(id); + } + } + + public SafetyCenterSubitem queryById(String id) { + SafetyCenterSubitem safetyCenterSubitem = this.getById(id); + return safetyCenterSubitem; + } + + public IPage pageList(Page page, SafetyCenterSubitem safetyCenterSubitem) { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + //如果是企业查询,判断是否有数据权限 + if (sysUser.getIsCompanyUser()) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SafetyCenterSubitem::getCompanyId,sysUser.getCompanyId()); + wrapper.eq(SafetyCenterSubitem::getProjectId,safetyCenterSubitem.getProjectId()); + SafetyCenterSubitem subitem = this.getOne(wrapper); + if (subitem == null){ + return new Page<>(); + } + } + IPage pageList = baseMapper.pageList(page, safetyCenterSubitem); + List records = pageList.getRecords(); + //根据企业id获取所有联系人 + List subitemIdList = records.stream().map(SafetyCenterSubitem::getId).collect(Collectors.toList()); + if (subitemIdList.isEmpty()){ + return pageList; + } + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(SafetyCenterSubitemContacts::getSubitemId,subitemIdList); + wrapper.orderByAsc(SafetyCenterSubitemContacts::getSubitemId); + //根据orderNum排序 + wrapper.orderByAsc(SafetyCenterSubitemContacts::getOrderNum); + List contactsList = contactsService.list(wrapper); + //根据企业id分组 + Map> stringListMap = CollStreamUtil.groupByKey(contactsList, SafetyCenterSubitemContacts::getSubitemId); + //遍历,存入数据 + for (SafetyCenterSubitem subitem : records) { + String subitemId = subitem.getId(); + List safetyCenterSubitemContacts = stringListMap.get(subitemId); + if (safetyCenterSubitemContacts == null){ + continue; + } + subitem.setContactsId(safetyCenterSubitemContacts.get(0).getContactsId()); + subitem.setContactsList(safetyCenterSubitemContacts); + } + return pageList; + } + + /** + * 根据父项目id和企业id查询子项目中相同公司的成员 + * @param parentId + * @param companyId + * @return + */ + public List listByParentIdAndCompanyId(String parentId,String companyId){ + return baseMapper.listByParentIdAndCompanyId(parentId,companyId); + } + + /** + * 删除子项目的联系人 + */ + public void deleteChildrenByParentId(String parentId, List contactIdList) { + List contactList = contactsService.listByParentIdAndContactIdList(parentId, contactIdList); + List collect = contactList.stream().map(SafetyCenterSubitemContacts::getId).collect(Collectors.toList()); + contactsService.removeByIds(collect); + List projectIdList = contactList.stream().map(SafetyCenterSubitemContacts::getProjectId).distinct().collect(Collectors.toList()); + for (String projectId : projectIdList) { + deleteChildrenByParentId(projectId,contactIdList); + } + } + + /** + * 导入数据 + * @param projectId + * @param excelData + */ + public void importExcelData(String projectId, List excelData) { + SafetyCenter safetyCenter = safetyCenterService.getById(projectId); + if (safetyCenter == null){ + throw new JeroBootException("项目不存在"); + } + List errorMessage = new ArrayList<>(); + List companyNameList = new ArrayList<>(); + int errorRowNum = 3; + int errorRowNum2 = 3; + for (Object obj : excelData) { + errorRowNum += 1; + SafetyCenterSubitemImport subitemImport = (SafetyCenterSubitemImport) obj; + String companyName = subitemImport.getCompanyName(); + List contactsList = subitemImport.getContactsList(); + + PayCompanyManagement company = null; + if (StringUtils.isBlank(companyName)){ + errorMessage.add("第" + errorRowNum + "行:成员单位不能为空"); + continue; + }else { + company = payCompanyManagementService.getCompanyByName(companyName); + if (company == null){ + errorMessage.add("第" + errorRowNum + "行:成员单位不存在"); + errorRowNum2 += contactsList.size(); + continue; + } + if (companyNameList.contains(companyName)) { + errorMessage.add("第" + errorRowNum + "行:成员单位重复"); + errorRowNum2 += contactsList.size(); + continue; + }else { + companyNameList.add(companyName); + } + } + String companyId = company.getId(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SafetyCenterSubitem::getProjectId,projectId); + wrapper.eq(SafetyCenterSubitem::getCompanyId,companyId); + if (this.count(wrapper) > 0){ + errorMessage.add("第" + errorRowNum + "行:成员单位当前项目中已经存在"); + } + String remarks1 = subitemImport.getRemarks(); + if (remarks1 != null && remarks1.length() > 200){ + errorMessage.add("第" + errorRowNum + "行:成员单位备注最长为200字符"); + } + Integer projectType = safetyCenter.getProjectType(); + List parentContactIdList = new ArrayList<>(); + if (SafetyCenterCommon.PROJECT_TYPE_1 != projectType) { + //判断企业 + String parentId = safetyCenter.getParentId(); + LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); + wrapper1.eq(SafetyCenterSubitem::getProjectId, parentId); + wrapper1.eq(SafetyCenterSubitem::getCompanyId, companyId); + SafetyCenterSubitem parentCenterSubitem = this.getOne(wrapper1); + if (parentCenterSubitem == null) { + errorMessage.add("第" + errorRowNum + "行:成员单位不是当前项目成员"); + errorRowNum2 += contactsList.size(); + continue; + } + String parentCenterSubitemId = parentCenterSubitem.getId(); + List parentContactList = contactsService.listBySubitemId(parentCenterSubitemId); + parentContactIdList = parentContactList.stream().map(SafetyCenterSubitemContacts::getContactsId).distinct().collect(Collectors.toList()); + } + errorRowNum += contactsList.size() -1; + + List distinctContactsList = new ArrayList<>(); + List subitemContactsList = new ArrayList<>(); + for (SafetyCenterSubitemContactsImport contactsImport : contactsList) { + errorRowNum2 += 1; + String contacts = contactsImport.getContacts(); + if (StringUtils.isBlank(contacts)){ + errorMessage.add("第" + errorRowNum2 + "行:企业联系人不能为空"); + continue; + } + PayContactsManagement payContactsManagement = payContactsManagementService.checkByCompanyIdAndName(contacts, companyId); + if (payContactsManagement == null){ + errorMessage.add("第" + errorRowNum2 + "行:企业联系人不存在"); + continue; + } + if (distinctContactsList.contains(contacts)){ + errorMessage.add("第" + errorRowNum2 + "行:企业联系人重复"); + continue; + }else { + distinctContactsList.add(contacts); + } + if (SafetyCenterCommon.PROJECT_TYPE_1 != projectType) { + //判断联系人 + if (!parentContactIdList.contains(payContactsManagement.getId())){ + errorMessage.add("第" + errorRowNum2 + "行:企业联系人不是当前项目成员"); + continue; + } + } + String remarks = contactsImport.getRemarks(); + if (remarks != null && remarks.length() > 50){ + errorMessage.add("第" + errorRowNum2 + "行:企业联系人备注最长为50字符"); + continue; + } + SafetyCenterSubitemContacts contacts1 = new SafetyCenterSubitemContacts(); + contacts1.setContactsId(payContactsManagement.getId()); + contacts1.setRemarks(remarks); + subitemContactsList.add(contacts1); + } + if (!errorMessage.isEmpty()){ + continue; + } + SafetyCenterSubitem subitem = new SafetyCenterSubitem(); + subitem.setProjectId(projectId); + subitem.setCompanyId(companyId); + subitem.setRemarks(remarks1); + subitem.setContactsList(subitemContactsList); + try { + this.add(subitem); + }catch (JeroBootException e){ + log.error("",e); + errorMessage.add(e.getMessage()); + } + } + if (!errorMessage.isEmpty()){ + StringBuilder msg = new StringBuilder(); + for (String s : errorMessage) { + msg.append(s).append(",请修改!
"); + } + throw new JeroBootException(msg.toString()); + } + + } + + public SafetyCenterSubitem getItemByProjectId(String projectId) { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); + wrapper1.eq(SafetyCenterSubitem::getProjectId,projectId); + wrapper1.eq(SafetyCenterSubitem::getCompanyId,sysUser.getCompanyId()); + SafetyCenterSubitem subitem = this.getOne(wrapper1); + //根据企业id获取所有联系人 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SafetyCenterSubitemContacts::getSubitemId,subitem.getId()); + //根据orderNum排序 + wrapper.orderByAsc(SafetyCenterSubitemContacts::getOrderNum); + List contactsList = contactsService.list(wrapper); + for (SafetyCenterSubitemContacts contacts : contactsList) { + String contactsId = contacts.getContactsId(); + PayContactsManagement contactsManagement = payContactsManagementService.getById(contactsId); + contacts.setContactsName(contactsManagement.getName()); + } + //存入数据 + subitem.setContactsId(contactsList.get(0).getContactsId()); + subitem.setContactsList(contactsList); + return subitem; + } + + public IPage publishReminderList(Page page, SafetyCenterSubitem safetyCenterSubitem) { + return baseMapper.publishReminderList(page,safetyCenterSubitem); + } +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/vo/SafetyCenterEditVO.java b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/vo/SafetyCenterEditVO.java new file mode 100644 index 00000000..f2452a9e --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/vo/SafetyCenterEditVO.java @@ -0,0 +1,53 @@ +package com.jero.functionalsafetycenter.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + *功能安全中心 + *@author liJiaRao + *@date 2024-06-12 15:13 + */ +@ApiModel(description="功能安全中心编辑vo") +@Data +public class SafetyCenterEditVO { + /** + * id + */ + @ApiModelProperty(value="id") + private String id; + /** + * 项目名称 + */ + @TableField(value = "project_name") + @ApiModelProperty(value="项目名称") + private String projectName; + + /** + * 负责人id + */ + @TableField(value = "principal_id") + @ApiModelProperty(value="负责人id") + private String principalId; + + /** + * 任务及目标 + */ + @TableField(value = "mission_and_objectives") + @ApiModelProperty(value="任务及目标") + private String missionAndObjectives; + + /** + * 备注 + */ + @TableField(value = "remarks") + @ApiModelProperty(value="备注") + private String remarks; +} \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/vo/SafetyCenterSubitemContactsImport.java b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/vo/SafetyCenterSubitemContactsImport.java new file mode 100644 index 00000000..d311cccc --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/vo/SafetyCenterSubitemContactsImport.java @@ -0,0 +1,31 @@ +package com.jero.functionalsafetycenter.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +/** + * 功能安全中心成员-联系人 + * + * @author liJiaRao + * @date 2024-06-12 15:13 + */ +@Data +public class SafetyCenterSubitemContactsImport { + + /** + * 企业联系人 + */ + @ApiModelProperty(value = "企业联系人") + @Excel(name = "企业联系人") + private String contacts; + + /** + * 备注 + */ + @ApiModelProperty(value = "备注") + @Excel(name = "备注") + private String remarks; + +} \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/vo/SafetyCenterSubitemImport.java b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/vo/SafetyCenterSubitemImport.java new file mode 100644 index 00000000..db9326c8 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/vo/SafetyCenterSubitemImport.java @@ -0,0 +1,42 @@ +package com.jero.functionalsafetycenter.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecgframework.poi.excel.annotation.ExcelCollection; + +import java.util.List; + +/** + * 功能安全中心成员 + * + * @author liJiaRao + * @date 2024-06-12 16:40 + */ +@Data +public class SafetyCenterSubitemImport { + + /** + * 成员单位 + */ + @ApiModelProperty(value = "成员单位") + @Excel(name = "成员单位", needMerge = true) + private String companyName; + + + /** + * 备注 + */ + @ApiModelProperty(value = "备注") + @Excel(name = "备注", needMerge = true) + private String remarks; + + /** + * 企业联系人列表 + */ + @ApiModelProperty(value = "企业联系人列表") + @ExcelCollection(name = "企业联系人列表") + private List contactsList; + + +} \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/common/MeetingCommon.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/common/MeetingCommon.java index 47f05919..22921b30 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/common/MeetingCommon.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/common/MeetingCommon.java @@ -69,9 +69,17 @@ public class MeetingCommon { */ public final static String OVERSEAS_MEETING = "8"; /** - * 起草组会议 + * 海外会议 */ public final static Integer OVERSEAS_MEETING_INT = 8; + /** + * 安全中心会议 + */ + public final static String SAFETY_CENTER_MEETING = "9"; + /** + * 安全中心会议 + */ + public final static Integer SAFETY_CENTER_MEETING_INT = 9; /** * 标准宣贯 */ diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/SafetyCenterMeetingController.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/SafetyCenterMeetingController.java new file mode 100644 index 00000000..9a97876a --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/SafetyCenterMeetingController.java @@ -0,0 +1,234 @@ +package com.jero.meeting.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jero.common.api.vo.Result; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.common.system.api.ISysBaseAPI; +import com.jero.common.system.base.controller.JeroController; +import com.jero.common.system.vo.LoginUser; +import com.jero.common.util.AuthenticationUtils; +import com.jero.common.util.PasswordUtil; +import com.jero.common.util.ValidUtil; +import com.jero.company.service.IPayContactsManagementService; +import com.jero.data.service.IPayCaseCommitteeService; +import com.jero.meeting.common.MeetingCommon; +import com.jero.meeting.entity.PayMeeting; +import com.jero.meeting.entity.PayMeetingHotelContacts; +import com.jero.meeting.service.IPayMeetingHotelContactsService; +import com.jero.meeting.service.IPayMeetingService; +import com.jero.meeting.vo.PayMeetingVO; +import com.jero.meeting.vo.PublishReminderVO; +import com.jero.meeting.vo.UploadFileVO; +import com.jero.modules.oss.service.IOSSFileService; +import com.jero.modules.system.volid.group.UpdateGroup; +import com.jero.project.service.IPayWorkingGroupService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; + + +/** + * @description: 会议管理 + * @author: jero-boot + * @date: 2021-09-02 + * @version: V1.0 + */ +@Api(tags = "会议管理-功能安全中心会议") +@RestController +@RequestMapping("/meeting/safetyCenterMeeting") +@Slf4j +public class SafetyCenterMeetingController extends JeroController { + @Resource + private IPayMeetingService payMeetingService; + @Resource + private ISysBaseAPI sysBaseAPI; + @Resource + private IPayMeetingHotelContactsService meetingHotelContactsService; + @Resource + private IPayWorkingGroupService payWorkingGroupService; + @Resource + private AuthenticationUtils authenticationUtils; + @Resource + private IOSSFileService iossFileService; + @Resource + private IPayCaseCommitteeService payCaseCommitteeService; + @Resource + private IPayContactsManagementService payContactsManagementService; + + private final Integer MEETING_TYPE = MeetingCommon.SAFETY_CENTER_MEETING_INT; + /** + * 分页列表查询 + */ + @RequiresPermissions("safetyCenterMeeting:search") + @ApiOperation(value = "会议管理-分页列表查询", notes = "会议管理-分页列表查询") + @GetMapping(value = "/page") + public Result queryPageList(PayMeeting payMeeting, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + payMeeting.setMeetingType(MEETING_TYPE); + IPage pageList = payMeetingService.queryPageList(payMeeting, pageNo, pageSize, req); + + return Result.OK(pageList); + } + + /** + * 添加 + */ + @RequiresPermissions("safetyCenterMeeting:add") + @AutoLog(value = "会议管理-添加") + @ApiOperation(value = "会议管理-添加", notes = "会议管理-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody PayMeetingVO payMeetingVO) { + String meetingType = payMeetingVO.getMeetingType(); + if (!Objects.equals(meetingType, MeetingCommon.SAFETY_CENTER_MEETING)) { + throw new RuntimeException(); + } + ValidUtil.validate(payMeetingVO); + payMeetingService.add(payMeetingVO); + return Result.OK("添加成功!"); + } + + private void extracted(String id) { + PayMeeting payMeeting = payMeetingService.getById(id); + Integer meetingType = payMeeting.getMeetingType(); + if (!Objects.equals(meetingType, MEETING_TYPE)) { + throw new RuntimeException(); + } + } + + /** + * 编辑 + */ + @RequiresPermissions("safetyCenterMeeting:edit") + @AutoLog(value = "会议管理-编辑") + @ApiOperation(value = "会议管理-编辑", notes = "会议管理-编辑") + @PostMapping(value = "/edit") + public Result edit(@RequestBody PayMeetingVO payMeetingVO) { + String id = payMeetingVO.getId(); + extracted(id); + ValidUtil.validate(payMeetingVO, UpdateGroup.class); + payMeetingService.editById(payMeetingVO); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + */ + @RequiresPermissions("safetyCenterMeeting:delete") + @AutoLog(value = "会议管理-通过id删除") + @ApiOperation(value = "会议管理-通过id删除", notes = "会议管理-通过id删除") + @GetMapping(value = "/delete") + public Result delete(@RequestParam(name = "id") String id) { + extracted(id); + payMeetingService.deleteById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + */ + @RequiresPermissions("safetyCenterMeeting:batchDel") + @AutoLog(value = "会议管理-批量删除") + @ApiOperation(value = "会议管理-批量删除", notes = "会议管理-批量删除") + @GetMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids") String ids) { + List idList = Arrays.asList(ids.split(",")); + for (String id : idList) { + extracted(id); + } + this.payMeetingService.deleteByIds(idList); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + */ + @ApiOperation(value = "会议管理-通过id查询", notes = "会议管理-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id") String id) { + PayMeeting meeting = payMeetingService.queryById(id); + if (meeting == null || !Objects.equals(meeting.getMeetingType(), MEETING_TYPE)) { + return Result.error("未找到对应数据"); + } + //查询会议负责人 + LoginUser user = sysBaseAPI.getUserById(meeting.getDirectorId()); + + meeting.setDirectorName(user.getRealname()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(meeting, payMeetingVO); + String meetingType = meeting.getMeetingType().toString(); + //String meetingType1 = sysBaseAPI.translateDict("meeting_type", meetingType); + payMeetingVO.setMeetingType(meetingType); + payMeetingVO.setTbMeetingType(meeting.getMeetingType().toString()); + //payMeetingVO.setHotelContactsList(new ArrayList<>()); + //会议查询酒店联系人列表 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMeetingHotelContacts::getMeetingId, meeting.getId()); + List payMeetingHotelContactsList = meetingHotelContactsService.list(wrapper); + payMeetingVO.setHotelContactsList(payMeetingHotelContactsList); + return Result.OK(payMeetingVO); + } + + /** + * 导出excel + */ + @RequiresPermissions("safetyCenterMeeting:export") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, PayMeeting payMeeting) { + payMeeting.setMeetingType(MEETING_TYPE); + IPage queryPageList = payMeetingService.queryPageList(payMeeting, -1, -1, request); + + List exportList = payMeetingService.getExportList(request, queryPageList); + Class aClass = payMeetingService.getaClass(MEETING_TYPE); + return super.exportListXls(exportList, aClass, "会议管理"); + } + + /** + * 上传资料 + */ + @AutoLog(value = "上传资料") + @RequiresPermissions("safetyCenterMeeting:upload") + @ApiOperation(value = "上传资料", notes = "上传资料") + @PostMapping(value = "/uploadFile") + public Result uploadFile(@RequestBody UploadFileVO uploadFileVO) { + List strings = payMeetingService.uploadFileSendMsg(uploadFileVO, MEETING_TYPE, false); + return Result.OK("上传资料成功!",strings); + } + + /** + * 上传会议纪要 + */ + @AutoLog(value = "上传会议纪要") + @RequiresPermissions("safetyCenterMeeting:uploadCouncil") + @ApiOperation(value = "上传会议纪要", notes = "上传会议纪要") + @PostMapping(value = "/uploadCouncilFile") + public Result uploadCouncilFile(@RequestBody UploadFileVO uploadFileVO) { + payMeetingService.uploadFile(uploadFileVO, MEETING_TYPE); + return Result.OK("上传会议纪要成功!"); + } + + /** + * 发布 + */ + @AutoLog("发布") + @RequiresPermissions("safetyCenterMeeting:publish") + @ApiOperation(value = "发布") + @PostMapping(value = "/release") + public Result release(@RequestBody PublishReminderVO publishReminderVO) { + payMeetingService.release(publishReminderVO); + return Result.OK(); + } +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/SafetyCenterMeetingSituationController.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/SafetyCenterMeetingSituationController.java new file mode 100644 index 00000000..4c95bcb0 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/SafetyCenterMeetingSituationController.java @@ -0,0 +1,233 @@ +package com.jero.meeting.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.jero.aspect.annotation.CompanyNameTranslate; +import com.jero.common.api.vo.Result; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.common.aspect.annotation.DictPoint; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.base.controller.JeroController; +import com.jero.common.system.query.QueryGenerator; +import com.jero.common.util.AuthenticationUtils; +import com.jero.common.util.ValidUtil; +import com.jero.company.service.IPayCompanyManagementService; +import com.jero.company.service.IPayContactsManagementService; +import com.jero.meeting.common.MeetingCommon; +import com.jero.meeting.entity.PayMeetingSituation; +import com.jero.meeting.service.IPayMeetingSituationService; +import com.jero.meeting.vo.CheckVO; +import com.jero.meeting.vo.MergePayBillVO; +import com.jero.meeting.vo.PayMeetingSituationVO; +import com.jero.meeting.vo.SetGuestsUploadFileVO; +import com.jero.project.common.PayProjectCommon; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; + + +/** + * @description: 参会人员信息 + * @author: jero-boot + * @date: 2021-09-02 + * @version: V1.0 + */ +@Api(tags = "参会人员信息-功能安全中心会议") +@RestController +@RequestMapping("/meeting/safetyCenterMeetingSituation") +@Slf4j +public class SafetyCenterMeetingSituationController extends JeroController { + @Resource + private IPayMeetingSituationService payMeetingSituationService; + @Resource + private AuthenticationUtils authenticationUtils; + @Resource + private IPayContactsManagementService contactsManagementService; + @Resource + private IPayCompanyManagementService companyManagementService; + + private final Integer MEETING_TYPE = MeetingCommon.SAFETY_CENTER_MEETING_INT; + /** + * 分页列表查询 + */ + @CompanyNameTranslate + @RequiresPermissions("safetyCenterMeetingSituation:search") + @ApiOperation(value = "参会人员信息-分页列表查询", notes = "参会人员信息-分页列表查询") + @GetMapping(value = "/page") + public Result queryPageList(PayMeetingSituation payMeetingSituation, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + String meetingId = payMeetingSituation.getMeetingId(); + if (StringUtils.isBlank(meetingId)) { + throw new JeroBootException("会议id不能为空"); + } + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeetingSituation, req.getParameterMap()); + String particularYear = req.getParameter("particularYear"); + if (StringUtils.isNotBlank(particularYear)){ + queryWrapper.eq("DATE_FORMAT( ppr.payment_date, '%Y' )",particularYear); + } + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingSituationService.pageListContract(meetingId, page, queryWrapper,MEETING_TYPE); + List situationList = pageList.getRecords(); + for (PayMeetingSituation meetingSituation : situationList) { + Integer payMode = meetingSituation.getPayMode(); + //汇款并且缴费凭证为空 + if (Objects.equals(payMode,1) && StringUtils.isBlank(meetingSituation.getPaymentRecord())){ + meetingSituation.setIdentification(PayProjectCommon.YES); + }else { + meetingSituation.setIdentification(PayProjectCommon.NO); + } + } + return Result.OK(pageList); + } + + /** + * 添加参会人 + */ + @RequiresPermissions("safetyCenterMeetingSituation:add") + @AutoLog(value = "参会人员信息-添加参会人") + @ApiOperation(value = "参会人员信息-添加参会人", notes = "参会人员信息-添加参会人") + @PostMapping(value = "/add") + public Result add(@RequestBody PayMeetingSituation payMeetingSituation) { + payMeetingSituationService.add(payMeetingSituation, MEETING_TYPE); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + */ + @AutoLog(value = "参会人员信息-编辑") + @RequiresPermissions("safetyCenterMeetingSituation:edit") + @ApiOperation(value = "参会人员信息-编辑", notes = "参会人员信息-编辑") + @PostMapping(value = "/edit") + public Result edit(@RequestBody PayMeetingSituationVO payMeetingSituationVO) { + payMeetingSituationService.editById(payMeetingSituationVO, MEETING_TYPE); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + */ + @RequiresPermissions("safetyCenterMeetingSituation:delete") + @AutoLog(value = "参会人员信息-通过id删除") + @ApiOperation(value = "参会人员信息-通过id删除", notes = "参会人员信息-通过id删除") + @GetMapping(value = "/delete") + public Result delete(@RequestParam(name = "id") String id) { + payMeetingSituationService.deleteById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + */ + @RequiresPermissions("safetyCenterMeetingSituation:batchDel") + @AutoLog(value = "参会人员信息-批量删除") + @ApiOperation(value = "参会人员信息-批量删除", notes = "参会人员信息-批量删除") + @GetMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids") String ids) { + this.payMeetingSituationService.deleteByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + */ + @CompanyNameTranslate + @DictPoint + @ApiOperation(value = "参会人员信息-通过id查询", notes = "参会人员信息-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id") String id) { + PayMeetingSituation payMeetingSituation = payMeetingSituationService.queryById(id); + if (payMeetingSituation == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(payMeetingSituation); + } + + /** + * 通过会议id查询自己的参会人信息 + */ + @CompanyNameTranslate + @DictPoint + @ApiOperation(value = "参会人员信息-通过会议id查询自己的参会人信息") + @GetMapping(value = "/queryByMeetingId") + public Result queryByMeetingId(@RequestParam(name = "meetingId") String meetingId) { + PayMeetingSituation payMeetingSituation = payMeetingSituationService.queryByMeetingIdAndContactId(meetingId); + if (payMeetingSituation == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(payMeetingSituation); + } + + /** + * 导出excel + */ + @RequiresPermissions("safetyCenterMeetingSituation:export") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, PayMeetingSituation payMeetingSituation) { + List objects = payMeetingSituationService.MeetingSituationGetModelAndView(request, payMeetingSituation,MEETING_TYPE); + Class aClass = payMeetingSituationService.getaClass(MEETING_TYPE); + return super.exportListXls(objects, aClass, "参会人员信息"); + } + + /** + * 审核缴费凭证 + */ + @RequiresPermissions("safetyCenterMeetingSituation:auditCredentials") + @AutoLog(value = "审核缴费凭证") + @ApiOperation(value = "审核缴费凭证") + @PostMapping(value = "/check") + public Result check(@RequestBody CheckVO checkVO) { + payMeetingSituationService.check(checkVO); + return Result.OK("审核成功!"); + } + + /** + * 审核报名信息 + */ + @AutoLog(value = "审核报名信息") + @RequiresPermissions("safetyCenterMeetingSituation:auditSignUp") + @ApiOperation(value = "审核报名信息") + @PostMapping(value = "/checkRegister") + public Result checkRegister(@RequestBody CheckVO checkVO) { + payMeetingSituationService.checkRegister(checkVO); + return Result.OK("审核成功!"); + } + + /** + * 合并开票 + */ + @AutoLog(value = "合并开票") + @ApiOperation(value = "合并开票", notes = "合并开票") + @PostMapping(value = "/batchPayBill") + public Result mergePayBill(@RequestBody MergePayBillVO mergePayBillVO) { + ValidUtil.validate(mergePayBillVO); + payMeetingSituationService.mergePayBill(mergePayBillVO); + return Result.OK("合并开票成功!"); + } + /** + * 设置嘉宾上传文件 + */ + @RequiresPermissions("safetyCenterMeetingSituation:guestsUploadFileFlag") + @AutoLog(value = "设置嘉宾上传文件") + @ApiOperation(value = "设置嘉宾上传文件", notes = "设置嘉宾上传文件") + @PostMapping(value = "/setGuestsUploadFile") + public Result setGuestsUploadFile(@RequestBody SetGuestsUploadFileVO setGuestsUploadFileVO) { + ValidUtil.validate(setGuestsUploadFileVO); + payMeetingSituationService.setGuestsUploadFile(setGuestsUploadFileVO,MEETING_TYPE); + return Result.OK("设置嘉宾上传文件成功!"); + } + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/entity/PayMeeting.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/entity/PayMeeting.java index 596644d6..b921fb9a 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/entity/PayMeeting.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/entity/PayMeeting.java @@ -119,6 +119,10 @@ public class PayMeeting implements Serializable { @ApiModelProperty(value = "理事会名称") private String councilName; + /**安全中心项目id*/ + @ApiModelProperty(value = "安全中心项目id") + private String safetyCenterId; + /**开始时间*/ @Excel(name = "开始时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingServiceImpl.java index 10695eac..ce012830 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingServiceImpl.java @@ -41,6 +41,10 @@ import com.jero.drafting.entity.PayDraftingGroup; import com.jero.drafting.entity.PayDraftingGroupSubItemContacts; import com.jero.drafting.service.IPayDraftingGroupService; import com.jero.drafting.service.IPayDraftingGroupSubItemContactsService; +import com.jero.functionalsafetycenter.entity.SafetyCenter; +import com.jero.functionalsafetycenter.entity.SafetyCenterSubitemContacts; +import com.jero.functionalsafetycenter.service.SafetyCenterService; +import com.jero.functionalsafetycenter.service.SafetyCenterSubitemContactsService; import com.jero.meeting.common.MeetingCommon; import com.jero.meeting.common.MeetingSubitemCommon; import com.jero.meeting.entity.*; @@ -149,6 +153,10 @@ public class PayMeetingServiceImpl extends ServiceImpl contactsIdList = new ArrayList<>(); String workingGroupId = null; String draftingGroupId = null; + String safetyCenterId = null; //工作组项目直接是人 if (Objects.equals(projectType, 1)) { //把单位会员中所有的联系人取出 @@ -784,6 +793,22 @@ public class PayMeetingServiceImpl extends ServiceImpl wrapper1 = new LambdaQueryWrapper<>(); + wrapper1.eq(SafetyCenterSubitemContacts::getProjectId, safetyCenterId); + wrapper1.in(SafetyCenterSubitemContacts::getContactsId,subitemIds); + List groupSubItemContactsList = safetyCenterSubitemContactsService.list(wrapper1); + for (SafetyCenterSubitemContacts payDraftingGroupSubItemContacts : groupSubItemContactsList) { + String subitemId = payDraftingGroupSubItemContacts.getSubitemId(); + String contactsId = payDraftingGroupSubItemContacts.getContactsId(); + contactsIdList.add(contactsId); + meetingRemindRecordList.add( + new PayMeetingRemindRecord() + .setSubitemId(subitemId) + .setContactId(contactsId) + ); + } } else { throw new JeroBootException("项目类型不正确"); } @@ -815,6 +840,13 @@ public class PayMeetingServiceImpl extends ServiceImpl pageListContract = pageListContract(meetingId, new Page<>(-1, -1), queryWrapper,meetingType); List pageList = pageListContract.getRecords(); @@ -1784,6 +1806,18 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl hotelContactsList; + /** + * 会议联系人列表 + */ + @ExcelCollection(name = "会议联系人列表") + private List meetingContactsList; + + /**备注*/ + @Excel(name = "备注", width = 15) + private String remark; +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/vo/excel/SafetyCenterMeetingSituationExcel.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/vo/excel/SafetyCenterMeetingSituationExcel.java new file mode 100644 index 00000000..691b03ac --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/vo/excel/SafetyCenterMeetingSituationExcel.java @@ -0,0 +1,70 @@ +package com.jero.meeting.vo.excel; + +import com.jero.common.aspect.annotation.Dict; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +/** + * @author liJiaRao + * @date 2021-09-22 15:39 + */ +@Data +public class SafetyCenterMeetingSituationExcel { + + /** + * 会议id + */ + @Excel(name = "会议名称", width = 15, dictTable = "pay_meeting", dicCode = "id", dicText = "meeting_name") + private String meetingId; + + /** + * 企业id + */ + @Excel(name = "企业名称", width = 15) + private String companyName; + + /** + * 企业联系人id + */ + @Excel(name = "企业联系人名称", width = 15) + private String companyContactName; + + /** + * 职务 + */ + @Excel(name = "职务", width = 15) + private String post; + + /** + * 手机号 + */ + @Excel(name = "手机号", width = 15) + private String phone; + + /** + * 邮箱 + */ + @Excel(name = "邮箱", width = 15) + private String email; + + /** + * 身份 + */ + @Dict(dicCode = "meet_identify_type") + @Excel(name = "身份", width = 15, dicCode = "meet_identify_type") + private Integer identity; + + /** + * 备注 + */ + @Excel(name = "备注", width = 15) + private String remark; + + /** + * 签到文件 + */ + @Excel(name = "手动签到", type = 2, width = 40, height = 20, imageType = 3) + private String checkFile; + + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/common/PayProjectCommon.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/common/PayProjectCommon.java index 1cceca56..fefcbea3 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/common/PayProjectCommon.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/common/PayProjectCommon.java @@ -113,6 +113,10 @@ public class PayProjectCommon { * 项目类型1:工作组,2:分标委, 3:理事会, 4:起草组 */ public final static Integer PROJECT_TYPE_FILE4 = 4; + /** + * 5功能安全中心 + */ + public final static Integer PROJECT_TYPE_FILE5 = 5; /** * 需要发票(1:增值税普通发票,2:增值税专用发票,0:否,3:需要发票(小程序需要)) */ diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayCommonProjectController.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayCommonProjectController.java index b3bd9161..3c3dbec0 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayCommonProjectController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayCommonProjectController.java @@ -27,6 +27,9 @@ import com.jero.contract.service.IPayIncomeContractAssociatedService; import com.jero.contract.service.IPayIncomeContractService; import com.jero.drafting.entity.PayDraftingGroupSubItemContacts; import com.jero.drafting.service.IPayDraftingGroupSubItemContactsService; +import com.jero.functionalsafetycenter.entity.SafetyCenterSubitem; +import com.jero.functionalsafetycenter.service.SafetyCenterSubitemService; +import com.jero.functionalsafetycenter.vo.SafetyCenterSubitemImport; import com.jero.mail.entity.PayMailBill; import com.jero.mail.entity.PayMailBillProject; import com.jero.mail.service.IPayMailBillProjectService; @@ -121,6 +124,8 @@ public class PayCommonProjectController extends JeroController queryPayWorkingGroupDistributionRecord = new LambdaQueryWrapper<>(); + queryPayWorkingGroupDistributionRecord.eq(PayWorkingGroupDistributionRecord::getProjectId,safetyCenterSubitem.getProjectId()); + queryPayWorkingGroupDistributionRecord.eq(PayWorkingGroupDistributionRecord::getContactsId,sysUser.getId()); + queryPayWorkingGroupDistributionRecord.groupBy(PayWorkingGroupDistributionRecord::getFileId); + List listPayWorkingGroupDistributionRecord = payWorkingGroupDistributionRecordService.list(queryPayWorkingGroupDistributionRecord); + if(!CollectionUtils.isEmpty(listPayWorkingGroupDistributionRecord)){ + StringBuilder sb = new StringBuilder(); + listPayWorkingGroupDistributionRecord.forEach(p->{ + sb.append(p.getFileId()); + if(listPayWorkingGroupDistributionRecord.indexOf(p) != (listPayWorkingGroupDistributionRecord.size() - 1)){ + sb.append(","); + } + }); + payCommonProject.setFiles(sb.toString()); + } + + + } + String strProject = JSON.toJSONString(payCommonProject); payCompanyCommonProject = JSONObject.parseObject(strProject,PayCompanyCommonProject.class); if(Objects.isNull(payCompanyCommonProject.getPaidAmount())){ diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupDataFileController.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupDataFileController.java index 9714c766..de0951b1 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupDataFileController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupDataFileController.java @@ -18,6 +18,7 @@ import com.jero.modules.oss.service.IOSSFileService; import com.jero.project.common.PayProjectCommon; import com.jero.project.entity.PayWorkingGroup; import com.jero.project.entity.PayWorkingGroupDataFile; +import com.jero.project.enums.ProjectTypeEnum; import com.jero.project.service.IPayWorkingGroupDataFileService; import com.jero.project.service.IPayWorkingGroupService; import io.swagger.annotations.Api; @@ -86,10 +87,7 @@ public class PayWorkingGroupDataFileController extends JeroController listData = new ArrayList<>(); @@ -267,7 +269,17 @@ public class PayWorkingGroupDistributionRecordController extends JeroController< listData.add(payContactsManagement); }); } - + }else if(Objects.equals(projectType,PayProjectCommon.PROJECT_TYPE_FILE5)){ + List list = safetyCenterSubitemContactsService.getContactsInfo(projectId); + if(!CollectionUtils.isEmpty(list)){ + list.forEach(p->{ + PayContactsManagement payContactsManagement = new PayContactsManagement(); + payContactsManagement.setId(p.getContactsId()); + payContactsManagement.setName(p.getContactsName()); + payContactsManagement.setCompanyName(p.getCompanyName()); + listData.add(payContactsManagement); + }); + } }else { throw new JeroBootException("项目状态不正确!"); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/enums/ProjectTypeEnum.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/enums/ProjectTypeEnum.java new file mode 100644 index 00000000..a9c806d9 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/enums/ProjectTypeEnum.java @@ -0,0 +1,53 @@ +package com.jero.project.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author liJiaRao + * @date 2024-07-04 17:54 + */ +@Getter +@AllArgsConstructor +public enum ProjectTypeEnum { + /** + * A + */ + ONE("工作组", 1), + TWO("分标委", 2), + THREE("理事会", 3), + FOUR("起草组", 4), + FIVE("功能安全中心", 5), + ; + + private String name; + private Integer value; + + public static String getNameByValue(Integer value) { + for (ProjectTypeEnum enumObject : values()) { + if (enumObject.getValue().equals(value)) { + return enumObject.getName(); + } + } + return null; + } + + public static Integer getValueByName(String name) { + for (ProjectTypeEnum enumObject : values()) { + if (enumObject.getName().equals(name)) { + return enumObject.getValue(); + } + } + return null; + } + public static boolean hasValue(Integer value) { + for (ProjectTypeEnum enumObject : values()) { + if (enumObject.getValue().equals(value)) { + return true; + } + } + return false; + } + + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupDistributionRecordServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupDistributionRecordServiceImpl.java index edaf7bf3..ae182fd4 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupDistributionRecordServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupDistributionRecordServiceImpl.java @@ -30,6 +30,10 @@ import com.jero.drafting.entity.PayDraftingGroup; import com.jero.drafting.entity.PayDraftingGroupSubItemContacts; import com.jero.drafting.service.IPayDraftingGroupService; import com.jero.drafting.service.IPayDraftingGroupSubItemContactsService; +import com.jero.functionalsafetycenter.entity.SafetyCenter; +import com.jero.functionalsafetycenter.entity.SafetyCenterSubitemContacts; +import com.jero.functionalsafetycenter.service.SafetyCenterService; +import com.jero.functionalsafetycenter.service.SafetyCenterSubitemContactsService; import com.jero.modules.oss.entity.OSSFile; import com.jero.modules.oss.service.IOSSFileService; import com.jero.project.common.PayProjectCommon; @@ -41,6 +45,7 @@ import com.jero.temporary.service.IPayContactsManagementTemporaryService; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; +import org.springframework.beans.BeanUtils; import org.springframework.core.env.Environment; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -97,6 +102,10 @@ public class PayWorkingGroupDistributionRecordServiceImpl extends ServiceImpl list = new ArrayList<>(); String msg = ""; + String projectId = payWorkingGroupDistributionRecord.getProjectId(); + Integer projectType = payWorkingGroupDistributionRecord.getProjectType(); List listPayWorkingGroupDistributionRecord = new ArrayList<>(); - if(Objects.equals(payWorkingGroupDistributionRecord.getProjectType(),PayProjectCommon.PROJECT_TYPE_FILE1)){ - PayWorkingGroup payWorkingGroup = payWorkingGroupService.getById(payWorkingGroupDistributionRecord.getProjectId()); + if(Objects.equals(projectType,PayProjectCommon.PROJECT_TYPE_FILE1)){ + PayWorkingGroup payWorkingGroup = payWorkingGroupService.getById(projectId); if(Objects.isNull(payWorkingGroup)){ throw new JeroBootException("工作组不存在!"); } @@ -150,7 +161,7 @@ public class PayWorkingGroupDistributionRecordServiceImpl extends ServiceImpl queryPayContactsManagement = new LambdaQueryWrapper<>(); queryPayContactsManagement.in(PayContactsManagement::getId, Arrays.asList(contactsIds.split(","))); List listContacts = payContactsManagementService.list(queryPayContactsManagement); @@ -160,15 +171,15 @@ public class PayWorkingGroupDistributionRecordServiceImpl extends ServiceImpl queryPayCaseCommitteeSubitem = new LambdaQueryWrapper<>(); - queryPayCaseCommitteeSubitem.eq(PayCaseCommitteeSubitem::getCommitteeId,payWorkingGroupDistributionRecord.getProjectId()); + queryPayCaseCommitteeSubitem.eq(PayCaseCommitteeSubitem::getCommitteeId, projectId); queryPayCaseCommitteeSubitem.in(PayCaseCommitteeSubitem::getContactsId,Arrays.asList(s)); List listPayCaseCommitteeSubitem = payCaseCommitteeSubitemService.list(queryPayCaseCommitteeSubitem); if(!CollectionUtils.isEmpty(listPayCaseCommitteeSubitem)){ listPayCaseCommitteeSubitem.forEach(p->{ PayWorkingGroupDistributionRecord payWorkingGroupDistributionRecordNew = new PayWorkingGroupDistributionRecord(); payWorkingGroupDistributionRecordNew.setDataId(payWorkingGroupDistributionRecord.getDataId()); - payWorkingGroupDistributionRecordNew.setProjectId(payWorkingGroupDistributionRecord.getProjectId()); - payWorkingGroupDistributionRecordNew.setProjectType(payWorkingGroupDistributionRecord.getProjectType()); + payWorkingGroupDistributionRecordNew.setProjectId(projectId); + payWorkingGroupDistributionRecordNew.setProjectType(projectType); payWorkingGroupDistributionRecordNew.setFileId(byId.getId()); payWorkingGroupDistributionRecordNew.setSubId(p.getId()); payWorkingGroupDistributionRecordNew.setContactsId(p.getContactsId()); @@ -177,12 +188,12 @@ public class PayWorkingGroupDistributionRecordServiceImpl extends ServiceImpl queryPayContactsManagement = new LambdaQueryWrapper<>(); queryPayContactsManagement.in(PayContactsManagement::getId, Arrays.asList(contactsIds.split(","))); List listContacts = payContactsManagementService.list(queryPayContactsManagement); @@ -192,15 +203,15 @@ public class PayWorkingGroupDistributionRecordServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(PayCaseCouncilSubitem::getCouncilId,payWorkingGroupDistributionRecord.getProjectId()); + queryWrapper.eq(PayCaseCouncilSubitem::getCouncilId, projectId); queryWrapper.in(PayCaseCouncilSubitem::getContactsId,Arrays.asList(s)); List payCaseCouncilSubitems = payCaseCouncilSubitemService.list(queryWrapper); if(!CollectionUtils.isEmpty(payCaseCouncilSubitems)){ payCaseCouncilSubitems.forEach(p->{ PayWorkingGroupDistributionRecord payWorkingGroupDistributionRecordNew = new PayWorkingGroupDistributionRecord(); payWorkingGroupDistributionRecordNew.setDataId(payWorkingGroupDistributionRecord.getDataId()); - payWorkingGroupDistributionRecordNew.setProjectId(payWorkingGroupDistributionRecord.getProjectId()); - payWorkingGroupDistributionRecordNew.setProjectType(payWorkingGroupDistributionRecord.getProjectType()); + payWorkingGroupDistributionRecordNew.setProjectId(projectId); + payWorkingGroupDistributionRecordNew.setProjectType(projectType); payWorkingGroupDistributionRecordNew.setFileId(byId.getId()); payWorkingGroupDistributionRecordNew.setSubId(p.getId()); payWorkingGroupDistributionRecordNew.setContactsId(p.getContactsId()); @@ -208,13 +219,13 @@ public class PayWorkingGroupDistributionRecordServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.in(PayContactsManagement::getId, Arrays.asList(s)); + List listContacts = payContactsManagementService.list(wrapper); + List listContactsTemporary = new ArrayList<>(); + for (PayContactsManagement contactsManagement : listContacts) { + PayContactsManagementTemporary temporary = new PayContactsManagementTemporary(); + BeanUtils.copyProperties(contactsManagement,temporary); + listContactsTemporary.add(temporary); + } + if(!CollectionUtils.isEmpty(listContactsTemporary)){ + list = listContactsTemporary; + } + msg = safetyCenter.getProjectName(); }else{ throw new JeroBootException("项目状态不正确!"); } @@ -266,27 +297,27 @@ public class PayWorkingGroupDistributionRecordServiceImpl extends ServiceImpl listStr = listPayWorkingGroupDistributionRecord.stream().filter(item-> - Objects.equals(payWorkingGroupDistributionRecord.getProjectType(),PayProjectCommon.PROJECT_TYPE_FILE1) ? + Objects.equals(projectType,PayProjectCommon.PROJECT_TYPE_FILE1) ? Objects.equals(item.getTemporaryContactsId(),p.getId()) : Objects.equals(item.getContactsId(),p.getId())).collect(Collectors.toList()); if(CollectionUtils.isEmpty(listStr)){ continue; } json.put("id",listStr.get(0).getSubId()); - }else if(Objects.equals(payWorkingGroupDistributionRecord.getProjectType(),PayProjectCommon.PROJECT_TYPE_FILE2)){ + }else if(Objects.equals(projectType,PayProjectCommon.PROJECT_TYPE_FILE2)){ List listStr = listPayWorkingGroupDistributionRecord.stream().filter(item-> - Objects.equals(payWorkingGroupDistributionRecord.getProjectType(),PayProjectCommon.PROJECT_TYPE_FILE2) ? + Objects.equals(projectType,PayProjectCommon.PROJECT_TYPE_FILE2) ? Objects.equals(item.getTemporaryContactsId(),p.getId()) : Objects.equals(item.getContactsId(),p.getId())).collect(Collectors.toList()); if(CollectionUtils.isEmpty(listStr)){ continue; } json.put("id",listStr.get(0).getProjectId()); - }else if(Objects.equals(payWorkingGroupDistributionRecord.getProjectType(),PayProjectCommon.PROJECT_TYPE_FILE4)){ + }else if(Objects.equals(projectType,PayProjectCommon.PROJECT_TYPE_FILE4)){ List listStr = listPayWorkingGroupDistributionRecord.stream().filter(item-> - Objects.equals(payWorkingGroupDistributionRecord.getProjectType(),PayProjectCommon.PROJECT_TYPE_FILE4) ? + Objects.equals(projectType,PayProjectCommon.PROJECT_TYPE_FILE4) ? Objects.equals(item.getTemporaryContactsId(),p.getId()) : Objects.equals(item.getContactsId(),p.getId())).collect(Collectors.toList()); if(CollectionUtils.isEmpty(listStr)){ @@ -484,6 +515,36 @@ public class PayWorkingGroupDistributionRecordServiceImpl extends ServiceImpl{ + OSSFile byId = iossFileService.getById(p.getFileId()); + if(Objects.isNull(byId)){ + throw new JeroBootException("没有找到文件!"); + } + // 文件路径 + String url = byId.getUrl(); + listFile.add(path + url); + payWorkingGroupDistributionRecord.setDataId(p.getId()); + setRecordBySafetyCenter( payWorkingGroupDistributionRecord,s,listPayWorkingGroupDistributionRecord, byId); + }); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(PayContactsManagement::getId, Arrays.asList(s)); + List listContacts = payContactsManagementService.list(wrapper); + List listContactsTemporary = new ArrayList<>(); + for (PayContactsManagement contactsManagement : listContacts) { + PayContactsManagementTemporary temporary = new PayContactsManagementTemporary(); + BeanUtils.copyProperties(contactsManagement,temporary); + listContactsTemporary.add(temporary); + } + if(!CollectionUtils.isEmpty(listContactsTemporary)){ + list = listContactsTemporary; + } + msg = safetyCenter.getProjectName(); }else { throw new JeroBootException("项目状态不正确!"); } @@ -533,7 +594,8 @@ public class PayWorkingGroupDistributionRecordServiceImpl extends ServiceImpl listPayWorkingGroupDistributionRecord,OSSFile byId){ + // 查询工作组成员 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SafetyCenterSubitemContacts::getProjectId,payWorkingGroupDistributionRecord.getProjectId()); + wrapper.in(SafetyCenterSubitemContacts::getContactsId,Arrays.asList(s)); + List list = safetyCenterSubitemContactsService.list(wrapper); + if(!CollectionUtils.isEmpty(list)){ + list.forEach(p->{ + PayWorkingGroupDistributionRecord payWorkingGroupDistributionRecordNew = new PayWorkingGroupDistributionRecord(); + payWorkingGroupDistributionRecordNew.setDataId(payWorkingGroupDistributionRecord.getDataId()); + payWorkingGroupDistributionRecordNew.setProjectId(payWorkingGroupDistributionRecord.getProjectId()); + payWorkingGroupDistributionRecordNew.setProjectType(payWorkingGroupDistributionRecord.getProjectType()); + payWorkingGroupDistributionRecordNew.setFileId(byId.getId()); + payWorkingGroupDistributionRecordNew.setSubId(p.getSubitemId()); + payWorkingGroupDistributionRecordNew.setContactsId(p.getContactsId()); + //payWorkingGroupDistributionRecordNew.setContactsName(p.getContactsTemporaryName()); + //payWorkingGroupDistributionRecordNew.setTemporaryContactsId(p.getContactsTemporaryId()); + listPayWorkingGroupDistributionRecord.add(payWorkingGroupDistributionRecordNew); + }); + } + } } diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/message/handle/impl/EmailSendMsgHandle.java b/jero-boot-module-system/src/main/java/com/jero/modules/message/handle/impl/EmailSendMsgHandle.java index 4f2bcfbe..933ee705 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/message/handle/impl/EmailSendMsgHandle.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/message/handle/impl/EmailSendMsgHandle.java @@ -5,6 +5,7 @@ import com.jero.common.util.SpringContextUtils; import com.jero.common.util.oConvertUtils; import com.jero.config.StaticConfig; import com.jero.modules.message.handle.ISendMsgHandle; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -20,7 +21,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Properties; - +@Slf4j public class EmailSendMsgHandle implements ISendMsgHandle { static String emailFrom; private String email; @@ -94,6 +95,7 @@ public class EmailSendMsgHandle implements ISendMsgHandle { // helper.addAttachment(attachmentsMailNameDispose(uploadEXECL), file); // helper.addAttachment(attachmentsMailNameDispose(uploadCAD), file); mailSender.send(message); + log.info("发送邮件成功"); } catch (MessagingException e) { e.printStackTrace(); } @@ -178,6 +180,7 @@ public class EmailSendMsgHandle implements ISendMsgHandle { } } mailSender.send(message); + log.info("发送邮件和文件成功"); } } }catch (MessagingException e) { diff --git a/nginxConfig/prod/nginx.conf b/nginxConfig/prod/nginx.conf index d4db0725..bc3698e8 100644 --- a/nginxConfig/prod/nginx.conf +++ b/nginxConfig/prod/nginx.conf @@ -24,6 +24,12 @@ http { # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; + log_format access-upstream '$time_iso8601|$request|$remote_addr|$upstream_response_time|$http_user_agent|$http_x_forwarded_for'; + map $time_iso8601 $logdate { + '~^(?\d{4}-\d{2}-\d{2})' $ymd; + default 'date-not-found'; + } + access_log logs/access-$logdate.log ; sendfile on; #tcp_nopush on; @@ -31,7 +37,7 @@ http { #keepalive_timeout 0; keepalive_timeout 1000s; proxy_read_timeout 1000s; - client_max_body_size 50m; + client_max_body_size 100m; #gzip on; # 企业端 server { @@ -56,22 +62,15 @@ http { location / { root D:/income_payments/UI_enterprise/enterprise; - #try_files $uri $uri/ /index.html; + index index.html index.htm; + try_files $uri $uri/ /index.html; proxy_read_timeout 150s; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; add_header 'Referrer-Policy' 'origin'; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; - #add_header X-Frame-Options "ALLOW-FROM http://casa.catarc.org.cn:7008/"; - #add_header Strict-Transport-Security "max-age=16070400;"; - index index.html index.htm; -# root html; -# index index.html index.htm; - if (!-e $request_filename) { - rewrite ^(.*)$ /index.html?s=$1 last; - break; - } + } location /jero-boot { @@ -79,6 +78,9 @@ http { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + location /jero-boot/actuator { + return 403; } #会员系统的后端 location /memberApi { @@ -87,6 +89,26 @@ http { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } + #拦截 getcorsfile 接口 + location /preview/getCorsFile { + return 403; + } + #拦截 deletefile 接口 + location /preview/deleteFile { + return 403; + } + #防止 kkfile 执行恶意代码 + location /preview/index { + return 403; + } + #拦截 deletefile 接口 + #通过 preview 接口允许访问 kkfile 预览 + location /preview { + proxy_pass http://127.0.0.1:8092; + proxy_set_header host $host; + proxy_set_header x-real-ip $remote_addr; + proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; + } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html @@ -137,6 +159,9 @@ http { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + location /jero-boot/actuator { + return 403; } # 请求大屏客户环境 location /zxd { @@ -271,6 +296,7 @@ http { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } + #error_page 404 /404.html; # redirect server error pages to the static page /50x.html @@ -283,21 +309,35 @@ http { } } - server { - listen 8092; - server_name localhost; - #charset koi8-r; - #access_log logs/host.access.log main; + server { + listen 8093; + server_name localhost; - location ^~ /getCorsFile { - return 404; - index index.html index.htm; - } - location ^~ / { - proxy_pass http://cwp.catarc.org.cn:8093/; - } - } + #charset koi8-r; + + #access_log logs/host.access.log main; + + location ^~ /getCorsFile { + return 404; + index index.html index.htm; + } + location /preview/getCorsFile { + return 403; + } + #拦截 deletefile 接口 + location /preview/deleteFile { + return 403; + } + #防止 kkfile 执行恶意代码 + location /preview/index { + return 403; + } + #拦截 deletefile 接口 + location /index { + return 403; + } + } }