|
@@ -1,24 +1,28 @@
|
|
|
package org.springblade.manager.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.springblade.common.utils.SnowFlakeUtil;
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
import org.springblade.core.tool.utils.StringUtil;
|
|
|
import org.springblade.manager.dto.WbsInfoDTO;
|
|
|
+import org.springblade.manager.entity.ProjectInfo;
|
|
|
import org.springblade.manager.entity.WbsTree;
|
|
|
import org.springblade.manager.mapper.WbsInfoMapper;
|
|
|
import org.springblade.manager.service.IWbsInfoService;
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl;
|
|
|
import org.springblade.manager.entity.WbsInfo;
|
|
|
import org.springblade.manager.vo.WbsInfoVO;
|
|
|
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
|
|
|
@Service
|
|
|
@AllArgsConstructor
|
|
@@ -28,8 +32,55 @@ public class WbsInfoServiceImpl extends BaseServiceImpl<WbsInfoMapper, WbsInfo>
|
|
|
private final JdbcTemplate jdbcTemplate;
|
|
|
|
|
|
@Override
|
|
|
- public IPage<WbsInfo> selectWbsInfoPage(IPage<WbsInfo> page, WbsInfo wbsInfo) {
|
|
|
- return page.setRecords(baseMapper.selectWbsInfoPage(page, wbsInfo));
|
|
|
+ public IPage<WbsInfo> selectWbsInfoPage(IPage<WbsInfo> page, WbsInfoDTO wbsInfo) {
|
|
|
+ Set<Long> wbsIds = new HashSet<>();
|
|
|
+ if (StringUtil.hasText(wbsInfo.getProjectName())) {
|
|
|
+ List<ProjectInfo> projectInfoList = jdbcTemplate.query("select * from m_project_info where project_name like '%" + wbsInfo.getProjectName() + "%'", new BeanPropertyRowMapper<>(ProjectInfo.class));
|
|
|
+ if (projectInfoList.isEmpty()) {
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+ for (ProjectInfo projectInfo : projectInfoList) {
|
|
|
+ if (projectInfo.getReferenceWbsTemplateId() != null) {
|
|
|
+ wbsIds.add(projectInfo.getReferenceWbsTemplateId());
|
|
|
+ }
|
|
|
+ if (projectInfo.getReferenceWbsTemplateIdTrial() != null) {
|
|
|
+ wbsIds.add(projectInfo.getReferenceWbsTemplateIdTrial());
|
|
|
+ }
|
|
|
+ if (projectInfo.getReferenceWbsTemplateIdLar() != null) {
|
|
|
+ wbsIds.add(projectInfo.getReferenceWbsTemplateIdLar());
|
|
|
+ }
|
|
|
+ if (projectInfo.getReferenceWbsTemplateIdMeter() != null) {
|
|
|
+ wbsIds.add(projectInfo.getReferenceWbsTemplateIdMeter());
|
|
|
+ }
|
|
|
+ if (projectInfo.getReferenceWbsTemplateIdLar() != null) {
|
|
|
+ wbsIds.add(projectInfo.getReferenceWbsTemplateIdLar());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<WbsInfo> query = Wrappers.lambdaQuery();
|
|
|
+ if (!wbsIds.isEmpty()) {
|
|
|
+ query.in(WbsInfo::getId, wbsIds);
|
|
|
+ }
|
|
|
+ if (StringUtil.hasText(wbsInfo.getWbsName())) {
|
|
|
+ query.like(WbsInfo::getWbsName, wbsInfo.getWbsName());
|
|
|
+ }
|
|
|
+ if (wbsInfo.getWbsType() != null) {
|
|
|
+ query.eq(WbsInfo::getWbsType, wbsInfo.getWbsType());
|
|
|
+ }
|
|
|
+ IPage<WbsInfo> infoIPage = baseMapper.selectPage(page, query);
|
|
|
+ List<WbsInfo> records = infoIPage.getRecords();
|
|
|
+ if (!records.isEmpty()) {
|
|
|
+ for (WbsInfo record : records) {
|
|
|
+ List<ProjectInfo> projectInfoList = jdbcTemplate.query("select id, project_name from m_project_info where reference_log_wbs_template_id = ? " +
|
|
|
+ "or reference_wbs_template_id = ? or reference_wbs_template_id_trial = ? or reference_wbs_template_id_lar = ? or reference_wbs_template_id_meter = ?"
|
|
|
+ ,new Object[]{record.getId(), record.getId(), record.getId(), record.getId(), record.getId()} ,new BeanPropertyRowMapper<>(ProjectInfo.class));
|
|
|
+ if (!projectInfoList.isEmpty()) {
|
|
|
+ record.setProjectInfoList(projectInfoList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ records.sort(Comparator.comparing(WbsInfo::getSort));
|
|
|
+ }
|
|
|
+ return infoIPage;
|
|
|
}
|
|
|
|
|
|
@Override
|