修改bug

This commit is contained in:
lcj
2025-08-21 00:49:13 +08:00
parent 914c37260e
commit 236c1ce888
10 changed files with 77 additions and 42 deletions

View File

@ -52,3 +52,4 @@ nbdist/
logs/ logs/
docs docs
/file /file
.idea/

View File

@ -289,4 +289,4 @@ recognizer:
url: http://192.168.110.5:50070 url: http://192.168.110.5:50070
qrCode: qrCode:
url: http://192.168.110.151:7788 url: http://xny.yj-3d.com:7171

View File

@ -287,3 +287,6 @@ id-card:
encrypt-key: 7ae260d150a14027d2238a1cf80a48ef encrypt-key: 7ae260d150a14027d2238a1cf80a48ef
recognizer: recognizer:
url: http://192.168.110.5:50070 url: http://192.168.110.5:50070
qrCode:
url: http://xny.yj-3d.com:7788

View File

@ -10,6 +10,7 @@ import java.text.SimpleDateFormat;
import java.time.*; import java.time.*;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException; import java.time.format.DateTimeParseException;
import java.time.temporal.ChronoUnit;
import java.util.Date; import java.util.Date;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -209,6 +210,21 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24))); return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24)));
} }
/**
* 计算两个日期之间的时间差
*
* @param date1 第一个日期
* @param date2 第二个日期
* @param unit 时间单位支持ChronoUnit.DAYS, ChronoUnit.HOURS, ChronoUnit.MINUTES, ChronoUnit.SECONDS
* @return 时间差(可能为负数,如果要绝对值可以再 Math.abs
*/
public static long difference(Date date1, Date date2, ChronoUnit unit) {
// 转换成 Instant 再计算
Instant instant1 = date1.toInstant();
Instant instant2 = date2.toInstant();
return unit.between(instant1, instant2);
}
/** /**
* 计算两个日期之间的时间差,并以天、小时和分钟的格式返回 * 计算两个日期之间的时间差,并以天、小时和分钟的格式返回
* *

View File

@ -1,21 +1,17 @@
package org.dromara.formalities.domain.bo; package org.dromara.formalities.domain.bo;
import org.dromara.formalities.domain.BusFormalitiesAreConsolidated;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*; import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.formalities.domain.BusFormalitiesAreConsolidated;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List; import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
/** /**
* 合规性手续合账业务对象 bus_formalities_are_consolidated * 合规性手续合账业务对象 bus_formalities_are_consolidated
* *
@ -30,13 +26,13 @@ public class BusFormalitiesAreConsolidatedBo extends BaseEntity {
/** /**
* *
*/ */
@NotNull(message = "不能为空", groups = { EditGroup.class }) @NotNull(message = "不能为空", groups = {EditGroup.class})
private Long id; private Long id;
/** /**
* 项目id * 项目id
*/ */
@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "不能为空", groups = {AddGroup.class, EditGroup.class})
private Long projectId; private Long projectId;
/** /**
@ -78,7 +74,7 @@ public class BusFormalitiesAreConsolidatedBo extends BaseEntity {
/** /**
* 实际完成时间 * 实际完成时间
*/ */
private Date actualCompletionTime; private LocalDate actualCompletionTime;
/** /**
* 办理状态 * 办理状态
@ -86,7 +82,6 @@ public class BusFormalitiesAreConsolidatedBo extends BaseEntity {
private String processingStatus; private String processingStatus;
/** /**
* 状态 * 状态
*/ */

View File

