package com.kaidi.oa.seed; import com.kaidi.oa.domain.CultureMonthlyBriefing; import com.kaidi.oa.domain.HrCultureKpi; import com.kaidi.oa.repository.CultureMonthlyBriefingRepository; import com.kaidi.oa.repository.HrCultureKpiRepository; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import java.time.Instant; import java.util.ArrayList; import java.util.List; /** * 品牌推广部·项目文化 W8 缺口演示数据。 * * 缺口1(low):月刊电子版生成(CultureMonthlyBriefing)——历史简报+当月已生成各一条演示。 * 缺口2(low):KPI回写HR绩效(HrCultureKpi)——已写入2条+待写入1条,让「已写入历史」功能活体可见。 * * @Order(225) 在 BrandCultureGapSeeder(@Order 220) 之后运行,幂等(count>0跳过)。 */ @Component @Order(225) public class CultureBriefingKpiSeeder implements ApplicationRunner { private final CultureMonthlyBriefingRepository briefingRepo; private final HrCultureKpiRepository hrKpiRepo; public CultureBriefingKpiSeeder(CultureMonthlyBriefingRepository briefingRepo, HrCultureKpiRepository hrKpiRepo) { this.briefingRepo = briefingRepo; this.hrKpiRepo = hrKpiRepo; } @Override public void run(ApplicationArguments args) { seedBriefings(); seedHrCultureKpis(); } // ==================================================================== // 月刊电子版演示数据(CultureMonthlyBriefing) // ==================================================================== private void seedBriefings() { if (briefingRepo.count() > 0) return; List list = new ArrayList<>(); // 2026年3月刊 - 已发布 CultureMonthlyBriefing b1 = new CultureMonthlyBriefing(); b1.setCode("CMB-202603-001"); b1.setIssueTag("2026年第3期"); b1.setPublishMonth("2026-03"); b1.setTitle("凯迪科技项目简报 2026年第3期"); b1.setTaskTotal(18); b1.setTaskDone(15); b1.setTaskOverdue(1); b1.setNewStoryCount(6); b1.setNewMaterialCount(24); b1.setProjectCount(3); b1.setFeaturedProjects("PRJ-2026-001、PRJ-2026-002、PRJ-2025-003"); b1.setSummary("3月份项目宣传工作稳步推进,共完成15项宣传任务,完成率83.3%。南方水务PPP项目推出" + "「攻坚克难」系列专访共3篇,引发热烈反响。滨江EPC项目荣获客户高度赞誉," + "典型案例已录入案例库。北部生物质电厂技改项目顺利完工,文化建设获年度标杆评定。"); b1.setDistributeTarget("全员 / 南方水务PPP项目相关客户 / 滨江EPC项目业主方"); b1.setStatus("已发布"); b1.setGeneratedBy("系统自动生成"); b1.setPublishedBy("宣传部·李部长"); b1.setPublishDate("2026-04-01"); b1.setBriefingUrl("https://cdn.kaidi.com/culture-briefing/2026-03-issue.pdf"); b1.setCreatedAt(Instant.now()); list.add(b1); // 2026年4月刊 - 已发布 CultureMonthlyBriefing b2 = new CultureMonthlyBriefing(); b2.setCode("CMB-202604-001"); b2.setIssueTag("2026年第4期"); b2.setPublishMonth("2026-04"); b2.setTitle("凯迪科技项目简报 2026年第4期"); b2.setTaskTotal(22); b2.setTaskDone(19); b2.setTaskOverdue(0); b2.setNewStoryCount(8); b2.setNewMaterialCount(31); b2.setProjectCount(3); b2.setFeaturedProjects("PRJ-2026-001、PRJ-2026-002"); b2.setSummary("4月份各项目宣传任务完成率达86.4%,创近半年新高。新增8篇项目故事," + "其中「绿色施工先行者」荣获公司月度最佳故事奖。文化氛围调查回收率90%以上," + "综合满意度82分,较上季度提升2.5分。"); b2.setDistributeTarget("全员 / 相关客户"); b2.setStatus("已发布"); b2.setGeneratedBy("系统自动生成"); b2.setPublishedBy("宣传部·李部长"); b2.setPublishDate("2026-05-02"); b2.setBriefingUrl("https://cdn.kaidi.com/culture-briefing/2026-04-issue.pdf"); b2.setCreatedAt(Instant.now()); list.add(b2); // 2026年5月刊 - 已发布 CultureMonthlyBriefing b3 = new CultureMonthlyBriefing(); b3.setCode("CMB-202605-001"); b3.setIssueTag("2026年第5期"); b3.setPublishMonth("2026-05"); b3.setTitle("凯迪科技项目简报 2026年第5期"); b3.setTaskTotal(20); b3.setTaskDone(17); b3.setTaskOverdue(2); b3.setNewStoryCount(5); b3.setNewMaterialCount(18); b3.setProjectCount(2); b3.setFeaturedProjects("PRJ-2026-001、PRJ-2026-002"); b3.setSummary("5月份宣传任务总量20项,完成17项,完成率85%。2项任务因项目现场条件变化延期," + "已协调宣传员重新排期。本月新增5篇已发布项目故事,素材库新增18份材料。" + "Q2文化氛围调查正在收集中,截至月底回收率已超50%。"); b3.setDistributeTarget("全员 / 相关客户"); b3.setStatus("已发布"); b3.setGeneratedBy("系统自动生成"); b3.setPublishedBy("宣传部·王主任"); b3.setPublishDate("2026-06-03"); b3.setBriefingUrl("https://cdn.kaidi.com/culture-briefing/2026-05-issue.pdf"); b3.setCreatedAt(Instant.now()); list.add(b3); // 2026年6月刊 - 已生成(本月,待发布) CultureMonthlyBriefing b4 = new CultureMonthlyBriefing(); b4.setCode("CMB-202606-001"); b4.setIssueTag("2026年第6期"); b4.setPublishMonth("2026-06"); b4.setTitle("凯迪科技项目简报 2026年第6期"); b4.setTaskTotal(24); b4.setTaskDone(12); b4.setTaskOverdue(1); b4.setNewStoryCount(4); b4.setNewMaterialCount(9); b4.setProjectCount(3); b4.setFeaturedProjects("PRJ-2026-001、PRJ-2026-002、PRJ-2025-003"); b4.setSummary("6月份宣传工作正在进行中,截至月底(预计)将完成24项任务中的20余项。" + "Q2文化评估调查结束,综合满意度待最终统计。本期将重点报道南方水务项目" + "「一线感人故事」专题。"); b4.setDistributeTarget("全员 / 南方水务PPP项目相关客户"); b4.setStatus("已生成"); b4.setGeneratedBy("系统自动生成"); b4.setCreatedAt(Instant.now()); list.add(b4); briefingRepo.saveAll(list); } // ==================================================================== // HR 年度绩效文化 KPI 演示数据(HrCultureKpi) // ==================================================================== private void seedHrCultureKpis() { if (hrKpiRepo.count() > 0) return; List list = new ArrayList<>(); // 2025年度 北部生物质电厂 - 已写入(优秀,完整历史记录) HrCultureKpi k1 = new HrCultureKpi(); k1.setCode("HCK-2025-001"); k1.setAssessYear("2025"); k1.setProjectCode("PRJ-2025-003"); k1.setProjectName("北部生物质电厂技改项目"); k1.setCulturalOfficer("刘宇航"); k1.setCultureTotalScore(88.5); k1.setCultureGrade("优秀"); k1.setFusedSatisfaction(88.15); k1.setHrSatisfaction(89.2); k1.setWriteTarget("HR年度绩效·项目文化KPI项"); k1.setKpiWeight(10); k1.setKpiContribution(8.85); k1.setConfirmedBy("人力资源部·张经理"); k1.setConfirmedAt(Instant.parse("2026-01-15T09:00:00Z")); k1.setRemark("项目文化建设成效突出,已作为公司文化标杆,建议纳入年度最佳案例表彰。"); k1.setStatus("已写入"); k1.setCreatedAt(Instant.parse("2026-01-10T08:00:00Z")); list.add(k1); // 2026年度 南方水务PPP项目 - 待写入(当年,Q2评估完成后待HR确认) HrCultureKpi k2 = new HrCultureKpi(); k2.setCode("HCK-2026-001"); k2.setAssessYear("2026"); k2.setProjectCode("PRJ-2026-001"); k2.setProjectName("南方水务污水处理PPP项目"); k2.setCulturalOfficer("王晓峰"); k2.setCultureTotalScore(79.3); k2.setCultureGrade("良好"); k2.setFusedSatisfaction(82.6); k2.setHrSatisfaction(83.2); k2.setWriteTarget("HR年度绩效·项目文化KPI项"); k2.setKpiWeight(10); k2.setKpiContribution(7.93); k2.setRemark("Q2数据:文化氛围问卷82分,HR满意度83.2分,融合满意度82.6分。待年底最终确认。"); k2.setStatus("待写入"); k2.setCreatedAt(Instant.now()); list.add(k2); // 2026年度 滨江工业废水EPC项目 - 待写入 HrCultureKpi k3 = new HrCultureKpi(); k3.setCode("HCK-2026-002"); k3.setAssessYear("2026"); k3.setProjectCode("PRJ-2026-002"); k3.setProjectName("滨江工业废水处理EPC项目"); k3.setCulturalOfficer("陈美珍"); k3.setCultureTotalScore(65.8); k3.setCultureGrade("合格"); k3.setFusedSatisfaction(75.15); k3.setHrSatisfaction(74.8); k3.setWriteTarget("HR年度绩效·项目文化KPI项"); k3.setKpiWeight(10); k3.setKpiContribution(6.58); k3.setRemark("满意度得分偏低,建议加强项目文化活动开展频次,目标Q3满意度提升至80+。"); k3.setStatus("待写入"); k3.setCreatedAt(Instant.now()); list.add(k3); hrKpiRepo.saveAll(list); } }