Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ public static class Payload {
private String name;
private String materialUnit;
private Integer baseQuantity;
private Integer standardQuantity; // κΈ°μ€€ μˆ˜λŸ‰ μΆ”κ°€
private Integer leadTime;
private boolean deleted;
private Long materialCategoryId;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,30 +29,35 @@ public void publishAllMaterialEvents() {
List<Material> materials = materialRepository.findAll();
for (Material material : materials) {
try {
// MaterialEvent.Payload 생성 (ν•„μš”μ— 따라 ν•„λ“œ λ§€ν•‘)
MaterialEvent.Payload payload = MaterialEvent.Payload.builder()
.materialId(material.getId())
.materialCode(material.getMaterialCode())
.name(material.getName())
.materialUnit(material.getMaterialUnit())
.baseQuantity(material.getBaseQuantity())
.leadTime(material.getLeadTime())
.standardCost(material.getStandardCost())
.deleted(false)
.materialCategoryId(material.getMaterialCategory().getId())

// ... ν•„μš”ν•œ ν•„λ“œ μΆ”κ°€ ...
// 전체 MaterialEvent 객체 생성
MaterialEvent materialEvent = MaterialEvent.builder()
.eventId(java.util.UUID.randomUUID().toString())
.eventType("MaterialCreated")
.version(material.getVersion())
.occurredAt(java.time.OffsetDateTime.now().toString())
.payload(MaterialEvent.Payload.builder()
.materialId(material.getId())
.materialCode(material.getMaterialCode())
.name(material.getName())
.materialUnit(material.getMaterialUnit())
.baseQuantity(material.getBaseQuantity())
.standardQuantity(material.getStandardQuantity() != null ? material.getStandardQuantity() : 1)
.leadTime(material.getLeadTime())
.standardCost(material.getStandardCost())
.deleted(false)
.materialCategoryId(material.getMaterialCategory().getId())
.build())
.build();

// Outbox μ—”ν‹°ν‹° 생성
Outbox outbox = Outbox.builder()
.aggregateType("MATERIAL")
.aggregateId(material.getId())
.eventType("MaterialCreated")
.payload(objectMapper.writeValueAsString(payload))
.payload(objectMapper.writeValueAsString(materialEvent))
.version(material.getVersion())
.occurredAt(OffsetDateTime.now())
.status(OutboxStatus.READY) // μƒνƒœ ν•„λ“œλͺ…에 맞게 μˆ˜μ •
.status(OutboxStatus.READY)
.build();

outboxRepository.save(outbox);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,32 +109,32 @@ public MaterialResponseDTO createMaterial(MaterialRequestDTO requestDTO) {

materialRepository.save(material);

// 이벀트 λ°œν–‰ - λΆ€ν’ˆ μ΄λ²€νŠΈμ™€ 같은 λ°©μ‹μœΌλ‘œ μˆ˜μ •
MaterialEvent.Payload payload = MaterialEvent.Payload.builder()
.materialId(material.getId())
.materialCode(material.getMaterialCode())
.name(material.getName())
.materialUnit(material.getMaterialUnit())
.baseQuantity(material.getBaseQuantity())
.leadTime(material.getLeadTime())
.deleted(false)
.materialCategoryId(category.getId())
.build();

MaterialEvent event = MaterialEvent.builder()
// 이벀트 λ°œν–‰ - 전체 MaterialEvent 객체 μ €μž₯
MaterialEvent materialEvent = MaterialEvent.builder()
.eventId(UUID.randomUUID().toString())
.eventType("MaterialCreated")
.version(material.getVersion())
.occurredAt(OffsetDateTime.now().toString())
.payload(payload)
.payload(MaterialEvent.Payload.builder()
.materialId(material.getId())
.materialCode(material.getMaterialCode())
.name(material.getName())
.materialUnit(material.getMaterialUnit())
.baseQuantity(material.getBaseQuantity())
.standardQuantity(material.getStandardQuantity() != null ? material.getStandardQuantity() : 1)
.leadTime(material.getLeadTime())
.deleted(false)
.materialCategoryId(category.getId())
.standardCost(material.getStandardCost())
.build())
.build();

outboxService.saveEvent(
"MATERIAL",
material.getId(),
"MaterialCreated",
material.getVersion(),
event.getPayload() // event 전체가 μ•„λ‹Œ payload만 전달
materialEvent
);

return new MaterialResponseDTO(material);
Expand Down Expand Up @@ -171,32 +171,32 @@ public MaterialResponseDTO updateMaterial(Long id, MaterialRequestDTO requestDTO
materialRepository.flush();


// 이벀트 λ°œν–‰ - λΆ€ν’ˆ μ΄λ²€νŠΈμ™€ 같은 λ°©μ‹μœΌλ‘œ μˆ˜μ •
MaterialEvent.Payload payload = MaterialEvent.Payload.builder()
.materialId(material.getId())
.materialCode(material.getMaterialCode())
.name(material.getName())
.materialUnit(material.getMaterialUnit())
.baseQuantity(material.getBaseQuantity())
.leadTime(material.getLeadTime())
.deleted(false)
.materialCategoryId(material.getMaterialCategory().getId())
.build();

MaterialEvent event = MaterialEvent.builder()
// 이벀트 λ°œν–‰ - 전체 MaterialEvent 객체 μ €μž₯
MaterialEvent materialEvent = MaterialEvent.builder()
.eventId(UUID.randomUUID().toString())
.eventType("MaterialUpdated")
.version(material.getVersion())
.occurredAt(OffsetDateTime.now().toString())
.payload(payload)
.payload(MaterialEvent.Payload.builder()
.materialId(material.getId())
.materialCode(material.getMaterialCode())
.name(material.getName())
.materialUnit(material.getMaterialUnit())
.baseQuantity(material.getBaseQuantity())
.standardQuantity(material.getStandardQuantity() != null ? material.getStandardQuantity() : 1)
.leadTime(material.getLeadTime())
.deleted(false)
.materialCategoryId(material.getMaterialCategory().getId())
.standardCost(material.getStandardCost())
.build())
.build();

outboxService.saveEvent(
"MATERIAL",
material.getId(),
"MaterialUpdated",
material.getVersion(),
event.getPayload() // event 전체가 μ•„λ‹Œ payload만 전달
materialEvent
);

return new MaterialResponseDTO(material);
Expand All @@ -208,32 +208,32 @@ public void deleteMaterial(Long id) {
Material material = materialRepository.findById(id)
.orElseThrow(() -> new NotFoundException(ErrorStatus.MATERIAL_NOT_FOUND));

// 이벀트 λ°œν–‰ (μ‚­μ œ 전에) - λΆ€ν’ˆ μ΄λ²€νŠΈμ™€ 같은 λ°©μ‹μœΌλ‘œ μˆ˜μ •
MaterialEvent.Payload payload = MaterialEvent.Payload.builder()
.materialId(material.getId())
.materialCode(material.getMaterialCode())
.name(material.getName())
.materialUnit(material.getMaterialUnit())
.baseQuantity(material.getBaseQuantity())
.leadTime(material.getLeadTime())
.deleted(true)
.materialCategoryId(material.getMaterialCategory().getId())
.build();

MaterialEvent event = MaterialEvent.builder()
// 이벀트 λ°œν–‰ (μ‚­μ œ 전에) - 전체 MaterialEvent 객체 μ €μž₯
MaterialEvent materialEvent = MaterialEvent.builder()
.eventId(UUID.randomUUID().toString())
.eventType("MaterialDeleted")
.version(material.getVersion())
.occurredAt(OffsetDateTime.now().toString())
.payload(payload)
.payload(MaterialEvent.Payload.builder()
.materialId(material.getId())
.materialCode(material.getMaterialCode())
.name(material.getName())
.materialUnit(material.getMaterialUnit())
.baseQuantity(material.getBaseQuantity())
.standardQuantity(material.getStandardQuantity() != null ? material.getStandardQuantity() : 1)
.leadTime(material.getLeadTime())
.deleted(true)
.materialCategoryId(material.getMaterialCategory().getId())
.standardCost(material.getStandardCost())
.build())
.build();

outboxService.saveEvent(
"MATERIAL",
material.getId(),
"MaterialDeleted",
material.getVersion(),
event.getPayload() // event 전체가 μ•„λ‹Œ payload만 전달
materialEvent
);

materialRepository.delete(material);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,9 @@ public static class Payload {
private String name;

private String partUnit;
private Integer baseQuantity;
private Integer baseQuantity; // μ•ˆμ „μž¬κ³ 
private Integer leadTime;
private Integer standardQuantity; // κΈ°μ€€μˆ˜λŸ‰

private String status;
private Boolean deleted;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,25 +42,33 @@ public void publishAllPartEvents() {
var group = part.getPartGroup();
var category = (group != null) ? group.getCategory() : null;

PartEvent.Payload payload = PartEvent.Payload.builder()
.partId(part.getId())
.code(part.getCode())
.name(part.getName())
.partUnit(part.getPartUnit())
.baseQuantity(part.getBaseQuantity())
.leadTime(part.getLeadTime())
.status(part.getStatus().name())
.deleted(false)
.groupId(group != null ? group.getId() : null)
.categoryId(category != null ? category.getId() : null)
.standardCost(part.getStandardCost())
// 전체 PartEvent 객체 생성
PartEvent partEvent = PartEvent.builder()
.eventId(java.util.UUID.randomUUID().toString())
.eventType("PartCreated")
.version(part.getVersion())
.occurredAt(java.time.OffsetDateTime.now().toString())
.payload(PartEvent.Payload.builder()
.partId(part.getId())
.code(part.getCode())
.name(part.getName())
.partUnit(part.getPartUnit())
.baseQuantity(part.getBaseQuantity())
.standardQuantity(part.getStandardQuantity() != null ? part.getStandardQuantity() : 1)
.leadTime(part.getLeadTime())
.status(part.getStatus().name())
.deleted(false)
.groupId(group != null ? group.getId() : null)
.categoryId(category != null ? category.getId() : null)
.standardCost(part.getStandardCost())
.build())
.build();

Outbox outbox = Outbox.builder()
.aggregateType("PART")
.aggregateId(part.getId())
.eventType("PartCreated")
.payload(objectMapper.writeValueAsString(payload))
.payload(objectMapper.writeValueAsString(partEvent))
.version(part.getVersion())
.occurredAt(OffsetDateTime.now())
.status(OutboxStatus.READY)
Expand Down
Loading