package com.example.demo.service.impl;
import com.example.demo.entity.*;
import com.example.demo.mapper.*;
import com.example.demo.service.Budget;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.Date;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
/**
* Created with IntelliJ IDEA.
*
* @Author: tlj
* @Date: 2023/04/23/16:14
* @Description:
*/
@Service
public class BudgetImpl implements Budget {
@Autowired
SysMemberInformationMapper membersMapper;
@Autowired
AchievementMapper achievementMapper;
@Autowired
ProjectConclusionMapper conclusionMapper;
@Autowired
ThesisMapper thesisMapper;
@Autowired
AuthorshipMapper authorshipMapper;
@Autowired
PatentMapper patentMapper;
@Autowired
SoftwareMapper softwareMapper;
@Autowired
BudgetMapper budgetMapper;
@Override
public List<ResearchFunding> researchFunding(String name, Long work) {
//科研项目结题的数据,找到用户所参与的科研项目
List<SysMemberInformation> memberApplication = membersMapper.getMemberApplication(name, work);
//与项目结题数据进行比对
List<ResearchFunding> researchFundings=new ArrayList<>();
for(int i=0;i<memberApplication.size();i++){
String itemNumber = memberApplication.get(i).getItemNumber();
SysProjectConclusion close = conclusionMapper.getClose(itemNumber);
if(close!=null){
String projectName = close.getProjectName();
String projectLeader = close.getProjectLeader();
String academy = close.getAcademy();
String closeItemNumber = close.getItemNumber();
ResearchFunding funding=new ResearchFunding();
funding.setName(projectName);
funding.setLeader(projectLeader);
funding.setAcademy(academy);
funding.setItemNumber(closeItemNumber);
funding.setType("科研项目");
//判断项目是否申请
AchieveBudget budget = budgetMapper.havaItemNumber(closeItemNumber);
if(budget!=null){
String budgetArabic = budget.getBudgetArabic();
Integer academyAudit = budget.getAcademyAudit();
Integer budgetAudit = budget.getBudgetAudit();
String rejectReason = budget.getRejectReason();
String commentsBudget = budget.getCommentsBudget();
String newFunds = budget.getNewFunds();
funding.setBudgetArabic(budgetArabic);
funding.setAcademyAudit(academyAudit);
funding.setBudgetAudit(budgetAudit);
funding.setAuditReason(rejectReason);
funding.setCommentsBudget(commentsBudget);
funding.setNewFunds(newFunds);
researchFundings.add(funding);
}else {
funding.setBudgetArabic(null);
funding.setAcademyAudit(null);
funding.setBudgetAudit(null);
funding.setAuditReason(null);
funding.setCommentsBudget(null);
researchFundings.add(funding);
}
}
}
//论文成果类
List<SysAchievementMember> thesis = achievementMapper.getThesis(name, work);
for(int i=0;i<thesis.size();i++){
//取审核通过的
String itemNumber = thesis.get(i).getItemNumber();
SysThesisAchieve thesisBudgetFunding = thesisMapper.getThesisBudgetFunding(itemNumber);
if(thesisBudgetFunding!=null){
//存在已审核通过的论文成果
String thesisName = thesisBudgetFunding.getThesisName();
String firstAuthor = thesisBudgetFunding.getFirstAuthor();
String academy = thesisBudgetFunding.getAcademy();
String thesisItemNumber = thesisBudgetFunding.getItemNumber();
ResearchFunding funding=new ResearchFunding();
funding.setName(thesisName);
funding.setLeader(firstAuthor);
funding.setAcademy(academy);
funding.setItemNumber(thesisItemNumber);
funding.setType("论文成果");
//判断论文成果是否申请经费
AchieveBudget budget = budgetMapper.havaItemNumber(thesisItemNumber);
if(budget!=null){
String budgetArabic = budget.getBudgetArabic();
Integer academyAudit = budget.getAcademyAudit();
Integer budgetAudit = budget.getBudgetAudit();
String auditReason = budget.getRejectReason();
String commentsBudget = budget.getCommentsBudget();
funding.setBudgetArabic(budgetArabic);
funding.setAcademyAudit(academyAudit);
funding.setBudgetAudit(budgetAudit);
funding.setAuditReason(auditReason);
funding.setCommentsBudget(commentsBudget);
researchFundings.add(funding);
}else {
funding.setBudgetArabic(null);
funding.setAcademyAudit(null);
funding.setBudgetAudit(null);
funding.setAuditReason(null);
funding.setCommentsBudget(null);
researchFundings.add(funding);
}
}
}
//著作类
List<SysAchievementMember> authorship = achievementMapper.getAuthorship(name, work);
for(int i=0;i<authorship.size();i++){
String itemNumber = authorship.get(i).getItemNumber();
SysAuthorshipAchieve authorship1 = authorshipMapper.getAuthorship(itemNumber);
if(authorship1!=null){
String titleWork = authorship1.getTitleWork();
String firstAuthor = authorship1.getFirstAuthor();
String academy = authorship1.getAcademy();
String authorshipItemNumber = authorship1.getItemNumber();
ResearchFunding funding=new ResearchFunding();
funding.setName(titleWork);
funding.setLeader(firstAuthor);
funding.setAcademy(academy);
funding.setItemNumber(authorshipItemNumber);
funding.setType("著作成果");
AchieveBudget budget = budgetMapper.havaItemNumber(authorshipItemNumber);
if(budget!=null){
String budgetArabic = budget.getBudgetArabic();
Integer academyAudit = budget.getAcademyAudit();
Integer budgetAudit = budget.getBudgetAudit();
String auditReason = budget.getRejectReason();
String commentsBudget = budget.getCommentsBudget();
funding.setBudgetArabic(budgetArabic);
funding.setAcademyAudit(academyAudit);
funding.setBudgetAudit(budgetAudit);
funding.setAuditReason(auditReason);
funding.setCommentsBudget(commentsBudget);
researchFundings.add(funding);
}else {
funding.setBudgetArabic(null);
funding.setAcademyAudit(null);
funding.setBudgetAudit(null);
funding.setAuditReason(null);
funding.setCommentsBudget(null);
researchFundings.add
高校科研管理系统后端源码
需积分: 0 166 浏览量
更新于2023-06-12
收藏 474KB ZIP 举报
高校科研管理系统后端源码是用于管理高等教育机构科研活动的核心组件,它涵盖了科研项目的申报、审批、执行、结题、成果管理和资源分配等多个关键环节。这个系统通常采用现代软件开发技术构建,旨在提高科研管理效率,确保数据的安全性和准确性。在深入探讨这个系统的背后,我们需要了解以下几个关键知识点:
1. **后端开发技术**:后端源码主要负责处理服务器端逻辑,与数据库交互,以及提供API供前端调用。常见的后端开发语言包括Java、Python、Node.js和PHP等。对于高校科研管理系统,可能会选用稳定且性能优异的Java Spring Boot框架,结合MyBatis或Hibernate进行持久层操作。
2. **数据库设计**:系统中的数据管理是至关重要的。可能使用的数据库管理系统有MySQL、PostgreSQL或Oracle,用于存储项目信息、参与人员、经费分配、成果报告等数据。良好的数据库设计需要遵循 normalization 规则,以减少数据冗余并保证数据一致性。
3. **RESTful API**:为了实现前后端分离,后端通常会提供一套RESTful API接口,遵循HTTP协议的CRUD(创建、读取、更新、删除)操作,使得前端可以轻松地获取和更新数据。
4. **权限控制与安全**:在科研管理系统中,用户权限管理至关重要。OAuth 2.0、JWT(JSON Web Tokens)等机制可以用于实现用户身份验证和授权,确保只有授权用户才能访问和操作相应资源。
5. **并发处理与事务管理**:考虑到可能有多个用户同时操作,系统需要有效地处理并发请求,避免数据冲突。这可能涉及到数据库的事务管理,如ACID(原子性、一致性、隔离性、持久性)原则的应用。
6. **日志与监控**:为了追踪系统运行状态和异常,系统应集成日志记录(如Log4j或Logback)和性能监控工具(如Prometheus和Grafana),以便及时发现并解决问题。
7. **测试与部署**:单元测试、集成测试和压力测试是保证系统质量的重要步骤。持续集成/持续部署(CI/CD)工具,如Jenkins或GitLab CI/CD,可以自动化这些过程,提升开发效率。
8. **微服务架构**:大型科研管理系统可能采用微服务架构,将系统拆分为多个小型、独立的服务,每个服务都有自己的数据库和业务逻辑,通过API进行通信。这有利于系统的扩展和维护。
9. **云计算平台**:考虑到科研管理系统的规模和需求,可能部署在云平台上,如阿里云、AWS或Azure,以利用其弹性计算、存储和安全服务。
10. **数据分析与报表**:系统可能集成数据可视化工具(如ECharts或Tableau)生成各类科研报表,帮助管理层分析科研绩效、资金使用情况等,支持决策。
了解以上知识点,开发者可以更好地理解和重构高校科研管理系统的后端源码,以满足不同高校的特定需求,提升科研管理的数字化水平。
小小CaiNiao
- 粉丝: 1
- 资源: 2
最新资源
- (2025)计算机网络技术考试题库(含答案).doc
- (2025)监理工程师《合同管理》考试题库及答案.doc
- (2025)辐射安全与防护培训考试题库及答案.docx
- (2025)高压电工考试题库及答案.docx
- (2025)工业机器人技术题库及答案.docx
- (2025)工作票三种人资格工作许可人考试题库及答案.docx
- (2025)工业机器人系统操作员技术及理论知识竞赛试题库(附含答案).docx
- (2025)公司员工疫情防控知识考试题库及答案.docx
- (2025)公文写作基础知识试题库及答案.docx
- (2025)公文筐考试题库及答案.docx
- (2025)公务员结构化面试万能模板.docx
- (2025)公务员考试常用数学公式总结归纳.docx
- (2025)国家基层糖尿病防治管理指南认证考试试题及答案.docx
- (2025)国学经典知识竞赛题库及答案.docx
- (2025)汉字听写大会竞赛试题库及答案(通用版).docx
- (2025)过程气体事业部产品测试题及答案.docx