feat: (REQ-3300) 金额变更/附件的操作日志优化

This commit is contained in:
xudawei 2025-02-20 11:55:27 +08:00
parent d4ef303ca7
commit 39c3a295a2
3 changed files with 71 additions and 10 deletions

View File

@ -3,7 +3,7 @@ package cn.axzo.nanopart.visa.api.request;
import cn.axzo.framework.domain.ServiceException;
import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum;
import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum;
import com.alibaba.fastjson.JSONObject;
import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -73,11 +73,11 @@ public class ChangeStatusRequest {
/**
* 新的附件
*/
private List<JSONObject> newAttach;
private List<VisaDetailByIdResponse.VisaUploadFile> newAttach;
/**
* 原的附件
*/
private List<JSONObject> oldAttach;
private List<VisaDetailByIdResponse.VisaUploadFile> oldAttach;
/**
* 是否编辑表单

View File

@ -94,12 +94,29 @@ public class VisaLogParam {
return fetchChangeAttach(oldAttach, newAttach);
}
/**
* 获取删除附件信息
*/
public static List<String> deleteAttachWithObject(List<VisaDetailByIdResponse.VisaUploadFile> oldAttach, List<VisaDetailByIdResponse.VisaUploadFile> newAttach) {
return fetchChangeAttachWithObject(oldAttach, newAttach);
}
/**
* 获取上传的附件信息
*/
public static List<String> uploadAttach(List<JSONObject> newAttach, List<JSONObject> oldAttach) {
return fetchChangeAttach(newAttach, oldAttach);
}
/**
* 获取上传的附件信息
*/
public static List<String> uploadAttachWithObject(List<VisaDetailByIdResponse.VisaUploadFile> newAttach, List<VisaDetailByIdResponse.VisaUploadFile> oldAttach) {
return fetchChangeAttachWithObject(newAttach, oldAttach);
}
/**
* 获取变动的附件信息
* 计算集合的单差集即只返回集合1中有但是集合2中没有的元素例如
@ -116,7 +133,26 @@ public class VisaLogParam {
}
List<VisaDetailByIdResponse.VisaUploadFile> newFileDtoList = VisaDetailByIdResponse.VisaUploadFile.createListByJson(compareSec);
Collection<VisaDetailByIdResponse.VisaUploadFile> substractList = CollUtil.subtractToList(oldFileDtoList, newFileDtoList);
return fetchChangeAttachWithObject(oldFileDtoList, newFileDtoList);
}
/**
* 获取变动的附件信息
* 计算集合的单差集即只返回集合1中有但是集合2中没有的元素例如
* subtractToList([1,2,3,4],[2,3,4,5]) - [1]
*/
private static List<String> fetchChangeAttachWithObject(List<VisaDetailByIdResponse.VisaUploadFile> compareFir, List<VisaDetailByIdResponse.VisaUploadFile> compareSec) {
if (CollectionUtils.isEmpty(compareFir)) {
return Lists.newArrayList();
}
if (CollectionUtils.isEmpty(compareSec)) {
return compareFir.stream().map(VisaDetailByIdResponse.VisaUploadFile::getFileName).collect(Collectors.toList());
}
Collection<VisaDetailByIdResponse.VisaUploadFile> substractList = CollUtil.subtractToList(compareFir, compareSec);
if (CollectionUtils.isEmpty(substractList)) {
return Lists.newArrayList();
}

View File

@ -263,8 +263,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
.oldStatus(changeRecord.getStatus())
.newAmountChange(request.getNewAmountChange())
.oldAmountChange(request.getOldAmountChange())
.uploadAttach(VisaLogParam.uploadAttach(request.getNewAttach(), request.getOldAttach()))
.deleteAttach(VisaLogParam.deleteAttach(request.getOldAttach(), request.getNewAttach())).build());
.uploadAttach(VisaLogParam.uploadAttachWithObject(request.getNewAttach(), request.getOldAttach()))
.deleteAttach(VisaLogParam.deleteAttachWithObject(request.getOldAttach(), request.getNewAttach())).build());
return true;
}
@ -707,6 +707,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
public Long approveCreateVisaChangeRecord(VisaChangeApproveCreateReq req) {
/*校验*/
validVisaChangeForm(req);
ChangeRecord changeRecord = this.getById(req.getId());
List<VisaDetailByIdResponse.VisaUploadFile> visaUploadFiles = this.buildAttachUploadFile(req.getId());
/*保存签证信息*/
Long visaId = tempCreateVisaChangeRecord(req);
@ -717,16 +720,38 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
// 更新主表中的审批字段记录变量表的审批的信息
updateApprovalInfo(visaId, processInstanceId);
// 更新主表状态
changeStatus(ChangeStatusRequest.builder()
this.changeStatusWhenApproveCreate(visaId, req, changeRecord, visaUploadFiles);
return visaId;
}
/**
* 更改状态-申请审批时
* @param visaId 变更签证id
* @param req 请求主要是获取最新的属性比如变更金额/附件
* @param changeRecord 变更签证对象主要获取老的属性比如变更金额
* @param visaUploadFiles 上传附件主要是老的属性
*/
public void changeStatusWhenApproveCreate(Long visaId, VisaChangeApproveCreateReq req, ChangeRecord changeRecord, List<VisaDetailByIdResponse.VisaUploadFile> visaUploadFiles) {
ChangeStatusRequest changeStatusRequest = ChangeStatusRequest.builder()
.visaId(visaId)
.updateStatus(VisaStatusEnum.APPROVING)
.personId(req.getOperatorPersonId())
.ouId(req.getOperatorOuId())
.workspaceId(req.getRelationWorkspaceId())
.editFormFlag(true)
.build());
return visaId;
.newAmountChange(req.getAmountChange())
.oldAmountChange(changeRecord.getAmountChange())
.build();
if (CollectionUtils.isNotEmpty(req.getAttach())) {
changeStatusRequest.setNewAttach(BeanUtil.copyToList(req.getAttach(), VisaDetailByIdResponse.VisaUploadFile.class));
}
if (CollectionUtils.isNotEmpty(visaUploadFiles)) {
changeStatusRequest.setOldAttach(visaUploadFiles);
}
// 更新主表状态
changeStatus(changeStatusRequest);
}
private String createProcessInstance(VisaChangeApproveCreateReq req, Long visaId) {