Browse Source

超时信息接口导出:上传文件进度

master
gjh 7 hours ago
parent
commit
55bc670016
  1. 7
      huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouPlaninfofileController.java
  2. 3
      huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/ProjectManagerController.java
  3. 7
      huzhou/src/main/java/com/easy/admin/modules/huzhou/dto/ProjectTimeOutInfoExportDTO.java
  4. 7
      huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouProjectinfo.java
  5. 9
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouPlaninfofileService.java
  6. 51
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java
  7. 5
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java

7
huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouPlaninfofileController.java

@ -127,4 +127,11 @@ public class HuzhouPlaninfofileController {
planinfoService.setPlaninfoIsoffline(planinfo);
return Result.ok();
}
@GetMapping("/getUploadFileRate")
public Result<Double> getUploadFileRate(String projectId){
Double uploadFileRate = planinfofileService.getUploadFileRate(projectId);
return Result.ok(uploadFileRate);
}
}

3
huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/ProjectManagerController.java

@ -154,7 +154,8 @@ public class ProjectManagerController {
projectInfo.getCurrentPointName(),
projectInfo.getSuperiorFundPayRate(),
projectInfo.getTimeOutPayCount(),
projectInfo.getTimeOutPaySituation()))
projectInfo.getTimeOutPaySituation(),
projectInfo.getUploadFileRate()))
.collect(Collectors.toList());
// 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman

7
huzhou/src/main/java/com/easy/admin/modules/huzhou/dto/ProjectTimeOutInfoExportDTO.java

@ -35,6 +35,9 @@ public class ProjectTimeOutInfoExportDTO {
@ExcelProperty("超时支付情况")
private String timeOutPaySituation;
@ExcelProperty("上传文件进度(%)")
private Double uploadFileRate;
public ProjectTimeOutInfoExportDTO(String projectName,
String dutyWorkplace,
String reformName,
@ -42,7 +45,8 @@ public class ProjectTimeOutInfoExportDTO {
String currentPointName,
Double superiorFundPayRate,
int timeOutPayCount,
String timeOutPaySituation
String timeOutPaySituation,
Double uploadFileRate
) {
this.projectName = projectName;
this.superiorFundPayRate = superiorFundPayRate;
@ -52,6 +56,7 @@ public class ProjectTimeOutInfoExportDTO {
this.reformName = reformName;
this.superLeader = superLeader;
this.timeOutPaySituation = timeOutPaySituation;
this.uploadFileRate = uploadFileRate;
}

7
huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouProjectinfo.java

@ -214,6 +214,13 @@ public class HuzhouProjectinfo extends BaseEntity {
*/
@TableField(exist = false)
private String timeOutPaySituation;
@TableField(exist = false)
private Double uploadFileRate;
// public ProjectinfoExportDTO toDTO() {
// return new ProjectinfoExportDTO(
// this.projectName,

9
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouPlaninfofileService.java

@ -28,4 +28,13 @@ public interface IHuzhouPlaninfofileService extends IService<HuzhouPlaninfofile>
void planREUploadFile(MultipartFile[] files, String planinfoid) throws IOException;
List<HashMap<String, Object>> getProcessDetailByProjectTaskId(String planinfoid);
/**
* 文件上传占比=当前所处节点前上传完成的材料数/当前节点前应上传的材料数*100%
* @param projectId
* @return
*/
Double getUploadFileRate(String projectId);
}

51
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java

@ -789,4 +789,55 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil
return resultList;
}
@Override
public Double getUploadFileRate(String projectId) {
List<HuzhouPlaninfo> planInfoList = planinfoService.getListByProjectId(projectId);
double rate =0.0;
int totalFileCount = 0;
int unFinishFileCount = 0;
if (CollectionUtil.isNotEmpty(planInfoList)) {
for (HuzhouPlaninfo planInfo : planInfoList) {
String taskFile = planInfo.getTaskFile();
totalFileCount += countFiles(taskFile);
}
LambdaQueryWrapper<HuzhouPlaninfo> qw = new LambdaQueryWrapper<>();
qw.eq(HuzhouPlaninfo::getProjectId,projectId)
.eq(HuzhouPlaninfo::getIsfinish,"0");
List<HuzhouPlaninfo> unFinishPlanInfoList = planinfoService.list(qw);
for (HuzhouPlaninfo planInfo : unFinishPlanInfoList) {
String taskFile = planInfo.getTaskFile();
if (StrUtil.isNotBlank(taskFile)){
unFinishFileCount += countFiles(taskFile);
}
}
int uploadFileCount = totalFileCount - unFinishFileCount;
rate = (double) uploadFileCount / totalFileCount * 100;
//double roundedRate = Math.round(rate * 100.0) / 100.0;
double roundedRate = Math.round(rate) ;
log.info("{}:上传文件比率为:{}---总数:{},完成:{}", projectId, roundedRate, totalFileCount, uploadFileCount);
return roundedRate;
}
return rate;
}
// 辅助方法:计算给定字符串中《》的数量来确定文件数
private int countFiles(String taskFile) {
if (taskFile == null || taskFile.trim().isEmpty()) {
return 0;
}
// 去除首尾可能存在的空格和其他字符
taskFile = taskFile.trim();
// 将字符串按逗号分割成多个部分,然后计算每部分中书名号的数量
String[] files = taskFile.split("》,");
int fileCount = 0;
for (String file : files) {
file = file.trim().replace("《", "").replace("》", "");
if (!file.isEmpty()) {
fileCount++;
}
}
return fileCount;
}
}

5
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java

@ -114,6 +114,9 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
private HuzhouProjectinfoMoneyMapper projectinfoMoneyMapper;
@Autowired
private ProjectManagerService projectManagerService;
@Lazy
@Autowired
private IHuzhouPlaninfofileService planinfofileService;
@Override
public void submitProject(MultipartFile[] multipartFile, HuzhouProjectinfo info) throws IOException {
@ -2803,6 +2806,8 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
projectInfo.setTimeOutPaySituation(tmp.getTimeOutPaySituation());
// 4.设置超时支付次数:超时支付次数=超时完成天数/7
projectInfo.setTimeOutPayCount(tmp.getTimeOutPayCount());
// 5.设置文件上传占用率
projectInfo.setUploadFileRate(planinfofileService.getUploadFileRate(projectId));
}
// 按照责任工作地点排序

Loading…
Cancel
Save