Pārlūkot izejas kodu

uat代码提交

戴淼 3 gadi atpakaļ
vecāks
revīzija
7708006872

+ 148 - 0
fip/src/private/nc/impl/fip/relation/CredentialsWrite.java

@@ -0,0 +1,148 @@
+package nc.impl.fip.relation;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
+
+import com.alibaba.fastjson.JSONObject;
+
+import nc.bs.arap.pay.bzfk.ImageCommonConstant;
+import nc.bs.arap.pay.bzfk.api.ImageCaptureAPI;
+import nc.bs.arap.pay.bzfk.tools.ImageCommonUtil;
+import nc.bs.dao.BaseDAO;
+import nc.bs.dao.DAOException;
+import nc.jdbc.framework.processor.BeanListProcessor;
+import nc.vo.arap.pay.bzfk.ImageTMLogVO;
+import nc.vo.arap.pay.bzfk.InvoiceVo;
+import nc.vo.arap.pay.bzfk.InvoicestatusVO;
+import nc.vo.fip.relation.FipRelationVO;
+import nc.vo.pub.BusinessException;
+import nc.vo.pubapp.pattern.exception.ExceptionUtils;
+
+/**
+ * 凭证回写影像状态
+ * @date 2021-09-01
+ * @author xuy
+ * */
+public class CredentialsWrite {
+	private String[] src_billtypes= {"F1-Cxx-W02","F1-Cxx-W03","F1-Cxx-W04","F1-Cxx-W05"};
+	public void write(List<InvoiceVo> vos) throws BusinessException {
+		if(vos==null||vos.size()<=0) {
+			return;
+		}
+		for(InvoiceVo vo : vos) {
+			if(vo.getPk_voucher()!=null) {
+			// 更新记账状态
+			List<InvoicestatusVO> invoiceStatusVOs = new ArrayList<InvoicestatusVO>();
+			InvoicestatusVO invoiceStatusVO = new InvoicestatusVO();
+			invoiceStatusVO.setInvoiceNo(vo.getFphm());
+			invoiceStatusVO.setInvoiceCode(vo.getFpdm());
+			invoiceStatusVO.setSalesbillNo(vo.getDjbh());
+			invoiceStatusVO.setBusinessNo(vo.getNum());
+			invoiceStatusVO.setBusinessType("4");
+			invoiceStatusVO.setBusinessStatus("0");
+			invoiceStatusVO.setBusinessDate(ImageCommonUtil.getStringDate(vo.getPrepareddate()));
+			invoiceStatusVO.setSystemOrig("2");
+			invoiceStatusVO.setBusinessRemark(vo.getPk_erminvoice());
+			//xuyong  增加发票传输字段   20210705
+			invoiceStatusVO.setTicketCode(vo.getDefitem10());
+			invoiceStatusVO.setInvoiceId(vo.getDefitem11());
+			invoiceStatusVO.setInvoiceType(vo.getDefitem3());
+			//xuyong  增加发票传输字段   20210705
+			invoiceStatusVOs.add(invoiceStatusVO);
+			updateInvoiceStatus(invoiceStatusVOs);
+			}
+		}
+	}
+	
+	
+	
+	public List<InvoiceVo> getInvoiceVos(FipRelationVO[] vos) throws DAOException{
+		List<InvoiceVo> revos=new ArrayList<InvoiceVo>();
+		List<String> ignoreList = Arrays.asList(src_billtypes);;
+		for(FipRelationVO vo:vos) {
+				if(!ignoreList.contains(vo.getSrc_billtype())) {
+					continue;
+				}
+				String src_relationid=vo.getSrc_relationid();//关联关系  来源单据关联号 
+				StringBuffer sqlbuff=new StringBuffer("");
+				sqlbuff.append(" select  ap.pk_payablebill as PK_JKBX, ");
+				sqlbuff.append(" case when ap.pk_tradetype='F1-Cxx-W02' then ap.def1 "
+						+ "  else ap.billno end as DJBH,");
+				sqlbuff.append(" u.user_code as USERCODE, ");	
+				sqlbuff.append(" ap.local_money as ORGLOCAL, ");
+				sqlbuff.append(" (case when ap.def3='Y' or ap.def29='Y' then 5 else 0 end) as SETTLESTATUS , ");
+				sqlbuff.append(" vo.pk_voucher as PK_VOUCHER, ");
+				sqlbuff.append("  to_char(vo.num) as NUM, ");
+				sqlbuff.append("  vo.explanation as EXPLANATION, ");
+				sqlbuff.append("   vo.ts as TS, ");
+				sqlbuff.append("  inv.fpdm as FPDM, ");
+				sqlbuff.append("  inv.fphm as FPHM, ");
+				sqlbuff.append("  inv.pk_erminvoice as PK_ERMINVOICE , ");
+				sqlbuff.append("  inv.defitem5 as DEFITEM5, ");
+				sqlbuff.append("  inv.defitem6 as DEFITEM6, ");
+				sqlbuff.append("  inv.defitem3 as DEFITEM3, ");
+				sqlbuff.append("  inv.defitem10 as DEFITEM10, ");
+				sqlbuff.append("  inv.defitem11 as DEFITEM11  ");
+				sqlbuff.append("  from gl_voucher vo ");
+				sqlbuff.append("  inner join fip_relation re  on re.des_relationid = vo.pk_voucher ");
+				sqlbuff.append("  inner join ap_payablebill ap on ap.pk_payablebill=substr(re.SRC_RELATIONID,0,20) ");
+				sqlbuff.append("  inner join sm_user u on ap.billmaker = u.cuserid ");
+				sqlbuff.append("  inner join er_erminvoice inv on ap.pk_payablebill = inv.pk_bxdhead ");
+				sqlbuff.append("  where re.DES_BILLTYPE = 'C0' and inv.defitem3<>'fj' ");
+				sqlbuff.append("  and re.src_relationid='"+src_relationid+"' ");
+				
+				List<InvoiceVo> listvos = (List<InvoiceVo>) getBaseDao().executeQuery(sqlbuff.toString(), new BeanListProcessor(InvoiceVo.class));
+				if(listvos!=null)
+				revos.addAll(listvos);
+			}
+		return revos;
+	}
+	
+	private void updateInvoiceStatus(List<InvoicestatusVO> invoiceStatusVOs) {
+		if(null != invoiceStatusVOs && 0 < invoiceStatusVOs.size()) {
+			for(InvoicestatusVO vo:invoiceStatusVOs) {
+				String pk_erminvoice = vo.getBusinessRemark();
+				vo.setBusinessRemark(null);
+				JSONObject json = (JSONObject) JSONObject.toJSON(vo);
+				try {
+					JSONObject result = ImageCaptureAPI.postRequest(json, ImageCommonConstant.IMAGE_INVOICE_UPDATE);
+					insertImageLog_RequiresNew(vo.getInvoiceNo(),null,json,result,ImageCommonConstant.IMAGE_INVOICE_UPDATE);
+					String code = result.getString("code");
+					if(!"200".equals(code)) {
+						ExceptionUtils.wrappBusinessException("调用" + ImageCaptureAPI.map.get(ImageCommonConstant.IMAGE_INVOICE_UPDATE) 
+						+ "接口失败:" + result.get("message").toString());
+					}
+				}catch (Exception e) {
+					ExceptionUtils.wrappException(e);
+					}
+			}
+		}
+		
+	}
+	public void insertImageLog_RequiresNew(String billid, String billcode, JSONObject send, JSONObject result, String urlcode) throws BusinessException {
+		String code = result.getString("code");
+		ImageTMLogVO log = new ImageTMLogVO();
+		log.setBillid(billid);
+		log.setBillno(billcode);
+		log.setTm_content(JSONObject.toJSONString(send));
+		log.setTm_result(JSONObject.toJSONString(result));
+		log.setApicode(urlcode);
+		if(!StringUtils.isBlank(code) && "200".equals(code)) {
+			log.setTm_status("S");
+		} else {
+			log.setTm_status("F");
+		}
+		// 插入日志表
+		getBaseDao().insertVO(log);
+	}
+	
+	private BaseDAO baseDao = null;
+	private BaseDAO getBaseDao() {
+		if (baseDao == null)
+			baseDao = new BaseDAO();
+		return baseDao;
+	}
+}

+ 423 - 0
fip/src/private/nc/impl/fip/relation/FipRelationBO.java

@@ -0,0 +1,423 @@
+/**
+ *
+ */
+package nc.impl.fip.relation;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import nc.bs.dao.BaseDAO;
+import nc.bs.framework.common.InvocationInfoProxy;
+import nc.bs.framework.common.NCLocator;
+import nc.bs.logging.Logger;
+import nc.bs.uap.lock.PKLock;
+import nc.impl.fip.messagelogs.FipMessageLogsProxy;
+import nc.impl.fip.pub.tools.FipBSTemplateCleaner;
+import nc.itf.fip.cache.memcache.FipConfigCache;
+import nc.itf.fip.cache.memcache.TemplateCache;
+import nc.itf.fip.pub.FipInterfaceCenter;
+import nc.itf.gl.voucher.IVoucher;
+import nc.itf.uap.busibean.SysinitAccessor;
+import nc.pub.fip.pubtools.SagasUtil;
+import nc.pubitf.fip.external.IDesBillService;
+import nc.pubitf.fip.service.IFipInterfaceCenterService;
+import nc.pubitf.ra.respvoucher.IFipDeleteCheck;
+import nc.vo.arap.pay.bzfk.InvoiceVo;
+import nc.vo.fip.config.ConfigVO;
+import nc.vo.fip.messagelogs.MessageLogVO;
+import nc.vo.fip.messagelogs.MessageTool;
+import nc.vo.fip.operatinglogs.OperatingFlagEmu;
+import nc.vo.fip.operatinglogs.OperatingLogVO;
+import nc.vo.fip.operatinglogs.OperatinglogSceneEnum;
+import nc.vo.fip.pub.FipBillState;
+import nc.vo.fip.pub.SqlTools;
+import nc.vo.fip.relation.FipRelationVO;
+import nc.vo.fip.service.FipBasicRelationVO;
+import nc.vo.fip.service.FipRelationInfoVO;
+import nc.vo.fip.transtemplate.DesBillModeEmu;
+import nc.vo.fip.transtemplate.TransTemplateVO;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.lang.UFBoolean;
+
+import org.apache.commons.lang3.StringUtils;
+
+import com.yonyou.cloud.ncc.NCCEnv;
+import com.yonyou.cloud.ncc.NCCSagas;
+
+/**
+ * <p>
+ * TODO 接口/类功能说明,使用说明(接口是否为服务组件,服务使用者,类是否线程安全等)。
+ * </p>
+ * 
+ * 修改记录:<br>
+ * <li>修改人:修改日期:修改内容:</li> <br>
+ * <br>
+ * 
+ * @see
+ * @author gbh
+ * @version V6.0
+ * @since V6.0 创建时间:2010-7-9 下午03:48:17
+ */
+public class FipRelationBO {
+	/*
+	 * queryByWhere方法在FipOperatingLogProxy中的实现
+	 * 
+	 * @see nc.itf.fip.opreatinglog.IOperatingLog#queryByWhere(java.lang.String)
+	 */
+	@SuppressWarnings("unchecked")
+	public FipRelationVO[] queryByWhere(String wherepart) throws BusinessException {
+		if (wherepart == null)
+			return null;
+		FipRelationVO[] rs = null;
+		BaseDAO baseDAO = new BaseDAO();
+		// wherepart = SQL_Translator.getSQL(baseDAO.getDBType(), wherepart);
+		Collection c = baseDAO.retrieveByClause(FipRelationVO.class, wherepart);
+		if (c != null && c.size() > 0) {
+			rs = new FipRelationVO[c.size()];
+			c.toArray(rs);
+		}
+		return rs;
+	}
+
+	/*
+	 * insert方法在FipOperatingLogProxy中的实现
+	 * 
+	 * @see nc.itf.fip.opreatinglog.IOperatingLog#insert(nc.vo.fip.operatinglogs.OperatingLogVO[])
+	 */
+	public List<FipRelationVO> insert(List<FipRelationVO> vos) throws BusinessException {
+		if (vos != null) {
+			PKLock instance = PKLock.getInstance();
+			for (FipRelationVO fipRelationVO : vos) {
+				boolean addDynamicLock = instance.addDynamicLock(fipRelationVO.getSrc_billtype() + fipRelationVO.getSrc_relationid() + fipRelationVO.getDes_billtype() + fipRelationVO.getDes_org());
+				if (!addDynamicLock) {
+					throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("1017prv_0", "01017prv-2-0003"));
+				}
+			}
+			String[] pks = new BaseDAO().insertVOList(vos);
+			for (int i = 0; i < vos.size(); i++) {
+				vos.get(i).setPk_relation(pks[i]);
+			}
+		}
+		return vos;
+	}
+
+	/**
+	 * 方法说明:
+	 * <p>
+	 * 修改记录:
+	 * </p>
+	 * 
+	 * @param vos
+	 * @throws BusinessException
+	 * @see
+	 * @since V6.0
+	 */
+	public void deleteReal(FipRelationVO[] vos) throws BusinessException {
+		if (vos != null && vos.length > 0) {
+			// 需要清理缓存,否则该操作可能会影响下一次发送会计平台的数据,如果在该期间模板有过修改
+			FipBSTemplateCleaner.clear();
+			ArrayList<String> pklist = new ArrayList<String>();
+			for (int i = 0; i < vos.length; i++) {
+				pklist.add(vos[i].getPk_relation());
+			}
+			//modify by liubao 2019-07-19 删除凭证效率优化 BEGIN
+			UFBoolean[] bCreatedTempTable = new UFBoolean[1];
+            String strSql = SqlTools.getInStr("pk_relation", pklist, true, bCreatedTempTable);
+            if (bCreatedTempTable[0].booleanValue() == false) {
+                strSql = " des_relationid in (select des_relationid from " + FipRelationVO.getDefaultTableName() + " where " + strSql + " ) ";
+            } else {
+                strSql = " des_relationid in (select des_relationid from " + FipRelationVO.getDefaultTableName() + "," + strSql + " where " + FipRelationVO.getDefaultTableName() + ".pk_relation=" + strSql + ".pk )";
+            }
+            FipRelationVO[] relations = queryByWhere(strSql);
+            //FipRelationVO[] relations = queryByWhere(" " + FipRelationVO.DES_RELATIONID + " in (select " + FipRelationVO.DES_RELATIONID + " from " + FipRelationVO.getDefaultTableName() + " where " + SqlTools.getInStr(FipRelationVO.PK_RELATION, pklist, true) + ") ");
+            //modify by liubao 2019-07-19 删除凭证效率优化 END
+            loggerMessage(relations, "del relation by message");
+			String pk_group = null;
+			HashMap<String, List<FipRelationInfoVO>> dellistmap = new HashMap<String, List<FipRelationInfoVO>>();
+			if (relations != null) {
+				HashMap<String, String> sameleach = new HashMap<String, String>();
+				for (int i = 0; i < relations.length; i++) {
+					FipRelationVO fipRelationVO = relations[i];
+					if (sameleach.get(fipRelationVO.getDes_relationid()) != null)
+						continue;
+					if (pk_group == null)
+						pk_group = fipRelationVO.getDes_group();
+					List<FipRelationInfoVO> list = dellistmap.get(fipRelationVO.getDes_billtype());
+					if (list == null) {
+						list = new ArrayList<FipRelationInfoVO>();
+						dellistmap.put(fipRelationVO.getDes_billtype(), list);
+					}
+					list.add(FipBasicRelationVO.convertFromRelationVO(fipRelationVO).getDesRelation());
+					sameleach.put(fipRelationVO.getDes_relationid(), fipRelationVO.getDes_relationid());
+				}
+			} else {
+				return;
+			}
+			String paraString = SysinitAccessor.getInstance().getParaString(pk_group, "FIP002");
+			boolean isautodel = paraString == null ? true : UFBoolean.valueOf(paraString).booleanValue();// 自动生成的正式单据反生效自动删除
+			if (isautodel) {
+				for (FipRelationVO fipRelationVO : relations) {
+					TransTemplateVO cacheData = TemplateCache.getCacheData(pk_group, fipRelationVO.getDes_org(), fipRelationVO.getSrc_billtype(), fipRelationVO.getDes_billtype(), fipRelationVO.getSrc_defdoc1(), fipRelationVO.getSrc_defdoc2(), fipRelationVO.getSrc_defdoc3());
+					if (cacheData != null) {
+						if (cacheData.getDesbillmode() != DesBillModeEmu.MODE_confirmed_bill)
+							throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("1017prv_0", "01017prv-0037")/* @res "目标单据已经生效为正式单据,请先到会计平台删除目标单据。" */);
+					}
+				}
+			} else {
+				throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("1017prv_0", "01017prv-0037")/* @res "目标单据已经生效为正式单据,请先到会计平台删除目标单据。" */);
+			}
+			BaseDAO baseDAO = new BaseDAO();
+			baseDAO.deleteVOArray(relations);
+			for (Iterator iterator = dellistmap.keySet().iterator(); iterator.hasNext();) {
+				String billtype = (String) iterator.next();
+				IDesBillService itf = FipInterfaceCenter.getDesBillService(pk_group, billtype);
+				if (itf == null)
+					throw new BusinessException(FipInterfaceCenter.getNoInterfaceFoundMessage(billtype, "IDesBillService"));
+				itf.deleteBill(dellistmap.get(billtype));
+			}
+		}
+	}
+
+	/**
+	 * 方法说明:
+	 * <p>
+	 * 修改记录:
+	 * </p>
+	 * 
+	 * @param vos
+	 * @throws BusinessException
+	 * @see
+	 * @since V6.0
+	 */
+	public void delete(FipRelationVO[] vos) throws BusinessException {
+		if (vos != null && vos.length > 0) {
+			//全局批次号,前端一次后台生成操作的所有数据都用这个批次号
+			String global_batchno = null;
+			if (!NCCEnv.isMerged()) {
+				String batchno = vos[0].getBatchno();
+				if (StringUtils.isNotBlank(batchno)) {
+					String[] noArr = batchno.split("-");
+					if (noArr != null && noArr.length > 0) {
+						if (noArr.length > 1) {
+							global_batchno = noArr[0];
+							vos[0].setBatchno(noArr[1]);
+						} else {
+							global_batchno = noArr[0];
+							vos[0].setBatchno(null);
+						}
+					}
+				}
+			}
+			//凭证删除传递影像  xuy  2021-09-01 start
+			CredentialsWrite creden=new CredentialsWrite();
+			List<InvoiceVo> Invoicevos=creden.getInvoiceVos(vos);
+			//凭证删除传递影像  xuy  2021-09-01 end
+			//正式凭证消息主键
+			ArrayList<String> pklist = new ArrayList<String>();
+			for (int i = 0; i < vos.length; i++) {
+				pklist.add(vos[i].getPk_relation());
+			}
+			//modify by liubao 2019-07-19 删除凭证效率优化 BEGIN
+            UFBoolean[] bCreatedTempTable = new UFBoolean[1];
+            String strSql = SqlTools.getInStr("pk_relation", pklist, true, bCreatedTempTable);
+            if (bCreatedTempTable[0].booleanValue() == false){
+          	  	strSql=" des_relationid in (select des_relationid from " + FipRelationVO.getDefaultTableName() + " where " + strSql + " ) ";
+            }else{
+          	  	strSql=" des_relationid in (select des_relationid from " + FipRelationVO.getDefaultTableName() + "," + strSql + " where " + FipRelationVO.getDefaultTableName() + ".pk_relation = " + strSql + ".pk )";
+            }
+            FipRelationVO[] relations = queryByWhere(strSql);
+			//FipRelationVO[] relations = queryByWhere(" " + FipRelationVO.DES_RELATIONID + " in (select " + FipRelationVO.DES_RELATIONID + " from " + FipRelationVO.getDefaultTableName() + " where " + SqlTools.getInStr(FipRelationVO.PK_RELATION, pklist, true) + ") ");
+            //modify by liubao 2019-07-19 删除凭证效率优化 END
+            
+			String pk_group = null;
+			HashMap<String, List<FipRelationInfoVO>> dellistmap = new HashMap<String, List<FipRelationInfoVO>>();
+			HashMap<String, List<FipRelationVO>> relationMap = new HashMap<String, List<FipRelationVO>>();
+			HashMap<String, List<String>> pkMap = new HashMap<String, List<String>>();//目标单据PK
+			//删除错误中心消息批次号集合
+			Set<String> batchnos = new HashSet<String>();
+			if (relations != null && relations.length > 0) {
+				//这里校验是否是微服务部署,与整体部署逻辑区分开
+				boolean isMerged = NCCEnv.isMerged();
+				if(!isMerged){
+					//对要删除的数据加锁
+					SagasUtil.addDynamicLock(relations);
+					//校验ts
+					SagasUtil.checkBillsTs(relations);
+//					//初始化redis中的计数为0,删除分批,每执行完一批,就向redis里面存一批数据,计数也会自增1,等到计数和分批数相等,则认为当前操作完成
+//					SagasUtil.processInitCount(global_batchno, FipRedisKeyConst.DELBILL_KEY2);
+				}
+				try {
+					HashMap<String, String> sameleach = new HashMap<String, String>();
+					for (int i = 0; i < relations.length; i++) {
+						FipRelationVO fipRelationVO = relations[i];
+						if (StringUtils.isNotBlank(fipRelationVO.getBatchno())) {
+							batchnos.add(fipRelationVO.getBatchno());
+						}
+						if (sameleach.get(fipRelationVO.getDes_relationid()) != null)
+							continue;
+						if (pk_group == null)
+							pk_group = fipRelationVO.getDes_group();
+						List<FipRelationInfoVO> list = dellistmap.get(fipRelationVO.getDes_billtype());
+						List<FipRelationVO> relationList = relationMap.get(fipRelationVO.getDes_billtype());
+						List<String> pkList = pkMap.get(fipRelationVO.getDes_billtype());
+						if (list == null) {
+							list = new ArrayList<FipRelationInfoVO>();
+							dellistmap.put(fipRelationVO.getDes_billtype(), list);
+						}
+						if (relationList == null) {
+							relationList = new ArrayList<FipRelationVO>();
+							relationMap.put(fipRelationVO.getDes_billtype(), relationList);
+						}
+						if (pkList == null) {
+							pkList = new ArrayList<String>();
+							pkMap.put(fipRelationVO.getDes_billtype(), pkList);
+						}
+						
+						list.add(FipBasicRelationVO.convertFromRelationVO(fipRelationVO).getDesRelation());
+						relationList.add(fipRelationVO);
+						pkList.add(fipRelationVO.getDes_relationid());
+						sameleach.put(fipRelationVO.getDes_relationid(), fipRelationVO.getDes_relationid());
+					}
+					//删除错误中心消息
+					if (batchnos.size() > 0) {
+						SagasUtil.deleteErrMsg(batchnos.toArray(new String[0]));
+					}
+					if(isMerged){
+						//记录删除消息
+						loggerMessage(relations, "del relation by user");
+						BaseDAO baseDAO = new BaseDAO();
+						baseDAO.deleteVOArray(relations);
+						List<OperatingLogVO> opvolist = new ArrayList<OperatingLogVO>();
+						List<String> relationList = new ArrayList<String>();
+						for (FipRelationVO vo : relations) {
+							relationList.add(vo.getSrc_relationid());
+							// 拉式生成的单据删除时不保留日志
+							ConfigVO cfgvos = FipConfigCache.getCacheData(vo.getSrc_group(), vo.getSrc_billtype(), vo.getDes_billtype(), false);
+							if (cfgvos != null && 1 != cfgvos.getGeneratemode()) {
+								OperatingLogVO tvo = FipBasicRelationVO.convertFromRelationVO(vo).convertToOperatingLogVO();
+								tvo.setPk_operatinglog(null);
+								tvo.setOperateflag(OperatingFlagEmu.FLAG_no_process);
+								tvo.setDes_relationid(null);
+								opvolist.add(tvo);
+							}
+						}
+						if (!opvolist.isEmpty())
+							baseDAO.insertVOList(opvolist);
+					}
+					
+					// 按目标单据类型删除对应的目标单据
+					Set<Entry<String, List<FipRelationInfoVO>>> entrySet = dellistmap.entrySet();
+					if (!entrySet.isEmpty()) {
+						for (Entry<String, List<FipRelationInfoVO>> entry : entrySet) {
+							String billtype = entry.getKey();
+							if(!isMerged){
+								//获取下游服务接口
+								IFipInterfaceCenterService destService = SagasUtil.getFipInterfaceCenterService(billtype);
+								Map<String,Serializable> params = new HashMap<String,Serializable>();
+								params.put("pk_group", pk_group);
+								params.put("billtype", billtype);
+								List<FipRelationInfoVO> value = entry.getValue();
+								//获取当前目标单据类型对应的的消息集合
+								List<FipRelationVO> relationVOs = relationMap.get(billtype);
+								if(relationVOs != null && relationVOs.size() > 0){
+									params.put("data",relationVOs.toArray(new FipRelationVO[0]));
+									params.put("billState", FipBillState.State_RealDes);
+								}
+								if (pklist != null && pklist.size() > 0) {
+									params.put("pks", pklist.toArray(new String[0]));
+									params.put("batchno", global_batchno);
+									params.put("size", dellistmap.size());
+									params.put("scene", OperatinglogSceneEnum.DELETEREAL);
+								}
+								//开启新事务
+								NCCSagas.startNewSaga();
+								//校验提前
+								//获取校验提前的目标单据PK
+								List<String> pks = pkMap.get(billtype);
+								if("C0".equalsIgnoreCase(billtype)){
+									NCLocator.getInstance().lookup(IVoucher.class).checkDeleteVouchersSagasCheck(pks.toArray(new String[0]));
+								} else if ("RA00".equalsIgnoreCase(billtype)){
+									NCLocator.getInstance().lookup(IFipDeleteCheck.class).beforeDeleteCheck(pks.toArray(new String[0]));
+								}
+								//删除目标单据
+								destService.deleteBill(params, value);
+//								//注册删除正式凭证消息接口
+//								SagasUtil.confirm(OperatinglogSceneEnum.DELETEREAL, params);
+							}else{
+								IDesBillService itf = FipInterfaceCenter.getDesBillService(pk_group, billtype);
+								if (itf == null)
+									throw new BusinessException(FipInterfaceCenter.getNoInterfaceFoundMessage(billtype, "IDesBillService"));
+								itf.deleteBill(dellistmap.get(billtype));
+							}
+							
+						}
+					}
+				} catch (Exception e) {
+					Logger.error(e.getMessage(), e);
+//					SagasUtil.removeRedisData(global_batchno, FipRedisKeyConst.DELBILL_KEY2);
+					throw e;
+				}
+			}
+		//凭证删除传递影像  xuy  2021-09-01 start
+			creden.write(Invoicevos);
+		//凭证删除传递影像  xuy  2021-09-01 end
+		}
+	}
+
+	public int deleteByWhere(String wherepart, UFBoolean includebill) throws BusinessException {
+		int executeUpdate = 0;
+		FipRelationVO[] relations = queryByWhere(wherepart);
+		if (relations != null) {
+			loggerMessage(relations, "del relation by offset b=" + includebill);
+			if (relations != null)
+				executeUpdate = relations.length;
+			if (includebill != null && includebill.booleanValue()) {
+				delete(relations);
+			} else {
+				// String sql = "delete from " + FipRelationVO.getDefaultTableName() + " where " + wherepart;
+				new BaseDAO().deleteVOArray(relations);
+			}
+		}
+		return executeUpdate;
+	}
+
+	public static void loggerMessage(List<FipRelationVO> vos, String msg) throws BusinessException {
+		if (vos == null || vos.size() == 0)
+			return;
+		MessageLogVO[] logvos = new MessageLogVO[vos.size()];
+		for (int i = 0; i < logvos.length; i++) {
+			FipRelationVO vo = vos.get(i);
+			MessageLogVO messageLogVO = MessageTool.createMessageVO(FipBasicRelationVO.convertFromRelationVO(vo).getSrcRelation());
+			logvos[i] = messageLogVO;
+			messageLogVO.setMessagetype(0);
+			messageLogVO.setPk_operator(InvocationInfoProxy.getInstance().getUserId());
+			messageLogVO.setFreedef5(msg);
+			messageLogVO.setFreedef4(vo.getDes_billtype() + ":" + vo.getDes_relationid() + "@" + vo.getDes_org() + ":" + vo.getDes_freedef1());
+		}
+		new FipMessageLogsProxy().insert(logvos);
+	}
+
+	public static void loggerMessage(FipRelationVO[] vos, String msg) throws BusinessException {
+		if (vos == null || vos.length == 0)
+			return;
+		MessageLogVO[] logvos = new MessageLogVO[vos.length];
+		for (int i = 0; i < logvos.length; i++) {
+			FipRelationVO vo = vos[i];
+			MessageLogVO messageLogVO = MessageTool.createMessageVO(FipBasicRelationVO.convertFromRelationVO(vo).getSrcRelation());
+			logvos[i] = messageLogVO;
+			messageLogVO.setMessagetype(1);
+			messageLogVO.setPk_operator(InvocationInfoProxy.getInstance().getUserId());
+			messageLogVO.setFreedef5(msg);
+			messageLogVO.setFreedef4(vo.getDes_billtype() + ":" + vo.getDes_relationid() + "@" + vo.getDes_org() + ":" + vo.getDes_freedef1());
+		}
+		new FipMessageLogsProxy().insert(logvos);
+	}
+}

