fix: 优化过鱼设施草稿数据日志联动
This commit is contained in:
parent
3156eda07f
commit
d28b75ec84
@ -0,0 +1,19 @@
|
|||||||
|
package com.yfd.platform.config;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||||
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class JacksonConfig {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public ObjectMapper objectMapper() {
|
||||||
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
mapper.registerModule(new JavaTimeModule());
|
||||||
|
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
||||||
|
return mapper;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,8 +1,12 @@
|
|||||||
package com.yfd.platform.data.controller;
|
package com.yfd.platform.data.controller;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.yfd.platform.common.DataSourceRequest;
|
||||||
import com.yfd.platform.config.ResponseResult;
|
import com.yfd.platform.config.ResponseResult;
|
||||||
import com.yfd.platform.data.domain.ApprovalChangeLog;
|
import com.yfd.platform.data.domain.ApprovalChangeLog;
|
||||||
|
import com.yfd.platform.data.domain.ApprovalLog;
|
||||||
import com.yfd.platform.data.service.IApprovalChangeLogService;
|
import com.yfd.platform.data.service.IApprovalChangeLogService;
|
||||||
|
import com.yfd.platform.utils.DataSourceRequestUtil;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
@ -31,6 +35,13 @@ public class ApprovalChangeLogController {
|
|||||||
return ResponseResult.successData(list);
|
return ResponseResult.successData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/queryPageList")
|
||||||
|
@Operation(summary = "分页查询变更记录列表(通用)")
|
||||||
|
public ResponseResult queryPageList(@RequestBody DataSourceRequest request) {
|
||||||
|
Page<ApprovalChangeLog> approvalChangeLogPage = DataSourceRequestUtil.executeQuery(request, ApprovalChangeLog.class, approvalChangeLogService);
|
||||||
|
return ResponseResult.successData(approvalChangeLogPage);
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/getByApprovalId")
|
@GetMapping("/getByApprovalId")
|
||||||
@Operation(summary = "根据审批批次ID查询变更记录")
|
@Operation(summary = "根据审批批次ID查询变更记录")
|
||||||
public ResponseResult getByApprovalId(@RequestParam String approvalId) {
|
public ResponseResult getByApprovalId(@RequestParam String approvalId) {
|
||||||
|
|||||||
@ -1,8 +1,12 @@
|
|||||||
package com.yfd.platform.data.controller;
|
package com.yfd.platform.data.controller;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.yfd.platform.common.DataSourceRequest;
|
||||||
import com.yfd.platform.config.ResponseResult;
|
import com.yfd.platform.config.ResponseResult;
|
||||||
import com.yfd.platform.data.domain.ApprovalLog;
|
import com.yfd.platform.data.domain.ApprovalLog;
|
||||||
|
import com.yfd.platform.data.domain.ApprovalMain;
|
||||||
import com.yfd.platform.data.service.IApprovalLogService;
|
import com.yfd.platform.data.service.IApprovalLogService;
|
||||||
|
import com.yfd.platform.utils.DataSourceRequestUtil;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
@ -31,6 +35,14 @@ public class ApprovalLogController {
|
|||||||
return ResponseResult.successData(list);
|
return ResponseResult.successData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/queryPageList")
|
||||||
|
@Operation(summary = "分页查询审批日志列表(通用)")
|
||||||
|
public ResponseResult queryPageList(@RequestBody DataSourceRequest request) {
|
||||||
|
Page<ApprovalLog> approvalLogPage = DataSourceRequestUtil.executeQuery(request, ApprovalLog.class, approvalLogService);
|
||||||
|
return ResponseResult.successData(approvalLogPage);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("/getByApprovalId")
|
@GetMapping("/getByApprovalId")
|
||||||
@Operation(summary = "根据审批批次ID查询日志")
|
@Operation(summary = "根据审批批次ID查询日志")
|
||||||
public ResponseResult getByApprovalId(@RequestParam String approvalId) {
|
public ResponseResult getByApprovalId(@RequestParam String approvalId) {
|
||||||
|
|||||||
@ -1,9 +1,11 @@
|
|||||||
package com.yfd.platform.data.controller;
|
package com.yfd.platform.data.controller;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.yfd.platform.common.DataSourceRequest;
|
||||||
import com.yfd.platform.config.ResponseResult;
|
import com.yfd.platform.config.ResponseResult;
|
||||||
import com.yfd.platform.data.domain.ApprovalMain;
|
import com.yfd.platform.data.domain.ApprovalMain;
|
||||||
import com.yfd.platform.data.service.IApprovalMainService;
|
import com.yfd.platform.data.service.IApprovalMainService;
|
||||||
|
import com.yfd.platform.utils.DataSourceRequestUtil;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
@ -36,6 +38,15 @@ public class ApprovalMainController {
|
|||||||
return ResponseResult.successData(result);
|
return ResponseResult.successData(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/queryPageList")
|
||||||
|
@Operation(summary = "分页查询审批列表(通用)")
|
||||||
|
public ResponseResult queryPageList(@RequestBody DataSourceRequest request) {
|
||||||
|
Page<ApprovalMain> approvalMainPage = DataSourceRequestUtil.executeQuery(request, ApprovalMain.class, approvalMainService);
|
||||||
|
return ResponseResult.successData(approvalMainPage);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("/getById")
|
@GetMapping("/getById")
|
||||||
@Operation(summary = "根据ID查询审批")
|
@Operation(summary = "根据ID查询审批")
|
||||||
public ResponseResult getById(@RequestParam Long id) {
|
public ResponseResult getById(@RequestParam Long id) {
|
||||||
|
|||||||
@ -7,11 +7,14 @@ import com.yfd.platform.data.domain.FishDraftData;
|
|||||||
import com.yfd.platform.data.domain.FishImportRequest;
|
import com.yfd.platform.data.domain.FishImportRequest;
|
||||||
import com.yfd.platform.data.domain.FishImportResult;
|
import com.yfd.platform.data.domain.FishImportResult;
|
||||||
import com.yfd.platform.data.domain.ImportTask;
|
import com.yfd.platform.data.domain.ImportTask;
|
||||||
|
import com.yfd.platform.data.domain.BatchApproveRequest;
|
||||||
|
import com.yfd.platform.data.domain.BatchRejectRequest;
|
||||||
import com.yfd.platform.data.domain.vo.FishDraftDataVO;
|
import com.yfd.platform.data.domain.vo.FishDraftDataVO;
|
||||||
import com.yfd.platform.data.service.IFishDraftDataService;
|
import com.yfd.platform.data.service.IFishDraftDataService;
|
||||||
import com.yfd.platform.data.service.IFishImportService;
|
import com.yfd.platform.data.service.IFishImportService;
|
||||||
import com.yfd.platform.data.service.IImportTaskService;
|
import com.yfd.platform.data.service.IImportTaskService;
|
||||||
import com.yfd.platform.utils.KendoUtil;
|
import com.yfd.platform.utils.KendoUtil;
|
||||||
|
import com.yfd.platform.utils.SecurityUtils;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
@ -91,6 +94,19 @@ public class FishDraftDataController {
|
|||||||
return result ? ResponseResult.success("保存成功") : ResponseResult.error("保存失败");
|
return result ? ResponseResult.success("保存成功") : ResponseResult.error("保存失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/batchSaveDraft")
|
||||||
|
@Operation(summary = "批量保存草稿")
|
||||||
|
public ResponseResult saveDraft(@RequestBody List<FishDraftData> fishDraftDataList) {
|
||||||
|
|
||||||
|
fishDraftDataList.forEach(fishDraftData -> {
|
||||||
|
fishDraftData.setStatus("DRAFT");
|
||||||
|
fishDraftData.setDeletedFlag(0);
|
||||||
|
fishDraftData.setLockFlag(0);
|
||||||
|
});
|
||||||
|
boolean result = fishDraftDataService.saveBatch(fishDraftDataList);
|
||||||
|
return result ? ResponseResult.success("保存成功") : ResponseResult.error("保存失败");
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("/updateDraft")
|
@PostMapping("/updateDraft")
|
||||||
@Operation(summary = "更新草稿")
|
@Operation(summary = "更新草稿")
|
||||||
public ResponseResult updateDraft(@RequestBody FishDraftData fishDraftData) {
|
public ResponseResult updateDraft(@RequestBody FishDraftData fishDraftData) {
|
||||||
@ -130,17 +146,15 @@ public class FishDraftDataController {
|
|||||||
|
|
||||||
@PostMapping("/batchApprove")
|
@PostMapping("/batchApprove")
|
||||||
@Operation(summary = "批量审批通过")
|
@Operation(summary = "批量审批通过")
|
||||||
public ResponseResult batchApprove(@RequestBody List<String> ids,
|
public ResponseResult batchApprove(@RequestBody BatchApproveRequest request) {
|
||||||
@RequestParam(required = false) String approveComment) {
|
boolean result = fishDraftDataService.batchApprove(request.getIds(), request.getApproveComment());
|
||||||
boolean result = fishDraftDataService.batchApprove(ids, approveComment);
|
|
||||||
return result ? ResponseResult.success("审批通过") : ResponseResult.error("审批失败");
|
return result ? ResponseResult.success("审批通过") : ResponseResult.error("审批失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/reject")
|
@PostMapping("/reject")
|
||||||
@Operation(summary = "审批驳回")
|
@Operation(summary = "审批驳回")
|
||||||
public ResponseResult batchReject(@RequestParam String id,
|
public ResponseResult batchReject(@RequestBody BatchRejectRequest request) {
|
||||||
@RequestParam String rejectReason) {
|
boolean result = fishDraftDataService.batchReject(request.getId(), request.getRejectReason());
|
||||||
boolean result = fishDraftDataService.batchReject(id, rejectReason);
|
|
||||||
return result ? ResponseResult.success("驳回成功") : ResponseResult.error("驳回失败");
|
return result ? ResponseResult.success("驳回成功") : ResponseResult.error("驳回失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,9 +182,9 @@ public class FishDraftDataController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/update")
|
@PostMapping("/update")
|
||||||
@Operation(summary = "修改过鱼数据")
|
@Operation(summary = "审批人修改过鱼数据(记录变更日志)")
|
||||||
public ResponseResult update(@RequestBody FishDraftData fishDraftData) {
|
public ResponseResult update(@RequestBody FishDraftData fishDraftData) {
|
||||||
boolean result = fishDraftDataService.updateById(fishDraftData);
|
boolean result = fishDraftDataService.updateByIdWithLog(fishDraftData);
|
||||||
return result ? ResponseResult.success("修改成功") : ResponseResult.error("修改失败");
|
return result ? ResponseResult.success("修改成功") : ResponseResult.error("修改失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -190,8 +204,7 @@ public class FishDraftDataController {
|
|||||||
|
|
||||||
@PostMapping("/importZip")
|
@PostMapping("/importZip")
|
||||||
@Operation(summary = "导入ZIP过鱼数据(每个用户同时只能进行一次导入)")
|
@Operation(summary = "导入ZIP过鱼数据(每个用户同时只能进行一次导入)")
|
||||||
public ResponseResult importZip(@RequestParam("file") MultipartFile file,
|
public ResponseResult importZip(@RequestParam("file") MultipartFile file) {
|
||||||
@RequestParam String uploadUserId) {
|
|
||||||
if (file == null || file.isEmpty()) {
|
if (file == null || file.isEmpty()) {
|
||||||
return ResponseResult.error("请上传文件");
|
return ResponseResult.error("请上传文件");
|
||||||
}
|
}
|
||||||
@ -199,7 +212,7 @@ public class FishDraftDataController {
|
|||||||
if (fileName == null || (!fileName.endsWith(".zip"))) {
|
if (fileName == null || (!fileName.endsWith(".zip"))) {
|
||||||
return ResponseResult.error("请上传ZIP文件(.zip)");
|
return ResponseResult.error("请上传ZIP文件(.zip)");
|
||||||
}
|
}
|
||||||
|
String uploadUserId = SecurityUtils.getUserId();
|
||||||
if (importTaskService.hasImportingTask(uploadUserId)) {
|
if (importTaskService.hasImportingTask(uploadUserId)) {
|
||||||
return ResponseResult.error("您有正在进行的导入任务,请等待完成后重试");
|
return ResponseResult.error("您有正在进行的导入任务,请等待完成后重试");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,20 @@
|
|||||||
|
package com.yfd.platform.data.domain;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量审批请求参数
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Schema(description = "批量审批请求参数")
|
||||||
|
public class BatchApproveRequest {
|
||||||
|
|
||||||
|
@Schema(description = "草稿数据ID列表")
|
||||||
|
private List<String> ids;
|
||||||
|
|
||||||
|
@Schema(description = "审批意见")
|
||||||
|
private String approveComment;
|
||||||
|
}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
package com.yfd.platform.data.domain;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审批驳回请求参数
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Schema(description = "审批驳回请求参数")
|
||||||
|
public class BatchRejectRequest {
|
||||||
|
|
||||||
|
@Schema(description = "草稿数据ID")
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Schema(description = "驳回原因")
|
||||||
|
private String rejectReason;
|
||||||
|
}
|
||||||
@ -106,7 +106,7 @@ public class FishDraftData implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 审批批次ID
|
* 审批批次ID
|
||||||
*/
|
*/
|
||||||
private Long approvalId;
|
private String approvalId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 状态(DRAFT未提交 / SUBMITTED已提交 / APPROVED已通过 / REJECTED已驳回)
|
* 状态(DRAFT未提交 / SUBMITTED已提交 / APPROVED已通过 / REJECTED已驳回)
|
||||||
|
|||||||
@ -110,7 +110,7 @@ public class FishDraftDataVO implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 审批批次ID
|
* 审批批次ID
|
||||||
*/
|
*/
|
||||||
private Long approvalId;
|
private String approvalId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 状态(DRAFT未提交 / SUBMITTED已提交 / APPROVED已通过 / REJECTED已驳回)
|
* 状态(DRAFT未提交 / SUBMITTED已提交 / APPROVED已通过 / REJECTED已驳回)
|
||||||
|
|||||||
@ -86,4 +86,9 @@ public interface IFishDraftDataService extends IService<FishDraftData> {
|
|||||||
boolean unlockDraft(String id);
|
boolean unlockDraft(String id);
|
||||||
|
|
||||||
boolean batchRemoveDraft(List<String> ids);
|
boolean batchRemoveDraft(List<String> ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审批人修改数据并记录变更日志
|
||||||
|
*/
|
||||||
|
boolean updateByIdWithLog(FishDraftData fishDraftData);
|
||||||
}
|
}
|
||||||
@ -7,22 +7,24 @@ 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 com.yfd.platform.common.DataSourceLoadOptionsBase;
|
import com.yfd.platform.common.DataSourceLoadOptionsBase;
|
||||||
import com.yfd.platform.common.DataSourceRequest;
|
import com.yfd.platform.common.DataSourceRequest;
|
||||||
|
import com.yfd.platform.data.domain.ApprovalMain;
|
||||||
import com.yfd.platform.data.domain.FishDraftData;
|
import com.yfd.platform.data.domain.FishDraftData;
|
||||||
import com.yfd.platform.data.domain.vo.FishDraftDataVO;
|
import com.yfd.platform.data.domain.vo.FishDraftDataVO;
|
||||||
import com.yfd.platform.data.mapper.FishDraftDataMapper;
|
import com.yfd.platform.data.mapper.FishDraftDataMapper;
|
||||||
import com.yfd.platform.data.service.IApprovalChangeLogService;
|
import com.yfd.platform.data.service.IApprovalChangeLogService;
|
||||||
|
import com.yfd.platform.data.service.IApprovalLogService;
|
||||||
import com.yfd.platform.data.service.IApprovalMainService;
|
import com.yfd.platform.data.service.IApprovalMainService;
|
||||||
import com.yfd.platform.data.service.IFishDraftDataService;
|
import com.yfd.platform.data.service.IFishDraftDataService;
|
||||||
import com.yfd.platform.utils.KendoUtil;
|
import com.yfd.platform.utils.KendoUtil;
|
||||||
import com.yfd.platform.utils.QgcQueryWrapperUtil;
|
import com.yfd.platform.utils.QgcQueryWrapperUtil;
|
||||||
import com.yfd.platform.utils.SecurityUtils;
|
import com.yfd.platform.utils.SecurityUtils;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@ -41,6 +43,12 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
|
|||||||
@Resource
|
@Resource
|
||||||
private IApprovalChangeLogService approvalChangeLogService;
|
private IApprovalChangeLogService approvalChangeLogService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IApprovalLogService approvalLogService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ObjectMapper objectMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<FishDraftDataVO> queryPageList(DataSourceRequest dataSourceRequest) {
|
public Page<FishDraftDataVO> queryPageList(DataSourceRequest dataSourceRequest) {
|
||||||
Page<FishDraftDataVO> page = KendoUtil.getPage(dataSourceRequest);
|
Page<FishDraftDataVO> page = KendoUtil.getPage(dataSourceRequest);
|
||||||
@ -110,8 +118,28 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
|
|||||||
if (existing == null || existing.getLockFlag() == 1) {
|
if (existing == null || existing.getLockFlag() == 1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
fishDraftData.setStatus("DRAFT");
|
boolean isSubmitted = existing.getApprovalId() != null && StrUtil.isNotBlank(existing.getApprovalId());
|
||||||
return this.updateById(fishDraftData);
|
try {
|
||||||
|
String beforeJson = objectMapper.writeValueAsString(existing);
|
||||||
|
fishDraftData.setStatus(existing.getStatus());
|
||||||
|
boolean result = this.updateById(fishDraftData);
|
||||||
|
if (result && isSubmitted) {
|
||||||
|
FishDraftData after = this.getById(fishDraftData.getId());
|
||||||
|
String afterJson = objectMapper.writeValueAsString(after);
|
||||||
|
String changeJson = buildChangeJson(beforeJson, afterJson, existing, after);
|
||||||
|
approvalChangeLogService.logChange(
|
||||||
|
existing.getApprovalId(),
|
||||||
|
fishDraftData.getId(),
|
||||||
|
"FISH",
|
||||||
|
"UPDATE",
|
||||||
|
changeJson,
|
||||||
|
SecurityUtils.getUserId()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException("记录变更日志失败", e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -147,22 +175,53 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
|
|||||||
if (fishDraftData == null || fishDraftData.getLockFlag() == 1) {
|
if (fishDraftData == null || fishDraftData.getLockFlag() == 1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ApprovalMain approvalMain = new ApprovalMain();
|
||||||
|
approvalMain.setApprovalNo("APR" + System.currentTimeMillis());
|
||||||
|
approvalMain.setBizType("FISH");
|
||||||
|
approvalMain.setDataCount(1);
|
||||||
|
approvalMain.setApplyUserId(operatorId);
|
||||||
|
approvalMain.setApplyTime(new Date());
|
||||||
|
approvalMain.setStatus("PENDING");
|
||||||
|
approvalMainService.save(approvalMain);
|
||||||
|
|
||||||
|
fishDraftData.setApprovalId(approvalMain.getId());
|
||||||
fishDraftData.setStatus("SUBMITTED");
|
fishDraftData.setStatus("SUBMITTED");
|
||||||
fishDraftData.setSubmitTime(new Date());
|
fishDraftData.setSubmitTime(new Date());
|
||||||
return this.updateById(fishDraftData);
|
boolean result = this.updateById(fishDraftData);
|
||||||
|
if (result) {
|
||||||
|
approvalLogService.logSubmit(approvalMain.getId(), operatorId, "提交草稿");
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public boolean submitDrafts(List<String> ids) {
|
public boolean submitDrafts(List<String> ids) {
|
||||||
for (String id : ids) {
|
if (ids == null || ids.isEmpty()) {
|
||||||
FishDraftData fishDraftData = this.getById(id);
|
return false;
|
||||||
if (fishDraftData != null && fishDraftData.getLockFlag() == 0) {
|
|
||||||
fishDraftData.setStatus("SUBMITTED");
|
|
||||||
fishDraftData.setSubmitTime(new Date());
|
|
||||||
this.updateById(fishDraftData);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
String operatorId = SecurityUtils.getUserId();
|
||||||
|
|
||||||
|
ApprovalMain approvalMain = new ApprovalMain();
|
||||||
|
approvalMain.setApprovalNo("APR" + System.currentTimeMillis());
|
||||||
|
approvalMain.setBizType("FISH");
|
||||||
|
approvalMain.setDataCount(ids.size());
|
||||||
|
approvalMain.setApplyUserId(operatorId);
|
||||||
|
approvalMain.setApplyTime(new Date());
|
||||||
|
approvalMain.setStatus("PENDING");
|
||||||
|
approvalMainService.save(approvalMain);
|
||||||
|
|
||||||
|
LambdaUpdateWrapper<FishDraftData> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
|
updateWrapper.in(FishDraftData::getId, ids);
|
||||||
|
updateWrapper.eq(FishDraftData::getLockFlag, 0);
|
||||||
|
updateWrapper.set(FishDraftData::getApprovalId, approvalMain.getId());
|
||||||
|
updateWrapper.set(FishDraftData::getStatus, "SUBMITTED");
|
||||||
|
updateWrapper.set(FishDraftData::getSubmitTime, new Date());
|
||||||
|
this.update(updateWrapper);
|
||||||
|
|
||||||
|
|
||||||
|
approvalLogService.logSubmit(approvalMain.getId(), operatorId, "批量提交草稿,共" + ids.size() + "条");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,34 +233,73 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
for (String id : ids) {
|
String operatorId = SecurityUtils.getUserId();
|
||||||
FishDraftData fishDraftData = this.getById(id);
|
|
||||||
if (fishDraftData != null && "SUBMITTED".equals(fishDraftData.getStatus())) {
|
List<FishDraftData> dataList = this.listByIds(ids);
|
||||||
fishDraftData.setStatus("APPROVED");
|
Set<String> processedApprovalIds = new HashSet<>();
|
||||||
fishDraftData.setApproveTime(now);
|
List<String> validIds = new ArrayList<>();
|
||||||
fishDraftData.setUpdatedBy(SecurityUtils.getUserId());
|
|
||||||
this.updateById(fishDraftData);
|
for (FishDraftData fishDraftData : dataList) {
|
||||||
|
if ("SUBMITTED".equals(fishDraftData.getStatus())) {
|
||||||
|
validIds.add(fishDraftData.getId());
|
||||||
|
if (fishDraftData.getApprovalId() != null) {
|
||||||
|
processedApprovalIds.add(fishDraftData.getApprovalId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!validIds.isEmpty()) {
|
||||||
|
LambdaUpdateWrapper<FishDraftData> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
|
updateWrapper.in(FishDraftData::getId, validIds);
|
||||||
|
updateWrapper.set(FishDraftData::getStatus, "APPROVED");
|
||||||
|
updateWrapper.set(FishDraftData::getApproveTime, now);
|
||||||
|
updateWrapper.set(FishDraftData::getUpdatedBy, operatorId);
|
||||||
|
this.update(updateWrapper);
|
||||||
|
for (String approvalId : processedApprovalIds) {
|
||||||
|
ApprovalMain approvalMain = approvalMainService.getById(approvalId);
|
||||||
|
approvalLogService.logApprove(approvalId, SecurityUtils.getUserId(), approveComment);
|
||||||
|
if (approvalMain != null) {
|
||||||
|
approvalMain.setStatus("APPROVED");
|
||||||
|
approvalMain.setApproverId(operatorId);
|
||||||
|
approvalMain.setApproveTime(now);
|
||||||
|
approvalMain.setRemark(approveComment);
|
||||||
|
approvalMainService.updateById(approvalMain);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public boolean batchReject(String id, String rejectReason) {
|
public boolean batchReject(String id, String rejectReason) {
|
||||||
if (StrUtil.isBlank( id)) {
|
if (StrUtil.isBlank(id)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (StrUtil.isBlank(rejectReason)) {
|
if (StrUtil.isBlank(rejectReason)) {
|
||||||
throw new IllegalArgumentException("驳回原因不能为空");
|
throw new IllegalArgumentException("驳回原因不能为空");
|
||||||
}
|
}
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
|
String operatorId = SecurityUtils.getUserId();
|
||||||
FishDraftData fishDraftData = this.getById(id);
|
FishDraftData fishDraftData = this.getById(id);
|
||||||
if (fishDraftData != null && "SUBMITTED".equals(fishDraftData.getStatus())) {
|
if (fishDraftData != null && "SUBMITTED".equals(fishDraftData.getStatus())) {
|
||||||
fishDraftData.setStatus("REJECTED");
|
fishDraftData.setStatus("REJECTED");
|
||||||
fishDraftData.setApproveTime(now);
|
fishDraftData.setApproveTime(now);
|
||||||
fishDraftData.setUpdatedBy(SecurityUtils.getUserId());
|
fishDraftData.setUpdatedBy(operatorId);
|
||||||
this.updateById(fishDraftData);
|
boolean result = this.updateById(fishDraftData);
|
||||||
|
if (result && fishDraftData.getApprovalId() != null) {
|
||||||
|
approvalLogService.logReject(fishDraftData.getApprovalId(), operatorId, rejectReason);
|
||||||
|
ApprovalMain approvalMain = approvalMainService.getById(fishDraftData.getApprovalId());
|
||||||
|
if (approvalMain != null) {
|
||||||
|
approvalMain.setStatus("REJECTED");
|
||||||
|
approvalMain.setApproverId(operatorId);
|
||||||
|
approvalMain.setApproveTime(now);
|
||||||
|
approvalMain.setRemark(rejectReason);
|
||||||
|
approvalMainService.updateById(approvalMain);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -228,5 +326,66 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
|
|||||||
return this.updateById(fishDraftData);
|
return this.updateById(fishDraftData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public boolean updateByIdWithLog(FishDraftData fishDraftData) {
|
||||||
|
FishDraftData existing = this.getById(fishDraftData.getId());
|
||||||
|
if (existing == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (existing.getApprovalId() == null || StrUtil.isBlank(existing.getApprovalId())) {
|
||||||
|
return this.updateById(fishDraftData);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
String beforeJson = objectMapper.writeValueAsString(existing);
|
||||||
|
boolean result = this.updateById(fishDraftData);
|
||||||
|
if (result) {
|
||||||
|
FishDraftData after = this.getById(fishDraftData.getId());
|
||||||
|
String afterJson = objectMapper.writeValueAsString(after);
|
||||||
|
String changeJson = buildChangeJson(beforeJson, afterJson, existing, after);
|
||||||
|
approvalChangeLogService.logChange(
|
||||||
|
existing.getApprovalId(),
|
||||||
|
fishDraftData.getId(),
|
||||||
|
"FISH",
|
||||||
|
"UPDATE",
|
||||||
|
changeJson,
|
||||||
|
SecurityUtils.getUserId()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException("记录变更日志失败", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildChangeJson(String beforeJson, String afterJson, FishDraftData before, FishDraftData after) {
|
||||||
|
try {
|
||||||
|
Map<String, Object> changeInfo = new LinkedHashMap<>();
|
||||||
|
changeInfo.put("before", objectMapper.readTree(beforeJson));
|
||||||
|
changeInfo.put("after", objectMapper.readTree(afterJson));
|
||||||
|
List<String> changedFields = new ArrayList<>();
|
||||||
|
if (!Objects.equals(before.getStcd(), after.getStcd())) changedFields.add("stcd");
|
||||||
|
if (!Objects.equals(before.getTm(), after.getTm())) changedFields.add("tm");
|
||||||
|
if (!Objects.equals(before.getFtp(), after.getFtp())) changedFields.add("ftp");
|
||||||
|
if (!Objects.equals(before.getFsz(), after.getFsz())) changedFields.add("fsz");
|
||||||
|
if (!Objects.equals(before.getFcnt(), after.getFcnt())) changedFields.add("fcnt");
|
||||||
|
if (!Objects.equals(before.getFwet(), after.getFwet())) changedFields.add("fwet");
|
||||||
|
if (!Objects.equals(before.getStrdt(), after.getStrdt())) changedFields.add("strdt");
|
||||||
|
if (!Objects.equals(before.getEnddt(), after.getEnddt())) changedFields.add("enddt");
|
||||||
|
if (!Objects.equals(before.getDirection(), after.getDirection())) changedFields.add("direction");
|
||||||
|
if (!Objects.equals(before.getYr(), after.getYr())) changedFields.add("yr");
|
||||||
|
if (!Objects.equals(before.getMouth(), after.getMouth())) changedFields.add("mouth");
|
||||||
|
if (!Objects.equals(before.getVdpth(), after.getVdpth())) changedFields.add("vdpth");
|
||||||
|
if (!Objects.equals(before.getPicpth(), after.getPicpth())) changedFields.add("picpth");
|
||||||
|
if (!Objects.equals(before.getIsfs(), after.getIsfs())) changedFields.add("isfs");
|
||||||
|
if (!Objects.equals(before.getSourceType(), after.getSourceType())) changedFields.add("sourceType");
|
||||||
|
if (!Objects.equals(before.getStatus(), after.getStatus())) changedFields.add("status");
|
||||||
|
changeInfo.put("changed_fields", changedFields);
|
||||||
|
return objectMapper.writeValueAsString(changeInfo);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return "{}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user