61
所花时间:半天
博客量;1
代码量:很多
所学知识:软件工程个人能力测试,概率论,计算机网络。
@Service
public class HiddenDangerService {
@Autowired
private HiddenDangerRepository hiddenDangerRepository;
@Autowired
private HiddenDangerHistoryRepository hiddenDangerHistoryRepository;
public HiddenDanger saveHiddenDanger(HiddenDanger hiddenDanger, String operator) {
if (hiddenDanger.getId() == null) {
hiddenDanger.setEntry_date(new Date());
HiddenDanger savedDanger = hiddenDangerRepository.save(hiddenDanger);
saveDangerHistory(savedDanger, 1, "增加", operator);
return savedDanger;
} else {
Optional<HiddenDanger> optionalDanger = hiddenDangerRepository.findById(hiddenDanger.getId());
if (optionalDanger.isPresent()) {
HiddenDanger existingDanger = optionalDanger.get();
BeanUtils.copyProperties(hiddenDanger, existingDanger, "id", "entry_date");
HiddenDanger updatedDanger = hiddenDangerRepository.save(existingDanger);
Integer maxVersion = getMaxVersion(updatedDanger.getDanger_code());
saveDangerHistory(updatedDanger, maxVersion + 1, "更新", operator);
return updatedDanger;
} else {
System.out.println("未找到 ID 为 " + hiddenDanger.getId() + " 的记录,无法更新。");
return null;
}
}
}
public void deleteHiddenDanger(int id, String operator) {
Optional<HiddenDanger> optionalDanger = hiddenDangerRepository.findById(id);
if (optionalDanger.isPresent()) {
HiddenDanger danger = optionalDanger.get();
Integer maxVersion = getMaxVersion(danger.getDanger_code());
saveDangerHistory(danger, maxVersion + 1, "删除", operator);
hiddenDangerRepository.deleteById(id);
}
}
private void saveDangerHistory(HiddenDanger danger, Integer version, String operationType, String operator) {
HiddenDangerHistory history = new HiddenDangerHistory();
BeanUtils.copyProperties(danger, history);
history.setId(null);
history.setVersion(version);
history.setOperation_type(operationType);
history.setOperation_time(new Date());
history.setPerson(operator);
hiddenDangerHistoryRepository.save(history);
}
private Integer getMaxVersion(String dangerCode) {
return hiddenDangerHistoryRepository.findByDangerCode(dangerCode)
.stream()
.mapToInt(HiddenDangerHistory::getVersion)
.max()
.orElse(0);
}
}
浙公网安备 33010602011771号