TbVmsSymbLibServiceVMP1.java 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package com.its.op.service.vms;
  2. import com.its.op.model.dto.vms.TbVmsSymbIfscDto;
  3. import com.its.op.model.dto.vms.TbVmsSymbLibDto;
  4. import com.its.op.model.dto.vms.TbVmsSymbLibIfscVMP1Dto;
  5. import com.its.op.model.entity.vms.TbVmsSymbLib;
  6. import com.its.op.repository.vms.TbVmsFormObjectRepository;
  7. import com.its.op.repository.vms.TbVmsSymbLibRepository;
  8. import lombok.extern.slf4j.Slf4j;
  9. import org.springframework.stereotype.Service;
  10. import javax.transaction.Transactional;
  11. import java.util.ArrayList;
  12. import java.util.ConcurrentModificationException;
  13. import java.util.List;
  14. @Slf4j
  15. @Service
  16. public class TbVmsSymbLibServiceVMP1 extends TbVmsSymbLibService {
  17. private final TbVmsSymbIfscService ifscService;
  18. public TbVmsSymbLibServiceVMP1(TbVmsSymbLibRepository repo, TbVmsFormObjectRepository formObjectRepository, TbVmsSymbIfscService ifscService) {
  19. super("VMP1", repo, formObjectRepository);
  20. this.ifscService = ifscService;
  21. }
  22. public Short getNewSymbolId() {
  23. return getNewSymbolId((short) 7000, (short) 7999);
  24. }
  25. public TbVmsSymbLibIfscVMP1Dto findAllById(Short id) {
  26. TbVmsSymbLib lib = requireOne(id);
  27. List<TbVmsSymbIfscDto> list = ifscService.findDataById(id);
  28. return TbVmsSymbLibIfscVMP1Dto.toDto(lib.toDto(), list);
  29. }
  30. @Transactional
  31. public TbVmsSymbLibDto deleteDataById(Short id) {
  32. int usageCount = findUsageCountBySymbolId(id);
  33. if (usageCount > 0) {
  34. throw new ConcurrentModificationException("사용중인 심볼 라이브러리 입니다. 삭제할 수 없습니다: " + id);
  35. }
  36. this.ifscService.deleteDataById(id);
  37. return deleteById(id);
  38. }
  39. @Transactional
  40. public TbVmsSymbLibIfscVMP1Dto mergeSymbIfscInfo(TbVmsSymbLibIfscVMP1Dto.TbVmsSymbLibIfscVMP1UpdReq req) {
  41. // 셀 데이터를 전체 삭제
  42. this.ifscService.deleteDataById(req.getSymbLibNmbr());
  43. // 심볼 정보 저장
  44. TbVmsSymbLibDto libDto = mergeInfo(req.toLibReq());
  45. // 셀 정보 저장
  46. List<TbVmsSymbIfscDto> cells = new ArrayList<>();
  47. for (TbVmsSymbIfscDto ifscDto : req.getCells()) {
  48. TbVmsSymbIfscDto.TbVmsSymbIfscUpdReq ifscReq = new TbVmsSymbIfscDto.TbVmsSymbIfscUpdReq(
  49. req.getSymbLibNmbr(), ifscDto.getCellId(), ifscDto.getPosx(), ifscDto.getPosy(), ifscDto.getVmsIfscId()
  50. );
  51. cells.add(this.ifscService.mergeInfo(ifscReq));
  52. }
  53. return TbVmsSymbLibIfscVMP1Dto.toDto(libDto, cells);
  54. }
  55. }