Browse Source

Merge remote-tracking branch 'origin/master'

master
God 1 year ago
parent
commit
8def705913
  1. 2
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdelivered/BusDeliveredMapper.xml
  2. 4
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempExportVo.java
  3. 14
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempMapper.xml
  4. 54
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempService.java
  5. 400
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java
  6. 274
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java
  7. 30
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/voucher/VoucherService.java
  8. 2
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/voucher/data_model.json
  9. 1
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentplandetails/LoanPlanDetailsVoForLateVoucher.java
  10. 5
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentplandetails/LoanRepaymentPlanDetailsFeign.java
  11. 5
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentplandetails/LoanRepaymentPlanDetailsFeignFallback.java
  12. 16
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentplandetails/LoanRepaymentPlanDetailsForOverDue.java
  13. 54
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyService.java
  14. 52
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyService.java
  15. 54
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java
  16. 7
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.java
  17. 92
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.xml
  18. 10
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsRest.java
  19. 8
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsService.java
  20. 106
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java
  21. 53
      doc/databases/报表中心.sql
  22. 8
      doc/databases/报表新增修改.sql

2
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdelivered/BusDeliveredMapper.xml

@ -632,7 +632,7 @@
<select id="selectVisitSid"
resultType="com.yxt.anrui.riskcenter.api.loanhomevisitinvestigateotherpeo.LoanHomevisitInvestigateOtherpeo">
select * from anrui_riskcenter.loan_homevisit_investigate_otherpeo where mainSid = #{sid}
select * from anrui_riskcenter.loan_homevisit_investigate_otherpeo where mainSid = #{sid} and peoTypeKey = 3 order by id desc limit 1
</select>
<select id="selectByBorrowSidAndOrder"

4
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempExportVo.java

