package com.gx.tools.dialog; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import org.eclipse.swt.SWT; import org.eclipse.swt.core.MessageDialog; import org.eclipse.swt.core.utils.SwtUtils; import org.eclipse.swt.core.widgets.EButton; import org.eclipse.swt.core.widgets.EDialog; import org.eclipse.swt.core.widgets.ESepator; import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; import com.gx.obe.ColorConstants; import com.gx.obe.business.entity.SignatureFile; import com.gx.obe.business.entity.SignatureUser; import com.gx.obe.common.file.download.DownloadFileUtill; import com.gx.obe.common.file.enumeration.FileConstants; import com.gx.obe.common.file.service.SignatureFileService; import com.gx.obe.common.file.service.SignatureUserService; import com.gx.obe.common.file.service.UploadFileService; import com.gx.obe.common.icons.IconsActivator; import com.gx.obe.common.widget.button.SignatureFileButton; import com.gx.obe.common.widget.shell.ToolsShell; import com.gx.obe.components.core.Constants; import com.gx.obe.components.core.enumeration.CommonEnum; import com.gx.obe.config.ConfigConstants; import com.gx.obe.config.utils.PropertiesUtils; import com.gx.obe.message.Messages; import com.gx.obe.util.utils.LogUtils; import com.gx.obe.util.utils.ScreenUtils; import com.gx.obe.web.entity.tender.TenderProjectEntity; import com.gx.tools.composite.HandSignComfigComposite; import com.gx.tools.ole.DocumentFactory; import com.gx.tools.ole.DocumentLoader; import com.gx.utils.NowTimeUtils; import com.swtdesigner.ResourceManager; import com.swtdesigner.SWTResourceManager; /** * @Description: 浏览报表 * @author guoyr */ public class BatchSignatureDialog extends EDialog { private UploadFileService uploadFileService = new UploadFileService(); private DocumentLoader documentLoader; private Composite pdfLoadComposite; private TenderProjectEntity tenderProjectEntity; private ScrolledComposite scrolledComposite; private Composite fileList_composite; private SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");//"yyyy-MM-dd HH:mm:ss" private SignatureFileService signatureFileService ; private SignatureUserService signatureUserService ; private Map userSignatureMap; private List userSignatureFileList; private Thread autoRefreshThread; private int signatureCount = 0; private Composite sinatureFile_composite; private EButton complateSignature_btn; private SignatureFile curSignatureFile; private SignatureFileButton curSignatureFileButton; private File signaturePdfFile; private EButton signature_btn; private EButton handSignature_btn; private EButton copyHandSignature_btn; private String pdfType; private boolean isHandSign; private String modifyName; private EButton configHandSignBtn; { LogUtils.logClass(BatchSignatureDialog.class); } /** * @author guoyr * @param parentShell * @param tenderProjectEntity * @param templateType */ public BatchSignatureDialog(Shell parentShell, TenderProjectEntity tenderProjectEntity, boolean isHandSign, String pdfType) { super(parentShell); setTitle(Messages.Button_caSignature); this.tenderProjectEntity = tenderProjectEntity; this.pdfType = pdfType; this.isHandSign = isHandSign; } /** * @Description: * @author guoyr * @param parent * @return */ @Override protected Control createDialogArea(Composite parent) { Composite container = (Composite) super.createDialogArea(parent); GridLayout gl_container = new GridLayout(3, false); gl_container.verticalSpacing = 0; gl_container.horizontalSpacing = 0; gl_container.marginWidth = 0; gl_container.marginHeight = 0; container.setLayout(gl_container); scrolledComposite = new ScrolledComposite(container, SWT.BORDER | SWT.V_SCROLL); GridData gd_scrolledComposite = new GridData(SWT.FILL, SWT.FILL, false, true, 1, 3); gd_scrolledComposite.widthHint = 150; scrolledComposite.setLayoutData(gd_scrolledComposite); scrolledComposite.setExpandHorizontal(true); scrolledComposite.setExpandVertical(true); fileList_composite = new Composite(scrolledComposite, SWT.NONE); fileList_composite.setLayout(new GridLayout(1, false)); sinatureFile_composite = new Composite(fileList_composite, SWT.NONE); GridLayout gl_sinatureFile_composite = new GridLayout(1, false); gl_sinatureFile_composite.verticalSpacing = 2; gl_sinatureFile_composite.horizontalSpacing = 0; gl_sinatureFile_composite.marginWidth = 0; gl_sinatureFile_composite.marginHeight = 0; sinatureFile_composite.setLayout(gl_sinatureFile_composite); sinatureFile_composite.setLayoutData(new GridData(SWT.CENTER, SWT.FILL, true, true, 1, 1)); SignatureFileButton signatureFileButton = new SignatureFileButton(sinatureFile_composite, SWT.NONE); GridData gd_signatureFileButton = new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1); gd_signatureFileButton.widthHint = 80; signatureFileButton.setLayoutData(gd_signatureFileButton); signatureFileButton.setText("初步评审汇总表"); scrolledComposite.setContent(fileList_composite); scrolledComposite.setMinSize(fileList_composite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); ESepator label = new ESepator(container, SWT.VERTICAL); label.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, true, 1, 3)); label.setBackground(ColorConstants.SEP_LIGHT_COLOR); // Tips tips = new Tips(container, SWT.NONE); // tips.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); // tips.setText("请确认您的评标结果,并进行电子签章"); pdfLoadComposite = new Composite(container, SWT.NONE); pdfLoadComposite.setForeground(SWTResourceManager.getColor(60, 138, 226)); pdfLoadComposite.setFont(SWTResourceManager.getFont("微软雅黑", 16, SWT.BOLD)); pdfLoadComposite.setBackground(SWTResourceManager.getColor(240, 240, 240)); pdfLoadComposite.setLayout(new FillLayout(SWT.HORIZONTAL)); pdfLoadComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); ESepator label_1 = new ESepator(container, SWT.NONE); label_1.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); label_1.setBackground(ColorConstants.SEP_LIGHT_COLOR); Composite composite_bottom = new Composite(container, SWT.NONE); composite_bottom.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); composite_bottom.setLayout(new GridLayout(8, false)); Label label_2 = new Label(composite_bottom, SWT.NONE); label_2.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); label_2.setText(""); configHandSignBtn = new EButton(composite_bottom, SWT.NONE | EButton.CSS_GREEN); GridData gd_handSignature_button = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1); gd_handSignature_button.heightHint = 30; configHandSignBtn.setLayoutData(gd_handSignature_button); configHandSignBtn.setFont(SWTResourceManager.getFont("微软雅黑", 10, SWT.BOLD)); configHandSignBtn.setText(Messages.HandwrittenSignatureConfiguration); configHandSignBtn.setLeftMargin(15); configHandSignBtn.setRightMargin(15); configHandSignBtn.setImage(ResourceManager.getPluginImage(IconsActivator.PLUGIN_ID, "icons/btn/white/config.png")); configHandSignBtn.addMouseListener(new MouseAdapter() { @Override public void mouseUp(MouseEvent e) { configHandSignatureAction(); } }); handSignature_btn = new EButton(composite_bottom, SWT.NONE | EButton.CSS_GREEN); GridData gd_handSignature_button_1 = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1); gd_handSignature_button_1.heightHint = 30; handSignature_btn.setLayoutData(gd_handSignature_button_1); handSignature_btn.setFont(SWTResourceManager.getFont("微软雅黑", 10, SWT.BOLD)); handSignature_btn.setText(Messages.Button_handSignature); handSignature_btn.setLeftMargin(15); handSignature_btn.setRightMargin(15); handSignature_btn.setImage(ResourceManager.getPluginImage(IconsActivator.PLUGIN_ID, "icons/btn/white/pen.png")); handSignature_btn.addMouseListener(new MouseAdapter() { @Override public void mouseUp(MouseEvent e) { addHandSignatureAction(); } }); copyHandSignature_btn = new EButton(composite_bottom, SWT.NONE | EButton.CSS_GREEN); GridData gd_copyHandSignature_btn = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1); gd_copyHandSignature_btn.heightHint = 30; copyHandSignature_btn.setLayoutData(gd_copyHandSignature_btn); copyHandSignature_btn.setFont(SWTResourceManager.getFont("微软雅黑", 10, SWT.BOLD)); copyHandSignature_btn.setLeftMargin(15); copyHandSignature_btn.setRightMargin(15); copyHandSignature_btn.setText(Messages.Button_duplicateSignature); copyHandSignature_btn.setImage(ResourceManager.getPluginImage(IconsActivator.PLUGIN_ID, "icons/btn/white/pen.png")); copyHandSignature_btn.addMouseListener(new MouseAdapter() { @Override public void mouseUp(MouseEvent e) { copyHandSignatureAction(); } }); signature_btn = new EButton(composite_bottom, SWT.NONE | EButton.CSS_GREEN); GridData gd_button = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1); gd_button.heightHint = 30; signature_btn.setLayoutData(gd_button); signature_btn.setFont(SWTResourceManager.getFont("微软雅黑", 10, SWT.BOLD)); signature_btn.setText(Messages.Esignature); signature_btn.setLeftMargin(15); signature_btn.setRightMargin(15); // signature_btn.setImage(ResourceManager.getPluginImage(IconsActivator.PLUGIN_ID, "icons/ceb_24.png")); signature_btn.setImage(ResourceManager.getPluginImage(IconsActivator.PLUGIN_ID, "icons/btn/white/signature.png")); signature_btn.addMouseListener(new MouseAdapter() { @Override public void mouseUp(MouseEvent e) { addSignatureAction(); } }); complateSignature_btn = new EButton(composite_bottom, SWT.NONE | EButton.CSS_GREEN); complateSignature_btn.setFont(SWTResourceManager.getFont("微软雅黑", 10, SWT.BOLD)); GridData gd_button_1 = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1); gd_button_1.heightHint = 30; complateSignature_btn.setLayoutData(gd_button_1); complateSignature_btn.addMouseListener(new MouseAdapter() { @Override public void mouseUp(MouseEvent e) { complateEvaluationAction(); } }); complateSignature_btn.setText(Messages.Button_completeSignature); complateSignature_btn.setLeftMargin(15); complateSignature_btn.setRightMargin(15); complateSignature_btn.setImage(ResourceManager.getPluginImage(IconsActivator.PLUGIN_ID, "icons/btn/white/submit.png")); EButton close_btn = new EButton(composite_bottom, SWT.NONE | EButton.CSS_BLUE); close_btn.setLeftMargin(25); close_btn.setRightMargin(25); close_btn.setFont(SWTResourceManager.getFont("微软雅黑", 10, SWT.BOLD)); GridData gd_button_back = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1); gd_button_back.heightHint = 30; close_btn.setLayoutData(gd_button_back); close_btn.setText(Messages.Button_close); close_btn.setImage(ResourceManager.getPluginImage(IconsActivator.PLUGIN_ID, "icons/btn/white/close.png")); Label label_3 = new Label(composite_bottom, SWT.NONE); label_3.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); label_3.setText(""); close_btn.addMouseListener(new MouseAdapter() { public void mouseUp(MouseEvent e) { close(); } }); init(); return container; } /** * @Description: 初始化 * @author guoyr */ private void init() { signatureFileService = new SignatureFileService(); signatureUserService = new SignatureUserService(); ((GridData) configHandSignBtn.getLayoutData()).exclude = true; configHandSignBtn.setVisible(false); pdfLoadComposite.addPaintListener(new PaintListener() { public void paintControl(PaintEvent arg0) { String title = Messages.Tips_selectFileSignature; int charWidth = arg0.gc.getCharWidth('黄'); arg0.gc.drawText(title, (arg0.width - charWidth * title.length()) / 2, 50, true); int drawX = arg0.width / 2 - 180; int drawY = arg0.height / 2 - 100; arg0.gc.drawImage(ResourceManager.getPluginImage(IconsActivator.PLUGIN_ID, "icons/signature_allow.png"), drawX, drawY); arg0.gc.drawText(Messages.Tips_applyCircleSignature, drawX + 40, drawY, true); drawY += 50; arg0.gc.drawImage(ResourceManager.getPluginImage(IconsActivator.PLUGIN_ID, "icons/signature_inprogress.png"), drawX, drawY); arg0.gc.drawText(Messages.Tips_beingCircleSignature, drawX + 40, drawY, true); drawY += 50; arg0.gc.drawImage(ResourceManager.getPluginImage(IconsActivator.PLUGIN_ID, "icons/signature_complate.png"), drawX, drawY); arg0.gc.drawText(Messages.Tips_complateSignature, drawX + 40, drawY, true); } }); complateSignature_btn.setEnabled(false); signature_btn.setEnabled(false); handSignature_btn.setEnabled(false); copyHandSignature_btn.setEnabled(false); refreshUserSinatureFiles(); if (isHandSign) { ((GridData) signature_btn.getLayoutData()).exclude = true; signature_btn.setVisible(false); modifyName = handSignature_btn.getText(); } else { modifyName = signature_btn.getText(); ((GridData) handSignature_btn.getLayoutData()).exclude = true; handSignature_btn.setVisible(false); ((GridData) copyHandSignature_btn.getLayoutData()).exclude = true; copyHandSignature_btn.setVisible(false); } final String keyCharacter = PropertiesUtils.getProperty("keyCharacter", "g"); if (null != keyCharacter && keyCharacter.length() > 0) { final Listener keyListener = new Listener() { public void handleEvent(Event e) { if ((e.stateMask == SWT.CTRL) && e.keyCode == keyCharacter.charAt(0)) { if (!configHandSignBtn.isDisposed()) { boolean visible = !configHandSignBtn.getVisible(); ((GridData) configHandSignBtn.getLayoutData()).exclude = !visible; configHandSignBtn.setVisible(visible); configHandSignBtn.setEnabled(configHandSignBtn.getVisible()); configHandSignBtn.getParent().layout(); } } } }; pdfLoadComposite.getDisplay().addFilter(SWT.KeyDown, keyListener); pdfLoadComposite.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { pdfLoadComposite.getDisplay().removeFilter(SWT.KeyDown, keyListener); } }); } } /** * @Description: 刷新当前用户需要签章的报表 * @author guoyr */ private void refreshUserSinatureFiles() { for (Control control : sinatureFile_composite.getChildren()) { control.dispose(); } final Runnable refreshRunnable = new Runnable() { public void run() { if (null != userSignatureFileList) { for (SignatureUser signatureUser : userSignatureFileList) { if (null != userSignatureMap) { if (null != curSignatureFile && curSignatureFile.getId().equals(signatureUser.getSignatureId()) && null != curSignatureFile.getCurUserId() && curSignatureFile.getCurUserId().equals(signatureUser.getUserId())) { continue; } SignatureFileButton signatureFileButton = userSignatureMap.get(signatureUser.getSignatureId()); if (null != signatureFileButton && !signatureFileButton.isDisposed()) { refreshSinatureStatus(signatureUser.getSignatureFile(), signatureUser, signatureFileButton); } else if (null != autoRefreshThread) { addSinatureFile(signatureUser.getSignatureFile(), signatureUser); sinatureFile_composite.layout(); fileList_composite.layout(); scrolledComposite.setMinSize(fileList_composite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); } } } } } }; userSignatureFileList = signatureUserService.getUserSignatureFileList(tenderProjectEntity.getId(), Constants.USER.getId()); if (null != userSignatureFileList) { userSignatureMap = new HashMap(); for (SignatureUser signatureUser : userSignatureFileList) { addSinatureFile(signatureUser.getSignatureFile(), signatureUser); } } autoRefreshThread = new Thread(new Runnable() { public void run() { while (null != userSignatureMap) { try { Thread.sleep(2000); } catch (InterruptedException e) {} userSignatureFileList = signatureUserService.getUserSignatureFileList(tenderProjectEntity.getId(), Constants.USER.getId()); if (null != Display.getDefault() && !Display.getDefault().isDisposed()) { Display.getDefault().syncExec(refreshRunnable); } } } }); autoRefreshThread.start(); sinatureFile_composite.layout(); fileList_composite.layout(); scrolledComposite.setMinSize(fileList_composite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); } /** * @Description: 添加签章文件 * @author guoyr * @param signatureFile * @param signatureUser */ private void addSinatureFile(final SignatureFile signatureFile, SignatureUser signatureUser) { if (null != signatureFile && null != signatureFile.getId()) { final SignatureFileButton signatureFileButton = new SignatureFileButton(sinatureFile_composite, SWT.NONE); GridData gd_signatureFileButton = new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1); gd_signatureFileButton.widthHint = 145; signatureFileButton.setLayoutData(gd_signatureFileButton); userSignatureMap.put(signatureFile.getId(), signatureFileButton); refreshSinatureStatus(signatureFile, signatureUser, signatureFileButton); signatureFileButton.addMouseListener(new MouseAdapter() { @Override public void mouseUp(MouseEvent e) { selectSignatureFileAction(signatureFileButton, signatureFile); } }); if (null != signatureFile.getCurUserId() && signatureFile.getCurUserId().equals(signatureUser.getUserId())) { selectSignatureFileAction(signatureFileButton, signatureFile); } } } /** * @Description: 选择签章文件事件 * @author guoyr * @param signatureFileButton * @param signatureFile */ private void selectSignatureFileAction(SignatureFileButton signatureFileButton, SignatureFile signatureFile) { if (null != documentLoader && documentLoader.getSignatureCount() > signatureCount) { complateEvaluationAction(); } complateSignature_btn.setEnabled(false); signature_btn.setEnabled(false); handSignature_btn.setEnabled(false); copyHandSignature_btn.setEnabled(false); SignatureUser signatureUser = (SignatureUser) signatureFileButton.getData("signatureUser"); // 如果上一次打开的文件没有释放已申请的签章权限,则先释放上次获取的签章权限,供其他专家申请使用 if (null != curSignatureFile && null != curSignatureFile.getCurUserId() && curSignatureFile.getCurUserId().equals(signatureUser.getUserId())) { curSignatureFile.setCurUserId(null); curSignatureFile.setCurUserName(null); signatureFileService.updateAssignProperty(curSignatureFile, new String[] { "id","curUserId", "curUserName" }); if (null != curSignatureFileButton && !curSignatureFileButton.isDisposed()) { SignatureUser preSignatureUser = (SignatureUser) curSignatureFileButton.getData("signatureUser"); refreshSinatureStatus(curSignatureFile, preSignatureUser, curSignatureFileButton); } } curSignatureFile = null; // 已经签章完成 if (null != signatureUser.getSignatureType() && signatureUser.getSignatureType().equals(CommonEnum.YES)) { loadSignatureFile(signatureFile); curSignatureFile = signatureFile; } else { // 申请签章 SignatureFile applySignatureFile = signatureFileService.applySignatureFile(signatureFile.getId(), signatureUser.getUserId(), signatureUser.getUserName()); curSignatureFile = applySignatureFile; if (null != applySignatureFile && null != applySignatureFile.getCurUserId()) { // 如果自己申请到签章权限 if (applySignatureFile.getCurUserId().equals(signatureUser.getUserId())) { loadSignatureFile(applySignatureFile); complateSignature_btn.setEnabled(true); signature_btn.setEnabled(true); handSignature_btn.setEnabled(true); copyHandSignature_btn.setEnabled(true); } else { // 别人申请到 MessageDialog.openShortMessage("[" + applySignatureFile.getCurUserName() + "]正在签章,请稍后再试..."); loadSignatureFile(applySignatureFile); return; } refreshSinatureStatus(applySignatureFile, signatureUser, signatureFileButton); } } if (null != curSignatureFileButton && !curSignatureFileButton.isDisposed()) { curSignatureFileButton.setSelection(false); } curSignatureFileButton = signatureFileButton; curSignatureFileButton.setSelection(true); } /** * @Description: 刷新显示签章状态 * @author guoyr * @param signatureUser * @param signatureFileButton */ private void refreshSinatureStatus(SignatureFile signatureFile, SignatureUser signatureUser, SignatureFileButton signatureFileButton) { if (null != signatureFile && null != signatureFileButton && !signatureFileButton.isDisposed()) { signatureFileButton.setData("signatureUser", signatureUser); if (null != signatureUser.getSignatureType() && signatureUser.getSignatureType().equals(CommonEnum.YES)) { signatureFileButton.setSubImage(ResourceManager.getPluginImage(IconsActivator.PLUGIN_ID, "icons/signature_complate.png")); signatureFileButton.setText(signatureFile.getFileName() + "\r\n" + format.format(signatureUser.getSignatureTime())); signatureFileButton.setEnabled(true); } else { signatureFileButton.setEnabled(false); if (null != signatureFile.getCurUserId()) { signatureFileButton.setSubImage(ResourceManager.getPluginImage(IconsActivator.PLUGIN_ID, "icons/signature_inprogress.png")); if (signatureUser.getUserId().equals(signatureFile.getCurUserId())) { signatureFileButton.setEnabled(true); signatureFileButton.setText(signatureFile.getFileName() + "\r\n" + Messages.Button_youAreSigning); } else if (null != signatureFile.getCurUserName()) { signatureFileButton.setText(signatureFile.getFileName() + "\r\n" + "[" + signatureFile.getCurUserName() + "]正在签章"); } else { signatureFileButton.setText(signatureFile.getFileName() + "\r\n" + Messages.Button_beingSigned); } } else { signatureFileButton.setSubImage(ResourceManager.getPluginImage(IconsActivator.PLUGIN_ID, "icons/signature_allow.png")); signatureFileButton.setText(signatureFile.getFileName() + "\r\n" + Messages.Button_applySignature); } } } } /** * @Description: 加载签章 * @author guoyr */ private void loadSignatureFile(SignatureFile applySignatureFile) { String reportType = null != applySignatureFile.getReportType() ? applySignatureFile.getReportType() : FileConstants.REPORT_FILE_FOLDER; if (uploadFileService.checkFileisExists(applySignatureFile.getFileName(), tenderProjectEntity.getId(), null, reportType)) { String fileURL = "/".concat(tenderProjectEntity.getId()).concat("/").concat(reportType).concat("/").concat(applySignatureFile.getFileName()); signaturePdfFile = new File(FileConstants.TEMP_FOLDER.concat(tenderProjectEntity.getId()).concat(File.separator).concat(applySignatureFile.getFileName())); if (signaturePdfFile.exists()) { if (null != applySignatureFile.getCreateTime() && signaturePdfFile.lastModified() < applySignatureFile.getCreateTime().getTime()) { signaturePdfFile.delete(); DownloadFileUtill.startDownloadFileSync(fileURL, applySignatureFile.getFileName(), signaturePdfFile.getParentFile().getAbsolutePath(), "正在下载报表文件"); } // 不是最新 if (null != applySignatureFile.getLastSignatureTime() && signaturePdfFile.lastModified() < applySignatureFile.getLastSignatureTime().getTime()) { DownloadFileUtill.startDownloadFileSync(fileURL, applySignatureFile.getFileName(), signaturePdfFile.getParentFile().getAbsolutePath(), "正在下载报表文件"); } } else { DownloadFileUtill.startDownloadFileSync(fileURL, applySignatureFile.getFileName(), signaturePdfFile.getParentFile().getAbsolutePath(), "正在下载报表文件"); } if (null == documentLoader) { documentLoader = DocumentFactory.getDocumentLoader(signaturePdfFile.getAbsolutePath(), pdfType); documentLoader.openDocument(pdfLoadComposite, false, false, false, false, false); } else { documentLoader.openFile(signaturePdfFile); } signatureCount = documentLoader.getSignatureCount(); pdfLoadComposite.layout(); } else { MessageDialog.openShortMessage(Messages.Tips_LoadFileFail); } } /** * @Description: 手写签字 * @author guoyr */ private void addHandSignatureAction() { if (null != documentLoader) { documentLoader.addSignature(); } } /** * @Description: 复用手写签字 * @author guoyr */ private void copyHandSignatureAction() { documentLoader.copyUseHandSign(); } /** * @Description: 添加签章 * @author guoyr */ private void addSignatureAction() { // if(null == curCacert){ // MessageDialog.openInformation(getShell(), "签章文件/电子钥匙盘不存在,请重新选择签章文件/插入电子钥匙盘后再进行操作!"); // return; // } if (signature_btn.getEnabled()) { signatureCount = documentLoader.getSignatureCount(); if (null != documentLoader) { documentLoader.addSignature(); } } } /** * @Description: 完成签章 * @author guoyr * @param signatur */ private void complateEvaluationAction() { if (complateSignature_btn.getEnabled()) { boolean isSignature = false; if (null != documentLoader) { documentLoader.save(); int afterAddSignatureCount = documentLoader.getSignatureCount(); if (afterAddSignatureCount < signatureCount + 1) { MessageDialog.openInformation(getShell(), modifyName, "您未签章,请点击“" + modifyName + "”进行电子签章!"); return; } complateSignature_btn.setEnabled(false); signature_btn.setEnabled(false); handSignature_btn.setEnabled(false); copyHandSignature_btn.setEnabled(false); SignatureUser signatureUser = (SignatureUser) curSignatureFileButton.getData("signatureUser"); if (null != signaturePdfFile && signaturePdfFile.exists()) { Date nowDate = NowTimeUtils.getNowDate(); String reportType = null != curSignatureFile.getReportType() ? curSignatureFile.getReportType() : FileConstants.REPORT_FILE_FOLDER; if(signatureFileService.uploadReportFile(signaturePdfFile,reportType, tenderProjectEntity.getId())){ signaturePdfFile.setLastModified(nowDate.getTime()); isSignature = signatureFileService.saveSignatureFile(curSignatureFile.getId(), signatureUser, nowDate); } } if (isSignature) { signatureCount = afterAddSignatureCount; MessageDialog.openShortMessage(curSignatureFile.getFileName() + Messages.Tips_signatureSuccess); curSignatureFile.setCurUserId(null); curSignatureFile.setCurUserName(null); refreshSinatureStatus(curSignatureFile, signatureUser, curSignatureFileButton); return; } } if (!isSignature) { MessageDialog.openWarning(getShell(), curSignatureFile.getFileName() + Messages.Tips_signatureFail); complateSignature_btn.setEnabled(true); signature_btn.setEnabled(true); handSignature_btn.setEnabled(true); copyHandSignature_btn.setEnabled(true); } } } @Override public boolean close() { if (null != documentLoader) { documentLoader.save(); } if (null != userSignatureMap) { userSignatureMap.clear(); userSignatureMap = null; } if (null != autoRefreshThread) { autoRefreshThread = null; } if (null != curSignatureFileButton && !curSignatureFileButton.isDisposed()) { SignatureUser signatureUser = (SignatureUser) curSignatureFileButton.getData("signatureUser"); if (null != curSignatureFile && null != curSignatureFile.getCurUserId() && null != signatureUser && curSignatureFile.getCurUserId().equals(signatureUser.getUserId())) { curSignatureFile.setCurUserId(null); curSignatureFile.setCurUserName(null); signatureFileService.updateAssignProperty(curSignatureFile, new String[] { "id", "curUserId", "curUserName" }); } } return super.close(); } /** * @Description: 配置手写板签章 * @author guoyr */ private void configHandSignatureAction() { final ToolsShell moreToolsShell = new ToolsShell(getShell()); final Composite actionGroup = moreToolsShell.addToolBar(Messages.Tips_HandwritingBoardConfiguration, null, false); actionGroup.setLayout(new GridLayout(1, false)); HandSignComfigComposite composite = new HandSignComfigComposite(actionGroup, SWT.NONE); composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); moreToolsShell.setWidth(500); moreToolsShell.pack(); SwtUtils.setCenter(moreToolsShell); moreToolsShell.open(); } /** * Return the initial size of the dialog. */ @Override protected Point getInitialSize() { ScreenUtils util = new ScreenUtils(); int screenHight = util.getScreenHight() - util.getTaskBarHight(); if(PropertiesUtils.getProperty(ConfigConstants.EVAL_FULL_SCREEN, "00").equals(CommonEnum.YES)) { screenHight = util.getScreenHight(); } return new Point(util.getScreenWight(), screenHight); // return new Point(840, 616); } }