8 changed files with 677 additions and 0 deletions
@ -0,0 +1,179 @@ |
|||||
|
package com.hxjt.dataupload.jobhandler.doubleprevent; |
||||
|
|
||||
|
import com.alibaba.fastjson.JSONObject; |
||||
|
|
||||
|
import com.github.pagehelper.PageHelper; |
||||
|
import com.github.pagehelper.PageInfo; |
||||
|
import com.hxjt.dataupload.model.entity.doubleprevent.Fxfxdx; |
||||
|
import com.hxjt.dataupload.model.entity.doubleprevent.Yhpcrw; |
||||
|
import com.hxjt.dataupload.service.FxfxdxService; |
||||
|
import com.hxjt.dataupload.utils.HttpUtils; |
||||
|
import com.xxl.job.core.context.XxlJobHelper; |
||||
|
import com.xxl.job.core.handler.annotation.XxlJob; |
||||
|
import org.apache.commons.lang3.StringUtils; |
||||
|
import org.apache.http.protocol.HTTP; |
||||
|
import org.slf4j.Logger; |
||||
|
import org.slf4j.LoggerFactory; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
import java.io.IOException; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
|
||||
|
|
||||
|
@Component |
||||
|
public class YhpcrwJobHandler { |
||||
|
|
||||
|
private Logger log = LoggerFactory.getLogger(YhpcrwJobHandler.class); |
||||
|
|
||||
|
@Autowired |
||||
|
FxfxdxService fxfxdxService; |
||||
|
|
||||
|
@XxlJob(value = "YhpcrwJobHandler", init = "init", destroy = "destroy") |
||||
|
public void execute(String param) { |
||||
|
String jobParam = XxlJobHelper.getJobParam(); |
||||
|
//PageInfo<Yhpcrw> fxgkcs = new PageInfo<>();
|
||||
|
int pageSize = 1000; |
||||
|
int success = 0; |
||||
|
int fail = 0; |
||||
|
long total = 0; |
||||
|
ArrayList<Fxfxdx> zdwxys = fxfxdxService.getZdwxys(); |
||||
|
/*if (jobParam.equals("全量")) { |
||||
|
//fxgkcs = fxfxdxService.getYhpcrws("N");
|
||||
|
}else if(jobParam.equals("每日")){*/ |
||||
|
|
||||
|
int pageNum = 1; |
||||
|
do { |
||||
|
List<Yhpcrw> onePage = new ArrayList<>(); |
||||
|
// 1. 启动分页(必须紧邻查询语句)
|
||||
|
PageHelper.startPage(pageNum, pageSize); |
||||
|
// 2. 执行查询(此时SQL已被自动拦截并添加分页逻辑)
|
||||
|
if (jobParam.equals("全量")) { |
||||
|
onePage = fxfxdxService.getOneYhpcrwsPage("N"); |
||||
|
} else { |
||||
|
onePage = fxfxdxService.getOneYhpcrwsPage("Y"); |
||||
|
} |
||||
|
|
||||
|
// 3. 封装分页结果
|
||||
|
PageInfo<Yhpcrw> pageInfo = new PageInfo<>(onePage); |
||||
|
//设置总数
|
||||
|
total = pageInfo.getTotal(); |
||||
|
|
||||
|
//对本页数据进行上传
|
||||
|
for (int x = 0; x < pageInfo.getList().size(); x++) { |
||||
|
|
||||
|
|
||||
|
if (x == pageInfo.getList().size() - 1) { |
||||
|
System.out.println("总条数:" + total); |
||||
|
System.out.println("第" + pageNum + "页"); |
||||
|
System.out.println("本页条数:" + pageInfo.getList().size()); |
||||
|
System.out.println("本页最后一条:" + pageInfo.getList().get(x).getYinhuanpaicharenwuji()); |
||||
|
|
||||
|
} |
||||
|
//在此进行上传
|
||||
|
|
||||
|
String HAZARD_NAME = pageInfo.getList().get(x).getFengxianfenxiduixian(); |
||||
|
for (int j = 0; j < zdwxys.size(); j++) { |
||||
|
String DANGESOURCE_NAME = zdwxys.get(j).getZhongdaweixianyuanmi(); |
||||
|
switch (HAZARD_NAME) { |
||||
|
case "重大危险源甲醇中间储存": |
||||
|
if (DANGESOURCE_NAME.equals("甲醇中间储存单元")) { |
||||
|
pageInfo.getList().get(x).setZhongdaweixianyuanmi(DANGESOURCE_NAME); |
||||
|
pageInfo.getList().get(x).setZhongdaweixianyuande(zdwxys.get(j).getZhongdaweixianyuande()); |
||||
|
} |
||||
|
break; |
||||
|
case "重大危险源化产油库": |
||||
|
if (DANGESOURCE_NAME.equals("化产油库区")) { |
||||
|
pageInfo.getList().get(x).setZhongdaweixianyuanmi(DANGESOURCE_NAME); |
||||
|
pageInfo.getList().get(x).setZhongdaweixianyuande(zdwxys.get(j).getZhongdaweixianyuande()); |
||||
|
} |
||||
|
break; |
||||
|
case "重大危险源甲醇储罐": |
||||
|
if (DANGESOURCE_NAME.equals("甲醇储存单元")) { |
||||
|
pageInfo.getList().get(x).setZhongdaweixianyuanmi(DANGESOURCE_NAME); |
||||
|
pageInfo.getList().get(x).setZhongdaweixianyuande(zdwxys.get(j).getZhongdaweixianyuande()); |
||||
|
} |
||||
|
break; |
||||
|
case "重大危险源空分站": |
||||
|
if (DANGESOURCE_NAME.equals("空分站单元")) { |
||||
|
pageInfo.getList().get(x).setZhongdaweixianyuanmi(DANGESOURCE_NAME); |
||||
|
pageInfo.getList().get(x).setZhongdaweixianyuande(zdwxys.get(j).getZhongdaweixianyuande()); |
||||
|
} |
||||
|
break; |
||||
|
case "重大危险源气柜储存": |
||||
|
if (DANGESOURCE_NAME.equals("气柜")) { |
||||
|
pageInfo.getList().get(x).setZhongdaweixianyuanmi(DANGESOURCE_NAME); |
||||
|
pageInfo.getList().get(x).setZhongdaweixianyuande(zdwxys.get(j).getZhongdaweixianyuande()); |
||||
|
} |
||||
|
break; |
||||
|
case "重大危险源粗苯蒸馏": |
||||
|
if (DANGESOURCE_NAME.equals("粗苯蒸馏单元")) { |
||||
|
pageInfo.getList().get(x).setZhongdaweixianyuanmi(DANGESOURCE_NAME); |
||||
|
pageInfo.getList().get(x).setZhongdaweixianyuande(zdwxys.get(j).getZhongdaweixianyuande()); |
||||
|
} |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
if ((!StringUtils.isBlank(pageInfo.getList().get(x).getZhongdaweixianyuande())) && pageInfo.getList().get(x).getZhongdaweixianyuande().length() > 2) { |
||||
|
pageInfo.getList().get(x).setZhongdaweixianyuande(pageInfo.getList().get(x).getZhongdaweixianyuande().substring(0, 2)); |
||||
|
} |
||||
|
|
||||
|
//System.out.println(fxfxdxs.get(i).toString());
|
||||
|
|
||||
|
|
||||
|
for (int i = 0; i < pageInfo.getList().size(); i++) { |
||||
|
System.out.print(i + 1 + ","); |
||||
|
String company = pageInfo.getList().get(x).getQiyemingcheng(); |
||||
|
String url = "https://www.ny-fxfk.com/space-ningyanghuagongchany/sapi/qpaas/tiga/dys/keyAuthentication/yinhuanpaicharenwu/v1/yinhuanpaicharenwu"; |
||||
|
switch (company) { |
||||
|
case "山东恒信高科能源有限公司": |
||||
|
case "恒信中碳氢能源科技(山东)有限公司": |
||||
|
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(pageInfo.getList().get(x)); |
||||
|
String post = null; |
||||
|
try { |
||||
|
post = HttpUtils.sendDataUpload(url, jsonObject, HTTP.UTF_8, "tp9tNKR6nGsS2mpdWzrQ02D93621E3411A0F"); |
||||
|
success++; |
||||
|
System.out.println(pageInfo.getList().get(x).getYinhuanpaicharenwuji()+","); |
||||
|
System.out.println(jsonObject); |
||||
|
System.out.println(pageInfo.getList().get(x)); |
||||
|
System.out.println("post:"+post.toString()); |
||||
|
XxlJobHelper.log("执行日志:" + company + post.toString()); |
||||
|
} catch (IOException e) { |
||||
|
fail++; |
||||
|
e.printStackTrace(); |
||||
|
System.out.print(pageInfo.getList().get(x).getYinhuanpaicharenwuji() + ","); |
||||
|
XxlJobHelper.handleFail(pageInfo.getList().get(x).getYinhuanpaicharenwuji() + "-->任务执行失败" + e.getMessage()); |
||||
|
} |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
pageNum++; |
||||
|
/*System.out.println(total); |
||||
|
System.out.println(pageNum*pageSize);*/ |
||||
|
} while (total > (pageNum - 1) * pageSize); |
||||
|
|
||||
|
//}
|
||||
|
|
||||
|
|
||||
|
if (total > 0) { |
||||
|
XxlJobHelper.log("执行日志:本次有" + total + "条需要上传,成功上传" + success + "条,失败" + fail + "条"); |
||||
|
} else { |
||||
|
XxlJobHelper.log("执行日志:本次无新数据需上传"); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
private void init() { |
||||
|
log.info("init 方法调用成功"); |
||||
|
} |
||||
|
|
||||
|
private void destroy() { |
||||
|
log.info("destroy 方法调用成功"); |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,304 @@ |
|||||
|
package com.hxjt.dataupload.model.entity.doubleprevent; |
||||
|
|
||||
|
import org.springframework.stereotype.Repository; |
||||
|
|
||||
|
@Repository |
||||
|
public class Yhpcrw { |
||||
|
private String qiyemingcheng; |
||||
|
private String qiyebianma; |
||||
|
private String weixianhuaxuepindeng; |
||||
|
private String yinhuanpaicharenwuji; |
||||
|
private String fengxianfenxiduixian; |
||||
|
private String anquanfengxianfenxid; |
||||
|
private String zhongdaweixianyuanmi; |
||||
|
private String zhongdaweixianyuande; |
||||
|
private String fengxianfenxidanyuan1; |
||||
|
private String fengxianfenxidanyuan; |
||||
|
private String fengxianshijianmingc; |
||||
|
private String fengxianshijianbianh; |
||||
|
private String duiyingguankongcuosh; |
||||
|
private String guankongcuoshiid; |
||||
|
private String yinhuanpaichaneirong; |
||||
|
private String yinhuanpaicharenwuid; |
||||
|
private String renwuleixing; |
||||
|
private String shifoubaobaozerenren; |
||||
|
private String baobaorenwuduiyingxi; |
||||
|
private String baobaozerenrenduiyin; |
||||
|
private String yingzhixingpaichashi; |
||||
|
private String renwujihuajieshushij; |
||||
|
private String paichajieguo; |
||||
|
private String paichashijian; |
||||
|
private String paicharen; |
||||
|
private String imeima; |
||||
|
private String chuangjianren; |
||||
|
private String chuangjianrenshoujih; |
||||
|
private String chuangjianshijian; |
||||
|
|
||||
|
public String getQiyemingcheng() { |
||||
|
return qiyemingcheng; |
||||
|
} |
||||
|
|
||||
|
public void setQiyemingcheng(String qiyemingcheng) { |
||||
|
this.qiyemingcheng = qiyemingcheng; |
||||
|
} |
||||
|
|
||||
|
public String getQiyebianma() { |
||||
|
return qiyebianma; |
||||
|
} |
||||
|
|
||||
|
public void setQiyebianma(String qiyebianma) { |
||||
|
this.qiyebianma = qiyebianma; |
||||
|
} |
||||
|
|
||||
|
public String getWeixianhuaxuepindeng() { |
||||
|
return weixianhuaxuepindeng; |
||||
|
} |
||||
|
|
||||
|
public void setWeixianhuaxuepindeng(String weixianhuaxuepindeng) { |
||||
|
this.weixianhuaxuepindeng = weixianhuaxuepindeng; |
||||
|
} |
||||
|
|
||||
|
public String getYinhuanpaicharenwuji() { |
||||
|
return yinhuanpaicharenwuji; |
||||
|
} |
||||
|
|
||||
|
public void setYinhuanpaicharenwuji(String yinhuanpaicharenwuji) { |
||||
|
this.yinhuanpaicharenwuji = yinhuanpaicharenwuji; |
||||
|
} |
||||
|
|
||||
|
public String getFengxianfenxiduixian() { |
||||
|
return fengxianfenxiduixian; |
||||
|
} |
||||
|
|
||||
|
public void setFengxianfenxiduixian(String fengxianfenxiduixian) { |
||||
|
this.fengxianfenxiduixian = fengxianfenxiduixian; |
||||
|
} |
||||
|
|
||||
|
public String getAnquanfengxianfenxid() { |
||||
|
return anquanfengxianfenxid; |
||||
|
} |
||||
|
|
||||
|
public void setAnquanfengxianfenxid(String anquanfengxianfenxid) { |
||||
|
this.anquanfengxianfenxid = anquanfengxianfenxid; |
||||
|
} |
||||
|
|
||||
|
public String getZhongdaweixianyuanmi() { |
||||
|
return zhongdaweixianyuanmi; |
||||
|
} |
||||
|
|
||||
|
public void setZhongdaweixianyuanmi(String zhongdaweixianyuanmi) { |
||||
|
this.zhongdaweixianyuanmi = zhongdaweixianyuanmi; |
||||
|
} |
||||
|
|
||||
|
public String getZhongdaweixianyuande() { |
||||
|
return zhongdaweixianyuande; |
||||
|
} |
||||
|
|
||||
|
public void setZhongdaweixianyuande(String zhongdaweixianyuande) { |
||||
|
this.zhongdaweixianyuande = zhongdaweixianyuande; |
||||
|
} |
||||
|
|
||||
|
public String getFengxianfenxidanyuan1() { |
||||
|
return fengxianfenxidanyuan1; |
||||
|
} |
||||
|
|
||||
|
public void setFengxianfenxidanyuan1(String fengxianfenxidanyuan1) { |
||||
|
this.fengxianfenxidanyuan1 = fengxianfenxidanyuan1; |
||||
|
} |
||||
|
|
||||
|
public String getFengxianfenxidanyuan() { |
||||
|
return fengxianfenxidanyuan; |
||||
|
} |
||||
|
|
||||
|
public void setFengxianfenxidanyuan(String fengxianfenxidanyuan) { |
||||
|
this.fengxianfenxidanyuan = fengxianfenxidanyuan; |
||||
|
} |
||||
|
|
||||
|
public String getFengxianshijianmingc() { |
||||
|
return fengxianshijianmingc; |
||||
|
} |
||||
|
|
||||
|
public void setFengxianshijianmingc(String fengxianshijianmingc) { |
||||
|
this.fengxianshijianmingc = fengxianshijianmingc; |
||||
|
} |
||||
|
|
||||
|
public String getFengxianshijianbianh() { |
||||
|
return fengxianshijianbianh; |
||||
|
} |
||||
|
|
||||
|
public void setFengxianshijianbianh(String fengxianshijianbianh) { |
||||
|
this.fengxianshijianbianh = fengxianshijianbianh; |
||||
|
} |
||||
|
|
||||
|
public String getDuiyingguankongcuosh() { |
||||
|
return duiyingguankongcuosh; |
||||
|
} |
||||
|
|
||||
|
public void setDuiyingguankongcuosh(String duiyingguankongcuosh) { |
||||
|
this.duiyingguankongcuosh = duiyingguankongcuosh; |
||||
|
} |
||||
|
|
||||
|
public String getGuankongcuoshiid() { |
||||
|
return guankongcuoshiid; |
||||
|
} |
||||
|
|
||||
|
public void setGuankongcuoshiid(String guankongcuoshiid) { |
||||
|
this.guankongcuoshiid = guankongcuoshiid; |
||||
|
} |
||||
|
|
||||
|
public String getYinhuanpaichaneirong() { |
||||
|
return yinhuanpaichaneirong; |
||||
|
} |
||||
|
|
||||
|
public void setYinhuanpaichaneirong(String yinhuanpaichaneirong) { |
||||
|
this.yinhuanpaichaneirong = yinhuanpaichaneirong; |
||||
|
} |
||||
|
|
||||
|
public String getYinhuanpaicharenwuid() { |
||||
|
return yinhuanpaicharenwuid; |
||||
|
} |
||||
|
|
||||
|
public void setYinhuanpaicharenwuid(String yinhuanpaicharenwuid) { |
||||
|
this.yinhuanpaicharenwuid = yinhuanpaicharenwuid; |
||||
|
} |
||||
|
|
||||
|
public String getRenwuleixing() { |
||||
|
return renwuleixing; |
||||
|
} |
||||
|
|
||||
|
public void setRenwuleixing(String renwuleixing) { |
||||
|
this.renwuleixing = renwuleixing; |
||||
|
} |
||||
|
|
||||
|
public String getShifoubaobaozerenren() { |
||||
|
return shifoubaobaozerenren; |
||||
|
} |
||||
|
|
||||
|
public void setShifoubaobaozerenren(String shifoubaobaozerenren) { |
||||
|
this.shifoubaobaozerenren = shifoubaobaozerenren; |
||||
|
} |
||||
|
|
||||
|
public String getBaobaorenwuduiyingxi() { |
||||
|
return baobaorenwuduiyingxi; |
||||
|
} |
||||
|
|
||||
|
public void setBaobaorenwuduiyingxi(String baobaorenwuduiyingxi) { |
||||
|
this.baobaorenwuduiyingxi = baobaorenwuduiyingxi; |
||||
|
} |
||||
|
|
||||
|
public String getBaobaozerenrenduiyin() { |
||||
|
return baobaozerenrenduiyin; |
||||
|
} |
||||
|
|
||||
|
public void setBaobaozerenrenduiyin(String baobaozerenrenduiyin) { |
||||
|
this.baobaozerenrenduiyin = baobaozerenrenduiyin; |
||||
|
} |
||||
|
|
||||
|
public String getYingzhixingpaichashi() { |
||||
|
return yingzhixingpaichashi; |
||||
|
} |
||||
|
|
||||
|
public void setYingzhixingpaichashi(String yingzhixingpaichashi) { |
||||
|
this.yingzhixingpaichashi = yingzhixingpaichashi; |
||||
|
} |
||||
|
|
||||
|
public String getRenwujihuajieshushij() { |
||||
|
return renwujihuajieshushij; |
||||
|
} |
||||
|
|
||||
|
public void setRenwujihuajieshushij(String renwujihuajieshushij) { |
||||
|
this.renwujihuajieshushij = renwujihuajieshushij; |
||||
|
} |
||||
|
|
||||
|
public String getPaichajieguo() { |
||||
|
return paichajieguo; |
||||
|
} |
||||
|
|
||||
|
public void setPaichajieguo(String paichajieguo) { |
||||
|
this.paichajieguo = paichajieguo; |
||||
|
} |
||||
|
|
||||
|
public String getPaichashijian() { |
||||
|
return paichashijian; |
||||
|
} |
||||
|
|
||||
|
public void setPaichashijian(String paichashijian) { |
||||
|
this.paichashijian = paichashijian; |
||||
|
} |
||||
|
|
||||
|
public String getPaicharen() { |
||||
|
return paicharen; |
||||
|
} |
||||
|
|
||||
|
public void setPaicharen(String paicharen) { |
||||
|
this.paicharen = paicharen; |
||||
|
} |
||||
|
|
||||
|
public String getImeima() { |
||||
|
return imeima; |
||||
|
} |
||||
|
|
||||
|
public void setImeima(String imeima) { |
||||
|
this.imeima = imeima; |
||||
|
} |
||||
|
|
||||
|
public String getChuangjianren() { |
||||
|
return chuangjianren; |
||||
|
} |
||||
|
|
||||
|
public void setChuangjianren(String chuangjianren) { |
||||
|
this.chuangjianren = chuangjianren; |
||||
|
} |
||||
|
|
||||
|
public String getChuangjianrenshoujih() { |
||||
|
return chuangjianrenshoujih; |
||||
|
} |
||||
|
|
||||
|
public void setChuangjianrenshoujih(String chuangjianrenshoujih) { |
||||
|
this.chuangjianrenshoujih = chuangjianrenshoujih; |
||||
|
} |
||||
|
|
||||
|
public String getChuangjianshijian() { |
||||
|
return chuangjianshijian; |
||||
|
} |
||||
|
|
||||
|
public void setChuangjianshijian(String chuangjianshijian) { |
||||
|
this.chuangjianshijian = chuangjianshijian; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@Override |
||||
|
public String toString() { |
||||
|
return "Yhpcrw{" + |
||||
|
"qiyemingcheng='" + qiyemingcheng + '\'' + |
||||
|
", qiyebianma='" + qiyebianma + '\'' + |
||||
|
", weixianhuaxuepindeng='" + weixianhuaxuepindeng + '\'' + |
||||
|
", yinhuanpaicharenwuji='" + yinhuanpaicharenwuji + '\'' + |
||||
|
", fengxianfenxiduixian='" + fengxianfenxiduixian + '\'' + |
||||
|
", anquanfengxianfenxid='" + anquanfengxianfenxid + '\'' + |
||||
|
", zhongdaweixianyuanmi='" + zhongdaweixianyuanmi + '\'' + |
||||
|
", zhongdaweixianyuande='" + zhongdaweixianyuande + '\'' + |
||||
|
", fengxianfenxidanyuan1='" + fengxianfenxidanyuan1 + '\'' + |
||||
|
", fengxianfenxidanyuan='" + fengxianfenxidanyuan + '\'' + |
||||
|
", fengxianshijianmingc='" + fengxianshijianmingc + '\'' + |
||||
|
", fengxianshijianbianh='" + fengxianshijianbianh + '\'' + |
||||
|
", duiyingguankongcuosh='" + duiyingguankongcuosh + '\'' + |
||||
|
", guankongcuoshiid='" + guankongcuoshiid + '\'' + |
||||
|
", yinhuanpaichaneirong='" + yinhuanpaichaneirong + '\'' + |
||||
|
", yinhuanpaicharenwuid='" + yinhuanpaicharenwuid + '\'' + |
||||
|
", renwuleixing='" + renwuleixing + '\'' + |
||||
|
", shifoubaobaozerenren='" + shifoubaobaozerenren + '\'' + |
||||
|
", baobaorenwuduiyingxi='" + baobaorenwuduiyingxi + '\'' + |
||||
|
", baobaozerenrenduiyin='" + baobaozerenrenduiyin + '\'' + |
||||
|
", yingzhixingpaichashi='" + yingzhixingpaichashi + '\'' + |
||||
|
", renwujihuajieshushij='" + renwujihuajieshushij + '\'' + |
||||
|
", paichajieguo='" + paichajieguo + '\'' + |
||||
|
", paichashijian='" + paichashijian + '\'' + |
||||
|
", paicharen='" + paicharen + '\'' + |
||||
|
", imeima='" + imeima + '\'' + |
||||
|
", chuangjianren='" + chuangjianren + '\'' + |
||||
|
", chuangjianrenshoujih='" + chuangjianrenshoujih + '\'' + |
||||
|
", chuangjianshijian='" + chuangjianshijian + '\'' + |
||||
|
'}'; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,69 @@ |
|||||
|
package com.hxjt.dataupload.utils; |
||||
|
|
||||
|
import java.text.DecimalFormat; |
||||
|
import java.util.HashMap; |
||||
|
import java.util.Map; |
||||
|
import java.util.regex.Matcher; |
||||
|
import java.util.regex.Pattern; |
||||
|
|
||||
|
public class AmountConverter { |
||||
|
private static final Map<Character, Integer> CN_NUMBER_MAP = new HashMap<>(); |
||||
|
static { |
||||
|
CN_NUMBER_MAP.put('零', 0); CN_NUMBER_MAP.put('无', 0); |
||||
|
CN_NUMBER_MAP.put('一', 1); CN_NUMBER_MAP.put('二', 2); |
||||
|
CN_NUMBER_MAP.put('三', 3); CN_NUMBER_MAP.put('四', 4); |
||||
|
CN_NUMBER_MAP.put('五', 5); CN_NUMBER_MAP.put('六', 6); |
||||
|
CN_NUMBER_MAP.put('七', 7); CN_NUMBER_MAP.put('八', 8); |
||||
|
CN_NUMBER_MAP.put('九', 9); CN_NUMBER_MAP.put('十', 10); |
||||
|
CN_NUMBER_MAP.put('百', 100); CN_NUMBER_MAP.put('千', 1000); |
||||
|
CN_NUMBER_MAP.put('万', 10000); |
||||
|
} |
||||
|
|
||||
|
public static String convertToTenThousandYuan(String input) { |
||||
|
if (input == null || input.trim().isEmpty()) { |
||||
|
return "0.0000"; |
||||
|
} |
||||
|
|
||||
|
// 提取有效数字部分
|
||||
|
Pattern pattern = Pattern.compile("[ 零一二三四五六七八九十百千万无]+|\\d+"); |
||||
|
Matcher matcher = pattern.matcher(input); |
||||
|
String numberPart = matcher.find() ? matcher.group() : "0"; |
||||
|
|
||||
|
double value = parseNumber(numberPart); |
||||
|
return formatResult(value / 10000); |
||||
|
} |
||||
|
|
||||
|
private static double parseNumber(String str) { |
||||
|
try { |
||||
|
// 处理阿拉伯数字
|
||||
|
return Double.parseDouble(str); |
||||
|
} catch (NumberFormatException e) { |
||||
|
// 处理汉字数字
|
||||
|
return chineseToNumber(str); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private static int chineseToNumber(String chinese) { |
||||
|
int result = 0, temp = 0, prevUnit = 1; |
||||
|
for (int i = 0; i < chinese.length(); i++) { |
||||
|
char c = chinese.charAt(i); |
||||
|
Integer num = CN_NUMBER_MAP.get(c); |
||||
|
if (num == null) return 0; |
||||
|
|
||||
|
if (num >= 10) { // 处理单位
|
||||
|
temp = (temp == 0) ? 1 : temp; |
||||
|
result += temp * num; |
||||
|
temp = 0; |
||||
|
prevUnit = num; |
||||
|
} else { // 处理数字
|
||||
|
temp = temp * 10 + num; |
||||
|
} |
||||
|
} |
||||
|
return result + temp; |
||||
|
} |
||||
|
|
||||
|
private static String formatResult(double value) { |
||||
|
DecimalFormat df = new DecimalFormat("0.0000"); |
||||
|
return df.format(value); |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue