|
|
@@ -1,13 +1,7 @@
|
|
|
package com.goafanti.techproject.service.impl;
|
|
|
|
|
|
-import com.goafanti.common.dao.TOrderNewMapper;
|
|
|
-import com.goafanti.common.dao.TaskDetailsExtendMapper;
|
|
|
-import com.goafanti.common.dao.TaskDetailsMapper;
|
|
|
-import com.goafanti.common.dao.TaskDetailsSupplementMapper;
|
|
|
-import com.goafanti.common.model.TOrderNew;
|
|
|
-import com.goafanti.common.model.TaskDetails;
|
|
|
-import com.goafanti.common.model.TaskDetailsExtend;
|
|
|
-import com.goafanti.common.model.TaskDetailsSupplement;
|
|
|
+import com.goafanti.common.dao.*;
|
|
|
+import com.goafanti.common.model.*;
|
|
|
import com.goafanti.core.mybatis.BaseMybatisDao;
|
|
|
import com.goafanti.core.mybatis.page.Pagination;
|
|
|
import com.goafanti.core.shiro.token.TokenManager;
|
|
|
@@ -19,8 +13,10 @@ import org.springframework.stereotype.Service;
|
|
|
import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
+import java.time.LocalDate;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
@@ -39,6 +35,8 @@ public class TaskDetailsServiceImpl extends BaseMybatisDao<TaskDetailsMapper> im
|
|
|
private TaskDetailsSupplementMapper taskDetailsSupplementMapper;
|
|
|
@Resource
|
|
|
private TOrderNewMapper tOrderNewMapper;
|
|
|
+ @Resource
|
|
|
+ private TaskAnnualReportMapper taskAnnualReportMapper;
|
|
|
|
|
|
|
|
|
@Override
|
|
|
@@ -88,14 +86,8 @@ public class TaskDetailsServiceImpl extends BaseMybatisDao<TaskDetailsMapper> im
|
|
|
Date date = new Date();
|
|
|
taskDetails.setCreateTime(date);
|
|
|
taskDetails.setUpdateTime(date);
|
|
|
- if (taskDetails.getWorkersNumber()!=null||
|
|
|
- taskDetails.getTechnologyNumber()!=null){
|
|
|
- BigDecimal wn = BigDecimal.valueOf(taskDetails.getWorkersNumber());
|
|
|
- BigDecimal tn = BigDecimal.valueOf(taskDetails.getTechnologyNumber());
|
|
|
- BigDecimal divide = tn.divide(wn,4, RoundingMode.HALF_UP);
|
|
|
- taskDetails.setWorkersRate(divide.doubleValue());
|
|
|
- }
|
|
|
-
|
|
|
+ //数据计算
|
|
|
+ countTaskDetails(taskDetails);
|
|
|
this.taskDetailsMapper.insert(taskDetails);
|
|
|
if (taskDetails.getId() != null) {
|
|
|
taskDetailsExtend.setId(taskDetails.getId());
|
|
|
@@ -114,6 +106,42 @@ public class TaskDetailsServiceImpl extends BaseMybatisDao<TaskDetailsMapper> im
|
|
|
return taskDetailsBo;
|
|
|
}
|
|
|
|
|
|
+ private void countTaskDetails(TaskDetails taskDetails) {
|
|
|
+ //计算人员占比
|
|
|
+ if (taskDetails.getWorkersNumber()!=null||
|
|
|
+ taskDetails.getTechnologyNumber()!=null){
|
|
|
+ BigDecimal wn = BigDecimal.valueOf(taskDetails.getWorkersNumber());
|
|
|
+ BigDecimal tn = BigDecimal.valueOf(taskDetails.getTechnologyNumber());
|
|
|
+ BigDecimal res = tn.divide(wn,4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
|
|
|
+ taskDetails.setWorkersRate(res.doubleValue());
|
|
|
+ }
|
|
|
+ //计算年度研发占比
|
|
|
+ //计算三年度的研发占比
|
|
|
+ if(taskDetails.getRdBudget() !=null ||
|
|
|
+ taskDetails.getRdSalesAmount() !=null){
|
|
|
+ BigDecimal rdBudget = taskDetails.getRdBudget();
|
|
|
+ BigDecimal rdSalesAmount = taskDetails.getRdSalesAmount();
|
|
|
+ BigDecimal res = rdBudget.divide(rdSalesAmount, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
|
|
|
+ taskDetails.setRdBudgetRate(res.doubleValue());
|
|
|
+ //计算三年度的研发占比
|
|
|
+ LocalDate now = LocalDate.now();
|
|
|
+ int year = now.getYear();
|
|
|
+ List<TaskAnnualReport> taskAnnualReports = taskAnnualReportMapper.selectThreeYear(taskDetails.getTid(), year);
|
|
|
+ if (taskAnnualReports.size()==2){
|
|
|
+ BigDecimal threeYearsRdSalesAmount = rdSalesAmount;
|
|
|
+ BigDecimal threeYearsRdBudget = rdBudget;
|
|
|
+ for (TaskAnnualReport e : taskAnnualReports) {
|
|
|
+ threeYearsRdBudget.add(e.getResearchAmount());
|
|
|
+ threeYearsRdSalesAmount.add(e.getSalesAmount());
|
|
|
+ }
|
|
|
+ BigDecimal res2 = threeYearsRdBudget.divide(threeYearsRdSalesAmount, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
|
|
|
+ taskDetails.setThreeYearsRdBudgetRate(res2.doubleValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 修改数据
|
|
|
*
|