diff --git a/common/common-botp/src/main/java/apelet/common/botp/controller/ReverseWritingRulesController.java b/common/common-botp/src/main/java/apelet/common/botp/controller/ReverseWritingRulesController.java index 8203af4..103c8aa 100644 --- a/common/common-botp/src/main/java/apelet/common/botp/controller/ReverseWritingRulesController.java +++ b/common/common-botp/src/main/java/apelet/common/botp/controller/ReverseWritingRulesController.java @@ -24,6 +24,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.util.*; @@ -87,35 +88,44 @@ public class ReverseWritingRulesController { @PostMapping(value = "/saveOrUpdate") @Schema(description = "添加主数据和分录数据") + @Transactional(rollbackFor = Exception.class) public ResponseResult addAll(@RequestBody ReverseWritingRulesDto dto) { if (dto == null) { - ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED); + return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED); } ReverseWritingRules reverseWritingRules = new ReverseWritingRules(); - reverseWritingRules.setCreateTime(new Date()); - BeanUtils.copyProperties(dto, reverseWritingRules); if (reverseWritingRules.getId() != null) { - rulesService.removeById(reverseWritingRules.getId()); + // 更新走按主键就地更新,避免删除重建导致创建人等审计字段丢失 + ReverseWritingRules original = rulesService.getById(reverseWritingRules.getId()); + if (original != null) { + reverseWritingRules.setCreateUserId(original.getCreateUserId()); + reverseWritingRules.setCreateTime(original.getCreateTime()); + } + reverseWritingRules.setUpdateTime(new Date()); + if (!rulesService.updateById(reverseWritingRules)) { + throw new MyRuntimeException("反写规则配置数据保存失败!"); + } + // 分录按规则id全量覆盖 formulaService.remove(new LambdaQueryWrapper().eq(ReverseWritingFormula::getRulesId, reverseWritingRules.getId())); businessService.remove(new LambdaQueryWrapper().eq(ReverseWritingBusiness::getRulesId, reverseWritingRules.getId())); - }else{ - reverseWritingRules.setId(dto.getId()); - } - boolean save = rulesService.save(reverseWritingRules); - if (!save) { - throw new MyRuntimeException("反写规则配置数据保存失败!"); + } else { + reverseWritingRules.setCreateTime(new Date()); + boolean save = rulesService.save(reverseWritingRules); + if (!save) { + throw new MyRuntimeException("反写规则配置数据保存失败!"); + } } //反写公式 List formulaList = dto.getFormulaList(); - formulaList.forEach(f -> f.setRulesId(reverseWritingRules.getId())); - if (!formulaList.isEmpty()) { + if (ObjectUtil.isNotEmpty(formulaList)) { + formulaList.forEach(f -> f.setRulesId(reverseWritingRules.getId())); formulaService.saveBatch(formulaList); } // 业务规则 List businessList = dto.getBusinessList(); - businessList.forEach(f -> f.setRulesId(reverseWritingRules.getId())); - if (!businessList.isEmpty()) { + if (ObjectUtil.isNotEmpty(businessList)) { + businessList.forEach(f -> f.setRulesId(reverseWritingRules.getId())); businessService.saveBatch(businessList); } return ResponseResult.success("保存成功"); @@ -123,9 +133,10 @@ public class ReverseWritingRulesController { @PostMapping(value = "/removeAllById") @Schema(description = "删除") + @Transactional(rollbackFor = Exception.class) public ResponseResult removeAllById(@MyRequestBody Long id) { if (ObjectUtil.isEmpty(id)) { - ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED); + return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED); } rulesService.removeById(id); formulaService.remove(new LambdaQueryWrapper().eq(ReverseWritingFormula::getRulesId, id));