Files
ERP/oa-backend/src/main/java/com/kaidi/oa/seed/CultureBriefingKpiSeeder.java
T
QiufengandClaude Opus 4.8 5e51dc3f56 SNAPSHOT W7 已部署稳定态 — 凯迪ERP+OA一体化平台 (MET 73.3%)
恢复点(restore point)。别人改崩后可 git reset --hard 回到此提交。

== 此快照内容 ==
- 后端 oa-backend: 734 控制器 / 711 实体 (Spring Boot 3.2.5 + SQLite, 端口8091)
- 前端 modern-ui/app: Vue3+Vite, 约700页 (构建产物已在 oa-backend/src/main/resources/static)
- 数据库 oa-backend/data/oa.db: 含全部演示数据 (强制入库, 6.6MB)
- 交接文档 go.md + go-code-reference/endpoints/entities/database.md
- 多代理建设脚本 .claude/wf-*.js

== 状态 ==
- 对 凯迪科技ERP_20260507.xlsx 合规 MET ~73.3% (PARTIAL 75: 34可建+6种子/bug+35外部硬天花板)
- 安全: 5轮红队+5轮复检, default-deny分级鉴权, 连续零可利用
- W3~W7 累计补完436缺口; W8末轮(40缺口)为半成品(源码树可编译但未集成)
- 运行: cd oa-backend; java -jar build/libs/oa-backend-0.1.0.jar --server.port=8091; admin/123456

== 排除(gitignore, 可再生) ==
node_modules / oa-backend/build / .jdks / *.log / Backup-ERP-* / 弃用的OFBiz核心(只保留modern-ui)
完整文件夹备份见同目录 Backup-ERP-20260615-191517/ (含上述全部, 仅缺 node_modules)

时间戳: 20260615-191517

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 19:19:15 +08:00

221 lines
9.8 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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<CultureMonthlyBriefing> 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<HrCultureKpi> 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);
}
}