All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edi.rule.model.JSRuleImport Maven / Gradle / Ivy

package edi.rule.model;

import java.io.File;
import java.util.*;
import java.util.Map.Entry;
import com.fasterxml.jackson.annotation.JsonIgnore;
import edi.rule.annotation.JSRuleCheck;
import edi.rule.annotation.JSRuleInject;
import edi.rule.config.JSRuleMessage;
import edi.rule.core.JSRuleArgsVessel;
import edi.rule.extend.interfaces.IJSRuleActionModel;
import edi.rule.util.*;
import edi.rule.work.cache.JSRuleFrameCache;
import edi.rule.work.cache.JSRuleFieldInfo;
import edi.rule.work.constant.ZSConstant;
import edi.rule.work.custom.JSRuleException;
import edi.rule.work.processor.JSSAXSheetContent;
import lombok.Data;

/**
 * @author 摩拉克斯
 * @date 2022年6月30日 下午2:37:51
 * 

导入对象 */ @Data public class JSRuleImport> implements IJSRuleActionModel{ /** *

导入csv对象 * */ @JSRuleCheck public JSRuleImportCsv csv; /** *

导入excel对象 * */ @JSRuleCheck public JSRuleImportExcel excel; @JSRuleInject @JsonIgnore private JSRuleArgsVessel vessel; @Override public final Object start(A action) { JSRuleImportCsv csv = getCsv(); JSRuleImportExcel excel = getExcel(); File file = null; JSRuleUpload uploads = null; try { if (csv != null){ uploads = csv.getUploads(); file = initFile(uploads,action,ZSConstant.CSV_SUFFIX); csv.setFile(file); A csvAction = csv.getAction(); checkImportsAction(csvAction,""); csvAction.getAdd().setData(ZSIo.ZSCsv.parseCsvFile(csv.getFile())); return startAction(csvAction,vessel); }else if (excel != null) { uploads = excel.getUploads(); file = initFile(excel.getUploads(),action,ZSConstant.EXCEL_2007U_SUFFIX); excel.setFile(file); List actions = ZSRule.actionsInstance(); A sheetAction; int i=0; for (JSRuleImportSheet sheet:excel.getSheets()) { sheetAction = sheet.getAction(); checkImportsAction(sheetAction,"sheet"+(i+1)); actions.add(ZSRule.buildPlugin(sheetAction.getName(), sheetAction.getAdd(),sheetAction.getDefine())); if (ZSVessel.isEmpty(sheet.getFieldMappings())) { Map imports = new HashMap<>(); for (Entry fieldInfoEntry:JSRuleFrameCache.getMappingInfo(sheetAction.getAdd().getClassName(),sheetAction.getName()).classFieldsInfo.entrySet()) { imports.putAll(fieldInfoEntry.getValue().imports); } sheet.setFieldMappings(imports); } i++; } i=0; for (JSSAXSheetContent content:ZSPoi.getExcelContent(excel)) { actions.get(i).getAdd().setData(content.getResult()); i++; } return startActions(preStartActions(actions), vessel).getResult(); } throw new JSRuleException(JSRuleMessage.read("unknown.imports.type")); }finally { if (isTempFile(uploads)) { file.delete(); } } } private void checkImportsAction(A action, String additional){ if(action==null){ throw new JSRuleException(JSRuleMessage.read("missing.action.model"),additional); } if (action.getAdd()==null){ throw new JSRuleException(action.cache.name,JSRuleMessage.read("missing.add.model"),additional); } if (ZSString.isBlank(action.getAdd().getClassName())){ throw new JSRuleException(action.cache.name,JSRuleMessage.read("missing.property.classes"),additional); } } private File initFile(JSRuleUpload uploads,A action,String suffix){ File file; if (isTempFile(uploads)){ if (ZSString.isBlank(uploads.getBase64Data())) { throw new JSRuleException(action.cache.name, JSRuleMessage.read("the.property.of.base64Data.or.path.can't.be.all.empty")); } file = uploads.createTempFile(ZSString.getUUid(), suffix); ZSIo.bytesToFile(Base64.getMimeDecoder().decode(uploads.getBase64Data()),file); }else { file = new File(uploads.getPath()); } return file; } private boolean isTempFile(JSRuleUpload uploads){ return uploads!=null&&ZSString.isBlank(uploads.getPath(false)); } /** *

导入前将准备调用引擎处理的actions扩展给其子类,重写此方法可自定义处理actions,该actions用于调用add组件处理待插入的数据 * @param actions 待处理的actions对象 * @return 返回处理后的actions集合 * */ protected List preStartActions(List actions) { return actions; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy