File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package kr.itn.itnhub.seed;
import kr.itn.itnhub.org.Organization;
import kr.itn.itnhub.org.OrganizationMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.InputStream;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@Service
public class SeedService {
private final SeedParser parser;
private final OrganizationMapper mapper;
public SeedService(SeedParser parser, OrganizationMapper mapper) {
this.parser = parser;
this.mapper = mapper;
}
@Transactional
public SeedReport seed(InputStream xlsx) {
List<SeedRow> rows = parser.parse(xlsx);
Set<String> before = new HashSet<>();
for (Organization existing : mapper.findAll()) {
before.add(key(existing.getOrgNo(), existing.getOrgName()));
}
int created = 0;
int updated = 0;
for (SeedRow row : rows) {
if (before.contains(key(row.orgNo(), row.orgName()))) {
updated++;
} else {
created++;
}
mapper.upsertBySeed(toOrganization(row));
}
return new SeedReport(created, updated, rows.size());
}
private String key(String orgNo, String orgName) {
return orgNo + " " + orgName;
}
private Organization toOrganization(SeedRow row) {
Organization org = new Organization();
org.setOrgNo(row.orgNo());
org.setOrgName(row.orgName());
org.setChannelSlug(row.channelSlug());
org.setDeptName(row.deptName());
org.setManagerName(row.managerName());
org.setManagerTitle(row.managerTitle());
org.setManagerPhone(row.managerPhone());
org.setManagerEmail(row.managerEmail());
return org;
}
}