diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordFeign.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordFeign.java
index 9294d1a6b7..19071ecf55 100644
--- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordFeign.java
+++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordFeign.java
@@ -79,6 +79,12 @@ public interface FinPaymentrecordFeign {
@ResponseBody
ResultBean update(@RequestBody FinPaymentrecordUpdateDto dto);
+ @ApiOperation("批量办理")
+ @PostMapping("/batchUpdate")
+ @ResponseBody
+ ResultBean batchUpdate(@RequestBody FinPaymentrecordUpdateDto dto);
+
+
@ApiOperation("作废")
@PostMapping("/updateState")
@ResponseBody
diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordFeignFallback.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordFeignFallback.java
index ccaa617ee0..54ed932589 100644
--- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordFeignFallback.java
+++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordFeignFallback.java
@@ -29,10 +29,6 @@ import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import java.util.List;
-import java.util.Map;
/**
* Project: anrui-fin(财务)
@@ -76,6 +72,11 @@ public class FinPaymentrecordFeignFallback implements FinPaymentrecordFeign {
return null;
}
+ @Override
+ public ResultBean batchUpdate(FinPaymentrecordUpdateDto dto) {
+ return null;
+ }
+
@Override
public ResultBean updateState(String[] sids) {
return null;
diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/GetSerialNum.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/GetSerialNum.java
new file mode 100644
index 0000000000..19867aacba
--- /dev/null
+++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/GetSerialNum.java
@@ -0,0 +1,52 @@
+package com.yxt.anrui.fin.api.finpaymentrecord;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.concurrent.locks.ReentrantLock;
+
+public class GetSerialNum {
+
+// /**记录已有流水单*/
+// public static int num = 0;
+
+ private static ReentrantLock lock = new ReentrantLock();
+
+ public static String getNum(int num) {
+ String unique = "";
+
+ //上锁
+ lock.lock();
+ try {
+
+ //------------------流水号业务逻辑----------------
+ //5位流水号
+ if (num == 0) {
+ //当天第一份流水单号
+ unique = new SimpleDateFormat("yyMMdd").format(new Date()) + "0001";
+ } else {
+ //当天最后的订单流水号累加1
+ String nums = String.valueOf(num + 1);
+
+ //设定具体流水为两位数,单数则补齐前面的0
+ StringBuilder sb = new StringBuilder(nums);
+ for (int i = nums.length(); i < 4; i++) {
+ sb.insert(0, "0");
+ }
+ unique = new SimpleDateFormat("yyMMdd").format(new Date()) + sb.toString();
+ }
+
+ //已有流水单+1
+ num++;
+
+ //----------------------------------
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ //释放锁
+ lock.unlock();
+ }
+
+ return unique;
+ }
+}
diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordMapper.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordMapper.java
index 0b16ddb732..5aef80bf24 100644
--- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordMapper.java
+++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordMapper.java
@@ -68,4 +68,6 @@ public interface FinPaymentrecordMapper extends BaseMapper {
int updateStateBySid(@Param("sid")String sid, @Param("state") int i);
List selectApplySidBySid(List sids);
+
+ String selectBatchNum(@Param("s") String s);
}
\ No newline at end of file
diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordMapper.xml b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordMapper.xml
index fad0c55ce2..6b5704d4e6 100644
--- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordMapper.xml
+++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordMapper.xml
@@ -27,7 +27,8 @@
fp.payCode,
fp.busRemarks,
fp.payWayKey,
- fp.payWayValue
+ fp.payWayValue,
+ fp.batchNumber
FROM fin_paymentrecord fp
LEFT JOIN anrui_portal.sys_organization so ON fp.createOrgSid = so.sid
@@ -65,4 +66,11 @@
#{item}
+
\ No newline at end of file
diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordRest.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordRest.java
index 110381be5f..ec8e397193 100644
--- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordRest.java
+++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordRest.java
@@ -34,9 +34,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import java.util.List;
-import java.util.Map;
-
/**
* Project: anrui-fin(财务)
* File: FinPaymentrecordFeignFallback.java
@@ -87,6 +84,11 @@ public class FinPaymentrecordRest implements FinPaymentrecordFeign {
return finPaymentrecordService.updateAll(dto);
}
+ @Override
+ public ResultBean batchUpdate(FinPaymentrecordUpdateDto dto) {
+ return finPaymentrecordService.batchUpdate(dto);
+ }
+
@Override
public ResultBean updateState(String[] sids) {
return finPaymentrecordService.updateState(sids);
diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordService.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordService.java
index 51d9a1971e..e21aba2e3e 100644
--- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordService.java
+++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordService.java
@@ -27,6 +27,7 @@ package com.yxt.anrui.fin.biz.finpaymentrecord;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
@@ -55,12 +56,14 @@ import com.yxt.anrui.fin.api.finpaymentapplyvehicle.FinPaymentapplyVehicleVo;
import com.yxt.anrui.fin.api.finpaymentrecord.*;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJR;
import com.yxt.anrui.fin.api.kingdee.appaybill.ApPayBill;
+import com.yxt.anrui.fin.api.kingdee.voucher.Voucher;
import com.yxt.anrui.fin.biz.finmanufacturerbank.FinManufacturerBankService;
import com.yxt.anrui.fin.biz.finpaymentapply.FinPaymentapplyService;
import com.yxt.anrui.fin.biz.finpaymentapplydetails.FinPaymentapplyDetailsService;
import com.yxt.anrui.fin.biz.finpaymentapplyvehicle.FinPaymentapplyVehicleService;
import com.yxt.anrui.fin.biz.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJRService;
import com.yxt.anrui.fin.biz.kingdee.appaybill.ApPayBillService;
+import com.yxt.anrui.fin.biz.kingdee.voucher.VoucherService;
import com.yxt.anrui.portal.api.flow.FlowableFeign;
import com.yxt.anrui.portal.api.flow.PCHistTaskListAndCommentList;
import com.yxt.anrui.portal.api.sysorganization.SysOrganization;
@@ -79,6 +82,7 @@ import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDe
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanMoneyVo;
import com.yxt.anrui.riskcenter.api.loansettleapply.LoanSettleApplyFeign;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentApplyFeign;
+import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.anrui.scm.api.scmcollectionrebate.ScmCollectionRebateDto;
import com.yxt.anrui.scm.api.scmcollectionrebate.ScmCollectionRebateFeign;
import com.yxt.anrui.scm.api.scmcollectionrebateveh.ScmCollectionRebateVehDto;
@@ -106,6 +110,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.text.NumberFormat;
+import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
@@ -185,6 +190,8 @@ public class FinPaymentrecordService extends MybatisBaseService listPageVo(PagerQuery pq) {
FinPaymentrecordQuery query = pq.getParams();
@@ -203,6 +210,9 @@ public class FinPaymentrecordService extends MybatisBaseService= date_format('" + pageQuery.getCreateStartDate() + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(pageQuery.getCreateEndDate()), "date_format (fp.createTime,'%Y-%m-%d') <= date_format('" + pageQuery.getCreateEndDate() + "','%Y-%m-%d')"
@@ -657,17 +667,26 @@ public class FinPaymentrecordService extends MybatisBaseService FPAYBILLENTRYs = new ArrayList<>();
if (finPaymentrecord.getCost() != null
&& finPaymentrecord.getCost().compareTo(BigDecimal.ZERO) > 0) {
@@ -719,6 +738,325 @@ public class FinPaymentrecordService extends MybatisBaseService sids = dto.getSids();
+ //判断选择的sids的付款申请的收款单位是否一致
+ List applySids = baseMapper.selectApplySids(sids);
+ if (applySids.size() > 1) {
+ applySids = applySids.stream().distinct().collect(Collectors.toList());
+ if (applySids.size() > 1) {
+ return rb.setMsg("批量处理的数据中存在收款账号不一致");
+ }
+ }
+ if (applySids.contains("")) {
+ return rb.setMsg("处理的数据包含收款账号不存在的数据");
+ }
+ //判断是否包含已作废的
+ List sidState = baseMapper.selectApplySidBySid(sids);
+ if (sidState.size() > 1) {
+ if (sidState.contains(3)) {
+ return rb.setMsg("处理的数据包含已作废的记录");
+ }
+ if (sidState.contains(2)) {
+ return rb.setMsg("处理的数据中包含已通过的记录");
+ }
+ }
+ //生成批量处理编号
+ String batchNumTemp = selectBatchNum(new SimpleDateFormat("yyMMdd").format(new Date()));
+ if (StringUtils.isBlank(batchNumTemp)) {
+ batchNumTemp = "0";
+ }
+ int intValue = Integer.valueOf(batchNumTemp).intValue();
+ String batchNum = GetSerialNum.getNum(intValue);
+ List apPayBills = new ArrayList<>();
+ List vouchers = new ArrayList<>();
+ for (int i = 0; i < sids.size(); i++) {
+ FinPaymentrecord finPaymentrecord = fetchBySid(sids.get(i));
+ int finDataType = 0; //(0付款单,1凭证)
+ if (null != finPaymentrecord.getFinDataType()) {
+ if (finPaymentrecord.getFinDataType().intValue() == 1) {
+ finDataType = 1;
+ }
+ } else {
+ finDataType = 1;
+ }
+ finPaymentrecord.setBatchNumber(batchNum);
+ //到回款返利申请
+ if (finPaymentrecord.getIsPushHkfl() == 1) {
+ ScmCollectionRebateDto scmCollectionRebateDto = new ScmCollectionRebateDto();
+ List scmCollectionRebateVehDtos = new ArrayList<>();
+ FinPaymentapply finPaymentapply = finPaymentapplyService.fetchBySid(finPaymentrecord.getApplySid());
+ FinPaymentapplyDetails finPaymentapplyDetails = finPaymentapplyDetailsService.fetchBySid(finPaymentrecord.getBusSid());
+ List vehicleList = finPaymentapplyVehicleService.getVehicleList(finPaymentapply.getSid());
+ scmCollectionRebateDto.setPurchaseSystemSid(finPaymentrecord.getPurchaseSystemSid());
+ scmCollectionRebateDto.setPurchaseSystemName(finPaymentrecord.getPurchaseSystemName());
+ scmCollectionRebateDto.setCostTitleKey(finPaymentrecord.getCostTitleKey());
+ scmCollectionRebateDto.setCostTitleValue(finPaymentrecord.getCostTitleValue());
+ scmCollectionRebateDto.setBrandSid(finPaymentapply.getCarBrandSid());
+ scmCollectionRebateDto.setBrandName(finPaymentapply.getCarBrandName());
+ scmCollectionRebateDto.setCollectionTypeKey(dto.getPayWayKey());
+ scmCollectionRebateDto.setCollectionTypeValue(dto.getPayWayValue());
+ scmCollectionRebateDto.setManufaSaleChannel("");
+ scmCollectionRebateDto.setManufaSaleChannelValue(finPaymentapplyDetails.getActualPay());
+ scmCollectionRebateDto.setCollectionMoney(new BigDecimal(dto.getCost()));
+ scmCollectionRebateDto.setCollectionDate(DateUtil.formatDate(dto.getPayDate()));
+ SysOrganizationVo sysOrganizationVo = sysOrganizationFeign.fetchBySid(finPaymentrecord.getCreateOrgSid()).getData();
+ scmCollectionRebateDto.setCreateOrgSid(finPaymentrecord.getCreateOrgSid());
+ scmCollectionRebateDto.setCreateOrgName(sysOrganizationVo.getName());
+ scmCollectionRebateDto.setUseOrgSid(finPaymentrecord.getUseOrgSid());
+ scmCollectionRebateDto.setUseOrgName(sysOrganizationVo.getName());
+ scmCollectionRebateDto.setOrgPath(finPaymentapply.getOrgSidPath());
+ scmCollectionRebateDto.setCreateBySid(finPaymentrecord.getCreateBySid());
+ if (vehicleList != null && vehicleList.size() > 0) {
+ for (FinPaymentapplyVehicleVo finPaymentapplyVehicleVo : vehicleList) {
+ ScmCollectionRebateVehDto scmCollectionRebateVehDto = new ScmCollectionRebateVehDto();
+ BaseVehicleSelectVo baseVehicleSelectVo = baseVehicleFeign.details(finPaymentapplyVehicleVo.getVehiSid()).getData();
+ scmCollectionRebateVehDto.setCarModelSid(finPaymentapplyVehicleVo.getModelSid());
+ scmCollectionRebateVehDto.setCarModelName(finPaymentapplyVehicleVo.getModelName());
+ scmCollectionRebateVehDto.setPriceDate(DateUtil.format(baseVehicleSelectVo.getPriceDate(), "yyyy-MM-dd"));
+ if (baseVehicleSelectVo.getSalesDate() != null) {
+ scmCollectionRebateVehDto.setSalesDate(DateUtil.format(baseVehicleSelectVo.getSalesDate(), "yyyy-MM-dd"));
+ }
+ scmCollectionRebateVehDto.setVehSid(finPaymentapplyVehicleVo.getVehiSid());
+ scmCollectionRebateVehDto.setVinNo(finPaymentapplyVehicleVo.getVinNo());
+ scmCollectionRebateVehDto.setCostPrice(finPaymentapplyVehicleVo.getMoney());
+ scmCollectionRebateVehDtos.add(scmCollectionRebateVehDto);
+ }
+ }
+ scmCollectionRebateDto.setScmCollectionRebateVehs(scmCollectionRebateVehDtos);
+ scmCollectionRebateDto.setIsEnable(1);
+ scmCollectionRebateFeign.save(scmCollectionRebateDto);
+ }
+ //更新还款计划表垫款金额和逾期利息
+ if ("007".equals(finPaymentrecord.getCostTypeKey())) {
+ List loanBePadsincereVehDetailsVos = loanBePadsincereVehFeign.selByBankCont(finPaymentrecord.getApplySid(), finPaymentrecord.getBusSid()).getData();
+ for (LoanBePadsincereVehDetailsVo loanBePadsincereVehDetailsVo : loanBePadsincereVehDetailsVos) {
+ LoanRepaymentPlanMoneyVo loanRepaymentPlanMoneyVo = loanRepaymentPlanDetailsFeign.selVehSidAndPeriod(loanBePadsincereVehDetailsVo.getBusVinSid(), loanBePadsincereVehDetailsVo.getPeriod(), loanBePadsincereVehDetailsVo.getBankContractNo()).getData();
+ LoanRepaymentPlanDetails planDetails = loanRepaymentPlanDetailsFeign.fetchDetails(loanRepaymentPlanMoneyVo.getSid()).getData();
+ String paymentMoney = loanRepaymentPlanMoneyVo.getPaymentMoney().add(new BigDecimal(loanBePadsincereVehDetailsVo.getPadMoney())).toString();
+ String paymentInterest = loanRepaymentPlanMoneyVo.getPaymentInterest().add(new BigDecimal(loanBePadsincereVehDetailsVo.getBankBeInter())).toString();
+ loanRepaymentPlanDetailsFeign.updateSidAndPeriod(loanRepaymentPlanMoneyVo.getSid(), loanBePadsincereVehDetailsVo.getPeriod(), paymentMoney, paymentInterest);
+ //推送金融应收
+ FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
+ jr.setCreateBySid(finPaymentrecord.getCreateBySid());
+ SysUserVo userVo = sysUserFeign.fetchBySid(finPaymentrecord.getCreateBySid()).getData();
+ jr.setCreateByName(userVo.getName());
+ jr.setBusSid(planDetails.getSid());
+ jr.setApplySid(finPaymentrecord.getApplySid());
+ jr.setCurrentReceivableMoney(new BigDecimal(paymentInterest));
+ jr.setReveivableMoney(new BigDecimal(paymentInterest));
+ jr.setPayCostTitleKey("005");
+ jr.setPayCostTitleValue("资方逾期利息");
+ jr.setOrgSidPath(planDetails.getOrgSidPath());
+ jr.setUseOrgName(planDetails.getUseOrgName());
+ jr.setUseOrgSid(planDetails.getUseOrgSid());
+ jr.setStaffDeptName(planDetails.getDept());
+ jr.setStaffName(planDetails.getStaffName());
+ jr.setStaffDeptSid(planDetails.getDeptSid());
+ jr.setStaffUserSid(planDetails.getSalesUserSid());
+ finUncollectedReceivablesDetailedJRService.insert(jr);
+ }
+ }
+ FinPaymentrecord finPaymentrecordOne = null;
+ if (new BigDecimal(dto.getCost()).compareTo(finPaymentrecord.getAccountsReceive()) < 0) {//实收金额小于应收金额
+ finPaymentrecordOne = new FinPaymentrecord();
+ BeanUtil.copyProperties(finPaymentrecord, finPaymentrecordOne, "sid");
+ finPaymentrecordOne.setAccountsReceive(finPaymentrecord.getAccountsReceive().subtract(new BigDecimal(dto.getCost())));
+ finPaymentrecordOne.setCost(finPaymentrecordOne.getAccountsReceive());
+ }
+ BeanUtil.copyProperties(dto, finPaymentrecord, "sid");
+ List payFiles = dto.getPayFiles();
+ if (payFiles.size() > 0) {
+ String payFile = payFiles.stream().map(v -> v.replace(fileUploadComponent.getUrlPrefix(), "")).collect(Collectors.joining(","));
+ finPaymentrecord.setPayFile(payFile);
+ }
+ baseMapper.updateById(finPaymentrecord);
+ //更新付款申请中的状态
+ FinPaymentapply finPaymentapply = finPaymentapplyService.fetchBySid(finPaymentrecord.getApplySid());
+ if (finPaymentapply != null) {
+ finPaymentapplyService.updateStateBySid(finPaymentrecord.getApplySid(), 2);
+ baseMapper.updateStateBySid(finPaymentrecord.getSid(), 2);
+ } else {
+ baseMapper.updateStateBySid(finPaymentrecord.getSid(), 2);
+ //更新厂家认款状态
+ BaseManufUpdateDto baseManufUpdateDto = new BaseManufUpdateDto();
+ baseManufUpdateDto.setSid(finPaymentrecord.getBusSid());
+ baseManufUpdateDto.setState("1");
+ ResultBean resultBean = baseManufactorSubscriptionFeign.updatePaymentState(baseManufUpdateDto);
+ }
+ if (finPaymentrecordOne != null) {
+ baseMapper.insert(finPaymentrecordOne);
+ }
+ //推送金蝶付款单
+ if (finDataType == 0) {
+ try {
+ ApPayBill apb = createApPayBill(finPaymentrecord);
+ apPayBills.add(apb);
+ } catch (Exception e) {
+ log.error(e.getMessage());
+ }
+ }
+ String costTypeKey = finPaymentrecord.getCostTypeKey();
+ try {
+ ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
+ .setNameFormat("demo-pool-%d").build();
+ ExecutorService pool = new ThreadPoolExecutor(1, 10,
+ 1000, TimeUnit.MILLISECONDS,
+ new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
+ int finalI = i;
+ if ("005".equals(costTypeKey)) {
+ Future future6 = pool.submit(() -> {
+ List recipientSidList = new ArrayList<>();
+ BusVehicleApplyDetailsVo busVehicleApplyDetailsVo = busVehicleApplyFeign.fetchSid(finPaymentrecord.getApplySid()).getData();
+ String createBySid = busVehicleApplyDetailsVo.getCreateBySid();
+ recipientSidList.add(createBySid);
+ PushMessageQuery pushMessageQuery = new PushMessageQuery();
+ pushMessageQuery.setReceivedSids(recipientSidList);
+ pushMessageQuery.setModuleName("财务管理");
+ pushMessageQuery.setMsgContent("您的付款申请已确认通过");
+ pushMessageQuery.setApp_type("2");
+ pushMessageQuery.setModuleSid("98ff0724-5df4-4fc7-ab6d-3996e7706acd");
+ pushMessageQuery.setMsgTitle("付款确认通知");
+ pushMessageQuery.setBusinessSid(sids.get(finalI));
+ // 消息推送
+ messageFeign.pushNoUriMessage(pushMessageQuery);
+ });
+ } else if ("002".equals(costTypeKey)) {
+ Future future6 = pool.submit(() -> {
+ List recipientSidList = new ArrayList<>();
+ BaseOutsourcingApplicationDetailsVo baseOutsourcingApplicationDetailsVo = baseOutsourcingApplicationFeign.fetchBySid(finPaymentrecord.getApplySid()).getData();
+ String createBySid = baseOutsourcingApplicationDetailsVo.getCreateBySid();
+ recipientSidList.add(createBySid);
+ PushMessageQuery pushMessageQuery = new PushMessageQuery();
+ pushMessageQuery.setReceivedSids(recipientSidList);
+ pushMessageQuery.setModuleName("财务管理");
+ pushMessageQuery.setMsgContent("您的付款申请已确认通过");
+ pushMessageQuery.setApp_type("2");
+ pushMessageQuery.setModuleSid("98ff0724-5df4-4fc7-ab6d-3996e7706acd");
+ pushMessageQuery.setMsgTitle("付款确认通知");
+ pushMessageQuery.setBusinessSid(sids.get(finalI));
+ // 消息推送
+ messageFeign.pushNoUriMessage(pushMessageQuery);
+ });
+ } else if ("006".equals(costTypeKey)) {
+ //推送转付记录
+ Future future1 = pool.submit(() -> {
+ loanTransferPaymentApplyFeign.pushPaymentRecord(finPaymentrecord.getBusSid(), finPaymentrecord.getSid());
+ });
+ Future future2 = pool.submit(() -> {
+ RskVoucher voucher = loanTransferPaymentApplyFeign.pushPaymentVoucherReturnVoucher(finPaymentrecord.getBusSid(), finPaymentrecord.getSid()).getData();
+ if (null != voucher) {
+ Voucher v = new Voucher();
+ BeanUtil.copyProperties(voucher, v);
+ vouchers.add(v);
+ }
+ });
+ } else if ("007".equals(costTypeKey)) {
+ Future future1 = pool.submit(() -> {
+ RskVoucher voucher = loanBePadsincereApplyFeign.pushAdvancesReturnVoucher(finPaymentrecord.getApplySid(), finPaymentrecord.getSid()).getData();
+ if (null != voucher) {
+ Voucher v = new Voucher();
+ BeanUtil.copyProperties(voucher, v);
+ vouchers.add(v);
+ }
+ });
+ } else if ("008".equals(costTypeKey) || "资方结清款".equals(finPaymentrecord.getCostTypeValue())) {
+ if (StringUtils.isNotBlank(finPaymentrecord.getPayBankAccount())) {
+ String shouxufei = "0";
+ if (null != finPaymentrecord.getPaymentCharges()) {
+ shouxufei = finPaymentrecord.getPaymentCharges().toString();
+ }
+ String accountNumber = finPaymentrecord.getPayBankAccount();
+ String payTypeCode = "";
+ FinManufacturerBank manufacturerBank = finManufacturerBankService.selOneByBankNo(accountNumber, finPaymentrecord.getUseOrgSid()).getData();
+ if (null != manufacturerBank) {
+ payTypeCode = manufacturerBank.getDueBankKey();
+ }
+ RskVoucher voucher = loanSettleApplyFeign.pushBankReturnVoucher(finPaymentrecord.getBusSid(), accountNumber, payTypeCode, shouxufei).getData();
+ if (null != voucher) {
+ Voucher v = new Voucher();
+ BeanUtil.copyProperties(voucher, v);
+ vouchers.add(v);
+ }
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error("推送数据失败=========================" + e.getMessage());
+ return rb.setMsg("推送数据失败");
+ }
+ }
+ try {
+ ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
+ .setNameFormat("demo-pool-%d").build();
+ ExecutorService pool = new ThreadPoolExecutor(1, 10,
+ 1000, TimeUnit.MILLISECONDS,
+ new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
+ Future future = pool.submit(() -> {
+ if (!apPayBills.isEmpty()) {
+ ApPayBill apPayBill = buildBatchApPayBill(apPayBills);
+ ResultBean resultBean1 = apPayBillService.draftApPayBill(apPayBill);
+ }
+ if (!vouchers.isEmpty()) {
+ Voucher voucher = buildBatchVoucher(vouchers);
+ log.info("FinKingDeeFeignRest-saveVoucher:{}", JSONObject.toJSONString(voucher));
+ voucherService.saveVoucher(voucher);
+ }
+ });
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error("推送数据失败=========================" + e.getMessage());
+ return rb.setMsg("推送数据失败");
+ }
+ return rb.success();
+ }
+
+ private Voucher pushPaymentVoucherReturnVoucher(String busSid, String sid) {
+
+ return null;
+ }
+
+ public ApPayBill buildBatchApPayBill(List list) {
+ ApPayBill apPayBill = new ApPayBill();
+ List FPAYBILLENTRY = new ArrayList<>();
+ ApPayBill payBill = list.get(0);
+ BeanUtil.copyProperties(payBill, apPayBill);
+ for (ApPayBill bill : list) {
+ List fpaybillentry = bill.getFPAYBILLENTRY();
+ if (!fpaybillentry.isEmpty()) {
+ for (ApPayBill.FPAYBILLENTRY f : fpaybillentry) {
+ FPAYBILLENTRY.add(f);
+ }
+ }
+ }
+ apPayBill.setFPAYBILLENTRY(FPAYBILLENTRY);
+ return apPayBill;
+ }
+
+ public Voucher buildBatchVoucher(List list) {
+ Voucher newVoucher = new Voucher();
+ List resultDetails = new ArrayList<>();
+ Voucher voucher = list.get(0);
+ BeanUtil.copyProperties(voucher, newVoucher);
+ for (Voucher v : list) {
+ List result = v.getResultDetails();
+ if (!result.isEmpty()) {
+ for (Voucher.VoucherResultDetailDto r : result) {
+ resultDetails.add(r);
+ }
+ }
+ }
+ newVoucher.setResultDetails(resultDetails);
+ return newVoucher;
+ }
+
+
/**
* 作废
*
@@ -990,7 +1328,7 @@ public class FinPaymentrecordService extends MybatisBaseService vehicleList = finPaymentapplyVehicleService.getVehicleList(finPaymentapply.getSid());
String payRemark = "";
for (FinPaymentapplyVehicleVo finPaymentapplyVehicleVo : vehicleList) {
diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeign.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeign.java
index c55ad45a6f..4b393c995f 100644
--- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeign.java
+++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeign.java
@@ -25,17 +25,14 @@
*********************************************************/
package com.yxt.anrui.riskcenter.api.loanbepadsincereapply;
-import com.yxt.anrui.buscenter.api.busvalcustfiling.flowable.*;
import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.flowable.*;
import com.yxt.anrui.riskcenter.api.loanbepadsincereveh.LoanBePadsincereVehDetailsVo;
-import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.CustomerRecordDelegateQuery;
-import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.RepaymentExcelInfo;
-import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.TransferPaymentQuery;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
@@ -149,6 +146,12 @@ public interface LoanBePadsincereApplyFeign {
@ResponseBody
public ResultBean pushAdvancesVoucher(@RequestParam("sid") String sid, @RequestParam("paySid") String paySid);
+ @ApiOperation("推送财务垫款付款凭证")
+ @PostMapping("/pushAdvancesReturnVoucher")
+ @ResponseBody
+ public ResultBean pushAdvancesReturnVoucher(@RequestParam("sid") String sid, @RequestParam("paySid") String paySid);
+
+
@ApiOperation("垫还明细列表列表导出")
@PostMapping("/dkListPageExport")
@ResponseBody
diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeignFallback.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeignFallback.java
index 3e820de4c7..24dec2370f 100644
--- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeignFallback.java
+++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeignFallback.java
@@ -27,6 +27,7 @@ package com.yxt.anrui.riskcenter.api.loanbepadsincereapply;
import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.flowable.*;
import com.yxt.anrui.riskcenter.api.loanbepadsincereveh.LoanBePadsincereVehDetailsVo;
+import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@@ -146,6 +147,11 @@ public class LoanBePadsincereApplyFeignFallback implements LoanBePadsincereApply
return null;
}
+ @Override
+ public ResultBean pushAdvancesReturnVoucher(String sid, String paySid) {
+ return null;
+ }
+
@Override
public void dkListPageExport(DkRecordQuery query) {
diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeign.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeign.java
index dbef121336..88985ed537 100644
--- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeign.java
+++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeign.java
@@ -1,6 +1,7 @@
package com.yxt.anrui.riskcenter.api.loansettleapply;
import com.yxt.anrui.riskcenter.api.loansettleapply.flowable.*;
+import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@@ -110,5 +111,12 @@ public interface LoanSettleApplyFeign {
@RequestParam("shouxufei") String shouxufei
);
+ @ApiOperation(value = "推送资方结清款凭证")
+ @PostMapping(value = "/pushBankVoucher")
+ ResultBean pushBankReturnVoucher(@RequestParam("sid") String sid,
+ @RequestParam("accountNumber") String accountNumber,
+ @RequestParam("payTypeCode") String payTypeCode,
+ @RequestParam("shouxufei") String shouxufei
+ );
}
diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeign.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeign.java
index ebee2da9ae..a382acefe0 100644
--- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeign.java
+++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeign.java
@@ -1,7 +1,7 @@
package com.yxt.anrui.riskcenter.api.loantransferpaymentapply;
-import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow.*;
+import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@@ -68,6 +68,12 @@ public interface LoanTransferPaymentApplyFeign {
@ResponseBody
public ResultBean pushPaymentVoucher(@RequestParam("sid") String sid, @RequestParam("paySid") String paySid);
+ @ApiOperation("推送财务代付款凭证")
+ @PostMapping("/pushPaymentVoucherReturnVoucher")
+ @ResponseBody
+ public ResultBean pushPaymentVoucherReturnVoucher(@RequestParam("sid") String sid, @RequestParam("paySid") String paySid);
+
+
//---------------------------流程---------------------------------------
@ApiOperation("提交")
diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeignFallback.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeignFallback.java
index 60717c69dc..42128861eb 100644
--- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeignFallback.java
+++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeignFallback.java
@@ -1,9 +1,8 @@
package com.yxt.anrui.riskcenter.api.loantransferpaymentapply;
-import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo;
-import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow.*;
+import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@@ -55,6 +54,11 @@ public class LoanTransferPaymentApplyFeignFallback implements LoanTransferPaymen
return null;
}
+ @Override
+ public ResultBean pushPaymentVoucherReturnVoucher(String sid, String paySid) {
+ return null;
+ }
+
@Override
public ResultBean submitRecordApplication(SubmitTransferDto dto) {
return null;
diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvoucher/RskPaymentVoucher.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvoucher/RskPaymentVoucher.java
new file mode 100644
index 0000000000..1e98fa8d7f
--- /dev/null
+++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvoucher/RskPaymentVoucher.java
@@ -0,0 +1,64 @@
+package com.yxt.anrui.riskcenter.api.loanvoucher;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author Fan
+ * @description
+ * @date 2023/12/19 11:18
+ */
+@Data
+@ApiModel(value = "一般凭证 数据传输对象", description = "一般凭证 数据传输对象")
+public class RskPaymentVoucher {
+ @ApiModelProperty("分公司编码")
+ public String useOrgCode;
+ @ApiModelProperty("收款方式编码")
+ public String payTypeCode;
+ @ApiModelProperty("银行账号")
+ public String bankAccount;
+ @ApiModelProperty("凭证明细")
+ public List voucherDetails;
+
+ @Data
+ public static class PaymentVoucherDetail {
+
+ @ApiModelProperty("场景编码")
+ public String sceneCode;
+ @ApiModelProperty("资方简称")
+ public String bankName;
+ @ApiModelProperty("数据日期")
+ public Date dataTime;
+ @ApiModelProperty("部门编码")
+ public String deptCode;
+ @ApiModelProperty("部门名称")
+ public String deptName;
+ @ApiModelProperty("客户编码")
+ public String customerCode;
+ @ApiModelProperty("客户名称")
+ public String customerName;
+ @ApiModelProperty("金额")
+ public BigDecimal amount;
+ @ApiModelProperty("差额适用于结清时计算差额")
+ public BigDecimal balance;
+ @ApiModelProperty("减数适用于结清时计算差额")
+ public BigDecimal subtrahend;
+ @ApiModelProperty("结清时未到期利息减免")
+ public BigDecimal relief;
+ @ApiModelProperty("结清时未到期利息不减免")
+ public BigDecimal noRelief;
+ @ApiModelProperty("付款时手续费")
+ public BigDecimal paymentCharges;
+ @ApiModelProperty("备注")
+ public String remarks;
+ @ApiModelProperty("借贷方类型")
+ public String type;
+ @ApiModelProperty("核算维度银行")
+ public String bank;
+ }
+}
diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvoucher/RskVoucher.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvoucher/RskVoucher.java
new file mode 100644
index 0000000000..73ba89a39a
--- /dev/null
+++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvoucher/RskVoucher.java
@@ -0,0 +1,52 @@
+package com.yxt.anrui.riskcenter.api.loanvoucher;
+
+import com.yxt.common.core.dto.Dto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ * @description
+ * @date 2023/9/12 18:13
+ */
+@Data
+public class RskVoucher {
+ @ApiModelProperty("账簿")
+ public String accountBook;
+ @ApiModelProperty("业务日期")
+ public String bussDate;
+ @ApiModelProperty("凭证字")
+ public String voucherWord;
+ @ApiModelProperty("凭证号")
+ public String voucherNo;
+ @ApiModelProperty("收款明细")
+ public List resultDetails;
+
+ @Data
+ public static class VoucherResultDetailDto implements Dto {
+
+
+ @ApiModelProperty("摘要")
+ public String summary;
+ @ApiModelProperty("科目编码")
+ public String subjectNo;
+ @ApiModelProperty("核算维度部门")
+ public String dimensionDept;
+ @ApiModelProperty("核算维度客户")
+ public String dimensionCustom;
+ @ApiModelProperty("核算维度银行账号")
+ public String bankAccount;
+ @ApiModelProperty("核算维度厂商(供应商)")
+ public String manufacturer;
+ @ApiModelProperty("核算维度物料")
+ public String material;
+ @ApiModelProperty("核算维度银行")
+ public String bank;
+ @ApiModelProperty("借方金额")
+ public String debit;
+ @ApiModelProperty("贷方金额")
+ public String credit;
+ }
+}
diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyRest.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyRest.java
index e5806c84a9..e2e3b502b2 100644
--- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyRest.java
+++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyRest.java
@@ -26,48 +26,31 @@
package com.yxt.anrui.riskcenter.biz.loanbepadsincereapply;
import cn.hutool.core.bean.BeanUtil;
-import com.yxt.anrui.base.api.basemodelmodprice.BaseModelModpriceExportVo;
-import com.yxt.anrui.base.api.basevehicle.BaseVehicle;
-import com.yxt.anrui.base.api.basevehiclecertificate.BaseVehicleCertificate;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.*;
import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.flowable.*;
-import com.yxt.anrui.riskcenter.api.loanbepadsincereveh.LoanBePadsincereVeh;
import com.yxt.anrui.riskcenter.api.loanbepadsincereveh.LoanBePadsincereVehDetailsVo;
-import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.RepaymentExcelInfo;
-import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.export.TransferedPaymentExportVo;
+import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.common.base.utils.ExportExcelUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.Row;
-import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
import java.util.List;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
/**
* Project: anrui-riskcenter(垫款申请)
* File: LoanBePadsincereApplyFeignFallback.java
@@ -223,6 +206,11 @@ public class LoanBePadsincereApplyRest implements LoanBePadsincereApplyFeign {
return loanBePadsincereApplyService.pushAdvancesVoucher(sid,paySid);
}
+ @Override
+ public ResultBean pushAdvancesReturnVoucher(String sid, String paySid) {
+ return loanBePadsincereApplyService.pushAdvancesReturnVoucher(sid,paySid);
+ }
+
@Override
public void dkListPageExport(DkRecordQuery query) {
//得到所有要导出的数据
diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyService.java
index d06d84f4cc..7137fe0793 100644
--- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyService.java
+++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyService.java
@@ -29,6 +29,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemDetailsVo;
@@ -42,9 +43,6 @@ 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.finpaymentapply.FinPaymentapply;
-import com.yxt.anrui.fin.api.finpaymentapply.FinPaymentapplyDto;
-import com.yxt.anrui.fin.api.finpaymentapply.FinPaymentapplyFeign;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecord;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordDto;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordFeign;
@@ -52,6 +50,7 @@ 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.PaymentVoucher;
import com.yxt.anrui.fin.api.kingdee.voucher.SceneCodeEnum;
+import com.yxt.anrui.fin.api.kingdee.voucher.Voucher;
import com.yxt.anrui.flowable.api.flow.FlowProcessMapQuery;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
@@ -62,6 +61,8 @@ import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
+import com.yxt.anrui.portal.api.dictcommon.DictCommonFeign;
+import com.yxt.anrui.portal.api.dictcommon.DictCommonVo;
import com.yxt.anrui.portal.api.flow.PCHistTaskListAndCommentList;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
@@ -77,24 +78,24 @@ import com.yxt.anrui.riskcenter.api.loanbepadsincereveh.LoanBePadsincereVehDto;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFile;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.MonthlyAccrualSourceLCVo;
-import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
-import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanPlanDetailsVoForFundVoucher;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
-import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanMoneyVo;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanRepaymentSchedule;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanRepaymentScheduleDetailsVo;
-import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentApply;
-import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentRecordVo;
-import com.yxt.anrui.riskcenter.api.loantransferpaymentrecord.LoanTransferPaymentRecord;
+import com.yxt.anrui.riskcenter.api.loanvoucher.RskPaymentVoucher;
+import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.anrui.riskcenter.biz.loanbepadsincereveh.LoanBePadsincereVehService;
import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentschedule.LoanRepaymentScheduleService;
import com.yxt.common.base.config.component.DocPdfComponent;
import com.yxt.common.base.config.component.FileUploadComponent;
+import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.ConstantUtils;
-import com.yxt.common.base.utils.DateUtils;
+import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.WordConvertUtils;
+import com.yxt.common.core.query.PagerQuery;
+import com.yxt.common.core.result.ResultBean;
+import com.yxt.common.core.vo.PagerVo;
import com.yxt.messagecenter.api.message.Message;
import com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowVo;
@@ -102,12 +103,6 @@ import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import com.yxt.messagecenter.api.messagelist.MessageList;
import com.yxt.messagecenter.api.messagelist.MessageListFeign;
import org.apache.commons.lang3.StringUtils;
-import com.yxt.common.base.service.MybatisBaseService;
-import com.yxt.common.base.utils.PagerUtil;
-import com.yxt.common.core.query.PagerQuery;
-import com.yxt.common.core.result.ResultBean;
-import com.yxt.common.core.vo.PagerVo;
-
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
@@ -123,7 +118,6 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
-import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
@@ -191,7 +185,8 @@ public class LoanBePadsincereApplyService extends MybatisBaseService listPageVo(PagerQuery pq) {
LoanBePadsincereApplyQuery query = pq.getParams();
@@ -1508,4 +1503,184 @@ public class LoanBePadsincereApplyService extends MybatisBaseService recordVos = baseMapper.dkListPageExport(qw);
return recordVos;
}
+
+ public ResultBean pushAdvancesReturnVoucher(String sid, String paySid) {
+ ResultBean rb = ResultBean.fireFail();
+ List records = loanBePadsincereVehService.selByMainSidAndPaySid(sid, paySid);
+ FinPaymentrecord paymentrecord = finPaymentrecordFeign.fetchBySid(paySid).getData();
+ if (!records.isEmpty()) {
+ RskPaymentVoucher paymentVoucher = new RskPaymentVoucher();
+ List voucherDetails = new ArrayList<>();
+ LoanBePadsincereVeh l = records.get(0);
+ if (null != l) {
+ String accountNumber = paymentrecord.getPayBankAccount();
+ paymentVoucher.setBankAccount(paymentrecord.getPayBankAccount());
+ String mainSid = l.getMainSid();
+ LoanBePadsincereApply loanBePadsincereApply = fetchBySid(mainSid);
+ FinManufacturerBank manufacturerBank = finManufacturerBankFeign.selOneByBankNo(accountNumber, loanBePadsincereApply.getUseOrgSid()).getData();
+ if (null != manufacturerBank) {
+ paymentVoucher.setPayTypeCode(manufacturerBank.getDueBankKey());
+ }
+ String useOrgSid = loanBePadsincereApply.getUseOrgSid();
+ SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData();
+ if (null != organizationVo) {
+ paymentVoucher.setUseOrgCode(organizationVo.getOrgCode());
+ }
+ }
+ RskPaymentVoucher.PaymentVoucherDetail voucherDetail1 = new RskPaymentVoucher.PaymentVoucherDetail();
+ voucherDetail1.setType("贷方");
+ List result = new ArrayList<>();
+ records.stream().forEach(r -> {
+ result.add(new BigDecimal(r.getPadMoney()));
+ });
+ BigDecimal b = result.stream()
+ // 使用reduce()聚合函数,实现累加器
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ voucherDetail1.setAmount(b);
+ voucherDetail1.setDataTime(new DateTime());
+ voucherDetails.add(voucherDetail1);
+ for (LoanBePadsincereVeh v : records) {
+ LoanRepaymentPlanDetails planDetails = loanRepaymentPlanDetailsService.selOneByBankNoAndBusVinSid(v.getBankContractNo(), v.getSaleVehSid());
+ if (null != planDetails) {
+ String bankName = planDetails.getBankName();
+ String orgCode = "";
+ LoanRepaymentSchedule schedule = loanRepaymentScheduleService.fetchBySid(planDetails.getScheduleSid());
+ if (null != schedule) {
+ if (StringUtils.isNotBlank(schedule.getCwDeptNo())) {
+ orgCode = schedule.getCwDeptNo();
+ }
+ }
+ BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(planDetails.getBusVinSid()).getData();
+ BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(planDetails.getSalesOrderSid()).getData();
+ String customerNumber = "";
+ if (null != salesOrder) {
+ if (null != busSalesOrderVehicle) {
+ //判断财务系统是否有客户
+ Boolean aBoolean = finKingDeeFeign.customerExistState(busSalesOrderVehicle.getTemporaryNo()).getData();
+ String linkNo = "";
+ BusSalesOrderBorrowerDetailsVo borrowerDetailsVo = busSalesOrderBorrowerFeign.fetchDetailsBySid(busSalesOrderVehicle.getBorrowerSid()).getData();
+ if (!aBoolean) {
+ // List bdCustomers = new ArrayList<>();
+ BdCustomer bdCustomer = new BdCustomer();
+ bdCustomer.setFNumber(busSalesOrderVehicle.getTemporaryNo());
+ bdCustomer.setFShortName(salesOrder.getContractNo());
+ BasePurchaseSystemDetailsVo data = basePurchaseSystemFeign.fetchDetailsByDeptSid(salesOrder.getPurchaseSystemSid()).getData();
+ bdCustomer.setTOrgIds(data.getOrgCode());
+ if (org.apache.commons.lang3.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 resultBean = finKingDeeFeign.draftBdCustomer(bdCustomer);
+ if (resultBean.getSuccess()) {
+ customerNumber = bdCustomer.getFNumber();
+ }
+ } else {
+ customerNumber = busSalesOrderVehicle.getTemporaryNo();
+ }
+ }
+ }
+ if (StringUtils.isNotBlank(v.getBankBeMoney())) {
+ BigDecimal beMoney = new BigDecimal(v.getBankBeMoney());
+ if (beMoney.compareTo(BigDecimal.ZERO) > 0) {
+ RskPaymentVoucher.PaymentVoucherDetail voucherDetail = new RskPaymentVoucher.PaymentVoucherDetail();
+ voucherDetail.setSceneCode(SceneCodeEnum.PADSINCERE_VOUCHER1.getCode());
+ voucherDetail.setType("借方");
+ if (StringUtils.isNotBlank(bankName)) {
+ voucherDetail.setBankName(bankName);
+ }
+ voucherDetail.setDeptCode(orgCode);
+ if (StringUtils.isNotBlank(customerNumber)) {
+ voucherDetail.setCustomerCode(customerNumber);
+ }
+ voucherDetail.setAmount(beMoney);
+ voucherDetails.add(voucherDetail);
+ }
+ }
+ if (StringUtils.isNotBlank(v.getBankBeInter())) {
+ BigDecimal beInter = new BigDecimal(v.getBankBeInter());
+ if (beInter.compareTo(BigDecimal.ZERO) > 0) {
+ RskPaymentVoucher.PaymentVoucherDetail voucherDetail = new RskPaymentVoucher.PaymentVoucherDetail();
+ voucherDetail.setSceneCode(SceneCodeEnum.PADSINCERE_VOUCHER2.getCode());
+ voucherDetail.setType("借方");
+ if (StringUtils.isNotBlank(bankName)) {
+ voucherDetail.setBankName(bankName);
+ }
+ voucherDetail.setDeptCode(orgCode);
+ if (StringUtils.isNotBlank(customerNumber)) {
+ voucherDetail.setCustomerCode(customerNumber);
+ }
+ voucherDetail.setAmount(beInter);
+ voucherDetails.add(voucherDetail);
+ }
+ }
+ }
+ }
+ paymentVoucher.setVoucherDetails(voucherDetails);
+ RskVoucher rskVoucher = returnAdvancesVoucher(paymentVoucher);
+ return rb.success().setData(rskVoucher);
+ }
+ return rb.success();
+ }
+
+ public RskVoucher returnAdvancesVoucher(RskPaymentVoucher voucher) {
+ ResultBean rb = ResultBean.fireFail();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ RskVoucher newVoucher = new RskVoucher();
+ List resultDetails = new ArrayList<>();
+ if (com.yxt.common.base.utils.StringUtils.isNotBlank(voucher.getUseOrgCode())) {
+ newVoucher.setAccountBook(voucher.getUseOrgCode());
+ newVoucher.setVoucherNo(voucher.getUseOrgCode());
+ }
+ List voucherDetails = voucher.getVoucherDetails();
+ if (!voucherDetails.isEmpty()) {
+ for (RskPaymentVoucher.PaymentVoucherDetail voucherDetail : voucherDetails) {
+ if (voucherDetail.getType().equals("借方")) {
+ RskVoucher.VoucherResultDetailDto dto1 = new RskVoucher.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");
+ }
+ dto1.setDimensionDept(voucherDetail.getDeptCode());
+ dto1.setDimensionCustom(voucherDetail.getCustomerCode());
+ dto1.setDebit(String.valueOf(voucherDetail.getAmount()));
+ resultDetails.add(dto1);
+ } else if (voucherDetail.getType().equals("贷方")) {
+ RskVoucher.VoucherResultDetailDto dto2 = new RskVoucher.VoucherResultDetailDto(); //贷方
+ 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] + "月垫付月还款");
+ dto2.setBankAccount(voucher.getBankAccount());
+ dto2.setCredit(String.valueOf(voucherDetail.getAmount()));
+ resultDetails.add(dto2);
+ }
+ }
+ newVoucher.setResultDetails(resultDetails);
+ }
+ return newVoucher;
+ }
+
+
}
diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyRest.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyRest.java
index 3fec280ca7..f8a2caf3b1 100644
--- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyRest.java
+++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyRest.java
@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.riskcenter.api.loansettleapply.*;
import com.yxt.anrui.riskcenter.api.loansettleapply.flowable.*;
+import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@@ -128,4 +129,9 @@ public class LoanSettleApplyRest implements LoanSettleApplyFeign {
public ResultBean pushBankVoucher(String sid, String accountNumber, String payTypeCode, String shouxufei) {
return loanSettleApplyService.pushBankVoucher(sid, accountNumber, payTypeCode,shouxufei);
}
+
+ @Override
+ public ResultBean pushBankReturnVoucher(String sid, String accountNumber, String payTypeCode, String shouxufei) {
+ return loanSettleApplyService.pushBankReturnVoucher(sid, accountNumber, payTypeCode,shouxufei);
+ }
}
diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java
index 44f7889978..5507d7da5c 100644
--- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java
+++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java
@@ -3,6 +3,7 @@ package com.yxt.anrui.riskcenter.biz.loansettleapply;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
@@ -65,6 +66,8 @@ import com.yxt.anrui.riskcenter.api.loansettlecompanyreduction.LoanSettleCompany
import com.yxt.anrui.riskcenter.api.loansettlecompanyreduction.LoanSettleCompanyReductionVo;
import com.yxt.anrui.riskcenter.api.loansettlevehicle.LoanSettleVehicleDto;
import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo;
+import com.yxt.anrui.riskcenter.api.loanvoucher.RskPaymentVoucher;
+import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.anrui.riskcenter.biz.loanpushfundhistory.LoanPushFundHistoryService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
@@ -4236,4 +4239,214 @@ public class LoanSettleApplyService extends MybatisBaseService pushBankReturnVoucher(String sid, String accountNumber, String payTypeCode, String shouxufei) {
+ ResultBean rb = ResultBean.fireFail();
+ LoanSettleApply apply = fetchBySid(sid);
+ LoanSettleBankCost bankCost = loanSettleBankCostService.selectByMainSid(sid);
+ LoanSettleCompanyReduction reduction = loanSettleCompanyReductionService.selectByMainSid(sid);
+ if (null != apply) {
+ BigDecimal amountAll = BigDecimal.ZERO;//推送资方结清款总数
+ BigDecimal zfJQK = BigDecimal.ZERO;//资方结清款
+ int topping = 0;
+ BigDecimal bbjDDMoney = BigDecimal.ZERO; //资方保证金抵顶
+ BigDecimal sub = BigDecimal.ZERO; //资方保证金差额
+ BigDecimal shouxufeiCW = new BigDecimal(shouxufei);
+ if (null != bankCost) {
+ if (null != bankCost.getBankSettlePrice()) {
+ zfJQK = bankCost.getBankSettlePrice();
+ }
+ topping = bankCost.getTopping();
+ if (null != bankCost.getLoanDeposit()) {
+ bbjDDMoney = bankCost.getLoanDeposit();
+ }
+ }
+ sub = zfJQK.subtract(bbjDDMoney);
+ amountAll = bbjDDMoney.add(sub);
+ if (zfJQK.compareTo(BigDecimal.ZERO) > 0) {
+ RskPaymentVoucher paymentVoucher = new RskPaymentVoucher();
+ paymentVoucher.setBankAccount(accountNumber);
+ paymentVoucher.setPayTypeCode(payTypeCode);
+ List voucherDetails = new ArrayList<>();
+ LoanRepaymentPlanDetails planDetails = baseMapper.selectByBusVinSidAndDesc(apply.getBusVinSid());
+ String scheduleSid = planDetails.getScheduleSid();
+ LoanRepaymentSchedule schedule = loanRepaymentScheduleService.fetchBySid(scheduleSid);
+ if (schedule.getIsOtherPolicy().equals("1") && schedule.getSameBank().equals("0")) {
+ planDetails = baseMapper.selectMainPeriodByBusVinSid(apply.getBusVinSid());
+ }
+ if (null != planDetails) {
+ RskPaymentVoucher.PaymentVoucherDetail voucherDetail = new RskPaymentVoucher.PaymentVoucherDetail();
+ if (topping == 1) {
+ if (bbjDDMoney.compareTo(BigDecimal.ZERO) > 0) {
+ voucherDetail.setSceneCode(SceneCodeEnum.settle_VOUCHER1.getCode());
+ } else {
+ voucherDetail.setSceneCode(SceneCodeEnum.settle_VOUCHER2.getCode());
+ }
+ } else {
+ voucherDetail.setSceneCode(SceneCodeEnum.settle_VOUCHER2.getCode());
+ }
+ if (StringUtils.isNotBlank(planDetails.getBankName())) {
+ voucherDetail.setBankName(planDetails.getBankName());
+ }
+ String useOrgSid = planDetails.getUseOrgSid();
+ SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData();
+ if (null != organizationVo) {
+ paymentVoucher.setUseOrgCode(organizationVo.getOrgCode());
+ }
+ if (StringUtils.isNotBlank(schedule.getCwDeptNo())) {
+ voucherDetail.setDeptCode(schedule.getCwDeptNo());
+ }
+ BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(planDetails.getBusVinSid()).getData();
+ BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(planDetails.getSalesOrderSid()).getData();
+ if (null != salesOrder) {
+ if (null != busSalesOrderVehicle) {
+ String customerNumber = "";
+ //判断财务系统是否有客户
+ Boolean aBoolean = finKingDeeFeign.customerExistState(busSalesOrderVehicle.getTemporaryNo()).getData();
+ String linkNo = "";
+ BusSalesOrderBorrowerDetailsVo borrowerDetailsVo = busSalesOrderBorrowerFeign.fetchDetailsBySid(busSalesOrderVehicle.getBorrowerSid()).getData();
+ if (!aBoolean) {
+ // List bdCustomers = new ArrayList<>();
+ BdCustomer bdCustomer = new BdCustomer();
+ bdCustomer.setFNumber(busSalesOrderVehicle.getTemporaryNo());
+ bdCustomer.setFShortName(salesOrder.getContractNo());
+ BasePurchaseSystemDetailsVo data = basePurchaseSystemFeign.fetchDetailsByDeptSid(salesOrder.getPurchaseSystemSid()).getData();
+ bdCustomer.setTOrgIds(data.getOrgCode());
+ if (org.apache.commons.lang3.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 resultBean = finKingDeeFeign.draftBdCustomer(bdCustomer);
+ if (resultBean.getSuccess()) {
+ customerNumber = bdCustomer.getFNumber();
+ }
+ } else {
+ customerNumber = busSalesOrderVehicle.getTemporaryNo();
+ }
+ voucherDetail.setCustomerCode(customerNumber);
+ }
+ }
+ voucherDetail.setAmount(amountAll);
+ voucherDetail.setSubtrahend(bbjDDMoney);
+ voucherDetail.setBalance(sub.add(shouxufeiCW));
+ voucherDetail.setPaymentCharges(shouxufeiCW);
+ voucherDetails.add(voucherDetail);
+ }
+ paymentVoucher.setVoucherDetails(voucherDetails);
+ RskVoucher rskVoucher = returnSettleBankVoucher(paymentVoucher);
+ return rb.success().setData(rskVoucher);
+ }
+ }
+ return rb.success();
+ }
+
+ public RskVoucher returnSettleBankVoucher(RskPaymentVoucher voucher) {
+ RskVoucher newVoucher = new RskVoucher();
+ List resultDetails = new ArrayList<>();
+ if (com.yxt.common.base.utils.StringUtils.isNotBlank(voucher.getUseOrgCode())) {
+ newVoucher.setAccountBook(voucher.getUseOrgCode());
+ newVoucher.setVoucherNo(voucher.getUseOrgCode());
+ }
+ List voucherDetails = voucher.getVoucherDetails();
+ if (!voucherDetails.isEmpty()) {
+ for (RskPaymentVoucher.PaymentVoucherDetail voucherDetail : voucherDetails) {
+ String bankCode = "";
+ //正常
+ DictCommonVo dictCommonVo = dictCommonFeign.selectBykey(voucherDetail.getBankName(), "investorsCode").getData();
+ if (null != dictCommonVo) {
+ bankCode = dictCommonVo.getDictValue();
+ }
+ if (voucherDetail.getSceneCode().equals(SceneCodeEnum.settle_VOUCHER1.getCode())) {
+ if (voucherDetail.getAmount().compareTo(BigDecimal.ZERO) != 0) {
+ RskVoucher.VoucherResultDetailDto dto1 = new RskVoucher.VoucherResultDetailDto(); //借方
+ dto1.setSummary(voucherDetail.getBankName() + "结清");
+ dto1.setSubjectNo(bankCode);
+ dto1.setDimensionDept(voucherDetail.getDeptCode());
+ dto1.setDimensionCustom(voucherDetail.getCustomerCode());
+ dto1.setDebit(String.valueOf(voucherDetail.getAmount()));
+ resultDetails.add(dto1);
+ }
+ if (voucherDetail.getPaymentCharges().compareTo(BigDecimal.ZERO) != 0) {
+ RskVoucher.VoucherResultDetailDto dto0 = new RskVoucher.VoucherResultDetailDto(); //借方
+ dto0.setSummary("付款手续费");
+ dto0.setSubjectNo("6603.03.00");
+ dto0.setDebit(String.valueOf(voucherDetail.getPaymentCharges()));
+ resultDetails.add(dto0);
+ }
+
+ if (voucherDetail.getSubtrahend().compareTo(BigDecimal.ZERO) != 0) {
+ RskVoucher.VoucherResultDetailDto dto4 = new RskVoucher.VoucherResultDetailDto(); //贷方
+ dto4.setSummary(voucherDetail.getBankName() + "个贷保证金抵结清款");
+ dto4.setSubjectNo("1009.01.00");
+ dto4.setDimensionDept(voucherDetail.getDeptCode());
+ dto4.setDimensionCustom(voucherDetail.getCustomerCode());
+ dto4.setBank("342");
+ dto4.setCredit(String.valueOf(voucherDetail.getSubtrahend()));
+ resultDetails.add(dto4);
+ }
+
+ if (voucherDetail.getBalance().compareTo(BigDecimal.ZERO) != 0) {
+ RskVoucher.VoucherResultDetailDto dto5 = new RskVoucher.VoucherResultDetailDto(); //贷方
+ dto5.setSummary(voucherDetail.getBankName() + "结清");
+ if (voucher.getPayTypeCode().equals("02")) {
+ dto5.setSubjectNo("1002.01.00");
+ } else if (voucher.getPayTypeCode().equals("01")) {
+ dto5.setSubjectNo("1002.02.01");
+ }
+ dto5.setBankAccount(voucher.getBankAccount());
+ dto5.setCredit(String.valueOf(voucherDetail.getBalance()));
+ resultDetails.add(dto5);
+ }
+
+ } else {
+ if (voucherDetail.getAmount().compareTo(BigDecimal.ZERO) != 0) {
+ RskVoucher.VoucherResultDetailDto dto1 = new RskVoucher.VoucherResultDetailDto(); //借方
+ dto1.setSummary(voucherDetail.getBankName() + "结清");
+ dto1.setSubjectNo(bankCode);
+ dto1.setDimensionDept(voucherDetail.getDeptCode());
+ dto1.setDimensionCustom(voucherDetail.getCustomerCode());
+ dto1.setDebit(String.valueOf(voucherDetail.getAmount()));
+ resultDetails.add(dto1);
+ }
+
+ if (voucherDetail.getPaymentCharges().compareTo(BigDecimal.ZERO) != 0) {
+ RskVoucher.VoucherResultDetailDto dto0 = new RskVoucher.VoucherResultDetailDto(); //借方
+ dto0.setSummary("付款手续费");
+ dto0.setSubjectNo("6603.03.00");
+ dto0.setDebit(String.valueOf(voucherDetail.getPaymentCharges()));
+ resultDetails.add(dto0);
+ }
+
+ if (voucherDetail.getBalance().compareTo(BigDecimal.ZERO) != 0) {
+ RskVoucher.VoucherResultDetailDto dto4 = new RskVoucher.VoucherResultDetailDto(); //贷方
+ dto4.setSummary(voucherDetail.getBankName() + "结清");
+ if (voucher.getPayTypeCode().equals("02")) {
+ dto4.setSubjectNo("1002.01.00");
+ } else if (voucher.getPayTypeCode().equals("01")) {
+ dto4.setSubjectNo("1002.02.01");
+ }
+ dto4.setBankAccount(voucher.getBankAccount());
+ dto4.setCredit(String.valueOf(voucherDetail.getBalance()));
+ resultDetails.add(dto4);
+ }
+ }
+ }
+ newVoucher.setResultDetails(resultDetails);
+ }
+
+ return newVoucher;
+ }
+
}
diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyRest.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyRest.java
index 94a9aa7f0c..cf5a4a35dc 100644
--- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyRest.java
+++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyRest.java
@@ -3,11 +3,9 @@ package com.yxt.anrui.riskcenter.biz.loantransferpaymentapply;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
-import com.yxt.anrui.riskcenter.api.loanbuckleapply.*;
-import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo;
-import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.*;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow.*;
+import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@@ -69,6 +67,11 @@ public class LoanTransferPaymentApplyRest implements LoanTransferPaymentApplyFei
return loanTransferPaymentApplyService.pushPaymentVoucher(sid,paySid);
}
+ @Override
+ public ResultBean pushPaymentVoucherReturnVoucher(String sid, String paySid) {
+ return loanTransferPaymentApplyService.pushPaymentVoucherReturnVoucher(sid,paySid);
+ }
+
@Override
public ResultBean submitRecordApplication(SubmitTransferDto dto) {
return loanTransferPaymentApplyService.submitRecordApplication(dto);
diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java
index 716ceae818..b07dc66616 100644
--- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java
+++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java
@@ -37,6 +37,8 @@ import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
+import com.yxt.anrui.portal.api.dictcommon.DictCommonFeign;
+import com.yxt.anrui.portal.api.dictcommon.DictCommonVo;
import com.yxt.anrui.portal.api.flow.PCHistTaskListAndCommentList;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
@@ -54,6 +56,8 @@ import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanRepaymentSchedule;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.*;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow.*;
import com.yxt.anrui.riskcenter.api.loantransferpaymentrecord.LoanTransferPaymentRecord;
+import com.yxt.anrui.riskcenter.api.loanvoucher.RskPaymentVoucher;
+import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
@@ -98,6 +102,8 @@ import static java.util.Comparator.comparing;
@Service
public class LoanTransferPaymentApplyService extends MybatisBaseService {
+ @Autowired
+ private DictCommonFeign dictCommonFeign;
@Autowired
private MessageListFeign messageListFeign;
@Autowired
@@ -831,7 +837,6 @@ public class LoanTransferPaymentApplyService extends MybatisBaseService pushPaymentVoucherReturnVoucher(String sid, String paySid) {
+ ResultBean rb = ResultBean.fireFail();
+ List records = loanTransferPaymentRecordService.selByMainSidAndPaySid(sid, paySid);
+ FinPaymentrecord paymentrecord = finPaymentrecordFeign.fetchBySid(paySid).getData();
+ if (!records.isEmpty()) {
+ RskPaymentVoucher paymentVoucher = new RskPaymentVoucher();
+ List 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) {
+ RskPaymentVoucher.PaymentVoucherDetail voucherDetail = new RskPaymentVoucher.PaymentVoucherDetail();
+ List jrList = baseMapper.selFinJrList(planDetails.getSid());
+ if (null != jrList) {
+ if (jrList.size() > 0) {
+ voucherDetail.setSceneCode(SceneCodeEnum.TRANSFER_VOUCHER2.getCode());
+ } else {
+ voucherDetail.setSceneCode(SceneCodeEnum.TRANSFER_VOUCHER1.getCode());
+ }
+ } else {
+ voucherDetail.setSceneCode(SceneCodeEnum.TRANSFER_VOUCHER1.getCode());
+ }
+ if (StringUtils.isNotBlank(planDetails.getBankName())) {
+ voucherDetail.setBankName(planDetails.getBankName());
+ }
+ String useOrgSid = planDetails.getUseOrgSid();
+ SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData();
+ if (null != organizationVo) {
+ paymentVoucher.setUseOrgCode(organizationVo.getOrgCode());
+ }
+ if (StringUtils.isNotBlank(paymentrecord.getPayBankAccount())) {
+ String accountNumber = paymentrecord.getPayBankAccount();
+ paymentVoucher.setBankAccount(paymentrecord.getPayBankAccount());
+ FinManufacturerBank manufacturerBank = finManufacturerBankFeign.selOneByBankNo(accountNumber, useOrgSid).getData();
+ if (null != manufacturerBank) {
+ paymentVoucher.setPayTypeCode(manufacturerBank.getDueBankKey());
+ }
+ }
+ LoanRepaymentSchedule schedule = loanRepaymentScheduleService.fetchBySid(planDetails.getScheduleSid());
+ if (StringUtils.isNotBlank(schedule.getCwDeptNo())) {
+ voucherDetail.setDeptCode(schedule.getCwDeptNo());
+ }
+ BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(planDetails.getBusVinSid()).getData();
+ BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(planDetails.getSalesOrderSid()).getData();
+ if (null != salesOrder) {
+ if (null != busSalesOrderVehicle) {
+ String customerNumber = "";
+ //判断财务系统是否有客户
+ Boolean aBoolean = finKingDeeFeign.customerExistState(busSalesOrderVehicle.getTemporaryNo()).getData();
+ String linkNo = "";
+ BusSalesOrderBorrowerDetailsVo borrowerDetailsVo = busSalesOrderBorrowerFeign.fetchDetailsBySid(busSalesOrderVehicle.getBorrowerSid()).getData();
+ if (!aBoolean) {
+ // List bdCustomers = new ArrayList<>();
+ BdCustomer bdCustomer = new BdCustomer();
+ bdCustomer.setFNumber(busSalesOrderVehicle.getTemporaryNo());
+ bdCustomer.setFShortName(salesOrder.getContractNo());
+ BasePurchaseSystemDetailsVo data = basePurchaseSystemFeign.fetchDetailsByDeptSid(salesOrder.getPurchaseSystemSid()).getData();
+ bdCustomer.setTOrgIds(data.getOrgCode());
+ if (org.apache.commons.lang3.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 resultBean = finKingDeeFeign.draftBdCustomer(bdCustomer);
+ if (resultBean.getSuccess()) {
+ customerNumber = bdCustomer.getFNumber();
+ }
+ } else {
+ customerNumber = busSalesOrderVehicle.getTemporaryNo();
+ }
+ voucherDetail.setCustomerCode(customerNumber);
+ }
+ }
+ 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);
+ RskVoucher rskVoucher = returnPaymentVoucher(paymentVoucher);
+ return rb.success().setData(rskVoucher);
+ }
+ return rb.success();
+ }
+
+ public RskVoucher returnPaymentVoucher(RskPaymentVoucher voucher) {
+ RskVoucher newVoucher = new RskVoucher();
+ List resultDetails = new ArrayList<>();
+ if (com.yxt.common.base.utils.StringUtils.isNotBlank(voucher.getUseOrgCode())) {
+ newVoucher.setAccountBook(voucher.getUseOrgCode());
+ newVoucher.setVoucherNo(voucher.getUseOrgCode());
+ }
+ List voucherDetails = voucher.getVoucherDetails();
+ if (!voucherDetails.isEmpty()) {
+ for (RskPaymentVoucher.PaymentVoucherDetail voucherDetail : voucherDetails) {
+ RskVoucher.VoucherResultDetailDto dto1 = new RskVoucher.VoucherResultDetailDto(); //借方
+ RskVoucher.VoucherResultDetailDto dto2 = new RskVoucher.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);
+ }
+ return newVoucher;
+ }
}