邮储逾期回购凭证生成
This commit is contained in:
parent
63a789bde2
commit
f9ab7e6115
@ -6,14 +6,23 @@ import com.tenwa.voucher.CreateVoucherProcess.CreateVoucherCustCautionMoneyIncom
|
||||
import com.tenwa.voucher.CreateVoucherProcess.CreateVoucherEbankMoney;
|
||||
import com.tenwa.voucher.CreateVoucherProcess.CreateVoucherRedCompensatory;
|
||||
import com.tenwa.voucher.CreateVoucherProcess.CreateVoucherRentIncome;
|
||||
import com.tenwa.voucher.serviceImp.OverdueRepayPlanVoucherPSBC;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* 网银收款流程结束后生成相应的凭证
|
||||
* @author xiezhiwen
|
||||
*/
|
||||
public class IncomeVoucher extends BaseBussiness {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(IncomeVoucher.class);
|
||||
@Override
|
||||
public Object run(Transaction Sqlca) throws Exception {
|
||||
OverdueRepayPlanVoucherPSBC overdueRepayPlanVoucherPSBC = new OverdueRepayPlanVoucherPSBC();
|
||||
if(overdueRepayPlanVoucherPSBC.findFcPSBCOverduce(this.getAttribute("FlowUnid").toString())){
|
||||
logger.info("IncomeVoucher 网银收款流程结束后生成相应的凭证,当前是邮储相关订单凭证不执行以下操作。");
|
||||
return "true";
|
||||
}
|
||||
this.initBussinessParam(Sqlca);
|
||||
String FlowUnid=this.getAttribute("FlowUnid").toString();
|
||||
String userid = this.getAttribute("CurUserID").toString();
|
||||
|
||||
@ -39,20 +39,48 @@ public class InsertVoucherRentIncome {
|
||||
* 查询数据, 判断是否需要执行插入中间表
|
||||
*/
|
||||
// 查询是否有当月的, 未生成凭证的数据(卡扣)
|
||||
String sqls1="SELECT lri.RENT FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT income_id,LRI_ID FROM lv_rent_income GROUP BY INCOME_ID,LRI_ID) LV1 ON LV1.INCOME_ID = LRI.PLAN_ID AND LV1.LRI_ID = LRI.ID LEFT JOIN (SELECT income_id,LRI_ID FROM lv_rent_income2 GROUP BY INCOME_ID,LRI_ID) LV2 ON LV2.INCOME_ID = LRI.PLAN_ID AND LV2.LRI_ID = LRI.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV3 ON LV3.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV4 ON LV4.INCOME_ID = LRP.ID WHERE LRI.CHARGE_WAY IN ('AutoBuckle','WXPay','WXUnionPay') AND lri.rent > 0 AND (LV1.INCOME_ID IS NULL AND LV2.INCOME_ID IS NULL AND LV3.INCOME_ID IS NULL AND LV4.INCOME_ID IS NULL) AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d') AND DATE_FORMAT(NOW(),'%Y-%m') = DATE_FORMAT(lrp.plan_date, '%Y-%m')";
|
||||
String sqls1="SELECT lri.RENT FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT income_id,LRI_ID FROM lv_rent_income GROUP BY INCOME_ID,LRI_ID) LV1 ON LV1.INCOME_ID = LRI.PLAN_ID AND LV1.LRI_ID = LRI.ID LEFT JOIN (SELECT income_id,LRI_ID FROM lv_rent_income2 GROUP BY INCOME_ID,LRI_ID) LV2 ON LV2.INCOME_ID = LRI.PLAN_ID AND LV2.LRI_ID = LRI.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV3 ON LV3.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV4 ON LV4.INCOME_ID = LRP.ID " +
|
||||
" LEFT JOIN fc_yc_overdue_repay_plan fyorp ON fyorp.rent_plan_id = lri.PLAN_ID " +
|
||||
" WHERE LRI.CHARGE_WAY IN ('AutoBuckle','WXPay','WXUnionPay') AND lri.rent > 0 " +
|
||||
" AND fyorp.id IS NULL " +
|
||||
" AND (LV1.INCOME_ID IS NULL AND LV2.INCOME_ID IS NULL AND LV3.INCOME_ID IS NULL AND LV4.INCOME_ID IS NULL) AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d') AND DATE_FORMAT(NOW(),'%Y-%m') = DATE_FORMAT(lrp.plan_date, '%Y-%m')";
|
||||
// 查询跨月的, 未生成凭证的数据(卡扣)
|
||||
String sqls2="SELECT lri.RENT FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT income_id,LRI_ID FROM lv_rent_income GROUP BY INCOME_ID,LRI_ID) LV1 ON LV1.INCOME_ID = LRI.PLAN_ID AND LV1.LRI_ID = LRI.ID LEFT JOIN (SELECT income_id,LRI_ID FROM lv_rent_income2 GROUP BY INCOME_ID,LRI_ID) LV2 ON LV2.INCOME_ID = LRI.PLAN_ID AND LV2.LRI_ID = LRI.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV3 ON LV3.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV4 ON LV4.INCOME_ID = LRP.ID WHERE LRI.CHARGE_WAY IN ('AutoBuckle','WXPay','WXUnionPay') AND lri.rent > 0 AND (LV1.INCOME_ID IS NULL AND LV2.INCOME_ID IS NULL AND LV3.INCOME_ID IS NULL AND LV4.INCOME_ID IS NULL) AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d') AND DATE_FORMAT(NOW(),'%Y-%m')<> DATE_FORMAT(lrp.plan_date, '%Y-%m')";
|
||||
String sqls2="SELECT lri.RENT FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT income_id,LRI_ID FROM lv_rent_income GROUP BY INCOME_ID,LRI_ID) LV1 ON LV1.INCOME_ID = LRI.PLAN_ID AND LV1.LRI_ID = LRI.ID LEFT JOIN (SELECT income_id,LRI_ID FROM lv_rent_income2 GROUP BY INCOME_ID,LRI_ID) LV2 ON LV2.INCOME_ID = LRI.PLAN_ID AND LV2.LRI_ID = LRI.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV3 ON LV3.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV4 ON LV4.INCOME_ID = LRP.ID " +
|
||||
" LEFT JOIN fc_yc_overdue_repay_plan fyorp ON fyorp.rent_plan_id = lri.PLAN_ID " +
|
||||
" WHERE LRI.CHARGE_WAY IN ('AutoBuckle','WXPay','WXUnionPay') AND lri.rent > 0 " +
|
||||
" AND fyorp.id IS NULL " +
|
||||
" AND (LV1.INCOME_ID IS NULL AND LV2.INCOME_ID IS NULL AND LV3.INCOME_ID IS NULL AND LV4.INCOME_ID IS NULL) AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d') AND DATE_FORMAT(NOW(),'%Y-%m')<> DATE_FORMAT(lrp.plan_date, '%Y-%m')";
|
||||
// 查询当前数据是否有逾期利息(卡扣)
|
||||
String sqls3="SELECT lri.PENALTY FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT income_id,LRI_ID FROM lv_penalty_income GROUP BY INCOME_ID,LRI_ID) LV1 ON LV1.INCOME_ID = LRI.PLAN_ID AND LV1.LRI_ID = LRI.ID LEFT JOIN (SELECT INCOME_ID FROM LV_PENALTY_PLAN GROUP BY INCOME_ID) LV2 ON LV2.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV3 ON LV3.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV4 ON LV4.INCOME_ID = LRP.ID WHERE LRI.CHARGE_WAY IN ('AutoBuckle','WXPay','WXUnionPay') AND lri.penalty > 0 AND (LV1.INCOME_ID IS NULL AND LV2.INCOME_ID IS NULL AND LV3.INCOME_ID IS NULL AND LV4.INCOME_ID IS NULL) AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d')";
|
||||
|
||||
String sqls3="SELECT lri.PENALTY FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT income_id,LRI_ID FROM lv_penalty_income GROUP BY INCOME_ID,LRI_ID) LV1 ON LV1.INCOME_ID = LRI.PLAN_ID AND LV1.LRI_ID = LRI.ID LEFT JOIN (SELECT INCOME_ID FROM LV_PENALTY_PLAN GROUP BY INCOME_ID) LV2 ON LV2.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV3 ON LV3.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV4 ON LV4.INCOME_ID = LRP.ID " +
|
||||
" LEFT JOIN fc_yc_overdue_repay_plan fyorp ON fyorp.rent_plan_id = lri.PLAN_ID " +
|
||||
" WHERE LRI.CHARGE_WAY IN ('AutoBuckle','WXPay','WXUnionPay') AND lri.penalty > 0 " +
|
||||
" AND fyorp.id IS NULL " +
|
||||
" AND (LV1.INCOME_ID IS NULL AND LV2.INCOME_ID IS NULL AND LV3.INCOME_ID IS NULL AND LV4.INCOME_ID IS NULL) AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d')";
|
||||
|
||||
// 代偿反冲租金
|
||||
String sqls4="SELECT lri.RENT,LRI.ID AS F56 FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV1 ON LV1.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV2 ON LV2.INCOME_ID = LRP.ID LEFT JOIN (SELECT F58,F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%代偿反冲-收到代偿的租金%' AND (F56 IS NOT NULL AND F56 <> '' AND F58 IS NOT NULL AND F58 <> '') GROUP BY F58,F56) V8 ON V8.F58 = LRI.PLAN_ID AND V8.F56 = LRI.ID WHERE LRI.CHARGE_WAY IN ('AutoBuckle','WXUnionPay') AND lri.rent > 0 AND (LV1.INCOME_ID IS NOT NULL OR LV2.INCOME_ID IS NOT NULL) AND V8.F58 IS NULL AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d')";
|
||||
String sqls4="SELECT lri.RENT,LRI.ID AS F56 FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV1 ON LV1.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV2 ON LV2.INCOME_ID = LRP.ID LEFT JOIN (SELECT F58,F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%代偿反冲-收到代偿的租金%' AND (F56 IS NOT NULL AND F56 <> '' AND F58 IS NOT NULL AND F58 <> '') GROUP BY F58,F56) V8 ON V8.F58 = LRI.PLAN_ID AND V8.F56 = LRI.ID " +
|
||||
" LEFT JOIN fc_yc_overdue_repay_plan fyorp ON fyorp.rent_plan_id = lri.PLAN_ID " +
|
||||
" WHERE LRI.CHARGE_WAY IN ('AutoBuckle','WXUnionPay') AND lri.rent > 0 " +
|
||||
" AND fyorp.id IS NULL " +
|
||||
" AND (LV1.INCOME_ID IS NOT NULL OR LV2.INCOME_ID IS NOT NULL) AND V8.F58 IS NULL AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d')";
|
||||
// 代偿反冲逾期利息
|
||||
String slqs5="SELECT lri.PENALTY,LRI.ID AS F56 FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV1 ON LV1.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV2 ON LV2.INCOME_ID = LRP.ID LEFT JOIN (SELECT F58,F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%代偿反冲-代偿逾期利息%' AND (F56 IS NOT NULL AND F56 <> '' AND F58 IS NOT NULL AND F58 <> '') GROUP BY F58,F56) V8 ON V8.F58 = LRI.PLAN_ID AND V8.F56 = LRI.ID WHERE LRI.CHARGE_WAY IN ('AutoBuckle','WXUnionPay') AND lri.PENALTY > 0 AND (LV1.INCOME_ID IS NOT NULL OR LV2.INCOME_ID IS NOT NULL) AND V8.F58 IS NULL AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d') ";
|
||||
String slqs5="SELECT lri.PENALTY,LRI.ID AS F56 FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV1 ON LV1.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV2 ON LV2.INCOME_ID = LRP.ID LEFT JOIN (SELECT F58,F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%代偿反冲-代偿逾期利息%' AND (F56 IS NOT NULL AND F56 <> '' AND F58 IS NOT NULL AND F58 <> '') GROUP BY F58,F56) V8 ON V8.F58 = LRI.PLAN_ID AND V8.F56 = LRI.ID " +
|
||||
" LEFT JOIN fc_yc_overdue_repay_plan fyorp ON fyorp.rent_plan_id = lri.PLAN_ID " +
|
||||
" WHERE LRI.CHARGE_WAY IN ('AutoBuckle','WXUnionPay') AND lri.PENALTY > 0 " +
|
||||
" AND fyorp.id IS NULL " +
|
||||
" AND (LV1.INCOME_ID IS NOT NULL OR LV2.INCOME_ID IS NOT NULL) AND V8.F58 IS NULL AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d') ";
|
||||
// 代偿反冲租金(微信)
|
||||
String sqls6="SELECT lri.RENT,LRI.ID AS F56 FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV1 ON LV1.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV2 ON LV2.INCOME_ID = LRP.ID LEFT JOIN (SELECT F58,F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%代偿反冲-收到代偿的租金%' AND (F56 IS NOT NULL AND F56 <> '' AND F58 IS NOT NULL AND F58 <> '') GROUP BY F58,F56) V8 ON V8.F58 = LRI.PLAN_ID AND V8.F56 = LRI.ID WHERE LRI.CHARGE_WAY IN ('WXPay') AND lri.rent > 0 AND (LV1.INCOME_ID IS NOT NULL OR LV2.INCOME_ID IS NOT NULL) AND V8.F58 IS NULL AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d')";
|
||||
String sqls6="SELECT lri.RENT,LRI.ID AS F56 FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV1 ON LV1.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV2 ON LV2.INCOME_ID = LRP.ID LEFT JOIN (SELECT F58,F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%代偿反冲-收到代偿的租金%' AND (F56 IS NOT NULL AND F56 <> '' AND F58 IS NOT NULL AND F58 <> '') GROUP BY F58,F56) V8 ON V8.F58 = LRI.PLAN_ID AND V8.F56 = LRI.ID " +
|
||||
" LEFT JOIN fc_yc_overdue_repay_plan fyorp ON fyorp.rent_plan_id = lri.PLAN_ID " +
|
||||
" WHERE LRI.CHARGE_WAY IN ('WXPay') AND lri.rent > 0 " +
|
||||
" AND fyorp.id IS NULL " +
|
||||
" AND (LV1.INCOME_ID IS NOT NULL OR LV2.INCOME_ID IS NOT NULL) AND V8.F58 IS NULL AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d')";
|
||||
// 代偿反冲逾期利息(微信)
|
||||
String slqs7="SELECT lri.PENALTY,LRI.ID AS F56 FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV1 ON LV1.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV2 ON LV2.INCOME_ID = LRP.ID LEFT JOIN (SELECT F58,F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%代偿反冲-代偿逾期利息%' AND (F56 IS NOT NULL AND F56 <> '' AND F58 IS NOT NULL AND F58 <> '') GROUP BY F58,F56) V8 ON V8.F58 = LRI.PLAN_ID AND V8.F56 = LRI.ID WHERE LRI.CHARGE_WAY IN ('WXPay') AND lri.PENALTY > 0 AND (LV1.INCOME_ID IS NOT NULL OR LV2.INCOME_ID IS NOT NULL) AND V8.F58 IS NULL AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d') ";
|
||||
String slqs7="SELECT lri.PENALTY,LRI.ID AS F56 FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV1 ON LV1.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV2 ON LV2.INCOME_ID = LRP.ID LEFT JOIN (SELECT F58,F56 FROM VOUCHER_V8 WHERE MODULE_NAME LIKE '%代偿反冲-代偿逾期利息%' AND (F56 IS NOT NULL AND F56 <> '' AND F58 IS NOT NULL AND F58 <> '') GROUP BY F58,F56) V8 ON V8.F58 = LRI.PLAN_ID AND V8.F56 = LRI.ID " +
|
||||
" LEFT JOIN fc_yc_overdue_repay_plan fyorp ON fyorp.rent_plan_id = lri.PLAN_ID " +
|
||||
" WHERE LRI.CHARGE_WAY IN ('WXPay') AND lri.PENALTY > 0 " +
|
||||
" AND fyorp.id IS NULL " +
|
||||
" AND (LV1.INCOME_ID IS NOT NULL OR LV2.INCOME_ID IS NOT NULL) AND V8.F58 IS NULL AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d') ";
|
||||
|
||||
List<Map<String,String>> dataList1=DataOperatorUtil.getDataBySql(Sqlca, sqls1, null);
|
||||
List<Map<String,String>> dataList2=DataOperatorUtil.getDataBySql(Sqlca, sqls2, null);
|
||||
@ -66,11 +94,27 @@ public class InsertVoucherRentIncome {
|
||||
* 将数据插入中间表的SQL
|
||||
*/
|
||||
// 未逾期及逾期未过月(卡扣)
|
||||
String sql1="INSERT INTO lv_rent_income (SELECT REPLACE(UUID(), '-', ''),CONCAT('k', getSerialNumber ('凭证号')),cif.customer_num,cif.customername,lci.id,lci.contract_number,lrp.id,lri.HIRE_DATE,lrp.plan_list,lri.RENT,lri.CORPUS,lri.INTEREST,0.00,lri.OWN_BANK,lri.OWN_ACCOUNT,lri.OWN_NUMBER,lri.EBANK_NUMBER,lri.CARDDEDUCT_ID,lri.ACCOUNTING_DATE,LRI.CHARGE_WAY AS COLLECT_STATUS,LCI.BUSINESSTYPE,LCI.LEAS_FORM,LRI.ID FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT income_id,LRI_ID FROM lv_rent_income GROUP BY INCOME_ID,LRI_ID) LV1 ON LV1.INCOME_ID = LRI.PLAN_ID AND LV1.LRI_ID = LRI.ID LEFT JOIN (SELECT income_id,LRI_ID FROM lv_rent_income2 GROUP BY INCOME_ID,LRI_ID) LV2 ON LV2.INCOME_ID = LRI.PLAN_ID AND LV2.LRI_ID = LRI.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV3 ON LV3.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV4 ON LV4.INCOME_ID = LRP.ID WHERE LRI.CHARGE_WAY IN ('AutoBuckle','WXPay','WXUnionPay') AND lri.rent > 0 AND (LV1.INCOME_ID IS NULL AND LV2.INCOME_ID IS NULL AND LV3.INCOME_ID IS NULL AND LV4.INCOME_ID IS NULL) AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d') AND DATE_FORMAT(NOW(), '%Y-%m') = DATE_FORMAT(lrp.plan_date, '%Y-%m'))";
|
||||
String sql1="INSERT INTO lv_rent_income (SELECT REPLACE(UUID(), '-', ''),CONCAT('k', getSerialNumber ('凭证号')),cif.customer_num,cif.customername,lci.id,lci.contract_number,lrp.id,lri.HIRE_DATE,lrp.plan_list,lri.RENT,lri.CORPUS,lri.INTEREST,0.00,lri.OWN_BANK,lri.OWN_ACCOUNT,lri.OWN_NUMBER,lri.EBANK_NUMBER,lri.CARDDEDUCT_ID,lri.ACCOUNTING_DATE,LRI.CHARGE_WAY AS COLLECT_STATUS,LCI.BUSINESSTYPE,LCI.LEAS_FORM,LRI.ID " +
|
||||
" FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT income_id,LRI_ID FROM lv_rent_income GROUP BY INCOME_ID,LRI_ID) LV1 ON LV1.INCOME_ID = LRI.PLAN_ID AND LV1.LRI_ID = LRI.ID LEFT JOIN (SELECT income_id,LRI_ID FROM lv_rent_income2 GROUP BY INCOME_ID,LRI_ID) LV2 ON LV2.INCOME_ID = LRI.PLAN_ID AND LV2.LRI_ID = LRI.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV3 ON LV3.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV4 ON LV4.INCOME_ID = LRP.ID " +
|
||||
" LEFT JOIN fc_yc_overdue_repay_plan fyorp ON fyorp.rent_plan_id = lri.PLAN_ID " +
|
||||
" WHERE LRI.CHARGE_WAY IN ('AutoBuckle','WXPay','WXUnionPay') AND lri.rent > 0 " +
|
||||
" AND fyorp.id IS NULL " +
|
||||
" AND (LV1.INCOME_ID IS NULL AND LV2.INCOME_ID IS NULL AND LV3.INCOME_ID IS NULL AND LV4.INCOME_ID IS NULL) AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d') AND DATE_FORMAT(NOW(), '%Y-%m') = DATE_FORMAT(lrp.plan_date, '%Y-%m'))";
|
||||
// 逾期过月(卡扣)
|
||||
String sql2="INSERT INTO lv_rent_income2 (SELECT REPLACE(UUID(), '-', ''),CONCAT('k', getSerialNumber ('凭证号')),cif.customer_num,cif.customername,lci.id,lci.contract_number,lrp.id,lri.HIRE_DATE,lrp.plan_list,lri.RENT,lri.CORPUS,lri.INTEREST,0.00,lri.OWN_BANK,lri.OWN_ACCOUNT,lri.OWN_NUMBER,lri.EBANK_NUMBER,lri.CARDDEDUCT_ID,lri.ACCOUNTING_DATE,LRI.CHARGE_WAY AS COLLECT_STATUS,LCI.BUSINESSTYPE,LCI.LEAS_FORM,LRI.ID FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT income_id,LRI_ID FROM lv_rent_income GROUP BY INCOME_ID,LRI_ID) LV1 ON LV1.INCOME_ID = LRI.PLAN_ID AND LV1.LRI_ID = LRI.ID LEFT JOIN (SELECT income_id,LRI_ID FROM lv_rent_income2 GROUP BY INCOME_ID,LRI_ID) LV2 ON LV2.INCOME_ID = LRI.PLAN_ID AND LV2.LRI_ID = LRI.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV3 ON LV3.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV4 ON LV4.INCOME_ID = LRP.ID WHERE LRI.CHARGE_WAY IN ('AutoBuckle','WXPay','WXUnionPay') AND lri.rent > 0 AND (LV1.INCOME_ID IS NULL AND LV2.INCOME_ID IS NULL AND LV3.INCOME_ID IS NULL AND LV4.INCOME_ID IS NULL) AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d') AND DATE_FORMAT(NOW(),'%Y-%m')<> DATE_FORMAT(lrp.plan_date, '%Y-%m'))";
|
||||
String sql2="INSERT INTO lv_rent_income2 (SELECT REPLACE(UUID(), '-', ''),CONCAT('k', getSerialNumber ('凭证号')),cif.customer_num,cif.customername,lci.id,lci.contract_number,lrp.id,lri.HIRE_DATE,lrp.plan_list,lri.RENT,lri.CORPUS,lri.INTEREST,0.00,lri.OWN_BANK,lri.OWN_ACCOUNT,lri.OWN_NUMBER,lri.EBANK_NUMBER,lri.CARDDEDUCT_ID,lri.ACCOUNTING_DATE,LRI.CHARGE_WAY AS COLLECT_STATUS,LCI.BUSINESSTYPE,LCI.LEAS_FORM,LRI.ID " +
|
||||
" FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT income_id,LRI_ID FROM lv_rent_income GROUP BY INCOME_ID,LRI_ID) LV1 ON LV1.INCOME_ID = LRI.PLAN_ID AND LV1.LRI_ID = LRI.ID LEFT JOIN (SELECT income_id,LRI_ID FROM lv_rent_income2 GROUP BY INCOME_ID,LRI_ID) LV2 ON LV2.INCOME_ID = LRI.PLAN_ID AND LV2.LRI_ID = LRI.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV3 ON LV3.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV4 ON LV4.INCOME_ID = LRP.ID " +
|
||||
" LEFT JOIN fc_yc_overdue_repay_plan fyorp ON fyorp.rent_plan_id = lri.PLAN_ID " +
|
||||
" WHERE LRI.CHARGE_WAY IN ('AutoBuckle','WXPay','WXUnionPay') AND lri.rent > 0 " +
|
||||
" AND fyorp.id IS NULL " +
|
||||
" AND (LV1.INCOME_ID IS NULL AND LV2.INCOME_ID IS NULL AND LV3.INCOME_ID IS NULL AND LV4.INCOME_ID IS NULL) AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d') AND DATE_FORMAT(NOW(),'%Y-%m')<> DATE_FORMAT(lrp.plan_date, '%Y-%m'))";
|
||||
// 逾期利息(卡扣)
|
||||
String sql3="INSERT INTO lv_penalty_income (SELECT REPLACE(UUID(), '-', ''),CONCAT('k', getSerialNumber ('凭证号')),cif.customer_num,cif.customername,lci.id,lci.contract_number,lrp.id,lri.HIRE_DATE,lrp.plan_list,0.00,0.00,0.00,lri.PENALTY,lri.OWN_BANK,lri.OWN_ACCOUNT,lri.OWN_NUMBER,lri.EBANK_NUMBER,lri.CARDDEDUCT_ID,lri.ACCOUNTING_DATE,LRI.CHARGE_WAY AS COLLECT_STATUS,LCI.BUSINESSTYPE,LCI.LEAS_FORM,LRI.ID FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT income_id,LRI_ID FROM lv_penalty_income GROUP BY INCOME_ID,LRI_ID) LV1 ON LV1.INCOME_ID = LRI.PLAN_ID AND LV1.LRI_ID = LRI.ID LEFT JOIN (SELECT INCOME_ID FROM LV_PENALTY_PLAN GROUP BY INCOME_ID) LV2 ON LV2.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV3 ON LV3.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV4 ON LV4.INCOME_ID = LRP.ID WHERE LRI.CHARGE_WAY IN ('AutoBuckle','WXPay','WXUnionPay') AND lri.penalty > 0 AND (LV1.INCOME_ID IS NULL AND LV2.INCOME_ID IS NULL AND LV3.INCOME_ID IS NULL AND LV4.INCOME_ID IS NULL) AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d'))";
|
||||
String sql3="INSERT INTO lv_penalty_income (SELECT REPLACE(UUID(), '-', ''),CONCAT('k', getSerialNumber ('凭证号')),cif.customer_num,cif.customername,lci.id,lci.contract_number,lrp.id,lri.HIRE_DATE,lrp.plan_list,0.00,0.00,0.00,lri.PENALTY,lri.OWN_BANK,lri.OWN_ACCOUNT,lri.OWN_NUMBER,lri.EBANK_NUMBER,lri.CARDDEDUCT_ID,lri.ACCOUNTING_DATE,LRI.CHARGE_WAY AS COLLECT_STATUS,LCI.BUSINESSTYPE,LCI.LEAS_FORM,LRI.ID " +
|
||||
" FROM lc_rent_income lri LEFT JOIN lc_rent_plan lrp ON lrp.contract_id = lri.contract_id AND lrp.plan_list = lri.plan_list LEFT JOIN lb_contract_info lci ON lci.id = lrp.contract_id LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN (SELECT income_id,LRI_ID FROM lv_penalty_income GROUP BY INCOME_ID,LRI_ID) LV1 ON LV1.INCOME_ID = LRI.PLAN_ID AND LV1.LRI_ID = LRI.ID LEFT JOIN (SELECT INCOME_ID FROM LV_PENALTY_PLAN GROUP BY INCOME_ID) LV2 ON LV2.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN GROUP BY INCOME_ID) LV3 ON LV3.INCOME_ID = LRP.ID LEFT JOIN (SELECT INCOME_ID FROM LV_RENT_PLAN2 GROUP BY INCOME_ID) LV4 ON LV4.INCOME_ID = LRP.ID " +
|
||||
" LEFT JOIN fc_yc_overdue_repay_plan fyorp ON fyorp.rent_plan_id = lri.PLAN_ID " +
|
||||
" WHERE LRI.CHARGE_WAY IN ('AutoBuckle','WXPay','WXUnionPay') AND lri.penalty > 0 " +
|
||||
" AND fyorp.id IS NULL " +
|
||||
" AND (LV1.INCOME_ID IS NULL AND LV2.INCOME_ID IS NULL AND LV3.INCOME_ID IS NULL AND LV4.INCOME_ID IS NULL) AND lul.is_main = 'Y' AND DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m/%d') >= DATE_FORMAT('2020/05/01', '%Y/%m/%d'))";
|
||||
|
||||
/**
|
||||
* 根据查询语句判断, 有值才执行插入SQL
|
||||
*/
|
||||
|
||||
@ -0,0 +1,585 @@
|
||||
package com.tenwa.voucher.serviceImp;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.amarsoft.are.jbo.*;
|
||||
import com.amarsoft.awe.util.SqlObject;
|
||||
import com.amarsoft.awe.util.Transaction;
|
||||
import com.amarsoft.dict.als.cache.CacheLoaderFactory;
|
||||
import com.amarsoft.dict.als.manage.NameManager;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tenwa.comm.util.jboutil.DataOperatorUtil;
|
||||
import com.tenwa.flow.util.FlowUtil;
|
||||
import com.tenwa.reckon.util.DateUtil;
|
||||
import com.tenwa.reckon.util.UUIDUtil;
|
||||
import com.tenwa.voucher.service.VoucherInfoService;
|
||||
import jbo.app.VOUCHER_V8;
|
||||
import jbo.com.tenwa.entity.comm.own.OWN_INFO;
|
||||
import jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 经财务确认:在邮储期间逾期,并后期导致回购的订单,对于在邮储时逾期的还款计划,进行执行该方法单独处理
|
||||
* 又:20210831:对于在邮储时逾期的还款计划生成凭证时,对于扣除的罚息与回购时,邮储的罚息进行计算核销,
|
||||
* 当罚息与邮储罚息未抵消完毕时,对所收罚息的凭证为,利息进行记录。
|
||||
*
|
||||
* 回款-收到的租金-邮储逾期-安鹏回购 资方邮储逾期回购-之后,在邮储逾期未还,在安鹏进行还款。
|
||||
*/
|
||||
public class OverdueRepayPlanVoucherPSBC implements VoucherInfoService {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(OverdueRepayPlanVoucherPSBC.class);
|
||||
|
||||
private static final String VOUCHER_CONFIG_NO = "PZ2021082300000030";//回款-收到的租金-邮储逾期-安鹏回购 凭证编号
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
Transaction Sqlca =null;
|
||||
try {
|
||||
Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource());
|
||||
logger.info("在邮储期间逾期,并后期导致回购的订单,对于在邮储时逾期的还款计划,进行执行该方法单独处理【开始】");
|
||||
generateListVoucher(Sqlca);
|
||||
logger.info("在邮储期间逾期,并后期导致回购的订单,对于在邮储时逾期的还款计划,进行执行该方法单独处理【结束】");
|
||||
} catch (JBOException e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
try {
|
||||
if(Sqlca!=null){
|
||||
Sqlca.disConnect();
|
||||
Sqlca = null;
|
||||
}
|
||||
} catch (JBOException e) {
|
||||
e.printStackTrace();
|
||||
try {
|
||||
Sqlca.rollback();
|
||||
} catch (JBOException jboException) {
|
||||
jboException.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断当前流程编号是否为邮储逾期回购的计划id
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public boolean findFcPSBCOverduce(String flowUnid) throws Exception {
|
||||
try {
|
||||
logger.info("findFcPSBCOverduce 判断当前流程编号是否为邮储逾期回购的计划id【开始】flowUnid=" + flowUnid);
|
||||
String sql = "select fyrp.* " +
|
||||
" from fc_yc_overdue_repay_plan fyrp " +
|
||||
" left join LC_FUND_INCOME_TEMP lfit on lfit.PLAN_ID=fyrp.rent_plan_id " +
|
||||
" where lfit.FLOWUNID ='" +flowUnid+ "'";
|
||||
List<Map<String,String>> paramList = DataOperatorUtil.getDataBySql(sql);
|
||||
if(paramList.size()==0){
|
||||
logger.warn("false,正常查询数据,不符合。【结束】");
|
||||
return false;
|
||||
}
|
||||
logger.info("true,在邮储期间逾期,并后期导致回购的订单,对于在邮储时逾期的还款计划,进行执行该方法单独处理【结束】");
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
logger.error("false,查询数据报错,不符合。【结束】。errorMsg=" + e.getMessage(), e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成所有凭证
|
||||
* @param Sqlca voucher
|
||||
* @throws Exception
|
||||
*/
|
||||
public void generateListVoucher(Transaction Sqlca) throws Exception {
|
||||
List<Map<String,String>> incomeList = findRentIncomeList();
|
||||
for(Map rentIncomeInfo : incomeList){
|
||||
generateVoucher(rentIncomeInfo, Sqlca);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 生成所有凭证
|
||||
* @param Sqlca
|
||||
* @throws Exception
|
||||
*/
|
||||
public void generateVoucher(Map<String,String> rentIncomeInfo, Transaction Sqlca) throws Exception {
|
||||
Sqlca.getConnection();
|
||||
JBOTransaction tx = Sqlca.getTransaction();
|
||||
|
||||
/**
|
||||
* `RENT` decimal(22,2) DEFAULT NULL COMMENT '回笼租金',
|
||||
* `CORPUS` decimal(22,2) DEFAULT NULL COMMENT '回笼本金',
|
||||
* `INTEREST` decimal(22,2) DEFAULT NULL COMMENT '回笼租息',
|
||||
* `PENALTY` decimal(22,2) DEFAULT NULL COMMENT '回笼罚息',
|
||||
*/
|
||||
//合同信息
|
||||
Map<String,String> planInfo = findPlanInfo(rentIncomeInfo);
|
||||
//凭证参数组装
|
||||
Map<String,String> voucherInfo = new HashMap<>();
|
||||
String voucherNo ="k" + FlowUtil.getVoucher_Number(tx);
|
||||
logger.info("OverdueRepurchaseVoucherPSBC20210818 voucherNo=" + voucherNo);
|
||||
voucherInfo.put("voucherNo", voucherNo);
|
||||
voucherInfo.put("contractId", planInfo.get("contract_id"));
|
||||
voucherInfo.put("contractNo", planInfo.get("contract_no"));
|
||||
voucherInfo.put("createTime", rentIncomeInfo.get("HIRE_DATE"));
|
||||
String customerNo = findCustomerNoByContractId(planInfo.get("contract_id"), Sqlca);
|
||||
logger.info("OverdueRepurchaseVoucherPSBC20210818 查找客户编号信息:customerNo=" + customerNo);
|
||||
voucherInfo.put("customerNo", customerNo);
|
||||
String customerName = findCustomerName(customerNo, Sqlca);
|
||||
logger.info("OverdueRepurchaseVoucherPSBC20210818 查找客户编号信息:customerName=" + customerName);
|
||||
voucherInfo.put("customerName", customerName);
|
||||
logger.info("OverdueRepurchaseVoucherPSBC20210818 开始收集参数:initFinalParam");
|
||||
//获取最终参数
|
||||
JSONObject resJson = new JSONObject();
|
||||
resJson.put("fc_request_id", planInfo.get("fc_request_id"));//是否需要修改
|
||||
resJson.put("updateRepaymentPenaltySts", false);//是否需要修改
|
||||
resJson.put("ycNowOverdueRepayAmount", 0);//已还罚息
|
||||
List<Map<String,String>> paramList = initFinalParam(resJson, voucherInfo, VOUCHER_CONFIG_NO, rentIncomeInfo, planInfo, Sqlca);
|
||||
logger.info("OverdueRepurchaseVoucherPSBC20210818 收集参数完毕:initFinalParam, paramList=" + JSONObject.toJSONString(paramList));
|
||||
//生成凭证
|
||||
logger.info("OverdueRepurchaseVoucherPSBC20210818 开始生成凭证:createVoucher, voucherNo=" + voucherNo);
|
||||
createVoucher(paramList, tx);
|
||||
logger.info("OverdueRepurchaseVoucherPSBC20210818 生成凭证结束:createVoucher, voucherNo=" + voucherNo);
|
||||
//更新凭证信息状态
|
||||
logger.info("OverdueRepurchaseVoucherPSBC20210818 开始更新凭证信息状态:updateVoucherStatus, contractId=" + planInfo.get("contractId"));
|
||||
updateVoucherStatus(resJson, rentIncomeInfo, Sqlca);
|
||||
logger.info("OverdueRepurchaseVoucherPSBC20210818 更新凭证信" +
|
||||
"息状态结束:updateVoucherStatus, overdue_back_id=" + planInfo.get("contractId"));
|
||||
logger.info(" =============:合同编号为"+planInfo.get("contract_no")+"的逾期还款凭证生成完毕============");
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据客户编号查询客户名称
|
||||
* @param customerNo
|
||||
* @param Sqlca
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
private String findCustomerName(String customerNo,Transaction Sqlca) throws Exception {
|
||||
String sql = "select ci.customername from customer_info ci WHERE ci.customer_num='"+customerNo+"'";
|
||||
String customerName = Sqlca.getString(sql);
|
||||
return customerName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生产凭证完成,修改状态
|
||||
* @param resJson
|
||||
* @param rentIncomeInfo
|
||||
* @param Sqlca
|
||||
* @throws Exception
|
||||
*/
|
||||
private void updateVoucherStatus(JSONObject resJson, Map<String,String> rentIncomeInfo, Transaction Sqlca) throws Exception {
|
||||
String sql = "insert into fc_yc_overdue_income_voucher (" +
|
||||
"id," +
|
||||
"contract_id," +
|
||||
"rent_plan_id," +
|
||||
"voucher_status," +
|
||||
"create_time," +
|
||||
"update_time" +
|
||||
") values" +
|
||||
" (" +
|
||||
"'"+ rentIncomeInfo.get("ID") +"',"+//实还id
|
||||
"'"+ rentIncomeInfo.get("CONTRACT_ID") +"',"+
|
||||
"'"+ rentIncomeInfo.get("PLAN_ID") +"',"+
|
||||
"1,"+//已生成凭证
|
||||
"'"+ DateUtil.getSystemTimeByFormat("yyyyMMddHHmmss") +"',"+
|
||||
"'"+ DateUtil.getSystemTimeByFormat("yyyyMMddHHmmss") +"'"+
|
||||
")" ;
|
||||
SqlObject sqlObject = new SqlObject(sql);
|
||||
Sqlca.executeSQL(sqlObject);
|
||||
if(resJson.getBooleanValue("updateRepaymentPenaltySts")){
|
||||
String updateSql = "update fc_buyback_info set repayment_penalty = '"
|
||||
+ resJson.getString("ycNowOverdueRepayAmount") +"' where fc_request_id = '"+resJson.getString("fc_request_id")+"'";
|
||||
SqlObject updateSqlObject = new SqlObject(updateSql);
|
||||
Sqlca.executeSQL(updateSqlObject);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取需要生成凭证的实还数据
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public List<Map<String,String>> findRentIncomeList() throws Exception {
|
||||
String sql = "select lri.* " +
|
||||
" from fc_yc_overdue_repay_plan fyrp " +
|
||||
" left join lc_rent_income lri on lri.PLAN_ID=fyrp.rent_plan_id " +
|
||||
" left join fc_yc_overdue_income_voucher fv on fv.id=lri.ID " +
|
||||
" where lri.ID is not null and (lri.charge_way <> 'PSBC' or lri.charge_way is null) and (fv.id is null or fv.voucher_status=0)";
|
||||
List<Map<String,String>> paramList = DataOperatorUtil.getDataBySql(sql);
|
||||
if(paramList.size()==0){
|
||||
logger.warn("获取需要生成凭证的实还数据 未找到符合规则的数据");
|
||||
throw new Exception("获取需要生成凭证的实还数据 未找到符合规则的数据");
|
||||
}
|
||||
return paramList;
|
||||
}
|
||||
|
||||
private Map<String,String> findPlanInfo(Map<String,String> rentIncomeInfo) throws Exception {
|
||||
String sql = "select * " +
|
||||
" from fc_yc_overdue_repay_plan frp " +
|
||||
" where frp.rent_plan_id='"+rentIncomeInfo.get("PLAN_ID")+"' ";
|
||||
List<Map<String,String>> list = DataOperatorUtil.getDataBySql(sql);
|
||||
if(CollectionUtils.isEmpty(list) || list.size() > 1){
|
||||
logger.warn("rent_plan_id="+ rentIncomeInfo.get("PLAN_ID") + "生成凭证,查询还款信息失败。");
|
||||
throw new Exception("rent_plan_id="+ rentIncomeInfo.get("PLAN_ID") + "生成凭证,查询还款信息失败。");
|
||||
}
|
||||
return list.get(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据合同id查询客户编号
|
||||
* @param contractId
|
||||
* @param Sqlca
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
private String findCustomerNoByContractId(String contractId,Transaction Sqlca) throws Exception {
|
||||
String sql = "select ci.customer_num from customer_info ci left join lb_union_lessee lul on lul.CUSTOMER_ID=ci.customerid and lul.IS_MAIN='Y' where lul.CONTRACT_ID='"+contractId+"'";
|
||||
String customerNo = Sqlca.getString(sql);
|
||||
return customerNo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取最终的参数
|
||||
* @param voucherInfo
|
||||
* @param voucherConfigNo
|
||||
* @param rentIncomeInfo
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
private List<Map<String,String>> initFinalParam(JSONObject resJson, Map<String,String> voucherInfo, String voucherConfigNo, Map<String,String> rentIncomeInfo, Map<String,String> planInfo, Transaction Sqlca) throws Exception {
|
||||
List<Map<String,String>> paramList = findParamOfVoucher(voucherConfigNo);
|
||||
for(Map<String,String> param : paramList){
|
||||
//将公共参数放到凭证配置参数里
|
||||
param.putAll(initCommonParam(voucherInfo));
|
||||
//将差别参数放进去
|
||||
addRespectiveParam(param, rentIncomeInfo, planInfo, resJson, Sqlca);
|
||||
//转译的凭证信息
|
||||
param.putAll(initConvertParam(param));
|
||||
}
|
||||
return paramList;
|
||||
}
|
||||
|
||||
//助贷-合同起租
|
||||
private static final String ADVANCES_RECEIVED = "2203";//借--【预收账款】-【逾期租金+邮储罚息+安鹏罚息】-【客商】
|
||||
private static final String LONG_TERM_RECEIVABLES_LEASEBACK_PRINCIPAL = "1531020101";//贷--【长期应收-回租-汽车-本金】-【逾期本金】-【客商+合同号码】
|
||||
private static final String LONG_TERM_LEASEBACK_INTEREST = "1531020102";//贷--【长期应收-回租-汽车-利息】-【逾期利息+邮储罚息】-【客商+合同号码】
|
||||
private static final String LONG_TERM_LEASEBACK_INTEREST_PENALTY = "60410201";//贷--【租赁收入/回租/汽车】-【安鹏罚息(不含税)】-【客商+合同号码+0603(主营类型)】
|
||||
private static final String LONG_TERM_LEASEBACK_INTEREST_PENALTY_TAX_RATE = "22210105";//贷--【应交税费\应交增值税\销项税额】-【安鹏罚息税金】-【税率】
|
||||
|
||||
/**
|
||||
* 每条凭证各自差异数据放到参数List
|
||||
* @param param
|
||||
* @param rentIncomeInfo
|
||||
* @throws Exception
|
||||
*/
|
||||
public void addRespectiveParam(Map<String,String> param, Map<String,String> rentIncomeInfo, Map<String,String> planInfo, JSONObject resJson, Transaction Sqlca) throws Exception {
|
||||
String money = "";
|
||||
String subjectsCode = param.get("subjectsCode");
|
||||
BigDecimal actualOverdueAmount = new BigDecimal("0");//安鹏实际罚息
|
||||
BigDecimal psbcOverdueAmount = new BigDecimal("0");//邮储实际罚息
|
||||
String sqlQuery2 = "SELECT * from fc_buyback_info WHERE fc_request_id='"+planInfo.get("fc_request_id") +"'";
|
||||
List<Map<String,String>> paramList2 = DataOperatorUtil.getDataBySql(sqlQuery2);
|
||||
if(paramList2.size()==0 || paramList2.size()>1){
|
||||
logger.warn(rentIncomeInfo.get("contractNo") + ":逾期回购生成凭证之后,查询是否有逾期数据2,或逾期数据大于1。");
|
||||
return;
|
||||
}
|
||||
/**
|
||||
* `RENT` decimal(22,2) DEFAULT NULL COMMENT '回笼租金',
|
||||
* `CORPUS` decimal(22,2) DEFAULT NULL COMMENT '回笼本金',
|
||||
* `INTEREST` decimal(22,2) DEFAULT NULL COMMENT '回笼租息',
|
||||
* `PENALTY` decimal(22,2) DEFAULT NULL COMMENT '回笼罚息',
|
||||
*/
|
||||
logger.info("addRespectiveParam fc_request_id=" + planInfo.get("fc_request_id") + "本期 回笼租金:" + rentIncomeInfo.get("RENT"));
|
||||
logger.info("addRespectiveParam fc_request_id=" + planInfo.get("fc_request_id") + "本期 回笼本金:" + rentIncomeInfo.get("CORPUS"));
|
||||
logger.info("addRespectiveParam fc_request_id=" + planInfo.get("fc_request_id") + "本期 回笼租息:" + rentIncomeInfo.get("INTEREST"));
|
||||
logger.info("addRespectiveParam fc_request_id=" + planInfo.get("fc_request_id") + "本期 回笼罚息:" + rentIncomeInfo.get("PENALTY"));
|
||||
Map<String, String> overduePlan = paramList2.get(0);
|
||||
String ycOverdueAmount = overduePlan.get("ALL_REMAIN_PENALTY");//邮储总需还罚息
|
||||
String ycOverdueRepayAmount = overduePlan.get("repayment_penalty");//邮储已还罚息
|
||||
BigDecimal ycNowOverdueRepayAmount = new BigDecimal(overduePlan.get("repayment_penalty"));//邮储已还罚息+ 本期罚息
|
||||
logger.info("addRespectiveParam fc_request_id=" + planInfo.get("fc_request_id") + "查询 邮储总需还罚息:" + overduePlan.get("ALL_REMAIN_PENALTY"));
|
||||
logger.info("addRespectiveParam fc_request_id=" + planInfo.get("fc_request_id") + "查询 邮储已还罚息:" + overduePlan.get("repayment_penalty"));
|
||||
boolean updateRepaymentPenaltySts = false;//如果需要更新罚息则为true。
|
||||
BigDecimal surplusOverdueAmount = new BigDecimal(ycOverdueAmount).subtract(new BigDecimal(ycOverdueRepayAmount));//邮储应还罚息
|
||||
logger.info("addRespectiveParam fc_request_id=" + planInfo.get("fc_request_id") + "计算 邮储应还罚息:" + surplusOverdueAmount.toString());
|
||||
if(surplusOverdueAmount.compareTo(new BigDecimal("0")) <= 0) { // 如果邮储应还罚息小于0 或等于0,如果实还中出现罚息,则均为安鹏罚息。
|
||||
surplusOverdueAmount = new BigDecimal("0");//邮储应还罚息
|
||||
logger.info("addRespectiveParam fc_request_id=" + planInfo.get("fc_request_id")
|
||||
+ "如果邮储应还罚息小于0 或等于0,如果实还中出现罚息,则均为安鹏罚息。 邮储应还罚息2:" + surplusOverdueAmount.toString());
|
||||
}else {// 如果邮储应还罚息大于0,如果实还中出现罚息,则用实际罚息与邮储应还罚息进行比较:安鹏罚息=实还罚息-邮储应还罚息。
|
||||
logger.info("addRespectiveParam fc_request_id=" + planInfo.get("fc_request_id")
|
||||
+ "如果邮储应还罚息大于0,如果实还中出现罚息,则用实际罚息与邮储应还罚息进行比较:安鹏罚息=实还罚息-邮储应还罚息。");
|
||||
updateRepaymentPenaltySts = true;
|
||||
actualOverdueAmount = new BigDecimal(rentIncomeInfo.get("PENALTY")).subtract(surplusOverdueAmount);//安鹏罚息=罚息-邮储罚息
|
||||
logger.info("addRespectiveParam fc_request_id=" + planInfo.get("fc_request_id")
|
||||
+ "安鹏罚息=罚息-邮储罚息。计算 本期 安鹏实际还的罚息:" + actualOverdueAmount.toString());
|
||||
if(actualOverdueAmount.compareTo(BigDecimal.ZERO) < 0){//安鹏罚息小于0
|
||||
psbcOverdueAmount = new BigDecimal(rentIncomeInfo.get("PENALTY"));//邮储实际罚息
|
||||
ycNowOverdueRepayAmount = ycNowOverdueRepayAmount.add(psbcOverdueAmount);
|
||||
logger.info("addRespectiveParam fc_request_id=" + planInfo.get("fc_request_id")
|
||||
+ "安鹏罚息小于0。 本期 邮储实际还款的罚息:" + psbcOverdueAmount.toString());
|
||||
actualOverdueAmount = BigDecimal.ZERO;//安鹏实际罚息
|
||||
logger.info("addRespectiveParam fc_request_id=" + planInfo.get("fc_request_id")
|
||||
+ "安鹏罚息小于0。 本期 安鹏实际还款的罚息:" + actualOverdueAmount.toString());
|
||||
}else {
|
||||
psbcOverdueAmount = surplusOverdueAmount;//邮储实际罚息
|
||||
ycNowOverdueRepayAmount = ycNowOverdueRepayAmount.add(psbcOverdueAmount);
|
||||
logger.info("addRespectiveParam fc_request_id=" + planInfo.get("fc_request_id")
|
||||
+ "安鹏罚息大于等于0。 本期 邮储实际还款的罚息:" + psbcOverdueAmount.toString());
|
||||
logger.info("addRespectiveParam fc_request_id=" + planInfo.get("fc_request_id")
|
||||
+ "安鹏罚息大于等于0。 本期 安鹏实际还款的罚息:" + actualOverdueAmount.toString());
|
||||
}
|
||||
}
|
||||
resJson.put("updateRepaymentPenaltySts", updateRepaymentPenaltySts);
|
||||
resJson.put("ycNowOverdueRepayAmount", ycNowOverdueRepayAmount);
|
||||
BigDecimal actualOverdueAmountExcludedTax = new BigDecimal("0");//安鹏罚息(不含税):Tax excluded
|
||||
BigDecimal actualOverdueAmountTax = new BigDecimal("0");//安鹏实际罚息-税金
|
||||
String taxNumber = findTaxNumber(planInfo, Sqlca);
|
||||
//查询税率编码
|
||||
String sqlQueryTaxCode = "SELECT TAX_CODES from TAX_CODE WHERE TAX_NUMBER='"+taxNumber+"'";
|
||||
String taxCode = Sqlca.getString(sqlQueryTaxCode);
|
||||
if(actualOverdueAmount.compareTo(BigDecimal.ZERO) > 0){//如果安鹏实际罚息 大于0
|
||||
BigDecimal ratio = new BigDecimal(taxNumber).divide(new BigDecimal("100")).setScale(2, BigDecimal.ROUND_HALF_UP);
|
||||
ratio = ratio.add(new BigDecimal("1"));
|
||||
logger.info("addRespectiveParam fc_request_id=" + planInfo.get("fc_request_id")
|
||||
+ "安鹏实际罚息 大于0。 计算 税率:" + ratio.toString());
|
||||
actualOverdueAmountExcludedTax = actualOverdueAmount.divide(ratio,2, BigDecimal.ROUND_HALF_UP);
|
||||
actualOverdueAmountTax = actualOverdueAmount.subtract(actualOverdueAmountExcludedTax);
|
||||
logger.info("addRespectiveParam fc_request_id=" + planInfo.get("fc_request_id")
|
||||
+ "安鹏实际罚息 大于0。 计算本期 罚息相关税款 安鹏罚息(不含税):" + actualOverdueAmountExcludedTax.toString());
|
||||
logger.info("addRespectiveParam fc_request_id=" + planInfo.get("fc_request_id")
|
||||
+ "安鹏实际罚息 大于0。 计算本期 罚息相关税款 安鹏实际罚息-税金:" + actualOverdueAmountTax.toString());
|
||||
}
|
||||
|
||||
//【预收账款】-【逾期租金+邮储罚息+安鹏罚息】-【客商】
|
||||
if(ADVANCES_RECEIVED.equals(subjectsCode)){
|
||||
BigDecimal amount = new BigDecimal(rentIncomeInfo.get("RENT")).add(new BigDecimal(rentIncomeInfo.get("PENALTY")));
|
||||
money = amount.toString();
|
||||
param.put("contractNo","");
|
||||
}
|
||||
|
||||
//【长期应收-回租-汽车-本金】-【逾期本金】-【客商+合同号码】
|
||||
else if(LONG_TERM_RECEIVABLES_LEASEBACK_PRINCIPAL.equals(subjectsCode)){
|
||||
money=rentIncomeInfo.get("CORPUS");//逾期本金
|
||||
}
|
||||
|
||||
//【长期应收-回租-汽车-利息】-【逾期利息+邮储罚息】-【客商+合同号码】
|
||||
else if(LONG_TERM_LEASEBACK_INTEREST.equals(subjectsCode)){
|
||||
BigDecimal amount = new BigDecimal(rentIncomeInfo.get("INTEREST")).add(psbcOverdueAmount);
|
||||
money = amount.toString();
|
||||
}
|
||||
|
||||
//【租赁收入/回租/汽车】-【安鹏罚息(不含税)】-【客商+合同号码+0603(主营类型)】
|
||||
else if(LONG_TERM_LEASEBACK_INTEREST_PENALTY.equals(subjectsCode)){
|
||||
money = actualOverdueAmountExcludedTax.toString();//安鹏罚息不含税金额
|
||||
param.put("BUSINESSTYPE", "0603");// 主营类型
|
||||
}
|
||||
//【应交税费\应交增值税\销项税额】-【安鹏罚息税金】-【税率】
|
||||
else if(LONG_TERM_LEASEBACK_INTEREST_PENALTY_TAX_RATE.equals(subjectsCode)){
|
||||
money = actualOverdueAmountTax.toString();//安鹏罚息税金
|
||||
param.put("taxCode", taxCode);// 税率编码
|
||||
param.put("contractNo","");
|
||||
param.put("customerNo","");
|
||||
param.put("customerName","");
|
||||
}else {
|
||||
logger.warn("生成凭证,当前凭证类型匹配失败。subjectsCode=" + subjectsCode);
|
||||
throw new Exception("生成凭证,当前凭证类型匹配失败。subjectsCode=" + subjectsCode);
|
||||
}
|
||||
if(StringUtils.isEmpty(money)){
|
||||
logger.warn("生成凭证,查询凭证相关金额信息失败。");
|
||||
throw new Exception("生成凭证,查询凭证相关金额信息失败。");
|
||||
}
|
||||
//debit:借;credit:贷
|
||||
if("1".equals(param.get("entrydc"))) {
|
||||
param.put("debitMoney",money);
|
||||
param.put("creditMoney","0.00");
|
||||
}else{
|
||||
param.put("debitMoney","0.00");
|
||||
param.put("creditMoney",money);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据凭证配置编号获取对应的每条凭证参数
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public String findTaxNumber(Map<String,String> planInfo,Transaction Sqlca) throws Exception {
|
||||
//查询产品编号
|
||||
String sqlQueryProductId = "SELECT PRODUCT_ID from fc_request WHERE ID='"+planInfo.get("fc_request_id")+"'";
|
||||
String productId = Sqlca.getString(sqlQueryProductId);
|
||||
//查询租赁类型:回租,直租
|
||||
String sqlQueryLeasForm = "SELECT LeasForm from PRD_SPECIFIC_LIBRARY where PRODUCTID='"+productId+"'";
|
||||
String leasForm = Sqlca.getString(sqlQueryLeasForm);
|
||||
|
||||
String sql = "SELECT CONTRACT_DATE,break_money from TAX_INFO " +
|
||||
" where LEASE_FORM='"+leasForm+"' ORDER BY CONTRACT_DATE desc ";
|
||||
List<Map<String,String>> paramList = DataOperatorUtil.getDataBySql(sql);
|
||||
if(paramList.size()==0){
|
||||
logger.warn(planInfo.get("fc_request_id") + "通过凭证配置编号未找到对应配置信息");
|
||||
throw new Exception(planInfo.get("fc_request_id") + "通过凭证配置编号未找到对应配置信息");
|
||||
}
|
||||
return paramList.get(0).get("break_money");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据凭证配置编号获取对应的每条凭证参数
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public List<Map<String,String>> findParamOfVoucher(String voucherConfigNo) throws Exception {
|
||||
String sql = "select lvl.SORT_NUMBER as sortNumber,lvl.LOAN_SUBJECT as loanSubject, " +
|
||||
" CASE WHEN lvl.loan_direction = '1' THEN '1' ELSE '-1' END as entrydc, " +
|
||||
" lvl.VALUE_ABSTRACT as valueAbstract,lsc.SUBJECTS_CODE as subjectsCode, " +
|
||||
" lsc.SUBJECTS_NAME as subjectsName,lvc.MODULAR_NUMBER as modularName " +
|
||||
" from lv_voucher_loan lvl " +
|
||||
" left join LV_STACTS_CONFIG lsc on lvl.LOAN_SUBJECT=lsc.id " +
|
||||
" left join lv_voucher_config lvc on lvl.VOUCHER_ID=lvc.id " +
|
||||
" where lvc.VOUCHER_NO='"+voucherConfigNo+"'";
|
||||
List<Map<String,String>> paramList = DataOperatorUtil.getDataBySql(sql);
|
||||
if(paramList.size()==0){
|
||||
logger.warn(voucherConfigNo + "通过凭证配置编号未找到对应配置信息");
|
||||
throw new Exception(voucherConfigNo + "通过凭证配置编号未找到对应配置信息");
|
||||
}
|
||||
return paramList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取生成凭证所需的公共参数(每个合同为单位)
|
||||
* 在传来值的基础上增添
|
||||
* @param voucherInfo
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
private Map<String,String> initCommonParam(Map<String,String> voucherInfo) throws Exception {
|
||||
|
||||
//固定值部分
|
||||
String evidenceMessage = "凭证输出";//查看凭证表,发现只有这一个值,目前先设置为固定值
|
||||
String easFlag = "0";//导入财务系统状态 默认0 (同上,只有这一个值)
|
||||
String userId = "administrator";//操作人
|
||||
String userName = NameManager.getUserName(userId);
|
||||
voucherInfo.put("evidenceMessage",evidenceMessage);
|
||||
voucherInfo.put("easFlag",easFlag);
|
||||
voucherInfo.put("userId",userId);
|
||||
voucherInfo.put("userName",userName);
|
||||
|
||||
//日期:【 2021/08/11 17:48:17】
|
||||
String createTime = voucherInfo.get("createTime").substring(0,10);
|
||||
String periodYear = createTime.substring(0,4);
|
||||
String periodMonth = createTime.substring(5,7);
|
||||
voucherInfo.put("periodYear",periodYear);
|
||||
voucherInfo.put("periodMonth",periodMonth);
|
||||
voucherInfo.put("accountingDate",createTime);
|
||||
voucherInfo.put("generateDate", DateUtil.getSystemDateDetailTime());
|
||||
|
||||
//主体信息
|
||||
String contractId = voucherInfo.get("contractId");
|
||||
voucherInfo.putAll(this.getSubjectInfoByContractId(contractId));
|
||||
return voucherInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建凭证
|
||||
* @param paramList
|
||||
* @param tx
|
||||
* @throws Exception
|
||||
*/
|
||||
private void createVoucher(List<Map<String, String>> paramList, JBOTransaction tx) throws Exception {
|
||||
BizObjectManager bomV8 = JBOFactory.getBizObjectManager(VOUCHER_V8.CLASS_NAME,tx);
|
||||
for(Map<String, String> param :paramList){
|
||||
BizObject boV8 = bomV8.newObject();
|
||||
boV8.setAttributesValue(param);
|
||||
bomV8.saveObject(boV8);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据contractId获取主体信息
|
||||
* @param contractId
|
||||
* @return
|
||||
* @throws JBOException
|
||||
*/
|
||||
public Map<String,String> getSubjectInfoByContractId(String contractId) throws JBOException {
|
||||
Map<String,String> subject = new HashMap<>();
|
||||
BizObjectManager bomLCI = JBOFactory.getBizObjectManager(LB_CONTRACT_INFO.CLASS_NAME);
|
||||
BizObject boLCI = bomLCI.createQuery("id=:id").setParameter("id",contractId).getSingleResult(false);
|
||||
String subjectId = boLCI.getAttribute("SUBJECTID").toString();
|
||||
String subjectName = boLCI.getAttribute("SUBJECTNAME").toString();
|
||||
BizObjectManager bomOI = JBOFactory.getBizObjectManager(OWN_INFO.CLASS_NAME);
|
||||
BizObject boOI = bomOI.createQuery("OWN_NAME=:subjectName").setParameter("subjectName",subjectName).getSingleResult(false);
|
||||
String ownNumber = boOI.getAttribute("OWN_NUMBER").toString();
|
||||
subject.put("subjectId",subjectId);
|
||||
subject.put("subjectName",subjectName);
|
||||
subject.put("ownNumber",ownNumber);
|
||||
return subject;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将最终获取的参数转换为凭证表voucher_v8对应的字段
|
||||
* 注意:新增时注意param中字段不可修改
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
private Map<String,String> initConvertParam(Map<String,String> param){
|
||||
Map<String,String> finalParam = new HashMap<>();
|
||||
finalParam.put("evidence_message",param.get("evidenceMessage"));//固定值:凭证输出
|
||||
finalParam.put("periodyear",param.get("periodYear")); //年
|
||||
finalParam.put("f1",param.get("accountingDate"));//会计日期
|
||||
finalParam.put("f2",param.get("subjectsCode"));//科目编码
|
||||
finalParam.put("f3",param.get("voucherNo"));//凭证编号
|
||||
finalParam.put("f5",param.get("valueAbstract"));//摘要
|
||||
finalParam.put("f6",param.get("loanSubject"));//科目表id
|
||||
finalParam.put("f7",param.get("debitMoney"));//借方金额
|
||||
finalParam.put("f8",param.get("creditMoney"));//贷方金额
|
||||
finalParam.put("f12",param.get("userName"));//操作人
|
||||
finalParam.put("f15",param.get("accountingDate"));//日期(与会计日期相同)
|
||||
finalParam.put("f47",param.get("contractNo"));//业务合同编号
|
||||
finalParam.put("f48",param.get("ownNumber"));//本方信息No
|
||||
finalParam.put("f49",param.get("subjectId"));//所属公司ID(注意:实际此字段存的是code_library表中codeno='ManySubject' 的 itemno 字段)
|
||||
finalParam.put("f50",param.get("subjectName"));//所属公司名称
|
||||
finalParam.put("f51",param.get("periodYear"));//会计期间-年(与上面 ‘年’ 相同)
|
||||
finalParam.put("f52",param.get("periodMonth"));//会计期间-月
|
||||
finalParam.put("f59",param.get("sortNumber"));//凭证配置中排序号
|
||||
finalParam.put("f60",param.get("contractNo"));//业务合同号,与f47相同(尚不明为何重复)
|
||||
finalParam.put("f61",param.get("customerName"));//客户名称
|
||||
finalParam.put("f62",param.get("loanSubject"));//科目表id,与f6相同(尚不明为何重复)
|
||||
finalParam.put("f65",param.get("customerNo"));//客商编号(取值customer_info表中customer_num字段)
|
||||
finalParam.put("f73",param.get("BUSINESSTYPE"));//主营类型
|
||||
finalParam.put("f76",param.get("taxCode"));//利率编码
|
||||
finalParam.put("f74",param.get("cashFlow"));// 现金流项目
|
||||
finalParam.put("v8_status","已完整");//凭证状态 : 已完整;未完整
|
||||
finalParam.put("generate_date",param.get("generateDate"));//创建时间
|
||||
finalParam.put("v8_flag",param.get("easFlag"));//导入财务系统状态 默认0(尚不知有何逻辑,目前整个表中全部为0)
|
||||
finalParam.put("module_name",param.get("modularName"));//凭证模型名称
|
||||
finalParam.put("entrydc",param.get("entrydc"));//借贷:1,借;-1,贷
|
||||
finalParam.put("inputuserid",param.get("userId"));//操作人id
|
||||
return finalParam;
|
||||
}
|
||||
|
||||
/**
|
||||
* 当前期还款计划是否为,邮储回购,并在回购之前该期为逾期的。
|
||||
* @return
|
||||
*/
|
||||
public boolean findYCOverdue(String rentIncomeId, Transaction Sqlca) throws Exception {
|
||||
String sqlQueryPlanId = "SELECT PLAN_ID from lc_rent_income WHERE rent_plan_id='"+rentIncomeId+"'";//查询还款计划id
|
||||
String rentPlanId = Sqlca.getString(sqlQueryPlanId);
|
||||
String sqlCount = "SELECT count(1) from fc_yc_overdue_repay_plan WHERE rent_plan_id='"+rentPlanId+"'";//查询是否在回购之前是否已逾期
|
||||
String countNum = Sqlca.getString(sqlCount);
|
||||
if(StringUtils.isEmpty(countNum) || "0".equals(sqlCount)){
|
||||
logger.warn("rentIncomeId="+ rentIncomeId + ",当前实收所对应的还款计划,不符合邮储回购,并在回购之前该期为逾期的。");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -126,7 +126,7 @@ public class OverdueRepurchaseVoucherPSBC implements VoucherInfoService {
|
||||
*/
|
||||
private String findOutstandingPrincipal(String contractId, Transaction Sqlca) throws Exception {
|
||||
String sqlPrincipal = "SELECT SUM(CORPUS) from lc_rent_plan WHERE CONTRACT_ID='"+contractId+"'";//总本金
|
||||
String sqlRepaymentPrincipal = "SELECT SUM(CORPUS) from lc_rent_income WHERE CONTRACT_ID='"+contractId+"'";//已还本金
|
||||
String sqlRepaymentPrincipal = "SELECT SUM(CORPUS) from lc_rent_income WHERE CONTRACT_ID='"+contractId+"' and charge_way = 'PSBC'";//在邮储方的已还本金
|
||||
String amountPrincipal = Sqlca.getString(sqlPrincipal);
|
||||
String amountRepaymentPrincipal = Sqlca.getString(sqlRepaymentPrincipal);
|
||||
if(StringUtils.isEmpty(amountPrincipal) || StringUtils.isEmpty(amountRepaymentPrincipal)){
|
||||
@ -159,7 +159,7 @@ public class OverdueRepurchaseVoucherPSBC implements VoucherInfoService {
|
||||
*/
|
||||
private String findOutstandingInterest(String contractId, Transaction Sqlca) throws Exception {
|
||||
String sqlInterest = "SELECT SUM(INTEREST) from lc_rent_plan WHERE CONTRACT_ID='"+contractId+"'";//总利息
|
||||
String sqlRepaymentInterest = "SELECT SUM(INTEREST) from lc_rent_income WHERE CONTRACT_ID='"+contractId+"'";//已还利息
|
||||
String sqlRepaymentInterest = "SELECT SUM(INTEREST) from lc_rent_income WHERE CONTRACT_ID='"+contractId+"' and charge_way = 'PSBC' ";//已还利息
|
||||
String amountInterest = Sqlca.getString(sqlInterest);
|
||||
String amountRepaymentInterest = Sqlca.getString(sqlRepaymentInterest);
|
||||
if(StringUtils.isEmpty(amountInterest) || StringUtils.isEmpty(amountRepaymentInterest)){
|
||||
@ -182,7 +182,7 @@ public class OverdueRepurchaseVoucherPSBC implements VoucherInfoService {
|
||||
"from fc_buyback_info frc " +
|
||||
"left join fc_yc_file_repay_result ffr on frc.fc_request_id = ffr.FC_REQUEST_ID " +
|
||||
"left join fc_request fr on frc.fc_request_id = fr.ID " +
|
||||
"where frc.voucher_status='0' and fr.DEL_FLAG='0' and fr.CHANNEL_NO='"+channelNo+"' and ffr.REPAYMENT_FLAG='3' and ffr.REPAYMENT_SOURCE='1' and ffr.ID is not null ";
|
||||
"where frc.is_confirm='1' and frc.voucher_status='0' and fr.DEL_FLAG='0' and fr.CHANNEL_NO='"+channelNo+"' and ffr.REPAYMENT_FLAG='3' and ffr.REPAYMENT_SOURCE='1' and ffr.ID is not null ";
|
||||
return DataOperatorUtil.getDataBySql(sql);
|
||||
}
|
||||
|
||||
@ -437,37 +437,14 @@ public class OverdueRepurchaseVoucherPSBC implements VoucherInfoService {
|
||||
* @throws Exception
|
||||
*/
|
||||
private void addOverdueRepayPlan(Map<String,String> loanInfo ,Transaction Sqlca) throws Exception {
|
||||
String sqlQuery = "SELECT plan_list from report_rent_plan WHERE contract_number='"+loanInfo.get("contractNo") +"' and batch_status='未完成' and over_days > 0";
|
||||
String sqlQuery = "SELECT plan_list from report_rent_plan WHERE contract_number='"+loanInfo.get("contractNo") +"' and batch_status='未完成' and over_days > 0 ";
|
||||
List<Map<String,String>> paramList = DataOperatorUtil.getDataBySql(sqlQuery);
|
||||
if(paramList.size()==0 || paramList.size()>2 ){
|
||||
logger.warn(loanInfo.get("contractNo") + "逾期回购生成凭证之后,查询是否有逾期数据,或逾期数据大于2。");
|
||||
return;
|
||||
}
|
||||
String sqlQuery2 = "SELECT * from fc_buyback_info WHERE fc_request_id='"+loanInfo.get("fc_request_id") +"'";
|
||||
List<Map<String,String>> paramList2 = DataOperatorUtil.getDataBySql(sqlQuery2);
|
||||
if(paramList2.size()==0 || paramList2.size()>1){
|
||||
logger.warn(loanInfo.get("contractNo") + "逾期回购生成凭证之后,查询是否有逾期数据2,或逾期数据大于1。");
|
||||
return;
|
||||
}
|
||||
Map<String, String> overduePlan = paramList2.get(0);
|
||||
String firstOverduePenalty = overduePlan.get("first_overdue_penalty");
|
||||
String secondOverduePenalty = overduePlan.get("second_overdue_penalty");
|
||||
if(paramList.size()==1){
|
||||
paramList.get(0).put("overduePenalty", firstOverduePenalty);
|
||||
}else if(paramList.size() == 2){
|
||||
int firstTerm = Integer.parseInt(paramList.get(0).get("plan_list"));
|
||||
int secondTerm = Integer.parseInt(paramList.get(1).get("plan_list"));
|
||||
if(firstTerm < secondTerm){
|
||||
paramList.get(0).put("overduePenalty", firstOverduePenalty);
|
||||
paramList.get(1).put("overduePenalty", secondOverduePenalty);
|
||||
}else {
|
||||
paramList.get(0).put("overduePenalty", secondOverduePenalty);
|
||||
paramList.get(1).put("overduePenalty", firstOverduePenalty);
|
||||
}
|
||||
}
|
||||
for(Map<String, String> planList : paramList){
|
||||
String term = planList.get("plan_list");
|
||||
String overduePenalty = planList.get("overduePenalty");
|
||||
String sqlRentPlan = "SELECT ID from lc_rent_plan WHERE CONTRACT_ID='"+loanInfo.get("contractId")
|
||||
+"' and PLAN_LIST='"+term+"'";//租金计划id
|
||||
String rentPlanId = Sqlca.getString(sqlRentPlan);
|
||||
@ -478,8 +455,6 @@ public class OverdueRepurchaseVoucherPSBC implements VoucherInfoService {
|
||||
"contract_no," +
|
||||
"lend_term," +
|
||||
"rent_plan_id," +
|
||||
"yc_overdue_amount," +
|
||||
"yc_overdue_repay_amount," +
|
||||
"create_time," +
|
||||
"update_time" +
|
||||
") values" +
|
||||
@ -490,8 +465,6 @@ public class OverdueRepurchaseVoucherPSBC implements VoucherInfoService {
|
||||
"'"+ loanInfo.get("contractNo") +"',"+
|
||||
""+ term +","+
|
||||
"'"+ rentPlanId +"',"+
|
||||
"'"+ overduePenalty +"',"+
|
||||
"'0',"+
|
||||
"'"+ DateUtil.getSystemTimeByFormat("yyyyMMddHHmmss") +"',"+
|
||||
"'"+ DateUtil.getSystemTimeByFormat("yyyyMMddHHmmss") +"'"+
|
||||
")" ;
|
||||
|
||||
@ -3,10 +3,13 @@ import com.amarsoft.are.util.StringFunction;
|
||||
import com.base.util.QuartzUtil;
|
||||
import com.tenwa.voucher.service.VoucherInfoService;
|
||||
import com.tenwa.voucher.serviceImp.FundIncomeVoucherPSBC;
|
||||
import com.tenwa.voucher.serviceImp.OverdueRepayPlanVoucherPSBC;
|
||||
import com.tenwa.voucher.serviceImp.OverdueRepurchaseVoucherPSBC;
|
||||
import org.quartz.Job;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobExecutionException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* 逾期回购生成凭证-定时任务
|
||||
@ -14,6 +17,8 @@ import org.quartz.JobExecutionException;
|
||||
*/
|
||||
public class CorpusSourceOverdueRepurchaseCreateVoucherJob implements Job {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(CorpusSourceOverdueRepurchaseCreateVoucherJob.class);
|
||||
|
||||
@Override
|
||||
public void execute(JobExecutionContext arg0) throws JobExecutionException {
|
||||
String startime = StringFunction.getTodayNow();
|
||||
@ -22,6 +27,8 @@ public class CorpusSourceOverdueRepurchaseCreateVoucherJob implements Job {
|
||||
try{
|
||||
VoucherInfoService voucher = new OverdueRepurchaseVoucherPSBC();
|
||||
voucher.run();
|
||||
VoucherInfoService voucher2 = new OverdueRepayPlanVoucherPSBC();
|
||||
voucher2.run();
|
||||
QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.CorpusSourceOverdueRepurchaseCreateVoucherJob", "success", "成功", curUserId);
|
||||
} catch (Exception e) {
|
||||
QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.CorpusSourceOverdueRepurchaseCreateVoucherJob", "error", "失败", curUserId);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user