package com.amarsoft.app.als.image; import java.util.List; //import jbo.image.DOCUMENT_CATALOG; //import jbo.image.DOCUMENT_DATA; //import jbo.image.DOCUMENT_LIBRARY; //import jbo.image.DOCUMENT_RECORD; import com.amarsoft.app.als.credit.model.CreditObjectAction; import com.amarsoft.app.als.image.tool.ImageConstant; import com.amarsoft.app.als.sys.tools.JBOHelper; import com.amarsoft.are.ARE; import com.amarsoft.are.jbo.BizObject; import com.amarsoft.are.jbo.BizObjectManager; import com.amarsoft.are.jbo.JBOFactory; import com.amarsoft.are.jbo.JBOTransaction; import com.amarsoft.are.lang.StringX; import com.amarsoft.awe.util.DBKeyHelp; /** * 影像扫描时,需要先初始化影像信息,如果存在则不再初始化。 * @author ghShi * @since 2014/04/18 * */ public class InitImageInfo { private String objectNo; //业务对象编号 private String objectType; //业务类型 private String barCode; //条形码 private JBOTransaction tx; public String initApplyImage(JBOTransaction tx) throws Exception{ this.tx = tx; //如果已存在影像信息,则不再进行初始化 if (ImageSevice.isExistDocRecord(objectNo, objectType)) return "true"; //如果匹配到案卷,则进行初始化 if (getRecordBiz() != null){ initDocumentRecord(getRecordBiz()); return "true"; } return "false"; } /** * 是否存在影像 * @param tx * @return * @throws Exception */ public String isExistDocRecord(JBOTransaction tx) throws Exception{ if (ImageSevice.isExistDocRecord(objectNo, objectType)) return "true"; return "false"; } /** * 匹配影像案卷信息,现已业务品种和经办机构作为过滤条件 * @return */ private BizObject getRecordBiz(){ CreditObjectAction cobj = new CreditObjectAction(objectNo, objectType); BizObject biz = cobj.creditObject; this.barCode = JBOHelper.getAttribute(biz, "BarCode").toString(); String productID = JBOHelper.getAttribute(biz, "BusinessType").toString(); String orgID = JBOHelper.getAttribute(biz, "OperateOrgID").toString(); if(StringX.isEmpty(orgID)) orgID = JBOHelper.getAttribute(biz, "InputOrgID").toString(); /** * 如果找不到符合的影像案卷,则默认使用通用案卷。 */ BizObject defaultDir = JBOHelper.querySingle("jbo.image.DOCUMENT_CATALOG", "DirNo=:DirNo",ImageConstant.DEFAULT_DIR); if(StringX.isEmpty(productID) || StringX.isEmpty(orgID)){ ARE.getLog().error("没有初始化产品或机构信息!"); } else { //获取匹配的影像案卷 List bizlist = JBOHelper.queryList("jbo.image.DOCUMENT_CATALOG", "IsInUse='1' and SuitProduct like '%," + productID + ",%' " + "and SuitOrg like '%," + orgID + ",%'"); //有且仅有一个可匹配的影像案卷 if (bizlist.size() == 1){ defaultDir = bizlist.get(0); } else if(bizlist.size() == 0){ ARE.getLog().error("不存在符合当前场景的影像案卷!"); } else { ARE.getLog().error("存在多个符合当前场景的影像案卷!"); } } return defaultDir; } /** * 初始化影像案卷信息 * @param dirBo * @throws Exception */ private void initDocumentRecord(BizObject dirBo) throws Exception{ BizObjectManager bm = JBOFactory.getBizObjectManager("jbo.image.DOCUMENT_RECORD"); tx.join(bm); BizObject recordBo = bm.newObject(); String recordNo = DBKeyHelp.getSerialNo(ImageConstant.DOCUMENT_RECORD, "SerialNo", ""); recordBo.setAttributesValue(dirBo); recordBo.setAttributeValue("SerialNo", recordNo); recordBo.setAttributeValue("ObjectNo", objectNo); recordBo.setAttributeValue("ObjectType", objectType); recordBo.setAttributeValue("BarCode", barCode); bm.saveObject(recordBo); initDocumentData(recordNo, JBOHelper.getAttribute(dirBo, "DirNo").toString()); } /** * 初始化影像文件信息 * @param recordNo * @param dirNo * @throws Exception */ private void initDocumentData(String recordNo, String dirNo) throws Exception{ BizObjectManager bm = JBOFactory.getBizObjectManager("jbo.image.DOCUMENT_DATA"); tx.join(bm); BizObject dataBo; List doclib = JBOHelper.queryList("jbo.image.DOCUMENT_LIBRARY", "DirNo=:DirNo and DocType=:DocType and IsInUse='1'", dirNo, objectType); for(BizObject bo : doclib){ String dataSerialNo = DBKeyHelp.getSerialNo(ImageConstant.DOCUMENT_DATA, "SerialNo", ""); dataBo = bm.newObject(); dataBo.setAttributesValue(bo); dataBo.setAttributeValue("SerialNo", dataSerialNo); dataBo.setAttributeValue("ImageID", dataSerialNo); dataBo.setAttributeValue("RecordNo", recordNo); bm.saveObject(dataBo); } } public String getObjectNo() { return objectNo; } public void setObjectNo(String objectNo) { this.objectNo = objectNo; } public String getObjectType() { return objectType; } public void setObjectType(String objectType) { this.objectType = objectType; } }