| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- package com.hotent.project.manager.impl;
- import cn.hutool.core.util.ObjectUtil;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.hotent.baseInfo.manager.AuditedUnitManager;
- import com.hotent.baseInfo.model.AuditedUnit;
- import com.hotent.baseInfo.resp.AuditedUnitDetailResp;
- import com.hotent.constant.BaseConstant;
- import com.hotent.project.model.CostNotice;
- import com.hotent.project.dao.CostNoticeDao;
- import com.hotent.project.manager.CostNoticeManager;
- import com.hotent.base.manager.impl.BaseManagerImpl;
- import com.hotent.project.model.CostProjectApproval;
- import com.hotent.project.model.CostProjectMaterial;
- import com.hotent.project.req.CostProjectNoticeListReq;
- import com.hotent.project.req.CostProjectNoticePageReq;
- import com.hotent.uc.model.User;
- import com.hotent.uc.util.ContextUtil;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import java.util.Collections;
- import java.util.List;
- import java.util.Map;
- import java.util.stream.Collectors;
- import javax.annotation.Resource;
- import com.hotent.base.util.BeanUtils;
- /**
- * 通知公告表 服务实现类
- *
- * @company 山西清众科技股份有限公司
- * @author 超级管理员
- * @since 2025-09-27
- */
- @Service
- public class CostNoticeManagerImpl extends BaseManagerImpl<CostNoticeDao, CostNotice> implements CostNoticeManager {
- @Autowired
- private CostProjectApprovalManagerImpl projectApprovalManager;
- @Autowired
- private AuditedUnitManager auditedUnitManager;
- @Override
- public CostNotice getDetail(String id) {
- CostNotice costNotice = this.get(id);
- if(costNotice == null){
- return costNotice;
- }
- if(costNotice.getProjectId() != null){
- CostProjectApproval costProjectApproval = projectApprovalManager.getById(costNotice.getProjectId());
- if(costProjectApproval != null){
- costNotice.setProjectName(costProjectApproval.getProjectName());
- }
- }
- String enterpriseId = costNotice.getEnterpriseId();
- if(StringUtils.isNotBlank(enterpriseId)){
- String[] split = enterpriseId.split(",");
- StringBuilder sb = new StringBuilder();
- for (String s : split) {
- AuditedUnitDetailResp detail = auditedUnitManager.detail(s);
- if(detail != null){
- sb.append(detail.getUnitName()).append(",");
- }
- }
- costNotice.setEnterpriseName(sb.toString().substring(0,sb.length()-1));
- }
- return costNotice;
- }
- @Override
- @Transactional
- public void createOrUpdate(CostNotice costNotice) {
- //新建或更新
- this.saveOrUpdate(costNotice);
- }
- @Override
- public IPage<CostNotice> pageList(CostProjectNoticePageReq req) {
- LambdaQueryWrapper<CostNotice> qw = new LambdaQueryWrapper<>();
- if(ObjectUtil.isNotEmpty(req.getTitle())){
- qw.like(CostNotice::getNoticeTitle, req.getTitle());
- }
- if(ObjectUtil.isNotEmpty(req.getContent())){
- qw.like(CostNotice::getNoticeContent, req.getContent());
- }
- if(ObjectUtil.isNotEmpty(req.getProjectId())){
- qw.eq(CostNotice::getProjectId, req.getProjectId());
- }
- if(ObjectUtil.isNotEmpty(req.getTaskId())){
- qw.eq(CostNotice::getTaskId, req.getTaskId());
- }
- // if(ObjectUtil.isNotEmpty(req.getEnterpriseId())){
- // qw.eq(CostNotice::getEnterpriseId, req.getEnterpriseId());
- // }
- qw.orderByDesc(CostNotice::getCreateTime);
- IPage<CostNotice> page=new Page<>(req.getPageNum(), req.getPageSize());
- IPage<CostNotice> costNoticeIPage = this.page(page, qw);
- List<CostNotice> records = costNoticeIPage.getRecords();
- List<String> list = records.stream().map(CostNotice::getEnterpriseId).distinct().collect(Collectors.toList());
- List<AuditedUnit> units=auditedUnitManager.getByIds(list);
- Map<String, String> unitIdToNameMap = units.stream()
- .collect(Collectors.toMap(
- AuditedUnit::getUnitId,
- AuditedUnit::getUnitName,
- (existing, replacement) -> existing // 如果有重复键,保留第一个
- ));
- records.forEach(r -> {
- String unitName = unitIdToNameMap.get(r.getEnterpriseId());
- if (unitName != null) {
- r.setEnterpriseName(unitName);
- }
- });
- return page;
- }
- @Override
- public void sendNotice(String projectId,String taskId, String number, String title, String content, String enterpriseId, String noticeSource, String sendTarget) {
- CostNotice costNotice = new CostNotice();
- costNotice.setNoticeTitle(title);
- costNotice.setNoticeType(number);
- costNotice.setProjectId(projectId);
- costNotice.setTaskId(taskId);
- costNotice.setStatus(BaseConstant.NORMAL_STATUS);
- costNotice.setNoticeContent(content);
- costNotice.setEnterpriseId(enterpriseId);
- costNotice.setNoticeSource(noticeSource);
- costNotice.setSendTarget(sendTarget);
- this.save(costNotice);
- }
- @Override
- public void sendNotice(String projectId ,String noticeType, String noticeTitle, String noticeContent) {
- CostNotice costNotice = new CostNotice();
- costNotice.setNoticeTitle(noticeTitle);
- costNotice.setNoticeType("1");
- costNotice.setProjectId(projectId);
- costNotice.setStatus(BaseConstant.NORMAL_STATUS);
- costNotice.setNoticeContent(noticeContent);
- this.save(costNotice);
- }
- @Override
- public String read(String id) {
- CostNotice costNotice = this.getById(id);
- User currentUser = ContextUtil.getCurrentUser();
- if(!currentUser.getId().equals(costNotice.getSendTarget())){
- return "";
- }
- costNotice.setStatus("1");
- this.update(costNotice);
- return "阅读成功";
- }
- @Override
- public List<CostNotice> getList(CostProjectNoticeListReq req) {
- LambdaQueryWrapper<CostNotice> qw = new LambdaQueryWrapper<>();
- if(ObjectUtil.isNotEmpty(req.getProjectId())){
- qw.eq(CostNotice::getProjectId, req.getProjectId());
- }
- qw.orderByDesc(CostNotice::getCreateTime);
- return this.list(qw);
- }
- }
|