dev
zhanglei 2026-08-03 11:25:07 +08:00
parent 519cddd842
commit 29526b8431
6 changed files with 121 additions and 6 deletions

View File

@ -33,11 +33,10 @@ public class AppEvalProjectController {
return evalProjectApi.get(Long.parseLong(id)); return evalProjectApi.get(Long.parseLong(id));
} }
@ApiOperation("分页项目列表") @ApiOperation("我的项目列表")
@GetMapping("/page") @GetMapping("/page")
public PageResponse<EvalProjectCO> page(@Validated EvalProjectPageQuery query) { public PageResponse<EvalProjectCO> myPage(@Validated EvalProjectPageQuery query) {
query.setMyProject(true); return evalProjectApi.myPage(query);
return evalProjectApi.page(query);
} }
@ApiOperation("我的项目统计") @ApiOperation("我的项目统计")

View File

@ -20,7 +20,7 @@ import java.math.BigDecimal;
*/ */
@Api(tags = "移动端人员信息管理") @Api(tags = "移动端人员信息管理")
@RestController @RestController
@RequestMapping("/safetyEval/app/app/org-personnel") @RequestMapping("/safetyEval/app/org-personnel")
public class AppOrgPersonnelController { public class AppOrgPersonnelController {
@Resource @Resource

View File

@ -1,6 +1,7 @@
package org.qinan.safetyeval.app.executor.institution; package org.qinan.safetyeval.app.executor.institution;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.qinan.safetyeval.app.convertor.EvalProjectCmdConvertor; import org.qinan.safetyeval.app.convertor.EvalProjectCmdConvertor;
@ -24,9 +25,17 @@ import org.qinan.safetyeval.domain.service.EvalProjectDomainService;
import org.qinan.safetyeval.domain.waring.model.EvalProjectProcessWaringE; import org.qinan.safetyeval.domain.waring.model.EvalProjectProcessWaringE;
import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter; import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter;
import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter; import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter;
import org.qinan.safetyeval.infrastructure.convertor.EvalProjectDoConvertor;
import org.qinan.safetyeval.infrastructure.dataobject.EvalCustomerDO;
import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectDO;
import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectMemberDO;
import org.qinan.safetyeval.infrastructure.dataobject.EvalSurveyDO;
import org.qinan.safetyeval.infrastructure.mapper.EvalCustomerMapper;
import org.qinan.safetyeval.infrastructure.mapper.EvalProjectMapper; import org.qinan.safetyeval.infrastructure.mapper.EvalProjectMapper;
import org.qinan.safetyeval.infrastructure.support.InstitutionOrgSupport; import org.qinan.safetyeval.infrastructure.mapper.EvalProjectMemberMapper;
import org.qinan.safetyeval.infrastructure.mapper.EvalSurveyMapper;
import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults; import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults;
import org.qinan.safetyeval.infrastructure.support.InstitutionOrgSupport;
import org.qinan.safetyeval.infrastructure.support.ProjectNoGenerator; import org.qinan.safetyeval.infrastructure.support.ProjectNoGenerator;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
@ -34,9 +43,13 @@ import org.springframework.dao.DuplicateKeyException;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
@ -62,6 +75,14 @@ public class EvalProjectExecutor implements EvalProjectApi {
private EvalProjectMapper evalProjectMapper; private EvalProjectMapper evalProjectMapper;
@Autowired @Autowired
private EvalProjectMemberGateway evalProjectMemberGateway; private EvalProjectMemberGateway evalProjectMemberGateway;
@Autowired
private EvalCustomerMapper evalCustomerMapper;
@Autowired
private EvalProjectDoConvertor evalProjectDoConvertor;
@Autowired
private EvalSurveyMapper evalSurveyMapper;
@Autowired
private EvalProjectMemberMapper evalProjectMemberMapper;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -129,7 +150,14 @@ public class EvalProjectExecutor implements EvalProjectApi {
evalProjectCO.setSurveyType(surveyType); evalProjectCO.setSurveyType(surveyType);
} }
} }
// 获取客户公司名称
Map<Long, String> customerNameMap = evalCustomerMapper.selectBatchIds(co.stream()
.map(EvalProjectCO::getCustomerId).collect(Collectors.toList()))
.stream().collect(Collectors.toMap(EvalCustomerDO::getId, EvalCustomerDO::getCustomerName));
co.forEach(item -> item.setCustomerName(customerNameMap.get(Long.valueOf(item.getCustomerId()))));
} }
return PageResponse.of( return PageResponse.of(
co, co,
pageResult.getTotal()); pageResult.getTotal());
@ -201,6 +229,86 @@ public class EvalProjectExecutor implements EvalProjectApi {
return PageResponse.of(coList, pageResult.getTotal()); return PageResponse.of(coList, pageResult.getTotal());
} }
@Override
public PageResponse<EvalProjectCO> myPage(EvalProjectPageQuery query) {
LambdaQueryWrapper<EvalProjectDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(EvalProjectDO::getDeleteEnum, "false");
wrapper.eq(EvalProjectDO::getOrgId, ThreadLocalUserInfoAdapter.getOrgId());
if (StringUtils.hasText(query.getKeyword())) {
wrapper.and(o -> o.like(EvalProjectDO::getProjectName, query.getKeyword()).or().like(EvalProjectDO::getProjectNo, query.getKeyword()));
}
// app查询(已完成的勘察打卡)
List<Long> pIds = evalSurveyMapper.selectList(new LambdaQueryWrapper<EvalSurveyDO>()
.eq(EvalSurveyDO::getPersonnelId, AuthUserContextAdapter.getCurrentUserId())
.isNotNull(EvalSurveyDO::getSignOutTime)).stream().map(EvalSurveyDO::getProjectId)
.distinct()
.collect(Collectors.toList());
List<Long> myPIds = evalProjectMemberMapper.selectList(new LambdaQueryWrapper<EvalProjectMemberDO>()
.eq(EvalProjectMemberDO::getPersonnelId, AuthUserContextAdapter.getCurrentUserId())
.eq(EvalProjectMemberDO::getOrgId, ThreadLocalUserInfoAdapter.getOrgId()))
.stream().map(EvalProjectMemberDO::getProjectId).distinct().collect(Collectors.toList());
if (query.getSurveyType() == 1) {
wrapper.in(EvalProjectDO::getId, CollectionUtils.isEmpty(pIds) ? Collections.singletonList(0L) : pIds);
}else if (query.getSurveyType() == 0) {
List<Long> unfinishedIds = new ArrayList<>();
if (!CollectionUtils.isEmpty(pIds)) {
for (Long peId : myPIds) {
if (!pIds.contains(peId)) {
unfinishedIds.add(peId);
}
}
} else {
unfinishedIds.addAll(myPIds);
}
wrapper.in(EvalProjectDO::getId, CollectionUtils.isEmpty(unfinishedIds) ? Collections.singletonList(0L) : unfinishedIds);
} else {
wrapper.in(EvalProjectDO::getId, CollectionUtils.isEmpty(myPIds) ? Collections.singletonList(0L) : myPIds);
}
Page<EvalProjectDO> pageResult = evalProjectMapper.selectPage(new Page<>(query.getCurrent(), query.getSize()), wrapper);
List<EvalProjectEntity> entities = pageResult.getRecords().stream()
.map(evalProjectDoConvertor::convertDoToE)
.collect(Collectors.toList());
List<EvalProjectCO> co = evalProjectCmdConvertor.convertEListToCOList(entities);
if (!CollectionUtils.isEmpty(co)) {
if (query.getSurveyType() == 0) {
// 未完成,有可能其他人已经上传检查表(已完成),但是当前人员没有去打卡, 需要判断节点是否完成, 如完成,设置为完成
for (EvalProjectCO evalProjectCO : co) {
int surveyType = 0;
List<ProjectNodeCO> projectNodeCOS = JSON.parseArray(evalProjectCO.getProjectNode(), ProjectNodeCO.class);
for (ProjectNodeCO projectNodeCO : projectNodeCOS) {
if (ProjectStageEnum.SITE_SURVEY.getVal().equals(projectNodeCO.getType()) && projectNodeCO.getState() == 1) {
surveyType = 1;
break;
}
}
evalProjectCO.setSurveyType(surveyType);
}
}else if (query.getSurveyType() == 1) {
for (EvalProjectCO evalProjectCO : co) {
evalProjectCO.setSurveyType(1);
}
}else {
for (EvalProjectCO evalProjectCO : co) {
int surveyType = 0;
List<ProjectNodeCO> projectNodeCOS = JSON.parseArray(evalProjectCO.getProjectNode(), ProjectNodeCO.class);
for (ProjectNodeCO projectNodeCO : projectNodeCOS) {
if (ProjectStageEnum.SITE_SURVEY.getVal().equals(projectNodeCO.getType()) && projectNodeCO.getState() == 1) {
surveyType = 1;
break;
}
}
evalProjectCO.setSurveyType(surveyType);
}
}
// 获取客户公司名称
Map<Long, String> customerNameMap = evalCustomerMapper.selectBatchIds(co.stream()
.map(EvalProjectCO::getCustomerId).collect(Collectors.toList()))
.stream().collect(Collectors.toMap(EvalCustomerDO::getId, EvalCustomerDO::getCustomerName));
co.forEach(item -> item.setCustomerName(customerNameMap.get(Long.valueOf(item.getCustomerId()))));
}
return PageResponse.of(co, pageResult.getTotal());
}
private CustomerEvalProjectCO convertToCustomerCO(EvalProjectEntity entity) { private CustomerEvalProjectCO convertToCustomerCO(EvalProjectEntity entity) {
CustomerEvalProjectCO co = new CustomerEvalProjectCO(); CustomerEvalProjectCO co = new CustomerEvalProjectCO();
co.setId(entity.getId() == null ? null : String.valueOf(entity.getId())); co.setId(entity.getId() == null ? null : String.valueOf(entity.getId()));

View File

@ -89,6 +89,9 @@ public class EvalSurveyExecutor implements EvalSurveyApi {
.eq(EvalSurveyDO::getProjectId, projectId) .eq(EvalSurveyDO::getProjectId, projectId)
.eq(EvalSurveyDO::getPersonnelId, AuthUserContextAdapter.getCurrentUserId()) .eq(EvalSurveyDO::getPersonnelId, AuthUserContextAdapter.getCurrentUserId())
.last("limit 1")); .last("limit 1"));
if (CollectionUtils.isEmpty(evalSurveyDOS)) {
return SingleResponse.success(null);
}
EvalSurveyEntity evalSurveyEntity = evalSurveyDoConvertor.convertDoToE(evalSurveyDOS.get(0)); EvalSurveyEntity evalSurveyEntity = evalSurveyDoConvertor.convertDoToE(evalSurveyDOS.get(0));
return SingleResponse.success(evalSurveyCmdConvertor.convertEToCO(evalSurveyEntity)); return SingleResponse.success(evalSurveyCmdConvertor.convertEToCO(evalSurveyEntity));
} }

View File

@ -42,4 +42,6 @@ public interface EvalProjectApi {
PageResponse<CustomerEvalProjectCO> customerPage(CustomerEvalProjectPageQuery query); PageResponse<CustomerEvalProjectCO> customerPage(CustomerEvalProjectPageQuery query);
PageResponse<EvalProjectCO> myPage(EvalProjectPageQuery query);
} }

View File

@ -17,6 +17,9 @@ public class EvalProjectCO {
@ApiModelProperty("被评价客户id") @ApiModelProperty("被评价客户id")
private String customerId; private String customerId;
@ApiModelProperty("被评价客户名称")
private String customerName;
@ApiModelProperty("项目编号") @ApiModelProperty("项目编号")
private String projectNo; private String projectNo;