@ -10,8 +10,8 @@ import lombok.Data;
*/
@Data
public class CrmCustomerTempExportVo {
private String staffSid;
private String createOrgSid;
// private String staffSid;
// private String createOrgSid;
@ExportEntityMap(CnName = "序号", EnName = "rankNo")
private Integer rankNo;
@ExportEntityMap(CnName = "创建日期", EnName = "createTime")

14
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempMapper.xml

@ -250,8 +250,19 @@
</where>
</select>
<select id="exportExcel" resultType="com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempExportVo">
SELECT cct.*,
SELECT
row_number() over(order by cct.id) as rankNo,
DATE_FORMAT(cct.createTime, '%Y-%m-%d') AS createTime,
cct.customerNo,
so.`name` as createOrgName,
st.name as staffName,
org.orgName as deptName,
cct.`name`,
cct.customerType,
cct.mobile,
cct.weixin,
cct.`level`,
DATE_FORMAT(cct.remind_day, '%Y-%m-%d') AS remind_day,
(SELECT COUNT(*)
FROM crm_vehicledemand cv
WHERE cct.sid = cv.customerSid
@ -262,6 +273,7 @@
FROM crm_customer_temp cct
LEFT JOIN anrui_portal.sys_organization so ON cct.createOrgSid = so.sid
LEFT JOIN anrui_portal.sys_staffinfo st ON cct.staffSid = st.sid
LEFT JOIN anrui_portal.sys_staff_org as org ON org.staffSid = st.sid
<where>
${ew.sqlSegment}
</where>

54
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempService.java

@ -1289,33 +1289,33 @@ public class CrmCustomerTempService extends MybatisBaseService<CrmCustomerTempMa
apply(StringUtils.isNotBlank(createEndDate), "date_format (cct.createTime,'%Y-%m-%d') <= date_format('" + createEndDate + "','%Y-%m-%d')"
);
List<CrmCustomerTempExportVo> records = baseMapper.exportExcel(qw);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
int id = 1;
if (!records.isEmpty()) {
for (CrmCustomerTempExportVo record : records) {
try {
Date date = sdf.parse(record.getCreateTime());
record.setCreateTime(sdf.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
String createOrgSid = record.getCreateOrgSid();
String staffSid = record.getStaffSid();
String createOrgName = sysOrganizationFeign.fetchBySid(createOrgSid).getData().getName();
record.setCreateOrgName(createOrgName);
List<SysStaffOrgVo> sysStaffOrgVos = sysStaffOrgFeign.getSysStaffOrgListByStaffSid(staffSid).getData();
for (SysStaffOrgVo sysStaffOrgVo : sysStaffOrgVos) {
SysOrganizationVo sysOrganizationVo = sysOrganizationFeign.fetchBySid(sysStaffOrgVo.getOrgSid()).getData();
String psid = sysOrganizationVo.getPsid();
if (psid.equals(createOrgSid)) {
String orgName = sysStaffOrgVo.getOrgName();
record.setDeptName(orgName);
}
}
record.setRankNo(id);
id = id + 1;
}
}
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// int id = 1;
// if (!records.isEmpty()) {
// for (CrmCustomerTempExportVo record : records) {
// try {
// Date date = sdf.parse(record.getCreateTime());
// record.setCreateTime(sdf.format(date));
// } catch (ParseException e) {
// e.printStackTrace();
// }
// String createOrgSid = record.getCreateOrgSid();
// String staffSid = record.getStaffSid();
// String createOrgName = sysOrganizationFeign.fetchBySid(createOrgSid).getData().getName();
// record.setCreateOrgName(createOrgName);
// List<SysStaffOrgVo> sysStaffOrgVos = sysStaffOrgFeign.getSysStaffOrgListByStaffSid(staffSid).getData();
// for (SysStaffOrgVo sysStaffOrgVo : sysStaffOrgVos) {
// SysOrganizationVo sysOrganizationVo = sysOrganizationFeign.fetchBySid(sysStaffOrgVo.getOrgSid()).getData();
// String psid = sysOrganizationVo.getPsid();
// if (psid.equals(createOrgSid)) {
// String orgName = sysStaffOrgVo.getOrgName();
// record.setDeptName(orgName);
// }
// }
// record.setRankNo(id);
// id = id + 1;
// }
// }
return records;
}
}

400
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java

@ -47,6 +47,9 @@ import com.yxt.anrui.base.common.utils.domain.BillNo;
import com.yxt.anrui.buscenter.api.busdeposit.AppBusDepositBuscenterDetailVo;
import com.yxt.anrui.buscenter.api.busdeposit.BusDepositFeign;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign;
import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerDetailsVo;
import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerFeign;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign;
import com.yxt.anrui.crm.api.crmcustomertemp.*;
@ -62,9 +65,13 @@ import com.yxt.anrui.fin.api.kingdee.arreceivebill.ARReceivebill;
import com.yxt.anrui.fin.api.kingdee.bdcustomer.BdCustomer;
import com.yxt.anrui.fin.api.kingdee.capitalcreditresult.CapitalCreditResult;
import com.yxt.anrui.fin.api.kingdee.capitalcreditresult.CwSystemYT;
import com.yxt.anrui.fin.api.kingdee.voucher.CollectionVoucher;
import com.yxt.anrui.fin.api.kingdee.voucher.GeneralVoucher;
import com.yxt.anrui.fin.api.kingdee.voucher.SceneCodeEnum;
import com.yxt.anrui.fin.biz.finselectedreceivablesdetailed.FinSelectedReceivablesDetailedService;
import com.yxt.anrui.fin.biz.finuncollectedreceivablesdetailed.FinUncollectedReceivablesDetailedService;
import com.yxt.anrui.fin.biz.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJRService;
import com.yxt.anrui.fin.biz.kingdee.FinKingDeeFeignRest;
import com.yxt.anrui.fin.biz.kingdee.FinKingDeeService;
import com.yxt.anrui.fin.biz.kingdee.arreceivebill.ArReceivebillService;
import com.yxt.anrui.fin.biz.kingdee.bdcustomer.BdCustomerService;
@ -86,10 +93,12 @@ import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicy;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicy;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicyFeign;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicyVo;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecord;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryFeign;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsFeign;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsForOverDue;
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions;
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutionsFeign;
import com.yxt.anrui.riskcenter.api.loansolutionsdetail.LoanSolutionsDetail;
@ -183,6 +192,12 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
private LoanRepaymentHistoryFeign loanRepaymentHistoryFeign;
@Autowired
private LoanFinBankFeign loanFinBankFeign;
@Autowired
private FinKingDeeFeignRest finKingDeeFeignRest;
@Autowired
private BusSalesOrderBorrowerFeign busSalesOrderBorrowerFeign;
@Autowired
private BusSalesOrderFeign busSalesOrderFeign;
private QueryWrapper<FinCollectionConfirmation> createQueryWrapper(FinCollectionConfirmationQuery query) {
// todo: 这里根据具体业务调整查询条件
@ -3682,6 +3697,7 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
if ("4".equals(confirmation.getAuditState())) {
return rb.setMsg("该申请已撤回,不允许确认");
}
String collectionTypeKey = confirmation.getCollectionTypeKey(); //收款方式
confirmation.setAuditState(3);
//与收款金额作比较:更新认款状态 1未认款/2部分认款/3已认款
confirmation.setPaymentState(3);
@ -3739,8 +3755,38 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
}
loanRepaymentHistoryFeign.saveHistoryByEntity(historyEntity);
}
if (v.getReceivablesName().equals("资方退还垫款")) {
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new org.apache.tomcat.util.threads.ThreadPoolExecutor(1, 10,
1000, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new org.apache.tomcat.util.threads.ThreadPoolExecutor.AbortPolicy());
//推送资方退还垫款收款凭证
Future future = pool.submit(() -> {
pushReturnVoucher(v, sid);
});
} catch (Exception e) {
e.printStackTrace();
log.error("推送数据失败=========================" + e.getMessage());
}
}
//推送间还待转付列表
if (v.getReceivablesName().equals("月还") || v.getReceivablesName().equals("资方逾期利息")) {
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new org.apache.tomcat.util.threads.ThreadPoolExecutor(1, 10,
1000, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new org.apache.tomcat.util.threads.ThreadPoolExecutor.AbortPolicy());
//推送间还月还收款凭证
Future future = pool.submit(() -> {
pushIndirectVoucher(v, sid);
});
} catch (Exception e) {
e.printStackTrace();
log.error("推送数据失败=========================" + e.getMessage());
}
String planSid = "";
if (v.getReceivablesName().equals("月还")) {
planSid = v.getReceivablesSid();
@ -3802,6 +3848,20 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
loanRepaymentPlanDetailsFeign.updateByEntity(planDetails);
}
}
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new org.apache.tomcat.util.threads.ThreadPoolExecutor(1, 10,
1000, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new org.apache.tomcat.util.threads.ThreadPoolExecutor.AbortPolicy());
//推送资金占用费收款凭证
Future future = pool.submit(() -> {
pushFeeVoucher(v, sid);
});
} catch (Exception e) {
e.printStackTrace();
log.error("推送数据失败=========================" + e.getMessage());
}
}
});
//查询该申请已认款金额总数
@ -3822,6 +3882,346 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
return rb.success().setMsg("款项确认成功");
}
private void pushFeeVoucher(FinSelectedReceivablesDetailedVo v, String sid) {
String planSid = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
FinCollectionConfirmation finCollectionConfirmation = fetchBySid(sid);
if (null != finCollectionConfirmation) {
FinUncollectedReceivablesDetailedJR jr = finUncollectedReceivablesDetailedJRService.fetchBySid(v.getReceivablesSid());
if (jr != null) {
planSid = jr.getBusSid();
}
LoanRepaymentPlanDetails planDetails = loanRepaymentPlanDetailsFeign.fetchDetails(planSid).getData();
if (null != planDetails) {
for (int i = 0; i <= 1; i++) {
CollectionVoucher collectionVoucher = new CollectionVoucher();
//收款方式key
collectionVoucher.setPayTypeCode(finCollectionConfirmation.getCollectionTypeKey());
//收款银行账号
if (StringUtils.isNotBlank(finCollectionConfirmation.getCollectionBankNum())) {
collectionVoucher.setBankAccount(finCollectionConfirmation.getCollectionBankNum());
}
List<CollectionVoucher.CollectionVoucherDetail> voucherDetails = new ArrayList<>();
CollectionVoucher.CollectionVoucherDetail voucherDetail = new CollectionVoucher.CollectionVoucherDetail();
if (i == 0) {
voucherDetail.setSceneCode(SceneCodeEnum.FUND_VOUCHER1.getCode());
} else if (i == 1) {
voucherDetail.setSceneCode(SceneCodeEnum.FUND_VOUCHER2.getCode());
}
String useOrgSid = planDetails.getUseOrgSid();
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData();
if (null != organizationVo) {
collectionVoucher.setUseOrgCode(organizationVo.getOrgCode());
}
String deptSid = planDetails.getDeptSid();
SysOrganizationVo organizationDeptVo = sysOrganizationFeign.fetchBySid(deptSid).getData();
if (null != organizationDeptVo) {
voucherDetail.setDeptCode(organizationDeptVo.getOrgCode());
}
String busVinSid = planDetails.getBusVinSid();
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData();
if (null != busSalesOrderVehicle) {
String customerNumber = "";
//判断财务系统是否有客户
Boolean aBoolean = finKingDeeFeignRest.customerExistState(busSalesOrderVehicle.getTemporaryNo()).getData();
String linkNo = "";
String customerName = "";
BusSalesOrderBorrowerDetailsVo borrowerDetailsVo = busSalesOrderBorrowerFeign.fetchDetailsBySid(busSalesOrderVehicle.getBorrowerSid()).getData();
if (!aBoolean) {
// List<BdCustomer> bdCustomers = new ArrayList<>();
BdCustomer bdCustomer = new BdCustomer();
bdCustomer.setFNumber(busSalesOrderVehicle.getTemporaryNo());
String salesOrderSid = planDetails.getSalesOrderSid();
BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(salesOrderSid).getData();
bdCustomer.setFShortName(salesOrder.getContractNo());
BasePurchaseSystemDetailsVo data = basePurchaseSystemFeign.fetchDetailsByDeptSid(salesOrder.getPurchaseSystemSid()).getData();
bdCustomer.setTOrgIds(data.getOrgCode());
if (StringUtils.isNotBlank(busSalesOrderVehicle.getLinkNo())) {
String vinNo = busSalesOrderVehicle.getLinkNo();
if (vinNo.length() > 8) {
linkNo = vinNo.substring(vinNo.length() - 8);
} else {
linkNo = busSalesOrderVehicle.getLinkNo();
}
if (null != borrowerDetailsVo) {
bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + linkNo);
customerName = borrowerDetailsVo.getBorrowerName() + linkNo;
}
} else {
if (null != borrowerDetailsVo) {
bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo());
customerName = borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo();
}
}
// bdCustomers.add(bdCustomer);
ResultBean<String> resultBean = finKingDeeFeignRest.draftBdCustomer(bdCustomer);
if (resultBean.getSuccess()) {
customerNumber = bdCustomer.getFNumber();
}
} else {
customerNumber = busSalesOrderVehicle.getTemporaryNo();
if (StringUtils.isNotBlank(busSalesOrderVehicle.getLinkNo())) {
String vinNo = busSalesOrderVehicle.getLinkNo();
if (vinNo.length() > 8) {
linkNo = vinNo.substring(vinNo.length() - 8);
} else {
linkNo = busSalesOrderVehicle.getLinkNo();
}
if (null != borrowerDetailsVo) {
customerName = borrowerDetailsVo.getBorrowerName() + linkNo;
}
} else {
if (null != borrowerDetailsVo) {
customerName = borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo();
}
}
}
voucherDetail.setCustomerCode(customerNumber);
voucherDetail.setCustomerName(customerName);
}
try {
voucherDetail.setDataTime(sdf.parse(finCollectionConfirmation.getCollectionDate()));
} catch (ParseException e) {
e.printStackTrace();
}
voucherDetail.setAmount(new BigDecimal(v.getSubscriptionMoney()));
voucherDetails.add(voucherDetail);
collectionVoucher.setVoucherDetails(voucherDetails);
finKingDeeFeignRest.saveFeeVoucher(collectionVoucher);
}
}
}
}
private void pushReturnVoucher(FinSelectedReceivablesDetailedVo v, String sid) {
String planSid = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
FinCollectionConfirmation finCollectionConfirmation = fetchBySid(sid);
if (null != finCollectionConfirmation) {
FinUncollectedReceivablesDetailedJR jr = finUncollectedReceivablesDetailedJRService.fetchBySid(v.getReceivablesSid());
if (jr != null) {
planSid = jr.getBusSid();
}
LoanRepaymentPlanDetails planDetails = loanRepaymentPlanDetailsFeign.fetchDetails(planSid).getData();
if (null != planDetails) {
CollectionVoucher collectionVoucher = new CollectionVoucher();
//收款方式key
collectionVoucher.setPayTypeCode(finCollectionConfirmation.getCollectionTypeKey());
//收款银行账号
if (StringUtils.isNotBlank(finCollectionConfirmation.getCollectionBankNum())) {
collectionVoucher.setBankAccount(finCollectionConfirmation.getCollectionBankNum());
}
List<CollectionVoucher.CollectionVoucherDetail> voucherDetails = new ArrayList<>();
CollectionVoucher.CollectionVoucherDetail voucherDetail = new CollectionVoucher.CollectionVoucherDetail();
String useOrgSid = planDetails.getUseOrgSid();
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData();
if (null != organizationVo) {
collectionVoucher.setUseOrgCode(organizationVo.getOrgCode());
}
String deptSid = planDetails.getDeptSid();
SysOrganizationVo organizationDeptVo = sysOrganizationFeign.fetchBySid(deptSid).getData();
if (null != organizationDeptVo) {
voucherDetail.setDeptCode(organizationDeptVo.getOrgCode());
}
String busVinSid = planDetails.getBusVinSid();
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData();
if (null != busSalesOrderVehicle) {
String customerNumber = "";
//判断财务系统是否有客户
Boolean aBoolean = finKingDeeFeignRest.customerExistState(busSalesOrderVehicle.getTemporaryNo()).getData();
String linkNo = "";
String customerName = "";
BusSalesOrderBorrowerDetailsVo borrowerDetailsVo = busSalesOrderBorrowerFeign.fetchDetailsBySid(busSalesOrderVehicle.getBorrowerSid()).getData();
if (!aBoolean) {
// List<BdCustomer> bdCustomers = new ArrayList<>();
BdCustomer bdCustomer = new BdCustomer();
bdCustomer.setFNumber(busSalesOrderVehicle.getTemporaryNo());
String salesOrderSid = planDetails.getSalesOrderSid();
BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(salesOrderSid).getData();
bdCustomer.setFShortName(salesOrder.getContractNo());
BasePurchaseSystemDetailsVo data = basePurchaseSystemFeign.fetchDetailsByDeptSid(salesOrder.getPurchaseSystemSid()).getData();
bdCustomer.setTOrgIds(data.getOrgCode());
if (StringUtils.isNotBlank(busSalesOrderVehicle.getLinkNo())) {
String vinNo = busSalesOrderVehicle.getLinkNo();
if (vinNo.length() > 8) {
linkNo = vinNo.substring(vinNo.length() - 8);
} else {
linkNo = busSalesOrderVehicle.getLinkNo();
}
if (null != borrowerDetailsVo) {
bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + linkNo);
customerName = borrowerDetailsVo.getBorrowerName() + linkNo;
}
} else {
if (null != borrowerDetailsVo) {
bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo());
customerName = borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo();
}
}
// bdCustomers.add(bdCustomer);
ResultBean<String> resultBean = finKingDeeFeignRest.draftBdCustomer(bdCustomer);
if (resultBean.getSuccess()) {
customerNumber = bdCustomer.getFNumber();
}
} else {
customerNumber = busSalesOrderVehicle.getTemporaryNo();
if (StringUtils.isNotBlank(busSalesOrderVehicle.getLinkNo())) {
String vinNo = busSalesOrderVehicle.getLinkNo();
if (vinNo.length() > 8) {
linkNo = vinNo.substring(vinNo.length() - 8);
} else {
linkNo = busSalesOrderVehicle.getLinkNo();
}
if (null != borrowerDetailsVo) {
customerName = borrowerDetailsVo.getBorrowerName() + linkNo;
}
} else {
if (null != borrowerDetailsVo) {
customerName = borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo();
}
}
}
voucherDetail.setCustomerCode(customerNumber);
voucherDetail.setCustomerName(customerName);
}
try {
voucherDetail.setDataTime(sdf.parse(finCollectionConfirmation.getCollectionDate()));
} catch (ParseException e) {
e.printStackTrace();
}
voucherDetail.setAmount(new BigDecimal(v.getSubscriptionMoney()));
voucherDetails.add(voucherDetail);
collectionVoucher.setVoucherDetails(voucherDetails);
finKingDeeFeignRest.saveReturnVoucher(collectionVoucher);
}
}
}
private void pushIndirectVoucher(FinSelectedReceivablesDetailedVo v, String sid) {
String planSid = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
FinCollectionConfirmation finCollectionConfirmation = fetchBySid(sid);
if (null != finCollectionConfirmation) {
if (v.getReceivablesName().equals("月还")) {
planSid = v.getReceivablesSid();
} else {
FinUncollectedReceivablesDetailedJR jr = finUncollectedReceivablesDetailedJRService.fetchBySid(v.getReceivablesSid());
if (jr != null) {
planSid = jr.getBusSid();
}
}
LoanRepaymentPlanDetails planDetails = loanRepaymentPlanDetailsFeign.fetchDetails(planSid).getData();
if (null != planDetails) {
CollectionVoucher collectionVoucher = new CollectionVoucher();
//收款方式key
collectionVoucher.setPayTypeCode(finCollectionConfirmation.getCollectionTypeKey());
//收款银行账号
if (StringUtils.isNotBlank(finCollectionConfirmation.getCollectionBankNum())) {
collectionVoucher.setBankAccount(finCollectionConfirmation.getCollectionBankNum());
}
List<CollectionVoucher.CollectionVoucherDetail> voucherDetails = new ArrayList<>();
CollectionVoucher.CollectionVoucherDetail voucherDetail = new CollectionVoucher.CollectionVoucherDetail();
String useOrgSid = planDetails.getUseOrgSid();
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData();
if (null != organizationVo) {
collectionVoucher.setUseOrgCode(organizationVo.getOrgCode());
}
String deptSid = planDetails.getDeptSid();
SysOrganizationVo organizationDeptVo = sysOrganizationFeign.fetchBySid(deptSid).getData();
if (null != organizationDeptVo) {
voucherDetail.setDeptCode(organizationDeptVo.getOrgCode());
}
String busVinSid = planDetails.getBusVinSid();
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData();
if (null != busSalesOrderVehicle) {
String customerNumber = "";
//判断财务系统是否有客户
Boolean aBoolean = finKingDeeFeignRest.customerExistState(busSalesOrderVehicle.getTemporaryNo()).getData();
String linkNo = "";
String customerName = "";
BusSalesOrderBorrowerDetailsVo borrowerDetailsVo = busSalesOrderBorrowerFeign.fetchDetailsBySid(busSalesOrderVehicle.getBorrowerSid()).getData();
if (!aBoolean) {
// List<BdCustomer> bdCustomers = new ArrayList<>();
BdCustomer bdCustomer = new BdCustomer();
bdCustomer.setFNumber(busSalesOrderVehicle.getTemporaryNo());
String salesOrderSid = planDetails.getSalesOrderSid();
BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(salesOrderSid).getData();
bdCustomer.setFShortName(salesOrder.getContractNo());
BasePurchaseSystemDetailsVo data = basePurchaseSystemFeign.fetchDetailsByDeptSid(salesOrder.getPurchaseSystemSid()).getData();
bdCustomer.setTOrgIds(data.getOrgCode());
if (StringUtils.isNotBlank(busSalesOrderVehicle.getLinkNo())) {
String vinNo = busSalesOrderVehicle.getLinkNo();
if (vinNo.length() > 8) {
linkNo = vinNo.substring(vinNo.length() - 8);
} else {
linkNo = busSalesOrderVehicle.getLinkNo();
}
if (null != borrowerDetailsVo) {
bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + linkNo);
customerName = borrowerDetailsVo.getBorrowerName() + linkNo;
}
} else {
if (null != borrowerDetailsVo) {
bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo());
customerName = borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo();
}
}
// bdCustomers.add(bdCustomer);
ResultBean<String> resultBean = finKingDeeFeignRest.draftBdCustomer(bdCustomer);
if (resultBean.getSuccess()) {
customerNumber = bdCustomer.getFNumber();
}
} else {
customerNumber = busSalesOrderVehicle.getTemporaryNo();
if (StringUtils.isNotBlank(busSalesOrderVehicle.getLinkNo())) {
String vinNo = busSalesOrderVehicle.getLinkNo();
if (vinNo.length() > 8) {
linkNo = vinNo.substring(vinNo.length() - 8);
} else {
linkNo = busSalesOrderVehicle.getLinkNo();
}
if (null != borrowerDetailsVo) {
customerName = borrowerDetailsVo.getBorrowerName() + linkNo;
}
} else {
if (null != borrowerDetailsVo) {
customerName = borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo();
}
}
}
voucherDetail.setCustomerCode(customerNumber);
voucherDetail.setCustomerName(customerName);
}
if (v.getReceivablesName().equals("资方逾期利息")) {
//间还已逾期
voucherDetail.setSceneCode(SceneCodeEnum.INDIRECT_VOUCHER2.getCode());
} else {
LoanRepaymentPlanDetailsForOverDue checkOverdue = loanRepaymentPlanDetailsFeign.checkOverDue(planSid).getData();
if (checkOverdue != null) {
if (StringUtils.isNotBlank(checkOverdue.getOverdueState())) {
if (checkOverdue.getOverdueState().equals("0")) {
//间还已逾期
voucherDetail.setSceneCode(SceneCodeEnum.INDIRECT_VOUCHER2.getCode());
} else if (checkOverdue.getOverdueState().equals("1")) {
//间还未逾期
voucherDetail.setSceneCode(SceneCodeEnum.INDIRECT_VOUCHER1.getCode());
}
}
}
}
try {
voucherDetail.setDataTime(sdf.parse(finCollectionConfirmation.getCollectionDate()));
} catch (ParseException e) {
e.printStackTrace();
}
voucherDetail.setAmount(new BigDecimal(v.getSubscriptionMoney()));
voucherDetails.add(voucherDetail);
collectionVoucher.setVoucherDetails(voucherDetails);
finKingDeeFeignRest.saveIndirectVoucher(collectionVoucher);
}
}
}
public IPage<AppFinCollectionConfirmationPageVo> getRskCollectionConfirmList(PagerQuery<AppFinCollectionConfirmationQuery> pq) {
IPage<AppFinCollectionConfirmationQuery> page = PagerUtil.queryToPage(pq);
String orgPath = pq.getParams().getOrgPath();

274
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java

@ -52,6 +52,9 @@ import com.yxt.anrui.fin.biz.kingdee.stktransferdirect.StkTransferDirectService;
import com.yxt.anrui.fin.biz.kingdee.voucher.VoucherService;
import com.yxt.anrui.portal.api.dictcommon.DictCommonFeign;
import com.yxt.anrui.portal.api.dictcommon.DictCommonVo;
import com.yxt.anrui.portal.api.sysmapping.SysMappingFeign;
import com.yxt.anrui.portal.api.sysmapping.SysMappingInfoVo;
import com.yxt.anrui.portal.api.sysmapping.SysMappingListInfoQuery;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
@ -200,7 +203,8 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign {
@Autowired
private DictCommonFeign dictCommonFeign;
@Autowired
private SysMappingFeign sysMappingFeign;
@ApiOperation("入账暂存应付单的接口")
@PostMapping("/draftEntryBill")
@ -425,7 +429,55 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign {
*/
@Override
public ResultBean<String> saveIndirectVoucher(CollectionVoucher voucher) {
return null;
ResultBean rb = ResultBean.fireFail();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
Voucher newVoucher = new Voucher();
String payType = "";
List<Voucher.VoucherResultDetailDto> resultDetails = new ArrayList<>();
if (StringUtils.isNotBlank(voucher.getUseOrgCode())) {
newVoucher.setAccountBook(voucher.getUseOrgCode());
newVoucher.setVoucherNo(voucher.getUseOrgCode());
}
DictCommonVo dictCommonVo = dictCommonFeign.selectBykey(voucher.getPayTypeCode(), "payVoucherType").getData();
if (null != dictCommonVo) {
SysMappingListInfoQuery query = new SysMappingListInfoQuery();
query.setDictSid(dictCommonVo.getSid());
List<SysMappingInfoVo> data = sysMappingFeign.selectMappingListInfo(query).getData();
if (!data.isEmpty()) {
SysMappingInfoVo sysMappingInfoVo = data.get(0);
payType = sysMappingInfoVo.getMap_itemKey();
}
}
List<CollectionVoucher.CollectionVoucherDetail> voucherDetails = voucher.getVoucherDetails();
if (!voucherDetails.isEmpty()) {
for (CollectionVoucher.CollectionVoucherDetail voucherDetail : voucherDetails) {
Voucher.VoucherResultDetailDto dto1 = new Voucher.VoucherResultDetailDto(); //借方
Voucher.VoucherResultDetailDto dto2 = new Voucher.VoucherResultDetailDto(); //贷方
dto1.setSummary("收月还(" + sdf.format(voucherDetail.getDataTime()) + ")");
dto1.setSubjectNo(payType);
if (voucherDetail.getSceneCode().equals(SceneCodeEnum.INDIRECT_VOUCHER1.getCode())) {
//未逾期
dto2.setSummary("收" + voucherDetail.getCustomerName() + "月还");
dto2.setSubjectNo("1201.02.01");
} else if (voucherDetail.getSceneCode().equals(SceneCodeEnum.INDIRECT_VOUCHER2.getCode())) {
//已逾期
dto2.setSummary("收" + voucherDetail.getCustomerName() + "累欠");
dto2.setSubjectNo("1201.02.03");
}
if (StringUtils.isNotBlank(voucher.getBankAccount())) {
dto1.setBankAccount(voucher.getBankAccount());
}
dto2.setDimensionDept(voucherDetail.getDeptCode());
dto2.setDimensionCustom(voucherDetail.getCustomerCode());
dto1.setDebit(String.valueOf(voucherDetail.getAmount()));
dto2.setCredit(String.valueOf(voucherDetail.getAmount()));
resultDetails.add(dto1);
resultDetails.add(dto2);
}
newVoucher.setResultDetails(resultDetails);
}
// log.info("FinKingDeeFeignRest-saveVoucher:{}", JSONObject.toJSONString(newVoucher));
return voucherService.saveVoucher(newVoucher);
}
/**
@ -436,7 +488,47 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign {
*/
@Override
public ResultBean<String> savePaymentVoucher(PaymentVoucher voucher) {
return null;
ResultBean rb = ResultBean.fireFail();
Voucher newVoucher = new Voucher();
List<Voucher.VoucherResultDetailDto> resultDetails = new ArrayList<>();
if (StringUtils.isNotBlank(voucher.getUseOrgCode())) {
newVoucher.setAccountBook(voucher.getUseOrgCode());
newVoucher.setVoucherNo(voucher.getUseOrgCode());
}
List<PaymentVoucher.PaymentVoucherDetail> voucherDetails = voucher.getVoucherDetails();
if (!voucherDetails.isEmpty()) {
for (PaymentVoucher.PaymentVoucherDetail voucherDetail : voucherDetails) {
Voucher.VoucherResultDetailDto dto1 = new Voucher.VoucherResultDetailDto(); //借方
Voucher.VoucherResultDetailDto dto2 = new Voucher.VoucherResultDetailDto(); //贷方
dto1.setSummary("代付客户" + voucherDetail.getBankName() + "月还款");
dto2.setSummary("代付客户" + voucherDetail.getBankName() + "月还款");
if (voucherDetail.getSceneCode().equals(SceneCodeEnum.TRANSFER_VOUCHER1.getCode())) {
//正常
DictCommonVo dictCommonVo = dictCommonFeign.selectBykey(voucherDetail.getBankName(), "investorsCode").getData();
if (null != dictCommonVo) {
dto1.setSubjectNo(dictCommonVo.getDictValue());
}
} else if (voucherDetail.getSceneCode().equals(SceneCodeEnum.TRANSFER_VOUCHER2.getCode())) {
//已垫款
dto1.setSubjectNo("1133.10.20");
}
if (voucher.getPayTypeCode().equals("02")) {
dto2.setSubjectNo("1002.01.00");
} else if (voucher.getPayTypeCode().equals("01")) {
dto2.setSubjectNo("1002.02.01");
}
dto1.setDimensionDept(voucherDetail.getDeptCode());
dto1.setDimensionCustom(voucherDetail.getCustomerCode());
dto2.setBankAccount(voucher.getBankAccount());
dto1.setDebit(String.valueOf(voucherDetail.getAmount()));
dto2.setCredit(String.valueOf(voucherDetail.getAmount()));
resultDetails.add(dto1);
resultDetails.add(dto2);
}
newVoucher.setResultDetails(resultDetails);
}
// log.info("FinKingDeeFeignRest-saveVoucher:{}", JSONObject.toJSONString(newVoucher));
return voucherService.saveVoucher(newVoucher);
}
/**
@ -447,40 +539,202 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign {
*/
@Override
public ResultBean<String> saveAdvancesVoucher(PaymentVoucher voucher) {
return null;
ResultBean rb = ResultBean.fireFail();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Voucher newVoucher = new Voucher();
List<Voucher.VoucherResultDetailDto> resultDetails = new ArrayList<>();
if (StringUtils.isNotBlank(voucher.getUseOrgCode())) {
newVoucher.setAccountBook(voucher.getUseOrgCode());
newVoucher.setVoucherNo(voucher.getUseOrgCode());
}
List<PaymentVoucher.PaymentVoucherDetail> voucherDetails = voucher.getVoucherDetails();
if (!voucherDetails.isEmpty()) {
for (PaymentVoucher.PaymentVoucherDetail voucherDetail : voucherDetails) {
Voucher.VoucherResultDetailDto dto1 = new Voucher.VoucherResultDetailDto(); //借方
Voucher.VoucherResultDetailDto dto2 = new Voucher.VoucherResultDetailDto(); //贷方
if (voucherDetail.getSceneCode().equals(SceneCodeEnum.PADSINCERE_VOUCHER1.getCode())) {
dto1.setSummary(voucherDetail.getBankName() + "垫付" + voucherDetail.getCustomerName() + "月还款");
DictCommonVo dictCommonVo = dictCommonFeign.selectBykey(voucherDetail.getBankName(), "investorsCode").getData();
if (null != dictCommonVo) {
dto1.setSubjectNo(dictCommonVo.getDictValue());
}
} else if (voucherDetail.getSceneCode().equals(SceneCodeEnum.PADSINCERE_VOUCHER2.getCode())) {
dto1.setSummary(voucherDetail.getBankName() + "垫款资方违约金");
dto1.setSubjectNo("1201.02.03");
}
if (voucher.getPayTypeCode().equals("02")) {
dto2.setSubjectNo("1002.01.00");
} else if (voucher.getPayTypeCode().equals("01")) {
dto2.setSubjectNo("1002.02.01");
}
String date = sdf.format(voucherDetail.getDataTime());
String[] split = date.split("-");
dto2.setSummary(split[1] + "月垫付月还款");
dto1.setDimensionDept(voucherDetail.getDeptCode());
dto1.setDimensionCustom(voucherDetail.getCustomerCode());
dto2.setBankAccount(voucher.getBankAccount());
dto1.setDebit(String.valueOf(voucherDetail.getAmount()));
dto2.setCredit(String.valueOf(voucherDetail.getAmount()));
resultDetails.add(dto1);
resultDetails.add(dto2);
}
newVoucher.setResultDetails(resultDetails);
}
// log.info("FinKingDeeFeignRest-saveVoucher:{}", JSONObject.toJSONString(newVoucher));
return voucherService.saveVoucher(newVoucher);
}
/**
* 保存资金占用费计提凭证接口
* 保存中车退还垫款收款凭证接口
*
* @param voucher
* @return
*/
@Override
public ResultBean<String> saveReturnVoucher(CollectionVoucher voucher) {
return null;
ResultBean rb = ResultBean.fireFail();
Voucher newVoucher = new Voucher();
List<Voucher.VoucherResultDetailDto> resultDetails = new ArrayList<>();
if (StringUtils.isNotBlank(voucher.getUseOrgCode())) {
newVoucher.setAccountBook(voucher.getUseOrgCode());
newVoucher.setVoucherNo(voucher.getUseOrgCode());
}
List<CollectionVoucher.CollectionVoucherDetail> voucherDetails = voucher.getVoucherDetails();
if (!voucherDetails.isEmpty()) {
for (CollectionVoucher.CollectionVoucherDetail voucherDetail : voucherDetails) {
Voucher.VoucherResultDetailDto dto1 = new Voucher.VoucherResultDetailDto(); //借方
Voucher.VoucherResultDetailDto dto2 = new Voucher.VoucherResultDetailDto(); //贷方
dto1.setSummary("收中车经销商垫款退回");
dto1.setSubjectNo("1002.01.00");
if (StringUtils.isNotBlank(voucher.getBankAccount())) {
dto1.setBankAccount(voucher.getBankAccount());
}
dto2.setSummary("收中车经销商垫款退回");
dto2.setSubjectNo("1133.10.20");
dto2.setDimensionDept(voucherDetail.getDeptCode());
dto2.setDimensionCustom(voucherDetail.getCustomerCode());
dto1.setDebit(String.valueOf(voucherDetail.getAmount()));
dto2.setCredit(String.valueOf(voucherDetail.getAmount()));
resultDetails.add(dto1);
resultDetails.add(dto2);
}
newVoucher.setResultDetails(resultDetails);
}
// log.info("FinKingDeeFeignRest-saveVoucher:{}", JSONObject.toJSONString(newVoucher));
return voucherService.saveVoucher(newVoucher);
}
/**
* 保存中车退还垫款收款凭证接口
* 保存资金占用费计提凭证接口
*
* @param voucher
* @return
*/
@Override
public ResultBean<String> saveFundVoucher(GeneralVoucher voucher) {
return null;
ResultBean rb = ResultBean.fireFail();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Voucher newVoucher = new Voucher();
List<Voucher.VoucherResultDetailDto> resultDetails = new ArrayList<>();
if (StringUtils.isNotBlank(voucher.getUseOrgCode())) {
newVoucher.setAccountBook(voucher.getUseOrgCode());
newVoucher.setVoucherNo(voucher.getUseOrgCode());
}
List<GeneralVoucher.GeneralVoucherDetail> voucherDetails = voucher.getVoucherDetails();
if (!voucherDetails.isEmpty()) {
for (GeneralVoucher.GeneralVoucherDetail voucherDetail : voucherDetails) {
Voucher.VoucherResultDetailDto dto1 = new Voucher.VoucherResultDetailDto(); //借方
Voucher.VoucherResultDetailDto dto2 = new Voucher.VoucherResultDetailDto(); //贷方
String format = sdf.format(voucherDetail.getDataTime());
String[] split = format.split("-");
String month = split[1];
String m = "";
if (month.equals("01")) {
m = "12";
} else {
m = String.valueOf(Integer.parseInt(month) - 1);
}
dto1.setSummary("计提" + m + "逾期利息");
dto2.setSummary("计提" + m + "逾期利息");
dto1.setSubjectNo("1201.02.02");
dto2.setSubjectNo("2191.05.00");
dto1.setDimensionDept(voucherDetail.getDeptCode());
dto1.setDimensionCustom(voucherDetail.getCustomerCode());
dto2.setDimensionDept(voucherDetail.getDeptCode());
// dto2.setDimensionCustom(voucherDetail.getCustomerCode());
dto1.setDebit(String.valueOf(voucherDetail.getAmount()));
dto2.setCredit(String.valueOf(voucherDetail.getAmount()));
resultDetails.add(dto1);
resultDetails.add(dto2);
}
newVoucher.setResultDetails(resultDetails);
}
// log.info("FinKingDeeFeignRest-saveVoucher:{}", JSONObject.toJSONString(newVoucher));
return voucherService.saveVoucher(newVoucher);
}
/**
* 保存资金占用费计提凭证接口
* 保存资金占用费收款凭证接口
*
* @param voucher
* @return
*/
@Override
public ResultBean<String> saveFeeVoucher(CollectionVoucher voucher) {
return null;
ResultBean rb = ResultBean.fireFail();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
Voucher newVoucher = new Voucher();
String payType = "";
List<Voucher.VoucherResultDetailDto> resultDetails = new ArrayList<>();
if (StringUtils.isNotBlank(voucher.getUseOrgCode())) {
newVoucher.setAccountBook(voucher.getUseOrgCode());
newVoucher.setVoucherNo(voucher.getUseOrgCode());
}
DictCommonVo dictCommonVo = dictCommonFeign.selectBykey(voucher.getPayTypeCode(), "payVoucherType").getData();
if (null != dictCommonVo) {
SysMappingListInfoQuery query = new SysMappingListInfoQuery();
query.setDictSid(dictCommonVo.getSid());
List<SysMappingInfoVo> data = sysMappingFeign.selectMappingListInfo(query).getData();
if (!data.isEmpty()) {
SysMappingInfoVo sysMappingInfoVo = data.get(0);
payType = sysMappingInfoVo.getMap_itemKey();
}
}
List<CollectionVoucher.CollectionVoucherDetail> voucherDetails = voucher.getVoucherDetails();
if (!voucherDetails.isEmpty()) {
for (CollectionVoucher.CollectionVoucherDetail voucherDetail : voucherDetails) {
Voucher.VoucherResultDetailDto dto1 = new Voucher.VoucherResultDetailDto(); //借方
Voucher.VoucherResultDetailDto dto2 = new Voucher.VoucherResultDetailDto(); //贷方
if (voucherDetail.getSceneCode().equals(SceneCodeEnum.FUND_VOUCHER1.getCode())) {
dto1.setSummary("收累欠(" + sdf.format(voucherDetail.getDataTime()) + ")");
dto1.setSubjectNo(payType);
dto2.setSummary("收逾期利息(" + sdf.format(voucherDetail.getDataTime()) + ")");
dto2.setSubjectNo("1201.02.02");
if (StringUtils.isNotBlank(voucher.getBankAccount())) {
dto1.setBankAccount(voucher.getBankAccount());
}
dto2.setDimensionDept(voucherDetail.getDeptCode());
dto2.setDimensionCustom(voucherDetail.getCustomerCode());
} else if (voucherDetail.getSceneCode().equals(SceneCodeEnum.FUND_VOUCHER2.getCode())) {
//确认收入
String date = sdf.format(voucherDetail.getDataTime());
String[] split = date.split(".");
String month = split[1];
dto1.setSummary(month + "月逾期利息确认收入");
dto1.setSubjectNo("2191.05.00");
dto2.setSummary(month + "月逾期利息确认收入");
dto2.setSubjectNo("6002.01.19");
dto2.setDimensionDept(voucherDetail.getDeptCode());
}
dto1.setDebit(String.valueOf(voucherDetail.getAmount()));
dto2.setCredit(String.valueOf(voucherDetail.getAmount()));
resultDetails.add(dto1);
resultDetails.add(dto2);
}
newVoucher.setResultDetails(resultDetails);
}
// log.info("FinKingDeeFeignRest-saveVoucher:{}", JSONObject.toJSONString(newVoucher));
return voucherService.saveVoucher(newVoucher);
}
@Override

30
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/voucher/VoucherService.java

@ -32,22 +32,10 @@ public class VoucherService extends FinKingDeeService {
}
map_fEntityModel_.put("FAccountBookID", voucher.getAccountBook());
//业务日期
// if (StringUtils.isBlank(voucher.getBussDate())) {
// return rb.setMsg("业务日期不能为空");
// }
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
map_fEntityModel_.put("FDate", sdf.format(new Date()));
//凭证字
// if (StringUtils.isBlank(voucher.getVoucherWord())) {
// return rb.setMsg("凭证字不能为空");
// }
map_fEntityModel_.put("FVOUCHERGROUPID", "PRE001");
// //凭证号
// if (StringUtils.isBlank(voucher.getVoucherNo())) {
// return rb.setMsg("凭证号不能为空");
// }
// map_fEntityModel_.put("FVOUCHERGROUPNO", voucher.getVoucherNo());
List<Voucher.VoucherResultDetailDto> voucherResultDetailDtos = voucher.getResultDetails() == null ? new ArrayList<>() : voucher.getResultDetails();
//准备 物料列表的数据
ResultBean<List<Map<String, String>>> vehicleListMap = createVehicleListsForReceivableBill(voucherResultDetailDtos);
@ -56,12 +44,12 @@ public class VoucherService extends FinKingDeeService {
}
String kingDeeData = VoucherCastToKingDeeBillFields.getKingDeeData(map_fEntityModel_, vehicleListMap.getData());
try {
ResultBean<String> resultBean1 = accessKingDeeInterface(KingDeeBillId.GL_VOUCHER.getID(), kingDeeData, KingDeeBillUrl.SAVE_URL.getURL());
ResultBean<String> resultBean1 = accessKingDeeInterface(KingDeeBillId.GL_VOUCHER.getID(), kingDeeData, KingDeeBillUrl.DRAFT_URL.getURL());
if (!resultBean1.getSuccess()) {
log.info("凭证存失败!");
return rb.setMsg("凭证存失败!");
log.info("凭证存失败!");
return rb.setMsg("凭证存失败!");
}
log.info("凭证存成功!");
log.info("凭证存成功!");
// String submitKD = getSubmitKD(resultBean1.getData(), KingDeeBillId.AR_OTHERRECEIVABLE.getID());
// ResultBean<String> resultBean2 = accessKingDeeInterface(KingDeeBillId.AR_OTHERRECEIVABLE.getID(), submitKD, KingDeeBillUrl.SUBMIT_URL.getURL());
// if (!resultBean2.getSuccess()) {
@ -88,18 +76,28 @@ public class VoucherService extends FinKingDeeService {
m.put("FACCOUNTID", c.getSubjectNo());
if (StringUtils.isNotBlank(c.getDimensionDept())) {
m.put("FFLEX5", c.getDimensionDept());
} else {
m.put("FFLEX5", "");
}
if (StringUtils.isNotBlank(c.getDimensionCustom())) {
m.put("FFLEX6", c.getDimensionCustom());
} else {
m.put("FFLEX6", "");
}
if (StringUtils.isNotBlank(c.getBankAccount())) {
m.put("FF100002", c.getBankAccount());
} else {
m.put("FF100002", "");
}
if (StringUtils.isNotBlank(c.getDebit())) {
m.put("FDEBIT", c.getDebit());
} else {
m.put("FDEBIT", "");
}
if (StringUtils.isNotBlank(c.getCredit())) {
m.put("FCREDIT", c.getCredit());
} else {
m.put("FCREDIT", "");
}
voucherDetailMap.add(m);
}

2
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/voucher/data_model.json

@ -7,7 +7,5 @@
"FVOUCHERGROUPID": {
"FNumber": "@KD_FVOUCHERGROUPID"
},
"FVOUCHERGROUPNO": "@KD_FVOUCHERGROUPNO",
"FEntity": []
}

1
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentplandetails/LoanPlanDetailsVoForLateVoucher.java

@ -16,4 +16,5 @@ public class LoanPlanDetailsVoForLateVoucher {
private String deptSid;
private String busVinSid;
private String salesOrderSid;
private String loanContractNo;
}

5
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentplandetails/LoanRepaymentPlanDetailsFeign.java

@ -48,4 +48,9 @@ public interface LoanRepaymentPlanDetailsFeign {
@ResponseBody
public ResultBean<String> updateByEntity(@RequestBody LoanRepaymentPlanDetails entity);
@ApiOperation("查询当期还款计划是否逾期")
@GetMapping("/checkOverDue")
@ResponseBody
public ResultBean<LoanRepaymentPlanDetailsForOverDue> checkOverDue(@RequestParam("sid") String sid);
}

5
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentplandetails/LoanRepaymentPlanDetailsFeignFallback.java

@ -41,4 +41,9 @@ public class LoanRepaymentPlanDetailsFeignFallback implements LoanRepaymentPlanD
public ResultBean<String> updateByEntity(LoanRepaymentPlanDetails entity) {
return null;
}
@Override
public ResultBean<LoanRepaymentPlanDetailsForOverDue> checkOverDue(String sid) {
return null;
}
}

16
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentplandetails/LoanRepaymentPlanDetailsForOverDue.java

@ -0,0 +1,16 @@
package com.yxt.anrui.riskcenter.api.loanrepaymentplandetails;
import lombok.Data;
/**
* @author Fan
* @description 检查当期还款计划是否逾期
* @date 2024/1/8 9:00
*/
@Data
public class LoanRepaymentPlanDetailsForOverDue {
private String planSid; //还款计划sid
private String overdueState; // 0逾期 1正常
}

54
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyService.java

@ -586,7 +586,7 @@ public class LoanBuckleApplyService extends MybatisBaseService<LoanBuckleApplyMa
ExecutorService pool = new org.apache.tomcat.util.threads.ThreadPoolExecutor(1, 10,
1000, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new org.apache.tomcat.util.threads.ThreadPoolExecutor.AbortPolicy());
//推送优惠包交接数据
//推送划扣凭证
Future future = pool.submit(() -> {
pushBuckleVoucher(businessSid);
});
@ -605,14 +605,14 @@ public class LoanBuckleApplyService extends MybatisBaseService<LoanBuckleApplyMa
private void pushBuckleVoucher(String businessSid) {
List<LoanBuckleApplyRecord> records = loanBuckleApplyRecordService.selByMainSid(businessSid);
if (!records.isEmpty()) {
GeneralVoucher generalVoucher = new GeneralVoucher();
List<GeneralVoucher.GeneralVoucherDetail> voucherDetails = new ArrayList<>();
for (LoanBuckleApplyRecord v : records) {
LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(v.getRepaymentHistorySid());
if (null != repaymentHistory) {
String planDetailSid = repaymentHistory.getPlanDetailSid();
LoanRepaymentPlanDetails planDetails = loanRepaymentPlanDetailsService.fetchBySid(planDetailSid);
if (null != planDetails) {
GeneralVoucher generalVoucher = new GeneralVoucher();
List<GeneralVoucher.GeneralVoucherDetail> voucherDetails = new ArrayList<>();
GeneralVoucher.GeneralVoucherDetail voucherDetail = new GeneralVoucher.GeneralVoucherDetail();
String state = loanRepaymentPlanDetailsService.selForPushBuckleVoucher(planDetailSid);
if (StringUtils.isNotBlank(state)) {
@ -638,55 +638,15 @@ public class LoanBuckleApplyService extends MybatisBaseService<LoanBuckleApplyMa
if (null != organizationDeptVo) {
voucherDetail.setDeptCode(organizationDeptVo.getOrgCode());
}
String busVinSid = planDetails.getBusVinSid();
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData();
if (null != busSalesOrderVehicle) {
String customerNumber = "";
//判断财务系统是否有客户
Boolean aBoolean = finKingDeeFeign.customerExistState(busSalesOrderVehicle.getTemporaryNo()).getData();
String linkNo = "";
BusSalesOrderBorrowerDetailsVo borrowerDetailsVo = busSalesOrderBorrowerFeign.fetchDetailsBySid(busSalesOrderVehicle.getBorrowerSid()).getData();
if (!aBoolean) {
// List<BdCustomer> bdCustomers = new ArrayList<>();
BdCustomer bdCustomer = new BdCustomer();
bdCustomer.setFNumber(busSalesOrderVehicle.getTemporaryNo());
String salesOrderSid = planDetails.getSalesOrderSid();
BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(salesOrderSid).getData();
bdCustomer.setFShortName(salesOrder.getContractNo());
BasePurchaseSystemDetailsVo data = basePurchaseSystemFeign.fetchDetailsByDeptSid(salesOrder.getPurchaseSystemSid()).getData();
bdCustomer.setTOrgIds(data.getOrgCode());
if (StringUtils.isNotBlank(busSalesOrderVehicle.getLinkNo())) {
String vinNo = busSalesOrderVehicle.getLinkNo();
if (vinNo.length() > 8) {
linkNo = vinNo.substring(vinNo.length() - 8);
} else {
linkNo = busSalesOrderVehicle.getLinkNo();
}
if (null != borrowerDetailsVo) {
bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + linkNo);
}
} else {
if (null != borrowerDetailsVo) {
bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo());
}
}
// bdCustomers.add(bdCustomer);
ResultBean<String> resultBean = finKingDeeFeign.draftBdCustomer(bdCustomer);
if (resultBean.getSuccess()) {
customerNumber = bdCustomer.getFNumber();
}
} else {
customerNumber = busSalesOrderVehicle.getTemporaryNo();
}
voucherDetail.setCustomerCode(customerNumber);
}
String[] split = planDetails.getLoanContractNo().split("-");
voucherDetail.setCustomerCode(split[0] + split[1]);
voucherDetail.setAmount(repaymentHistory.getActualMoney());
voucherDetails.add(voucherDetail);
generalVoucher.setVoucherDetails(voucherDetails);
finKingDeeFeign.saveBuckleVoucher(generalVoucher);
}
}
}
generalVoucher.setVoucherDetails(voucherDetails);
finKingDeeFeign.saveBuckleVoucher(generalVoucher);
}
}

52
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyService.java

@ -679,11 +679,11 @@ public class LoanMonthlyAccrualApplyService extends MybatisBaseService<LoanMonth
private void pushAccrualVoucher(String businessSid) {
List<LoanMonthlyAccrualRecord> records = loanMonthlyAccrualRecordService.selByMainSid(businessSid);
if (!records.isEmpty()) {
GeneralVoucher generalVoucher = new GeneralVoucher();
List<GeneralVoucher.GeneralVoucherDetail> voucherDetails = new ArrayList<>();
for (LoanMonthlyAccrualRecord v : records) {
LoanRepaymentPlanDetails planDetails = loanRepaymentPlanDetailsService.fetchDetails(v.getRecordSid()).getData();
if (null != planDetails) {
GeneralVoucher generalVoucher = new GeneralVoucher();
List<GeneralVoucher.GeneralVoucherDetail> voucherDetails = new ArrayList<>();
String useOrgSid = planDetails.getUseOrgSid();
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData();
if (null != organizationVo) {
@ -695,54 +695,14 @@ public class LoanMonthlyAccrualApplyService extends MybatisBaseService<LoanMonth
if (null != organizationDeptVo) {
voucherDetail.setDeptCode(organizationDeptVo.getOrgCode());
}
String busVinSid = planDetails.getBusVinSid();
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData();
if (null != busSalesOrderVehicle) {
String customerNumber = "";
//判断财务系统是否有客户
Boolean aBoolean = finKingDeeFeign.customerExistState(busSalesOrderVehicle.getTemporaryNo()).getData();
String linkNo = "";
BusSalesOrderBorrowerDetailsVo borrowerDetailsVo = busSalesOrderBorrowerFeign.fetchDetailsBySid(busSalesOrderVehicle.getBorrowerSid()).getData();
if (!aBoolean) {
// List<BdCustomer> bdCustomers = new ArrayList<>();
BdCustomer bdCustomer = new BdCustomer();
bdCustomer.setFNumber(busSalesOrderVehicle.getTemporaryNo());
String salesOrderSid = planDetails.getSalesOrderSid();
BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(salesOrderSid).getData();
bdCustomer.setFShortName(salesOrder.getContractNo());
BasePurchaseSystemDetailsVo data = basePurchaseSystemFeign.fetchDetailsByDeptSid(salesOrder.getPurchaseSystemSid()).getData();
bdCustomer.setTOrgIds(data.getOrgCode());
if (StringUtils.isNotBlank(busSalesOrderVehicle.getLinkNo())) {
String vinNo = busSalesOrderVehicle.getLinkNo();
if (vinNo.length() > 8) {
linkNo = vinNo.substring(vinNo.length() - 8);
} else {
linkNo = busSalesOrderVehicle.getLinkNo();
}
if (null != borrowerDetailsVo) {
bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + linkNo);
}
} else {
if (null != borrowerDetailsVo) {
bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo());
}
}
// bdCustomers.add(bdCustomer);
ResultBean<String> resultBean = finKingDeeFeign.draftBdCustomer(bdCustomer);
if (resultBean.getSuccess()) {
customerNumber = bdCustomer.getFNumber();
}
} else {
customerNumber = busSalesOrderVehicle.getTemporaryNo();
}
voucherDetail.setCustomerCode(customerNumber);
}
String[] split = planDetails.getLoanContractNo().split("-");
voucherDetail.setCustomerCode(split[0] + split[1]);
voucherDetail.setAmount(planDetails.getDueMoney());
voucherDetails.add(voucherDetail);
generalVoucher.setVoucherDetails(voucherDetails);
finKingDeeFeign.saveAccrualVoucher(generalVoucher);
}
}
generalVoucher.setVoucherDetails(voucherDetails);
finKingDeeFeign.saveAccrualVoucher(generalVoucher);
}
}