+ 42 - 0
fip/src/public/nc/bs/arap/pay/bzfk/IImagePubService.java

@@ -0,0 +1,42 @@
+package nc.bs.arap.pay.bzfk;
+
+import java.util.List;
+
+import nc.vo.arap.pay.bzfk.BillTypeVO;
+import nc.vo.arap.pay.bzfk.ImageCoverVO;
+import nc.vo.arap.pay.bzfk.InvoicestatusVO;
+import nc.vo.pub.BusinessException;
+
+/**
+ * 影像采集接口
+ * @author tsy
+ * @date 2021-05-27
+ *
+ */
+public interface IImagePubService {
+	
+	/**
+	 * 更新发票状态
+	 * @param invoiceStatusVOs 
+	 * @throws BusinessException
+	 */
+	public abstract void updateInvoiceStatus(List<InvoicestatusVO> invoiceStatusVOs) throws BusinessException;
+	
+	
+	
+	/**
+	 * 
+	 * 更新影像封面
+	 * @param coverVOs
+	 * @throws BusinessException
+	 */
+	public abstract void updateImageCover(List<ImageCoverVO> coverVOs ) throws BusinessException;
+	
+	
+	/**
+	 * 同步单据状态
+	 * @param bvos
+	 * @throws BusinessException
+	 */
+	public abstract void updateBillStatus(List<BillTypeVO> bvos) throws BusinessException;
+}