@ -1,37 +1,35 @@
package org.dromara.formalities.service.impl; package org.dromara.formalities.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.dromara.common.mybatis.core.page.TableDataInfo;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.formalities.domain.BusFormalitiesAnnex; import org.dromara.formalities.domain.BusFormalitiesAnnex;
import org.dromara.formalities.domain.BusFormalitiesAreConsolidated;
import org.dromara.formalities.domain.BusListOfFormalities; import org.dromara.formalities.domain.BusListOfFormalities;
import org.dromara.formalities.domain.bo.AddBusFormalitiesAreConsolidatedBo; import org.dromara.formalities.domain.bo.AddBusFormalitiesAreConsolidatedBo;
import org.dromara.formalities.enums.FormalitiesStatusEnum;
import org.dromara.formalities.service.IBusFormalitiesAnnexService;
import org.dromara.formalities.service.IBusListOfFormalitiesService;
import org.dromara.formalities.utils.TreeUtil;
import org.dromara.system.domain.vo.SysOssUploadVo;
import org.dromara.system.service.ISysOssService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.dromara.formalities.domain.bo.BusFormalitiesAreConsolidatedBo; import org.dromara.formalities.domain.bo.BusFormalitiesAreConsolidatedBo;
import org.dromara.formalities.domain.vo.BusFormalitiesAreConsolidatedVo; import org.dromara.formalities.domain.vo.BusFormalitiesAreConsolidatedVo;
import org.dromara.formalities.domain.BusFormalitiesAreConsolidated; import org.dromara.formalities.enums.FormalitiesStatusEnum;
import org.dromara.formalities.mapper.BusFormalitiesAreConsolidatedMapper; import org.dromara.formalities.mapper.BusFormalitiesAreConsolidatedMapper;
import org.dromara.formalities.service.IBusFormalitiesAnnexService;
import org.dromara.formalities.service.IBusFormalitiesAreConsolidatedService; import org.dromara.formalities.service.IBusFormalitiesAreConsolidatedService;
import org.springframework.web.multipart.MultipartFile; import org.dromara.formalities.service.IBusListOfFormalitiesService;
import org.dromara.formalities.utils.TreeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.*; import java.util.*;
import static org.dromara.common.constant.MinioPathConstant.FormalitiesAnnex;
/** /**
* 合规性手续合账Service业务层处理 * 合规性手续合账Service业务层处理
* *
@ -58,7 +56,7 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
* @return 合规性手续合账 * @return 合规性手续合账
*/ */
@Override @Override
public BusFormalitiesAreConsolidatedVo queryById(Long id){ public BusFormalitiesAreConsolidatedVo queryById(Long id) {
return baseMapper.selectVoById(id); return baseMapper.selectVoById(id);
} }
@ -179,14 +177,14 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
/** /**
* 保存前的数据校验 * 保存前的数据校验
*/ */
private void validEntityBeforeSave(BusFormalitiesAreConsolidated entity){ private void validEntityBeforeSave(BusFormalitiesAreConsolidated entity) {
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
// if (entity.getStatus() == 1){ // if (entity.getStatus() == 1){
// throw new ServiceException("已完成不允许修改!!!"); // throw new ServiceException("已完成不允许修改!!!");
// } // }
if (!FormalitiesStatusEnum.TOSTART.getText().equals(entity.getProcessingStatus()) if (!FormalitiesStatusEnum.TOSTART.getText().equals(entity.getProcessingStatus())
&& !FormalitiesStatusEnum.PROCESSING.getText().equals(entity.getProcessingStatus()) && !FormalitiesStatusEnum.PROCESSING.getText().equals(entity.getProcessingStatus())
&& !FormalitiesStatusEnum.DELETE.getText().equals(entity.getProcessingStatus())){ && !FormalitiesStatusEnum.DELETE.getText().equals(entity.getProcessingStatus())) {
throw new ServiceException("办理状态错误!!"); throw new ServiceException("办理状态错误!!");
} }
} }
@ -200,7 +198,7 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
*/ */
@Override @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){ if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验 //TODO 做一些业务上的校验,判断是否需要校验
} }
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;
@ -208,7 +206,7 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
@Override @Override
public Boolean editStatus(BusFormalitiesAreConsolidatedBo bo) { public Boolean editStatus(BusFormalitiesAreConsolidatedBo bo) {
if (bo.getProcessingStatus() ==null || bo.getProcessingStatus().isEmpty()){ if (bo.getProcessingStatus() == null || bo.getProcessingStatus().isEmpty()) {
throw new ServiceException("办理状态不能为空"); throw new ServiceException("办理状态不能为空");
} }
BusFormalitiesAreConsolidated busFormalitiesAreConsolidated = baseMapper.selectById(bo.getId()); BusFormalitiesAreConsolidated busFormalitiesAreConsolidated = baseMapper.selectById(bo.getId());
@ -223,7 +221,7 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
// } // }
busFormalitiesAreConsolidated.setProcessingStatus(bo.getProcessingStatus()); busFormalitiesAreConsolidated.setProcessingStatus(bo.getProcessingStatus());
if (FormalitiesStatusEnum.DELETE.getText().equals(busFormalitiesAreConsolidated.getProcessingStatus())){ if (FormalitiesStatusEnum.DELETE.getText().equals(busFormalitiesAreConsolidated.getProcessingStatus())) {
if (busFormalitiesAreConsolidated.getHead() == null) { if (busFormalitiesAreConsolidated.getHead() == null) {
throw new ServiceException("负责人为空不能提交"); throw new ServiceException("负责人为空不能提交");
} }
@ -238,7 +236,7 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
throw new ServiceException("手续材料为空不能提交"); throw new ServiceException("手续材料为空不能提交");
} }
busFormalitiesAreConsolidated.setActualCompletionTime(new Date()); busFormalitiesAreConsolidated.setActualCompletionTime(new Date());
}else { } else {
busFormalitiesAreConsolidated.setActualCompletionTime(null); busFormalitiesAreConsolidated.setActualCompletionTime(null);
} }
validEntityBeforeSave(busFormalitiesAreConsolidated); validEntityBeforeSave(busFormalitiesAreConsolidated);

