Commit 80a659bd authored by Vu Duy Anh's avatar Vu Duy Anh

anhvd commit

parent 662b775b
No preview for this file type
......@@ -243,7 +243,7 @@ public class ScenarioServiceImpl implements ScenarioService {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
Map<String, Object> result = new HashMap<>();
StringBuilder sb = new StringBuilder();
boolean isValid = false;
boolean isValid = true;
try {
List<String> fileHeaderList = new ArrayList<>();
fileHeaderList.add(BundleUtils.getLangString("scenario.template.questionCode", locale));
......@@ -322,9 +322,19 @@ public class ScenarioServiceImpl implements ScenarioService {
//<editor-fold desc="Validate dữ liệu" defaultstate="collapsed">
String selectedType = "";
List<String> lstImportQuestionCodes = new ArrayList<>();
String tmpCurrentQuestionCode = null;
rawDataList.forEach(item -> {
if (item[0] != null && !item[0].toString().trim().equals(""))
lstImportQuestionCodes.add(item[0].toString().trim());
});
for (int i = 0; i < rawDataList.size(); i++) {
if (rawDataList.get(i)[0] != null && !rawDataList.get(i)[0].toString().trim().equals(""))
if (rawDataList.get(i)[0] != null && !rawDataList.get(i)[0].toString().trim().equals("")) {
selectedType = rawDataList.get(i)[1].toString().trim();
tmpCurrentQuestionCode = rawDataList.get(i)[0].toString().trim();
}
//validate question
if ((rawDataList.get(i)[0] != null && !rawDataList.get(i)[0].toString().trim().equals("")) ||
(rawDataList.get(i)[1] != null && !rawDataList.get(i)[1].toString().trim().equals("")) ||
......@@ -358,6 +368,12 @@ public class ScenarioServiceImpl implements ScenarioService {
if (rawDataList.get(i)[4] == null && rawDataList.get(i)[4].toString().trim().equals("")) {
sb.append(BundleUtils.getLangString("scenario.hashInput.required"));
}
if((rawDataList.get(i)[7] != null && !rawDataList.get(i)[7].toString().trim().equals(""))) {
if((rawDataList.get(i)[7].toString().trim().equals(tmpCurrentQuestionCode)) ||
validateMappingQuestion(rawDataList.get(i)[7].toString().trim(), tmpCurrentQuestionCode, lstImportQuestionCodes))
sb.append(BundleUtils.getLangString("scenario.mappingQuestion.invalid"));
}
}
Row dataRow = sheet.getRow(3 + i);
Cell resultCell = dataRow.createCell(row.getPhysicalNumberOfCells() - 1);
......@@ -365,12 +381,11 @@ public class ScenarioServiceImpl implements ScenarioService {
resultCell.setCellValue(sb.toString());
isValid = false;
} else {
isValid = true;
// isValid = true;
resultCell.setCellValue("Ok");
}
sb = new StringBuilder();
}
selectedType = "";
//</editor-fold>
//insert data
......@@ -378,13 +393,14 @@ public class ScenarioServiceImpl implements ScenarioService {
logger.info("----- Data valid, start import scenario question -----");
List<ScenarioQuestionDTO> lstQuestion = buildQuestionsLst(rawDataList, scenarioId, campaignId, companySiteId);
lstQuestion.forEach(question -> {
questionService.add(question);
// questionService.add(question);
});
FileOutputStream fos = new FileOutputStream(file);
workbook.write(fos);
result.put("file", file);
result.put("message", BundleUtils.getLangString("customer.importSuccess", locale));
} else {
logger.info("----- Data invalid, can't import scenario question -----");
FileOutputStream fos = new FileOutputStream(file);
workbook.write(fos);
result.put("file", file);
......@@ -398,9 +414,17 @@ public class ScenarioServiceImpl implements ScenarioService {
return result;
}
private boolean validateQuestionIndex(Object index) {
if (index != null && DataUtil.isLong(index.toString())) return true;
return false;
private boolean validateMappingQuestion(String mappingQuestion, String currentQuestionCode, List<String> lstQuestionCode) {
if(mappingQuestion == currentQuestionCode) return false;
String duplicateCode = lstQuestionCode.stream().
filter(p -> (p.equals(mappingQuestion) && p.equals(currentQuestionCode))).
findAny().orElse(null);
if(duplicateCode == null) return false;
// String notMappedCode = lstQuestionCode.stream().filter(p -> (!p.equals(mappingQuestion))).findAny().orElse(null);
// if(notMappedCode != null) return false;
return true;
}
......@@ -411,15 +435,15 @@ public class ScenarioServiceImpl implements ScenarioService {
List<ScenarioQuestionDTO> lstQuestions = new ArrayList<>();
List<ScenarioAnswerDTO> lstAnswerOfQuestion = new ArrayList<>();
ScenarioQuestionDTO questionDTO = null;
Integer questionIndex = null;
String questionCode = null;
for (int i = 0; i < rawDatas.size(); i++) {
if (rawDatas.get(i)[0] != null && !rawDatas.get(i)[0].toString().trim().equals("")) {
questionIndex = Double.valueOf(rawDatas.get(i)[0].toString().trim()).intValue();
questionCode = rawDatas.get(i)[0].toString().trim();
questionDTO = new ScenarioQuestionDTO();
questionDTO.setScenarioId(scenarioId);
questionDTO.setCampaignId(campaignId);
questionDTO.setCompanySiteId(companySiteId);
questionDTO.setImportIndex(questionIndex);
questionDTO.setImportCode(questionCode);
if (rawDatas.get(i)[1].toString().trim().equals(BundleUtils.getLangString("scenario.template.text")))
questionDTO.setType((short) 0);
......@@ -445,9 +469,9 @@ public class ScenarioServiceImpl implements ScenarioService {
answerDto.setHasInput((short) 1);
else answerDto.setHasInput((short) 0);
if (rawDatas.get(i)[7] != null && !rawDatas.get(i)[7].toString().trim().equals("")) {
answerDto.setMappingQuestionId(Double.valueOf(rawDatas.get(i)[7].toString().trim()).longValue());
answerDto.setMappingQuestionCode(rawDatas.get(i)[7].toString().trim());
}
answerDto.setImportQuestionIndex(questionIndex);
answerDto.setImportQuestionCode(questionCode);
answerDto.setCompanySiteId(companySiteId);
lstAnswerOfQuestion.add(answerDto);
......@@ -456,7 +480,7 @@ public class ScenarioServiceImpl implements ScenarioService {
questionOrderIndex = questionRepository.getMaxOrderId(scenarioId, campaignId, companySiteId);
if(questionOrderIndex == null) questionOrderIndex = 0L;
if (questionOrderIndex == null) questionOrderIndex = 0L;
lstQuestions.forEach(q -> {
questionOrderIndex += 1;
q.setOrderIndex(questionOrderIndex);
......@@ -466,7 +490,7 @@ public class ScenarioServiceImpl implements ScenarioService {
lstAnswerOfQuestion.forEach(a -> {
answerIndex += 1;
a.setOrderIndex(answerIndex);
if(a.getImportQuestionIndex() == q.getImportIndex()) answers.add(a);
if (a.getImportQuestionCode().equals(q.getImportCode())) answers.add(a);
});
q.setLstAnswers(answers);
});
......
......@@ -25,5 +25,6 @@ public class ScenarioAnswerDTO implements Serializable {
public Date deleteTime;
public Long mappingQuestionId;
public Long campaignId;
public Integer importQuestionIndex;
public String importQuestionCode;
public String mappingQuestionCode;
}
......@@ -29,5 +29,5 @@ public class ScenarioQuestionDTO implements Serializable {
private Short isDefault;
private Short answerIndex;
private List<ScenarioAnswerDTO> lstAnswers;
private Integer importIndex;
private String importCode;
}
......@@ -132,6 +132,9 @@ public class ScenarioController {
// .body(Files.readAllBytes(fileExport.toPath()));
} catch (Exception e) {
logger.error(e.getMessage());
ResultDTO resultDTO = new ResultDTO();
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
}
......
server:
port: 1111
port: 9999
spring:
application:
name: campaign
......
......@@ -134,4 +134,5 @@ scenario.answer.required="Answer is required for SingleChoice or MultiChoice que
scenario.hashInput.required="Has input is required"
scenario.required.required="Require is required"
scenario.default.required="Default is required"
scenario.mappingQuestion.invalid="Mapping question invalid"
......@@ -136,6 +136,7 @@ scenario.answer.required="Câu trả lời cho câu hỏi SingleChoice, MultiCho
scenario.hashInput.required="Trường Nhập text bắt buộc nhập"
scenario.required.required="Trường Bắt buộc bắt buộc nhập"
scenario.default.required="Trường Mặc định bắt buộc nhập"
scenario.mappingQuestion.invalid="Câu hỏi liên kết 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