diff --git a/_self/manager_meeting_new.md b/_self/manager_meeting_new.md index dbb8889..b9b517a 100644 --- a/_self/manager_meeting_new.md +++ b/_self/manager_meeting_new.md @@ -7,6 +7,26 @@ --- +## 修复记录 (2026-08-18 第二次审查时落实) + +| # | 问题 | 修复 | 状态 | +|---|---|---|---| +| P0#1 | mapper INSERT 只插 meeting_id | `BizMeetingMapper.xml:43-87` 扩 20 列 `` | ✅ | +| P0#2 | businessId DDL NOT NULL 前端无字段 | `BizMeetingServiceImpl:24-26` 兜底 `IdGenerator.generateId()` | ✅ | +| P0#3 | form 没 projectId (只 projectNo) | `MeetingNew.vue:88-105` onMounted 回填 projectId/projectName | ✅ | +| P1#4 | "会议ID" 输入框让用户填 PK | 删 field + 删 rule | ✅ | +| P1#5 | 6 个项目只读快照全缺失 | 加 el-descriptions (项目编号/名称/形式/开始时间/创建人/创建时间) | ✅ | +| P1#6 | 会议名称默认 = 项目名称 | onMounted 回填 + 字段 disabled + 红字提示 | ✅ | +| P1#7 | meetingId String → Long | 6 文件: BizMeeting.java + Mapper.java + ServiceImpl.java + Controller.java + IBizMeetingService.java + Mapper.xml | ✅ | +| P1#8 | supervisionTime String → Date | BizMeeting.java 加 `@JsonFormat` + Date | ✅ | +| P2#9 | 面包屑不一致 | 改 "项目列表 / 新建会议" | ✅ | +| P2#10 | page-sub 显示原始 ID "13" | 改成 "{projectName} ({projectNo})" | ✅ | +| P2#11 | 当前阶段 el-select 4 → 10 选项 | 补 待监管/监管通过/待整改/待结算/已结算/已结题 | ✅ | +| P2#12 | resultMap 漏字段 | BizMeetingMapper.xml:4-28 补 9 个 result | ✅ | +| P2#13 | selectFields SQL 漏字段 | BizMeetingMapper.xml:30 补 9 列 | ✅ | + +--- + ## 0. 4 跳定位 (铁律: 不按名字猜) | 跳 | 文件:行 | 结果 | diff --git a/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizMeetingController.java b/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizMeetingController.java index 50ea44f..cfad8fd 100644 --- a/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizMeetingController.java +++ b/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizMeetingController.java @@ -28,7 +28,7 @@ public class BizMeetingController extends BaseController return getDataTable(list); } @GetMapping("/{meetingId}") - public AjaxResult getInfo(@PathVariable("meetingId") String meetingId) + public AjaxResult getInfo(@PathVariable("meetingId") Long meetingId) { return success(bizMeetingService.getById(meetingId)); } @@ -46,7 +46,7 @@ public class BizMeetingController extends BaseController } @Log(title = "会议", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable String[] ids) + public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(bizMeetingService.deleteByPrimaryKeys(ids)); } diff --git a/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/domain/BizMeeting.java b/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/domain/BizMeeting.java index 44d1ecf..0b4887f 100644 --- a/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/domain/BizMeeting.java +++ b/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/domain/BizMeeting.java @@ -9,8 +9,8 @@ import com.ruoyi.common.core.domain.BaseEntity; /** 会议对象 BizMeeting */ public class BizMeeting extends BaseEntity { private static final long serialVersionUID = 1L; - /** meetingId */ - private String meetingId; + /** meetingId (与 DB bigint 对齐, AUTO_INCREMENT) */ + private Long meetingId; /** project_no */ @Excel(name = "project_no") private String projectNo; @@ -64,16 +64,17 @@ public class BizMeeting extends BaseEntity { private String supervisionOpinion; /** 监察人 */ private String supervisionBy; - /** 监察时间 */ - private String supervisionTime; + /** 监察时间 (与 DB datetime 对齐) */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date supervisionTime; /** 邀请函URL */ private String invitationUrl; /** 日程海报URL */ private String scheduleUrl; /** 签署劳务 0未签 1已签 */ private String laborSigned; - public String getMeetingId() { return meetingId; } - public void setMeetingId(String meetingId) { this.meetingId = meetingId; } + public Long getMeetingId() { return meetingId; } + public void setMeetingId(Long meetingId) { this.meetingId = meetingId; } public String getProjectNo() { return projectNo; } public void setProjectNo(String projectNo) { this.projectNo = projectNo; } public String getBusinessId() { return businessId; } diff --git a/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/mapper/BizMeetingMapper.java b/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/mapper/BizMeetingMapper.java index 506d9e3..8ec92b6 100644 --- a/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/mapper/BizMeetingMapper.java +++ b/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/mapper/BizMeetingMapper.java @@ -7,10 +7,10 @@ import com.ruoyi.business.domain.BizMeeting; */ public interface BizMeetingMapper { - BizMeeting selectByPrimaryKey(String meetingId); + BizMeeting selectByPrimaryKey(Long meetingId); List selectList(BizMeeting entity); int insert(BizMeeting entity); int updateByPrimaryKey(BizMeeting entity); - int deleteByPrimaryKey(String meetingId); - int deleteByPrimaryKeys(String[] meetingIds); + int deleteByPrimaryKey(Long meetingId); + int deleteByPrimaryKeys(Long[] meetingIds); } \ No newline at end of file diff --git a/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/service/IBizMeetingService.java b/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/service/IBizMeetingService.java index 4a58959..93a301b 100644 --- a/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/service/IBizMeetingService.java +++ b/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/service/IBizMeetingService.java @@ -8,10 +8,10 @@ import com.ruoyi.business.domain.BizMeeting; */ public interface IBizMeetingService { - BizMeeting getById(String meetingId); + BizMeeting getById(Long meetingId); List selectList(BizMeeting entity); int insert(BizMeeting entity); int updateByPrimaryKey(BizMeeting entity); - int deleteByPrimaryKey(String meetingId); - int deleteByPrimaryKeys(String[] meetingId); + int deleteByPrimaryKey(Long meetingId); + int deleteByPrimaryKeys(Long[] meetingId); } diff --git a/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BizMeetingServiceImpl.java b/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BizMeetingServiceImpl.java index 4dc2939..b6c9740 100644 --- a/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BizMeetingServiceImpl.java +++ b/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BizMeetingServiceImpl.java @@ -6,6 +6,7 @@ import org.springframework.stereotype.Service; import com.ruoyi.business.domain.BizMeeting; import com.ruoyi.business.mapper.BizMeetingMapper; import com.ruoyi.business.service.IBizMeetingService; +import com.ruoyi.common.utils.id.IdGenerator; @Service public class BizMeetingServiceImpl implements IBizMeetingService @@ -14,20 +15,27 @@ public class BizMeetingServiceImpl implements IBizMeetingService private BizMeetingMapper bizMeetingMapper; @Override - public BizMeeting getById(String meetingId) + public BizMeeting getById(Long meetingId) { return bizMeetingMapper.selectByPrimaryKey(meetingId); } @Override public List selectList(BizMeeting entity) { return bizMeetingMapper.selectList(entity); } @Override - public int insert(BizMeeting entity) { com.ruoyi.common.utils.id.SnowflakeId.injectIfEmpty(entity, "meetingId"); return bizMeetingMapper.insert(entity); } + public int insert(BizMeeting entity) { + // meetingId 走 DB AUTO_INCREMENT (BizProject 同模式: SnowflakeId.injectIfEmpty 对 Long setter 会 NoSuchMethodException 被吞掉, 无副作用); + // businessId DDL NOT NULL UNIQUE, 前端无字段, 兜底用雪花 ID 字符串 (跟 meetingId 同源, 保证唯一) + if (entity.getBusinessId() == null || entity.getBusinessId().isEmpty()) { + entity.setBusinessId(String.valueOf(IdGenerator.generateId())); + } + return bizMeetingMapper.insert(entity); + } @Override public int updateByPrimaryKey(BizMeeting entity) { return bizMeetingMapper.updateByPrimaryKey(entity); } @Override - public int deleteByPrimaryKey(String meetingId) + public int deleteByPrimaryKey(Long meetingId) { return bizMeetingMapper.deleteByPrimaryKey(meetingId); } @Override - public int deleteByPrimaryKeys(String[] meetingId) + public int deleteByPrimaryKeys(Long[] meetingId) { return bizMeetingMapper.deleteByPrimaryKeys(meetingId); } } diff --git a/ry-api/ruoyi-business/src/main/resources/mapper/business/BizMeetingMapper.xml b/ry-api/ruoyi-business/src/main/resources/mapper/business/BizMeetingMapper.xml index 83c0ddc..27ce737 100644 --- a/ry-api/ruoyi-business/src/main/resources/mapper/business/BizMeetingMapper.xml +++ b/ry-api/ruoyi-business/src/main/resources/mapper/business/BizMeetingMapper.xml @@ -3,25 +3,34 @@ - - + + + + + + - - + + + + + + + - select meeting_id, project_no, business_id, project_form, meeting_name, start_time, end_time, total_periods, period_no, current_stage, create_by, create_time, update_by, update_time + select meeting_id, business_id, project_id, project_no, project_name, meeting_name, period_no, total_periods, project_form, start_time, end_time, org_name, current_stage, supervision_opinion, supervision_by, supervision_time, invitation_url, schedule_url, labor_signed, create_by, create_time, update_by, update_time from biz_meeting - where meeting_id = #{meetingId} @@ -34,10 +43,46 @@ insert into biz_meeting - meeting_id, + meeting_id, + business_id, + project_id, + project_no, + project_name, + meeting_name, + period_no, + total_periods, + project_form, + start_time, + end_time, + org_name, + current_stage, + supervision_opinion, + supervision_by, + supervision_time, + invitation_url, + schedule_url, + labor_signed, - #{meetingId}, + #{meetingId}, + #{businessId}, + #{projectId}, + #{projectNo}, + #{projectName}, + #{meetingName}, + #{periodNo}, + #{totalPeriods}, + #{projectForm}, + #{startTime}, + #{endTime}, + #{orgName}, + #{currentStage}, + #{supervisionOpinion}, + #{supervisionBy}, + #{supervisionTime}, + #{invitationUrl}, + #{scheduleUrl}, + #{laborSigned}, @@ -64,10 +109,10 @@ where meeting_id = #{meetingId} - + delete from biz_meeting where meeting_id = #{meetingId} - + delete from biz_meeting where meeting_id in #{meetingId} diff --git a/ry-vue3/src/views/manager/MeetingNew.vue b/ry-vue3/src/views/manager/MeetingNew.vue index f1a18b4..39db39d 100644 --- a/ry-vue3/src/views/manager/MeetingNew.vue +++ b/ry-vue3/src/views/manager/MeetingNew.vue @@ -1,17 +1,33 @@