From: marcellszabo-spedinfo Date: Mon, 4 Dec 2023 19:58:26 +0000 (+0100) Subject: Project Initialisation - 1st step: Create Project Folders workflow X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=da5aa3fb460fa187da6f9e755bea8182e2bfd88e;p=sly-crm.git Project Initialisation - 1st step: Create Project Folders workflow --- diff --git a/lis-app/src/test/java/hu/user/lis/workflow/PrepareProjectIT.java b/lis-app/src/test/java/hu/user/lis/workflow/PrepareProjectIT.java index fafcdd4..4699ebc 100644 --- a/lis-app/src/test/java/hu/user/lis/workflow/PrepareProjectIT.java +++ b/lis-app/src/test/java/hu/user/lis/workflow/PrepareProjectIT.java @@ -16,6 +16,7 @@ import org.camunda.bpm.engine.RuntimeService; import org.camunda.bpm.engine.runtime.ProcessInstance; import org.junit.Test; import org.junit.runner.RunWith; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.ComponentScan; @@ -53,11 +54,31 @@ public class PrepareProjectIT extends BpmnTest { .partner(partnerRepository.findAll().get(0)) .projectStatus(projectStatusRepository.findAll().get(0)) .name("Teszt projekt") + .humanId("2092-1123") .active(true) .build(); try { projectRepository.saveAndFlush(project); -// log.info("Template source: {}", workflowProperties.getPrepareProject().getTemplateSourceFolder()); + WorkflowProperties.PrepareProject pp = workflowProperties.getPrepareProject(); + assertEquals(pp.getProposalPostfixDateFormat(),"yyyyMMdd"); + assertEquals(pp.getValidityDateFormat(),"yyyy. MMMM dd."); + assertEquals(pp.getProjectNameSeparator()," - "); + assertEquals(pp.getAjanlatkeres(),"01_Ajánlatkérés"); + assertEquals(pp.getBejovoAjanlatkeres(),"02_Bejövő ajánlatok"); + assertEquals(pp.getKalkulacio(),"03_Kalkuláció"); + assertEquals(pp.getKimenoAjanlatok(),"04_Kimenő ajánlatok"); + assertEquals(pp.getMegrendeles(),"05_Megrendelés"); + assertEquals(pp.getTeljesites(),"06_Teljesítés"); + assertEquals(pp.getAjanlatNamePrefix(),"USER_Ajánlat_"); + assertEquals(pp.getProposalNamePrefix(),"USER_Proposal_"); + assertEquals(pp.getTigNamePrefix(),"USER_TIG_"); + assertEquals(pp.getKalkulacioNamePrefix(),"USER_Kalkuláció_"); + assertEquals(pp.getSmbMountPointForSalesDirector(),"/Users/marcellszabo/Downloads/SALES"); + assertEquals(pp.getAjanlatTemplateDocx(),"/Users/marcellszabo/Downloads/SALES/SABLONOK/USER_Ajánlat_v1.docx"); + assertEquals(pp.getProposalTemplateDocx(),"/Users/marcellszabo/Downloads/SALES/SABLONOK/USER_Proposal_v1.docx"); + assertEquals(pp.getTigTemplateDocx(),"/Users/marcellszabo/Downloads/SALES/SABLONOK/TIG_Sablon_v1.docx"); + assertEquals(pp.getCalculationXlsx(),"/Users/marcellszabo/Downloads/SALES/SABLONOK/USER_kalkuláció_v1.xlsx"); + log.info("Postfixdate format: {}", workflowProperties.getPrepareProject().getProposalPostfixDateFormat()); cancelRunningProcesses(PROCESSID); ImmutableMap params = ImmutableMap.of("projectId", project.getId()); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(PROCESSID, params); diff --git a/lis-app/src/test/resources/application-test.yaml b/lis-app/src/test/resources/application-test.yaml index 358c957..4f6703e 100644 --- a/lis-app/src/test/resources/application-test.yaml +++ b/lis-app/src/test/resources/application-test.yaml @@ -61,7 +61,25 @@ application: input-path: /temp/invoice-import project-id-pattern: \d{4}-\d{4} prepare-project: - template-source-folder: "valami" + proposal-postfix-date-format: "yyyyMMdd" + validity-date-format: "yyyy. MMMM dd." + project-name-separator: " - " + ajanlatkeres: "01_Ajánlatkérés" + bejovo-ajanlatkeres: "02_Bejövő ajánlatok" + kalkulacio: "03_Kalkuláció" + kimeno-ajanlatok: "04_Kimenő ajánlatok" + megrendeles: "05_Megrendelés" + teljesites: "06_Teljesítés" + ajanlat-name-prefix: "USER_Ajánlat_" + proposal-name-prefix: "USER_Proposal_" + tig-name-prefix: "USER_TIG_" + kalkulacio-name-prefix: "USER_Kalkuláció_" + smb-mount-point-for-sales-director: "/Users/marcellszabo/Downloads/SALES" + ajanlat-template-docx: "/Users/marcellszabo/Downloads/SALES/SABLONOK/USER_Ajánlat_v1.docx" + proposal-template-docx: "/Users/marcellszabo/Downloads/SALES/SABLONOK/USER_Proposal_v1.docx" + tig-template-docx: "/Users/marcellszabo/Downloads/SALES/SABLONOK/TIG_Sablon_v1.docx" + calculation-xlsx: "/Users/marcellszabo/Downloads/SALES/SABLONOK/USER_kalkuláció_v1.xlsx" + service: nav: trust: diff --git a/lis-workflow/src/main/java/hu/user/lis/workflow/project/CreateProjectFolders.java b/lis-workflow/src/main/java/hu/user/lis/workflow/project/CreateProjectFolders.java index 665ba2b..0659b1b 100644 --- a/lis-workflow/src/main/java/hu/user/lis/workflow/project/CreateProjectFolders.java +++ b/lis-workflow/src/main/java/hu/user/lis/workflow/project/CreateProjectFolders.java @@ -10,10 +10,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.persistence.EntityNotFoundException; +import java.io.File; @Log4j2 @Component public class CreateProjectFolders implements JavaDelegate { + private final static String fileSeparator = File.separator; // or FileSystems.getDefault().getSeparator(); File.separatorChar; + @Autowired private ProjectRepository projectRepository; @@ -25,6 +28,61 @@ public class CreateProjectFolders implements JavaDelegate { Long projectId = (Long) delegateExecution.getVariable("projectId"); Project project = projectRepository.findById(projectId).orElseThrow(EntityNotFoundException::new); log.info("Executing on project ID {}", projectId); + log.info("Executing on project Name {}", project.getName()); + createFolder(project.getPartner().getName(), project.getHumanId(), project.getName()); // delegateExecution.setVariableLocal("invoices", invoices); + + } + + private void createFolder(String partnerShortName, String projectID, String projectName) throws SlyException { + WorkflowProperties.PrepareProject pp = workflowProperties.getPrepareProject(); + + log.info("Creating project folder for " + partnerShortName + ", and " + projectID + pp.getProjectNameSeparator() + + projectName + ". File system separator: " + fileSeparator); + if (partnerShortName == null || partnerShortName.isEmpty() || partnerShortName.trim().isEmpty()) { + log.error("Project folder creation failed, Partner Short Name is Null or Empty!"); + throw new SlyException("Partner Short Name is Null or Empty!"); + } + + if (projectID == null || projectID.isEmpty() || projectID.trim().isEmpty()) { + log.error("Project folder creation failed, Project ID is Null or Empty!"); + throw new SlyException("Project ID is Null or Empty!"); + } + + if (projectName == null || projectName.isEmpty() || projectName.trim().isEmpty()) { + log.error("Project folder creation failed, Project Name is Null or Empty!"); + throw new SlyException("Project Name is Null or Empty!"); + } + + String path = pp.getSmbMountPointForSalesDirector() + fileSeparator + partnerShortName.trim() + fileSeparator + + projectID.trim() + pp.getProjectNameSeparator() + projectName.trim(); + log.info("Project folder path: " + path + "."); + File baseDir = new File(path); + File ajanlatkeresDir = new File(path + fileSeparator + pp.getAjanlatkeres()); + File bejovoDir = new File(path + fileSeparator + pp.getBejovoAjanlatkeres()); + File kalkulacioDir = new File(path + fileSeparator + pp.getKalkulacio()); + File kimenoDir = new File(path + fileSeparator + pp.getKimenoAjanlatok()); + File megrendelesDir = new File(path + fileSeparator + pp.getMegrendeles()); + File teljesitesDir = new File(path + fileSeparator + pp.getTeljesites()); + if (baseDir.exists()) { + log.error("Project folder (" + path + ") already exists!"); + throw new SlyException("Project folder (" + path + ") already exists!"); + } + + try { + baseDir.mkdirs(); + ajanlatkeresDir.mkdirs(); + bejovoDir.mkdirs(); + kalkulacioDir.mkdirs(); + kimenoDir.mkdirs(); + megrendelesDir.mkdirs(); + teljesitesDir.mkdirs(); + + } catch (Exception e) { + throw new SlyException(e.getMessage()); + } finally { + log.info("Project folder has been created: " + path + "."); + + } } } diff --git a/lis-workflow/src/main/java/hu/user/lis/workflow/project/SlyException.java b/lis-workflow/src/main/java/hu/user/lis/workflow/project/SlyException.java new file mode 100644 index 0000000..4b3c5bb --- /dev/null +++ b/lis-workflow/src/main/java/hu/user/lis/workflow/project/SlyException.java @@ -0,0 +1,15 @@ +package hu.user.lis.workflow.project; + +public class SlyException extends Exception { + + private String exception; + + public SlyException(String exception) { + this.exception = exception; + } + + @Override + public String getMessage() { + return exception; + } +} diff --git a/lis-workflow/src/main/java/hu/user/lis/workflow/properties/WorkflowProperties.java b/lis-workflow/src/main/java/hu/user/lis/workflow/properties/WorkflowProperties.java index 05a46a4..c275451 100644 --- a/lis-workflow/src/main/java/hu/user/lis/workflow/properties/WorkflowProperties.java +++ b/lis-workflow/src/main/java/hu/user/lis/workflow/properties/WorkflowProperties.java @@ -26,7 +26,24 @@ public class WorkflowProperties { @Getter @Setter public static class PrepareProject { - private String templateSourceFolder; + private String proposalPostfixDateFormat; + private String validityDateFormat; + private String projectNameSeparator; + private String ajanlatkeres; + private String bejovoAjanlatkeres; + private String kalkulacio; + private String kimenoAjanlatok; + private String megrendeles; + private String teljesites; + private String ajanlatNamePrefix; + private String proposalNamePrefix; + private String tigNamePrefix; + private String kalkulacioNamePrefix; + private String smbMountPointForSalesDirector; + private String ajanlatTemplateDocx; + private String proposalTemplateDocx; + private String tigTemplateDocx; + private String calculationXlsx; } }