package com.kingdee.eas.custom.esign.handler; import com.kingdee.bos.Context; import com.kingdee.eas.custom.esign.ESignTemplateFileEntryFactory; import com.kingdee.eas.custom.esign.ESignTemplateFileEntryInfo; import com.kingdee.eas.custom.esign.IESignTemplateFileEntry; import com.kingdee.eas.custom.esign.bizEnum.SyncStatusEnum; import com.kingdee.eas.framework.CoreBaseInfo; import com.kingdee.shr.base.syssetting.BaseItemStateEnum; import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsBody; import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsHeader; import com.kingdee.shr.base.syssetting.exception.SHRWebException; import com.kingdee.shr.base.syssetting.exception.ShrWebBizException; import com.kingdee.shr.base.syssetting.web.handler.EditHandler; import com.kingdee.util.StringUtils; import org.springframework.ui.ModelMap; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @Description 电子签模板表单Handler * @Date 2025/11/17 16:43 * @Created by 禾源 */ public class ESignTemplateEditHandler extends EditHandler { /** * 创建新的分录模型对象 * * @param request HTTP请求对象 * @param response HTTP响应对象 * @param modelMap 模型映射对象 * @return CoreBaseInfo 返回创建的条目信息对象 * @throws SHRWebException 当创建过程中发生错误时抛出异常 */ protected CoreBaseInfo createNewEntryModel( HttpServletRequest request, HttpServletResponse response, ModelMap modelMap ) throws SHRWebException { ESignTemplateFileEntryInfo entryInfo = (ESignTemplateFileEntryInfo) super.createNewEntryModel(request, response, modelMap); if (entryInfo == null) { entryInfo = new ESignTemplateFileEntryInfo(); } //设置默认状态为启用 entryInfo.setState(BaseItemStateEnum.ENABLE); entryInfo.setSyncStatus(SyncStatusEnum.UNSYNCED); return entryInfo; } /** * 创建新的入口模型通过服务器 * * @return boolean 返回true表示成功创建新的入口模型,false表示创建失败 */ @Override protected boolean createNewEntryModelByServer() { return true; } /** * 同步模板字段 * * @param request * @param response * @param modelMap * @throws SHRWebException */ public void syncTemplateFieldsAction( HttpServletRequest request, HttpServletResponse response, ModelMap modelMap ) throws SHRWebException { Context ctx = this.getContext(); String entryIds = request.getParameter("entryIds"); if (StringUtils.isEmpty(entryIds)) { throw new ShrWebBizException("分录id不能为空!"); } int sucess = 0; int failure = 0; BatchMessageTipsHeader batchMessageTipsHeader = new BatchMessageTipsHeader(); try { String[] entryIdArr = entryIds.split(","); IESignTemplateFileEntry iESignTemplateFileEntry = ESignTemplateFileEntryFactory.getLocalInstance(ctx); for (int i = 0; i < entryIdArr.length; i++) { BatchMessageTipsBody body = new BatchMessageTipsBody(); String entryId = entryIdArr[i]; body.setId(entryId); try { iESignTemplateFileEntry.syncTemplateFields(entryId); iESignTemplateFileEntry.syncSuccess(entryId, null); ++sucess; } catch (Exception e) { e.printStackTrace(); ++failure; iESignTemplateFileEntry.syncFail(entryId, e.getMessage()); body.setMuitTipsState(Boolean.FALSE); body.setMuitTipsMessage(e.getMessage()); } batchMessageTipsHeader.addResult(body); } batchMessageTipsHeader.setBillId(entryIds); batchMessageTipsHeader.setFailureCount(failure); batchMessageTipsHeader.setSuccessCount(sucess); this.writeSuccessData(batchMessageTipsHeader); } catch (Exception e) { e.printStackTrace(); throw new ShrWebBizException(e.getMessage(), e); } } }