123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- package com.pj.api.pushfee.task;
- import cn.hutool.core.date.DateUtil;
- import cn.hutool.core.util.StrUtil;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- 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.project.tb_fee_details.TbFeeDetails;
- import com.pj.project.tb_fee_details.TbFeeDetailsService;
- import com.pj.utils.cache.RedisUtil;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Component;
- import javax.annotation.Resource;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- /**
- * @Auther: lzm
- * @Date: 2022/07/25/9:11
- */
- @Component
- @Slf4j
- public class FeeDetailSyncTask {
- @Resource
- TbFeeDetailsService tbFeeDetailsService;
- //客户端公私钥
- 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-29 00:00:00";
- //默认同步时间间隔
- private static final Integer TIME_SPAN = 86400000;
- /**
- * 5分钟执行一次
- */
- @Scheduled(fixedRate = 300000)
- public void send() {
- Date startTime;
- Integer timeSpan;
- //先从redis中获取startTime
- if(StrUtil.isNotEmpty(RedisUtil.get("pushFeeStartTime"))){
- startTime = DateUtil.parse(RedisUtil.get("pushFeeStartTime"), "yyyy-MM-dd HH:mm:ss");
- }else{
- startTime = DateUtil.parse(START_TIME, "yyyy-MM-dd HH:mm:ss");
- }
- //先从redis中获取timeSpan
- if(StrUtil.isNotEmpty(RedisUtil.get("pushFeeTimeSpan"))){
- timeSpan = Integer.valueOf(RedisUtil.get("pushFeeTimeSpan"));
- }else{
- timeSpan = TIME_SPAN;
- }
- Date finishTime = DateUtil.endOfDay(new Date());
- Date offsetTime = DateUtil.offsetMillisecond(startTime, timeSpan);
- //如果当前时间与开始时间的间隔小于设定间隔,则不执行下面代码,保证推送的时间间隔为设定间隔
- if(DateUtil.compare(finishTime, offsetTime) > 0){
- finishTime = offsetTime;
- }else{
- log.info("pushfee_warning: 当前时间与开始时间的间隔小于设定间隔,本次任务不进行推送,开始时间为" +
- DateUtil.format(startTime, "yyyy-MM-dd HH:mm:ss"));
- return;
- }
- //构建数据
- List<TbFeeDetails> fdList = getfeeDetails(startTime, finishTime);
- if(fdList.size() == 0){
- log.info("pushfee_warning: "
- + DateUtil.format(startTime, "yyyy-MM-dd HH:mm:ss") + "至"
- + DateUtil.format(finishTime, "yyyy-MM-dd HH:mm:ss") + "范围内没有数据,本次任务不进行推送" );
- return;
- }
- List<OdsOrderPayDetailDTO> opdList = convert(fdList);
- //1. 本地,用对方的公钥加密
- EncryptTools client = new EncryptTools("hd", f_remotePublicKeyBase6);
- OrderPayDetailMessage detail = new OrderPayDetailMessage();
- detail.setDate(DateUtil.format(new Date(), "yyyyMMdd"));
- detail.setBatch(1);
- detail.setList(opdList);
- detail.setCount(opdList.size());
- String encryptMessage = client.encryptMessage(detail);
- log.info("pushfee_encryptMessage: " + encryptMessage);
- //推送数据
- try {
- String response = tools.http.HttpUtils.doPost(URL, encryptMessage);
- log.info("pushfee_response: " + response);
- } catch (IOException e) {
- e.printStackTrace();
- }
- RedisUtil.set("pushFeeStartTime", DateUtil.format(finishTime, "yyyy-MM-dd HH:mm:ss"));
- RedisUtil.set("pushFeeTimeSpan", timeSpan+"");
- log.info("pushfee_warning: " + RedisUtil.get("pushFeeStartTime"));
- }
- private List<TbFeeDetails> getfeeDetails(Date startTime, Date finishTime) {
- QueryWrapper<TbFeeDetails> qw = new QueryWrapper<>();
- qw.ge("update_time", startTime).le("update_time", finishTime);
- return tbFeeDetailsService.list(qw);
- }
- private List<OdsOrderPayDetailDTO> convert(List<TbFeeDetails> fdList) {
- 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").setUniqId("YRTFHFHFHFEWWR43645757");
- String bizNo = fd.getBusinessNo();
- if(fd.getFeeType() == TbFeeDetails.fee.PARK_FEE.getCode()){
- bizNo = fd.getBusinessCarNo();
- }
- opd.setBizNo(bizNo)
- .setChargeItemId(fd.getFeeType()+"").setChargeItemName(TbFeeDetails.fee.getDesc(fd.getFeeType()))
- .setBizTypeId(fd.getItemTypeId()).setBizTypeName(fd.getItemTypeName())
- .setCarTypId(fd.getItemId()).setCarTypName(fd.getItemName())
- .setCarNo(fd.getCarNo())
- .setWeight(fd.getWeight() != null ? fd.getWeight()+"": "0")
- .setNum(fd.getNum()+"")
- .setPrice(fd.getUnitPrice().toString()).setTotalPrice(fd.getItemPrice().toString())
- .setSettleStatusName("已结算")
- .setTaxRate(fd.getTaxRate().toString()).setTaxPayment(fd.getTaxPrice().toString())
- .setTaxAmount(fd.getItemPrice().toString()).setNoTaxAmount(fd.getNoTaxPrice().toString())
- .setPaymentWayName("微信支付")
- .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())
- .setRemarks(fd.getRemark())
- .setBillClerkName(fd.getKaiDanPerson()).setStatAuditorName(fd.getJiChaPerson()).setDispatcherName(fd.getDiaoDuPerson());
- opdList.add(opd);
- }
- return opdList;
- }
- }
|