package weaver.aiyh_pcn.copy_attachment; import aiyh.utils.Util; import aiyh.utils.mapUtil.ParaMap; import aiyh.utils.sqlUtil.sqlResult.impl.PrepSqlResultImpl; import aiyh.utils.zwl.common.ToolUtil; import com.api.aiyh_pcn.copy_attachment.dao.ConfigTableData; import com.api.aiyh_pcn.copy_attachment.model.ConfigEmpty; import weaver.conn.RecordSet; import weaver.interfaces.workflow.action.Action; import weaver.soa.workflow.request.RequestInfo; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * @author EBU7-dev1-ayh * @create 2021/10/9 0009 13:42 * 模板覆盖文件 */ public class CopyAttachmentAction extends ToolUtil implements Action { //当前类名称 private final String className = "AddCustomer_Action"; private String overrideField; @Override public String execute(RequestInfo requestInfo) { this.writeDebuggerLog(className + "======>" + overrideField); try { String workflowid = requestInfo.getWorkflowid(); //流程请求ID String requestid = Util.null2String(requestInfo.getRequestid()); //流程表单名称 String tableName = requestInfo.getRequestManager().getBillTableName(); ConfigEmpty config = ConfigTableData.getConfig(workflowid); // 查询是流程数据 String query = "select * from " + tableName + " where requestid = ?"; RecordSet rs = new RecordSet(); rs.executeQuery(query,requestid); Map requestMap = Util.recordSet2Map(rs); if(requestMap == null || config == null){ return Action.SUCCESS; } if(!requestMap.get(config.getShowField()).equals(config.getShowValue())){ return Action.SUCCESS; } // 需要模板覆盖 String attachmentValue = String.valueOf(requestMap.get(config.getAttachmentField())); String overrideValue = String.valueOf(requestMap.get(overrideField)); this.writeDebuggerLog(requestMap.toString()); // 查询这些文件的相关信息 query = "select docid,imagefilename from docimagefile where docid in (" + attachmentValue + ")"; this.writeDebuggerLog(query); rs.executeQuery(query); List attachmentList = Util.recordeSet2Array(rs, AttachmentIdName.class); query = "select docid,imagefilename from docimagefile where docid in (" + overrideValue + ")"; rs.executeQuery(query); this.writeDebuggerLog(query); List overrideList = Util.recordeSet2Array(rs, AttachmentIdName.class); this.writeDebuggerLog(attachmentList.toString()); this.writeDebuggerLog(overrideList.toString()); if (attachmentList.size() != overrideList.size()){ requestInfo.getRequestManager().setMessagecontent("合同模板与上传模板数量不一致"); requestInfo.getRequestManager().setMessageid("合同模板与上传模板数量不一致"); return Action.FAILURE_AND_CONTINUE; } // 需要移除的文件 List removeFile = new ArrayList<>(); // 移除所有的pdf文件 for (AttachmentIdName overrideIdName : overrideList) { String fileName = overrideIdName.getImagefilename(); String extension = ""; this.writeDebuggerLog(overrideIdName.toString()); int index = fileName.lastIndexOf('.'); if (index > 0) { extension = fileName.substring(index + 1); } this.writeDebuggerLog(extension); if("pdf".equalsIgnoreCase(extension)){ removeFile.add(overrideIdName); } } // 删除文件 for (AttachmentIdName overrideIdName : removeFile) { overrideList.remove(overrideIdName); } // 添加pdf文件 for (AttachmentIdName attachmentIdName : attachmentList) { String fileName = attachmentIdName.getImagefilename(); String extension = ""; this.writeDebuggerLog(attachmentIdName.toString()); int index = fileName.lastIndexOf('.'); if (index > 0) { extension = fileName.substring(index + 1); } this.writeDebuggerLog(extension); if("pdf".equalsIgnoreCase(extension)){ overrideList.add(attachmentIdName); } } if (attachmentList.size() != overrideList.size()){ requestInfo.getRequestManager().setMessagecontent("合同模板与上传模板数量不一致"); requestInfo.getRequestManager().setMessageid("合同模板与上传模板数量不一致"); return Action.FAILURE_AND_CONTINUE; } StringBuilder overrideBuilder = new StringBuilder(); for (AttachmentIdName overrideIdName : overrideList) { overrideBuilder.append(",").append(overrideIdName.getDocid()); } String overrideResult = Util.removeSeparator(overrideBuilder); this.writeDebuggerLog(overrideResult); PrepSqlResultImpl sqlResult = Util.createSqlBuilder().updateSql(tableName, ParaMap.create().put(this.overrideField, overrideResult), Util.createPrepWhereImpl().whereAnd("requestid").whereEqual(requestid)); rs.executeUpdate(sqlResult.getSqlStr(),sqlResult.getArgs()); }catch (Exception e){ this.writeErrorLog(e.getMessage()); } return Action.SUCCESS; } public String getOverrideField() { return overrideField; } public void setOverrideField(String overrideField) { this.overrideField = overrideField; } }