add 推送开票邮寄数据到会员系统

This commit is contained in:
lijiarao
2021-09-17 14:24:31 +08:00
parent 426c1543aa
commit 806112aa68
8 changed files with 188 additions and 59 deletions
@@ -100,4 +100,25 @@ public class AuthenticationUtils {
throw new JeroBootException("数据同步失败!");
}
}
/**
* 调用会员系统post接口
* @param methodName
* @param requestParam
* @param requestBody
*/
public static void postStandards(String methodName,String requestParam,Object requestBody) {
Map<String, String> stringStringMap = encryptByRsaPriKey();
String publicKey = stringStringMap.get("publicKey");
String token = stringStringMap.get("token");
String jsonString = JSONObject.toJSONString(requestBody);
//拼接url路径
StringBuilder urlBuilder = new StringBuilder(AuthenticationUtils.URL);
urlBuilder.append(methodName).append("?publicKey=").append(publicKey).append("&pushToken=").append(token);
if (StrUtil.isNotBlank(requestParam)){
urlBuilder.append(requestParam);
}
String post = HttpUtil.post(urlBuilder.toString(), jsonString);
checkResult(post);
}
}
@@ -1,43 +0,0 @@
package com.jero.common.util;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* Spring 上下文工具类
* @author liJiaRao
* @date 2021-09-16 15:05
*/
@Component
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(@NotNull ApplicationContext applicationContext) throws BeansException {
SpringContextUtil.applicationContext = applicationContext;
}
/**
* 获取上下文
*/
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/**
* 通过 bena 名称获取上下文中的 bean
*/
public static Object getBean(String name) {
return applicationContext.getBean(name);
}
/**
* 通过类型获取上下文中的bean
*/
public static Object getBean(Class<?> requiredType) {
return applicationContext.getBean(requiredType);
}
}
@@ -1,9 +1,8 @@
package com.jero.config.shiro.filters;
import cn.hutool.core.util.StrUtil;
import com.jero.common.system.util.JwtUtil;
import com.jero.common.util.AuthenticationUtils;
import com.jero.common.util.SpringContextUtil;
import com.jero.common.util.SpringContextUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter;
@@ -69,7 +68,7 @@ public class JwtFilter extends BasicHttpAuthenticationFilter {
if (StrUtil.isNotBlank(pushToken)){
String publicKey = httpServletRequest.getParameter("publicKey");
if (authenticationUtils ==null ){
authenticationUtils = (AuthenticationUtils) SpringContextUtil.getBean("authenticationUtils");
authenticationUtils = (AuthenticationUtils) SpringContextUtils.getBean("authenticationUtils");
}
authenticationUtils.check(pushToken,publicKey);
}else {
@@ -265,6 +265,7 @@ public class PayMailBillController extends JeroController<PayMailBill, IPayMailB
tbMemberProjectSubitem.setMail(2);
tbMemberProjectSubitemService.updateById(tbMemberProjectSubitem);
}
payMailBillService.pushSendToStandards(payMailBill,one.getProjectId());
}
return Result.OK("编辑成功!");
}
@@ -0,0 +1,107 @@
package com.jero.mail.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Description: 开票信息表
* @Author: jeecg-boot
* @Date: 2021-01-07
* @Version: V1.0
*/
@Data
@TableName("tb_billing_info")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="tb_billing_info对象", description="开票信息表")
public class BillingInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@ApiModelProperty(value = "主键")
private String id;
/**创建人*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新日期")
private java.util.Date updateTime;
/**所属部门*/
@ApiModelProperty(value = "所属部门")
private String sysOrgCode;
/**单位全称*/
@ApiModelProperty(value = "单位全称")
private String companyName;
/**邮寄方式*/
@ApiModelProperty(value = "邮寄方式")
private Integer sendMethod;
/**邮寄单号*/
@ApiModelProperty(value = "邮寄单号")
private String postNo;
/**联系人*/
@ApiModelProperty(value = "联系人")
private String liaisonMan;
/**联系人手机号*/
@ApiModelProperty(value = "联系人手机号")
private String mobile;
/**邮寄状态*/
@ApiModelProperty(value = "邮寄状态")
private Integer postStatus;
/**开票类型*/
@ApiModelProperty(value = "开票类型")
private String billingType;
/**订单号*/
@ApiModelProperty(value = "订单号")
private String billNumber;
/**缴费时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "缴费时间")
private java.util.Date paymentDate;
/**邮寄日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "邮寄日期")
private java.util.Date sendDate;
/**发票金额*/
@ApiModelProperty(value = "发票金额")
private Double billMoney;
/**发票号码*/
@ApiModelProperty(value = "发票号码")
private String billNo;
/**通讯地址*/
@ApiModelProperty(value = "通讯地址")
private String address;
/**邮编*/
@ApiModelProperty(value = "邮编")
private String postcode;
/**缴费金额*/
@ApiModelProperty(value = "缴费金额")
private BigDecimal paymentAmount;
/**会员id*/
@ApiModelProperty(value = "会员id")
private String memberId;
}
@@ -38,5 +38,5 @@ public interface IPayMailBillService extends IService<PayMailBill> {
Result<?> addPayBill(PayMailBillVO payMailBill);
void pushSendToStandards(PayMailBill payMailBill, String id);
}
@@ -15,6 +15,7 @@ import com.jero.common.util.AuthenticationUtils;
import com.jero.common.util.oConvertUtils;
import com.jero.contract.common.PayIncomeContractCommon;
import com.jero.mail.PayMailBillVO;
import com.jero.mail.entity.BillingInfo;
import com.jero.mail.entity.PayMailBill;
import com.jero.mail.entity.PayMailBillProject;
import com.jero.mail.entity.PayMailBillSearch;
@@ -116,22 +117,19 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
for (int i = 0; i < bmpList.size(); i++) {
if (PayIncomeContractCommon.PROJECT_TYPE5.equals(String.valueOf(bmpList.get(i).getProjectType()))) {
PayMailBillProject payMailBillProject = bmpList.get(i);
if (PayIncomeContractCommon.PROJECT_TYPE5.equals(String.valueOf(payMailBillProject.getProjectType()))) {
String id = payMailBillProject.getProjectId();
LambdaQueryWrapper<PayMailBillProject> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PayMailBillProject::getProjectId, bmpList.get(i).getId());
wrapper.eq(PayMailBillProject::getProjectId, id);
wrapper.eq(PayMailBillProject::getProjectType, PayIncomeContractCommon.PROJECT_TYPE5);
List<PayMailBillProject> type5List = payMailBillProjectService.list(wrapper);
if (type5List != null && type5List.size() > 0) {
throw new JeroBootException("标协会员项目,只能开票一次。");
}
Map<String, String> stringStringMap = AuthenticationUtils.encryptByRsaPriKey();
String publicKey = stringStringMap.get("publicKey");
String token = stringStringMap.get("token");
String jsonString1 = JSONObject.toJSONString(payMailBill);
String post = HttpUtil.post(AuthenticationUtils.URL + "/stablecrosstraining/stableCrossTraining/addStandardsFile?publicKey=" + publicKey + "&token=" + token, jsonString1);
AuthenticationUtils.checkResult(post);
//推送开票数据到会员系统
pushBillToStandards(payMailBill, id);
}
}
@@ -163,6 +161,44 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
return Result.OK("添加成功!");
}
/**
* 推送开票数据到会员系统
* @param payMailBill
* @param id
*/
private void pushBillToStandards(PayMailBillVO payMailBill, String id) {
TbMemberProjectSubitem tbMemberProjectSubitem = tbMemberProjectSubitemMapper.selectById(id);
BillingInfo billingInfo = new BillingInfo();
billingInfo.setBillNumber(tbMemberProjectSubitem.getBillNumber());
billingInfo.setMemberId(tbMemberProjectSubitem.getMemberId());
billingInfo.setBillNo(payMailBill.getBillNo());
//调用接口
AuthenticationUtils.postStandards("/billingInfo/billingInfo/billFromPayment",null,billingInfo);
}
/**
* 推送邮寄数据到会员系统
* @param payMailBill
* @param id
*/
@Override
public void pushSendToStandards(PayMailBill payMailBill, String id) {
TbMemberProjectSubitem tbMemberProjectSubitem = tbMemberProjectSubitemMapper.selectById(id);
BillingInfo billingInfo = new BillingInfo();
billingInfo.setBillNumber(tbMemberProjectSubitem.getBillNumber());
billingInfo.setMemberId(tbMemberProjectSubitem.getMemberId());
billingInfo.setBillNo(payMailBill.getBillNo());
billingInfo.setSendMethod(payMailBill.getSendMethod());
billingInfo.setSendDate(payMailBill.getSendDate());
billingInfo.setPostNo(payMailBill.getPostNo());
Map<String, String> stringStringMap = AuthenticationUtils.encryptByRsaPriKey();
String publicKey = stringStringMap.get("publicKey");
String token = stringStringMap.get("token");
String jsonString1 = JSONObject.toJSONString(billingInfo);
String post = HttpUtil.post(AuthenticationUtils.URL + "/billingInfo/billingInfo/postFromPayment?publicKey=" + publicKey + "&pushToken=" + token, jsonString1);
AuthenticationUtils.checkResult(post);
}
//校验不同项目是否属于同一个公司
private String checkCompanyProject(List<PayMailBillProject> bmpList) {
@@ -171,7 +207,7 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
for (int i = 0; i < bmpList.size(); i++) {
//之前开票总额
BigDecimal oldInvoiceAmount=new BigDecimal("0");
BigDecimal oldInvoiceAmount = new BigDecimal("0");
//之前开票总额+本次开票金额
BigDecimal invoiceAmount=new BigDecimal("0");
@@ -259,7 +295,7 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
if (!standardCompanyId.equals(tbMemberProject.getCompanyId())) {
return "打包开票只能是同一个企业";
}
oldInvoiceAmount = tbMemberProject.getInvoiceAmount();
oldInvoiceAmount = tbMemberProject.getInvoiceAmount()==null? oldInvoiceAmount:tbMemberProject.getInvoiceAmount();
//之前开票总额+本次开票金额
invoiceAmount = oldInvoiceAmount.add(bmpList.get(i).getInvoiceAmount()).setScale(2, BigDecimal.ROUND_HALF_UP);
//开票总额>应收
@@ -330,7 +366,7 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
TbMemberProjectSubitem tbMemberProject = tbMemberProjectSubitemMapper.selectById(payMailBillProject.getProjectId());
amountReceivable = tbMemberProject.getAmountReceivable();//应收
needInvoice = tbMemberProject.getInvoiceRequirements();//是否需要发票
oldInvoiceAmount = tbMemberProject.getInvoiceAmount();
oldInvoiceAmount = tbMemberProject.getInvoiceAmount()!=null?tbMemberProject.getInvoiceAmount():new BigDecimal("0");
//之前开票总额+本次开票金额
invoiceAmount = oldInvoiceAmount.add(invoiceAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
break;
@@ -182,6 +182,14 @@ public class TbMemberProjectSubitem implements Serializable {
@JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal invoiceAmount;
/**缴费单号*/
@ApiModelProperty(value = "缴费单号")
private String billNumber;
/**会员id*/
@ApiModelProperty(value = "会员id")
private String memberId;
public String convertisEmail(){
return PasswordUtil.decrypt(email);
}