TaskDetailsServiceImpl.java 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. package com.goafanti.techproject.service.impl;
  2. import com.goafanti.common.dao.*;
  3. import com.goafanti.common.model.*;
  4. import com.goafanti.core.mybatis.BaseMybatisDao;
  5. import com.goafanti.core.mybatis.page.Pagination;
  6. import com.goafanti.core.shiro.token.TokenManager;
  7. import com.goafanti.techproject.bo.TaskDetailsBo;
  8. import com.goafanti.techproject.service.TaskDetailsService;
  9. import org.apache.commons.beanutils.BeanUtils;
  10. import org.springframework.stereotype.Service;
  11. import javax.annotation.Resource;
  12. import java.math.BigDecimal;
  13. import java.math.RoundingMode;
  14. import java.time.LocalDate;
  15. import java.util.Date;
  16. import java.util.HashMap;
  17. import java.util.List;
  18. import java.util.Map;
  19. /**
  20. * 项目申报详情(TaskDetails)表服务实现类
  21. *
  22. * @author makejava
  23. * @since 2024-12-26 17:11:50
  24. */
  25. @Service("taskDetailsService")
  26. public class TaskDetailsServiceImpl extends BaseMybatisDao<TaskDetailsMapper> implements TaskDetailsService {
  27. @Resource
  28. private TaskDetailsMapper taskDetailsMapper;
  29. @Resource
  30. private TaskDetailsExtendMapper taskDetailsExtendMapper;
  31. @Resource
  32. private TaskDetailsSupplementMapper taskDetailsSupplementMapper;
  33. @Resource
  34. private TOrderNewMapper tOrderNewMapper;
  35. @Resource
  36. private TaskAnnualReportMapper taskAnnualReportMapper;
  37. @Override
  38. public Pagination<TaskDetails> list(TaskDetails taskDetails, Integer pageNo, Integer pageSize) {
  39. Map<String, Object> params = new HashMap<>();
  40. params.put("in", taskDetails);
  41. return (Pagination<TaskDetails>) findPage("findTaskDetailsList",
  42. "findTaskDetailsCount", params, pageNo, pageSize);
  43. }
  44. /**
  45. * 通过ID查询单条数据
  46. *
  47. * @param id 主键
  48. * @return 实例对象
  49. */
  50. @Override
  51. public TaskDetailsBo queryById(Integer id) {
  52. TaskDetailsBo taskDetailsBo = new TaskDetailsBo();
  53. TaskDetails taskDetails = this.taskDetailsMapper.selectById(id);
  54. TaskDetailsExtend taskDetailsExtend = taskDetailsExtendMapper.selectById(id);
  55. TaskDetailsSupplement taskDetailsSupplement = taskDetailsSupplementMapper.selectById(id);
  56. if (taskDetails != null){
  57. try {
  58. BeanUtils.copyProperties(taskDetailsBo,taskDetails );
  59. BeanUtils.copyProperties( taskDetailsBo,taskDetailsExtend);
  60. BeanUtils.copyProperties( taskDetailsBo,taskDetailsSupplement);
  61. } catch (Exception e) {
  62. e.printStackTrace();
  63. }
  64. }
  65. return taskDetailsBo;
  66. }
  67. /**
  68. * 新增数据
  69. *
  70. * @param taskDetails 实例对象
  71. * @return 实例对象
  72. */
  73. @Override
  74. public TaskDetailsBo insert(TaskDetails taskDetails, TaskDetailsExtend taskDetailsExtend, TaskDetailsSupplement taskDetailsSupp) {
  75. TOrderNew tOrderNew =tOrderNewMapper.selectByTid(taskDetails.getTid());
  76. taskDetails.setAid(TokenManager.getAdminId());
  77. taskDetails.setUid(tOrderNew.getBuyerId());
  78. Date date = new Date();
  79. taskDetails.setCreateTime(date);
  80. taskDetails.setUpdateTime(date);
  81. //数据计算
  82. countTaskDetails(taskDetails);
  83. this.taskDetailsMapper.insert(taskDetails);
  84. if (taskDetails.getId() != null) {
  85. taskDetailsExtend.setId(taskDetails.getId());
  86. taskDetailsSupp.setId(taskDetails.getId());
  87. taskDetailsExtendMapper.insert(taskDetailsExtend);
  88. taskDetailsSupplementMapper.insert(taskDetailsSupp);
  89. }
  90. TaskDetailsBo taskDetailsBo = new TaskDetailsBo();
  91. try {
  92. BeanUtils.copyProperties(taskDetailsBo,taskDetails );
  93. BeanUtils.copyProperties( taskDetailsBo,taskDetailsExtend);
  94. BeanUtils.copyProperties( taskDetailsBo,taskDetailsSupp);
  95. } catch (Exception e) {
  96. e.printStackTrace();
  97. }
  98. return taskDetailsBo;
  99. }
  100. private void countTaskDetails(TaskDetails taskDetails) {
  101. //计算人员占比
  102. if (taskDetails.getWorkersNumber()!=null||
  103. taskDetails.getTechnologyNumber()!=null){
  104. BigDecimal wn = BigDecimal.valueOf(taskDetails.getWorkersNumber());
  105. BigDecimal tn = BigDecimal.valueOf(taskDetails.getTechnologyNumber());
  106. BigDecimal res = tn.divide(wn,4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
  107. taskDetails.setWorkersRate(res.doubleValue());
  108. }
  109. //计算年度研发占比
  110. //计算三年度的研发占比
  111. if(taskDetails.getRdBudget() !=null ||
  112. taskDetails.getRdSalesAmount() !=null){
  113. BigDecimal rdBudget = taskDetails.getRdBudget();
  114. BigDecimal rdSalesAmount = taskDetails.getRdSalesAmount();
  115. BigDecimal res = rdBudget.divide(rdSalesAmount, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
  116. taskDetails.setRdBudgetRate(res.doubleValue());
  117. //计算三年度的研发占比
  118. LocalDate now = LocalDate.now();
  119. int year = now.getYear();
  120. List<TaskAnnualReport> taskAnnualReports = taskAnnualReportMapper.selectThreeYear(taskDetails.getTid(), year);
  121. if (taskAnnualReports.size()==2){
  122. BigDecimal threeYearsRdSalesAmount = rdSalesAmount;
  123. BigDecimal threeYearsRdBudget = rdBudget;
  124. for (TaskAnnualReport e : taskAnnualReports) {
  125. threeYearsRdBudget.add(e.getResearchAmount());
  126. threeYearsRdSalesAmount.add(e.getSalesAmount());
  127. }
  128. BigDecimal res2 = threeYearsRdBudget.divide(threeYearsRdSalesAmount, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
  129. taskDetails.setThreeYearsRdBudgetRate(res2.doubleValue());
  130. }
  131. }
  132. }
  133. /**
  134. * 修改数据
  135. *
  136. * @param taskDetails 实例对象
  137. * @return 实例对象
  138. */
  139. @Override
  140. public TaskDetailsBo update(TaskDetails taskDetails, TaskDetailsExtend taskDetailsExtend, TaskDetailsSupplement taskDetailsSupp) {
  141. if (taskDetails.getId()!=null){
  142. taskDetailsExtend.setId(taskDetails.getId());
  143. taskDetailsSupp.setId(taskDetails.getId());
  144. this.taskDetailsMapper.update(taskDetails);
  145. taskDetailsExtendMapper.update(taskDetailsExtend);
  146. taskDetailsSupplementMapper.update(taskDetailsSupp);
  147. }
  148. return this.queryById(taskDetails.getId());
  149. }
  150. /**
  151. * 通过主键删除数据
  152. *
  153. * @param id 主键
  154. * @return 是否成功
  155. */
  156. @Override
  157. public boolean deleteById(Integer id) {
  158. this.taskDetailsMapper.deleteById(id);
  159. taskDetailsExtendMapper.deleteById(id);
  160. taskDetailsSupplementMapper.deleteById(id);
  161. return true;
  162. }
  163. }