+ 27 - 0
fip/src/public/nc/bs/arap/pay/bzfk/ImageCommonConstant.java

@@ -0,0 +1,27 @@
+package nc.bs.arap.pay.bzfk;
+/**
+ * 影像采集接口
+ * @author tsy
+ * @date 2021-05-27
+ *
+ */
+public interface ImageCommonConstant {
+		
+	/**
+	 * 更新发票业务状态
+	 */
+	String IMAGE_INVOICE_UPDATE = "IMAGE-INVOICE-UPDATE";
+	
+	/**
+	 * 更新影像封面
+	 */
+	
+	String IMAGE_COVER_UPDATE = "IMAGE-COVER-UPDATE";
+	
+	
+	/**
+	 * 同步单据状态
+	 */
+	String IMAGE_BILL_STATUS = "IMAGE-BILL-STATUS";
+
+}

+ 157 - 0
fip/src/public/nc/bs/arap/pay/bzfk/api/ImageCaptureAPI.java

@@ -0,0 +1,157 @@
+package nc.bs.arap.pay.bzfk.api;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.HashMap;
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+
+import com.alibaba.fastjson.JSONObject;
+
+import nc.bs.arap.pay.bzfk.ImageCommonConstant;
+import nc.bs.arap.pay.bzfk.tools.ExceptionUtil;
+import nc.bs.dao.BaseDAO;
+import nc.bs.dao.DAOException;
+import nc.bs.framework.json.core.exception.ExceptionUtils;
+import nc.jdbc.framework.SQLParameter;
+import nc.jdbc.framework.processor.BeanListProcessor;
+import nc.jdbc.framework.processor.ColumnProcessor;
+import nc.vo.arap.pay.bzfk.EsbinfoVO;
+import sun.misc.BASE64Encoder;
+/**
+ * 影像采集接口
+ * @author tsy
+ * @date 2021-05-27
+ *
+ */
+@SuppressWarnings("restriction")
+public class ImageCaptureAPI {
+	
+	private static BaseDAO dao = null;
+	
+	public static HashMap<String,Object> map = new HashMap<String,Object>(){
+		{
+			put(ImageCommonConstant.IMAGE_INVOICE_UPDATE, "更新发票业务状态");
+			put(ImageCommonConstant.IMAGE_COVER_UPDATE, "更新影像封面");
+			put(ImageCommonConstant.IMAGE_BILL_STATUS, "同步单据状态");
+		}
+	};
+	
+	/**
+	 * 调用影像系统接口
+	 * @param jSONObject 传输报文
+	 * @param code	影像接口在NCC系统注册编码
+	 * @return
+	 * @throws DAOException 
+	 */
+	public static JSONObject postRequest(JSONObject jSONObject, String code) throws DAOException {
+		String sql = "select * from bgy_esbinfo where code = ?";
+		SQLParameter params = new SQLParameter();
+		params.addParam(code);
+		List<EsbinfoVO> esbinfoVOs = (List<EsbinfoVO>) getDao().executeQuery(sql, params, new BeanListProcessor(EsbinfoVO.class));
+		
+		// 接口注册校验
+		ExceptionUtil.isTrue(null == esbinfoVOs || 1 > esbinfoVOs.size(), map.get(code) + "接口未注册,请联系用友顾问!");
+		EsbinfoVO esbinfoVO = esbinfoVOs.get(0);
+		
+		// 接口启用校验
+		String isstart = esbinfoVO.getIsstart();
+		ExceptionUtil.isTrue(StringUtils.isBlank(isstart) || !"1".equals(isstart), map.get(code) + "接口未启用,请联系用友顾问!");
+		
+		// 接口URL校验
+		String url = esbinfoVO.getUrl();
+		ExceptionUtil.isTrue(StringUtils.isBlank(url), map.get(code) + "接口URL为空,请联系用友顾问!");
+		
+		// clientId:clientSecret校验
+		String def1 = esbinfoVO.getDef1();
+		ExceptionUtil.isTrue(StringUtils.isBlank(def1), "clientId:clientSecret为空,请联系用友顾问!");
+		
+		// Basic Auth认证头信息校验
+		ExceptionUtil.isTrue(null == getHeader(def1),"base64编码失败,请联系用友顾问!");
+		
+		CloseableHttpClient client = HttpClients.createDefault();
+		HttpPost post = new HttpPost(url);
+		RequestConfig config = RequestConfig.custom()
+                .setConnectTimeout(10000) //连接超时时间
+                .setConnectionRequestTimeout(10000) //从连接池中取的连接的最长时间
+                .setSocketTimeout(30000) //数据传输的超时时间
+                .build();
+        //设置请求配置时间
+		post.setConfig(config);
+		StringEntity myEntity = new StringEntity(JSONObject.toJSONString(jSONObject), ContentType.APPLICATION_JSON);// 构造请求数据
+		post.addHeader("Authorization", getHeader(def1));
+	    post.setEntity(myEntity);// 设置请求体
+	    String responseContent = null; // 响应内容
+	    CloseableHttpResponse response = null;
+		try {
+			response = client.execute(post);
+			if (response.getStatusLine().getStatusCode() == 200) {
+				HttpEntity entity = response.getEntity();
+				responseContent = EntityUtils.toString(entity, "UTF-8");
+			}
+		} catch (ClientProtocolException e) {
+//			e.printStackTrace();
+			ExceptionUtils.wrapException(e);			
+		} catch (IOException e) {
+//			e.printStackTrace();
+			ExceptionUtils.wrapException(e);
+		} finally {
+			try {
+				if (response != null)
+					response.close();
+			} catch (IOException e) {
+//				e.printStackTrace();
+				ExceptionUtils.wrapException(e);
+			} finally {
+				try {
+					if (client != null)
+						client.close();
+				} catch (IOException e) {
+//					e.printStackTrace();
+					ExceptionUtils.wrapException(e);
+				}
+			}
+		}
+		return JSONObject.parseObject(responseContent);
+	}
+	
+	private static BaseDAO getDao() {
+		if(null == dao) {
+			dao = new BaseDAO();
+		}
+		return dao;
+	}
+	
+	/**
+	 * 构造Basic Auth认证头信息
+	 * @param auth
+	 * @return
+	 */
+	@SuppressWarnings("restriction")
+	private static String getHeader(String auth) {
+		BASE64Encoder ecoder = new BASE64Encoder();
+		try {
+			String encodedAuth = ecoder.encode(auth.getBytes("UTF-8"));
+			return "Basic " + encodedAuth;
+		} catch (UnsupportedEncodingException e) {
+			return null;
+		}
+	}
+	
+	
+//	public static void main(String[] args) {
+//		System.out.println(getHeader("bgyfw_ybz_test:PGF95VnClEudW5VapUe"));
+//	}
+	
+}

