CostProjectMemoManagerImpl.java 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. package com.hotent.project.manager.impl;
  2. import com.baomidou.mybatisplus.core.metadata.IPage;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.hotent.base.manager.impl.BaseManagerImpl;
  5. import com.hotent.project.dao.CostProjectApprovalDao;
  6. import com.hotent.project.dao.CostProjectMemoDao;
  7. import com.hotent.project.manager.CostNoticeManager;
  8. import com.hotent.project.manager.CostProjectApprovalManager;
  9. import com.hotent.project.manager.CostProjectMemoManager;
  10. import com.hotent.project.model.CostNotice;
  11. import com.hotent.project.model.CostProjectApproval;
  12. import com.hotent.project.model.CostProjectMemo;
  13. import com.hotent.project.req.CostProjectMemoQueryReq;
  14. import com.hotent.project.req.CostProjectMemoUpdateReq;
  15. import com.hotent.project.resp.CostProjectMemoDetailResp;
  16. import com.hotent.uc.api.model.IUser;
  17. import com.hotent.uc.manager.UserManager;
  18. import com.hotent.uc.model.User;
  19. import com.hotent.uc.util.ContextUtil;
  20. import com.hotent.util.CopyUtil;
  21. import org.apache.commons.lang3.StringUtils;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Service;
  24. import org.springframework.transaction.annotation.Transactional;
  25. import javax.annotation.Resource;
  26. import java.util.ArrayList;
  27. import java.util.HashMap;
  28. import java.util.List;
  29. import java.util.Map;
  30. /**
  31. * 监审项目备忘录表 服务实现类
  32. *
  33. * @company 山西清众科技股份有限公司
  34. * @author 超级管理员
  35. * @since 2025-09-25
  36. */
  37. @Service
  38. public class CostProjectMemoManagerImpl extends BaseManagerImpl<CostProjectMemoDao, CostProjectMemo> implements CostProjectMemoManager {
  39. @Autowired
  40. private CostProjectMemoDao costProjectMemoDao;
  41. @Resource
  42. private CostProjectApprovalDao costProjectApprovalDao;
  43. @Autowired
  44. private UserManager userService;
  45. @Autowired
  46. private CostProjectApprovalManager projectApprovalManager;
  47. @Autowired
  48. private CostNoticeManager costNoticeManager;
  49. @Override
  50. public CostProjectMemoDetailResp getDetail(String id) {
  51. CostProjectMemo costProjectMemo = this.get(id);
  52. CostProjectMemoDetailResp costProjectMemoDetailResp = CopyUtil.copy(costProjectMemo, CostProjectMemoDetailResp.class);
  53. //获取成本项目
  54. CostProjectApproval CostProjectApproval = costProjectApprovalDao.selectById(costProjectMemo.getProjectId());
  55. if ( CostProjectApproval != null){
  56. costProjectMemoDetailResp.setTask( CostProjectApproval.getProjectName());
  57. }else {
  58. costProjectMemoDetailResp.setTask("");
  59. }
  60. return costProjectMemoDetailResp;
  61. }
  62. @Override
  63. @Transactional
  64. public void createOrUpdate(CostProjectMemo costProjectMemo) {
  65. //更新
  66. this.saveOrUpdate(costProjectMemo);
  67. }
  68. @Override
  69. public IPage<CostProjectMemo> pageList(CostProjectMemoQueryReq req){
  70. // 检查pageNum和pageSize是否合理
  71. /*if (req.getPageNum() <= 0 || req.getPageSize() <= 0) {
  72. throw new IllegalArgumentException("pageNum和pageSize必须大于0");
  73. }*/
  74. /*LambdaQueryWrapper<CostProjectMemo> qw = new LambdaQueryWrapper<>();
  75. if (req.getProjectId() != null) {
  76. qw.eq(CostProjectMemo::getProjectId, req.getProjectId());
  77. }
  78. if (req.getStartTime() != null && req.getEndTime() != null) {
  79. qw.between(CostProjectMemo::getCreateTime, req.getStartTime(), req.getEndTime());
  80. }
  81. if (StringUtil.isNotEmpty(req.getContent())) {
  82. qw.like(CostProjectMemo::getContent, req.getContent());
  83. }
  84. if(ObjectUtil.isNotEmpty(req.getYear())){
  85. qw.like(CostProjectMemo::getCreateTime, req.getYear());
  86. }
  87. qw.orderByDesc(CostProjectMemo::getId);*/
  88. // 使用MyBatis Plus分页查询
  89. /*Page<CostProjectMemo> page = new Page<>(req.getPageNum(), req.getPageSize());
  90. IPage<CostProjectMemo> costProjectMemoIPage = this.page(page, qw);
  91. // 查询年度计划项目名称
  92. List<CostProjectMemo> costProjectMemos = costProjectMemoIPage.getRecords();
  93. List<String> planNameIds = costProjectMemos.stream()
  94. .map(CostProjectMemo::getProjectId)
  95. .filter(java.util.Objects::nonNull)
  96. .distinct()
  97. .collect(Collectors.toList());
  98. Map<String, CostProjectApproval> planNameMap;
  99. if (!planNameIds.isEmpty()) {
  100. LambdaQueryWrapper< CostProjectApproval> qwPlan = new LambdaQueryWrapper<>();
  101. qwPlan.in( CostProjectApproval::getProjectId, planNameIds);
  102. List< CostProjectApproval> planNameList = costProjectApprovalDao.selectList(qwPlan);
  103. planNameMap = planNameList.stream()
  104. .collect(Collectors.toMap(
  105. CostProjectApproval::getProjectId,
  106. Function.identity(),
  107. (existing, replacement) -> existing
  108. ));
  109. } else {
  110. planNameMap = new HashMap<>();
  111. }
  112. // 转换为响应对象
  113. List<CostProjectMemoQueryResp> costProjectMemoQueryResps = costProjectMemos.stream().map(item -> {
  114. CostProjectMemoQueryResp resp = CopyUtil.copy(item, CostProjectMemoQueryResp.class);
  115. resp.setId(item.getId());
  116. CostProjectApproval planName = planNameMap.get(String.valueOf(item.getProjectId()));
  117. if (planName != null) {
  118. resp.setProjectName(planName.getProjectName());
  119. } else {
  120. resp.setProjectName("");
  121. }
  122. return resp;
  123. }).collect(Collectors.toList());
  124. // 构造返回的分页对象
  125. Page<CostProjectMemoQueryResp> respPage = new Page<>(req.getPageNum(), req.getPageSize(), costProjectMemoIPage.getTotal());
  126. respPage.setRecords(costProjectMemoQueryResps);*/
  127. //return respPage;
  128. IUser iUser = ContextUtil.getCurrentUser();
  129. User user = null;
  130. try {
  131. user = userService.getByAccount(iUser.getAccount());
  132. } catch (Exception e) {
  133. throw new RuntimeException(e);
  134. }
  135. req.setDataScope(user.getDataScope());
  136. req.setProvinceCode(user.getProvinceCode());
  137. req.setCityCode(user.getCityCode());
  138. req.setCountyCode(user.getCountyCode());
  139. Page<CostProjectMemo> objectPage = new Page<>(req.getPageNum(),req.getPageSize());
  140. //Page<CostSurveyTemplate> page =baseMapper.getCostSurveyTemplatePage(objectPage,params);
  141. Page<CostProjectMemo> page =baseMapper.getCostProjectMemoPage(objectPage
  142. ,req.getDataScope()
  143. ,req.getProvinceCode()
  144. ,req.getCityCode()
  145. ,req.getCountyCode()
  146. ,req.getProjectId()
  147. ,req.getYear()
  148. ,req.getContent()
  149. ,req.getMemoDate()
  150. ,req.getStartTime()
  151. ,req.getEndTime());
  152. return page;
  153. }
  154. @Override
  155. public int updateMemo(CostProjectMemoUpdateReq req) {
  156. if (req.getId() == null){
  157. throw new IllegalArgumentException("id不能为空");
  158. }
  159. if (req.getProjectId() == null){
  160. throw new IllegalArgumentException("项目id不能为空");
  161. }
  162. CostProjectMemo copy = CopyUtil.copy(req, CostProjectMemo.class);
  163. costProjectMemoDao.updateMemo(copy);
  164. return 0;
  165. }
  166. @Override
  167. public Boolean saveData(CostProjectMemo t) {
  168. boolean save = this.save(t);
  169. if (save){
  170. String projectId = t.getProjectId();
  171. CostProjectApproval projectApproval = projectApprovalManager.getById(projectId);
  172. if (projectApproval != null) {
  173. Map<String,String> rMap = new HashMap<>();
  174. List<CostNotice> noticeList = new ArrayList<>();
  175. String leaderId = projectApproval.getLeaderId();
  176. if(StringUtils.isNotBlank(leaderId)){
  177. CostNotice costNotice = new CostNotice();
  178. costNotice.setNoticeTitle(t.getTitle());
  179. costNotice.setProjectId(t.getProjectId());
  180. costNotice.setStatus("0");
  181. costNotice.setNoticeType("1");
  182. costNotice.setNoticeContent(t.getContent());
  183. costNotice.setEnterpriseId(projectApproval.getAuditedUnitId());
  184. costNotice.setNoticeSource("备忘录");
  185. costNotice.setSendTarget(leaderId);
  186. noticeList.add(costNotice);
  187. rMap.put(costNotice.getSendTarget(),"");
  188. }
  189. String auditGroup = projectApproval.getAuditGroup();
  190. if(StringUtils.isNotBlank(auditGroup)){
  191. String[] split = auditGroup.split(",");
  192. for (String s : split) {
  193. if(rMap.containsKey(s)){
  194. continue;
  195. }
  196. CostNotice costNotice = new CostNotice();
  197. costNotice.setNoticeTitle(t.getTitle());
  198. costNotice.setProjectId(t.getProjectId());
  199. costNotice.setStatus("0");
  200. costNotice.setNoticeType("1");
  201. costNotice.setNoticeContent(t.getContent());
  202. costNotice.setEnterpriseId(projectApproval.getAuditedUnitId());
  203. costNotice.setNoticeSource("备忘录");
  204. costNotice.setSendTarget(s);
  205. noticeList.add(costNotice);
  206. }
  207. }
  208. costNoticeManager.saveBatch(noticeList);
  209. }
  210. }
  211. return true;
  212. }
  213. @Override
  214. public IPage<CostProjectMemo> pageIndexList(CostProjectMemoQueryReq req) {
  215. IUser iUser = ContextUtil.getCurrentUser();
  216. String userId = iUser.getUserId();
  217. Page<CostProjectMemo> objectPage = new Page<>(req.getPageNum(),req.getPageSize());
  218. Page<CostProjectMemo> page =baseMapper.getIndexList(objectPage,userId,req.getContent(),req.getMemoDate());
  219. return page;
  220. }
  221. }