View File

@ -77,7 +77,7 @@ public class PgsProgressCategoryController extends BaseController {
* *
* @param id 主键 * @param id 主键
*/ */
@SaCheckPermission("progress:progressCategory:query") @SaCheckPermission("progress:progressCategory:coordinate")
@GetMapping("/coordinate/{id}") @GetMapping("/coordinate/{id}")
public R<PgsProgressCategoryCoordinateVo> getCoordinate(@NotNull(message = "主键不能为空") public R<PgsProgressCategoryCoordinateVo> getCoordinate(@NotNull(message = "主键不能为空")
@PathVariable Long id) { @PathVariable Long id) {
@ -89,7 +89,7 @@ public class PgsProgressCategoryController extends BaseController {
* *
* @param projectId 项目主键 * @param projectId 项目主键
*/ */
@SaCheckPermission("progress:progressCategory:query") @SaCheckPermission("progress:progressCategory:projectNumber")
@GetMapping("/project/number/{projectId}") @GetMapping("/project/number/{projectId}")
public R<PgsProgressCategoryProjectVo> getProjectNumber(@NotNull(message = "项目主键不能为空") public R<PgsProgressCategoryProjectVo> getProjectNumber(@NotNull(message = "项目主键不能为空")
@PathVariable Long projectId) { @PathVariable Long projectId) {
@ -101,7 +101,7 @@ public class PgsProgressCategoryController extends BaseController {
* *
* @param id 主键 * @param id 主键
*/ */
@SaCheckPermission("progress:progressCategory:query") @SaCheckPermission("progress:progressCategory:lastTime")
@GetMapping("/lastTime/{id}") @GetMapping("/lastTime/{id}")
public R<PgsProgressCategoryLastTimeVo> getLastTimeInfo(@NotNull(message = "主键不能为空") public R<PgsProgressCategoryLastTimeVo> getLastTimeInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) { @PathVariable Long id) {

View File

@ -1,5 +1,6 @@
package org.dromara.progress.domain.dto.progresscategory; package org.dromara.progress.domain.dto.progresscategory;
import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -14,6 +15,7 @@ public class PgsProgressCategoryCreatePriceReq {
/** /**
* 类别id * 类别id
*/ */
@NotNull(message = "类别id不能为空")
private Long id; private Long id;
/** /**

View File

@ -345,6 +345,19 @@ public class PgsProgressCategoryServiceImpl extends ServiceImpl<PgsProgressCateg
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
// todo 添加校验 // todo 添加校验
Long count = this.lambdaQuery()
.in(PgsProgressCategory::getParentId, ids)
.count();
if (count > 0) {
throw new ServiceException("请先删除子进度类别", HttpStatus.BAD_REQUEST);
}
List<PgsProgressCategory> categoryList = this.listByIds(ids);
for (PgsProgressCategory category : categoryList) {
BigDecimal completed = category.getCompleted();
if (completed != null && completed.compareTo(BigDecimal.ZERO) > 0) {
throw new ServiceException("该分类已有完成数量,无法删除", HttpStatus.BAD_REQUEST);
}
}
return this.removeBatchByIds(ids); return this.removeBatchByIds(ids);
} }

View File

@ -9,6 +9,7 @@ import org.dromara.workflow.common.constant.FlowConstant;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.time.temporal.ChronoUnit;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -203,6 +204,11 @@ public class FlowHisTaskVo implements Serializable {
*/ */
private String runDuration; private String runDuration;
/**
* 运行时长数字
*/
private Long runDurationNum;
/** /**
* 设置创建时间并计算任务运行时长 * 设置创建时间并计算任务运行时长
* *
@ -230,6 +236,7 @@ public class FlowHisTaskVo implements Serializable {
// 如果创建时间和更新时间均不为空,计算它们之间的时长 // 如果创建时间和更新时间均不为空,计算它们之间的时长
if (this.updateTime != null && this.createTime != null) { if (this.updateTime != null && this.createTime != null) {
this.runDuration = DateUtils.getTimeDifference(this.updateTime, this.createTime); this.runDuration = DateUtils.getTimeDifference(this.updateTime, this.createTime);
this.runDurationNum = DateUtils.difference(this.createTime, this.updateTime, ChronoUnit.SECONDS);
} }
} }