|
@@ -9,6 +9,7 @@ import com.pj.api.pushfee.tools.EncryptTools;
|
|
|
import com.pj.api.pushfee.tools.message.api.OdsOrderPayDetailDTO;
|
|
|
import com.pj.api.pushfee.tools.message.api.OrderPayDetailMessage;
|
|
|
import com.pj.current.config.PartConfig;
|
|
|
+import com.pj.current.config.PushfeeConfig;
|
|
|
import com.pj.project.tb_fee_details.TbFeeDetails;
|
|
|
import com.pj.project.tb_fee_details.TbFeeDetailsService;
|
|
|
import com.pj.utils.cache.RedisUtil;
|
|
@@ -34,50 +35,38 @@ public class FeeDetailSyncTask {
|
|
|
TbFeeDetailsService tbFeeDetailsService;
|
|
|
@Resource
|
|
|
PartConfig partConfig;
|
|
|
+ @Resource
|
|
|
+ PushfeeConfig pushfeeConfig;
|
|
|
|
|
|
- //客户端公私钥
|
|
|
- public static final String f_remotePublicKeyBase6 = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCb5yK85EKqwiQU+z1jyjOng6ecssQpEjC6STbCuSWN6KHLkijBxdqrCumXhbIyOVx4lHK9Rg5EjzlQxoaXQTgJdItaGjLC+UTE+NNAnnaFLg0x4jajNpLo473zdZxTYQaT3q/aKnTeXuKHw11PPUe4hmmfxPcdt9yJ0Iqo/XxV3QIDAQAB";
|
|
|
- public static final String f_remotePrivateKeyBase64 = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJvnIrzkQqrCJBT7PWPKM6eDp5yyxCkSMLpJNsK5JY3oocuSKMHF2qsK6ZeFsjI5XHiUcr1GDkSPOVDGhpdBOAl0i1oaMsL5RMT400CedoUuDTHiNqM2kujjvfN1nFNhBpPer9oqdN5e4ofDXU89R7iGaZ/E9x233InQiqj9fFXdAgMBAAECgYASoeKgcaVYFCDM0yQIn5thy1XGYAUapX5mXSaqygbneWSQ2FR/qB5Ur9awEb30y682CAPYhB1jazyd30QpopVINvyhaWhgq1b/8KD92FqOg1eXxa7bTuTe8aMuKTB/ZJjEry0d5Mu3i6zYKtTSbnpnag5I3UE5awLDy7utYOoOHwJBAPtvz2ZBhtJvL3lsMgs7kGqrPqqI2LAX8J3oOCtE/6eQjQ0I5fBCybrwHp3baDrYul5KTL3kJvl4iWN/gHDi/nMCQQCeu3gzy0DVtM8M8bzFc/ZA753WRn4Z5axQa6lE7Tski8TUw4Bhbfan9E/C6l6Guo/+2hXPAE/RMcncClqeXXZvAkEAgf6FsO1x4fxABDvvB6Ws/ak5hfuoZCqMaWd1GtHah2yRsEqIbxZoq7CXc6/LDJmeiT9Ku+ZoTBSIm5uA8Vw6hwJALEbs872pmzMxYlH4Lzf2pAxzAbduK3kmhNRTRjfKfJpEUHksUYEkAZujuCI6NejKi/N3i+NxYFA8F5YHyw8VHwJAWoiYSYLSziHgDytoPKFvUp6EKLGDClhACJKc4LuaPNWICMxb5Dp88sY0NDYb4HzCyWIE5G4vbiF/K3kEEwCIVA==";
|
|
|
-
|
|
|
- //服务端公私钥
|
|
|
- public static final String f_localPublicKeyBase6 = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCimSu5J8apt2YR/o9joOCNdFzO3rOHcdcqnSCm1Wt19VwskTVjkKHc/CXHUoskX5vMiMiv6xPnf/lDpMO6KnCrwlVQFtbPvmnkwyUs/haW8ggR865MqDcBpdMGnuV0YJ04UXxSrOX+eu+dl91Web4/ZiRKbObOa8WhFm/Ln2QKswIDAQAB";
|
|
|
- public static final String f_localPrivateKeyBase6 = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKKZK7knxqm3ZhH+j2Og4I10XM7es4dx1yqdIKbVa3X1XCyRNWOQodz8JcdSiyRfm8yIyK/rE+d/+UOkw7oqcKvCVVAW1s++aeTDJSz+FpbyCBHzrkyoNwGl0wae5XRgnThRfFKs5f56752X3VZ5vj9mJEps5s5rxaEWb8ufZAqzAgMBAAECgYAmP/QaLXI9kIgxaXnfzQOmIx6GB7uh/DTKsIXy2TfbWunhDhPKJUb+jk5w0kkrOFaVSgQz5hAboG5J7GOi0sMINLb7H2WsOm3uGM/8HPZYsrNFnB8VUiD26LIZ6+HhPXfp/LN+k5eUnUlD6z/dZU1k6hJPOSFC3PyzfBWqaQMqGQJBAMVdQ9Uw+eC94qD1MSSEQZhqpfGE4vO7WrSACLFqyZrHvaIwZTjdUZRF1aMlJyT0afOkfSN/53QQEcejXMUrSBcCQQDS576SXkpdfrN2jmr9BAimi+6AP71GUgXL3O+2yRL2szLoU7GwtMREPBFw+ocnC4UN87NCYveJCzenQEt48JfFAkAqEIa0mYuoatAyng+rSMTyR0i3ASud5wCeF+vCZJAzfP7d4pKwW/tXLsspynFdXvp2A0jomAosooAnnJnZLDBhAkBzXoXm92Fip45wShPIeE5rHJzI1xUoxHGbRS50JKYVAY3VfQL0kM3ULa+0x7bq6uhL64WhyRVziAlXmlouvB2pAkEAuDvsjVhdo3uMGL7Tr+igPhajoWUTjPuAf+Od3SsqMTPFLBpbJM8ziXk39Me9S8wqgGwR3pnlC1Z6Rybgm+uy4g==";
|
|
|
-
|
|
|
- private static final String URL = "http://117.141.148.233:8765/monolithic/uni/v1/sync";
|
|
|
-
|
|
|
- //默认开始时间
|
|
|
- private static final String START_TIME = "2022-04-27 00:00:00";
|
|
|
- //默认同步时间间隔
|
|
|
- private static final Integer TIME_SPAN = 86400000;
|
|
|
/**
|
|
|
- * 5分钟执行一次
|
|
|
+ * 10分钟执行一次
|
|
|
*/
|
|
|
- @Scheduled(fixedRate = 15000)
|
|
|
+ @Scheduled(fixedRate = 600000)
|
|
|
public void send() {
|
|
|
-// if(partConfig.isTestEnv()){
|
|
|
-// log.info("pushfee_info: 测试环境不推送");
|
|
|
-// return;
|
|
|
-// }
|
|
|
+ if(partConfig.isTestEnv()){
|
|
|
+ log.info("pushfee_info: 测试环境不推送");
|
|
|
+ return;
|
|
|
+ }
|
|
|
Date startTime;
|
|
|
Integer timeSpan;
|
|
|
//先从redis中获取startTime
|
|
|
- if(StrUtil.isNotEmpty(RedisUtil.get("pushFeeStartTime"))){
|
|
|
- startTime = DateUtil.parse(RedisUtil.get("pushFeeStartTime"), "yyyy-MM-dd HH:mm:ss");
|
|
|
+ if(StrUtil.isNotEmpty(RedisUtil.get("pushfee:start_time"))){
|
|
|
+ startTime = DateUtil.parse(RedisUtil.get("pushfee:start_time"), "yyyy-MM-dd HH:mm:ss");
|
|
|
}else{
|
|
|
- startTime = DateUtil.parse(START_TIME, "yyyy-MM-dd HH:mm:ss");
|
|
|
+ startTime = DateUtil.parse(pushfeeConfig.getStartTime(), "yyyy-MM-dd HH:mm:ss");
|
|
|
}
|
|
|
//先从redis中获取timeSpan
|
|
|
- if(StrUtil.isNotEmpty(RedisUtil.get("pushFeeTimeSpan"))){
|
|
|
- timeSpan = Integer.valueOf(RedisUtil.get("pushFeeTimeSpan"));
|
|
|
+ if(StrUtil.isNotEmpty(RedisUtil.get("pushfee:time_span"))){
|
|
|
+ timeSpan = Integer.valueOf(RedisUtil.get("pushfee:time_span"));
|
|
|
}else{
|
|
|
- timeSpan = TIME_SPAN;
|
|
|
+ timeSpan = pushfeeConfig.getTimeSpan();
|
|
|
}
|
|
|
|
|
|
Date now = new Date();
|
|
|
Date finishTime = DateUtil.offsetMillisecond(startTime, timeSpan);
|
|
|
//如果当前时间小于推送结束时间,则不执行下面代码,保证推送的时间间隔为设定间隔
|
|
|
if(DateUtil.compare(now, finishTime) < 0){
|
|
|
- log.info("pushfee_warn: 当前时间与开始时间的间隔小于设定间隔,本次任务不进行推送,开始时间为" +
|
|
|
+ log.info("pushfee_warn: 当前时间小于结束时间,本次任务不进行推送,开始时间为" +
|
|
|
DateUtil.format(startTime, "yyyy-MM-dd HH:mm:ss")
|
|
|
+ ",结束时间为" + DateUtil.format(finishTime, "yyyy-MM-dd HH:mm:ss")
|
|
|
+ ",当前时间为" + DateUtil.format(now, "yyyy-MM-dd HH:mm:ss"));
|
|
@@ -87,13 +76,12 @@ public class FeeDetailSyncTask {
|
|
|
//构建数据
|
|
|
List<TbFeeDetails> fdList = getfeeDetails(startTime, finishTime);
|
|
|
if(fdList.size() > 0){
|
|
|
- List<OdsOrderPayDetailDTO> opdList = convert(fdList);
|
|
|
-
|
|
|
+ List<OdsOrderPayDetailDTO> opdList = convert(fdList, now);
|
|
|
//1. 本地,用对方的公钥加密
|
|
|
- EncryptTools client = new EncryptTools("hd", f_remotePublicKeyBase6);
|
|
|
+ EncryptTools client = new EncryptTools(pushfeeConfig.getSysId(), pushfeeConfig.getRemotePublicKeyBase6());
|
|
|
|
|
|
OrderPayDetailMessage detail = new OrderPayDetailMessage();
|
|
|
- detail.setDate(DateUtil.format(new Date(), "yyyyMMdd"));
|
|
|
+ detail.setDate(DateUtil.format(now, "yyyyMMdd"));
|
|
|
detail.setBatch(1);
|
|
|
detail.setList(opdList);
|
|
|
detail.setCount(opdList.size());
|
|
@@ -102,25 +90,27 @@ public class FeeDetailSyncTask {
|
|
|
log.info("pushfee_encryptMessage: " + encryptMessage);
|
|
|
|
|
|
//推送数据
|
|
|
+ //String response = "{\"msg\":\"测试\",\"code\":200,\"timestamp\":\"2022-07-27 18:13:17\"}";
|
|
|
String response = "{}";
|
|
|
try {
|
|
|
- response = tools.http.HttpUtils.doPost(URL, encryptMessage);
|
|
|
+ response = tools.http.HttpUtils.doPost(pushfeeConfig.getSyncUrl(), encryptMessage);
|
|
|
log.info("pushfee_response: " + response);
|
|
|
} catch (IOException e) {
|
|
|
- e.printStackTrace();
|
|
|
+ log.error("pushfee_error: " + e.getMessage());
|
|
|
}
|
|
|
JSONObject jsonObject = JSONUtil.parseObj(response);
|
|
|
String code = jsonObject.getStr("code");
|
|
|
if(StrUtil.equals("200", code)){
|
|
|
- RedisUtil.set("pushFeeStartTime", DateUtil.format(finishTime, "yyyy-MM-dd HH:mm:ss"));
|
|
|
+ RedisUtil.set("pushfee:start_time", DateUtil.format(finishTime, "yyyy-MM-dd HH:mm:ss"));
|
|
|
+ log.info("pushfee_info: 推送成功,范围为"
|
|
|
+ + DateUtil.format(startTime, "yyyy-MM-dd HH:mm:ss") + "至"
|
|
|
+ + RedisUtil.get("pushfee:start_time"));
|
|
|
}
|
|
|
- log.info("pushfee_startTime changes: " + RedisUtil.get("pushFeeStartTime"));
|
|
|
}else {
|
|
|
+ RedisUtil.set("pushfee:start_time", DateUtil.format(finishTime, "yyyy-MM-dd HH:mm:ss"));
|
|
|
log.info("pushfee_warn: "
|
|
|
+ DateUtil.format(startTime, "yyyy-MM-dd HH:mm:ss") + "至"
|
|
|
- + DateUtil.format(finishTime, "yyyy-MM-dd HH:mm:ss") + "范围内没有数据,本次任务不进行推送" );
|
|
|
- RedisUtil.set("pushFeeStartTime", DateUtil.format(finishTime, "yyyy-MM-dd HH:mm:ss"));
|
|
|
- log.info("pushfee_startTime changes: " + RedisUtil.get("pushFeeStartTime"));
|
|
|
+ + RedisUtil.get("pushfee:start_time") + "范围内没有数据,本次任务不进行推送" );
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -130,15 +120,19 @@ public class FeeDetailSyncTask {
|
|
|
return tbFeeDetailsService.list(qw);
|
|
|
}
|
|
|
|
|
|
- private List<OdsOrderPayDetailDTO> convert(List<TbFeeDetails> fdList) {
|
|
|
+ private List<OdsOrderPayDetailDTO> convert(List<TbFeeDetails> fdList, Date now) {
|
|
|
List<OdsOrderPayDetailDTO> opdList = new ArrayList<>();
|
|
|
for (TbFeeDetails fd : fdList) {
|
|
|
OdsOrderPayDetailDTO opd = new OdsOrderPayDetailDTO();
|
|
|
- opd.setSysId("hd").setSysName("华东场站系统").setYieldId("hd-a1").setYieldName("华东A1园区")
|
|
|
- .setSyncType("insert").setBatch("1")
|
|
|
- .setDwDt("20220725").setDwTm("163206");
|
|
|
-
|
|
|
-
|
|
|
+ opd.setSysId(pushfeeConfig.getSysId()).setSysName(pushfeeConfig.getSysName())
|
|
|
+ .setYieldId(pushfeeConfig.getYieldId()).setYieldName(pushfeeConfig.getYieldName())
|
|
|
+ .setBatch(DateUtil.current()+"")
|
|
|
+ .setDwDt(DateUtil.format(now, "yyyyMMdd")).setDwTm(DateUtil.format(now, "HH:mm:ss"));
|
|
|
+
|
|
|
+ String syncType = "insert";
|
|
|
+ if(DateUtil.compare(fd.getCreateTime(), fd.getUpdateTime()) < 0){
|
|
|
+ syncType = "update";
|
|
|
+ }
|
|
|
String bizNo = fd.getBusinessNo();
|
|
|
if(fd.getFeeType() == TbFeeDetails.fee.PARK_FEE.getCode()){
|
|
|
bizNo = fd.getBusinessCarNo();
|
|
@@ -148,25 +142,30 @@ public class FeeDetailSyncTask {
|
|
|
.setBizTypeId(fd.getItemTypeId()).setBizTypeName(fd.getItemTypeName())
|
|
|
.setCarTypId(fd.getItemId()).setCarTypName(fd.getItemName())
|
|
|
.setCarNo(fd.getCarNo())
|
|
|
- .setWeight(fd.getWeight() != null ? fd.getWeight()+"kg": "0kg")
|
|
|
+ .setWeight(fd.getWeight() != null ? fd.getWeight()+"": "0")
|
|
|
.setNum(fd.getNum()+"")
|
|
|
- .setPrice(fd.getUnitPrice().toString()+"元").setTotalPrice(fd.getItemPrice().toString()+"元")
|
|
|
+ .setPrice(fd.getUnitPrice().toString()).setTotalPrice(fd.getItemPrice().toString())
|
|
|
.setSettleStatusName("已结算").setSettleStatusId(fd.getIsSettle()+"")
|
|
|
- .setTaxRate(fd.getTaxRate().multiply(BigDecimal.valueOf(100)).toString()+"%")
|
|
|
- .setTaxPayment(fd.getTaxPrice().toString()+"元")
|
|
|
- .setTaxAmount(fd.getItemPrice().toString()+"元").setNoTaxAmount(fd.getNoTaxPrice().toString()+"元")
|
|
|
+ .setTaxRate(fd.getTaxRate().multiply(BigDecimal.valueOf(100)).toString())
|
|
|
+ .setTaxPayment(fd.getTaxPrice().toString())
|
|
|
+ .setTaxAmount(fd.getItemPrice().toString()).setNoTaxAmount(fd.getNoTaxPrice().toString())
|
|
|
.setPaymentWayName("微信支付").setPaymentWayId(fd.getPayType()+"")
|
|
|
+ .setSysSerialNo(fd.getOutTradeNo())
|
|
|
.setPayNo(fd.getTransactionId())
|
|
|
.setWorkNo(fd.getBusinessItemNo())
|
|
|
.setCustName(fd.getEntityName()).setPartnerName(fd.getPickCustomerName()).setAgentName(fd.getCustomerName())
|
|
|
.setInvoiceNo(fd.getInvoice())
|
|
|
- .setCreateTime(DateUtil.format(fd.getCreateTime(), "yyyy-MM-dd HH:mm:ss")).setPayTime(fd.getPayTime())
|
|
|
+ .setCreateTime(DateUtil.format(fd.getCreateTime(), "yyyy-MM-dd HH:mm:ss"))
|
|
|
+ .setUpdateTime(DateUtil.format(fd.getUpdateTime(), "yyyy-MM-dd HH:mm:ss"))
|
|
|
+ .setPayTime(fd.getPayTime())
|
|
|
.setRemarks(fd.getRemark())
|
|
|
- .setBillClerkName(fd.getKaiDanPerson()).setStatAuditorName(fd.getJiChaPerson()).setDispatcherName(fd.getDiaoDuPerson());
|
|
|
+ .setBillClerkName(fd.getKaiDanPerson()).setStatAuditorName(fd.getJiChaPerson()).setDispatcherName(fd.getDiaoDuPerson())
|
|
|
+ .setSyncType(syncType);
|
|
|
|
|
|
opdList.add(opd);
|
|
|
}
|
|
|
return opdList;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
}
|