欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

导出2

程序员文章站 2022-07-09 15:50:01
...
	@RequestMapping(value = "/export")
	@SkipAutoHandleReturnMsg
	public void export(@RequestBody Map<String, Object> params) {
		try {

			if(params.get("sum") == null ) {
				throw new BizException("请按照查询结果再做导出数据,不允许无条件导出。");
			}
			int sum = (int)params.get("sum");//经过条件筛选查询出来的总数据量sum
			logger.info("导出数量为:*******"+sum+"条******************** ");
			String tableName = (String) params.get("cdVal");
			if(null==tableName || tableName.length()==0 || tableName.equals("")){
				throw new BizException("未传入表名");
			}
			Object daDt=params.get("dataDt");
			SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
			if (daDt!=null){
				params.put("dataDt",simpleDateFormat.parse(daDt.toString()));
			}
			if(sum>500000){
				sum = 500000;
			}
			int pageSize = 10000;
			int count = (sum / pageSize)+1;
			params.put("pageSize",pageSize);
			CountDownLatch latch = new CountDownLatch(count);
			Map<String,StringBuffer> strMap = new Hashtable<>();
			Map<String, String> curCdMap = ListUtil.toMap(ti9vBcurBaseInfService.queryListAll(), TI9vBCurBaseInf::getCurCd, TI9vBCurBaseInf::getCurCnDesc);
			for (int i = 0; i < count; i++) {
				Map<String, Object> xparms = new HashMap<>();
				int pageNum = i+1;
				System.out.println(pageNum +"=============================================================================================");
				threadPoolExecutor.execute(() -> {
					long startTime = System.currentTimeMillis();
					try {
						xparms.putAll(params);
						xparms.put("pageNum",pageNum);
						StringBuffer strout = new StringBuffer();
						switch (tableName) {
							case ZConstUtils.netProdTyp://净值型理财产品
								PageInfo<TI9vBFinProductNet>netProdTyp01 = tI9vBFinProductNetService.queryPageByMap(xparms, (Integer) xparms.get("pageNum"), (Integer) xparms.get("pageSize"));

							case ZConstUtils.nonetProdTyp02:
								PageInfo<TI9vBFinProductNonet>pagenonetTyp02 = tI9vBFinProductNonetService.queryPageByMap(xparms, (Integer) xparms.get("pageNum"), (Integer) xparms.get("pageSize"));
								for(TI9vBFinProductNonet item : pagenonetTyp02.getList()){
									strout.append(daDt.toString()+PubConstUtils.CUT);
									strout.append(PubConstUtils.toU(item.getDubilId())+PubConstUtils.CUT);
									strout.append("类信贷估值资产"+PubConstUtils.CUT);
									strout.append(PubConstUtils.toU(item.getContrId())+PubConstUtils.CUT);
									strout.append(PubConstUtils.toU(item.getCustId())+PubConstUtils.CUT);
									strout.append(item.getCustNm()+PubConstUtils.CUT);
									strout.append(item.getIssuerRateLvl()+PubConstUtils.CUT);
									strout.append(PubConstUtils.toU(item.getOrgId())+PubConstUtils.CUT);
									strout.append(item.getOrgNm()+PubConstUtils.CUT);
									strout.append(PubConstUtils.toU(item.getCoreProdCd())+PubConstUtils.CUT);
									strout.append(item.getCoreProdNm()+PubConstUtils.CUT);
									strout.append(PubConstUtils.toU(item.getAcctiSubj())+PubConstUtils.CUT);
									strout.append(item.getAcctiThreeCls()+PubConstUtils.CUT);
									strout.append(item.getDubilAmt()+PubConstUtils.CUT);
									strout.append(item.getDubilBal()+PubConstUtils.CUT);
									strout.append(curCdMap.get(item.getCurCd())+PubConstUtils.CUT);
									strout.append(item.getProspPrftRate()+PubConstUtils.CUT);
									if(null!=item.getStIntDay()){

										strout.append(DateUtil.dateToString2(item.getStIntDay())+PubConstUtils.CUT);
									}else{
										strout.append(""+PubConstUtils.CUT);
									}

									if(null!=item.getMatrDay()){
										strout.append(DateUtil.dateToString2(item.getMatrDay())+PubConstUtils.CUT);
									}else{
										strout.append(""+PubConstUtils.CUT);
									}

									if(null!=item.getAdjRepayDt()){
										strout.append(DateUtil.dateToString2(item.getAdjRepayDt())+PubConstUtils.CUT);
									}else{
										strout.append(""+PubConstUtils.CUT);
									}

									if(null!=item.getTxDt()){
										strout.append(DateUtil.dateToString2(item.getTxDt())+PubConstUtils.CUT);
									}else{
										strout.append(""+PubConstUtils.CUT);
									}

									strout.append(item.getTxPrc()+PubConstUtils.CUT);
									strout.append(item.getRepayModeCd()+PubConstUtils.CUT);
									strout.append(item.getRepayPlanMakeMode()+PubConstUtils.CUT);
									strout.append(item.getIntMode()+PubConstUtils.CUT);
									strout.append(item.getIntPayFrq()+PubConstUtils.CUT);
									strout.append(item.getIntCreateRule()+PubConstUtils.CUT);
									strout.append(item.getWorkUpdateRule()+PubConstUtils.CUT);
									strout.append(item.getAccureBasic()+PubConstUtils.CUT);
									strout.append(item.getRecStat()+PubConstUtils.CUT);
									strout.append(item.getOvrdIntBal()+PubConstUtils.CUT);
									strout.append(item.getNormDebtIntBal()+PubConstUtils.CUT);
									strout.append(item.getInBalPnshIntBal()+PubConstUtils.CUT);
									strout.append(item.getPrepAmtblIntIncom()+PubConstUtils.CUT);
									strout.append(item.getPrepStlRecvblInt()+PubConstUtils.CUT);
									strout.append(item.getPrepStlRecvblPnshInt()+PubConstUtils.CUT);
									strout.append(item.getSrcSys()+"\n");
								}
								break;
							case ZConstUtils.billDisProdTyp:                                //票据转贴现(有问题)T_I9V_B_BILL_DISCOUNT
								PageInfo<TI9vBBillDiscount> pagebillDis = tI9vBBillDiscountService.queryPageByMap(
										xparms,
										(Integer) xparms.get("pageNum"),
										(Integer) xparms.get("pageSize")
								);
								for(TI9vBBillDiscount item : pagebillDis.getList()){
									strout.append(daDt.toString()+PubConstUtils.CUT);
//									strout.append(item.getBankNum()+PubConstUtils.CUT);
									strout.append(PubConstUtils.toU(item.getDubilId())+PubConstUtils.CUT);
//									strout.append(item.getDubilModfr()+PubConstUtils.CUT);
									strout.append("票据转贴现"+PubConstUtils.CUT);
//									strout.append(item.getAgmtId()+PubConstUtils.CUT);
//									strout.append(item.getDubilOrdrNum()+PubConstUtils.CUT);
									strout.append(PubConstUtils.toU(item.getBillNum())+PubConstUtils.CUT);
									strout.append(PubConstUtils.toU(item.getContrId())+PubConstUtils.CUT);
									strout.append(PubConstUtils.toU(item.getCustId())+PubConstUtils.CUT);
									strout.append(item.getCustNm()+PubConstUtils.CUT);
									strout.append(PubConstUtils.toU(item.getOrgId())+PubConstUtils.CUT);
									strout.append(item.getOrgNm()+PubConstUtils.CUT);
									strout.append(PubConstUtils.toU(item.getCoreProdCd())+PubConstUtils.CUT);
									strout.append(item.getCoreProdNm()+PubConstUtils.CUT);
									strout.append(PubConstUtils.toU(item.getAcctiSubj())+PubConstUtils.CUT);
									strout.append(item.getAcctiThreeCls()+PubConstUtils.CUT);
									strout.append(curCdMap.get(item.getCurCd())+PubConstUtils.CUT);
									strout.append(item.getDubilAmt()+PubConstUtils.CUT);
									strout.append(item.getDubilBal()+PubConstUtils.CUT);
									strout.append(item.getProspPrftRate()+PubConstUtils.CUT);
									if(null!=item.getStIntDay()){
										strout.append(simpleDateFormat.format(item.getStIntDay())+PubConstUtils.CUT);
									}else{
										strout.append(""+PubConstUtils.CUT);
									}

									if(null!=item.getMatrDay()){
										strout.append(simpleDateFormat.format(item.getMatrDay())+PubConstUtils.CUT);
									}else{
										strout.append(""+PubConstUtils.CUT);
									}
									if(null!=item.getTxDt()){
										strout.append(simpleDateFormat.format(item.getTxDt())+PubConstUtils.CUT);
									}else{
										strout.append(""+PubConstUtils.CUT);
									}
									strout.append(item.getTxPrc()+PubConstUtils.CUT);
									strout.append(item.getRepayPlanMakeMode()+PubConstUtils.CUT);
									strout.append(item.getIntPayFrq()+PubConstUtils.CUT);
									strout.append(item.getIntMode()+PubConstUtils.CUT);
									strout.append(item.getIntCreateRule()+PubConstUtils.CUT);
									strout.append(item.getWorkUpdateRule()+PubConstUtils.CUT);
									strout.append(item.getAccureBasic()+PubConstUtils.CUT);
									strout.append(item.getRecStat()+PubConstUtils.CUT);
									strout.append(item.getOvrdIntBal()+PubConstUtils.CUT);
									strout.append(item.getNormDebtIntBal()+PubConstUtils.CUT);
									strout.append(item.getInBalPnshIntBal()+PubConstUtils.CUT);
									strout.append(item.getPrepAmtblIntIncom()+PubConstUtils.CUT);
									strout.append(item.getPrepStlRecvblInt()+PubConstUtils.CUT);
									strout.append(item.getPrepStlRecvblPnshInt()+PubConstUtils.CUT);
									strout.append(item.getSrcSys()+"\n");
								}
								break;
						}
						strMap.put(pageNum+"",strout);
					} catch (Exception e) {
						e.printStackTrace();
						throw new BizException("拼数据异常:"+e.getMessage());
					}finally{
						long endTime = System.currentTimeMillis();
						logger.info("打开"+pageNum+"号栅栏:**********用时:"+ (endTime - startTime) + "ms***************** ");
						latch.countDown();
					}
				});
			}


			latch.await();
			logger.info("拼数据结束:*************************** ");
			if (strMap.size()==0){
				throw new BizException("数据为空");
			}
			if(ZConstUtils.nonetProdTyp02.equals(tableName)) {
				strMap.put("0",new StringBuffer("数据日期"+PubConstUtils.CUT+"借据号"+PubConstUtils.CUT+"产品类型"+PubConstUtils.CUT+"合同编号"+PubConstUtils.CUT+"客户编号"+PubConstUtils.CUT+"客户名称"+PubConstUtils.CUT+"客户内部评级"+PubConstUtils.CUT+"机构编号"+PubConstUtils.CUT+"机构名称"+PubConstUtils.CUT+"核心产品代码"+PubConstUtils.CUT+"核心产品名称"+PubConstUtils.CUT+"会计科目"+PubConstUtils.CUT+"会计三分类"+PubConstUtils.CUT+"借据金额"+PubConstUtils.CUT+"借据余额"+PubConstUtils.CUT+"币种代码"+PubConstUtils.CUT+"预期收益率"+PubConstUtils.CUT+"起息日"+PubConstUtils.CUT+"到期日"+PubConstUtils.CUT+"调整还款日"+PubConstUtils.CUT+"交易日期"+PubConstUtils.CUT+"交易价格"+PubConstUtils.CUT+"还款方式代码"+PubConstUtils.CUT+"还款计划生成方式"+PubConstUtils.CUT+"计息方式"+PubConstUtils.CUT+"付息频率"+PubConstUtils.CUT+"计息区间生成规则"+PubConstUtils.CUT+"工作日调整规则"+PubConstUtils.CUT+"日算惯例"+PubConstUtils.CUT+"借据状态"+PubConstUtils.CUT+"逾期利息余额"+PubConstUtils.CUT+"正常欠息余额"+PubConstUtils.CUT+"表内罚息余额"+PubConstUtils.CUT+"待摊利息收入"+PubConstUtils.CUT+"待结应收利息"+PubConstUtils.CUT+"待结应收罚息"+PubConstUtils.CUT+"来源系统\n"));
				sysTabsService.exportCsv(this.getResponse(),"非净值型保本浮动收益型理财产品",strMap,count);
			}else if(ZConstUtils.billDisProdTyp.equals(tableName)){
				strMap.put("0",new StringBuffer("数据日期"+PubConstUtils.CUT+"借据号"+PubConstUtils.CUT+"产品类型"+PubConstUtils.CUT+"票据号"+PubConstUtils.CUT+"合同编号"+PubConstUtils.CUT+"客户编号"+PubConstUtils.CUT+"客户名称"+PubConstUtils.CUT+"机构编号"+PubConstUtils.CUT+"机构名称"+PubConstUtils.CUT+"核心产品代码"+PubConstUtils.CUT+"核心产品名称"+PubConstUtils.CUT+"会计科目"+PubConstUtils.CUT+"会计三分类"+PubConstUtils.CUT+"币种代码"+PubConstUtils.CUT+"借据金额"+PubConstUtils.CUT+"借据余额"+PubConstUtils.CUT+"预期收益率"+PubConstUtils.CUT+"起息日"+PubConstUtils.CUT+"到期日"+PubConstUtils.CUT+"交易日期"+PubConstUtils.CUT+"交易价格"+PubConstUtils.CUT+"还款计划生成方式"+PubConstUtils.CUT+"付息频率"+PubConstUtils.CUT+"计息方式"+PubConstUtils.CUT+"计息区间生成规则"+PubConstUtils.CUT+"工作日调整规则"+PubConstUtils.CUT+"日算惯例"+PubConstUtils.CUT+"借据状态"+PubConstUtils.CUT+"逾期利息余额"+PubConstUtils.CUT+"正常欠息余额"+PubConstUtils.CUT+"表内罚息余额"+PubConstUtils.CUT+"待摊利息收入"+PubConstUtils.CUT+"待结应收利息"+PubConstUtils.CUT+"待结应收罚息"+PubConstUtils.CUT+"来源系统\n"));
				sysTabsService.exportCsv(this.getResponse(),"票据转贴现",strMap,count);
			}
		} catch (Exception e) {
			e.printStackTrace();
			logger.info(e.getMessage());
			throw new BizException("导出失败:"+e.getMessage());
		}
	}

 

相关标签: 导出