+ 24 - 0
fip/src/public/nc/bs/arap/pay/bzfk/tools/ExceptionUtil.java

@@ -0,0 +1,24 @@
+package nc.bs.arap.pay.bzfk.tools;
+
+import nc.bs.framework.json.core.exception.BusinessException;
+
+/**
+ * 影像采集接口
+ * @author tsy
+ * @date 2021-05-27
+ *
+ */
+public class ExceptionUtil {
+
+	/**
+	 * 判断返回值是否为true
+	 * @param flag
+	 * @param msg
+	 */
+	public static void isTrue(boolean flag, String msg) {
+		// 如果为True,则抛出异常
+		if(flag) {
+			throw new BusinessException(msg);
+		}
+	}
+}

+ 64 - 0
fip/src/public/nc/bs/arap/pay/bzfk/tools/ImageCommonUtil.java

@@ -0,0 +1,64 @@
+package nc.bs.arap.pay.bzfk.tools;
+
+
+
+import org.apache.commons.lang3.StringUtils;
+
+import nc.bs.arap.pay.bzfk.IImagePubService;
+import nc.bs.dao.BaseDAO;
+import nc.bs.dao.DAOException;
+import nc.bs.framework.common.NCLocator;
+import nc.impl.am.db.processor.CountProcessor;
+
+import nc.vo.pubapp.pattern.exception.ExceptionUtils;
+
+/**
+ * 影像采集接口
+ * @author tsy
+ * @date 2021-05-27
+ *
+ */
+public class ImageCommonUtil {
+	
+	private static IImagePubService iImagePubService = null;
+	
+	public static String getStringDate(String prepareddate) {
+		if(!StringUtils.isBlank(prepareddate)) {
+			prepareddate = prepareddate.substring(0, 4) + prepareddate.substring(5, 7) + prepareddate.substring(8, 10);
+		}
+		return prepareddate;
+	}
+
+	/**
+	 * 单据是否上传影像待办
+	 * @param billid
+	 * @return
+	 */
+	public static boolean isSendImage(String billid){
+		String sql = new StringBuilder("SELECT COUNT(*)")
+				.append("  FROM IMG_TM_LOG")
+				.append(" WHERE BILLID = '"+ billid +"'")
+				.append(" AND TM_STATUS = 'S'")
+				.append(" AND APICODE = 'IMAGE-NCC-ERM'  ").toString();
+		try {
+			Integer count = (Integer) getDao().executeQuery(sql, new CountProcessor());
+			if(count != null && count > 0){
+				return true;
+			}
+		} catch (DAOException e) {
+			ExceptionUtils.wrappBusinessException("查询单据是否上传影像系统待办失败,请联系用友顾问!");
+		}
+		return false;
+	}
+	
+	private static IImagePubService getiImagePubService() {
+		if(null == iImagePubService) {
+			iImagePubService = NCLocator.getInstance().lookup(IImagePubService.class);
+		}
+		return iImagePubService;
+	}
+	
+	private static BaseDAO getDao() {
+		return new BaseDAO();
+	}
+}

+ 44 - 0
fip/src/public/nc/vo/arap/pay/bzfk/BillTypeVO.java

@@ -0,0 +1,44 @@
+package nc.vo.arap.pay.bzfk;
+
+public class BillTypeVO {
+	
+	private String billCode;
+	private String billCodeType;
+	private String status;
+	private String handleRemark;
+	private String systemOrig;
+	
+	public String getBillCode() {
+		return billCode;
+	}
+	public void setBillCode(String billCode) {
+		this.billCode = billCode;
+	}
+	public String getBillCodeType() {
+		return billCodeType;
+	}
+	public void setBillCodeType(String billCodeType) {
+		this.billCodeType = billCodeType;
+	}
+	public String getStatus() {
+		return status;
+	}
+	public void setStatus(String status) {
+		this.status = status;
+	}
+	public String getHandleRemark() {
+		return handleRemark;
+	}
+	public void setHandleRemark(String handleRemark) {
+		this.handleRemark = handleRemark;
+	}
+	public String getSystemOrig() {
+		return systemOrig;
+	}
+	public void setSystemOrig(String systemOrig) {
+		this.systemOrig = systemOrig;
+	}
+	
+	
+
+}

+ 425 - 0
fip/src/public/nc/vo/arap/pay/bzfk/EsbinfoVO.java

