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);
}

}

posted @ 2025-05-30 21:59  龚恒。  阅读(16)  评论(0)    收藏  举报