Merge remote-tracking branch 'origin/dev' into dev
commit
ae2e1bf820
|
|
@ -33,11 +33,10 @@ public class AppEvalProjectController {
|
|||
return evalProjectApi.get(Long.parseLong(id));
|
||||
}
|
||||
|
||||
@ApiOperation("分页项目列表")
|
||||
@ApiOperation("我的项目列表")
|
||||
@GetMapping("/page")
|
||||
public PageResponse<EvalProjectCO> page(@Validated EvalProjectPageQuery query) {
|
||||
query.setMyProject(true);
|
||||
return evalProjectApi.page(query);
|
||||
public PageResponse<EvalProjectCO> myPage(@Validated EvalProjectPageQuery query) {
|
||||
return evalProjectApi.myPage(query);
|
||||
}
|
||||
|
||||
@ApiOperation("我的项目统计")
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import java.math.BigDecimal;
|
|||
*/
|
||||
@Api(tags = "移动端人员信息管理")
|
||||
@RestController
|
||||
@RequestMapping("/safetyEval/app/app/org-personnel")
|
||||
@RequestMapping("/safetyEval/app/org-personnel")
|
||||
public class AppOrgPersonnelController {
|
||||
|
||||
@Resource
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package org.qinan.safetyeval.app.executor.institution;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
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.infrastructure.adapter.ThreadLocalUserInfoAdapter;
|
||||
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.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.InstitutionOrgSupport;
|
||||
import org.qinan.safetyeval.infrastructure.support.ProjectNoGenerator;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
|
|
@ -34,9 +43,13 @@ import org.springframework.dao.DuplicateKeyException;
|
|||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
|
|
@ -62,6 +75,14 @@ public class EvalProjectExecutor implements EvalProjectApi {
|
|||
private EvalProjectMapper evalProjectMapper;
|
||||
@Autowired
|
||||
private EvalProjectMemberGateway evalProjectMemberGateway;
|
||||
@Autowired
|
||||
private EvalCustomerMapper evalCustomerMapper;
|
||||
@Autowired
|
||||
private EvalProjectDoConvertor evalProjectDoConvertor;
|
||||
@Autowired
|
||||
private EvalSurveyMapper evalSurveyMapper;
|
||||
@Autowired
|
||||
private EvalProjectMemberMapper evalProjectMemberMapper;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
|
|
@ -94,42 +115,18 @@ public class EvalProjectExecutor implements EvalProjectApi {
|
|||
public PageResponse<EvalProjectCO> page(EvalProjectPageQuery query) {
|
||||
EvalProjectQuery domainQuery = evalProjectCmdConvertor.convertPageQueryToQ(query);
|
||||
domainQuery.setSurveyType(query.getSurveyType());
|
||||
domainQuery.setMyProject(query.getMyProject());
|
||||
PageResult<EvalProjectEntity> pageResult = evalProjectDomainService.page(domainQuery);
|
||||
List<EvalProjectCO> co = evalProjectCmdConvertor.convertEListToCOList(pageResult.getRecords());
|
||||
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);
|
||||
}
|
||||
}
|
||||
if (query.getSurveyType() == 1) {
|
||||
for (EvalProjectCO evalProjectCO : co) {
|
||||
evalProjectCO.setSurveyType(1);
|
||||
}
|
||||
}
|
||||
if (query.getSurveyType() == 2) {
|
||||
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());
|
||||
|
|
@ -201,6 +198,86 @@ public class EvalProjectExecutor implements EvalProjectApi {
|
|||
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) {
|
||||
CustomerEvalProjectCO co = new CustomerEvalProjectCO();
|
||||
co.setId(entity.getId() == null ? null : String.valueOf(entity.getId()));
|
||||
|
|
|
|||
|
|
@ -102,10 +102,12 @@ public class EvalSignTaskExecutor implements EvalSignTaskApi {
|
|||
List<EvalProjectMemberDO> evalProjectMemberDOS = evalProjectMemberMapper.selectList(new LambdaQueryWrapper<EvalProjectMemberDO>()
|
||||
.eq(EvalProjectMemberDO::getProjectId, evalSignTaskCO.getProjectId())
|
||||
.eq(EvalProjectMemberDO::getPersonnelId, evalSignTaskCO.getSignerPersonnelId())
|
||||
.select(EvalProjectMemberDO::getRole, EvalProjectMemberDO::getPersonnelName)
|
||||
.select(EvalProjectMemberDO::getRole, EvalProjectMemberDO::getPersonnelName, EvalProjectMemberDO::getId)
|
||||
.last("limit 1"));
|
||||
if (!CollectionUtils.isEmpty(evalProjectMemberDOS)) {
|
||||
evalSignTaskCO.setSignerPersonnelName(evalProjectMemberDOS.get(0).getPersonnelName());
|
||||
evalSignTaskCO.setSignerRoles(ProjectStageEnum.fromVals(evalProjectMemberDOS.get(0).getRole()));
|
||||
}
|
||||
return evalSignTaskCO;
|
||||
}).collect(Collectors.toList());
|
||||
return PageResponse.of(
|
||||
|
|
|
|||
|
|
@ -89,6 +89,9 @@ public class EvalSurveyExecutor implements EvalSurveyApi {
|
|||
.eq(EvalSurveyDO::getProjectId, projectId)
|
||||
.eq(EvalSurveyDO::getPersonnelId, AuthUserContextAdapter.getCurrentUserId())
|
||||
.last("limit 1"));
|
||||
if (CollectionUtils.isEmpty(evalSurveyDOS)) {
|
||||
return SingleResponse.success(null);
|
||||
}
|
||||
EvalSurveyEntity evalSurveyEntity = evalSurveyDoConvertor.convertDoToE(evalSurveyDOS.get(0));
|
||||
return SingleResponse.success(evalSurveyCmdConvertor.convertEToCO(evalSurveyEntity));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,4 +42,6 @@ public interface EvalProjectApi {
|
|||
|
||||
|
||||
PageResponse<CustomerEvalProjectCO> customerPage(CustomerEvalProjectPageQuery query);
|
||||
|
||||
PageResponse<EvalProjectCO> myPage(EvalProjectPageQuery query);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,9 @@ public class EvalProjectCO {
|
|||
@ApiModelProperty("被评价客户id")
|
||||
private String customerId;
|
||||
|
||||
@ApiModelProperty("被评价客户名称")
|
||||
private String customerName;
|
||||
|
||||
@ApiModelProperty("项目编号")
|
||||
private String projectNo;
|
||||
|
||||
|
|
|
|||
|
|
@ -16,9 +16,7 @@ import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter;
|
|||
import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter;
|
||||
import org.qinan.safetyeval.infrastructure.convertor.EvalProjectDoConvertor;
|
||||
import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectDO;
|
||||
import org.qinan.safetyeval.infrastructure.dataobject.EvalSurveyDO;
|
||||
import org.qinan.safetyeval.infrastructure.mapper.EvalProjectMapper;
|
||||
import org.qinan.safetyeval.infrastructure.mapper.EvalSignTaskMapper;
|
||||
import org.qinan.safetyeval.infrastructure.mapper.EvalSurveyMapper;
|
||||
import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults;
|
||||
import org.qinan.safetyeval.infrastructure.support.OrgContextResolver;
|
||||
|
|
@ -30,7 +28,6 @@ import org.springframework.util.StringUtils;
|
|||
import javax.annotation.Resource;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
|
@ -178,30 +175,7 @@ public class EvalProjectGatewayImpl implements EvalProjectGateway {
|
|||
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());
|
||||
if (query.getSurveyType() == 1) {
|
||||
wrapper.in(EvalProjectDO::getId, CollectionUtils.isEmpty(pIds) ? Collections.singletonList(0L) : pIds);
|
||||
}
|
||||
if (query.getSurveyType() == 0) {
|
||||
List<Long> myPIds = evalProjectMapper.getByPersonnelId(AuthUserContextAdapter.getCurrentUserId());
|
||||
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);
|
||||
}
|
||||
if (Boolean.TRUE.equals(query.getMyProject()) && query.getSurveyType() == 2) {
|
||||
if (Boolean.TRUE.equals(query.getMyProject())) {
|
||||
wrapper.apply("JSON_CONTAINS(participants_json, JSON_OBJECT('id', {0}))", AuthUserContextAdapter.getCurrentUserId());
|
||||
}
|
||||
applyProgressStatusFilter(wrapper, query.getProgressStatus());
|
||||
|
|
|
|||
Loading…
Reference in New Issue