CostNoticeManagerImpl.java 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. package com.hotent.project.manager.impl;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.hotent.baseInfo.manager.AuditedUnitManager;
  7. import com.hotent.baseInfo.model.AuditedUnit;
  8. import com.hotent.baseInfo.resp.AuditedUnitDetailResp;
  9. import com.hotent.constant.BaseConstant;
  10. import com.hotent.project.model.CostNotice;
  11. import com.hotent.project.dao.CostNoticeDao;
  12. import com.hotent.project.manager.CostNoticeManager;
  13. import com.hotent.base.manager.impl.BaseManagerImpl;
  14. import com.hotent.project.model.CostProjectApproval;
  15. import com.hotent.project.model.CostProjectMaterial;
  16. import com.hotent.project.req.CostProjectNoticeListReq;
  17. import com.hotent.project.req.CostProjectNoticePageReq;
  18. import com.hotent.uc.model.User;
  19. import com.hotent.uc.util.ContextUtil;
  20. import org.apache.commons.lang3.StringUtils;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.transaction.annotation.Transactional;
  24. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  25. import java.util.Collections;
  26. import java.util.List;
  27. import java.util.Map;
  28. import java.util.stream.Collectors;
  29. import javax.annotation.Resource;
  30. import com.hotent.base.util.BeanUtils;
  31. /**
  32. * 通知公告表 服务实现类
  33. *
  34. * @company 山西清众科技股份有限公司
  35. * @author 超级管理员
  36. * @since 2025-09-27
  37. */
  38. @Service
  39. public class CostNoticeManagerImpl extends BaseManagerImpl<CostNoticeDao, CostNotice> implements CostNoticeManager {
  40. @Autowired
  41. private CostProjectApprovalManagerImpl projectApprovalManager;
  42. @Autowired
  43. private AuditedUnitManager auditedUnitManager;
  44. @Override
  45. public CostNotice getDetail(String id) {
  46. CostNotice costNotice = this.get(id);
  47. if(costNotice == null){
  48. return costNotice;
  49. }
  50. if(costNotice.getProjectId() != null){
  51. CostProjectApproval costProjectApproval = projectApprovalManager.getById(costNotice.getProjectId());
  52. if(costProjectApproval != null){
  53. costNotice.setProjectName(costProjectApproval.getProjectName());
  54. }
  55. }
  56. String enterpriseId = costNotice.getEnterpriseId();
  57. if(StringUtils.isNotBlank(enterpriseId)){
  58. String[] split = enterpriseId.split(",");
  59. StringBuilder sb = new StringBuilder();
  60. for (String s : split) {
  61. AuditedUnitDetailResp detail = auditedUnitManager.detail(s);
  62. if(detail != null){
  63. sb.append(detail.getUnitName()).append(",");
  64. }
  65. }
  66. costNotice.setEnterpriseName(sb.toString().substring(0,sb.length()-1));
  67. }
  68. return costNotice;
  69. }
  70. @Override
  71. @Transactional
  72. public void createOrUpdate(CostNotice costNotice) {
  73. //新建或更新
  74. this.saveOrUpdate(costNotice);
  75. }
  76. @Override
  77. public IPage<CostNotice> pageList(CostProjectNoticePageReq req) {
  78. LambdaQueryWrapper<CostNotice> qw = new LambdaQueryWrapper<>();
  79. if(ObjectUtil.isNotEmpty(req.getTitle())){
  80. qw.like(CostNotice::getNoticeTitle, req.getTitle());
  81. }
  82. if(ObjectUtil.isNotEmpty(req.getContent())){
  83. qw.like(CostNotice::getNoticeContent, req.getContent());
  84. }
  85. if(ObjectUtil.isNotEmpty(req.getProjectId())){
  86. qw.eq(CostNotice::getProjectId, req.getProjectId());
  87. }
  88. if(ObjectUtil.isNotEmpty(req.getTaskId())){
  89. qw.eq(CostNotice::getTaskId, req.getTaskId());
  90. }
  91. // if(ObjectUtil.isNotEmpty(req.getEnterpriseId())){
  92. // qw.eq(CostNotice::getEnterpriseId, req.getEnterpriseId());
  93. // }
  94. qw.orderByDesc(CostNotice::getCreateTime);
  95. IPage<CostNotice> page=new Page<>(req.getPageNum(), req.getPageSize());
  96. IPage<CostNotice> costNoticeIPage = this.page(page, qw);
  97. List<CostNotice> records = costNoticeIPage.getRecords();
  98. List<String> list = records.stream().map(CostNotice::getEnterpriseId).distinct().collect(Collectors.toList());
  99. List<AuditedUnit> units=auditedUnitManager.getByIds(list);
  100. Map<String, String> unitIdToNameMap = units.stream()
  101. .collect(Collectors.toMap(
  102. AuditedUnit::getUnitId,
  103. AuditedUnit::getUnitName,
  104. (existing, replacement) -> existing // 如果有重复键,保留第一个
  105. ));
  106. records.forEach(r -> {
  107. String unitName = unitIdToNameMap.get(r.getEnterpriseId());
  108. if (unitName != null) {
  109. r.setEnterpriseName(unitName);
  110. }
  111. });
  112. return page;
  113. }
  114. @Override
  115. public void sendNotice(String projectId,String taskId, String number, String title, String content, String enterpriseId, String noticeSource, String sendTarget) {
  116. CostNotice costNotice = new CostNotice();
  117. costNotice.setNoticeTitle(title);
  118. costNotice.setNoticeType(number);
  119. costNotice.setProjectId(projectId);
  120. costNotice.setTaskId(taskId);
  121. costNotice.setStatus(BaseConstant.NORMAL_STATUS);
  122. costNotice.setNoticeContent(content);
  123. costNotice.setEnterpriseId(enterpriseId);
  124. costNotice.setNoticeSource(noticeSource);
  125. costNotice.setSendTarget(sendTarget);
  126. this.save(costNotice);
  127. }
  128. @Override
  129. public void sendNotice(String projectId ,String noticeType, String noticeTitle, String noticeContent) {
  130. CostNotice costNotice = new CostNotice();
  131. costNotice.setNoticeTitle(noticeTitle);
  132. costNotice.setNoticeType("1");
  133. costNotice.setProjectId(projectId);
  134. costNotice.setStatus(BaseConstant.NORMAL_STATUS);
  135. costNotice.setNoticeContent(noticeContent);
  136. this.save(costNotice);
  137. }
  138. @Override
  139. public String read(String id) {
  140. CostNotice costNotice = this.getById(id);
  141. User currentUser = ContextUtil.getCurrentUser();
  142. if(!currentUser.getId().equals(costNotice.getSendTarget())){
  143. return "";
  144. }
  145. costNotice.setStatus("1");
  146. this.update(costNotice);
  147. return "阅读成功";
  148. }
  149. @Override
  150. public List<CostNotice> getList(CostProjectNoticeListReq req) {
  151. LambdaQueryWrapper<CostNotice> qw = new LambdaQueryWrapper<>();
  152. if(ObjectUtil.isNotEmpty(req.getProjectId())){
  153. qw.eq(CostNotice::getProjectId, req.getProjectId());
  154. }
  155. qw.orderByDesc(CostNotice::getCreateTime);
  156. return this.list(qw);
  157. }
  158. }