54
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java

@ -856,11 +856,11 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
List<LoanPlanDetailsVoForLateVoucher> records = loanRepaymentPlanDetailsService.selListForLateVoucher(pushUseOrgSid);
List<String> planSids = new ArrayList<>();
if (!records.isEmpty()) {
GeneralVoucher generalVoucher = new GeneralVoucher();
List<GeneralVoucher.GeneralVoucherDetail> voucherDetails = new ArrayList<>();
for (LoanPlanDetailsVoForLateVoucher planDetails : records) {
if (null != planDetails) {
planSids.add(planDetails.getPlanSid());
GeneralVoucher generalVoucher = new GeneralVoucher();
List<GeneralVoucher.GeneralVoucherDetail> voucherDetails = new ArrayList<>();
GeneralVoucher.GeneralVoucherDetail voucherDetail = new GeneralVoucher.GeneralVoucherDetail();
if (StringUtils.isNotBlank(planDetails.getUseOrgSid())) {
String useOrgSid = planDetails.getUseOrgSid();
@ -876,58 +876,16 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
voucherDetail.setDeptCode(organizationDeptVo.getOrgCode());
}
}
if (StringUtils.isNotBlank(planDetails.getBusVinSid())) {
String busVinSid = planDetails.getBusVinSid();
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData();
if (null != busSalesOrderVehicle) {
String customerNumber = "";
//判断财务系统是否有客户
Boolean aBoolean = finKingDeeFeign.customerExistState(busSalesOrderVehicle.getTemporaryNo()).getData();
String linkNo = "";
BusSalesOrderBorrowerDetailsVo borrowerDetailsVo = busSalesOrderBorrowerFeign.fetchDetailsBySid(busSalesOrderVehicle.getBorrowerSid()).getData();
if (!aBoolean) {
// List<BdCustomer> bdCustomers = new ArrayList<>();
BdCustomer bdCustomer = new BdCustomer();
bdCustomer.setFNumber(busSalesOrderVehicle.getTemporaryNo());
String salesOrderSid = planDetails.getSalesOrderSid();
BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(salesOrderSid).getData();
bdCustomer.setFShortName(salesOrder.getContractNo());
BasePurchaseSystemDetailsVo data = basePurchaseSystemFeign.fetchDetailsByDeptSid(salesOrder.getPurchaseSystemSid()).getData();
bdCustomer.setTOrgIds(data.getOrgCode());
if (StringUtils.isNotBlank(busSalesOrderVehicle.getLinkNo())) {
String vinNo = busSalesOrderVehicle.getLinkNo();
if (vinNo.length() > 8) {
linkNo = vinNo.substring(vinNo.length() - 8);
} else {
linkNo = busSalesOrderVehicle.getLinkNo();
}
if (null != borrowerDetailsVo) {
bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + linkNo);
}
} else {
if (null != borrowerDetailsVo) {
bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo());
}
}
// bdCustomers.add(bdCustomer);
ResultBean<String> resultBean = finKingDeeFeign.draftBdCustomer(bdCustomer);
if (resultBean.getSuccess()) {
customerNumber = bdCustomer.getFNumber();
}
} else {
customerNumber = busSalesOrderVehicle.getTemporaryNo();
}
voucherDetail.setCustomerCode(customerNumber);
}
}
String[] split = planDetails.getLoanContractNo().split("-");
voucherDetail.setCustomerCode(split[0] + split[1]);
if (StringUtils.isNotBlank(planDetails.getOutstandingMoney())) {
voucherDetail.setAmount(new BigDecimal(planDetails.getOutstandingMoney()));
}
voucherDetails.add(voucherDetail);
generalVoucher.setVoucherDetails(voucherDetails);
finKingDeeFeign.saveLateVoucher(generalVoucher);
}
}
generalVoucher.setVoucherDetails(voucherDetails);
finKingDeeFeign.saveLateVoucher(generalVoucher);
}
if (!planSids.isEmpty()) {
int i = loanRepaymentPlanDetailsService.updateOweState(planSids);

7
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.java

@ -6,10 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.DifferenceVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.HistoryOverDueVo;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanPlanDetailsVoForLateVoucher;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.MonRepayDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.MonRepayPeriodDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.*;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.AppRepaymentPlanVo;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanRepaymentSchedule;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.ScanRepaymentVo;
@ -67,4 +64,6 @@ public interface LoanRepaymentPlanDetailsMapper extends BaseMapper<LoanRepayment
String getMainBankName(@Param("sid") String sid);
String getOtherBankName(@Param("sid") String sid);
LoanRepaymentPlanDetailsForOverDue checkOverDue(@Param("sid") String sid);
}

