|
@@ -0,0 +1,215 @@
|
|
|
+package nc.bs.gl.addvoucher;
|
|
|
+
|
|
|
+import java.io.ByteArrayOutputStream;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+import javax.xml.transform.Transformer;
|
|
|
+import javax.xml.transform.TransformerConfigurationException;
|
|
|
+import javax.xml.transform.TransformerException;
|
|
|
+import javax.xml.transform.TransformerFactory;
|
|
|
+import javax.xml.transform.TransformerFactoryConfigurationError;
|
|
|
+import javax.xml.transform.dom.DOMSource;
|
|
|
+import javax.xml.transform.stream.StreamResult;
|
|
|
+
|
|
|
+import nc.bs.dao.BaseDAO;
|
|
|
+import nc.bs.dao.DAOException;
|
|
|
+import nc.bs.ncsendnc.util.MyPostFile;
|
|
|
+import nc.jdbc.framework.processor.MapListProcessor;
|
|
|
+import nc.vo.jcom.xml.XMLUtil;
|
|
|
+import nc.vo.pub.BusinessException;
|
|
|
+import nc.vo.pub.lang.UFDateTime;
|
|
|
+
|
|
|
+import org.w3c.dom.Document;
|
|
|
+import org.w3c.dom.Element;
|
|
|
+
|
|
|
+public class QueryDataMakeVoucher {
|
|
|
+
|
|
|
+ private BaseDAO baseDao = null;
|
|
|
+ public BaseDAO getBaseDao() {
|
|
|
+ if (this.baseDao == null) {
|
|
|
+ this.baseDao = new BaseDAO();
|
|
|
+ }
|
|
|
+ return this.baseDao;
|
|
|
+ }
|
|
|
+
|
|
|
+public void makevoucher() throws BusinessException{
|
|
|
+ String nowts = new UFDateTime(System.currentTimeMillis()).toString();
|
|
|
+ List<Map<String, Object>> dztzlist = getdztz(nowts.substring(0, 10));
|
|
|
+ if (dztzlist != null && dztzlist.size() > 0) {
|
|
|
+ for (Map<String, Object> data : dztzlist) {
|
|
|
+ String corpname=String.valueOf(data.get("oppunitname"));//对方单位名称
|
|
|
+ String oppbankaccount=String.valueOf(data.get("oppbankaccount"));//对方单位银行账户
|
|
|
+ String oppunitname=String.valueOf(data.get("oppunitname"))+"定时归集至现金池账户";//对方单位名称拼接备注
|
|
|
+ String custcode=String.valueOf(data.get("custcode"));
|
|
|
+ String moneyy=String.valueOf(data.get("moneyy"));
|
|
|
+ String pk_informer=String.valueOf(data.get("pk_informer"));//到账通知主键
|
|
|
+ Document doc = getXmlData(custcode,moneyy,oppunitname,corpname,oppbankaccount);
|
|
|
+// String sendurl = "http://172.16.10.175:8088/service/XChangeServlet?account=01&groupcode=00";// 测试环境
|
|
|
+ String sendurl = "http://172.16.0.177:9088/service/XChangeServlet?account=01&groupcode=00";// 正式环境
|
|
|
+ MyPostFile.sendMyDocument(doc, sendurl, "UTF-8");
|
|
|
+ updateSign(pk_informer);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+private Document getXmlData(String custcode,String money,String oppunitname,String corpname,String oppbankaccount) throws BusinessException {
|
|
|
+ // TODO 自动生成的方法存根
|
|
|
+ String nowts = new UFDateTime(System.currentTimeMillis()).toString();
|
|
|
+// String nowts ="2020-01-06 17:24:00";
|
|
|
+ Document doc = XMLUtil.getDocumentBuilder().newDocument();
|
|
|
+ // 不显示standalone="no"
|
|
|
+ doc.setXmlStandalone(true);
|
|
|
+ Element ufinterface = doc.createElement("ufinterface");
|
|
|
+ ufinterface.setAttribute("sender", "addVoucher");//发送发编码
|
|
|
+ ufinterface.setAttribute("account", "01");//账套编码
|
|
|
+ ufinterface.setAttribute("groupcode", "00");
|
|
|
+ ufinterface.setAttribute("billtype", "vouchergl");
|
|
|
+
|
|
|
+
|
|
|
+ Element assjie = doc.createElement("ass");
|
|
|
+ Element assdai = doc.createElement("ass");
|
|
|
+ Element assitemjie = doc.createElement("item");
|
|
|
+ //assitemjie创建子元素,添加数据值
|
|
|
+ Element pk_Checktype=doc.createElement("pk_Checktype"); pk_Checktype.setTextContent("0011"); assitemjie.appendChild(pk_Checktype);
|
|
|
+ Element pk_Checkvalue=doc.createElement("pk_Checkvalue"); pk_Checkvalue.setTextContent("310066179018170265589"); assitemjie.appendChild(pk_Checkvalue);
|
|
|
+// Element pk_Checkvalue=doc.createElement("checkvaluecode"); pk_Checkvalue.setTextContent("310066179018170265589"); assitemjie.appendChild(pk_Checkvalue);
|
|
|
+ assjie.appendChild(assitemjie);
|
|
|
+ Element assitemdai = doc.createElement("item");
|
|
|
+ //assitemdai创建子元素,添加数据值
|
|
|
+ if("上海天华建筑设计有限公司".equals(corpname)){
|
|
|
+ Element pk_Checktypedai=doc.createElement("pk_Checktype"); pk_Checktypedai.setTextContent("0011"); assitemdai.appendChild(pk_Checktypedai);
|
|
|
+ Element pk_Checkvaluedai=doc.createElement("pk_Checkvalue"); pk_Checkvaluedai.setTextContent(oppbankaccount); assitemdai.appendChild(pk_Checkvaluedai);
|
|
|
+ }else{
|
|
|
+ Element pk_Checktypedai=doc.createElement("pk_Checktype"); pk_Checktypedai.setTextContent("0004"); assitemdai.appendChild(pk_Checktypedai);
|
|
|
+ Element pk_Checkvaluedai=doc.createElement("pk_Checkvalue"); pk_Checkvaluedai.setTextContent(custcode); assitemdai.appendChild(pk_Checkvaluedai);
|
|
|
+// Element pk_Checkvaluedai=doc.createElement("checkvaluecode"); pk_Checkvaluedai.setTextContent(daibanknum); assitemdai.appendChild(pk_Checkvaluedai);
|
|
|
+ }
|
|
|
+ assdai.appendChild(assitemdai);
|
|
|
+
|
|
|
+ Element details = doc.createElement("details");
|
|
|
+ Element itemjie = doc.createElement("item");
|
|
|
+ //itemjie创建子元素,添加数据值
|
|
|
+ Element detailindex=doc.createElement("detailindex"); detailindex.setTextContent("1"); itemjie.appendChild(detailindex);
|
|
|
+ Element accsubjcode=doc.createElement("accsubjcode"); accsubjcode.setTextContent("1002"); itemjie.appendChild(accsubjcode);
|
|
|
+ Element explanation=doc.createElement("explanation"); explanation.setTextContent(oppunitname); itemjie.appendChild(explanation);
|
|
|
+ Element excrate2=doc.createElement("excrate2"); excrate2.setTextContent("1"); itemjie.appendChild(excrate2);
|
|
|
+ Element excrate3=doc.createElement("excrate3"); excrate3.setTextContent("1"); itemjie.appendChild(excrate3);
|
|
|
+ Element excrate4=doc.createElement("excrate4"); excrate4.setTextContent("1"); itemjie.appendChild(excrate4);
|
|
|
+ Element debitamount=doc.createElement("debitamount"); debitamount.setTextContent(money); itemjie.appendChild(debitamount);
|
|
|
+ Element groupdebitamount=doc.createElement("groupdebitamount"); groupdebitamount.setTextContent(money); itemjie.appendChild(groupdebitamount);
|
|
|
+ Element globaldebitamount=doc.createElement("globaldebitamount"); globaldebitamount.setTextContent(money); itemjie.appendChild(globaldebitamount);
|
|
|
+ Element localdebitamount=doc.createElement("localdebitamount"); localdebitamount.setTextContent(money); itemjie.appendChild(localdebitamount);
|
|
|
+ Element pk_currtype=doc.createElement("pk_currtype"); pk_currtype.setTextContent("CNY"); itemjie.appendChild(pk_currtype);
|
|
|
+ Element pk_accasoa=doc.createElement("pk_accasoa"); pk_accasoa.setTextContent("1002"); itemjie.appendChild(pk_accasoa);
|
|
|
+ itemjie.appendChild(assjie);
|
|
|
+ details.appendChild(itemjie);
|
|
|
+
|
|
|
+ Element itemdai = doc.createElement("item");
|
|
|
+ //itemjdai创建子元素,添加数据值
|
|
|
+ Element detailindexdai=doc.createElement("detailindex"); detailindexdai.setTextContent("2"); itemdai.appendChild(detailindexdai);
|
|
|
+ if("上海天华建筑设计有限公司".equals(corpname)){
|
|
|
+ Element accsubjcodedai=doc.createElement("accsubjcode"); accsubjcodedai.setTextContent("1002");itemdai.appendChild(accsubjcodedai);
|
|
|
+ }else{
|
|
|
+ Element accsubjcodedai=doc.createElement("accsubjcode"); accsubjcodedai.setTextContent("22410401");itemdai.appendChild(accsubjcodedai);
|
|
|
+ }
|
|
|
+ Element explanationdai=doc.createElement("explanation"); explanationdai.setTextContent(oppunitname);itemdai.appendChild(explanationdai);
|
|
|
+ Element excrate2dai=doc.createElement("excrate2"); excrate2dai.setTextContent("1"); itemdai.appendChild(excrate2dai);
|
|
|
+ Element excrate3dai=doc.createElement("excrate3"); excrate3dai.setTextContent("1"); itemdai.appendChild(excrate3dai);
|
|
|
+ Element excrate4dai=doc.createElement("excrate4"); excrate4dai.setTextContent("1"); itemdai.appendChild(excrate4dai);
|
|
|
+ Element creditamount=doc.createElement("creditamount"); creditamount.setTextContent(money); itemdai.appendChild(creditamount);
|
|
|
+ Element groupcreditamount=doc.createElement("groupcreditamount"); groupcreditamount.setTextContent(money); itemdai.appendChild(groupcreditamount);
|
|
|
+ Element localcrditamount=doc.createElement("localcreditamount"); localcrditamount.setTextContent(money); itemdai.appendChild(localcrditamount);
|
|
|
+ Element globaleditamount=doc.createElement("globalcreditamount"); globaleditamount.setTextContent(money); itemdai.appendChild(globaleditamount);
|
|
|
+ Element pk_currtypedai=doc.createElement("pk_currtype"); pk_currtypedai.setTextContent("CNY");itemdai.appendChild(pk_currtypedai);
|
|
|
+ if("上海天华建筑设计有限公司".equals(corpname)){
|
|
|
+ Element pk_accasoadai=doc.createElement("pk_accasoa"); pk_accasoadai.setTextContent("1002");itemdai.appendChild(pk_accasoadai);
|
|
|
+ }else{
|
|
|
+ Element pk_accasoadai=doc.createElement("pk_accasoa"); pk_accasoadai.setTextContent("22410401");itemdai.appendChild(pk_accasoadai);
|
|
|
+ }
|
|
|
+ itemdai.appendChild(assdai);
|
|
|
+ details.appendChild(itemdai);
|
|
|
+
|
|
|
+ Element voucher = doc.createElement("voucher");
|
|
|
+ Element voucher_head = doc.createElement("voucher_head");
|
|
|
+ //voucher_head创建子元素,添加数据值
|
|
|
+ if("上海天华建筑设计有限公司".equals(corpname)){
|
|
|
+ Element vouchertype=doc.createElement("pk_vouchertype"); vouchertype.setTextContent("03"); voucher_head.appendChild(vouchertype);
|
|
|
+ }else {
|
|
|
+ Element vouchertype=doc.createElement("pk_vouchertype"); vouchertype.setTextContent("04"); voucher_head.appendChild(vouchertype);
|
|
|
+ }
|
|
|
+ Element system=doc.createElement("pk_system"); system.setTextContent("GL"); voucher_head.appendChild(system);
|
|
|
+ Element year=doc.createElement("year"); year.setTextContent(nowts.substring(0, 4)); voucher_head.appendChild(year);
|
|
|
+ Element voucherkind=doc.createElement("voucherkind"); voucherkind.setTextContent("0"); voucher_head.appendChild(voucherkind);
|
|
|
+ Element accountingbook=doc.createElement("pk_accountingbook"); accountingbook.setTextContent("TH0101-0002"); voucher_head.appendChild(accountingbook);
|
|
|
+ Element discardflag=doc.createElement("discardflag"); discardflag.setTextContent("N"); voucher_head.appendChild(discardflag);
|
|
|
+ Element period=doc.createElement("period"); period.setTextContent(nowts.substring(5, 7)); voucher_head.appendChild(period);
|
|
|
+ Element prepareddate=doc.createElement("prepareddate"); prepareddate.setTextContent(nowts); voucher_head.appendChild(prepareddate);
|
|
|
+ Element pk_prepared=doc.createElement("pk_prepared"); pk_prepared.setTextContent("liyupeng"); voucher_head.appendChild(pk_prepared);
|
|
|
+ Element billmaker=doc.createElement("billmaker"); billmaker.setTextContent("liyupeng"); voucher_head.appendChild(billmaker);
|
|
|
+ Element signflag=doc.createElement("signflag"); signflag.setTextContent("N"); voucher_head.appendChild(signflag);
|
|
|
+ Element pk_org=doc.createElement("pk_org"); pk_org.setTextContent("000101"); voucher_head.appendChild(pk_org);
|
|
|
+ Element pk_group=doc.createElement("pk_group"); pk_group.setTextContent("00"); voucher_head.appendChild(pk_group);
|
|
|
+ voucher_head.appendChild(details);
|
|
|
+ voucher.appendChild(voucher_head);
|
|
|
+
|
|
|
+ ufinterface.appendChild(voucher);
|
|
|
+ doc.appendChild(ufinterface);
|
|
|
+// String dataXmlStr = chgXml2Str(doc,"gb2312");
|
|
|
+ return doc;
|
|
|
+}
|
|
|
+
|
|
|
+//查询到账通知消息
|
|
|
+private List<Map<String, Object>> getdztz(String date) throws BusinessException {
|
|
|
+ String sql ="select bd_customer.code custcode, cmp_informer.moneyy moneyy ,cmp_informer.oppbankaccount oppbankaccount"+
|
|
|
+ ", cmp_informer.oppunitname oppunitname ,cmp_informer.pk_informer pk_informer \n" +
|
|
|
+ " from cmp_informer cmp_informer\n" +
|
|
|
+ " left join bd_customer bd_customer\n" +
|
|
|
+ " on cmp_informer.pk_oppunit = bd_customer.pk_customer\n" +
|
|
|
+ "where (1 = 1 and cmp_informer.pk_acc_sub = '1001C010000000004T6U'\n" +
|
|
|
+ "and cmp_informer.direction = 'receivemoney'\n" +
|
|
|
+ " and cmp_informer.memo = '定时归集')\n" +
|
|
|
+ " and nvl(cmp_informer.dr, 0) = 0"+
|
|
|
+ " and( cmp_informer.vouchflag is null or cmp_informer.vouchflag=1) "+
|
|
|
+ " and (infodate like '"+date+"%')";
|
|
|
+/* String sql="select cmp_informer.oppbankaccount dfbanknum, cmp_informer.moneyy moneyy\n" +
|
|
|
+ " from cmp_informer cmp_informer where nvl(cmp_informer.dr, 0) = 0 and cmp_informer.pk_informer='0001A8100000007GSAEZ'";*/
|
|
|
+ List<Map<String,Object>> dztzList = new ArrayList<Map<String,Object>>();
|
|
|
+ try {
|
|
|
+ dztzList = (List<Map<String, Object>>)getBaseDao().executeQuery(sql, new MapListProcessor());
|
|
|
+ } catch (DAOException e) {
|
|
|
+ throw new BusinessException("根据到账通知日期查询数据发生异常!");
|
|
|
+ }
|
|
|
+ return dztzList;
|
|
|
+ }
|
|
|
+
|
|
|
+//更新制证标志
|
|
|
+private void updateSign(String pk_informer) throws DAOException {
|
|
|
+ // TODO 自动生成的方法存根
|
|
|
+ String sql ="update cmp_informer set vouchflag ='0' where pk_informer ='"+pk_informer+"'";
|
|
|
+ getBaseDao().executeUpdate(sql);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/**作者: 时间:
|
|
|
+ * <H3>方法作用</H3>XML转成XMLSTR<BR>
|
|
|
+ * @param doc
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+public String chgXml2Str(Document doc, String encoding) throws BusinessException {
|
|
|
+ try {
|
|
|
+ TransformerFactory tf = TransformerFactory.newInstance();
|
|
|
+ Transformer t = tf.newTransformer();
|
|
|
+ t.setOutputProperty("encoding", encoding);
|
|
|
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
|
|
+ t.transform(new DOMSource(doc), new StreamResult(bos));
|
|
|
+ String xmlStr = bos.toString();
|
|
|
+ return xmlStr;
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new BusinessException();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+}
|