dev
zhanglei 2026-07-30 11:12:33 +08:00
parent 1d7c79da29
commit 677042a75d
4 changed files with 60 additions and 3 deletions

View File

@ -4,6 +4,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.qinan.safetyeval.client.api.institution.EvalSignTaskApi;
import org.qinan.safetyeval.client.co.institution.EvalSignTaskCO;
import org.qinan.safetyeval.client.co.institution.EvalSignTaskStatisticsCO;
import org.qinan.safetyeval.client.dto.PageResponse;
import org.qinan.safetyeval.client.dto.SingleResponse;
import org.qinan.safetyeval.client.dto.institution.EditSignTaskSaveCmd;
@ -37,4 +38,10 @@ public class AppEvalSignTaskController {
public SingleResponse<Boolean> signAndUpload(@RequestBody EditSignTaskSaveCmd cmd) {
return evalSignTaskApi.signAndUpload(cmd);
}
@ApiOperation("签字统计")
@PostMapping("/signStatistics")
public SingleResponse<EvalSignTaskStatisticsCO> signStatistics(@RequestBody EvalSignTaskPageQuery cmd) {
return evalSignTaskApi.signStatistics(cmd);
}
}

View File

@ -7,6 +7,7 @@ import org.qinan.safetyeval.client.api.institution.EvalSignTaskApi;
import org.qinan.safetyeval.client.co.institution.EnumOptionCO;
import org.qinan.safetyeval.client.co.institution.EvalSignTaskCO;
import org.qinan.safetyeval.client.co.institution.EvalSignTaskEnumsCO;
import org.qinan.safetyeval.client.co.institution.EvalSignTaskStatisticsCO;
import org.qinan.safetyeval.client.dto.PageResponse;
import org.qinan.safetyeval.client.dto.SingleResponse;
import org.qinan.safetyeval.client.dto.institution.EditSignTaskSaveCmd;
@ -28,6 +29,7 @@ import org.qinan.safetyeval.infrastructure.support.InstitutionOrgSupport;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.Arrays;
@ -91,8 +93,9 @@ public class EvalSignTaskExecutor implements EvalSignTaskApi {
EvalSignTaskQuery domainQuery = evalSignTaskCmdConvertor.convertPageQueryToQ(query);
domainQuery.setOrgId(institutionOrgSupport.resolveCurrentOrgId());
PageResult<EvalSignTaskEntity> pageResult = evalSignTaskDomainService.page(domainQuery);
List<EvalSignTaskCO> co = evalSignTaskCmdConvertor.convertEListToCOList(pageResult.getRecords());
for (EvalSignTaskCO evalSignTaskCO : co) {
List<EvalSignTaskCO> co = pageResult.getRecords().stream().map(item -> {
EvalSignTaskCO evalSignTaskCO = evalSignTaskCmdConvertor.convertEToCO(item);
evalSignTaskCO.setProjectId(String.valueOf(item.getProjectId()));
EvalProjectDO evalProjectDO = evalProjectMapper.selectById(evalSignTaskCO.getProjectId());
evalSignTaskCO.setProjectName(evalProjectDO.getProjectName());
evalSignTaskCO.setNodeName(Objects.requireNonNull(ProjectStageEnum.fromVal(evalSignTaskCO.getNodeCode())).getMsg());
@ -103,7 +106,8 @@ public class EvalSignTaskExecutor implements EvalSignTaskApi {
.last("limit 1"));
evalSignTaskCO.setSignerPersonnelName(evalProjectMemberDOS.get(0).getPersonnelName());
evalSignTaskCO.setSignerRoles(ProjectStageEnum.fromVals(evalProjectMemberDOS.get(0).getRole()));
}
return evalSignTaskCO;
}).collect(Collectors.toList());
return PageResponse.of(
co ,
pageResult.getTotal());
@ -161,4 +165,21 @@ public class EvalSignTaskExecutor implements EvalSignTaskApi {
}
return SingleResponse.success(true);
}
@Override
public SingleResponse<EvalSignTaskStatisticsCO> signStatistics(EvalSignTaskPageQuery cmd) {
EvalSignTaskStatisticsCO evalSignTaskStatisticsCO = new EvalSignTaskStatisticsCO();
List<EvalSignTaskDO> evalSignTaskDOS = evalSignTaskMapper.selectList(new LambdaQueryWrapper<EvalSignTaskDO>()
.eq(EvalSignTaskDO::getProjectId, cmd.getProjectId())
.eq(EvalSignTaskDO::getSignerPersonnelId, cmd.getSignerPersonnelId()));
if (!CollectionUtils.isEmpty(evalSignTaskDOS)) {
long pendingSign = evalSignTaskDOS.stream().filter(f -> f.getTaskStatusCode() == 1).count();
long completed = evalSignTaskDOS.stream().filter(f -> f.getTaskStatusCode() == 2).count();
long allTasks = evalSignTaskDOS.size();
evalSignTaskStatisticsCO.setPendingSign(Math.toIntExact(pendingSign));
evalSignTaskStatisticsCO.setCompleted(Math.toIntExact(completed));
evalSignTaskStatisticsCO.setAllTasks(Math.toIntExact(allTasks));
}
return SingleResponse.success(evalSignTaskStatisticsCO);
}
}

View File

@ -2,6 +2,7 @@ package org.qinan.safetyeval.client.api.institution;
import org.qinan.safetyeval.client.co.institution.EvalSignTaskCO;
import org.qinan.safetyeval.client.co.institution.EvalSignTaskEnumsCO;
import org.qinan.safetyeval.client.co.institution.EvalSignTaskStatisticsCO;
import org.qinan.safetyeval.client.dto.PageResponse;
import org.qinan.safetyeval.client.dto.SingleResponse;
import org.qinan.safetyeval.client.dto.institution.EditSignTaskSaveCmd;
@ -17,4 +18,6 @@ public interface EvalSignTaskApi {
SingleResponse<EvalSignTaskEnumsCO> enums();
SingleResponse<Boolean> signAndUpload(EditSignTaskSaveCmd cmd);
SingleResponse<EvalSignTaskStatisticsCO> signStatistics(EvalSignTaskPageQuery cmd);
}

View File

@ -0,0 +1,26 @@
package org.qinan.safetyeval.client.co.institution;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class EvalSignTaskStatisticsCO {
/**
*
*/
@ApiModelProperty("待签字数量")
private int pendingSign = 0;
/**
*
*/
@ApiModelProperty("已完成数量")
private int completed = 0;
/**
*
*/
@ApiModelProperty("全部任务数量")
private int allTasks = 0;
}