Commit 5dfd16d2 authored by Java-范 志勇's avatar Java-范 志勇

整合代码 把线下还款由调用接口形式变为直接查询线上数据库方式

parent 6bb6da3b
......@@ -10,6 +10,7 @@ import com.google.common.base.Joiner;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.gq.financial.app.handler.RepayHandler;
......@@ -32,9 +33,9 @@ public class RepayFinancialAPP {
* Tip: 对帐单时 只需修改currentMonth和payType
* currentMonth 当前是几月就输入几 无须减1 后续代码里面已经处理
*/
static Integer currentMonth = 9;
static Integer currentMonth = 7;
static PayType payType = PayType.UMPay_Xjd;
static PayType payType = PayType.UMPay_BaiTiao;
static AbstractBills bill;
......
......@@ -5,35 +5,31 @@ import cn.gq.financial.model.bill.Bill;
import cn.gq.financial.model.bill.UMPayBill;
import cn.gq.financial.model.bill.WXBill;
import cn.gq.financial.model.bill.YeepayBill;
import cn.gq.financial.utils.BillParsers;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import java.io.File;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.function.Consumer;
/**
* Created by ocean on 2016/9/26.
*/
public class TotalAmountCheck {
static String[] lost = {
"1470995273554",
"1470995273550",
"1470995273567"
};
static Set<String> lostSet = new HashSet<>();
static String payAprroach = "微信";
static String payAccount = "微信-白条账户";
static String payAprroach = "联动";
static String payAccount = "联动-白条账户";
static Integer month = 9;
static String SRC_BILL_PATH = "E:\\WX_BILL_BAITIAO";
static String SRC_BILL_PATH = "E:\\UMP_BILL_BAITIAO";
static Class<? extends Bill> clazz = null;
static {
for (String lostId : lost) {
lostSet.add(lostId);
}
switch (payAprroach) {
case "微信":
clazz = WXBill.class;
......@@ -48,15 +44,23 @@ public class TotalAmountCheck {
}
public static void main(String args[]) throws Exception {
List<Bill> bills = RepayHandler.getBillsFromFile(SRC_BILL_PATH, clazz, payAccount, month);
BigDecimal total = new BigDecimal(0);
for (int i = 0; i < bills.size(); i++) {
if (!lostSet.contains(bills.get(i).getOrderId())) {
total = total.add(bills.get(i).getIncome());
} else {
System.out.println(bills.get(i).getOrderId().concat("--").concat(bills.get(i).getIncome().toString()));
}
File f = new File(SRC_BILL_PATH);
File[] files = f.listFiles();
List<Bill> all = new ArrayList<>();
for (File file :files) {
List<? extends Bill> bills = BillParsers.parseBillFromInputStream(file, clazz);
all.addAll(bills);
}
System.out.println(total);
/*BigDecimal total = BigDecimal.ZERO;
for (Bill bill:all){
total = total.add(bill.getIncome());
}
System.out.println(total);*/
all.stream().forEach(bill -> {
if("1474613845248".equals(bill.getOrderId())){
System.out.println(DateFormatUtils.ISO_DATE_FORMAT.format(bill.getTrandingDate()));
}
});
}
}
package cn.gq.financial.db.offline.dao;
import cn.gq.financial.db.offline.model.OfflineOrderEntity;
import cn.gq.financial.db.offline.model.OfflineOrderEntityExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface OfflineOrderEntityMapper {
int countByExample(OfflineOrderEntityExample example);
int deleteByExample(OfflineOrderEntityExample example);
int deleteByPrimaryKey(Long id);
int insert(OfflineOrderEntity record);
int insertSelective(OfflineOrderEntity record);
List<OfflineOrderEntity> selectByExample(OfflineOrderEntityExample example);
OfflineOrderEntity selectByPrimaryKey(Long id);
int updateByExampleSelective(@Param("record") OfflineOrderEntity record, @Param("example") OfflineOrderEntityExample example);
int updateByExample(@Param("record") OfflineOrderEntity record, @Param("example") OfflineOrderEntityExample example);
int updateByPrimaryKeySelective(OfflineOrderEntity record);
int updateByPrimaryKey(OfflineOrderEntity record);
}
\ No newline at end of file
package cn.gq.financial.db.offline.dao;
import cn.gq.financial.db.offline.model.OfflineUserDetailEntity;
import cn.gq.financial.db.offline.model.OfflineUserDetailEntityExample;
import cn.gq.financial.db.offline.model.OfflineUserDetailEntityKey;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface OfflineUserDetailEntityMapper {
int countByExample(OfflineUserDetailEntityExample example);
int deleteByExample(OfflineUserDetailEntityExample example);
int deleteByPrimaryKey(OfflineUserDetailEntityKey key);
int insert(OfflineUserDetailEntity record);
int insertSelective(OfflineUserDetailEntity record);
List<OfflineUserDetailEntity> selectByExample(OfflineUserDetailEntityExample example);
OfflineUserDetailEntity selectByPrimaryKey(OfflineUserDetailEntityKey key);
int updateByExampleSelective(@Param("record") OfflineUserDetailEntity record, @Param("example") OfflineUserDetailEntityExample example);
int updateByExample(@Param("record") OfflineUserDetailEntity record, @Param("example") OfflineUserDetailEntityExample example);
int updateByPrimaryKeySelective(OfflineUserDetailEntity record);
int updateByPrimaryKey(OfflineUserDetailEntity record);
}
\ No newline at end of file
......@@ -18,6 +18,7 @@
<result column="repaid_at" property="repaidAt" jdbcType="TIMESTAMP" />
<result column="repay_type" property="repayType" jdbcType="BIT" />
<result column="actual_repaid_at" property="actualRepaidAt" jdbcType="TIMESTAMP" />
<result column="pay_center_order_no" property="payCenterOrderNo" jdbcType="VARCHAR" />
</resultMap>
<sql id="Example_Where_Clause" >
<where >
......@@ -80,7 +81,7 @@
<sql id="Base_Column_List" >
id, order_id, order_amount, principal, interest, repaid_amount, overdue_amount, overdue_name,
overdue_args, collection_relief, active_relief, term_no, repaid_status, repaid_at,
repay_type, actual_repaid_at
repay_type, actual_repaid_at, pay_center_order_no
</sql>
<select id="selectByExample" resultMap="BaseResultMap" parameterType="cn.gq.financial.db.offline.model.OfflineOrderRepaidRecordEntityExample" >
select
......@@ -118,13 +119,13 @@
overdue_amount, overdue_name, overdue_args,
collection_relief, active_relief, term_no,
repaid_status, repaid_at, repay_type,
actual_repaid_at)
actual_repaid_at, pay_center_order_no)
values (#{id,jdbcType=BIGINT}, #{orderId,jdbcType=BIGINT}, #{orderAmount,jdbcType=DECIMAL},
#{principal,jdbcType=DECIMAL}, #{interest,jdbcType=DECIMAL}, #{repaidAmount,jdbcType=DECIMAL},
#{overdueAmount,jdbcType=DECIMAL}, #{overdueName,jdbcType=VARCHAR}, #{overdueArgs,jdbcType=VARCHAR},
#{collectionRelief,jdbcType=DECIMAL}, #{activeRelief,jdbcType=DECIMAL}, #{termNo,jdbcType=INTEGER},
#{repaidStatus,jdbcType=TINYINT}, #{repaidAt,jdbcType=TIMESTAMP}, #{repayType,jdbcType=BIT},
#{actualRepaidAt,jdbcType=TIMESTAMP})
#{actualRepaidAt,jdbcType=TIMESTAMP}, #{payCenterOrderNo,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="cn.gq.financial.db.offline.model.OfflineOrderRepaidRecordEntity" >
insert into order_repaid_record
......@@ -177,6 +178,9 @@
<if test="actualRepaidAt != null" >
actual_repaid_at,
</if>
<if test="payCenterOrderNo != null" >
pay_center_order_no,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="id != null" >
......@@ -227,6 +231,9 @@
<if test="actualRepaidAt != null" >
#{actualRepaidAt,jdbcType=TIMESTAMP},
</if>
<if test="payCenterOrderNo != null" >
#{payCenterOrderNo,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="cn.gq.financial.db.offline.model.OfflineOrderRepaidRecordEntityExample" resultType="java.lang.Integer" >
......@@ -286,6 +293,9 @@
<if test="record.actualRepaidAt != null" >
actual_repaid_at = #{record.actualRepaidAt,jdbcType=TIMESTAMP},
</if>
<if test="record.payCenterOrderNo != null" >
pay_center_order_no = #{record.payCenterOrderNo,jdbcType=VARCHAR},
</if>
</set>
<if test="_parameter != null" >
<include refid="Update_By_Example_Where_Clause" />
......@@ -308,7 +318,8 @@
repaid_status = #{record.repaidStatus,jdbcType=TINYINT},
repaid_at = #{record.repaidAt,jdbcType=TIMESTAMP},
repay_type = #{record.repayType,jdbcType=BIT},
actual_repaid_at = #{record.actualRepaidAt,jdbcType=TIMESTAMP}
actual_repaid_at = #{record.actualRepaidAt,jdbcType=TIMESTAMP},
pay_center_order_no = #{record.payCenterOrderNo,jdbcType=VARCHAR}
<if test="_parameter != null" >
<include refid="Update_By_Example_Where_Clause" />
</if>
......@@ -361,6 +372,9 @@
<if test="actualRepaidAt != null" >
actual_repaid_at = #{actualRepaidAt,jdbcType=TIMESTAMP},
</if>
<if test="payCenterOrderNo != null" >
pay_center_order_no = #{payCenterOrderNo,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
......@@ -380,7 +394,8 @@
repaid_status = #{repaidStatus,jdbcType=TINYINT},
repaid_at = #{repaidAt,jdbcType=TIMESTAMP},
repay_type = #{repayType,jdbcType=BIT},
actual_repaid_at = #{actualRepaidAt,jdbcType=TIMESTAMP}
actual_repaid_at = #{actualRepaidAt,jdbcType=TIMESTAMP},
pay_center_order_no = #{payCenterOrderNo,jdbcType=VARCHAR}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>
\ No newline at end of file
package cn.gq.financial.db.offline.model;
import java.math.BigDecimal;
import java.util.Date;
public class OfflineOrderEntity {
private Long id;
private Long userId;
private Boolean isActive;
private BigDecimal goodsAmount;
private BigDecimal downPayAmount;
private BigDecimal orderAmount;
private Long goodsDetailId;
private Long merchantId;
private Byte instalment;
private Long reviewId;
private Byte spiderExecProgress;
private Byte progress;
private Date createdAt;
private Date updatedAt;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Boolean getIsActive() {
return isActive;
}
public void setIsActive(Boolean isActive) {
this.isActive = isActive;
}
public BigDecimal getGoodsAmount() {
return goodsAmount;
}
public void setGoodsAmount(BigDecimal goodsAmount) {
this.goodsAmount = goodsAmount;
}
public BigDecimal getDownPayAmount() {
return downPayAmount;
}
public void setDownPayAmount(BigDecimal downPayAmount) {
this.downPayAmount = downPayAmount;
}
public BigDecimal getOrderAmount() {
return orderAmount;
}
public void setOrderAmount(BigDecimal orderAmount) {
this.orderAmount = orderAmount;
}
public Long getGoodsDetailId() {
return goodsDetailId;
}
public void setGoodsDetailId(Long goodsDetailId) {
this.goodsDetailId = goodsDetailId;
}
public Long getMerchantId() {
return merchantId;
}
public void setMerchantId(Long merchantId) {
this.merchantId = merchantId;
}
public Byte getInstalment() {
return instalment;
}
public void setInstalment(Byte instalment) {
this.instalment = instalment;
}
public Long getReviewId() {
return reviewId;
}
public void setReviewId(Long reviewId) {
this.reviewId = reviewId;
}
public Byte getSpiderExecProgress() {
return spiderExecProgress;
}
public void setSpiderExecProgress(Byte spiderExecProgress) {
this.spiderExecProgress = spiderExecProgress;
}
public Byte getProgress() {
return progress;
}
public void setProgress(Byte progress) {
this.progress = progress;
}
public Date getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}
public Date getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Date updatedAt) {
this.updatedAt = updatedAt;
}
}
\ No newline at end of file
......@@ -36,6 +36,8 @@ public class OfflineOrderRepaidRecordEntity {
private Date actualRepaidAt;
private String payCenterOrderNo;
public Long getId() {
return id;
}
......@@ -163,4 +165,12 @@ public class OfflineOrderRepaidRecordEntity {
public void setActualRepaidAt(Date actualRepaidAt) {
this.actualRepaidAt = actualRepaidAt;
}
public String getPayCenterOrderNo() {
return payCenterOrderNo;
}
public void setPayCenterOrderNo(String payCenterOrderNo) {
this.payCenterOrderNo = payCenterOrderNo == null ? null : payCenterOrderNo.trim();
}
}
\ No newline at end of file
......@@ -1085,6 +1085,76 @@ public class OfflineOrderRepaidRecordEntityExample {
addCriterion("actual_repaid_at not between", value1, value2, "actualRepaidAt");
return (Criteria) this;
}
public Criteria andPayCenterOrderNoIsNull() {
addCriterion("pay_center_order_no is null");
return (Criteria) this;
}
public Criteria andPayCenterOrderNoIsNotNull() {
addCriterion("pay_center_order_no is not null");
return (Criteria) this;
}
public Criteria andPayCenterOrderNoEqualTo(String value) {
addCriterion("pay_center_order_no =", value, "payCenterOrderNo");
return (Criteria) this;
}
public Criteria andPayCenterOrderNoNotEqualTo(String value) {
addCriterion("pay_center_order_no <>", value, "payCenterOrderNo");
return (Criteria) this;
}
public Criteria andPayCenterOrderNoGreaterThan(String value) {
addCriterion("pay_center_order_no >", value, "payCenterOrderNo");
return (Criteria) this;
}
public Criteria andPayCenterOrderNoGreaterThanOrEqualTo(String value) {
addCriterion("pay_center_order_no >=", value, "payCenterOrderNo");
return (Criteria) this;
}
public Criteria andPayCenterOrderNoLessThan(String value) {
addCriterion("pay_center_order_no <", value, "payCenterOrderNo");
return (Criteria) this;
}
public Criteria andPayCenterOrderNoLessThanOrEqualTo(String value) {
addCriterion("pay_center_order_no <=", value, "payCenterOrderNo");
return (Criteria) this;
}
public Criteria andPayCenterOrderNoLike(String value) {
addCriterion("pay_center_order_no like", value, "payCenterOrderNo");
return (Criteria) this;
}
public Criteria andPayCenterOrderNoNotLike(String value) {
addCriterion("pay_center_order_no not like", value, "payCenterOrderNo");
return (Criteria) this;
}
public Criteria andPayCenterOrderNoIn(List<String> values) {
addCriterion("pay_center_order_no in", values, "payCenterOrderNo");
return (Criteria) this;
}
public Criteria andPayCenterOrderNoNotIn(List<String> values) {
addCriterion("pay_center_order_no not in", values, "payCenterOrderNo");
return (Criteria) this;
}
public Criteria andPayCenterOrderNoBetween(String value1, String value2) {
addCriterion("pay_center_order_no between", value1, value2, "payCenterOrderNo");
return (Criteria) this;
}
public Criteria andPayCenterOrderNoNotBetween(String value1, String value2) {
addCriterion("pay_center_order_no not between", value1, value2, "payCenterOrderNo");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {
......
package cn.gq.financial.db.offline.model;
import java.util.Date;
public class OfflineUserDetailEntity extends OfflineUserDetailEntityKey {
private Long userId;
private String phoneNo;
private String name;
private Byte gender;
private String qq;
private String idNo;
private Date createdAt;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getPhoneNo() {
return phoneNo;
}
public void setPhoneNo(String phoneNo) {
this.phoneNo = phoneNo == null ? null : phoneNo.trim();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name == null ? null : name.trim();
}
public Byte getGender() {
return gender;
}
public void setGender(Byte gender) {
this.gender = gender;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq == null ? null : qq.trim();
}
public String getIdNo() {
return idNo;
}
public void setIdNo(String idNo) {
this.idNo = idNo == null ? null : idNo.trim();
}
public Date getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}
}
\ No newline at end of file
package cn.gq.financial.db.offline.model;
import java.util.Date;
public class OfflineUserDetailEntityKey {
private Long id;
private Date updatedAt;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Date getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Date updatedAt) {
this.updatedAt = updatedAt;
}
}
\ No newline at end of file
......@@ -25,5 +25,5 @@ public interface ExportExcelMapper {
public List<LoanExpEntity> exportYeepay(@Param("list")List<Long> loanIds);
public List<BaitiaoExpEntity> baitiaoRepayExport(@Param("list")List<String> list);
public List<BaitiaoExpEntity> baitiaoRepayExport(@Param("list")List<Long> list);
}
......@@ -369,7 +369,7 @@
AND bm.id=bo.`merchant_id`
AND ud.`user_id` = brp.`user_id`
WHERE
brp.`pay_center_order_no` IN
brp.`id` IN
<foreach collection="list" item="listItem" open="(" close=")" separator="," >
#{listItem}
</foreach>
......
......@@ -12,7 +12,7 @@ public abstract class Bill {
protected Integer month;
protected Date trandingDate;
protected Date trandingDate; //交易时间
protected String payAccount;// 支付账户
......
package cn.gq.financial.model.enums;
import lombok.Getter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 条款类型
* Created by ag on 16/3/11.
*/
@Getter
public enum Instalment {
INS_0("不分期"), //0
INS_2("2期"), //1
INS_3("3期"), //2
INS_4("4期"), //3
INS_5("5期"), //4
INS_6("6期"), //5
INS_7("7期"), //6
INS_8("8期"), //7
INS_9("9期"), //8
INS_10("10期"), //9
INS_11("11期"), //10
INS_12("12期"); //11
private String desc;
Instalment(String desc) {
this.desc = desc;
}
public static final Map<String, Instalment> ORDINAL_INSTALMENT = new HashMap<>();
static {
Instalment[] instalments = Instalment.values();
for (Instalment instalment : instalments) {
ORDINAL_INSTALMENT.put(String.valueOf(instalment.getInstalmentPeriod()), instalment);
}
}
public static List<Instalment> convert(String instalmentStr) {
List<Instalment> result = new ArrayList<>();
for (String instalmentOrdinal : instalmentStr.split(",")) {
result.add(ORDINAL_INSTALMENT.get(instalmentOrdinal));
}
return result;
}
public static Instalment toEnum(String instalment) {
return ORDINAL_INSTALMENT.get(instalment);
}
public Integer getInstalmentPeriod() {
return ordinal() + 1;
}
}
......@@ -8,8 +8,15 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cn.gq.financial.db.offline.dao.OfflineOrderEntityMapper;
import cn.gq.financial.db.offline.dao.OfflineOrderRepaidRecordEntityMapper;
import cn.gq.financial.db.offline.dao.OfflineUserDetailEntityMapper;
import cn.gq.financial.db.offline.model.*;
import cn.gq.financial.model.enums.Instalment;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import cn.gq.financial.db.paycenter.model.RepayOrderEntity;
......@@ -29,35 +36,120 @@ public class BaitiaoOfflineDetailService implements DetailService {
static final String baitiao_url = "http://offapi.xyqb.com/ex/financial/get_repay_plan";
static Gson GSON = new Gson();
public List<RepayDetailFinancial> getDetailByPayCenterRepayOrder(List<RepayOrderEntity> repayOrderEntity) {
List<RepayDetailFinancial> baitiaoAllDetail = new ArrayList<RepayDetailFinancial>();
if(null != repayOrderEntity && repayOrderEntity.size()>0){
for (RepayOrderEntity entity : repayOrderEntity) {
LOGGER.info("获取线下白条还款明细,orderId-->{}",entity.getOrderId());
try{
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("repaidAt", entity.getRepaidAt().getTime()+"");
parameters.put("merchantOrderNo", entity.getMerchantOrderNo());
parameters.put("merchantRepayOrder", entity.getMerchantRepayOrderNo());
String post = HttpUtils.doGet(baitiao_url, parameters);
Type type = new TypeToken<ArrayList<RepayDetailFromXyqbOffline>>() {
}.getType();
List<RepayDetailFromXyqbOffline> baitiaoDetails = GSON.fromJson(post, type);
if(null != baitiaoDetails && baitiaoDetails.size()>0) {
for (RepayDetailFromXyqbOffline detail : baitiaoDetails) {
detail.setOrderId(entity.getOrderId());
baitiaoAllDetail.add(convert2RepayDetailFinancial(detail));
}
}
}catch(Exception e){
LOGGER.error("获取线下白条还款明细异常",e);
}
}
}
return baitiaoAllDetail;
}
@Autowired
private OfflineOrderRepaidRecordEntityMapper offlineOrderRepaidRecordEntityMapper;
@Autowired
private OfflineOrderEntityMapper offlineOrderEntityMapper;
@Autowired
private OfflineUserDetailEntityMapper offlineUserDetailEntityMapper;
@Override
public List<RepayDetailFinancial> getDetailByPayCenterRepayOrder(List<RepayOrderEntity> repayOrderEntity) {
List<RepayDetailFinancial> baitiaoAllDetail = new ArrayList<RepayDetailFinancial>();
if(CollectionUtils.isNotEmpty(repayOrderEntity)) {
for (RepayOrderEntity entity : repayOrderEntity) {
/**
* 放款信息
*/
OfflineOrderEntityExample orderExample = new OfflineOrderEntityExample();
orderExample.createCriteria().andIdEqualTo(Long.valueOf(entity.getMerchantOrderNo()));
//.andIsActiveEqualTo(Boolean.FALSE);
OfflineOrderEntity offlineOrder = offlineOrderEntityMapper.selectByExample(orderExample).get(0);
OfflineUserDetailEntityExample userExample = new OfflineUserDetailEntityExample();
userExample.createCriteria().andUserIdEqualTo(Long.valueOf(offlineOrder.getUserId()));
OfflineUserDetailEntity userDetail = offlineUserDetailEntityMapper.selectByExample(userExample).get(0);
/**
* 还款计划
*/
String payCenterOrderNo = entity.getMerchantRepayOrderNo();
List<Long> ids = new ArrayList<>();
String[] split = payCenterOrderNo.split(",");
for (String id:split){
ids.add(Long.valueOf(id));
}
OfflineOrderRepaidRecordEntityExample repayExample = new OfflineOrderRepaidRecordEntityExample();
repayExample.createCriteria().andIdIn(ids);
List<OfflineOrderRepaidRecordEntity> orderRepaidRecords = offlineOrderRepaidRecordEntityMapper.selectByExample(repayExample);
for (OfflineOrderRepaidRecordEntity orderRepaidRecord : orderRepaidRecords) {
RepayDetailFromXyqbOffline repayPlanDetail = new RepayDetailFromXyqbOffline();
//放款金额,订单金额
repayPlanDetail.setRequiredPayAmount(offlineOrder.getOrderAmount().toString());
//实际还款金额
BigDecimal overDueAmount = orderRepaidRecord.getOverdueAmount();
overDueAmount = overDueAmount == null ? BigDecimal.ZERO : overDueAmount;
String actualPayAmount = orderRepaidRecord.getRepaidAmount().add(overDueAmount).toString();
repayPlanDetail.setActualPayAmount(offlineOrder.getOrderAmount().toString());
repayPlanDetail.setDeadline(orderRepaidRecord.getRepaidAt().getTime());
repayPlanDetail.setTermNo(Instalment.values()[(int) offlineOrder.getInstalment()].getInstalmentPeriod());
repayPlanDetail.setCurrTermNo(orderRepaidRecord.getTermNo());
repayPlanDetail.setLoanPaidAt(offlineOrder.getCreatedAt().getTime());
repayPlanDetail.setRequiredRepayment(actualPayAmount);
repayPlanDetail.setPrincipal(orderRepaidRecord.getPrincipal().toString());
repayPlanDetail.setInterest(orderRepaidRecord.getInterest().toString());
repayPlanDetail.setOverdueInterest(overDueAmount.toString());
repayPlanDetail.setServiceFeePerTerm("0");
repayPlanDetail.setDiscount("0");
repayPlanDetail.setCollectionRelief("0");
repayPlanDetail.setFundingCorpId(-1L);
repayPlanDetail.setFundingCorp("保理公司");
repayPlanDetail.setDebtFundingCorp("保理公司");
repayPlanDetail.setUserName(userDetail.getName());
repayPlanDetail.setPhoneNo(userDetail.getPhoneNo());
repayPlanDetail.setIdNo(userDetail.getIdNo());
RepayDetailFinancial repayDetailFinancial = convert2RepayDetailFinancial(repayPlanDetail);
repayDetailFinancial.setOrderId(entity.getOrderId());
repayDetailFinancial.setRepaymentPlanId(orderRepaidRecord.getId());
repayDetailFinancial.setPayCenterOrderNo(entity.getMerchantRepayOrderNo());
repayDetailFinancial.setLoanApplicationHistoryId(Long.valueOf(entity.getMerchantOrderNo()));
baitiaoAllDetail.add(repayDetailFinancial);
}
}
}
return baitiaoAllDetail;
}
/*public List<RepayDetailFinancial> getDetailByPayCenterRepayOrder(List<RepayOrderEntity> repayOrderEntity) {
List<RepayDetailFinancial> baitiaoAllDetail = new ArrayList<RepayDetailFinancial>();
if (null != repayOrderEntity && repayOrderEntity.size() > 0) {
for (RepayOrderEntity entity : repayOrderEntity) {
LOGGER.info("获取线下白条还款明细,orderId-->{}", entity.getOrderId());
try {
String merchantRepayOrderNos = entity.getMerchantRepayOrderNo();
String[] split = merchantRepayOrderNos.split(",");
List<Long> ids = new ArrayList<>();
for (String id : split) {
ids.add(Long.valueOf(id));
}
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("repaidAt", entity.getRepaidAt().getTime() + "");
parameters.put("merchantOrderNo", entity.getMerchantOrderNo());
parameters.put("merchantRepayOrder", ids);
String post = HttpUtils.doGet(baitiao_url, parameters);
Type type = new TypeToken<ArrayList<RepayDetailFromXyqbOffline>>() {
}.getType();
List<RepayDetailFromXyqbOffline> baitiaoDetails = GSON.fromJson(post, type);
if (null != baitiaoDetails && baitiaoDetails.size() > 0) {
for (RepayDetailFromXyqbOffline detail : baitiaoDetails) {
detail.setOrderId(entity.getOrderId());
baitiaoAllDetail.add(convert2RepayDetailFinancial(detail));
}
}
} catch (Exception e) {
LOGGER.error("获取线下白条还款明细异常", e);
}
}
}
return baitiaoAllDetail;
}*/
private RepayDetailFinancial convert2RepayDetailFinancial(RepayDetailFromXyqbOffline entity) {
RepayDetailFinancial detail = new RepayDetailFinancial();
......
......@@ -9,6 +9,7 @@ import java.util.Map;
import java.util.Set;
import cn.gq.financial.utils.Constants;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -47,33 +48,44 @@ public class BaitiaoOnlineDetailService implements DetailService {
Set<String> merchantRepayOrderNoSet = new HashSet<String>();
for (RepayOrderEntity entity : repayOrderEntities) {
merchantRepayOrderNoSet.add(entity.getMerchantRepayOrderNo());
map.put(entity.getMerchantRepayOrderNo(), entity);
String[] split = entity.getMerchantRepayOrderNo().split("_");
for (String id:split){
map.put(id,entity);
}
// map.put(entity.getMerchantRepayOrderNo(), entity);
}
List<BaitiaoExpEntity> baitiaoExpEntities = getBaiTiaoExp(new ArrayList<String>(merchantRepayOrderNoSet));
List<String> mallOrder = new ArrayList<String>();
Map<String, BaitiaoExpEntity> baitiaoMap = new HashMap<String, BaitiaoExpEntity>();
Set<String> mallOrder = new HashSet<>();
Map<String, List<BaitiaoExpEntity>> baitiaoMap = new HashMap<>();
for (BaitiaoExpEntity baitiaoExpEntity : baitiaoExpEntities) {
Long merchantId = baitiaoExpEntity.getMerchantId();
if (set.contains(merchantId)) { // 如果是自己商城的订单
mallOrder.add(baitiaoExpEntity.getOrderNo());
}
baitiaoMap.put(baitiaoExpEntity.getOrderNo(), baitiaoExpEntity);
List<BaitiaoExpEntity> list = baitiaoMap.get(baitiaoExpEntity.getOrderNo());
if(null == list){
list = new ArrayList<>();
}
list.add(baitiaoExpEntity);
baitiaoMap.put(baitiaoExpEntity.getOrderNo(), list);
}
// 从mall库获取详细
List<BaitiaoOrderDetail> details = getBaitiaoOrderDetails(mallOrder);
List<BaitiaoOrderDetail> details = getBaitiaoOrderDetails(new ArrayList<>(mallOrder));
for (BaitiaoOrderDetail detail : details) {
BaitiaoExpEntity entity = baitiaoMap.get(detail.getOrderNo());
if (null != entity) {
entity.setProductName(detail.getProductName());
entity.setSellPrice(detail.getSellPrice());
if (detail.getType() == 7) {
setProductDetail3C(detail, entity);
List<BaitiaoExpEntity> list = baitiaoMap.get(detail.getOrderNo());
if (null != list) {
for (BaitiaoExpEntity entity : list){
entity.setProductName(detail.getProductName());
entity.setSellPrice(detail.getSellPrice());
if (detail.getType() == 7) {
setProductDetail3C(detail, entity);
}
}
}
}
// 放如量化派流水号
for (BaitiaoExpEntity expEntity : baitiaoExpEntities) {
RepayOrderEntity repayOrderEntity = map.get(expEntity.getPayCenterOrderNo());
RepayOrderEntity repayOrderEntity = map.get(expEntity.getRepaymentPlanId().toString());
expEntity.setLhpNo(repayOrderEntity.getOrderId());
result.add(convert2RepayDetailFinancial(expEntity));
}
......@@ -84,6 +96,7 @@ public class BaitiaoOnlineDetailService implements DetailService {
RepayDetailFinancial detail = new RepayDetailFinancial();
detail.setBizType(DetailService.BIZ_TYPE_BAITIAO);
detail.setRepaymentPlanId(entity.getRepaymentPlanId());
detail.setFundingCorpName(entity.getMerchantName());
detail.setOrderId(entity.getLhpNo());
detail.setLhpSeriaNo(entity.getLhpNo());
detail.setUserName(entity.getUserName());
......@@ -177,21 +190,28 @@ public class BaitiaoOnlineDetailService implements DetailService {
private List<BaitiaoExpEntity> getBaiTiaoExp(List<String> merchantRepayOrderNoList) {
int size = merchantRepayOrderNoList.size();
List<BaitiaoExpEntity> baitiaoExpEntities = null;
List<Long> baitiaoOrderIds = new ArrayList<>();
for (String payCenterRepayOrderNo:merchantRepayOrderNoList){
String[] split = payCenterRepayOrderNo.split("_");
for (String id:split){
baitiaoOrderIds.add(Long.valueOf(id));
}
}
if (size > 0) {
if (size < item_size) {
List<BaitiaoExpEntity> list = exportExcelMapper.baitiaoRepayExport(merchantRepayOrderNoList);
List<BaitiaoExpEntity> list = exportExcelMapper.baitiaoRepayExport(baitiaoOrderIds);
return list;
} else {
baitiaoExpEntities = new ArrayList<BaitiaoExpEntity>();
int group = size / item_size;
int i = 0;
for (i = 0; i < group; i++) {
List<String> subList = merchantRepayOrderNoList.subList(i * item_size, (i + 1) * item_size);
List<Long> subList = baitiaoOrderIds.subList(i * item_size, (i + 1) * item_size);
List<BaitiaoExpEntity> list = exportExcelMapper.baitiaoRepayExport(subList);
baitiaoExpEntities.addAll(list);
}
if (0 != size % item_size) {
List<String> subList = merchantRepayOrderNoList.subList(i * item_size, merchantRepayOrderNoList.size());
List<Long> subList = baitiaoOrderIds.subList(i * item_size, baitiaoOrderIds.size());
List<BaitiaoExpEntity> list = exportExcelMapper.baitiaoRepayExport(subList);
baitiaoExpEntities.addAll(list);
}
......
......@@ -64,7 +64,7 @@ public class XYQBDetailService implements DetailService {
if (null == result) {
emap.put(entity.getRepaymentPlanId(), entity);
} else {
if(null != result.getContractCreatedAt()&& null != result.getContractCreatedAt()) {
if(null != result.getContractCreatedAt()) {
if (result.getContractCreatedAt().getTime() < entity.getContractCreatedAt().getTime()) {
emap.put(entity.getRepaymentPlanId(), entity);
}
......
......@@ -24,6 +24,10 @@ public class BillParsers {
static String PARSE_PATTERN_1 = "yyyy-MM-dd HH:mm:ss";
static String PARSE_PATTERN_2 = "yyyyMMdd";
public static <T> List<T> parseBillFromInputStream(String filePath, Class<T> clazz) throws Exception {
return parseBillFromInputStream(new FileInputStream(filePath), clazz);
}
public static <T> List<T> parseBillFromInputStream(File file, Class<T> clazz) throws Exception {
return parseBillFromInputStream(new FileInputStream(file), clazz);
}
......@@ -31,7 +35,7 @@ public class BillParsers {
@SuppressWarnings("unchecked")
public static <T> List<T> parseBillFromInputStream(InputStream inputStream, Class<T> clazz) throws Exception {
if (clazz.equals(YeepayBill.class)) {
return (List<T>) parseBillYeepay(inputStream);
return (List<T>) parseBillYeepayFromInputStream(inputStream);
}
if (clazz.equals(WXBill.class)) {
return (List<T>) parseBillWXPayFromInputStream(inputStream);
......
......@@ -96,7 +96,7 @@ public class HttpUtils {
}
apiUrl += param;
String result = null;
CloseableHttpClient httpclient = HttpClients.custom().build();
CloseableHttpClient httpclient = HttpClients.custom().setConnectionManager(connMgr).setDefaultRequestConfig(requestConfig).build();
try {
HttpGet httpPost = new HttpGet(apiUrl);
CloseableHttpResponse response = null;
......@@ -119,7 +119,8 @@ public class HttpUtils {
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
}
/*finally {
if (httpclient != null) {
try {
httpclient.close();
......@@ -127,7 +128,7 @@ public class HttpUtils {
e.printStackTrace();
}
}
}
}*/
return result;
}
......@@ -149,7 +150,7 @@ public class HttpUtils {
* @return
*/
public static String doPost(String apiUrl, Map<String, Object> params) {
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(connMgr).setDefaultRequestConfig(requestConfig).build();
String httpStr = null;
HttpPost httpPost = new HttpPost(apiUrl);
CloseableHttpResponse response = null;
......
......@@ -37,4 +37,9 @@ lkbadmin.jdbc.password=wj0msj8J8/v2Ee6Xl75ZDizrJBdEDOAQGlxTGKbRFng=
#localDB
local.repayment.jdbc.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
local.repayment.jdbc.username=root
local.repayment.jdbc.password=root
\ No newline at end of file
local.repayment.jdbc.password=root
#offlineBaitiao
offlineBaitiao.jdbc.url=jdbc:mysql://172.168.20.125:3307/offline?useUnicode=true&characterEncoding=UTF8
offlineBaitiao.jdbc.username=xyqb_offline
offlineBaitiao.jdbc.password=UJdcOndlPChVZM1X
\ No newline at end of file
......@@ -148,8 +148,22 @@
<property name="maxActive" value="50"/>
<!--minIdle: 最小空闲连接-->
<property name="minIdle" value="5"/>
</bean>
</bean>
<!-- 线下白条数据源 -->
<bean id="offlineDS"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driver.name}"/>
<property name="url" value="${offlineBaitiao.jdbc.url}"/>
<property name="username" value="${offlineBaitiao.jdbc.username}"/>
<property name="password" value="${offlineBaitiao.jdbc.password}"/>
<!--maxActive: 最大连接数量-->
<property name="maxActive" value="50"/>
<!--minIdle: 最小空闲连接-->
<property name="minIdle" value="5"/>
</bean>
<!-- 商城数据源 -->
<!-- <bean id="mallDS"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
......@@ -225,7 +239,14 @@
<property name="configLocation" value="classpath:mybatis-mall-config.xml"></property>
<property name="dataSource" ref="mallDS" />
</bean>
<!-- offline数据源SqlSessionFactory -->
<bean id="offlineSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-offline-config.xml"></property>
<property name="dataSource" ref="offlineDS" />
</bean>
<!-- lkbadmin数据源SqlSessionFactory -->
<!-- <bean id="lkbAdminSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-lkbadmin-config.xml"></property>
......@@ -255,6 +276,12 @@
<property name="basePackage" value="cn.gq.financial.db.mall.dao" />
<property name="sqlSessionFactoryBeanName" value="mallSqlSessionFactory" />
</bean>
<!-- offline数据源SqlSessionFactory的扫描 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.gq.financial.db.offline.dao" />
<property name="sqlSessionFactoryBeanName" value="offlineSqlSessionFactory" />
</bean>
<!-- financial数据源SqlSessionFactory的扫描 -->
<!-- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC
"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<mappers>
<mapper resource="cn/gq/financial/db/offline/mapping/OfflineOrderRepaidRecordEntityMapper.xml"/>
<mapper resource="cn/gq/financial/db/offline/mapping/OfflineOrderEntityMapper.xml"/>
<mapper resource="cn/gq/financial/db/offline/mapping/OfflineUserDetailEntityMapper.xml"/>
</mappers>
</configuration>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment