BaseExpertServiceImpl.java 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. package com.ozs.base.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  7. import com.github.pagehelper.PageHelper;
  8. import com.github.pagehelper.PageInfo;
  9. import com.ozs.base.domain.BaseExpert;
  10. import com.ozs.base.domain.BaseUnitInformation;
  11. import com.ozs.base.domain.vo.BaseExpertVo;
  12. import com.ozs.base.mapper.BaseExpertMapper;
  13. import com.ozs.base.service.BaseExpertService;
  14. import com.ozs.common.core.domain.AjaxResult;
  15. import com.ozs.common.enums.*;
  16. import com.ozs.common.utils.StringUtils;
  17. import com.ozs.common.utils.bean.BeanUtils;
  18. import com.ozs.plan.doman.PlanQuarter;
  19. import com.ozs.plan.doman.ProvisionalPlan;
  20. import com.ozs.pm.doman.PmDemand;
  21. import com.ozs.pm.doman.PmDemandExpertRef;
  22. import com.ozs.pm.doman.vo.responseVo.PmDemandResVo;
  23. import com.ozs.pm.service.IPmDemandService;
  24. import com.ozs.pm.service.PmDemandExpertRefService;
  25. import com.ozs.system.domain.vo.responseVo.SysDeptResponseVo;
  26. import com.ozs.system.service.ISysDeptService;
  27. import com.ozs.system.service.ISysDictDataService;
  28. import org.springframework.beans.factory.annotation.Autowired;
  29. import org.springframework.stereotype.Service;
  30. import org.springframework.util.ObjectUtils;
  31. import java.util.ArrayList;
  32. import java.util.Date;
  33. import java.util.List;
  34. import java.util.Map;
  35. import java.util.stream.Collectors;
  36. @Service
  37. public class BaseExpertServiceImpl extends ServiceImpl<BaseExpertMapper, BaseExpert> implements BaseExpertService {
  38. @Autowired
  39. private BaseExpertMapper baseExpertMapper;
  40. @Autowired
  41. private PmDemandExpertRefService pmDemandExpertRefService;
  42. @Autowired
  43. private IPmDemandService pmDemandService;
  44. @Autowired
  45. private ISysDeptService deptService;
  46. @Autowired
  47. private ISysDictDataService dictDataService;
  48. @Override
  49. public int insertExpert(BaseExpertVo baseExpertVo) {
  50. // base_unit_information 单位信息表
  51. if (StringUtils.isNotNull(baseExpertVo.getUnitInformation())) {
  52. List<BaseUnitInformation> baseUnitInformationList = baseExpertMapper.selectByUnitInformation(baseExpertVo.getUnitInformation());
  53. if (baseUnitInformationList.size() <= 0) {
  54. BaseUnitInformation baseUnitInformation = new BaseUnitInformation();
  55. baseUnitInformation.setUnitName(baseExpertVo.getUnitInformation());
  56. baseUnitInformation.setCreated(baseExpertVo.getExpertName());
  57. baseUnitInformation.setCreateTime(new Date());
  58. Integer i = baseExpertMapper.insertBaseUnitInformation(baseUnitInformation);
  59. }
  60. }
  61. // 区域list转字符串
  62. if (StringUtils.isNotNull(baseExpertVo.getLocalAreaList())) {
  63. // String stringFromList = String.join(",", baseExpertVo.getLocalAreaList());
  64. baseExpertVo.setLocalArea(baseExpertVo.getLocalAreaList().get(baseExpertVo.getLocalAreaList().size() - 1));
  65. }
  66. return baseExpertMapper.insertExpert(baseExpertVo);
  67. }
  68. @Override
  69. public int updateSupplierType(BaseExpert baseExpert) {
  70. LambdaUpdateWrapper<BaseExpert> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
  71. //eq是指你查询的条件,set是指你修改的值
  72. lambdaUpdateWrapper
  73. .eq(BaseExpert::getId, baseExpert.getId())
  74. .set(BaseExpert::getStatus, baseExpert.getStatus());
  75. return baseExpertMapper.update(null, lambdaUpdateWrapper);
  76. }
  77. @Override
  78. public AjaxResult selectReviewProject(BaseExpertVo baseExpertVo) {
  79. // 通过专家ID查询 与专家库关联的采购执行管理ID
  80. List<Integer> demandIdList = pmDemandExpertRefService.selectByExpertId(baseExpertVo.getId());
  81. if (ObjectUtils.isEmpty(demandIdList)) {
  82. return AjaxResult.success(new PageInfo<>(demandIdList));
  83. }
  84. List<PmDemand> pmDemandList = pmDemandService.selectByDemandIdList(demandIdList);
  85. List<PmDemandResVo> pmDemandResponseVoList = changTo(pmDemandList);
  86. PageHelper.startPage(baseExpertVo.getPageNum().intValue(), baseExpertVo.getPageSize().intValue());
  87. PageInfo<PmDemandResVo> pageInfo = new PageInfo<>(pmDemandResponseVoList);
  88. return AjaxResult.success(pageInfo);
  89. }
  90. @Override
  91. public AjaxResult selectExtractionExpert(BaseExpertVo baseExpertVo) {
  92. // 查询抽取过专家的项目列表
  93. List<PmDemand> pmDemandList = pmDemandService.selectExtractionExpert(baseExpertVo);
  94. List<PmDemandResVo> pmDemandResponseVoList = changTo(pmDemandList);
  95. // 遍历项目 查询专家姓名
  96. for (PmDemandResVo pmDemandResVo : pmDemandResponseVoList) {
  97. Long demandId = pmDemandResVo.getDemandId();
  98. // 查询项目专家关联表 专家ID,关联时间
  99. List<PmDemandExpertRef> pmDemandExpertRefList = baseExpertMapper.getExpertIdList(demandId);
  100. // 专家ID列表
  101. List<Long> expertList= pmDemandExpertRefList.stream().map(PmDemandExpertRef::getExpertId).collect(Collectors.toList());
  102. // 获取抽取时间(列表中取其中一个时间)
  103. Date accessTime = pmDemandExpertRefList.get(0).getAccessTime();
  104. Map<String, String> map = baseExpertMapper.getExpertNameList(expertList);
  105. String expertNameStr = map.get("expertName");
  106. String varietyPurchaseStr = map.get("varietyPurchase");
  107. pmDemandResVo.setExpertNameStr(expertNameStr);
  108. pmDemandResVo.setVarietyPurchaseStr(varietyPurchaseStr);
  109. pmDemandResVo.setAccessTime(accessTime);
  110. }
  111. PageHelper.startPage(baseExpertVo.getPageNum().intValue(), baseExpertVo.getPageSize().intValue());
  112. PageInfo<PmDemandResVo> pageInfo = new PageInfo<>(pmDemandResponseVoList);
  113. return AjaxResult.success(pageInfo);
  114. }
  115. private List<PmDemandResVo> changTo(List<PmDemand> pmDemandList) {
  116. List<PmDemandResVo> pmDemandResponseVoList = new ArrayList<>();
  117. if (pmDemandList != null && pmDemandList.size() > 0) {
  118. for (PmDemand pmDemand1 : pmDemandList) {
  119. PmDemandResVo vo = new PmDemandResVo();
  120. BeanUtils.copyProperties(pmDemand1, vo);
  121. if (vo.getPurchaseDeptId() != null) {
  122. Map<String, Object> deptMap = deptService.selectDeptById(vo.getPurchaseDeptId());
  123. if (deptMap != null) {
  124. SysDeptResponseVo sysDeptResponseVo = (SysDeptResponseVo) deptMap.get("sysDept");
  125. if (sysDeptResponseVo != null) {
  126. vo.setPurchaseDeptName(sysDeptResponseVo.getDeptName());
  127. }
  128. }
  129. }
  130. String purchaseServicesName = dictDataService.selectDictLabel("purchase_services", vo.getPurchaseServices());
  131. if (StringUtils.isNotEmpty(purchaseServicesName)) {
  132. vo.setPurchaseServicesName(purchaseServicesName);
  133. }
  134. //项目类型
  135. for (ProjectTypes value : ProjectTypes.values()) {
  136. if (vo.getProjectType() != null && vo.getProjectType().equals(value.getCode())) {
  137. vo.setProjectTypeName(value.getInfo());
  138. break;
  139. }
  140. }
  141. //是否为超限额计划
  142. for (IsExcess value : IsExcess.values()) {
  143. if (vo.getIsExcess() != null && vo.getIsExcess().equals(value.getCode())) {
  144. vo.setIsExcessName(value.getInfo());
  145. break;
  146. }
  147. }
  148. //采购方式
  149. for (PlanPurchaseMode value : PlanPurchaseMode.values()) {
  150. if (vo.getPurchaseMode() != null && vo.getPurchaseMode().equals(value.getCode())) {
  151. vo.setPurchaseModeName(value.getInfo());
  152. break;
  153. }
  154. }
  155. //项目属性
  156. for (ProjectAttribute value : ProjectAttribute.values()) {
  157. if (vo.getProjectAttr() != null && vo.getProjectAttr().equals(value.getCode())) {
  158. vo.setProjectAttrName(value.getInfo());
  159. break;
  160. }
  161. }
  162. //预警状态
  163. for (WarnStatus value : WarnStatus.values()) {
  164. if (vo.getWarnStatus() != null && vo.getWarnStatus().equals(value.getCode())) {
  165. vo.setWarnStatusName(value.getInfo());
  166. break;
  167. }
  168. }
  169. //项目状态
  170. for (PmProjectStatus value : PmProjectStatus.values()) {
  171. if (vo.getProjectStatus() != null && vo.getProjectStatus().equals(value.getCode())) {
  172. vo.setProjectStatusName(value.getInfo());
  173. break;
  174. }
  175. }
  176. pmDemandResponseVoList.add(vo);
  177. }
  178. }
  179. return pmDemandResponseVoList;
  180. }
  181. }