92
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.xml

@ -255,6 +255,7 @@
<select id="selListForLateVoucher"
resultType="com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanPlanDetailsVoForLateVoucher">
SELECT
b.loanContractNo,
b.sid AS planSid,
CASE
WHEN ( b.outstandingMoney + b.bankBeInter + b.fund ) >
@ -275,6 +276,7 @@
FROM
(
SELECT
pd.loanContractNo,
pd.oweState,
pd.dueDate,
pd.useOrgSid,
@ -444,4 +446,94 @@
WHERE p.sid = #{sid}
AND s.isDelete = '0'
</select>
<select id="checkOverDue"
resultType="com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsForOverDue">
SELECT
c.planSid,
c.overdueState
FROM
(SELECT
b.sid AS planSid,
b.paymentMoney,
b.dueDate,
b.updateDate,
CASE
WHEN ( b.outstandingMoney + b.bankBeInter + b.fund ) > 0
AND b.dueDate &lt;= b.updateDate
THEN '0'
ELSE '1'
END AS overdueState,
-- 0逾期 1正常
b.outstandingMoney,
b.useOrgSid,
b.deptSid,
b.busVinSid,
b.salesOrderSid
FROM
(
SELECT
a.*
FROM
(
SELECT
pd.paymentMoney,
pd.oweState,
pd.dueDate,
pd.useOrgSid,
pd.deptSid,
pd.busVinSid,
pd.sid,
IFNULL( pd.fund, 0 ) AS fund,
pd.dueMoney,
pd.overdue,
pd.salesOrderSid,
t.repaidMoney,
t.outstandingMoney,
IFNULL( v.bankBeInter, 0 ) AS bankBeInter,
pd.overdue AS dueOverdue,
pd.updateTime AS updateDate
FROM
loan_repayment_plan_details AS pd
LEFT JOIN anrui_buscenter.bus_sales_order AS s ON s.sid = pd.salesOrderSid
LEFT JOIN loan_be_padsincere_veh AS v ON v.saleVehSid = pd.busVinSid
LEFT JOIN (
SELECT
p.sid,
IFNULL((
SELECT
SUM(
IFNULL( h.actualMoney, 0 ))
FROM
loan_repayment_history AS h
WHERE
h.planDetailSid = p.sid
AND h.updateState = '1'
),
0
) AS repaidMoney,
IFNULL(
(
p.dueMoney - IFNULL((
SELECT
SUM(
IFNULL( h.actualMoney, 0 ))
FROM
loan_repayment_history AS h
WHERE
h.planDetailSid = p.sid
AND h.updateState = '1'
),
0
)),
0
) AS outstandingMoney
FROM
loan_repayment_plan_details AS p
) AS t ON pd.sid = t.sid
) AS a
) AS b) as c
WHERE c.planSid = #{sid}
</select>
</mapper>

10
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsRest.java

@ -1,10 +1,7 @@
package com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsDto;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsFeign;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.MonRepayDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.*;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
@ -54,4 +51,9 @@ public class LoanRepaymentPlanDetailsRest implements LoanRepaymentPlanDetailsFei
loanRepaymentPlanDetailsService.updateById(entity);
return rb.success();
}
@Override
public ResultBean<LoanRepaymentPlanDetailsForOverDue> checkOverDue(String sid) {
return loanRepaymentPlanDetailsService.checkOverDue(sid);
}
}

