Změněn způsob ukládání PDF dokumentu. Data se předávájí ve ViewModelu, tak nemůže dojít k tomu, že by se schválením jiného záznamu v druhém okně prohlížeče uložilo jiné PDF.

refs #243
Verze_3.0
Josef Rokos 10 years ago
parent b5ffa07644
commit b70041bfff

@ -63,6 +63,8 @@ public class ModuleUtils {
} }
} }
continue;
} catch (ClassCastException e) { //nestandardní moduly neřeší...
continue; continue;
} }

@ -22,7 +22,7 @@ public interface RequirementBaseService<T extends RequirementBase> extends Servi
public void loadType(T data); public void loadType(T data);
public void loadWorkflow(T data); public void loadWorkflow(T data);
public void approve(T entity); 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 boolean canApprove(T entity);
public List<User> getNextApprover(T entity); public List<User> getNextApprover(T entity);
public boolean prepareSignData(T entity, Date approveDate); public boolean prepareSignData(T entity, Date approveDate);

@ -245,7 +245,7 @@ public abstract class RequirementBaseServiceImpl<T extends RequirementBase> 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()); T e = (T) dao.getById(entity.getId());
if (e.getReqDate().getTime() > approveDate.getTime()) { if (e.getReqDate().getTime() > approveDate.getTime()) {
@ -300,12 +300,16 @@ public abstract class RequirementBaseServiceImpl<T extends RequirementBase> exte
} }
} }
saveSignedDoc(e); if (signedPdf != null)
{
saveSignedDoc(e, signedPdf);
}
postApprove(e); postApprove(e);
} }
protected void approve(T entity, User user) { protected void approve(T entity, User user) {
approve(entity, user, new Date()); approve(entity, user, new Date(), null);
} }
@Override @Override
@ -318,8 +322,8 @@ public abstract class RequirementBaseServiceImpl<T extends RequirementBase> exte
@Override @Override
@Transactional @Transactional
@PreAuthorize("this.canApprove(#entity)") @PreAuthorize("this.canApprove(#entity)")
public void approve(T entity, Date approveDate) { public void approve(T entity, Date approveDate, byte[] signedPdf) {
approve(entity, getLoggedInUser(), approveDate); approve(entity, getLoggedInUser(), approveDate, signedPdf);
} }
/** /**
@ -342,33 +346,27 @@ public abstract class RequirementBaseServiceImpl<T extends RequirementBase> exte
} }
protected void saveSignedDoc(T entity) { protected void saveSignedDoc(T entity, byte[] signedPdf) {
/* DataModel reportEntity = entityForSignReport(entity);
if (!entity.equals(reportDefinition.getDataSet().get(0))) { SignedDocumentItem signedItem = signedDocumentService.getItem(entityForSignReport(entity), getSignReport(entity).getReportId());
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);
if (signedItem == null) { if (signedItem == null) {
data = (SignData) sessionData.getProperty(Constants.KEY_SIGN_DATA);
SignedDocument signDoc = new SignedDocument(); SignedDocument signDoc = new SignedDocument();
signDoc.setDescription(entity.getDescription()); signDoc.setDescription(entity.getDescription());
signDoc.setNumser(entity.getNumser()); signDoc.setNumser(entity.getNumser());
signDoc.setRecordId(reportEntity.getId()); signDoc.setRecordId(reportEntity.getId());
signDoc.setModuleName(ModuleUtils.getModule(reportEntity, servletContext).getId()); signDoc.setModuleName(ModuleUtils.getModule(reportEntity, servletContext).getId());
signDoc.setSignDate(entity.getLastApproveDate());
SignedDocumentItem item = new SignedDocumentItem(); SignedDocumentItem item = new SignedDocumentItem();
item.setReportId(reportDefinition.getReport().getReportId()); item.setReportId(reportDefinition.getReport().getReportId());
item.setReportName(reportDefinition.getReport().getName()); item.setReportName(reportDefinition.getReport().getName());
signDoc.addItem(item); signDoc.addItem(item);
signedDocStorage.saveFile(data.getPdfData(), item); signedDocStorage.saveFile(signedPdf, item);
signedDocumentService.addFromApprove(signDoc); signedDocumentService.addFromApprove(signDoc);
} else { } else {
signedDocStorage.saveFile(data.getPdfData(), signedItem); signedDocStorage.saveFile(signedPdf, signedItem);
} }
} }
@ -478,23 +476,16 @@ public abstract class RequirementBaseServiceImpl<T extends RequirementBase> exte
sessionData.setProperty(Constants.KEY_SIGN_GUID, data.getSignGuid()); sessionData.setProperty(Constants.KEY_SIGN_GUID, data.getSignGuid());
reportDefinition.clear(); reportDefinition.clear();
reportDefinition.setSingleObject(entityForReport(entity)); reportDefinition.setSingleObject(entityForSignReport(entity));
Module module = ModuleUtils.getModule(entityForReport(entity), servletContext);
Report report = null;
for (Report r : module.getReports()) { Report report = getSignReport(entity);
if (r.isSignable()) {
report = r;
break;
}
}
if (report == null) { if (report == null) {
return false; return false;
} }
reportDefinition.setReport(report); reportDefinition.setReport(report);
Module module = ModuleUtils.getModule(entityForSignReport(entity), servletContext);
reportDefinition.setService((Service<Object>) ModuleUtils.getServiceInstance(module, servletContext)); reportDefinition.setService((Service<Object>) ModuleUtils.getServiceInstance(module, servletContext));
paramFiller.fill(); paramFiller.fill();
@ -503,7 +494,7 @@ public abstract class RequirementBaseServiceImpl<T extends RequirementBase> exte
data.setDescription(entity.getDescription()); data.setDescription(entity.getDescription());
data.setNumser(entity.getNumser()); data.setNumser(entity.getNumser());
data.setSignDate(approveDate); 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) { if (entity.getState() == RequirementState.NEW) {
data.setAreaId(1); data.setAreaId(1);
@ -512,12 +503,28 @@ public abstract class RequirementBaseServiceImpl<T extends RequirementBase> exte
data.setAreaId(entity.getAuthorization().size() + 1); data.setAreaId(entity.getAuthorization().size() + 1);
} }
if (userService.getUserSettings().getSignatureFile() != null) {
data.setSignImg(storage.fileData(userService.getUserSettings().getSignatureFile())); data.setSignImg(storage.fileData(userService.getUserSettings().getSignatureFile()));
}
return true; return true;
} }
protected DataModel entityForReport(T entity) { protected DataModel entityForSignReport(T entity) {
return 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;
}
} }

@ -60,7 +60,7 @@ public class RequirementServiceImpl extends RequirementBaseServiceImpl<Requireme
if ((entity.getSumTotal() != null) if ((entity.getSumTotal() != null)
&& (entity.getSumTotal().compareTo(nextWf.getLimit()) == -1)) && (entity.getSumTotal().compareTo(nextWf.getLimit()) == -1))
{ {
approve(entity, approvers.get(0), approveDate); approve(entity, approvers.get(0), approveDate, null);
return true; return true;
} }

@ -55,7 +55,7 @@ public class TripBillApprovalServiceImpl extends RequirementBaseServiceImpl<Trip
} }
@Override @Override
protected DataModel entityForReport(TripBillApproval entity) { protected DataModel entityForSignReport(TripBillApproval entity) {
return entity.getBill(); return entity.getBill();
} }
} }

@ -34,6 +34,7 @@ public class ApproveDialogVM {
private SessionData sessionData; private SessionData sessionData;
private boolean signed; private boolean signed;
private boolean timer; private boolean timer;
private byte[] signedPdf;
public Date getApproveDate() { public Date getApproveDate() {
return approveDate; return approveDate;
@ -59,7 +60,7 @@ public class ApproveDialogVM {
@Command @Command
public void approve(@BindingParam("window") Window window) { public void approve(@BindingParam("window") Window window) {
try { try {
service.approve(requirement, approveDate); service.approve(requirement, approveDate, signedPdf);
BindUtils.postNotifyChange(null, null, grid, "dataBean"); BindUtils.postNotifyChange(null, null, grid, "dataBean");
BindUtils.postNotifyChange(null, null, grid, "canApprove"); BindUtils.postNotifyChange(null, null, grid, "canApprove");
BindUtils.postGlobalCommand(null, null, "reload", null); BindUtils.postGlobalCommand(null, null, "reload", null);
@ -88,6 +89,7 @@ public class ApproveDialogVM {
if (guid.equals(data.getSignGuid()) && data.isSignSuccess()) { if (guid.equals(data.getSignGuid()) && data.isSignSuccess()) {
signed = true; signed = true;
timer = false; timer = false;
signedPdf = data.getPdfData();
} else { } else {
signed = false; signed = false;
} }

Loading…
Cancel
Save