2 Commits 8f49b3d07d ... 3aebc7eb80

Tác giả SHA1 Thông báo Ngày
  wenfx 3aebc7eb80 明源接口传应付付款自动核销日志记录 3 năm trước cách đây
  wenfx 5c0aca7d12 碧彩影像入库封面及睡眠3秒处理 3 năm trước cách đây

+ 56 - 0
arap_patch/src/private/nc/bs/arap/busireg/BillRegisterForBusiDataBO.java

@@ -15,6 +15,7 @@ import nc.bs.arap.bill.ArapBillCalUtil;
 import nc.bs.arap.billact.LogTime;
 import nc.bs.arap.cache.ArapBusiPluginCenter;
 import nc.bs.arap.verify.FaDMO;
+import nc.bs.bgy.pub.VerifyLogger;
 import nc.bs.businessevent.BdUpdateEvent;
 import nc.bs.businessevent.BusinessEvent;
 import nc.bs.businessevent.IBusinessEvent;
@@ -30,6 +31,7 @@ import nc.itf.arap.fieldmap.IBillFieldGet;
 import nc.itf.arap.prv.IArapVerifyLogPrivate;
 import nc.itf.fi.pub.Currency;
 import nc.itf.fi.pub.SysInit;
+import nc.itf.uap.IUAPQueryBS;
 import nc.itf.uap.busibean.SysinitAccessor;
 import nc.jdbc.framework.processor.ColumnListProcessor;
 import nc.md.data.access.NCObject;
@@ -58,6 +60,7 @@ import nc.vo.arap.gathering.GatheringBillItemVO;
 import nc.vo.arap.global.ArapBillDealVOConsts;
 import nc.vo.arap.pay.PayBillItemVO;
 import nc.vo.arap.payable.PayableBillItemVO;
+import nc.vo.arap.payable.PayableBillVO;
 import nc.vo.arap.pfflow.ArapBillMapVO;
 import nc.vo.arap.pfflow.ArapBillMapVOTool;
 import nc.vo.arap.pub.ArapBillTypeInfo;