@@ -0,0 +1,425 @@
+package nc.vo.arap.pay.bzfk;
+
+import nc.vo.pub.IVOMeta;
+import nc.vo.pub.SuperVO;
+import nc.vo.pub.lang.UFBoolean;
+import nc.vo.pub.lang.UFDate;
+import nc.vo.pub.lang.UFDateTime;
+import nc.vo.pub.lang.UFDouble;
+import nc.vo.pubapp.pattern.model.meta.entity.vo.VOMetaFactory;
+
+/**
+ * <b> 此处简要描述此类功能 </b>
+ * <p>
+ * 此处添加累的描述信息
+ * </p>
+ * 创建日期:2020-10-27
+ * 
+ * @author yonyouBQ
+ * @version NCPrj ??
+ */
+
+public class EsbinfoVO extends SuperVO {
+
+	/**
+	 * PK_ESBINFO
+	 */
+	public java.lang.String pk_esbinfo;
+	/**
+	 * 编码
+	 */
+	public java.lang.String code;
+	/**
+	 * 描述名
+	 */
+	public java.lang.String name;
+	/**
+	 * 接口类
+	 */
+	public java.lang.String interfacename;
+	/**
+	 * 接口URL
+	 */
+	public java.lang.String url;
+	/**
+	 * 是否外部接口
+	 */
+	public java.lang.String isouter;
+	/**
+	 * 认证号
+	 */
+	public java.lang.String certificate;
+	/**
+	 * 创建人
+	 */
+	public java.lang.String creator;
+	/**
+	 * 修改人
+	 */
+	public java.lang.String modifier;
+	/**
+	 * 是否启用
+	 */
+	public java.lang.String isstart;
+	/**
+	 * 创建时间
+	 */
+	public UFDateTime createdate;
+	/**
+	 * 修改时间
+	 */
+	public UFDateTime editdate;
+	/**
+	 * 自定义项1
+	 */
+	public java.lang.String def1;
+	/**
+	 * 自定义项2
+	 */
+	public java.lang.String def2;
+	/**
+	 * 自定义项3
+	 */
+	public java.lang.String def3;
+	/**
+	 * 自定义项4
+	 */
+	public java.lang.String def4;
+	/**
+	 * 自定义项5
+	 */
+	public java.lang.String def5;
+	/**
+	 * 时间戳
+	 */
+	public UFDateTime ts;
+
+	/**
+	 * 属性 pk_esbinfo的Getter方法.属性名:PK_ESBINFO 创建日期:2020-10-27
+	 * 
+	 * @return java.lang.String
+	 */
+	public java.lang.String getPk_esbinfo() {
+		return this.pk_esbinfo;
+	}
+
+	/**
+	 * 属性pk_esbinfo的Setter方法.属性名:PK_ESBINFO 创建日期:2020-10-27
+	 * 
+	 * @param newPk_esbinfo java.lang.String
+	 */
+	public void setPk_esbinfo(java.lang.String pk_esbinfo) {
+		this.pk_esbinfo = pk_esbinfo;
+	}
+
+	/**
+	 * 属性 code的Getter方法.属性名:编码 创建日期:2020-10-27
+	 * 
+	 * @return java.lang.String
+	 */
+	public java.lang.String getCode() {
+		return this.code;
+	}
+
+	/**
+	 * 属性code的Setter方法.属性名:编码 创建日期:2020-10-27
+	 * 
+	 * @param newCode java.lang.String
+	 */
+	public void setCode(java.lang.String code) {
+		this.code = code;
+	}
+
+	/**
+	 * 属性 name的Getter方法.属性名:描述名 创建日期:2020-10-27
+	 * 
+	 * @return java.lang.String
+	 */
+	public java.lang.String getName() {
+		return this.name;
+	}
+
+	/**
+	 * 属性name的Setter方法.属性名:描述名 创建日期:2020-10-27
+	 * 
+	 * @param newName java.lang.String
+	 */
+	public void setName(java.lang.String name) {
+		this.name = name;
+	}
+
+	/**
+	 * 属性 interfacename的Getter方法.属性名:接口类 创建日期:2020-10-27
+	 * 
+	 * @return java.lang.String
+	 */
+	public java.lang.String getInterfacename() {
+		return this.interfacename;
+	}
+
+	/**
+	 * 属性interfacename的Setter方法.属性名:接口类 创建日期:2020-10-27
+	 * 
+	 * @param newInterfacename java.lang.String
+	 */
+	public void setInterfacename(java.lang.String interfacename) {
+		this.interfacename = interfacename;
+	}
+
+	/**
+	 * 属性 url的Getter方法.属性名:接口URL 创建日期:2020-10-27
+	 * 
+	 * @return java.lang.String
+	 */
+	public java.lang.String getUrl() {
+		return this.url;
+	}
+
+	/**
+	 * 属性url的Setter方法.属性名:接口URL 创建日期:2020-10-27
+	 * 
+	 * @param newUrl java.lang.String
+	 */
+	public void setUrl(java.lang.String url) {
+		this.url = url;
+	}
+
+	/**
+	 * 属性 isouter的Getter方法.属性名:是否外部接口 创建日期:2020-10-27
+	 * 
+	 * @return java.lang.String
+	 */
+	public java.lang.String getIsouter() {
+		return this.isouter;
+	}
+
+	/**
+	 * 属性isouter的Setter方法.属性名:是否外部接口 创建日期:2020-10-27
+	 * 
+	 * @param newIsouter java.lang.String
+	 */
+	public void setIsouter(java.lang.String isouter) {
+		this.isouter = isouter;
+	}
+
+	/**
+	 * 属性 certificate的Getter方法.属性名:认证号 创建日期:2020-10-27
+	 * 
+	 * @return java.lang.String
+	 */
+	public java.lang.String getCertificate() {
+		return this.certificate;
+	}
+
+	/**
+	 * 属性certificate的Setter方法.属性名:认证号 创建日期:2020-10-27
+	 * 
+	 * @param newCertificate java.lang.String
+	 */
+	public void setCertificate(java.lang.String certificate) {
+		this.certificate = certificate;
+	}
+
+	/**
+	 * 属性 creator的Getter方法.属性名:创建人 创建日期:2020-10-27
+	 * 
+	 * @return java.lang.String
+	 */
+	public java.lang.String getCreator() {
+		return this.creator;
+	}
+
+	/**
+	 * 属性creator的Setter方法.属性名:创建人 创建日期:2020-10-27
+	 * 
+	 * @param newCreator java.lang.String
+	 */
+	public void setCreator(java.lang.String creator) {
+		this.creator = creator;
+	}
+
+	/**
+	 * 属性 modifier的Getter方法.属性名:修改人 创建日期:2020-10-27
+	 * 
+	 * @return java.lang.String
+	 */
+	public java.lang.String getModifier() {
+		return this.modifier;
+	}
+
+	/**
+	 * 属性modifier的Setter方法.属性名:修改人 创建日期:2020-10-27
+	 * 
+	 * @param newModifier java.lang.String
+	 */
+	public void setModifier(java.lang.String modifier) {
+		this.modifier = modifier;
+	}
+
+	/**
+	 * 属性 isstart的Getter方法.属性名:是否启用 创建日期:2020-10-27
+	 * 
+	 * @return java.lang.String
+	 */
+	public java.lang.String getIsstart() {
+		return this.isstart;
+	}
+
+	/**
+	 * 属性isstart的Setter方法.属性名:是否启用 创建日期:2020-10-27
+	 * 
+	 * @param newIsstart java.lang.String
+	 */
+	public void setIsstart(java.lang.String isstart) {
+		this.isstart = isstart;
+	}
+
+	/**
+	 * 属性 createdate的Getter方法.属性名:创建时间 创建日期:2020-10-27
+	 * 
+	 * @return nc.vo.pub.lang.UFDateTime
+	 */
+	public UFDateTime getCreatedate() {
+		return this.createdate;
+	}
+
+	/**
+	 * 属性createdate的Setter方法.属性名:创建时间 创建日期:2020-10-27
+	 * 
+	 * @param newCreatedate nc.vo.pub.lang.UFDateTime
+	 */
+	public void setCreatedate(UFDateTime createdate) {
+		this.createdate = createdate;
+	}
+
+	/**
+	 * 属性 editdate的Getter方法.属性名:修改时间 创建日期:2020-10-27
+	 * 
+	 * @return nc.vo.pub.lang.UFDateTime
+	 */
+	public UFDateTime getEditdate() {
+		return this.editdate;
+	}
+
+	/**
+	 * 属性editdate的Setter方法.属性名:修改时间 创建日期:2020-10-27
+	 * 
+	 * @param newEditdate nc.vo.pub.lang.UFDateTime
+	 */
+	public void setEditdate(UFDateTime editdate) {
+		this.editdate = editdate;
+	}
+
+	/**
+	 * 属性 def1的Getter方法.属性名:自定义项1 创建日期:2020-10-27
+	 * 
+	 * @return java.lang.String
+	 */
+	public java.lang.String getDef1() {
+		return this.def1;
+	}
+
+	/**
+	 * 属性def1的Setter方法.属性名:自定义项1 创建日期:2020-10-27
+	 * 
+	 * @param newDef1 java.lang.String
+	 */
+	public void setDef1(java.lang.String def1) {
+		this.def1 = def1;
+	}
+
+	/**
+	 * 属性 def2的Getter方法.属性名:自定义项2 创建日期:2020-10-27
+	 * 
+	 * @return java.lang.String
+	 */
+	public java.lang.String getDef2() {
+		return this.def2;
+	}
+
+	/**
+	 * 属性def2的Setter方法.属性名:自定义项2 创建日期:2020-10-27
+	 * 
+	 * @param newDef2 java.lang.String
+	 */
+	public void setDef2(java.lang.String def2) {
+		this.def2 = def2;
+	}
+
+	/**
+	 * 属性 def3的Getter方法.属性名:自定义项3 创建日期:2020-10-27
+	 * 
+	 * @return java.lang.String
+	 */
+	public java.lang.String getDef3() {
+		return this.def3;
+	}
+
+	/**
+	 * 属性def3的Setter方法.属性名:自定义项3 创建日期:2020-10-27
+	 * 
+	 * @param newDef3 java.lang.String
+	 */
+	public void setDef3(java.lang.String def3) {
+		this.def3 = def3;
+	}
+
+	/**
+	 * 属性 def4的Getter方法.属性名:自定义项4 创建日期:2020-10-27
+	 * 
+	 * @return java.lang.String
+	 */
+	public java.lang.String getDef4() {
+		return this.def4;
+	}
+
+	/**
+	 * 属性def4的Setter方法.属性名:自定义项4 创建日期:2020-10-27
+	 * 
+	 * @param newDef4 java.lang.String
+	 */
+	public void setDef4(java.lang.String def4) {
+		this.def4 = def4;
+	}
+
+	/**
+	 * 属性 def5的Getter方法.属性名:自定义项5 创建日期:2020-10-27
+	 * 
+	 * @return java.lang.String
+	 */
+	public java.lang.String getDef5() {
+		return this.def5;
+	}
+
+	/**
+	 * 属性def5的Setter方法.属性名:自定义项5 创建日期:2020-10-27
+	 * 
+	 * @param newDef5 java.lang.String
+	 */
+	public void setDef5(java.lang.String def5) {
+		this.def5 = def5;
+	}
+
+	/**
+	 * 属性 生成时间戳的Getter方法.属性名:时间戳 创建日期:2020-10-27
+	 * 
+	 * @return nc.vo.pub.lang.UFDateTime
+	 */
+	public UFDateTime getTs() {
+		return this.ts;
+	}
+
+	/**
+	 * 属性生成时间戳的Setter方法.属性名:时间戳 创建日期:2020-10-27
+	 * 
+	 * @param newts nc.vo.pub.lang.UFDateTime
+	 */
+	public void setTs(UFDateTime ts) {
+		this.ts = ts;
+	}
+
+	@Override
+	public IVOMeta getMetaData() {
+		return VOMetaFactory.getInstance().getVOMeta("ic.bgy_esbinfo");
+	}
+}

+ 53 - 0
fip/src/public/nc/vo/arap/pay/bzfk/ImageCoverVO.java

@@ -0,0 +1,53 @@
+package nc.vo.arap.pay.bzfk;
+
+import java.util.List;
+import java.util.Map;
+
+public class ImageCoverVO {
+
+	private String billCode;
+	private String billCodeType;
+	private String userCode;
+	private String fileOperationType;
+	private String systemOrig;
+	private List<Map<String , String>> files;
+	public String getBillCode() {
+		return billCode;
+	}
+	public void setBillCode(String billCode) {
+		this.billCode = billCode;
+	}
+	public String getBillCodeType() {
+		return billCodeType;
+	}
+	public void setBillCodeType(String billCodeType) {
+		this.billCodeType = billCodeType;
+	}
+	public String getUserCode() {
+		return userCode;
+	}
+	public void setUserCode(String userCode) {
+		this.userCode = userCode;
+	}
+	public String getFileOperationType() {
+		return fileOperationType;
+	}
+	public void setFileOperationType(String fileOperationType) {
+		this.fileOperationType = fileOperationType;
+	}
+	public String getSystemOrig() {
+		return systemOrig;
+	}
+	public void setSystemOrig(String systemOrig) {
+		this.systemOrig = systemOrig;
+	}
+	public List<Map<String, String>> getFiles() {
+		return files;
+	}
+	public void setFiles(List<Map<String, String>> files) {
+		this.files = files;
+	}
+	
+	
+	
+}

+ 273 - 0
fip/src/public/nc/vo/arap/pay/bzfk/ImageTMLogVO.java

@@ -0,0 +1,273 @@
+package nc.vo.arap.pay.bzfk;
+
+import nc.vo.pub.SuperVO;
+
+public class ImageTMLogVO extends SuperVO{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	
+	/**
+	 * 日志主键
+	 */
+	private String pk_log;
+	
+	/**
+	 * 单据主键
+	 */
+	private String billid;
+	
+	/**
+	 * 单据编码
+	 */
+	private String billno; 
+	
+	/**
+	 * 传输状态
+	 */
+	private String tm_status; 
+	
+	/**
+	 * 传输内容
+	 */
+	private String tm_content; 
+	
+	/**
+	 * 传输返回信息
+	 */
+	private String tm_result; 
+	
+	/**
+	 * 时间戳
+	 */
+	private String ts;
+	
+	/**
+	 * 删除标识
+	 */
+	private int dr = 0;
+	
+	/**
+	 * 自定义项1
+	 */
+	private String def1; 
+
+	/**
+	 * 自定义项2
+	 */
+	private String def2; 
+
+	/**
+	 * 自定义项3
+	 */
+	private String def3; 
+
+	/**
+	 * 自定义项4
+	 */
+	private String def4; 
+
+	/**
+	 * 自定义项5
+	 */
+	private String def5;
+
+	/**
+	 * 自定义项6
+	 */
+	private String def6; 
+
+	/**
+	 * 自定义项7
+	 */
+	private String def7; 
+
+	/**
+	 * 自定义项8
+	 */
+	private String def8; 
+
+	/**
+	 * 自定义项9
+	 */
+	private String def9; 
+
+	/**
+	 * 自定义项10
+	 */
+	private String def10; 
+	
+	/**
+	 * 接口编码
+	 */
+	private String apicode;
+	
+	public String getPk_log() {
+		return pk_log;
+	}
+
+	public void setPk_log(String pk_log) {
+		this.pk_log = pk_log;
+	}
+
+	public String getBillid() {
+		return billid;
+	}
+
+	public void setBillid(String billid) {
+		this.billid = billid;
+	}
+
+	public String getBillno() {
+		return billno;
+	}
+
+	public void setBillno(String billno) {
+		this.billno = billno;
+	}
+
+	public String getTm_status() {
+		return tm_status;
+	}
+
+	public void setTm_status(String tm_status) {
+		this.tm_status = tm_status;
+	}
+
+	public String getTm_content() {
+		return tm_content;
+	}
+
+	public void setTm_content(String tm_content) {
+		this.tm_content = tm_content;
+	}
+
+	public String getTm_result() {
+		return tm_result;
+	}
+
+	public void setTm_result(String tm_result) {
+		this.tm_result = tm_result;
+	}
+
+	public String getTs() {
+		return ts;
+	}
+
+	public void setTs(String ts) {
+		this.ts = ts;
+	}
+
+	public int getDr() {
+		return dr;
+	}
+
+	public void setDr(int dr) {
+		this.dr = dr;
+	}
+
+	public String getDef1() {
+		return def1;
+	}
+
+	public void setDef1(String def1) {
+		this.def1 = def1;
+	}
+
+	public String getDef2() {
+		return def2;
+	}
+
+	public void setDef2(String def2) {
+		this.def2 = def2;
+	}
+
+	public String getDef3() {
+		return def3;
+	}
+
+	public void setDef3(String def3) {
+		this.def3 = def3;
+	}
+
+	public String getDef4() {
+		return def4;
+	}
+
+	public void setDef4(String def4) {
+		this.def4 = def4;
+	}
+
+	public String getDef5() {
+		return def5;
+	}
+
+	public void setDef5(String def5) {
+		this.def5 = def5;
+	}
+
+	public String getDef6() {
+		return def6;
+	}
+
+	public void setDef6(String def6) {
+		this.def6 = def6;
+	}
+
+	public String getDef7() {
+		return def7;
+	}
+
+	public void setDef7(String def7) {
+		this.def7 = def7;
+	}
+
+	public String getDef8() {
+		return def8;
+	}
+
+	public void setDef8(String def8) {
+		this.def8 = def8;
+	}
+
+	public String getDef9() {
+		return def9;
+	}
+
+	public void setDef9(String def9) {
+		this.def9 = def9;
+	}
+
+	public String getDef10() {
+		return def10;
+	}
+
+	public void setDef10(String def10) {
+		this.def10 = def10;
+	}
+	
+	public String getApicode() {
+		return apicode;
+	}
+
+	public void setApicode(String apicode) {
+		this.apicode = apicode;
+	}
+
+	@Override
+	public String getTableName() {
+		// TODO Auto-generated method stub
+		return "img_tm_log";
+	}
+
+	@Override
+	public String getPKFieldName() {
+		// TODO Auto-generated method stub
+		return "pk_log";
+	}
+	
+	
+
+}