8
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsService.java

@ -177,5 +177,11 @@ public class LoanRepaymentPlanDetailsService extends MybatisBaseService<LoanRepa
return bankName;
}
;
public ResultBean<LoanRepaymentPlanDetailsForOverDue> checkOverDue(String sid) {
ResultBean rb = ResultBean.fireFail();
LoanRepaymentPlanDetailsForOverDue data = baseMapper.checkOverDue(sid);
return rb.success().setData(data);
}
}

106
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java

@ -7,13 +7,26 @@ import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemDetailsVo;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemFeign;
import com.yxt.anrui.base.common.enums.BillTypeEnum;
import com.yxt.anrui.base.common.utils.Rule;
import com.yxt.anrui.base.common.utils.domain.BillNo;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign;
import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerDetailsVo;
import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerFeign;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign;
import com.yxt.anrui.fin.api.finmanufacturerbank.FinManufacturerBank;
import com.yxt.anrui.fin.api.finmanufacturerbank.FinManufacturerBankFeign;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordDto;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordFeign;
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign;
import com.yxt.anrui.fin.api.kingdee.bdcustomer.BdCustomer;
import com.yxt.anrui.fin.api.kingdee.voucher.GeneralVoucher;
import com.yxt.anrui.fin.api.kingdee.voucher.PaymentVoucher;
import com.yxt.anrui.fin.api.kingdee.voucher.SceneCodeEnum;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowDelegateQuery;
@ -30,6 +43,7 @@ import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapplyrecord.LoanBuckleApplyRecord;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFile;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.AppAccrualRecordVo;
@ -43,6 +57,7 @@ import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow.*;
import com.yxt.anrui.riskcenter.api.loantransferpaymentrecord.LoanTransferPaymentRecord;
import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
import com.yxt.anrui.riskcenter.biz.loantransferpaymentrecord.LoanTransferPaymentRecordService;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
@ -100,6 +115,18 @@ public class LoanTransferPaymentApplyService extends MybatisBaseService<LoanTran
private FinPaymentrecordFeign finPaymentrecordFeign;
@Autowired
private FinManufacturerBankFeign finManufacturerBankFeign;
@Autowired
private FinKingDeeFeign finKingDeeFeign;
@Autowired
private BusSalesOrderVehicleFeign busSalesOrderVehicleFeign;
@Autowired
private LoanRepaymentPlanDetailsService loanRepaymentPlanDetailsService;
@Autowired
private BusSalesOrderBorrowerFeign busSalesOrderBorrowerFeign;
@Autowired
private BusSalesOrderFeign busSalesOrderFeign;
@Autowired
private BasePurchaseSystemFeign basePurchaseSystemFeign;
public ResultBean<LoanTransferPaymentApplyInit> paymentInit(String[] sids) {
ResultBean<LoanTransferPaymentApplyInit> rb = ResultBean.fireFail();
@ -730,6 +757,22 @@ public class LoanTransferPaymentApplyService extends MybatisBaseService<LoanTran
}
}
}
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new org.apache.tomcat.util.threads.ThreadPoolExecutor(1, 10,
1000, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new org.apache.tomcat.util.threads.ThreadPoolExecutor.AbortPolicy());
//推送划扣凭证
Future future = pool.submit(() -> {
pushPaymentVoucher(businessSid);
});
} catch (Exception e) {
e.printStackTrace();
log.error("推送数据失败=========================" + e.getMessage());
return rb.setMsg("推送数据失败");
}
}
return rb.success().setData(resultBean.getData());
} else {
@ -737,6 +780,69 @@ public class LoanTransferPaymentApplyService extends MybatisBaseService<LoanTran
}
}
private void pushPaymentVoucher(String businessSid) {
List<LoanTransferPaymentRecord> records = loanTransferPaymentRecordService.selByMainSid(businessSid);
if (!records.isEmpty()) {
PaymentVoucher paymentVoucher = new PaymentVoucher();
List<PaymentVoucher.PaymentVoucherDetail> voucherDetails = new ArrayList<>();
for (LoanTransferPaymentRecord v : records) {
LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(v.getRepaymentHistorySid());
if (null != repaymentHistory) {
String planDetailSid = repaymentHistory.getPlanDetailSid();
LoanRepaymentPlanDetails planDetails = loanRepaymentPlanDetailsService.fetchBySid(planDetailSid);
if (null != planDetails) {
PaymentVoucher.PaymentVoucherDetail voucherDetail = new PaymentVoucher.PaymentVoucherDetail();
if (null != planDetails.getPaymentMoney()) {
if (planDetails.getPaymentMoney().compareTo(BigDecimal.ZERO) > 0) {
voucherDetail.setSceneCode(SceneCodeEnum.TRANSFER_VOUCHER2.getCode());
} else {
voucherDetail.setSceneCode(SceneCodeEnum.TRANSFER_VOUCHER1.getCode());
}
} else {
voucherDetail.setSceneCode(SceneCodeEnum.TRANSFER_VOUCHER1.getCode());
}
String bankName = loanRepaymentPlanDetailsService.getBankNameByMainOrOtherPolicy(planDetails);
if (StringUtils.isNotBlank(bankName)) {
voucherDetail.setBankName(bankName);
}
String useOrgSid = planDetails.getUseOrgSid();
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData();
if (null != organizationVo) {
paymentVoucher.setUseOrgCode(organizationVo.getOrgCode());
}
if (StringUtils.isNotBlank(v.getAccountNumber())) {
String accountNumber = v.getAccountNumber();
paymentVoucher.setBankAccount(v.getAccountNumber());
FinManufacturerBank manufacturerBank = finManufacturerBankFeign.selOneByBankNo(accountNumber, useOrgSid).getData();
if (null != manufacturerBank) {
paymentVoucher.setPayTypeCode(manufacturerBank.getDueBankKey());
}
}
String deptSid = planDetails.getDeptSid();
SysOrganizationVo organizationDeptVo = sysOrganizationFeign.fetchBySid(deptSid).getData();
if (null != organizationDeptVo) {
voucherDetail.setDeptCode(organizationDeptVo.getOrgCode());
}
String[] split = planDetails.getLoanContractNo().split("-");
voucherDetail.setCustomerCode(split[0] + split[1]);
BigDecimal money = new BigDecimal(0);
if (null != v.getTransferPrincipal()) {
money = v.getTransferPrincipal();
}
if (null != v.getDefaultInterest()) {
money = v.getDefaultInterest().add(money);
}
voucherDetail.setAmount(money);
voucherDetails.add(voucherDetail);
}
}
}
paymentVoucher.setVoucherDetails(voucherDetails);
finKingDeeFeign.savePaymentVoucher(paymentVoucher);
}
}
public ResultBean revokeProcess(TransferTaskQuery query) {
ResultBean rb = ResultBean.fireFail();

53
doc/databases/报表中心.sql

@ -705,6 +705,15 @@ update daily_report r inner join (SELECT SUM(cc.scount) AS scount,
WHERE fd.kxState = '01'
AND fs.auditState = 3
GROUP BY fd.sid
UNION ALL
SELECT
fd.reveivableMoney,
fd.busVinSid,0 AS subscriptionMoney
FROM anrui_fin.fin_uncollected_receivables_detailed fd
left join (select fs.* from anrui_fin.fin_selected_receivables_detailed fs where fs.auditState = 3) s on s.receivablesSid = fd.sid
WHERE fd.kxState = '01' and s.id is null
GROUP BY
fd.sid
) s ON s.busVinSid = bv.sid
LEFT JOIN anrui_portal.sys_organization so ON so.sid = ba.useOrgSid
WHERE ba.nodeState = '已办结'
@ -747,7 +756,17 @@ update daily_report r inner join (SELECT SUM(cc.scount) AS scount,
ON fs.receivablesSid = fd.sid
WHERE fd.kxState = '01'
AND fs.auditState = 3
GROUP BY fd.sid) s ON s.busVinSid = bv.sid
GROUP BY fd.sid
UNION ALL
SELECT
fd.reveivableMoney,
fd.busVinSid,0 AS subscriptionMoney
FROM anrui_fin.fin_uncollected_receivables_detailed fd
left join (select fs.* from anrui_fin.fin_selected_receivables_detailed fs where fs.auditState = 3) s on s.receivablesSid = fd.sid
WHERE fd.kxState = '01' and s.id is null
GROUP BY
fd.sid
) s ON s.busVinSid = bv.sid
LEFT JOIN anrui_portal.sys_organization so ON so.sid = ba.useOrgSid
WHERE ba.nodeState = '已办结'
AND ba.paymentMethodKey = 1
@ -817,6 +836,15 @@ update daily_report r inner join (SELECT
AND fs.auditState = 3
GROUP BY
fd.sid
UNION ALL
SELECT
fd.reveivableMoney,
fd.busVinSid,0 AS subscriptionMoney
FROM anrui_fin.fin_uncollected_receivables_detailed fd
left join (select fs.* from anrui_fin.fin_selected_receivables_detailed fs where fs.auditState = 3) s on s.receivablesSid = fd.sid
WHERE fd.kxState = '01' and s.id is null
GROUP BY
fd.sid
) s ON s.busVinSid = bv.sid
LEFT JOIN anrui_portal.sys_organization so ON so.sid = ba.useOrgSid
WHERE
@ -873,6 +901,15 @@ update daily_report r inner join (SELECT
AND fs.auditState = 3
GROUP BY
fd.sid
UNION ALL
SELECT
fd.reveivableMoney,
fd.busVinSid,0 AS subscriptionMoney
FROM anrui_fin.fin_uncollected_receivables_detailed fd
left join (select fs.* from anrui_fin.fin_selected_receivables_detailed fs where fs.auditState = 3) s on s.receivablesSid = fd.sid
WHERE fd.kxState = '01' and s.id is null
GROUP BY
fd.sid
) s ON s.busVinSid = bv.sid
LEFT JOIN anrui_portal.sys_organization so ON so.sid = ba.useOrgSid
WHERE
@ -939,6 +976,13 @@ update daily_report r inner join (
and fd.receivablesName = '融资放款'
GROUP BY
fd.sid
UNION ALL
SELECT
fd.reveivableMoney,
fd.busVinSid,0 AS subscriptionMoney
FROM anrui_fin.fin_uncollected_receivables_detailed fd WHERE fd.kxState = '01' AND fd.receivablesName = '融资放款' AND fd.sid NOT IN (SELECT fs.`receivablesSid` FROM anrui_fin.fin_selected_receivables_detailed fs WHERE fs.`auditState` = 3 AND fs.`receivablesName` = '融资放款')
GROUP BY
fd.sid
) s ON s.busVinSid = bv.sid
LEFT JOIN anrui_portal.sys_organization so ON so.sid = bo.useOrgSid
where bo.payTypeKey = 2
@ -995,6 +1039,13 @@ update daily_report r inner join (
AND fd.receivablesName = '融资放款'
GROUP BY
fd.sid
UNION ALL
SELECT
fd.reveivableMoney,
fd.busVinSid,0 AS subscriptionMoney
FROM anrui_fin.fin_uncollected_receivables_detailed fd WHERE fd.kxState = '01' AND fd.receivablesName = '融资放款' AND fd.sid NOT IN (SELECT fs.`receivablesSid` FROM anrui_fin.fin_selected_receivables_detailed fs WHERE fs.`auditState` = 3 AND fs.`receivablesName` = '融资放款')
GROUP BY
fd.sid
) s ON s.busVinSid = bv.sid
LEFT JOIN anrui_portal.sys_organization so ON so.sid = bo.useOrgSid
WHERE bo.payTypeKey = 2

