diff --git a/src/main/java/info/bukova/isspst/ModuleUtils.java b/src/main/java/info/bukova/isspst/ModuleUtils.java index 9596ea2e..b588358d 100644 --- a/src/main/java/info/bukova/isspst/ModuleUtils.java +++ b/src/main/java/info/bukova/isspst/ModuleUtils.java @@ -63,6 +63,8 @@ public class ModuleUtils { } } + continue; + } catch (ClassCastException e) { //nestandardní moduly neřeší... continue; } diff --git a/src/main/java/info/bukova/isspst/services/requirement/RequirementBaseService.java b/src/main/java/info/bukova/isspst/services/requirement/RequirementBaseService.java index 588491f5..860c4044 100644 --- a/src/main/java/info/bukova/isspst/services/requirement/RequirementBaseService.java +++ b/src/main/java/info/bukova/isspst/services/requirement/RequirementBaseService.java @@ -22,7 +22,7 @@ public interface RequirementBaseService extends Servi public void loadType(T data); public void loadWorkflow(T data); public void approve(T entity); - public void approve(T entity, Date approveDate); + public void approve(T entity, Date approveDate, byte[] signedPdf); public boolean canApprove(T entity); public List getNextApprover(T entity); public boolean prepareSignData(T entity, Date approveDate); diff --git a/src/main/java/info/bukova/isspst/services/requirement/RequirementBaseServiceImpl.java b/src/main/java/info/bukova/isspst/services/requirement/RequirementBaseServiceImpl.java index d337cd14..93427584 100644 --- a/src/main/java/info/bukova/isspst/services/requirement/RequirementBaseServiceImpl.java +++ b/src/main/java/info/bukova/isspst/services/requirement/RequirementBaseServiceImpl.java @@ -245,7 +245,7 @@ public abstract class RequirementBaseServiceImpl exte } } - protected void approve(T entity, User user, Date approveDate) { + protected void approve(T entity, User user, Date approveDate, byte[] signedPdf) { T e = (T) dao.getById(entity.getId()); if (e.getReqDate().getTime() > approveDate.getTime()) { @@ -300,12 +300,16 @@ public abstract class RequirementBaseServiceImpl exte } } - saveSignedDoc(e); + if (signedPdf != null) + { + saveSignedDoc(e, signedPdf); + } + postApprove(e); } protected void approve(T entity, User user) { - approve(entity, user, new Date()); + approve(entity, user, new Date(), null); } @Override @@ -318,8 +322,8 @@ public abstract class RequirementBaseServiceImpl exte @Override @Transactional @PreAuthorize("this.canApprove(#entity)") - public void approve(T entity, Date approveDate) { - approve(entity, getLoggedInUser(), approveDate); + public void approve(T entity, Date approveDate, byte[] signedPdf) { + approve(entity, getLoggedInUser(), approveDate, signedPdf); } /** @@ -342,33 +346,27 @@ public abstract class RequirementBaseServiceImpl exte } - protected void saveSignedDoc(T entity) { - /* - if (!entity.equals(reportDefinition.getDataSet().get(0))) { - throw new ApproveException(); - }*/ - - DataModel reportEntity = (DataModel) reportDefinition.getDataSet().get(0); - SignedDocumentItem signedItem = signedDocumentService.getItem(entity, reportDefinition.getReport().getReportId()); - SignData data = (SignData) sessionData.getProperty(Constants.KEY_SIGN_DATA); + protected void saveSignedDoc(T entity, byte[] signedPdf) { + DataModel reportEntity = entityForSignReport(entity); + SignedDocumentItem signedItem = signedDocumentService.getItem(entityForSignReport(entity), getSignReport(entity).getReportId()); if (signedItem == null) { - data = (SignData) sessionData.getProperty(Constants.KEY_SIGN_DATA); SignedDocument signDoc = new SignedDocument(); signDoc.setDescription(entity.getDescription()); signDoc.setNumser(entity.getNumser()); signDoc.setRecordId(reportEntity.getId()); signDoc.setModuleName(ModuleUtils.getModule(reportEntity, servletContext).getId()); + signDoc.setSignDate(entity.getLastApproveDate()); SignedDocumentItem item = new SignedDocumentItem(); item.setReportId(reportDefinition.getReport().getReportId()); item.setReportName(reportDefinition.getReport().getName()); signDoc.addItem(item); - signedDocStorage.saveFile(data.getPdfData(), item); + signedDocStorage.saveFile(signedPdf, item); signedDocumentService.addFromApprove(signDoc); } else { - signedDocStorage.saveFile(data.getPdfData(), signedItem); + signedDocStorage.saveFile(signedPdf, signedItem); } } @@ -478,23 +476,16 @@ public abstract class RequirementBaseServiceImpl exte sessionData.setProperty(Constants.KEY_SIGN_GUID, data.getSignGuid()); reportDefinition.clear(); - reportDefinition.setSingleObject(entityForReport(entity)); - - Module module = ModuleUtils.getModule(entityForReport(entity), servletContext); - Report report = null; + reportDefinition.setSingleObject(entityForSignReport(entity)); - for (Report r : module.getReports()) { - if (r.isSignable()) { - report = r; - break; - } - } + Report report = getSignReport(entity); if (report == null) { return false; } reportDefinition.setReport(report); + Module module = ModuleUtils.getModule(entityForSignReport(entity), servletContext); reportDefinition.setService((Service) ModuleUtils.getServiceInstance(module, servletContext)); paramFiller.fill(); @@ -503,7 +494,7 @@ public abstract class RequirementBaseServiceImpl exte data.setDescription(entity.getDescription()); data.setNumser(entity.getNumser()); data.setSignDate(approveDate); - data.setSigned(signedDocumentService.getItem(entityForReport(entity), report.getReportId()) != null); + data.setSigned(signedDocumentService.getItem(entityForSignReport(entity), report.getReportId()) != null); if (entity.getState() == RequirementState.NEW) { data.setAreaId(1); @@ -512,12 +503,28 @@ public abstract class RequirementBaseServiceImpl exte data.setAreaId(entity.getAuthorization().size() + 1); } - data.setSignImg(storage.fileData(userService.getUserSettings().getSignatureFile())); + if (userService.getUserSettings().getSignatureFile() != null) { + data.setSignImg(storage.fileData(userService.getUserSettings().getSignatureFile())); + } return true; } - protected DataModel entityForReport(T entity) { + protected DataModel entityForSignReport(T entity) { return entity; } + + private Report getSignReport(T entity) { + Module module = ModuleUtils.getModule(entityForSignReport(entity), servletContext); + Report report = null; + + for (Report r : module.getReports()) { + if (r.isSignable()) { + report = r; + break; + } + } + + return report; + } } diff --git a/src/main/java/info/bukova/isspst/services/requirement/RequirementServiceImpl.java b/src/main/java/info/bukova/isspst/services/requirement/RequirementServiceImpl.java index 1e33ee45..857857b0 100644 --- a/src/main/java/info/bukova/isspst/services/requirement/RequirementServiceImpl.java +++ b/src/main/java/info/bukova/isspst/services/requirement/RequirementServiceImpl.java @@ -60,7 +60,7 @@ public class RequirementServiceImpl extends RequirementBaseServiceImpl