@@ -110,6 +113,13 @@ public class BillRegisterForBusiDataBO {
 	Map<String, ArrayList<AggverifyVO>> aggMap = new HashMap<String, ArrayList<AggverifyVO>>();
 
 	AggregatedValueObject[] aggvos = null;
+	
+	// add by wenfx 20220615 start
+	// TODO 增加明源应付,找明源付款核销的日志记录
+	private VerifyLogger log = new VerifyLogger(BillRegisterForBusiDataBO.class.getName());
+
+	private boolean logFlag = false;
+	// add by wenfx 20220615 end
 
 	public AggregatedValueObject[] getAggvos() {
 		return this.aggvos;
@@ -299,12 +309,30 @@ public class BillRegisterForBusiDataBO {
 			BusinessEvent e = (BusinessEvent) event;
 			if (null != e.getUserObject()) {
 				AggregatedValueObject[] vos = this.dealUserObj(e.getUserObject());
+				
+				// add by wenfx 20220615 start
+				// TODO 只记录从明源传过来的应付单的生效核销过程
+				if ("F1-Cxx-W02".equals(vos[0].getParentVO().getAttributeValue(PayableBillVO.PK_TRADETYPE))
+						&& vos[0].getParentVO().getAttributeValue(PayableBillVO.DEF1) != null) {
+//					List<Object> ret = (List<Object>) NCLocator.getInstance().lookup(IUAPQueryBS.class).executeQuery(
+//							"select billid from sap_po_log where billid='" + vos[0].getParentVO().getPrimaryKey() + "'",
+//							new ColumnListProcessor());
+//					if (ret != null && ret.size() > 0) {
+						log.info(vos[0].getParentVO().getPrimaryKey());
+						logFlag = true;
+//					}
+				}
+				// add by wenfx 20220615 end
+				
 				this.setAggvos(vos);
 				for (AggregatedValueObject obj : vos) {
 					CircularlyAccessibleValueObject parentVO = obj.getParentVO();
 					UFBoolean isinit = (UFBoolean) parentVO.getAttributeValue("isinit");
 					if (isinit != null && isinit.booleanValue()) {
 						// 如果是期初单据,不用审核监听,直接返回
+						if(logFlag) {
+							log.info("期初标识为期初,未核销直接结束");
+						}
 						return;
 					}
 				}
@@ -323,6 +351,9 @@ public class BillRegisterForBusiDataBO {
 					String billclass = (String) obj.getParentVO().getAttributeValue("billclass");
 					if (billclass != null && (billclass.equals(ArapConstant.ARAP_ZS_BILLCLASS)
 							|| billclass.equals(ArapConstant.ARAP_ZF_BILLCLASS))) {
+						if (logFlag) {
+							log.info("billclass为" + billclass + ",未核销直接结束");
+						}
 						return;
 					}
 				}
@@ -685,6 +716,9 @@ public class BillRegisterForBusiDataBO {
 						if (scmList.get(0).getS_billtype() == null) {
 							// 采购订单-》应付, 采购订单-》合同-》付款 ,自动核销
 							this.VerifyByContractNo(scmList, com, ruleVOMap);
+							if (logFlag) {
+								log.info("走供应链核销,未核销直接结束");
+							}
 							return;
 						}
 						List<ArapBillMapVO> newList = new ArrayList<ArapBillMapVO>();
@@ -2690,6 +2724,9 @@ public class BillRegisterForBusiDataBO {
 				// def109是否含质保金付款def14
 				iszhibaojin = vos[0].getParentVO().getAttributeValue("def14") == null ? UFBoolean.FALSE
 						: new UFBoolean(vos[0].getParentVO().getAttributeValue("def14").toString());
+				if (logFlag) {
+					log.info("iszhibaojin:"+iszhibaojin);
+				}
 			}
 
 			if ("F3-Cxx-W01".equals(pk_tradetype)) {
@@ -2710,6 +2747,9 @@ public class BillRegisterForBusiDataBO {
 				Object def3 = headValueObject.getAttributeValue("def3");
 
 				UFBoolean isticketpay = null == def3 ? UFBoolean.FALSE : new UFBoolean(def3.toString());
+				if (logFlag) {
+					log.info("isticketpay:"+isticketpay);
+				}
 
 				if (isticketpay.booleanValue() && iszhibaojin.booleanValue()) {
 					qryitemsql = "select p.pk_paybill\n" + "  from ap_paybill p\n" + " where p.def11 = '" + guid + "'\n"
@@ -2724,6 +2764,9 @@ public class BillRegisterForBusiDataBO {
 			}
 			pk_itemList.add(headValueObject.getPrimaryKey());
 
+			if (logFlag) {
+				log.info("qryitemsql:"+qryitemsql);
+			}
 			if (qryitemsql == "") {
 				return;
 			}
@@ -2737,8 +2780,17 @@ public class BillRegisterForBusiDataBO {
 			List<ArapBusiDataVO> dataList = new ArrayList<ArapBusiDataVO>();
 			List<ArapBusiDataVO> jfdataList = new ArrayList<ArapBusiDataVO>();
 			List<ArapBusiDataVO> dfdataList = new ArrayList<ArapBusiDataVO>();
+			if (logFlag) {
+				log.info("qrySql:"+qrySql);
+			}
 			NCObject[] ncObjects = MDPersistenceService.lookupPersistenceQueryService()
 					.queryBillOfNCObjectByCond(ArapBusiDataVO.class, qrySql, false);
+			if (logFlag) {
+				for (NCObject ncObject : ncObjects) {
+					log.info("ncObject_pk:" + ((ArapBusiDataVO) ncObject.getContainmentObject()).getPk_bill() + ":"
+							+ ((ArapBusiDataVO) ncObject.getContainmentObject()).getMoney_bal());
+				}
+			}
 			if (!ArrayUtils.isEmpty(ncObjects)) {
 				for (DefaultVerifyRuleVO rule : ruleVOMap.values()) {
 					rule.setM_creditObjKeys(new String[] { ArapBusiDataVO.DEF1,ArapBusiDataVO.DEF19});//明源GUID和表体分摊期间做为核销的条件
@@ -2775,7 +2827,11 @@ public class BillRegisterForBusiDataBO {
 				// 核销结果保存
 				if (aggVOList != null && aggVOList.size() > 0) {
 					NCLocator.getInstance().lookup(IArapVerifyLogPrivate.class).save(aggVOList, ruleVOMap, com);
+				}else if (logFlag) {
+					log.info("核销结果aggVOList为空");
 				}
+			}else if(logFlag) {
+				log.info("ncObjects为空,未核销直接返回");
 			}
 		} catch (Exception e) {
 			ExceptionUtils.wrappBusinessException(e.getMessage());

+ 42 - 0
arap_patch/src/public/nc/bs/bgy/pub/VerifyLogger.java

@@ -0,0 +1,42 @@
+package nc.bs.bgy.pub;
+
+import nc.bs.logging.Log;
+
+public class VerifyLogger {
+
+	private Log log = Log.getInstance("myverifylog");
+
+	private String logHead;
+
+	public VerifyLogger() {
+	}
+
+	public VerifyLogger(String logHead) {
+		this.logHead = "<" + logHead + ">:  ";
+	}
+
+	public void debug(String msg) {
+		log.debug(logHead + msg);
+	}
+
+	public void info(String msg) {
+		log.info(logHead + msg);
+	}
+
+	public void warn(String msg) {
+		log.warn(logHead + msg);
+	}
+
+	public void error(String msg) {
+		log.error(logHead + msg);
+	}
+
+	public void error(Throwable throwable) {
+		log.error(logHead, throwable);
+	}
+
+	public void error(String msg, Throwable throwable) {
+		log.error(logHead + msg, throwable);
+	}
+
+}

+ 71 - 111
erm_patch/src/private/nc/impl/erm/servlet/bgywy/NccToImage.java

@@ -6,24 +6,19 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
 import java.util.Properties;
-import java.util.UUID;
-
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
 import org.owasp.esapi.ESAPI;
 
 import com.alibaba.fastjson.JSONObject;
 
 import nc.bcmanage.bs.IBusiCenterManageService;
 import nc.pubitf.erm.expenseaccount.IinsertLog_RequiresNew;
-import nc.bs.arap.api.psapitool.WuYePSApiUtil;
 import nc.bs.dao.BaseDAO;
 import nc.bs.framework.adaptor.IHttpServletAdaptor;
 import nc.bs.framework.common.InvocationInfoProxy;
@@ -32,14 +27,11 @@ import nc.bs.framework.comn.NetStreamContext;
 import nc.bs.framework.server.ISecurityTokenCallback;
 import nc.itf.uap.print.IPrintEntry;
 import nc.jdbc.framework.processor.BeanProcessor;
-import nc.net.servlet.IReturnStatus;
 import nc.pub.sap.constant.SapConstants;
+import nc.pubimpl.erm.expenseaccount.InsertLog_RequiresNewImpl;
 import nc.pubitf.para.SysInitQuery;
 import nc.vo.erm.bgyimageconfig.BgyimageconfigVO;
-import nc.vo.esb.EsbInfoVO;
-import nc.vo.esb.QueryInfoVO;
-import nc.vo.esb.ResultEsbVO;
-import nc.vo.esb.ResultVO;
+import nc.vo.erm.image.ImageTMLogVO;
 import nc.vo.pub.BusinessException;
 import nccloud.base.reflect.NCClass;
 import nccloud.dto.arap.arappub.PrintDataInfo;
@@ -59,23 +51,22 @@ import nccloud.vo.platform.print.LightPrintTemplateHelper;
 
 public class NccToImage implements IHttpServletAdaptor {
 	 private static Properties _prop = new Properties();
-
 	@Override
 	public void doAction(HttpServletRequest request, HttpServletResponse response)
 			throws ServletException, IOException {
-		String rsdata = null;
-		ResultEsbVO<ResultVO> esb = new ResultEsbVO<ResultVO>();
-		ResultVO result = new ResultVO();
-		result.setResult("");
-		esb.setResultInfo(result);
-		
 		String appcode = request.getParameter("appcode");//"20080PBM408";
 		String Oids = request.getParameter("Oids");//"1001H8100000000DU0K2";
+		
+		try {
+			Thread.sleep(3 * 1000);
+		} catch (InterruptedException e2) {
+		}
+		
 		try {
+			initInvocationInfo();
 			// TODO Auto-generated method stub
 			// 获取请求参数,
 			//URLhttp://127.0.0.1/service/~erm/nc.impl.erm.servlet.bgywy.NccToImage?appcode=20080EBM410&Oids=1001H9100000000A34KT
-			initInvocationInfo();
 			BgyimageconfigVO imconfig = new BgyimageconfigVO();
 			try {
 				//通过表erm_bgyimageconfig,查询出打印相关参数
@@ -83,10 +74,8 @@ public class NccToImage implements IHttpServletAdaptor {
 				imconfig = queryImageConfig(appcode);
 			} catch (BusinessException e1) {
 				// TODO Auto-generated catch block
-				throw new BusinessException(e1.getMessage());
+				ExceptionUtils.wrapBusinessException(e1.getMessage());
 			}
-			if(null==imconfig)
-					throw new BusinessException("未能根据appcode找到对应的打印模板,请检查erm_bgyimageconfig表");
 			//String Nodekey = imconfig.getTranstype(); // 交易类型,"F1-Cxx-W04";// request.getParameter("Nodekey");
 			String PrintServiceModule = imconfig.getModule();// 模块名,"arap";// request.getParameter("PrintServiceModule");
 			String PrintServiceName = imconfig.getServicename();// 打印服务类全路径"nccloud.pubimpl.arap.arappub.ArapPrintService";															
@@ -96,6 +85,8 @@ public class NccToImage implements IHttpServletAdaptor {
 			PrintDataInfo ArApPrintinfo = new PrintDataInfo();
 			PrintInfo ErmPrintinfo = new PrintInfo();
 			PrintInfo PuPrintinfo = new PrintInfo();
+			PrintInfo IcPrintinfo = new PrintInfo();
+
 			ByteArrayOutputStream print = new ByteArrayOutputStream();
 			IPrintEntry printEntry = LightPrintTemplateHelper.getPrintEntry();		
 			if (PrintServiceModule.equals("arap")) {
@@ -135,9 +126,21 @@ public class NccToImage implements IHttpServletAdaptor {
 				   PuPrintinfo.setNodeKey(NodeKey);   
 				   printEntry.exportPdf(getPrintService(PuPrintinfo).getDataSources(PuPrintinfo), PrintTemplateID, print);
 				  };
+			if (PrintServiceModule.equals("ic")) {
+					IcPrintinfo.setAppcode(appcode);
+					IcPrintinfo.setIds(new String[] { Oids });
+					IcPrintinfo.setNodeKey("print");
+					NCClass printServiceClazz = new NCClass();
+					printServiceClazz.setModule(PrintServiceModule);
+					printServiceClazz.setName(PrintServiceName);
+					IcPrintinfo.setPrintServiceClazz(printServiceClazz);
+					IcPrintinfo.setPrintTemplateID(PrintTemplateID);
+					//IcPrintinfo.setNodeKey(NodeKey);   
+					printEntry.exportPdf(getPrintService(IcPrintinfo).getDataSources(IcPrintinfo), PrintTemplateID, print);
+				};
 			// 下载输出
 			
-			
+				  
 			InputStream in = new ByteArrayInputStream(print.toByteArray());
 			PrintWriter out = null;
 			try {
@@ -159,66 +162,51 @@ public class NccToImage implements IHttpServletAdaptor {
 					out.close();
 				}
 			}
-			
-			result.setCode(IReturnStatus.SUCCEED);// 成功
-			result.setMessage("打开成功");
-			createResultEsbVO(esb);
-			esb.setResultInfo(result);
 		} catch (Exception e) {
 			// TODO Auto-generated catch block
-	
-			
 			try {
-				String err = getExceptionDetail(e);
-				
-				JSONObject errjson = new JSONObject();
-				errjson.put("err", err);
-				result.setCode(IReturnStatus.ERROR);// 异常
-				result.setError(errjson.toString());
-				result.setMessage(result.getError());
-				createResultEsbVO(esb);// 初始化响应对象
-				esb.getEsbInfo().setReturnStatus(IReturnStatus.ESB_ERROR);
-				esb.getEsbInfo().setReturnMsg("异常");
-				esb.setResultInfo(result);// 设置响应内容
-				NCLocator.getInstance().lookup(IinsertLog_RequiresNew.class).insertImageLog_RequiresNew(Oids, appcode, null,  errjson, "IMAGE_NCCFM_VIEW");
-			
+				String a   =getExceptionDetail(e);
+				JSONObject err = new JSONObject();
+				err.put("err", a);
+				insertImageLog(Oids, appcode, null,  err, "IMAGE_NCCFM_VIEW");
 			} catch (BusinessException e1) {
 				// TODO Auto-generated catch block
-				JSONObject errjson = new JSONObject();
-				errjson.put("err", e1);
-				result.setCode(IReturnStatus.ERROR);// 异常
-				result.setError(errjson.toString());
-				result.setMessage(result.getError());
-				createResultEsbVO(esb);// 初始化响应对象
-				esb.getEsbInfo().setReturnStatus(IReturnStatus.ESB_ERROR);
-				esb.getEsbInfo().setReturnMsg("异常");
-				esb.setResultInfo(result);// 设置响应内容
+				e1.printStackTrace();
 			}
-		}finally {
-			rsdata = com.alibaba.fastjson.JSONObject.toJSONString(esb);
-			sendResponse(response, rsdata);
 		}
 	}
 	//登陆信息
-	private void initInvocationInfo() throws BusinessException {
+	private void initInvocationInfo() {
 		try {
+			IBusiCenterManageService busiCenterManageService=NCLocator.getInstance().lookup(IBusiCenterManageService.class);
+			String[] datasources=busiCenterManageService.getAvailableBusiCenterDsNames();
+			//由于UAT环境与生产的数据源不一致
+			String ds="NCCDATA";//生产环境数据源:NCCDATA
+			for (int i = 0; i < datasources.length; i++) {
+				if (datasources[i].equals("NCCDATA"))
+				{
+					ds="NCCDATA";
+					break;
+				}
+					else
+						ds="ncclcdata";//连测环境数据源:ncclcdata
+			}
+			InvocationInfoProxy.getInstance().setUserDataSource(ds);
 			//InvocationInfoProxy.getInstance().setGroupId(SysInitQuery.getParaString("GLOBLE00000000000000", "GROUP"));
 			//InvocationInfoProxy.getInstance().setUserId(SysInitQuery.getParaString("GLOBLE00000000000000", "ITFUSER"));
-			 InputStream in = NccToImage.class.getResourceAsStream("login_message.properties");
-	         BufferedReader bf = new BufferedReader(new InputStreamReader(in));
-	         _prop.load(bf);
-	         //IBusiCenterManageService busiCenterManageService=NCLocator.getInstance().lookup(IBusiCenterManageService.class);
-//	        InvocationInfoProxy.getInstance().setUserDataSource(busiCenterManageService.getAvailableBusiCenterDsNames()[0]);
-	        InvocationInfoProxy.getInstance().setUserDataSource( _prop.getProperty("userDataSource") );	
-	        InvocationInfoProxy.getInstance().setGroupId(_prop.getProperty("pkGroup"));
-			InvocationInfoProxy.getInstance().setUserId(_prop.getProperty("userId"));
+//			 InputStream in = NccToImage.class.getResourceAsStream("login_message.properties");
+//	         BufferedReader bf = new BufferedReader(new InputStreamReader(in));
+//	         _prop.load(bf);
+//			InvocationInfoProxy.getInstance().setGroupId(_prop.getProperty("pkGroup"));
+//			InvocationInfoProxy.getInstance().setUserId(_prop.getProperty("userId"));
+			InvocationInfoProxy.getInstance().setGroupId("0001H810000000000HS2");
+			InvocationInfoProxy.getInstance().setUserId("NC_USER0000000000000");
 			ISecurityTokenCallback tc = NCLocator.getInstance().lookup(ISecurityTokenCallback.class);
 			byte[] token = tc.token("__system".getBytes(), "NC".getBytes());
 			NetStreamContext.setToken(token);
 		} catch (Exception e) {
 			// TODO Auto-generated catch block
-			throw new BusinessException(e.getMessage());
-			
+			ExceptionUtils.wrapBusinessException(e.getMessage());
 		}
 	}
 
@@ -226,9 +214,8 @@ public class NccToImage implements IHttpServletAdaptor {
 	 * 获取打印服务    
 	 * @param info
 	 * @return
-	 * @throws BusinessException 
 	 */
-	private AbstractPrintService getPrintService(IPrintInfo info) throws BusinessException {
+	private AbstractPrintService getPrintService(IPrintInfo info) {
 		Object instance = null;
 		try {
 			Class<?> clazz = info.getPrintServiceClazz().load();
@@ -242,7 +229,7 @@ public class NccToImage implements IHttpServletAdaptor {
 			service = (AbstractPrintService) instance;
 
 		} else {
-			throw new BusinessException("找不到打印服务!");
+			ExceptionUtils.wrapBusinessException("找不到打印服务!");
 		}
 
 		return service;
@@ -282,47 +269,20 @@ public class NccToImage implements IHttpServletAdaptor {
         return stringBuffer.toString();  
     }
 	
-	
-	/**
-	 * 生成ESB响应对象
-	 * @param esb
-	 */
-	public static void createResultEsbVO(ResultEsbVO esb){
-		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
-		EsbInfoVO esbInfo=new EsbInfoVO();
-		QueryInfoVO queryInfo=new QueryInfoVO();
-		Date date=Calendar.getInstance().getTime();//获取当前时间
-		//设置响应时间
-		esbInfo.setInstId(UUID.randomUUID().toString());//使用UUID作为流水号
-		esbInfo.setRequestTime(dateFormat.format(Calendar.getInstance().getTime()));//设置请求开始时间
-		esbInfo.setResponseTime(dateFormat.format(date));//设置响应时间
-		esbInfo.setReturnStatus(IReturnStatus.ESB_SUCCEED);//默认响应成功
-		esbInfo.setReturnCode(IReturnStatus.ESB_SUCCEED_CODE);//默认成功code
-		esbInfo.setReturnMsg("成功");//默认响应成功提示
-		esb.setEsbInfo(esbInfo);
-		esb.setQueryInfo(queryInfo);
-	}
-	
-	
-
-	/**
-	 * 发送响应信息
-	 * @param response
-	 * @param esb
-	 */
-	private void sendResponse(final HttpServletResponse response, String jsondata) {
-		PrintWriter out = null;
-		try {
-			response.setHeader("Content-type", "application/json;charset=UTF-8");
-			out = new PrintWriter(new OutputStreamWriter(response.getOutputStream(), "UTF-8"));
-			out.write(jsondata);
-			out.flush();
-		} catch (IOException e) {
-			e.printStackTrace();
-		} finally {
-			if (out != null) {
-				out.close();
-			}
+	public void insertImageLog(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");
 		}
+		// 插入日志表
+		new BaseDAO().insertVO(log);
 	}
 }