8
doc/databases/报表新增修改.sql

@ -24,7 +24,7 @@ UPDATE daily_report r INNER JOIN (SELECT COUNT(id) AS scount, `useOrgSid`, `mode
AND vehicleState <> '0004'
AND vehicleState <> '0007'
AND isDelete <> 1
AND lockedState <> '04'
AND lockedState <> '02'
GROUP BY `useOrgSid`, `modelSid`, `modelConfigSid`) AS s ON
r.useOrgSid = s.useOrgSid AND r.vehModelSid = s.modelSid AND r.vehMConfigSid = s.modelConfigSid
SET r.`stock_unreserve`=s.scount
@ -36,7 +36,7 @@ UPDATE daily_report r INNER JOIN (SELECT COUNT(id) AS scount, `useOrgSid`, `mode
AND vehicleState <> '0004'
AND vehicleState <> '0007'
AND isDelete <> 1
AND lockedState = '04'
AND lockedState = '02'
GROUP BY `useOrgSid`, `modelSid`, `modelConfigSid`) AS s ON
r.useOrgSid = s.useOrgSid AND r.vehModelSid = s.modelSid AND r.vehMConfigSid = s.modelConfigSid
SET r.`stock_reserve`=s.scount
@ -52,7 +52,7 @@ UPDATE daily_report r INNER JOIN (SELECT COUNT(id) AS scount, `useOrgSid`, `mode
AND vehicleState <> '0004'
AND vehicleState <> '0007'
AND isDelete <> 1
AND lockedState <> '04'
AND lockedState <> '02'
AND settlementStatus = '2'
GROUP BY `useOrgSid`, `modelSid`, `modelConfigSid`) AS s ON
r.useOrgSid = s.useOrgSid AND r.vehModelSid = s.modelSid AND r.vehMConfigSid = s.modelConfigSid
@ -65,7 +65,7 @@ UPDATE daily_report r INNER JOIN (SELECT COUNT(id) AS scount, `useOrgSid`, `mode
AND vehicleState <> '0004'
AND vehicleState <> '0007'
AND isDelete <> 1
AND lockedState = '04'
AND lockedState = '02'
AND settlementStatus = '2'
GROUP BY `useOrgSid`, `modelSid`, `modelConfigSid`) AS s ON
r.useOrgSid = s.useOrgSid AND r.vehModelSid = s.modelSid AND r.vehMConfigSid = s.modelConfigSid

Loading…
Cancel
Save