+ 249 - 0
fip/src/public/nc/vo/arap/pay/bzfk/InvoiceVo.java

@@ -0,0 +1,249 @@
+package nc.vo.arap.pay.bzfk;
+
+
+
+public class InvoiceVo {
+
+	/**
+	 * 付款单主键
+	 */
+	private String pk_jkbx;
+	
+	/**
+	 * 付款单单据号
+	 */
+	private String djbh;
+	
+	/**
+	 * 制单人code
+	 */
+	private String userCode;
+
+	/**
+	 * 凭证主键
+	 */
+	private String pk_voucher;
+
+	/**
+	 * 凭证号
+	 */
+	private String num;
+
+	/**
+	 * 摘要
+	 */
+	private String explanation;
+
+	/**
+	 * 凭证日期
+	 */
+	private String prepareddate;
+	
+	/**
+	 * 凭证时间戳
+	 */
+	private String ts;
+
+	/**
+	 * 发票代码
+	 */
+	private String fpdm;
+
+	/**
+	 * 发票编码
+	 */
+	private String fphm;
+	
+	/**
+	 * 结算金额
+	 */
+	private String orglocal;
+	
+	/**
+	 * 结算状态
+	 */
+	private String settlestatus;
+	
+	/**
+	 * 发票主键
+	 */
+	private String pk_erminvoice;
+	
+	/**
+	 * 记账传输成功标识
+	 */
+	private String defitem5;
+	
+	/**
+	 * 付款传输成功标识
+	 */
+	private String defitem6;
+	/**
+	 * 发票平台发票类型code
+	 */
+	private String defitem10;
+	/**
+	 * 发票平台发票id
+	 */
+	private String defitem11;
+	/**
+	 * 发票平台发票类型
+	 */
+	private String defitem3;
+
+	public String getDefitem3() {
+		return defitem3;
+	}
+
+	public void setDefitem3(String defitem3) {
+		this.defitem3 = defitem3;
+	}
+
+	public String getDefitem10() {
+		return defitem10;
+	}
+
+	public void setDefitem10(String defitem10) {
+		this.defitem10 = defitem10;
+	}
+
+	public String getDefitem11() {
+		return defitem11;
+	}
+
+	public void setDefitem11(String defitem11) {
+		this.defitem11 = defitem11;
+	}
+
+	public String getPk_jkbx() {
+		return pk_jkbx;
+	}
+
+	public void setPk_jkbx(String pk_jkbx) {
+		this.pk_jkbx = pk_jkbx;
+	}
+
+	public String getDjbh() {
+		return djbh;
+	}
+
+	public void setDjbh(String djbh) {
+		this.djbh = djbh;
+	}
+
+	public String getPk_voucher() {
+		return pk_voucher;
+	}
+
+	public void setPk_voucher(String pk_voucher) {
+		this.pk_voucher = pk_voucher;
+	}
+
+	public String getNum() {
+		return num;
+	}
+
+	public void setNum(String num) {
+		this.num = num;
+	}
+
+	public String getExplanation() {
+		return explanation;
+	}
+
+	public void setExplanation(String explanation) {
+		this.explanation = explanation;
+	}
+
+	public String getPrepareddate() {
+		return prepareddate;
+	}
+
+	public void setPrepareddate(String prepareddate) {
+		this.prepareddate = prepareddate;
+	}
+
+	public String getTs() {
+		return ts;
+	}
+
+	public void setTs(String ts) {
+		this.ts = ts;
+	}
+
+	public String getFpdm() {
+		return fpdm;
+	}
+
+	public void setFpdm(String fpdm) {
+		this.fpdm = fpdm;
+	}
+	
+	
+
+	public String getUserCode() {
+		return userCode;
+	}
+
+	public void setUserCode(String userCode) {
+		this.userCode = userCode;
+	}
+
+	public String getFphm() {
+		return fphm;
+	}
+
+	public void setFphm(String fphm) {
+		this.fphm = fphm;
+	}
+
+	public String getOrglocal() {
+		return orglocal;
+	}
+
+	public void setOrglocal(String orglocal) {
+		this.orglocal = orglocal;
+	}
+
+	public String getSettlestatus() {
+		return settlestatus;
+	}
+
+	public void setSettlestatus(String settlestatus) {
+		this.settlestatus = settlestatus;
+	}
+
+	public String getPk_erminvoice() {
+		return pk_erminvoice;
+	}
+
+	public void setPk_erminvoice(String pk_erminvoice) {
+		this.pk_erminvoice = pk_erminvoice;
+	}
+
+	public String getDefitem5() {
+		return defitem5;
+	}
+
+	public void setDefitem5(String defitem5) {
+		this.defitem5 = defitem5;
+	}
+
+	public String getDefitem6() {
+		return defitem6;
+	}
+
+	public void setDefitem6(String defitem6) {
+		this.defitem6 = defitem6;
+	}
+	
+	
+	
+	
+	
+	
+	
+	
+
+	
+}

+ 98 - 0
fip/src/public/nc/vo/arap/pay/bzfk/InvoicestatusVO.java

@@ -0,0 +1,98 @@
+package nc.vo.arap.pay.bzfk;
+
+public class InvoicestatusVO {
+	
+	private String invoiceNo;
+	private String invoiceCode;
+	private String salesbillNo;
+	private String businessNo;
+	private String businessType;
+	private String businessStatus;
+	private String businessDate;
+	private String businessRemark;
+	private String businessAmount;
+	private String systemOrig;
+	private String ticketCode;
+	private String invoiceId;
+	private String invoiceType;
+	public String getTicketCode() {
+		return ticketCode;
+	}
+	public void setTicketCode(String ticketCode) {
+		this.ticketCode = ticketCode;
+	}
+	public String getInvoiceId() {
+		return invoiceId;
+	}
+	public void setInvoiceId(String invoiceId) {
+		this.invoiceId = invoiceId;
+	}
+	public String getInvoiceType() {
+		return invoiceType;
+	}
+	public void setInvoiceType(String invoiceType) {
+		this.invoiceType = invoiceType;
+	}
+	public String getInvoiceNo() {
+		return invoiceNo;
+	}
+	public void setInvoiceNo(String invoiceNo) {
+		this.invoiceNo = invoiceNo;
+	}
+	public String getInvoiceCode() {
+		return invoiceCode;
+	}
+	public void setInvoiceCode(String invoiceCode) {
+		this.invoiceCode = invoiceCode;
+	}
+	public String getSalesbillNo() {
+		return salesbillNo;
+	}
+	public void setSalesbillNo(String salesbillNo) {
+		this.salesbillNo = salesbillNo;
+	}
+	public String getBusinessNo() {
+		return businessNo;
+	}
+	public void setBusinessNo(String businessNo) {
+		this.businessNo = businessNo;
+	}
+	public String getBusinessType() {
+		return businessType;
+	}
+	public void setBusinessType(String businessType) {
+		this.businessType = businessType;
+	}
+	public String getBusinessStatus() {
+		return businessStatus;
+	}
+	public void setBusinessStatus(String businessStatus) {
+		this.businessStatus = businessStatus;
+	}
+	public String getBusinessDate() {
+		return businessDate;
+	}
+	public void setBusinessDate(String businessDate) {
+		this.businessDate = businessDate;
+	}
+	public String getBusinessRemark() {
+		return businessRemark;
+	}
+	public void setBusinessRemark(String businessRemark) {
+		this.businessRemark = businessRemark;
+	}
+	public String getBusinessAmount() {
+		return businessAmount;
+	}
+	public void setBusinessAmount(String businessAmount) {
+		this.businessAmount = businessAmount;
+	}
+	public String getSystemOrig() {
+		return systemOrig;
+	}
+	public void setSystemOrig(String systemOrig) {
+		this.systemOrig = systemOrig;
+	}
+
+
+}