Commit 007fb923 authored by Tu Bach's avatar Tu Bach

Merge branch 'master' into tubn

parents 5fafc0cb 8525dae2
...@@ -243,16 +243,16 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -243,16 +243,16 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
} }
List<CampaignDTO> data = query.list(); List<CampaignDTO> data = query.list();
data.forEach(item -> { data.forEach(item -> {
item.setStartTime(DateTimeUtil.parseDate("dd/MM/yyyy HH:mm:ss",TimeZoneUtils.toDateStringWithTimeZone(item.getStartTime(),tzClient))); if(item.getStartTime() != null) item.setStartTime(DateTimeUtil.parseDate("dd/MM/yyyy HH:mm:ss",TimeZoneUtils.toDateStringWithTimeZone(item.getStartTime(),tzClient)));
item.setEndTime(DateTimeUtil.parseDate("dd/MM/yyyy HH:mm:ss",TimeZoneUtils.toDateStringWithTimeZone(item.getEndTime(),tzClient))); if(item.getEndTime() != null) item.setEndTime(DateTimeUtil.parseDate("dd/MM/yyyy HH:mm:ss",TimeZoneUtils.toDateStringWithTimeZone(item.getEndTime(),tzClient)));
}); });
Page<CampaignDTO> dataPage = new PageImpl<>(data, pageable, count); Page<CampaignDTO> dataPage = new PageImpl<>(data, pageable, count);
result.setData(dataPage); result.setData(dataPage);
} else { } else {
List<CampaignDTO> dataExport = query.list(); List<CampaignDTO> dataExport = query.list();
dataExport.forEach(item -> { dataExport.forEach(item -> {
item.setStartTime(DateTimeUtil.parseDate("dd/MM/yyyy HH:mm:ss",TimeZoneUtils.toDateStringWithTimeZone(item.getStartTime(),tzClient))); if(item.getStartTime() != null) item.setStartTime(DateTimeUtil.parseDate("dd/MM/yyyy HH:mm:ss",TimeZoneUtils.toDateStringWithTimeZone(item.getStartTime(),tzClient)));
item.setEndTime(DateTimeUtil.parseDate("dd/MM/yyyy HH:mm:ss",TimeZoneUtils.toDateStringWithTimeZone(item.getEndTime(),tzClient))); if(item.getEndTime() != null) item.setEndTime(DateTimeUtil.parseDate("dd/MM/yyyy HH:mm:ss",TimeZoneUtils.toDateStringWithTimeZone(item.getEndTime(),tzClient)));
}); });
result.setData(dataExport); result.setData(dataExport);
} }
...@@ -551,6 +551,8 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -551,6 +551,8 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
sb.append(" select title columnName, customize_field_id customizeFieldId, 0 isFix from customize_fields, dual"); sb.append(" select title columnName, customize_field_id customizeFieldId, 0 isFix from customize_fields, dual");
sb.append(" where function_code = 'CUSTOMER'"); sb.append(" where function_code = 'CUSTOMER'");
sb.append(" and site_id = :p_company_site_id"); sb.append(" and site_id = :p_company_site_id");
sb.append(" and status = 1");
sb.append(" and active = 1");
sb.append(" and customize_field_id not in (select customize_field_id from campaign_customerlist_column where campaign_customerlist_column.campaign_id = :p_campaign_id)"); sb.append(" and customize_field_id not in (select customize_field_id from campaign_customerlist_column where campaign_customerlist_column.campaign_id = :p_campaign_id)");
params.put("p_company_site_id", dto.getCompanySiteId()); params.put("p_company_site_id", dto.getCompanySiteId());
params.put("p_campaign_id", dto.getCampaignId()); params.put("p_campaign_id", dto.getCampaignId());
...@@ -932,10 +934,15 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -932,10 +934,15 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
sb.append(" from campaign_customer"); sb.append(" from campaign_customer");
sb.append(" group by campaign_id"); sb.append(" group by campaign_id");
sb.append(" )"); sb.append(" )");
sb.append(" select a.*, b.customer_number campaignCustomer"); sb.append(" select b.campaign_id campaignId,");
sb.append(" from count_customer a"); sb.append(" nvl(a.totalIndividual, 0) totalIndividual,");
sb.append(" left join campaign b on a.campaignId = b.campaign_id"); sb.append(" nvl(a.totalNotInteractive, 0) totalNotInteractive,");
sb.append(" where a.campaignId = :p_campaign_id"); sb.append(" nvl(a.totalNotCall, 0) totalNotCall,");
sb.append(" nvl(a.totalCusInList, 0) totalCusInList,");
sb.append(" b.customer_number campaignCustomer");
sb.append(" from campaign b");
sb.append(" left join count_customer a on a.campaignId = b.campaign_id");
sb.append(" where b.campaign_id = :p_campaign_id");
params.put("p_campaign_id", dto.getCampaignId()); params.put("p_campaign_id", dto.getCampaignId());
params.put("p_company_site_id", dto.getCompanySiteId()); params.put("p_company_site_id", dto.getCompanySiteId());
list = namedParameterJdbcTemplate.query(sb.toString(), params, BeanPropertyRowMapper.newInstance(CampaignInformationDTO.class)); list = namedParameterJdbcTemplate.query(sb.toString(), params, BeanPropertyRowMapper.newInstance(CampaignInformationDTO.class));
......
...@@ -4,12 +4,10 @@ import com.viettel.campaign.config.DataSourceQualify; ...@@ -4,12 +4,10 @@ import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.model.ccms_full.*; import com.viettel.campaign.model.ccms_full.*;
import com.viettel.campaign.repository.ccms_full.*; import com.viettel.campaign.repository.ccms_full.*;
import com.viettel.campaign.service.CampaignService; import com.viettel.campaign.service.CampaignService;
import com.viettel.campaign.utils.BundleUtils; import com.viettel.campaign.utils.*;
import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.DataUtil;
import com.viettel.campaign.utils.WorkBookBuilder;
import com.viettel.campaign.web.dto.*; import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO; import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.CellStyle;
...@@ -275,6 +273,8 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -275,6 +273,8 @@ public class CampaignServiceImpl implements CampaignService {
CellStyle styleRowHeader = WorkBookBuilder.buildDefaultStyleRowHeader(workbook); CellStyle styleRowHeader = WorkBookBuilder.buildDefaultStyleRowHeader(workbook);
CellStyle styleRow = WorkBookBuilder.buildDefaultStyleRow(workbook); CellStyle styleRow = WorkBookBuilder.buildDefaultStyleRow(workbook);
styleRowHeader.setWrapText(true);
styleRow.setWrapText(true);
// list header // list header
List<String> fileHeaderList = new ArrayList<>(); List<String> fileHeaderList = new ArrayList<>();
fileHeaderList.add(BundleUtils.getLangString("stt", locale)); fileHeaderList.add(BundleUtils.getLangString("stt", locale));
...@@ -294,12 +294,12 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -294,12 +294,12 @@ public class CampaignServiceImpl implements CampaignService {
// //
String sheetName = BundleUtils.getLangString("campaign", locale); String sheetName = BundleUtils.getLangString("campaign", locale);
sheet = workbook.createSheet(sheetName); sheet = workbook.createSheet(sheetName);
// Title // Title
String title = BundleUtils.getLangString("campaign.title", locale); String title = BundleUtils.getLangString("campaign.title", locale);
int rowTitleStart = 3; int rowTitleStart = 3;
Row rowTitle = sheet.createRow(rowTitleStart); Row rowTitle = sheet.createRow(rowTitleStart);
rowTitle.setHeight((short) 800); rowTitle.setHeight((short) 800);
WorkBookBuilder.writeCellContent(rowTitle, styleTitle, 3, title); WorkBookBuilder.writeCellContent(rowTitle, styleTitle, 3, title);
sheet.addMergedRegion(new CellRangeAddress(rowTitleStart, rowTitleStart, 3, 8)); sheet.addMergedRegion(new CellRangeAddress(rowTitleStart, rowTitleStart, 3, 8));
...@@ -308,6 +308,7 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -308,6 +308,7 @@ public class CampaignServiceImpl implements CampaignService {
int count = 1; int count = 1;
Row rowHeader = sheet.createRow(startRowTable); Row rowHeader = sheet.createRow(startRowTable);
for (int i = 0; i < fileHeaderList.size(); i++) { for (int i = 0; i < fileHeaderList.size(); i++) {
sheet.setColumnWidth(i, 6500);
WorkBookBuilder.writeCellContent(rowHeader, styleRowHeader, i, fileHeaderList.get(i)); WorkBookBuilder.writeCellContent(rowHeader, styleRowHeader, i, fileHeaderList.get(i));
} }
// Content // Content
...@@ -319,8 +320,8 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -319,8 +320,8 @@ public class CampaignServiceImpl implements CampaignService {
WorkBookBuilder.writeCellContent(row, styleRow, col++, listData.get(i).getCampaignName()); WorkBookBuilder.writeCellContent(row, styleRow, col++, listData.get(i).getCampaignName());
WorkBookBuilder.writeCellContent(row, styleRow, col++, getCampaignTypeName(lstType, listData.get(i).getCampaignType())); WorkBookBuilder.writeCellContent(row, styleRow, col++, getCampaignTypeName(lstType, listData.get(i).getCampaignType()));
WorkBookBuilder.writeCellContent(row, styleRow, col++, DataUtil.isNullOrZero(listData.get(i).getChanel()) ? "" : BundleUtils.getLangString("campaign.chanel." + listData.get(i).getChanel(), locale)); WorkBookBuilder.writeCellContent(row, styleRow, col++, DataUtil.isNullOrZero(listData.get(i).getChanel()) ? "" : BundleUtils.getLangString("campaign.chanel." + listData.get(i).getChanel(), locale));
WorkBookBuilder.writeCellContent(row, styleRow, col++, listData.get(i).getStartTime()); WorkBookBuilder.writeCellContent(row, styleRow, col++, DateTimeUtil.format("dd/MM/yyyy",listData.get(i).getStartTime(), ""));
WorkBookBuilder.writeCellContent(row, styleRow, col++, listData.get(i).getEndTime()); WorkBookBuilder.writeCellContent(row, styleRow, col++, DateTimeUtil.format("dd/MM/yyyy",listData.get(i).getEndTime(), ""));
WorkBookBuilder.writeCellContent(row, styleRow, col++, DataUtil.isNullOrZero(listData.get(i).getCustomerNumber()) ? 0 : listData.get(i).getCustomerNumber()); WorkBookBuilder.writeCellContent(row, styleRow, col++, DataUtil.isNullOrZero(listData.get(i).getCustomerNumber()) ? 0 : listData.get(i).getCustomerNumber());
WorkBookBuilder.writeCellContent(row, styleRow, col++, DataUtil.isNullOrZero(listData.get(i).getNumOfJoinedCus()) ? 0 : listData.get(i).getNumOfJoinedCus()); WorkBookBuilder.writeCellContent(row, styleRow, col++, DataUtil.isNullOrZero(listData.get(i).getNumOfJoinedCus()) ? 0 : listData.get(i).getNumOfJoinedCus());
WorkBookBuilder.writeCellContent(row, styleRow, col++, DataUtil.isNullOrZero(listData.get(i).getNumOfInteractedCus()) ? 0 : listData.get(i).getNumOfInteractedCus()); WorkBookBuilder.writeCellContent(row, styleRow, col++, DataUtil.isNullOrZero(listData.get(i).getNumOfInteractedCus()) ? 0 : listData.get(i).getNumOfInteractedCus());
......
...@@ -1074,24 +1074,8 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1074,24 +1074,8 @@ public class CustomerServiceImpl implements CustomerService {
//<editor-fold desc="Đọc dữ liệu từng dòng 1" defaultstate="collapsed"> //<editor-fold desc="Đọc dữ liệu từng dòng 1" defaultstate="collapsed">
for (int i = 4; i <= sheet.getPhysicalNumberOfRows(); i++) { for (int i = 4; i <= sheet.getPhysicalNumberOfRows(); i++) {
Row dataRow = sheet.getRow(i); Row dataRow = sheet.getRow(i);
if (dataRow != null) { if (!isRowEmpty(dataRow)) {
Object[] obj = new Object[objectSize + 1]; Object[] obj = new Object[objectSize + 1];
// for (int j = 0; j < header.size(); j++) {
// Cell dataCell = dataRow.getCell(j);
// if (dataCell != null) {
// obj[j] = dataFormat.formatCellValue(dataCell);
// } else {
// Cell headerCell = row.getCell(j);
// if (headerCell.getStringCellValue().equals(BundleUtils.getLangString("customer.cusType", locale))) {
// obj[j] = BundleUtils.getLangString("customer.cusType.normal", locale);
// } else if (headerCell.getStringCellValue().equals(BundleUtils.getLangString("customer.callAllowed", locale)) || headerCell.getStringCellValue().equals(BundleUtils.getLangString("customer.emailAllowed", locale))
// || headerCell.getStringCellValue().equals(BundleUtils.getLangString("customer.smsAllowed", locale))) {
// obj[j] = BundleUtils.getLangString("customer.yes", locale);
// } else {
// obj[j] = null;
// }
// }
// }
headerMap.forEach((k, v) -> { headerMap.forEach((k, v) -> {
Cell dataCell = dataRow.getCell(v); Cell dataCell = dataRow.getCell(v);
if (dataCell != null) { if (dataCell != null) {
...@@ -1106,7 +1090,7 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1106,7 +1090,7 @@ public class CustomerServiceImpl implements CustomerService {
} }
}); });
rawDataList.add(obj); rawDataList.add(obj);
} } else break;
} }
//</editor-fold> //</editor-fold>
...@@ -1169,19 +1153,57 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1169,19 +1153,57 @@ public class CustomerServiceImpl implements CustomerService {
&& rawDataList.get(i)[headerMap.get(BundleUtils.getLangString("customer.description", locale).split("#")[0])] != null) { && rawDataList.get(i)[headerMap.get(BundleUtils.getLangString("customer.description", locale).split("#")[0])] != null) {
sb.append(validateLength(BundleUtils.getLangString("customer.description", locale).split("#")[0], rawDataList.get(i)[headerMap.get(BundleUtils.getLangString("customer.description", locale).split("#")[0])].toString(), 2000, locale)); sb.append(validateLength(BundleUtils.getLangString("customer.description", locale).split("#")[0], rawDataList.get(i)[headerMap.get(BundleUtils.getLangString("customer.description", locale).split("#")[0])].toString(), 2000, locale));
} }
// for (int j = 12; j < header.size(); j++) { if (rawDataList.get(i).length > headerMap.get(BundleUtils.getLangString("customer.callAllowed", locale).split("#")[0])
// if (rawDataList.get(i).length > j && rawDataList.get(i)[j] != null) { && rawDataList.get(i)[headerMap.get(BundleUtils.getLangString("customer.callAllowed", locale).split("#")[0])] != null) {
// if (header.get(j).getType().equals("text")) { sb.append(validateYesNo(rawDataList.get(i)[headerMap.get(BundleUtils.getLangString("customer.callAllowed"))].toString().trim(), locale));
// sb.append(validateDynamicLength(header.get(j).getTitle(), rawDataList.get(i)[j].toString(), header.get(j).getMinLength(), header.get(j).getMaxLength(), locale)); }
// } else if (header.get(j).getType().equals("date")) { if (rawDataList.get(i).length > headerMap.get(BundleUtils.getLangString("customer.emailAllowed", locale).split("#")[0])
// sb.append(validateUsingRegexp(header.get(j).getTitle(), rawDataList.get(i)[j].toString(), header.get(j).getRegexpForValidation(), locale)); && rawDataList.get(i)[headerMap.get(BundleUtils.getLangString("customer.emailAllowed", locale).split("#")[0])] != null) {
// } else if (header.get(j).getType().equals("number")) { sb.append(validateYesNo(rawDataList.get(i)[headerMap.get(BundleUtils.getLangString("customer.emailAllowed"))].toString().trim(), locale));
// sb.append(validateDynamicLength(header.get(j).getTitle(), rawDataList.get(i)[j].toString(), header.get(j).getMin(), header.get(j).getMax(), locale)); }
if (rawDataList.get(i).length > headerMap.get(BundleUtils.getLangString("customer.smsAllowed", locale).split("#")[0])
&& rawDataList.get(i)[headerMap.get(BundleUtils.getLangString("customer.smsAllowed", locale).split("#")[0])] != null) {
sb.append(validateYesNo(rawDataList.get(i)[headerMap.get(BundleUtils.getLangString("customer.smsAllowed"))].toString().trim(), locale));
}
//<editor-fold desc="Validate những trường động, chỉ cần uncomment và fix bug là có thể dùng :v">
// for (int j = 0; j < dynamicHeader.size(); j++) {
// if (rawDataList.get(i).length > headerMap.get(dynamicHeader.get(j).getTitle().trim())
// && rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle().trim())] != null
// && !"".equals(rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle().trim())]))
// switch (dynamicHeader.get(j).getType()) {
// case "combobox":
// List<CustomizeFieldOptionValue> optionValues =
// customizeFieldOptionValueRepository.findCustomizeFieldOptionValuesByFieldOptionIdAndStatus(dynamicHeader.get(j).getFieldOptionsId(), 1L);
// String[] arr = new String[optionValues.size()];
// int s = 0;
// for (CustomizeFieldOptionValue c: optionValues) {
// arr[s] = c.getName().trim();
// s++;
// }
// sb.append(validateCombobox(arr, rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle().trim())].toString(), locale));
// break;
// case "number":
// if (validateNumberOnly(rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle().trim())].toString())) {
// sb.append(validateDynamicLength(dynamicHeader.get(j).getTitle(), rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle().trim())].toString(), dynamicHeader.get(j).getMin(), dynamicHeader.get(j).getMax(), locale));
// sb.append(validateUsingRegexp(dynamicHeader.get(j).getTitle(), rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle().trim())].toString(), dynamicHeader.get(j).getRegexpForValidation(), locale));
// } else {
// sb.append(BundleUtils.getLangString("customer.onlyNumber", locale));
// } // }
// break;
// case "date":
// sb.append(validateUsingRegexp(dynamicHeader.get(j).getTitle(), rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle().trim())].toString(), dynamicHeader.get(j).getRegexpForValidation(), locale));
// break;
// case "checkbox":
// sb.append(validateYesNo(rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle().trim())].toString(), locale));
// break;
// default:
// sb.append(validateDynamicLength(dynamicHeader.get(j).getTitle(), rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle().trim())].toString(), dynamicHeader.get(j).getMinLength(), dynamicHeader.get(j).getMaxLength(), locale));
// break;
// } // }
// } // }
// Row dataRow = sheet.getRow(4 + i); //</editor-fold>
// Cell resultCell = dataRow.createCell(row.getPhysicalNumberOfCells() - 1);
if (sb.length() > 0) { if (sb.length() > 0) {
rawDataList.get(i)[objectSize] = sb.toString(); rawDataList.get(i)[objectSize] = sb.toString();
failedCount++; failedCount++;
...@@ -1318,29 +1340,29 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1318,29 +1340,29 @@ public class CustomerServiceImpl implements CustomerService {
CustomizeFieldObject cfo = new CustomizeFieldObject(); CustomizeFieldObject cfo = new CustomizeFieldObject();
cfo.setObjectId(saved.getCustomerId()); cfo.setObjectId(saved.getCustomerId());
cfo.setCustomizeFieldId(dynamicHeader.get(j).getCustomizeFieldId()); cfo.setCustomizeFieldId(dynamicHeader.get(j).getCustomizeFieldId());
if (rawDataList.get(i).length > headerMap.get(dynamicHeader.get(j).getTitle()) && rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle())] != null) { if (rawDataList.get(i).length > headerMap.get(dynamicHeader.get(j).getTitle().trim()) && rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle().trim())] != null) {
switch (dynamicHeader.get(j).getType()) { switch (dynamicHeader.get(j).getType()) {
case "combobox": case "combobox":
CustomizeFieldOptionValue cfov = CustomizeFieldOptionValue cfov =
customizeFieldOptionValueRepository.findCustomizeFieldOptionValueByNameEqualsAndStatus(rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle())].toString().trim(), 1L); customizeFieldOptionValueRepository.findCustomizeFieldOptionValueByNameEqualsAndStatus(rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle().trim())].toString().trim(), 1L);
cfo.setFieldOptionValueId(cfov.getFieldOptionValueId()); cfo.setFieldOptionValueId(cfov.getFieldOptionValueId());
break; break;
case "checkbox": case "checkbox":
if (rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle())].toString().trim().equals(BundleUtils.getLangString("customer.yes", locale))) { if (rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle().trim())].toString().trim().equals(BundleUtils.getLangString("customer.yes", locale))) {
cfo.setValueCheckbox(1L); cfo.setValueCheckbox(1L);
} else { } else {
cfo.setValueCheckbox(0L); cfo.setValueCheckbox(0L);
} }
break; break;
case "date": case "date":
Date date = dateFormat.parse(rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle())].toString().trim()); Date date = dateFormat.parse(rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle().trim())].toString().trim());
cfo.setValueDate(date); cfo.setValueDate(date);
break; break;
case "number": case "number":
cfo.setValueNumber(Long.parseLong(rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle())].toString().trim())); cfo.setValueNumber(Long.parseLong(rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle().trim())].toString().trim()));
break; break;
default: default:
cfo.setValueText(rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle())].toString().trim()); cfo.setValueText(rawDataList.get(i)[headerMap.get(dynamicHeader.get(j).getTitle().trim())].toString().trim());
break; break;
} }
} }
...@@ -1348,7 +1370,7 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1348,7 +1370,7 @@ public class CustomerServiceImpl implements CustomerService {
cfo.setCreateDate(new Date()); cfo.setCreateDate(new Date());
cfo.setStatus(1L); cfo.setStatus(1L);
cfo.setFunctionCode("CUSTOMER"); cfo.setFunctionCode("CUSTOMER");
cfo.setTitle(dynamicHeader.get(j).getTitle()); cfo.setTitle(dynamicHeader.get(j).getTitle().trim());
customizeFieldObjectRepository.save(cfo); customizeFieldObjectRepository.save(cfo);
} }
CustomerListMapping clm = new CustomerListMapping(); CustomerListMapping clm = new CustomerListMapping();
...@@ -1380,6 +1402,16 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1380,6 +1402,16 @@ public class CustomerServiceImpl implements CustomerService {
} }
//<editor-fold desc="Validate Methods" defaultstate="collapsed"> //<editor-fold desc="Validate Methods" defaultstate="collapsed">
private boolean isRowEmpty(Row row) {
for (int i = 0; i <= row.getLastCellNum(); i++) {
Cell cell = row.getCell(i);
if (cell != null && cell.getCellType() != CellType.BLANK) {
return false;
}
}
return true;
}
private String validateExistPhone(String str, Locale locale, boolean isCheckDuplicate) { private String validateExistPhone(String str, Locale locale, boolean isCheckDuplicate) {
String result = ""; String result = "";
String[] arr = str.split("[;,]"); String[] arr = str.split("[;,]");
...@@ -1477,20 +1509,29 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1477,20 +1509,29 @@ public class CustomerServiceImpl implements CustomerService {
} }
} }
private String validateYesNo(String str, Locale locale) {
String[] arr = {BundleUtils.getLangString("customer.yes", locale),
BundleUtils.getLangString("customer.not", locale)};
List<String> cusTypes = Arrays.asList(arr);
if (cusTypes.contains(str.trim())) {
return "";
} else {
return BundleUtils.getLangString("customer.comboboxInvalid", locale);
}
}
private boolean validateLetter(String str) { private boolean validateLetter(String str) {
String regexp = "@\"^\\p{L}+$\""; String regexp = "@\"^\\p{L}+$\"";
return str.matches(regexp); return str.matches(regexp);
} }
private boolean isColumnNullOrBlank(Sheet sheet, int columnIndex) { private String validateCombobox(String[] optionValue, String str, Locale locale) {
for (Row row : sheet) { List<String> arr = Arrays.asList(optionValue);
if (row.getRowNum() < 3) continue; if (!arr.contains(str)) {
Cell cell = row.getCell(columnIndex, Row.MissingCellPolicy.RETURN_BLANK_AS_NULL); return BundleUtils.getLangString("customer.comboboxInvalid", locale);
if (cell != null) { } else {
return false; return "";
}
} }
return true;
} }
//</editor-fold> //</editor-fold>
...@@ -1794,7 +1835,7 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1794,7 +1835,7 @@ public class CustomerServiceImpl implements CustomerService {
for (int i = 0; i < header.size(); i++) { for (int i = 0; i < header.size(); i++) {
sheet.setDefaultColumnStyle(i, columnStyle); sheet.setDefaultColumnStyle(i, columnStyle);
Cell headerCell = row3.createCell(i); Cell headerCell = row3.createCell(i);
headerCell.setCellValue(header.get(i).getTitle().split("#")[0]); headerCell.setCellValue(header.get(i).getTitle().split("#")[0].trim());
headerStyle.setBorderTop(BorderStyle.THIN); headerStyle.setBorderTop(BorderStyle.THIN);
headerStyle.setBorderRight(BorderStyle.THIN); headerStyle.setBorderRight(BorderStyle.THIN);
headerStyle.setBorderBottom(BorderStyle.THIN); headerStyle.setBorderBottom(BorderStyle.THIN);
...@@ -1927,14 +1968,14 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1927,14 +1968,14 @@ public class CustomerServiceImpl implements CustomerService {
sb.append("with cusPhone as ("); sb.append("with cusPhone as (");
sb.append(" select customer_id cusId,"); sb.append(" select customer_id cusId,");
sb.append(" listagg(contact, ',') within group (order by create_date desc) phone"); sb.append(" listagg(contact, ', ') within group (order by create_date desc) phone");
sb.append(" from customer_contact cc"); sb.append(" from customer_contact cc");
sb.append(" where cc.contact_type = 5"); sb.append(" where cc.contact_type = 5");
sb.append(" and status = 1 "); sb.append(" and status = 1 ");
sb.append(" group by customer_id"); sb.append(" group by customer_id");
sb.append(" ), cusEmail as ("); sb.append(" ), cusEmail as (");
sb.append(" select customer_id cusId,"); sb.append(" select customer_id cusId,");
sb.append(" listagg(contact , ',') within group(order by create_date desc) email"); sb.append(" listagg(contact , ', ') within group(order by create_date desc) email");
sb.append(" from customer_contact cc"); sb.append(" from customer_contact cc");
sb.append(" where cc.contact_type = 2"); sb.append(" where cc.contact_type = 2");
sb.append(" and status = 1 "); sb.append(" and status = 1 ");
...@@ -1968,9 +2009,10 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1968,9 +2009,10 @@ public class CustomerServiceImpl implements CustomerService {
sb.append(" from"); sb.append(" from");
sb.append(" ("); sb.append(" (");
sb.append(" select * from datas"); sb.append(" select * from datas");
sb.append(" order by datas.name"); sb.append(" order by UPPER(datas.name)");
sb.append(" ) a"); sb.append(" ) a");
sb.append(" where rownum < ((:p_page_number * :p_page_size) + 1 )"); sb.append(" where rownum < ((:p_page_number * :p_page_size) + 1 )");
sb.append(" )"); sb.append(" )");
sb.append(" where r__ >= (((:p_page_number-1) * :p_page_size) + 1)"); sb.append(" where r__ >= (((:p_page_number-1) * :p_page_size) + 1)");
...@@ -2025,31 +2067,23 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -2025,31 +2067,23 @@ public class CustomerServiceImpl implements CustomerService {
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
try { try {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append(" with status_customer as (\n" + sb.append(" with count_customer as (");
"select complete_value\n" + sb.append(" select campaign_id campaignId,");
"from campaign_complete_code\n" + sb.append(" sum(case");
"where complete_value <> 4\n" + sb.append(" when customer_list_id is null then 1");
" and is_finish <> 1\n" + sb.append(" else 0");
" and campaign_type = 1\n" + sb.append(" end) totalIndividual,");
" and company_site_id = :p_company_site_id\n" + sb.append(" sum(case");
"),\n" + sb.append(" when customer_list_id is not null then 1");
"count_customer as (\n" + sb.append(" else 0");
"select campaign_id campaignId,\n" + sb.append(" end) totalCusInList");
" sum(case\n" + sb.append(" from campaign_customer");
" when customer_list_id is null then 1\n" + sb.append(" group by campaign_id");
" else 0\n" + sb.append(" )");
" end) totalIndividual,\n" + sb.append(" select b.campaign_id campaignId, nvl(totalIndividual, 0) totalIndividual, nvl(totalCusInList, 0) totalCusInList, b.customer_number campaignCustomer");
" sum(case\n" + sb.append(" from campaign b");
" when customer_list_id is not null then 1\n" + sb.append(" left join count_customer a on a.campaignId = b.campaign_id");
" else 0\n" + sb.append(" where b.campaign_id = :p_campaign_id");
" end) totalCusInList\n" +
"from campaign_customer\n" +
"group by campaign_id\n" +
")\n" +
"select a.*, b.customer_number campaignCustomer\n" +
"from count_customer a\n" +
"left join campaign b on a.campaignId = b.campaign_id\n" +
"where a.campaignId = :p_campaign_id");
params.put("p_campaign_id", campaignCustomerDTO.getCampaignId()); params.put("p_campaign_id", campaignCustomerDTO.getCampaignId());
params.put("p_company_site_id", campaignCustomerDTO.getCompanySiteId()); params.put("p_company_site_id", campaignCustomerDTO.getCompanySiteId());
list = namedParameterJdbcTemplate.query(sb.toString(), params, BeanPropertyRowMapper.newInstance(CampaignInformationDTO.class)); list = namedParameterJdbcTemplate.query(sb.toString(), params, BeanPropertyRowMapper.newInstance(CampaignInformationDTO.class));
...@@ -2106,6 +2140,7 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -2106,6 +2140,7 @@ public class CustomerServiceImpl implements CustomerService {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append(" select distinct name value, field_option_value_id key from customize_field_option_value"); sb.append(" select distinct name value, field_option_value_id key from customize_field_option_value");
sb.append(" where field_option_id = :p_field_id"); sb.append(" where field_option_id = :p_field_id");
sb.append(" order by name");
params.put("p_field_id", campaignCustomerDTO.getField()); params.put("p_field_id", campaignCustomerDTO.getField());
...@@ -2289,10 +2324,14 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -2289,10 +2324,14 @@ public class CustomerServiceImpl implements CustomerService {
break; break;
case "text": case "text":
if ("like".equals(customerDTOList.get(0).getOperator()) || "not like".equals(customerDTOList.get(0).getOperator())) { if ("like".equals(customerDTOList.get(0).getOperator()) || "not like".equals(customerDTOList.get(0).getOperator())) {
sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and upper(cfo.value_text) " + customerDTOList.get(0).getOperator() + " '%" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%')"); sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and upper(cfo.value_text) " + customerDTOList.get(0).getOperator() + " '%" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%'");
} else { } else {
sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and cfo.value_text " + customerDTOList.get(0).getOperator() + " '" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_") + "')"); sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and cfo.value_text " + customerDTOList.get(0).getOperator() + " '" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_") + "'");
}
if ("not like".equals(customerDTOList.get(0).getOperator()) || "<>".equals(customerDTOList.get(0).getOperator())) {
sb.append(" or cfo.value_text is null");
} }
sb.append(" )");
break; break;
case "date": case "date":
sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and (cfo.value_date +" + campaignCustomerDTO.getTimezoneOffset() + "/24)" + customerDTOList.get(0).getOperator() + " to_date('" + customerDTOList.get(0).getCondition().trim() + "', 'DD/MM/YYYY'))"); sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and (cfo.value_date +" + campaignCustomerDTO.getTimezoneOffset() + "/24)" + customerDTOList.get(0).getOperator() + " to_date('" + customerDTOList.get(0).getCondition().trim() + "', 'DD/MM/YYYY'))");
...@@ -2306,44 +2345,72 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -2306,44 +2345,72 @@ public class CustomerServiceImpl implements CustomerService {
} }
} else {// field tinh } else {// field tinh
if ("like".equals(customerDTOList.get(0).getOperator()) || "not like".equals(customerDTOList.get(0).getOperator())) { if ("like".equals(customerDTOList.get(0).getOperator()) || "not like".equals(customerDTOList.get(0).getOperator())) {
sb.append("and (upper(" + requestCustomer.get(customerDTOList.get(0).getField().toString()) + ") " + customerDTOList.get(0).getOperator() + " '%" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%')"); sb.append("and (upper(" + requestCustomer.get(customerDTOList.get(0).getField().toString()) + ") " + customerDTOList.get(0).getOperator() + " '%" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%'");
} else if (customerDTOList.get(0).getField() == -8 || customerDTOList.get(0).getField() == -9) { } else if (customerDTOList.get(0).getField() == -8 || customerDTOList.get(0).getField() == -9) {
sb.append("and (" + requestCustomer.get(customerDTOList.get(0).getField().toString()) + " " + ("=".equals(customerDTOList.get(0).getOperator()) ? "like " : "not like") + " '%" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_") + "%')"); sb.append("and (" + requestCustomer.get(customerDTOList.get(0).getField().toString()) + " " + ("=".equals(customerDTOList.get(0).getOperator()) ? "like " : "not like") + " '%" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_") + "%'");
} else if ("text".equals(customerDTOList.get(0).getType())) {
if ("=".equals(customerDTOList.get(0).getOperator()) || "<>".equals(customerDTOList.get(0).getOperator())) {
sb.append("and (" + requestCustomer.get(customerDTOList.get(0).getField().toString()) + " " + customerDTOList.get(0).getOperator() + " '" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_") + "'");
} else { } else {
sb.append("and (" + requestCustomer.get(customerDTOList.get(0).getField().toString()) + " " + customerDTOList.get(0).getOperator() + " " + customerDTOList.get(0).getCondition() + ")"); sb.append("and (upper(" + requestCustomer.get(customerDTOList.get(0).getField().toString()) + ") " + customerDTOList.get(0).getOperator() + " '%" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%'");
}
} else{
sb.append("and (" + requestCustomer.get(customerDTOList.get(0).getField().toString()) + " " + customerDTOList.get(0).getOperator() + " " + customerDTOList.get(0).getCondition());
}
if ("<>".equals(customerDTOList.get(0).getOperator()) || "not like".equals(customerDTOList.get(0).getOperator())) {
sb.append(" or " + requestCustomer.get(customerDTOList.get(0).getField().toString()) + " is null ");
} }
sb.append(" )");
} }
for (int i = 1; i < campaignCustomerDTO.getListQuery().size(); i++) { for (int i = 1; i < campaignCustomerDTO.getListQuery().size(); i++) {
if (customerDTOList.get(i).getField() < 0) { if (customerDTOList.get(i).getField() < 0) { //Field tinh
if ("like".equals(customerDTOList.get(i).getOperator()) || "not like".equals(customerDTOList.get(i).getOperator())) { if ("like".equals(customerDTOList.get(i).getOperator()) || "not like".equals(customerDTOList.get(i).getOperator())) {
// sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(i).getField() + " and cfo.value_text " + customerDTOList.get(i).getOperator() + " '%" + customerDTOList.get(i).getCondition() + "%')");
sb.append(" " + customerDTOList.get(i).getJoin() + " (" sb.append(" " + customerDTOList.get(i).getJoin() + " ("
+ "upper(" + requestCustomer.get(customerDTOList.get(i).getField().toString()) + ") " + "upper(" + requestCustomer.get(customerDTOList.get(i).getField().toString()) + ") "
+ customerDTOList.get(i).getOperator() + " " + customerDTOList.get(i).getOperator() + " "
+ "'%" + customerDTOList.get(i).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%' )"); + "'%" + customerDTOList.get(i).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%' ");
} else if (customerDTOList.get(i).getField() == -8 || customerDTOList.get(i).getField() == -9) { } else if (customerDTOList.get(i).getField() == -8 || customerDTOList.get(i).getField() == -9) {
sb.append(" " + customerDTOList.get(i).getJoin() + " (" sb.append(" " + customerDTOList.get(i).getJoin() + " ("
+ requestCustomer.get(customerDTOList.get(i).getField().toString()) + " " + requestCustomer.get(customerDTOList.get(i).getField().toString()) + " "
+ ("=".equals(customerDTOList.get(i).getOperator()) ? "like" : "not like") + " '%" + ("=".equals(customerDTOList.get(i).getOperator()) ? "like" : "not like") + " '%"
+ customerDTOList.get(i).getCondition().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%' )"); + customerDTOList.get(i).getCondition().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%' ");
} else if ("text".equals(customerDTOList.get(i).getType())) {
if ("=".equals(customerDTOList.get(i).getOperator()) || "<>".equals(customerDTOList.get(i).getOperator())) {
sb.append(" " + customerDTOList.get(i).getJoin() + " ("
+ requestCustomer.get(customerDTOList.get(i).getField().toString()) + " "
+ customerDTOList.get(i).getOperator() + " '"
+ customerDTOList.get(i).getCondition().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_") + "' ");
} else {
sb.append(" " + customerDTOList.get(i).getJoin() + " ("
+ "upper(" + requestCustomer.get(customerDTOList.get(i).getField().toString()) + ") "
+ customerDTOList.get(i).getOperator() + " '%"
+ customerDTOList.get(i).getCondition().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%' ");
}
} else { } else {
sb.append(" " + customerDTOList.get(i).getJoin() + " (" sb.append(" " + customerDTOList.get(i).getJoin() + " ("
+ requestCustomer.get(customerDTOList.get(i).getField().toString()) + " " + requestCustomer.get(customerDTOList.get(i).getField().toString()) + " "
+ customerDTOList.get(i).getOperator() + " " + customerDTOList.get(i).getOperator() + " "
+ customerDTOList.get(i).getCondition() + " )"); + customerDTOList.get(i).getCondition());
} }
} else { if ("not like".equals(customerDTOList.get(i).getOperator()) || "<>".equals(customerDTOList.get(i).getOperator())) {
sb.append(" or " + requestCustomer.get(customerDTOList.get(i).getField().toString()) + " is null");
}
sb.append(" )");
} else { // Field dong
switch (customerDTOList.get(i).getType()) { switch (customerDTOList.get(i).getType()) {
case "combobox": case "combobox":
sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(i).getField() + " and cfo.field_option_value_id " + customerDTOList.get(i).getOperator() + " " + customerDTOList.get(i).getCondition() + ")"); sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(i).getField() + " and cfo.field_option_value_id " + customerDTOList.get(i).getOperator() + " " + customerDTOList.get(i).getCondition() + ")");
break; break;
case "text": case "text":
if ("like".equals(customerDTOList.get(i).getOperator()) || "not like".equals(customerDTOList.get(i).getOperator())) { if ("like".equals(customerDTOList.get(i).getOperator()) || "not like".equals(customerDTOList.get(i).getOperator())) {
sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and upper(cfo.value_text) " + customerDTOList.get(0).getOperator() + " '%" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%')"); sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and upper(cfo.value_text) " + customerDTOList.get(0).getOperator() + " '%" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%'");
} else { } else {
sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and cfo.value_text " + customerDTOList.get(0).getOperator() + " '" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_") + "')"); sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and cfo.value_text " + customerDTOList.get(0).getOperator() + " '" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_") + "'");
}
if ("not like".equals(customerDTOList.get(i).getOperator()) || "<>".equals(customerDTOList.get(i).getOperator())) {
sb.append(" or cfo.value_text is null ");
} }
// sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(i).getField() + " and cfo.value_text " + customerDTOList.get(i).getOperator() + " %'" + customerDTOList.get(i).getCondition() + "%')"); sb.append(" )");
break; break;
case "date": case "date":
sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(i).getField() + " and (cfo.value_date + " + campaignCustomerDTO.getTimezoneOffset() + "/24)" + customerDTOList.get(i).getOperator() + " to_date('" + customerDTOList.get(i).getCondition().trim() + "', 'DD/MM/YYYY'))"); sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(i).getField() + " and (cfo.value_date + " + campaignCustomerDTO.getTimezoneOffset() + "/24)" + customerDTOList.get(i).getOperator() + " to_date('" + customerDTOList.get(i).getCondition().trim() + "', 'DD/MM/YYYY'))");
......
...@@ -5,14 +5,11 @@ ...@@ -5,14 +5,11 @@
*/ */
package com.viettel.campaign.utils; package com.viettel.campaign.utils;
import org.apache.log4j.Logger;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.TimeZone; import java.util.TimeZone;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
/** /**
* *
...@@ -86,7 +83,7 @@ public class TimeZoneUtils { ...@@ -86,7 +83,7 @@ public class TimeZoneUtils {
public static String toDateStringWithTimeZone(Date date, TimeZone tz){ public static String toDateStringWithTimeZone(Date date, TimeZone tz){
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
sdf.setTimeZone(tz); sdf.setTimeZone(tz);
return sdf.format(date); return date == null ? null : sdf.format(date);
} }
public static TimeZone getZone(Long timeZone){ public static TimeZone getZone(Long timeZone){
......
...@@ -102,7 +102,7 @@ customer.importCustomer = IMPORT CUSTOMER ...@@ -102,7 +102,7 @@ customer.importCustomer = IMPORT CUSTOMER
customer.notice = Attention: A record is valid when Full Name is not null and one of three fields Main phone, secondary phone or email is not null customer.notice = Attention: A record is valid when Full Name is not null and one of three fields Main phone, secondary phone or email is not null
customer.emailInvalid=Invalid email; customer.emailInvalid=Invalid email;
customer.emailExists=Email exists; customer.emailExists=Email exists;
customer.cusTypeInvalid=Customer type Invalid; customer.comboboxInvalid=Combobox option invalid;
common.fileNotSelected=Please select a file common.fileNotSelected=Please select a file
common.fileInvalidFormat=File invalid common.fileInvalidFormat=File invalid
......
...@@ -104,7 +104,7 @@ customer.importCustomer = IMPORT KHÁCH HÀNG ...@@ -104,7 +104,7 @@ customer.importCustomer = IMPORT KHÁCH HÀNG
customer.notice = Chú ý: 1 bản ghi được coi là hợp lệ bắt buộc phải có thông tin Họ và Tên và 1 trong 3 thông tin liên lạc (số điện thoại chính, số điện thoại phụ hoặc email) customer.notice = Chú ý: 1 bản ghi được coi là hợp lệ bắt buộc phải có thông tin Họ và Tên và 1 trong 3 thông tin liên lạc (số điện thoại chính, số điện thoại phụ hoặc email)
customer.emailInvalid=Email không đúng định dạng; customer.emailInvalid=Email không đúng định dạng;
customer.emailExists=Email đã tồn tại; customer.emailExists=Email đã tồn tại;
customer.cusTypeInvalid=Loại khách hàng không hợp lệ; customer.comboboxInvalid=Dữ liệu trong combobox không hợp lệ;
common.fileNotSelected=Bạn chưa chọn file common.fileNotSelected=Bạn chưa chọn file
common.fileInvalidFormat=File không hợp lệ common.fileInvalidFormat=File không hợp lệ
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment