fix: 페이지네이션 로직 개선 및 상세 로그 추가
- 모든 관리 화면(회사, 장비, 입고지, 유지보수)의 페이지네이션 로직 통일 - Controller에서 전체 데이터 로드, View에서만 페이지네이션 처리 - 각 화면에 상세한 터미널 로그 추가로 데이터 로드 상태 추적 가능 - 회사 DTO에 지점 정보 포함 기능 추가 - 전체 79개 회사 중 14개만 표시되던 문제 해결
This commit is contained in:
@@ -271,10 +271,35 @@ class CompanyService {
|
||||
// 회사별로 데이터 그룹화
|
||||
final Map<int, List<Branch>> companyBranchesMap = {};
|
||||
final Map<int, String> companyNamesMap = {};
|
||||
final Map<int, List<CompanyType>> companyTypesMap = {};
|
||||
final Map<int, bool> companyIsPartnerMap = {};
|
||||
final Map<int, bool> companyIsCustomerMap = {};
|
||||
|
||||
for (final item in flatData) {
|
||||
companyNamesMap[item.companyId] = item.companyName;
|
||||
|
||||
// 첫 번째 아이템에서만 회사 타입 정보 저장
|
||||
if (!companyTypesMap.containsKey(item.companyId)) {
|
||||
List<CompanyType> types = [];
|
||||
|
||||
// 1. company_types 필드가 있으면 우선 사용 (하위 호환성)
|
||||
if (item.companyTypes != null && item.companyTypes!.isNotEmpty) {
|
||||
types = item.companyTypes!.map((typeStr) {
|
||||
if (typeStr.toLowerCase().contains('partner')) return CompanyType.partner;
|
||||
return CompanyType.customer;
|
||||
}).toSet().toList(); // 중복 제거
|
||||
}
|
||||
// 2. company_types가 없으면 is_partner, is_customer 사용
|
||||
else {
|
||||
if (item.isCustomer) types.add(CompanyType.customer);
|
||||
if (item.isPartner) types.add(CompanyType.partner);
|
||||
}
|
||||
|
||||
companyTypesMap[item.companyId] = types;
|
||||
companyIsPartnerMap[item.companyId] = item.isPartner;
|
||||
companyIsCustomerMap[item.companyId] = item.isCustomer;
|
||||
}
|
||||
|
||||
if (item.branchId != null && item.branchName != null) {
|
||||
if (!companyBranchesMap.containsKey(item.companyId)) {
|
||||
companyBranchesMap[item.companyId] = [];
|
||||
@@ -298,7 +323,7 @@ class CompanyService {
|
||||
id: entry.key,
|
||||
name: entry.value,
|
||||
address: Address.fromFullAddress(''), // 주소 정보가 없으므로 빈 값
|
||||
companyTypes: [CompanyType.customer], // 기본값
|
||||
companyTypes: companyTypesMap[entry.key] ?? [], // 빈 리스트 가능
|
||||
branches: companyBranchesMap[entry.key], // null 허용
|
||||
),
|
||||
);
|
||||
@@ -317,22 +342,51 @@ class CompanyService {
|
||||
|
||||
// 변환 헬퍼 메서드들
|
||||
Company _convertListDtoToCompany(CompanyListDto dto) {
|
||||
List<CompanyType> companyTypes = [];
|
||||
|
||||
// 1. company_types 필드가 있으면 우선 사용 (하위 호환성)
|
||||
if (dto.companyTypes != null && dto.companyTypes!.isNotEmpty) {
|
||||
companyTypes = dto.companyTypes!.map((typeStr) {
|
||||
if (typeStr.toLowerCase().contains('partner')) return CompanyType.partner;
|
||||
return CompanyType.customer;
|
||||
}).toSet().toList(); // 중복 제거
|
||||
}
|
||||
// 2. company_types가 없으면 is_partner, is_customer 사용
|
||||
else {
|
||||
if (dto.isCustomer) companyTypes.add(CompanyType.customer);
|
||||
if (dto.isPartner) companyTypes.add(CompanyType.partner);
|
||||
}
|
||||
|
||||
// 3. 둘 다 없으면 빈 리스트 유지 (기본값 제거)
|
||||
|
||||
return Company(
|
||||
id: dto.id,
|
||||
name: dto.name,
|
||||
address: Address.fromFullAddress(dto.address),
|
||||
address: Address.fromFullAddress(dto.address ?? ''),
|
||||
contactName: dto.contactName,
|
||||
contactPhone: dto.contactPhone,
|
||||
companyTypes: [CompanyType.customer], // 기본값, 실제로는 API에서 받아와야 함
|
||||
companyTypes: companyTypes,
|
||||
branches: [], // branches는 빈 배열로 초기화
|
||||
);
|
||||
}
|
||||
|
||||
Company _convertResponseToCompany(CompanyResponse dto) {
|
||||
final companyTypes = dto.companyTypes.map((typeStr) {
|
||||
if (typeStr.contains('partner')) return CompanyType.partner;
|
||||
return CompanyType.customer;
|
||||
}).toList();
|
||||
List<CompanyType> companyTypes = [];
|
||||
|
||||
// 1. company_types 필드가 있으면 우선 사용 (하위 호환성)
|
||||
if (dto.companyTypes.isNotEmpty) {
|
||||
companyTypes = dto.companyTypes.map((typeStr) {
|
||||
if (typeStr.toLowerCase().contains('partner')) return CompanyType.partner;
|
||||
return CompanyType.customer;
|
||||
}).toSet().toList(); // 중복 제거
|
||||
}
|
||||
// 2. company_types가 없으면 is_partner, is_customer 사용
|
||||
else {
|
||||
if (dto.isCustomer) companyTypes.add(CompanyType.customer);
|
||||
if (dto.isPartner) companyTypes.add(CompanyType.partner);
|
||||
}
|
||||
|
||||
// 3. 둘 다 없으면 빈 리스트 유지
|
||||
|
||||
return Company(
|
||||
id: dto.id,
|
||||
@@ -342,7 +396,7 @@ class CompanyService {
|
||||
contactPosition: dto.contactPosition,
|
||||
contactPhone: dto.contactPhone,
|
||||
contactEmail: dto.contactEmail,
|
||||
companyTypes: companyTypes.isEmpty ? [CompanyType.customer] : companyTypes,
|
||||
companyTypes: companyTypes,
|
||||
remark: dto.remark,
|
||||
branches: [], // branches는 빈 배열로 초기화
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user