BaseExpertServiceImpl.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  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 com.ozs.system.service.ISysDictTypeService;
  29. import org.springframework.beans.factory.annotation.Autowired;
  30. import org.springframework.stereotype.Service;
  31. import org.springframework.util.ObjectUtils;
  32. import java.util.*;
  33. import java.util.stream.Collectors;
  34. @Service
  35. public class BaseExpertServiceImpl extends ServiceImpl<BaseExpertMapper, BaseExpert> implements BaseExpertService {
  36. @Autowired
  37. private BaseExpertMapper baseExpertMapper;
  38. @Autowired
  39. private PmDemandExpertRefService pmDemandExpertRefService;
  40. @Autowired
  41. private IPmDemandService pmDemandService;
  42. @Autowired
  43. private ISysDeptService deptService;
  44. @Autowired
  45. private ISysDictDataService dictDataService;
  46. @Autowired
  47. private ISysDictTypeService dictTypeService;
  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. if (!ObjectUtils.isEmpty(pmDemandResponseVoList) && pmDemandResponseVoList.size() > 0) {
  97. for (PmDemandResVo pmDemandResVo : pmDemandResponseVoList) {
  98. Long demandId = pmDemandResVo.getDemandId();
  99. // 查询项目专家关联表 专家ID,关联时间
  100. List<PmDemandExpertRef> pmDemandExpertRefList = baseExpertMapper.getExpertIdList(demandId);
  101. // 专家ID列表
  102. List<Long> expertList = pmDemandExpertRefList.stream().map(PmDemandExpertRef::getExpertId).collect(Collectors.toList());
  103. // 获取抽取时间(列表中取其中一个时间)
  104. Date accessTime = pmDemandExpertRefList.get(0).getAccessTime();
  105. Map<String, String> map = baseExpertMapper.getExpertNameList(expertList);
  106. if (!ObjectUtils.isEmpty(map)) {
  107. // 专家名称
  108. String expertNameStr = map.get("expertName");
  109. // 采购品种
  110. String varietyPurchaseStr = map.get("varietyPurchase");
  111. List<String> list = Arrays.stream(varietyPurchaseStr.split(",")).map(s -> String.valueOf(s.trim())).collect(Collectors.toList());
  112. List<String> newList = method(list);
  113. // 查询采购品种 中文
  114. String varietyPurchaseName = "";
  115. for (String i : newList) {
  116. String name = PurchaseType.getCodeToInfo(i);
  117. if ("".equals(varietyPurchaseName)) {
  118. varietyPurchaseName = name;
  119. } else {
  120. varietyPurchaseName = "," + name;
  121. }
  122. }
  123. pmDemandResVo.setExpertNameStr(expertNameStr);
  124. pmDemandResVo.setVarietyPurchaseStr(varietyPurchaseName);
  125. }
  126. pmDemandResVo.setAccessTime(accessTime);
  127. }
  128. }
  129. PageHelper.startPage(baseExpertVo.getPageNum().intValue(), baseExpertVo.getPageSize().intValue());
  130. PageInfo<PmDemandResVo> pageInfo = new PageInfo<>(pmDemandResponseVoList);
  131. return AjaxResult.success(pageInfo);
  132. }
  133. /**
  134. * 自定义去重
  135. *
  136. * @param list
  137. */
  138. public static List<String> method(List<String> list) {
  139. // 新集合
  140. List<String> newList = new ArrayList<>(list.size());
  141. list.forEach(i -> {
  142. // 如果新集合中不存在则插入
  143. if (!newList.contains(i)) {
  144. newList.add(i);
  145. }
  146. });
  147. return newList;
  148. }
  149. @Override
  150. public List<BaseUnitInformation> getBaseUnitInformationList() {
  151. List<BaseUnitInformation> baseUnitInformationList = baseExpertMapper.selectByUnitInformation(null);
  152. return baseUnitInformationList;
  153. }
  154. private List<PmDemandResVo> changTo(List<PmDemand> pmDemandList) {
  155. List<PmDemandResVo> pmDemandResponseVoList = new ArrayList<>();
  156. //获取字典数据
  157. HashMap<String, HashMap<String, String>> planEnums = dictTypeService.getAboutEnums();
  158. HashMap<String, String> projectTypesMap = planEnums.get("projectTypes");
  159. HashMap<String, String> planPurchaseModesMap = planEnums.get("planPurchaseModes");
  160. HashMap<String, String> projectAttributes = planEnums.get("projectAttributes");
  161. if (pmDemandList != null && pmDemandList.size() > 0) {
  162. for (PmDemand pmDemand1 : pmDemandList) {
  163. PmDemandResVo vo = new PmDemandResVo();
  164. BeanUtils.copyProperties(pmDemand1, vo);
  165. if (vo.getPurchaseDeptId() != null) {
  166. Map<String, Object> deptMap = deptService.selectDeptById(vo.getPurchaseDeptId());
  167. if (deptMap != null) {
  168. SysDeptResponseVo sysDeptResponseVo = (SysDeptResponseVo) deptMap.get("sysDept");
  169. if (sysDeptResponseVo != null) {
  170. vo.setPurchaseDeptName(sysDeptResponseVo.getDeptName());
  171. }
  172. }
  173. }
  174. String purchaseServicesName = dictDataService.selectDictLabel("purchase_services", vo.getPurchaseServices());
  175. if (StringUtils.isNotEmpty(purchaseServicesName)) {
  176. vo.setPurchaseServicesName(purchaseServicesName);
  177. }
  178. //项目类型
  179. for (ProjectTypes value : ProjectTypes.values()) {
  180. if (vo.getProjectType() != null && vo.getProjectType().equals(value.getCode())) {
  181. vo.setProjectTypeName(value.getInfo());
  182. break;
  183. }
  184. }
  185. //是否为超限额计划
  186. for (IsExcess value : IsExcess.values()) {
  187. if (vo.getIsExcess() != null && vo.getIsExcess().equals(value.getCode())) {
  188. vo.setIsExcessName(value.getInfo());
  189. break;
  190. }
  191. }
  192. //采购方式
  193. for (PlanPurchaseMode value : PlanPurchaseMode.values()) {
  194. if (vo.getPurchaseMode() != null && vo.getPurchaseMode().equals(value.getCode())) {
  195. vo.setPurchaseModeName(value.getInfo());
  196. break;
  197. }
  198. }
  199. //项目属性是拼接的
  200. if (!ObjectUtils.isEmpty(vo.getProjectAttr())) {
  201. if (vo.getProjectAttr().length() > 1) {
  202. StringBuilder builder = new StringBuilder();
  203. String[] split = vo.getProjectAttr().split(",");
  204. for (String s : split) {
  205. for (Map.Entry<String, String> entry : projectAttributes.entrySet()) {
  206. if (s.equals(entry.getValue())) {
  207. if (!vo.getProjectAttr().endsWith(s)) {
  208. builder.append(entry.getKey() + ",");
  209. } else {
  210. builder.append(entry.getKey());
  211. }
  212. break;
  213. }
  214. }
  215. }
  216. vo.setProjectAttrName(builder.toString());
  217. } else {
  218. for (Map.Entry<String, String> entry : projectAttributes.entrySet()) {
  219. if (vo.getProjectAttr().equals(entry.getValue())) {
  220. vo.setProjectAttrName(entry.getKey());
  221. break;
  222. }
  223. }
  224. }
  225. }
  226. //预警状态
  227. for (WarnStatus value : WarnStatus.values()) {
  228. if (vo.getWarnStatus() != null && vo.getWarnStatus().equals(value.getCode())) {
  229. vo.setWarnStatusName(value.getInfo());
  230. break;
  231. }
  232. }
  233. //项目状态
  234. for (PmProjectStatus value : PmProjectStatus.values()) {
  235. if (vo.getProjectStatus() != null && vo.getProjectStatus().equals(value.getCode())) {
  236. vo.setProjectStatusName(value.getInfo());
  237. break;
  238. }
  239. }
  240. pmDemandResponseVoList.add(vo);
  241. }
  242. }
  243. return pmDemandResponseVoList;
  244. }
  245. }