2018-06-03 22:26:41 +08:00

158 lines
4.6 KiB
Java

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(DOCUMENT_CATALOG.CLASS_NAME, "DirNo=:DirNo",ImageConstant.DEFAULT_DIR);
if(StringX.isEmpty(productID) || StringX.isEmpty(orgID)){
ARE.getLog().error("没有初始化产品或机构信息!");
} else {
//获取匹配的影像案卷
List<BizObject> bizlist = JBOHelper.queryList(DOCUMENT_CATALOG.CLASS_NAME,
"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(DOCUMENT_RECORD.CLASS_NAME);
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(DOCUMENT_DATA.CLASS_NAME);
tx.join(bm);
BizObject dataBo;
List<BizObject> doclib = JBOHelper.queryList(DOCUMENT_LIBRARY.CLASS_NAME, "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;
}
}