Browse Source

金融财务模板

master
fanzongzhe 1 year ago
parent
commit
2fb3465ca9
  1. 5
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationFeign.java
  2. 5
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationFeignFallback.java
  3. 32
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/rsk/FinRskPdfVehVo.java
  4. 5
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationRest.java
  5. 113
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java
  6. 2126
      anrui-fin/anrui-fin-biz/src/main/resources/ftl/rskjiguang.ftl
  7. 3056
      anrui-fin/anrui-fin-biz/src/main/resources/ftl/rskzhenshi.ftl
  8. 5
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeign.java
  9. 5
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeignFallback.java
  10. 5
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyFallback.java
  11. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyFeign.java
  12. 20
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/MonthlyAccrualSourceLCVo.java
  13. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeign.java
  14. 5
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeignFallback.java
  15. 1
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentRecordVo.java
  16. 5
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyRest.java
  17. 173
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyService.java
  18. 5
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyRest.java
  19. 175
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyService.java
  20. 4
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java
  21. 2
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleService.java
  22. 3
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyMapper.xml
  23. 5
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyRest.java
  24. 191
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java
  25. 2831
      anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/monthApply2.ftl
  26. 2527
      anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/monthBuckle.ftl
  27. 3455
      anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/monthapply.ftl
  28. 3127
      anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/transferPay.ftl
  29. 3
      工作内容需要的文档/单据模板/财务凭证打印模板/代付审批/transferPay.ftl
  30. 48
      工作内容需要的文档/单据模板/财务凭证打印模板/代付审批/代收代付.docx
  31. 2523
      工作内容需要的文档/单据模板/财务凭证打印模板/划扣/monthBuckle.ftl
  32. 37
      工作内容需要的文档/单据模板/财务凭证打印模板/划扣/月还划扣.docx
  33. 3455
      工作内容需要的文档/单据模板/财务凭证打印模板/月还计提/monthapply.ftl
  34. 38
      工作内容需要的文档/单据模板/财务凭证打印模板/月还计提/月还计提.docx
  35. 3958
      工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/repayment1.ftl
  36. 6512
      工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/repayment2.ftl
  37. 9047
      工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/repayment3.ftl
  38. 78
      工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/还款计划1.docx
  39. 143
      工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/还款计划2.docx
  40. 208
      工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/还款计划3.docx
  41. 3
      工作内容需要的文档/单据模板/财务凭证打印模板/金融收款单/rskjiguang.ftl
  42. 3
      工作内容需要的文档/单据模板/财务凭证打印模板/金融收款单/rskzhenshi.ftl
  43. 11
      工作内容需要的文档/单据模板/财务凭证打印模板/金融收款单/金融收款单模板(激光打印机).doc
  44. 10
      工作内容需要的文档/单据模板/财务凭证打印模板/金融收款单/金融收款单模板(针式打印机).doc

5
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationFeign.java

@ -100,6 +100,11 @@ public interface FinCollectionConfirmationFeign {
@ResponseBody @ResponseBody
ResultBean<PdfPath> createPdf(@RequestParam("skdSid") String skdSid, @RequestParam("printerType") String printerType); ResultBean<PdfPath> createPdf(@RequestParam("skdSid") String skdSid, @RequestParam("printerType") String printerType);
@ApiOperation("生成金融收款单pdf")
@PostMapping("/createPdfRsk")
@ResponseBody
ResultBean<PdfPath> createPdfRsk(@RequestParam("skdSid") String skdSid, @RequestParam("printerType") String printerType);
@ApiOperation("重推收款单") @ApiOperation("重推收款单")
@PostMapping("/ctskd") @PostMapping("/ctskd")
@ResponseBody @ResponseBody

5
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationFeignFallback.java

@ -99,6 +99,11 @@ public class FinCollectionConfirmationFeignFallback implements FinCollectionConf
return null; return null;
} }
@Override
public ResultBean<PdfPath> createPdfRsk(String skdSid, String printerType) {
return null;
}
@Override @Override
public ResultBean ctskd(String skdSid) { public ResultBean ctskd(String skdSid) {
return null; return null;

32
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/rsk/FinRskPdfVehVo.java

@ -0,0 +1,32 @@
package com.yxt.anrui.fin.api.fincollectionconfirmation.rsk;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/4/12 16:14
*/
@Data
public class FinRskPdfVehVo {
@ApiModelProperty("序号")
private String id; // 序号
@ApiModelProperty("贷款人")
private String borrowerName; // 贷款人
@ApiModelProperty("资方")
private String bankName; // 资方
@ApiModelProperty("消贷合同号")
private String contractNo; // 消贷合同号
@ApiModelProperty("车架号")
private String vinNo; // 车架号
@ApiModelProperty("收款项目")
private String collPro; // 收款项目
@ApiModelProperty("收款金额")
private String collMoney; // 收款金额
@ApiModelProperty("收款账号")
private String collNum; // 收款账号
@ApiModelProperty("期数")
private String period; // 收款账号
}

5
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationRest.java

@ -122,6 +122,11 @@ public class FinCollectionConfirmationRest implements FinCollectionConfirmationF
return finCollectionConfirmationService.createPdf(skdSid, printerType); return finCollectionConfirmationService.createPdf(skdSid, printerType);
} }
@Override
public ResultBean<PdfPath> createPdfRsk(String skdSid, String printerType) {
return finCollectionConfirmationService.createPdfRsk(skdSid,printerType);
}
@Override @Override
public ResultBean ctskd(String skdSid) { public ResultBean ctskd(String skdSid) {
return finCollectionConfirmationService.ctskd(skdSid); return finCollectionConfirmationService.ctskd(skdSid);

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

@ -110,12 +110,10 @@ import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions;
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutionsFeign; import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutionsFeign;
import com.yxt.anrui.riskcenter.api.loansolutionsdetail.LoanSolutionsDetail; import com.yxt.anrui.riskcenter.api.loansolutionsdetail.LoanSolutionsDetail;
import com.yxt.anrui.riskcenter.api.loansolutionsotherpolicy.LoanSolutionsOtherpolicy; import com.yxt.anrui.riskcenter.api.loansolutionsotherpolicy.LoanSolutionsOtherpolicy;
import com.yxt.common.base.config.component.DocPdfComponent;
import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.HanZiConverterPinYin; import com.yxt.common.base.utils.*;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.TransformMoney;
import com.yxt.common.base.utils.WordUtils;
import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo; import com.yxt.common.core.vo.PagerVo;
@ -127,6 +125,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@ -209,6 +209,9 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
private FinPaymentrecordService finPaymentrecordService; private FinPaymentrecordService finPaymentrecordService;
@Autowired @Autowired
private LoanPushFundHistoryFeign loanPushFundHistoryFeign; private LoanPushFundHistoryFeign loanPushFundHistoryFeign;
@Autowired
private DocPdfComponent docPdfComponent;
private QueryWrapper<FinCollectionConfirmation> createQueryWrapper(FinCollectionConfirmationQuery query) { private QueryWrapper<FinCollectionConfirmation> createQueryWrapper(FinCollectionConfirmationQuery query) {
// todo: 这里根据具体业务调整查询条件 // todo: 这里根据具体业务调整查询条件
// 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName()));
@ -3180,6 +3183,102 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
return rb.success().setData(pdfPath); return rb.success().setData(pdfPath);
} }
public ResultBean<PdfPath> createPdfRsk(String skdSid, String printerType) {
ResultBean rb = ResultBean.fireFail();
PdfPath pdfPath = new PdfPath();
//获取收款单信息
FinCollectionConfirmation finCollectionConfirmationDetailsVo = fetchBySid(skdSid);
//获取车辆入库单车辆信息查询
List<FinSelectedReceivablesDetailedVo> finSelectedReceivablesDetaileds = finSelectedReceivablesDetailedService.fetchByCillSid(finCollectionConfirmationDetailsVo.getSid());
Map<String, Object> dataMap = new HashMap();
dataMap.put("collDate", finCollectionConfirmationDetailsVo.getCollectionDate());
dataMap.put("payee", finCollectionConfirmationDetailsVo.getPayerName());
dataMap.put("billNo", finCollectionConfirmationDetailsVo.getBillNo());
dataMap.put("settleType", finCollectionConfirmationDetailsVo.getCollectionTypeValue());
dataMap.put("remarks", finCollectionConfirmationDetailsVo.getRemarks());
List<FinRskPdfVehVo> finCollectionConfirmationMaterials = new ArrayList<>();
int id = 0;
//循环获取车辆信息
for (FinSelectedReceivablesDetailedVo finSelectedReceivablesDetailedVo : finSelectedReceivablesDetaileds) {
String planSid = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (finSelectedReceivablesDetailedVo.getReceivablesName().equals("月还")) {
planSid = finSelectedReceivablesDetailedVo.getReceivablesSid();
} else {
FinUncollectedReceivablesDetailedJR jr = finUncollectedReceivablesDetailedJRService.fetchBySid(finSelectedReceivablesDetailedVo.getReceivablesSid());
if (jr != null) {
planSid = jr.getBusSid();
}
}
LoanRepaymentPlanDetails plan = loanRepaymentPlanDetailsFeign.fetchDetails(planSid).getData();
if (null != plan) {
FinRskPdfVehVo r = new FinRskPdfVehVo();
id = id + 1;
if (StringUtils.isNotBlank(plan.getVinNo())) {
r.setVinNo(plan.getVinNo());
}
r.setId(String.valueOf(id));
if (StringUtils.isNotBlank(plan.getBorrowerName())) {
r.setBorrowerName(plan.getBorrowerName());
}
if (StringUtils.isNotBlank(plan.getBankName())) {
r.setBankName(plan.getBankName());
}
if (StringUtils.isNotBlank(plan.getLoanContractNo())) {
r.setContractNo(plan.getLoanContractNo());
}
if (StringUtils.isNotBlank(plan.getPeriod())) {
r.setPeriod(plan.getPeriod());
}
r.setCollPro(finSelectedReceivablesDetailedVo.getReceivablesName());
r.setCollMoney(finSelectedReceivablesDetailedVo.getSubscriptionMoney());
r.setCollNum(finCollectionConfirmationDetailsVo.getCollectionBankNum());
finCollectionConfirmationMaterials.add(r);
}
}
dataMap.put("wlList", finCollectionConfirmationMaterials);
dataMap.put("zcollMoney", finCollectionConfirmationDetailsVo.getCollectionMoney().toString());
String tPriceDX = TransformMoney.transform(finCollectionConfirmationDetailsVo.getCollectionMoney().toString());
dataMap.put("tPriceDX", tPriceDX);
dataMap.put("makeName", finCollectionConfirmationDetailsVo.getCreateByName() + DateUtil.formatDate(new Date()));
dataMap.put("confirmName", finCollectionConfirmationDetailsVo.getConfirmName() + finCollectionConfirmationDetailsVo.getConfirmDate());
String temp = "/template/";
String targetPath = docPdfComponent.getUploadTemplateUrl();
try {
//获取模板
String streamPath = "";
if (printerType.equals("针孔式打印机")) {
streamPath = "ftl/rskzhenshi.ftl";
} else if (printerType.equals("激光打印机")) {
streamPath = "ftl/rskjiguang.ftl";
}
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(streamPath);
//生成word文件名
String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
long seconds = System.currentTimeMillis();
String typeName = dateStr + seconds + ".doc";
File file = new File(targetPath + "templateVouchers" + seconds + ".ftl");
File dir = new File(targetPath);
WordConvertUtils.inputStreamToFile(inputStream, file);
WordConvertUtils.creatWord1(dataMap, file, targetPath, typeName, dir);
//新生成的word路径
String wordPath = targetPath + typeName;
String pdfName = "收款单_" + dateStr + seconds + ".pdf";
WordConvertUtils.doc2pdf(wordPath, targetPath, pdfName);
pdfPath.setPdfPath(temp + pdfName);
} catch (NoClassDefFoundError e) {
e.printStackTrace();
}
String downNum = finCollectionConfirmationDetailsVo.getDownNum();
if (StringUtils.isBlank(downNum)) {
downNum = "1";
} else {
downNum = String.valueOf((Integer.parseInt(downNum) + 1));
}
baseMapper.updateDown(skdSid, downNum);
return rb.success().setData(pdfPath);
}
public ResultBean updateVin(String vinNo, String contractNo, String temporaryNo) { public ResultBean updateVin(String vinNo, String contractNo, String temporaryNo) {
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
int i = baseMapper.updateVin(vinNo, contractNo, temporaryNo); int i = baseMapper.updateVin(vinNo, contractNo, temporaryNo);
@ -3935,11 +4034,11 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
CollectionVoucher.CollectionVoucherDetail d = getFundVoucher(v, collectionDate, planDetails); CollectionVoucher.CollectionVoucherDetail d = getFundVoucher(v, collectionDate, planDetails);
if (null != d) { if (null != d) {
CollectionVoucher.CollectionVoucherDetail v1 = new CollectionVoucher.CollectionVoucherDetail(); CollectionVoucher.CollectionVoucherDetail v1 = new CollectionVoucher.CollectionVoucherDetail();
BeanUtil.copyProperties(d,v1); BeanUtil.copyProperties(d, v1);
v1.setSceneCode(SceneCodeEnum.FUND_VOUCHER1.getCode()); v1.setSceneCode(SceneCodeEnum.FUND_VOUCHER1.getCode());
voucherDetails.add(v1); voucherDetails.add(v1);
CollectionVoucher.CollectionVoucherDetail v2 = new CollectionVoucher.CollectionVoucherDetail(); CollectionVoucher.CollectionVoucherDetail v2 = new CollectionVoucher.CollectionVoucherDetail();
BeanUtil.copyProperties(d,v2); BeanUtil.copyProperties(d, v2);
v2.setSceneCode(SceneCodeEnum.FUND_VOUCHER2.getCode()); v2.setSceneCode(SceneCodeEnum.FUND_VOUCHER2.getCode());
collectionAfterVoucherDetails.add(v2); collectionAfterVoucherDetails.add(v2);
} }
@ -5661,4 +5760,6 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
vo.setDownLoadUrl(fils); vo.setDownLoadUrl(fils);
return rb.success().setData(vo); return rb.success().setData(vo);
} }
} }

2126
anrui-fin/anrui-fin-biz/src/main/resources/ftl/rskjiguang.ftl

File diff suppressed because it is too large

3056
anrui-fin/anrui-fin-biz/src/main/resources/ftl/rskzhenshi.ftl

File diff suppressed because it is too large

5
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeign.java

@ -50,6 +50,11 @@ public interface LoanBuckleApplyFeign {
@ResponseBody @ResponseBody
public ResultBean<LoanBuckleApplyInit> buckleDetails(@RequestParam("sid") String sid); public ResultBean<LoanBuckleApplyInit> buckleDetails(@RequestParam("sid") String sid);
@ApiOperation("下载月还划扣审批dpf")
@PostMapping("/buckleCreatePdf")
public ResultBean<String> buckleCreatePdf(@RequestParam("sid") String sid);
@ApiOperation("批量删除") @ApiOperation("批量删除")
@DeleteMapping("/deleteBySids") @DeleteMapping("/deleteBySids")
@ResponseBody @ResponseBody

5
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeignFallback.java

@ -36,6 +36,11 @@ public class LoanBuckleApplyFeignFallback implements LoanBuckleApplyFeign {
return null; return null;
} }
@Override
public ResultBean<String> buckleCreatePdf(String sid) {
return null;
}
@Override @Override
public ResultBean deleteBySids(String[] sids) { public ResultBean deleteBySids(String[] sids) {
return null; return null;

5
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyFallback.java

@ -41,6 +41,11 @@ public class LoanMonthlyAccrualApplyFallback implements LoanMonthlyAccrualApplyF
return null; return null;
} }
@Override
public ResultBean<String> accrualCreatePdf(String sid) {
return null;
}
@Override @Override
public ResultBean submitRecordApplication(SubmitAccrualDto dto) { public ResultBean submitRecordApplication(SubmitAccrualDto dto) {
return null; return null;

4
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyFeign.java

@ -53,6 +53,10 @@ public interface LoanMonthlyAccrualApplyFeign {
@ResponseBody @ResponseBody
public ResultBean deleteBySids(@RequestBody String[] sids); public ResultBean deleteBySids(@RequestBody String[] sids);
@ApiOperation("下载月还审批dpf")
@PostMapping("/accrualCreatePdf")
public ResultBean<String> accrualCreatePdf(@RequestParam("sid") String sid);
//---------------------------流程--------------------------------------- //---------------------------流程---------------------------------------
@ApiOperation("提交") @ApiOperation("提交")

20
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/MonthlyAccrualSourceLCVo.java

@ -0,0 +1,20 @@
package com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/4/12 10:18
*/
@Data
public class MonthlyAccrualSourceLCVo {
@ApiModelProperty(value = "审批人姓名")
private String name;
@ApiModelProperty(value = "审批人意见")
private String comment;
@ApiModelProperty(value = "审批时间")
private String spsj;
}

4
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeign.java

@ -43,6 +43,10 @@ public interface LoanTransferPaymentApplyFeign {
@ResponseBody @ResponseBody
public ResultBean<String> saveTransferPayment(@RequestBody LoanTransferPaymentApplyDto dto); public ResultBean<String> saveTransferPayment(@RequestBody LoanTransferPaymentApplyDto dto);
@ApiOperation("下载月还划扣审批dpf")
@PostMapping("/paymentCreatePdf")
public ResultBean<String> paymentCreatePdf(@RequestParam("sid") String sid);
@ApiOperation("详情查看") @ApiOperation("详情查看")
@GetMapping("/paymentDetails") @GetMapping("/paymentDetails")
@ResponseBody @ResponseBody

5
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeignFallback.java

@ -30,6 +30,11 @@ public class LoanTransferPaymentApplyFeignFallback implements LoanTransferPaymen
return null; return null;
} }
@Override
public ResultBean<String> paymentCreatePdf(String sid) {
return null;
}
@Override @Override
public ResultBean<LoanTransferPaymentApplyInit> paymentDetails(String sid) { public ResultBean<LoanTransferPaymentApplyInit> paymentDetails(String sid) {
return null; return null;

1
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentRecordVo.java

@ -43,5 +43,6 @@ public class LoanTransferPaymentRecordVo {
@ApiModelProperty("转付账户账号") @ApiModelProperty("转付账户账号")
private String accountNumber; private String accountNumber;
private String vinNo; private String vinNo;
private String salesDept;
} }

5
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyRest.java

@ -51,6 +51,11 @@ public class LoanBuckleApplyRest implements LoanBuckleApplyFeign {
return loanBuckleApplyService.buckleDetails(sid); return loanBuckleApplyService.buckleDetails(sid);
} }
@Override
public ResultBean<String> buckleCreatePdf(String sid) {
return loanBuckleApplyService.buckleCreatePdf(sid);
}
@Override @Override
public ResultBean deleteBySids(String[] sids) { public ResultBean deleteBySids(String[] sids) {
return loanBuckleApplyService.deleteBySids(sids); return loanBuckleApplyService.deleteBySids(sids);

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

@ -2,6 +2,7 @@ package com.yxt.anrui.riskcenter.biz.loanbuckleapply;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -11,19 +12,15 @@ import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemFeign;
import com.yxt.anrui.base.common.enums.BillTypeEnum; import com.yxt.anrui.base.common.enums.BillTypeEnum;
import com.yxt.anrui.base.common.utils.Rule; import com.yxt.anrui.base.common.utils.Rule;
import com.yxt.anrui.base.common.utils.domain.BillNo; import com.yxt.anrui.base.common.utils.domain.BillNo;
import com.yxt.anrui.buscenter.api.buscenterfile.BuscenterFile;
import com.yxt.anrui.buscenter.api.buscenterfile.BuscenterFileEnum;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder; import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign; import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign;
import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerDetailsVo; import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerDetailsVo;
import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerFeign; import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerFeign;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle; import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign; import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign;
import com.yxt.anrui.buscenter.api.bussolutionschange.BusSolutionsChangeFiles;
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign; import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign;
import com.yxt.anrui.fin.api.kingdee.bdcustomer.BdCustomer; 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.GeneralVoucher;
import com.yxt.anrui.fin.api.kingdee.voucher.SceneCodeEnum;
import com.yxt.anrui.flowable.api.flow.FlowableFeign; import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowDelegateQuery; import com.yxt.anrui.flowable.api.flow2.FlowDelegateQuery;
@ -33,6 +30,7 @@ import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo; import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum; import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.flow.PCHistTaskListAndCommentList;
import com.yxt.anrui.portal.api.sysorganization.*; import com.yxt.anrui.portal.api.sysorganization.*;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
@ -47,7 +45,7 @@ import com.yxt.anrui.riskcenter.api.loanbuckleapplyrecord.LoanBuckleApplyRecord;
import com.yxt.anrui.riskcenter.api.loanbuckleplanhistory.LoanBucklePlanHistory; import com.yxt.anrui.riskcenter.api.loanbuckleplanhistory.LoanBucklePlanHistory;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFile; import com.yxt.anrui.riskcenter.api.loanfile.LoanFile;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum; import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecord; import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.MonthlyAccrualSourceLCVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory; import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryRecordVo; import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryRecordVo;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanPlanDetailsVoForLateVoucher; import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanPlanDetailsVoForLateVoucher;
@ -57,26 +55,36 @@ import com.yxt.anrui.riskcenter.biz.loanbuckleplanhistory.LoanBucklePlanHistoryS
import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService; import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService; import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService; import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
import com.yxt.common.base.config.component.DocPdfComponent;
import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.ConstantUtils;
import com.yxt.common.base.utils.PagerUtil; 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.query.PagerQuery;
import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo; 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.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowVo; import com.yxt.messagecenter.api.message.MessageFlowVo;
import com.yxt.messagecenter.api.message.MessageFlowableQuery; 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 org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.*; import java.util.concurrent.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static java.util.Comparator.comparing;
/** /**
* @description: * @description:
* @author: fzz * @author: fzz
@ -85,6 +93,12 @@ import java.util.stream.Collectors;
@Service @Service
public class LoanBuckleApplyService extends MybatisBaseService<LoanBuckleApplyMapper, LoanBuckleApply> { public class LoanBuckleApplyService extends MybatisBaseService<LoanBuckleApplyMapper, LoanBuckleApply> {
@Autowired
private MessageListFeign messageListFeign;
@Autowired
private com.yxt.anrui.portal.api.flow.FlowableFeign flowableFeignPro;
@Autowired
private DocPdfComponent docPdfComponent;
@Autowired @Autowired
private MessageFeign messageFeign; private MessageFeign messageFeign;
@Autowired @Autowired
@ -1216,4 +1230,153 @@ public class LoanBuckleApplyService extends MybatisBaseService<LoanBuckleApplyMa
} }
public ResultBean<String> buckleCreatePdf(String sid) {
ResultBean rb = ResultBean.fireFail();
String finalPath = "";
String filePath = "";
Map<String, Object> dataMap = new HashMap();
List<Map<String, Object>> newList = new ArrayList<>();
LoanBuckleApply data = fetchBySid(sid);
if (null != data) {
List<LoanFile> files = loanFileService.selectByLinkSid(data.getSid(), LoanFileEnum.BUCKLE_APPLY.getAttachType());
if (!files.isEmpty()) {
List<String> stringList = new ArrayList<>();
for (LoanFile file : files) {
if (StringUtils.isNotBlank(file.getFileName()) && StringUtils.isNotBlank(file.getFileType())) {
stringList.add(file.getFileName() + "." + file.getFileType());
}
}
if (!stringList.isEmpty()) {
filePath = String.join(",", stringList);
}
}
if (null != data.getApplyDate()) {
dataMap.put("createTime", DateUtil.formatDate(data.getApplyDate()));
}
if (StringUtils.isNotBlank(data.getUseOrgName())) {
dataMap.put("company", data.getUseOrgName());
}
if (StringUtils.isNotBlank(data.getApplyName())) {
dataMap.put("applyName", data.getApplyName());
}
if (StringUtils.isNotBlank(data.getDept())) {
dataMap.put("dept", data.getDept());
}
if (StringUtils.isNotBlank(data.getBillNo())) {
dataMap.put("billNo", data.getBillNo());
}
if (StringUtils.isNotBlank(data.getRemarks())) {
dataMap.put("remarks", data.getRemarks());
}
if (StringUtils.isNotBlank(filePath)) {
dataMap.put("filePath", filePath);
}
//获取审批记录
if (StringUtils.isNotBlank(data.getProcInstId())) {
List<PCHistTaskListAndCommentList> flowRecordVo = flowableFeignPro.flowRecordAndComment(data.getProcInstId(), "1").getData();
List<MonthlyAccrualSourceLCVo> sourceLCVos = new ArrayList<>();
for (PCHistTaskListAndCommentList flowTask : flowRecordVo) {
if (flowTask.getFlowableRecordVo() != null) {
Map<String, Object> flowableRecordVo = flowTask.getFlowableRecordVo();
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
List<Map<String, Object>> taskUserInfos = ConstantUtils.getListData(flowableRecordVo, "taskUserInfos");
Map<String, Object> comment = ConstantUtils.getMap(flowableRecordVo, "comment");
String assigneeName = (String) taskUserInfos.get(0).get("assigneeName");
String comment1 = (String) comment.get("comment");
sourceLCVo.setName(assigneeName);
sourceLCVo.setComment(comment1);
sourceLCVo.setSpsj(flowableRecordVo.get("finishTime").toString());
sourceLCVos.add(sourceLCVo);
} else {
Map<String, Object> processCommentVo = flowTask.getProcessCommentVo();
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
sourceLCVo.setName(processCommentVo.get("title").toString());
sourceLCVo.setComment(processCommentVo.get("content").toString());
sourceLCVo.setSpsj(processCommentVo.get("time").toString());
sourceLCVos.add(sourceLCVo);
}
}
List<Message> messages = messageFeign.selectByBusinessSid(data.getSid()).getData();
if (messages.size() > 0) {
for (Message message : messages) {
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
String receiverNames = "";
List<MessageList> messageLists = messageListFeign.fetchByMainSid(message.getSid()).getData();
if (messageLists.size() > 0) {
for (MessageList messageList : messageLists) {
receiverNames = receiverNames + messageList.getReceiverName() + ",";
}
}
sourceLCVo.setName("系统");
sourceLCVo.setComment("抄送 " + receiverNames.substring(0, receiverNames.lastIndexOf(",")));
sourceLCVo.setSpsj(DateUtil.format(message.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
sourceLCVos.add(sourceLCVo);
}
}
sourceLCVos.sort(comparing(MonthlyAccrualSourceLCVo::getSpsj));
dataMap.put("lcList", sourceLCVos);
}
List<LoanBuckleApplyRecord> records = loanBuckleApplyRecordService.selByMainSid(sid);
if (!records.isEmpty()) {
int sortNo = 1;
for (LoanBuckleApplyRecord applyRecord : records) {
Map<String, Object> map = new HashMap<>();
String recordSid = applyRecord.getRepaymentHistorySid();
LoanRepaymentPlanDetails details = loanRepaymentPlanDetailsService.fetchBySid(recordSid);
if (null != details) {
map.put("sortNo", String.valueOf(sortNo++));
if (StringUtils.isNotBlank(details.getLoanContractNo())) {
map.put("loanNo", details.getLoanContractNo());
}
if (StringUtils.isNotBlank(details.getVinNo())) {
map.put("vinNo", details.getVinNo());
}
if (StringUtils.isNotBlank(details.getBankName())) {
map.put("bankName", details.getBankName());
}
if (StringUtils.isNotBlank(details.getBankContractNo())) {
map.put("bankNo", details.getBankContractNo());
}
if (StringUtils.isNotBlank(details.getBorrowerName())) {
map.put("borrowerName", details.getBorrowerName());
}
if (StringUtils.isNotBlank(details.getPeriod())) {
map.put("period", details.getPeriod());
}
if (null != applyRecord.getActualMoney()) {
map.put("dueMoney", applyRecord.getActualMoney());
}
if (StringUtils.isNotBlank(details.getDept())) {
map.put("saleDept", details.getDept());
}
}
newList.add(map);
}
}
dataMap.put("newList", newList);
String temp = "/template/";
String targetPath = docPdfComponent.getUploadTemplateUrl();
try {
//获取模板
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/vouchers/monthBuckle.ftl");
//生成word文件名
String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
long seconds = System.currentTimeMillis();
String typeName = dateStr + seconds + ".doc";
File file = new File(targetPath + "templateVouchers" + seconds + ".ftl");
File dir = new File(targetPath);
WordConvertUtils.inputStreamToFile(inputStream, file);
WordConvertUtils.creatWord1(dataMap, file, targetPath, typeName, dir);
//新生成的word路径
String wordPath = targetPath + typeName;
String pdfName = "月还划扣审批" + dateStr + seconds + ".pdf";
WordConvertUtils.doc2pdf(wordPath, targetPath, pdfName);
finalPath = temp + pdfName;
} catch (NoClassDefFoundError e) {
e.printStackTrace();
finalPath = targetPath;
}
}
return rb.success().setData(finalPath);
}
} }

5
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyRest.java

@ -51,6 +51,11 @@ public class LoanMonthlyAccrualApplyRest implements LoanMonthlyAccrualApplyFeign
return loanMonthlyAccrualApplyService.deleteBySids(sids); return loanMonthlyAccrualApplyService.deleteBySids(sids);
} }
@Override
public ResultBean<String> accrualCreatePdf(String sid) {
return loanMonthlyAccrualApplyService.accrualCreatePdf(sid);
}
@Override @Override
public ResultBean submitRecordApplication(SubmitAccrualDto dto) { public ResultBean submitRecordApplication(SubmitAccrualDto dto) {
return loanMonthlyAccrualApplyService.submitRecordApplication(dto); return loanMonthlyAccrualApplyService.submitRecordApplication(dto);

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

@ -30,6 +30,7 @@ import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo; import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum; import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.flow.PCHistTaskListAndCommentList;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign; import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo; import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
@ -47,28 +48,34 @@ import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecordService; import com.yxt.anrui.riskcenter.biz.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecordService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService; import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService; import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
import com.yxt.common.base.config.component.DocPdfComponent;
import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService; 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.DateUtils;
import com.yxt.common.base.utils.PagerUtil; 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.query.PagerQuery;
import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo; import com.yxt.common.core.vo.PagerVo;
import com.yxt.messagecenter.api.message.MessageFeign; import com.yxt.messagecenter.api.message.*;
import com.yxt.messagecenter.api.message.MessageFlowVo; import com.yxt.messagecenter.api.messagelist.MessageList;
import com.yxt.messagecenter.api.message.MessageFlowableQuery; import com.yxt.messagecenter.api.messagelist.MessageListFeign;
import com.yxt.messagecenter.api.message.PushMessageQuery;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.*; import java.util.concurrent.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static java.util.Comparator.comparing;
/** /**
* @description: * @description:
* @author: fzz * @author: fzz
@ -76,7 +83,10 @@ import java.util.stream.Collectors;
**/ **/
@Service @Service
public class LoanMonthlyAccrualApplyService extends MybatisBaseService<LoanMonthlyAccrualApplyMapper, LoanMonthlyAccrualApply> { public class LoanMonthlyAccrualApplyService extends MybatisBaseService<LoanMonthlyAccrualApplyMapper, LoanMonthlyAccrualApply> {
@Autowired
private DocPdfComponent docPdfComponent;
@Autowired
private com.yxt.anrui.portal.api.flow.FlowableFeign flowableFeignPro;
@Autowired @Autowired
private MessageFeign messageFeign; private MessageFeign messageFeign;
@Autowired @Autowired
@ -111,6 +121,8 @@ public class LoanMonthlyAccrualApplyService extends MybatisBaseService<LoanMonth
private BusSalesOrderFeign busSalesOrderFeign; private BusSalesOrderFeign busSalesOrderFeign;
@Autowired @Autowired
private BasePurchaseSystemFeign basePurchaseSystemFeign; private BasePurchaseSystemFeign basePurchaseSystemFeign;
@Autowired
private MessageListFeign messageListFeign;
public ResultBean<LoanMonthlyAccrualApplyInit> accrualInit(String orgPath) { public ResultBean<LoanMonthlyAccrualApplyInit> accrualInit(String orgPath) {
ResultBean<LoanMonthlyAccrualApplyInit> rb = ResultBean.fireFail(); ResultBean<LoanMonthlyAccrualApplyInit> rb = ResultBean.fireFail();
@ -1032,4 +1044,157 @@ public class LoanMonthlyAccrualApplyService extends MybatisBaseService<LoanMonth
} }
return rb.success().setData(vo); return rb.success().setData(vo);
} }
public ResultBean<String> accrualCreatePdf(String sid) {
ResultBean rb = ResultBean.fireFail();
String finalPath = "";
String filePath = "";
Map<String, Object> dataMap = new HashMap();
List<Map<String, Object>> newList = new ArrayList<>();
LoanMonthlyAccrualApply data = fetchBySid(sid);
if (null != data) {
List<LoanFile> files = loanFileService.selectByLinkSid(data.getSid(), LoanFileEnum.ACCRUALAPPLY.getAttachType());
if (!files.isEmpty()) {
List<String> stringList = new ArrayList<>();
for (LoanFile file : files) {
if (StringUtils.isNotBlank(file.getFileName()) && StringUtils.isNotBlank(file.getFileType())) {
stringList.add(file.getFileName() + "." + file.getFileType());
}
}
if (!stringList.isEmpty()) {
filePath = String.join(",", stringList);
}
}
if (null != data.getApplyDate()) {
dataMap.put("createTime", DateUtil.formatDate(data.getApplyDate()));
}
if (StringUtils.isNotBlank(data.getUseOrgName())) {
dataMap.put("company", data.getUseOrgName());
}
if (StringUtils.isNotBlank(data.getApplyName())) {
dataMap.put("applyName", data.getApplyName());
}
if (StringUtils.isNotBlank(data.getDept())) {
dataMap.put("dept", data.getDept());
}
if (StringUtils.isNotBlank(data.getBillNo())) {
dataMap.put("billNo", data.getBillNo());
}
if (StringUtils.isNotBlank(data.getRemarks())) {
dataMap.put("remarks", data.getRemarks());
}
if (StringUtils.isNotBlank(filePath)) {
dataMap.put("filePath", filePath);
}
//获取审批记录
if (StringUtils.isNotBlank(data.getProcInstId())) {
List<PCHistTaskListAndCommentList> flowRecordVo = flowableFeignPro.flowRecordAndComment(data.getProcInstId(), "1").getData();
List<MonthlyAccrualSourceLCVo> sourceLCVos = new ArrayList<>();
for (PCHistTaskListAndCommentList flowTask : flowRecordVo) {
if (flowTask.getFlowableRecordVo() != null) {
Map<String, Object> flowableRecordVo = flowTask.getFlowableRecordVo();
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
List<Map<String, Object>> taskUserInfos = ConstantUtils.getListData(flowableRecordVo, "taskUserInfos");
Map<String, Object> comment = ConstantUtils.getMap(flowableRecordVo, "comment");
String assigneeName = (String) taskUserInfos.get(0).get("assigneeName");
String comment1 = (String) comment.get("comment");
sourceLCVo.setName(assigneeName);
sourceLCVo.setComment(comment1);
sourceLCVo.setSpsj(flowableRecordVo.get("finishTime").toString());
sourceLCVos.add(sourceLCVo);
} else {
Map<String, Object> processCommentVo = flowTask.getProcessCommentVo();
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
sourceLCVo.setName(processCommentVo.get("title").toString());
sourceLCVo.setComment(processCommentVo.get("content").toString());
sourceLCVo.setSpsj(processCommentVo.get("time").toString());
sourceLCVos.add(sourceLCVo);
}
}
List<Message> messages = messageFeign.selectByBusinessSid(data.getSid()).getData();
if (messages.size() > 0) {
for (Message message : messages) {
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
String receiverNames = "";
List<MessageList> messageLists = messageListFeign.fetchByMainSid(message.getSid()).getData();
if (messageLists.size() > 0) {
for (MessageList messageList : messageLists) {
receiverNames = receiverNames + messageList.getReceiverName() + ",";
}
}
sourceLCVo.setName("系统");
sourceLCVo.setComment("抄送 " + receiverNames.substring(0, receiverNames.lastIndexOf(",")));
sourceLCVo.setSpsj(DateUtil.format(message.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
sourceLCVos.add(sourceLCVo);
}
}
sourceLCVos.sort(comparing(MonthlyAccrualSourceLCVo::getSpsj));
dataMap.put("lcList", sourceLCVos);
}
List<LoanMonthlyAccrualRecord> records = loanMonthlyAccrualRecordService.selByMainSid(sid);
if (!records.isEmpty()) {
int sortNo = 1;
for (LoanMonthlyAccrualRecord accrualRecord : records) {
Map<String, Object> map = new HashMap<>();
String recordSid = accrualRecord.getRecordSid();
LoanRepaymentPlanDetails details = loanRepaymentPlanDetailsService.fetchBySid(recordSid);
if (null != details) {
map.put("sortNo", String.valueOf(sortNo++));
if (StringUtils.isNotBlank(details.getLoanContractNo())) {
map.put("loanNo", details.getLoanContractNo());
}
if (StringUtils.isNotBlank(details.getVinNo())) {
map.put("vinNo", details.getVinNo());
}
if (StringUtils.isNotBlank(details.getBankName())) {
map.put("bankName", details.getBankName());
}
if (StringUtils.isNotBlank(details.getBankContractNo())) {
map.put("bankNo", details.getBankContractNo());
}
if (StringUtils.isNotBlank(details.getBorrowerName())) {
map.put("borrowerName", details.getBorrowerName());
}
if (StringUtils.isNotBlank(details.getPeriod())) {
map.put("period", details.getPeriod());
}
if (null != details.getDueDate()) {
map.put("dueDate", DateUtil.formatDate(details.getDueDate()));
}
if (null != details.getDueMoney()) {
map.put("dueMoney", details.getDueMoney());
}
if (StringUtils.isNotBlank(details.getDept())) {
map.put("saleDept", details.getDept());
}
}
newList.add(map);
}
}
dataMap.put("newList", newList);
String temp = "/template/";
String targetPath = docPdfComponent.getUploadTemplateUrl();
try {
//获取模板
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/vouchers/monthapply.ftl");
//生成word文件名
String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
long seconds = System.currentTimeMillis();
String typeName = dateStr + seconds + ".doc";
File file = new File(targetPath + "templateVouchers" + seconds + ".ftl");
File dir = new File(targetPath);
WordConvertUtils.inputStreamToFile(inputStream, file);
WordConvertUtils.creatWord1(dataMap, file, targetPath, typeName, dir);
//新生成的word路径
String wordPath = targetPath + typeName;
String pdfName = "月还计提审批" + dateStr + seconds + ".pdf";
WordConvertUtils.doc2pdf(wordPath, targetPath, pdfName);
finalPath = temp + pdfName;
} catch (NoClassDefFoundError e) {
e.printStackTrace();
finalPath = targetPath;
}
}
return rb.success().setData(finalPath);
}
} }

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

@ -935,7 +935,9 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
qw.ne("h.buckleKey", "002"); qw.ne("h.buckleKey", "002");
qw.ne("h.buckleKey", "003"); qw.ne("h.buckleKey", "003");
qw.eq("h.updateState", "1"); qw.eq("h.updateState", "1");
qw.notIn("h.sid", selNotRuleForBuckSids); if (!selNotRuleForBuckSids.isEmpty()) {
qw.notIn("h.sid", selNotRuleForBuckSids);
}
List<RepaymentHistoryVoForBuckle> histories = baseMapper.selbuckleNewInitList(qw); List<RepaymentHistoryVoForBuckle> histories = baseMapper.selbuckleNewInitList(qw);
Map<String, BigDecimal> countMoney = new HashMap<>(); Map<String, BigDecimal> countMoney = new HashMap<>();
Map<String, List<String>> sids = new HashMap<>(); Map<String, List<String>> sids = new HashMap<>();

2
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleService.java

@ -1888,7 +1888,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
} else if (pdfList.size() >= 3) { } else if (pdfList.size() >= 3) {
for (int i = 0; i < num; i++) { for (int i = 0; i < num; i++) {
List<LoanVoucherPdf> newPdfList = new ArrayList<>(); List<LoanVoucherPdf> newPdfList = new ArrayList<>();
if (i == num - 1) { if (i == num - 1 && num != 1) {
String page = ""; String page = "";
if (c == 1) { if (c == 1) {
page = "1"; page = "1";

3
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyMapper.xml

@ -69,7 +69,8 @@
r.accountType, r.accountType,
r.accountTypeKey, r.accountTypeKey,
r.account, r.account,
r.accountNumber r.accountNumber,
p.dept as salesDept
FROM loan_repayment_history AS h FROM loan_repayment_history AS h
LEFT JOIN loan_repayment_plan_details AS p ON h.planDetailSid = p.sid LEFT JOIN loan_repayment_plan_details AS p ON h.planDetailSid = p.sid
LEFT JOIN loan_transfer_payment_record AS r ON h.sid = r.repaymentHistorySid LEFT JOIN loan_transfer_payment_record AS r ON h.sid = r.repaymentHistorySid

5
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyRest.java

@ -44,6 +44,11 @@ public class LoanTransferPaymentApplyRest implements LoanTransferPaymentApplyFei
return loanTransferPaymentApplyService.saveTransferPayment(dto); return loanTransferPaymentApplyService.saveTransferPayment(dto);
} }
@Override
public ResultBean<String> paymentCreatePdf(String sid) {
return loanTransferPaymentApplyService.paymentCreatePdf(sid);
}
@Override @Override
public ResultBean<LoanTransferPaymentApplyInit> paymentDetails(String sid) { public ResultBean<LoanTransferPaymentApplyInit> paymentDetails(String sid) {
return loanTransferPaymentApplyService.paymentDetails(sid); return loanTransferPaymentApplyService.paymentDetails(sid);

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

@ -2,6 +2,7 @@ package com.yxt.anrui.riskcenter.biz.loantransferpaymentapply;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.math.Money; import cn.hutool.core.math.Money;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -37,6 +38,7 @@ import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo; import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum; import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.flow.PCHistTaskListAndCommentList;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign; import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo; import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
@ -44,12 +46,14 @@ import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery; import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign; import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo; import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApply;
import com.yxt.anrui.riskcenter.api.loanbuckleapplyrecord.LoanBuckleApplyRecord; import com.yxt.anrui.riskcenter.api.loanbuckleapplyrecord.LoanBuckleApplyRecord;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFile; import com.yxt.anrui.riskcenter.api.loanfile.LoanFile;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum; import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.AppAccrualRecordVo; import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.AppAccrualRecordVo;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.AppMonthAccrualDetailsVo; import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.AppMonthAccrualDetailsVo;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.LoanMonthlyAccrualApply; import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.LoanMonthlyAccrualApply;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.MonthlyAccrualSourceLCVo;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecord; import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecord;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory; import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails; import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
@ -60,21 +64,29 @@ import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService; import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService; import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
import com.yxt.anrui.riskcenter.biz.loantransferpaymentrecord.LoanTransferPaymentRecordService; import com.yxt.anrui.riskcenter.biz.loantransferpaymentrecord.LoanTransferPaymentRecordService;
import com.yxt.common.base.config.component.DocPdfComponent;
import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.ConstantUtils;
import com.yxt.common.base.utils.PagerUtil; 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.query.PagerQuery;
import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo; 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.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowVo; import com.yxt.messagecenter.api.message.MessageFlowVo;
import com.yxt.messagecenter.api.message.MessageFlowableQuery; import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import com.yxt.messagecenter.api.messagelist.MessageList;
import com.yxt.messagecenter.api.messagelist.MessageListFeign;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
@ -82,6 +94,8 @@ import java.util.concurrent.*;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static java.util.Comparator.comparing;
/** /**
* @description: * @description:
* @author: fzz * @author: fzz
@ -90,6 +104,12 @@ import java.util.stream.Collectors;
@Service @Service
public class LoanTransferPaymentApplyService extends MybatisBaseService<LoanTransferPaymentApplyMapper, LoanTransferPaymentApply> { public class LoanTransferPaymentApplyService extends MybatisBaseService<LoanTransferPaymentApplyMapper, LoanTransferPaymentApply> {
@Autowired
private MessageListFeign messageListFeign;
@Autowired
private com.yxt.anrui.portal.api.flow.FlowableFeign flowableFeignPro;
@Autowired
private DocPdfComponent docPdfComponent;
@Autowired @Autowired
private LoanTransferPaymentRecordService loanTransferPaymentRecordService; private LoanTransferPaymentRecordService loanTransferPaymentRecordService;
@Autowired @Autowired
@ -1277,4 +1297,175 @@ public class LoanTransferPaymentApplyService extends MybatisBaseService<LoanTran
} }
public ResultBean<String> paymentCreatePdf(String sid) {
ResultBean rb = ResultBean.fireFail();
String finalPath = "";
String filePath = "";
Map<String, Object> dataMap = new HashMap();
List<Map<String, Object>> newList = new ArrayList<>();
LoanTransferPaymentApply data = fetchBySid(sid);
if (null != data) {
List<LoanFile> files = loanFileService.selectByLinkSid(data.getSid(), LoanFileEnum.TRANSFERPAYMENT.getAttachType());
if (!files.isEmpty()) {
List<String> stringList = new ArrayList<>();
for (LoanFile file : files) {
if (StringUtils.isNotBlank(file.getFileName()) && StringUtils.isNotBlank(file.getFileType())) {
stringList.add(file.getFileName() + "." + file.getFileType());
}
}
if (!stringList.isEmpty()) {
filePath = String.join(",", stringList);
}
}
if (null != data.getApplyDate()) {
dataMap.put("createTime", DateUtil.formatDate(data.getApplyDate()));
}
if (StringUtils.isNotBlank(data.getUseOrgName())) {
dataMap.put("company", data.getUseOrgName());
}
if (StringUtils.isNotBlank(data.getApplyName())) {
dataMap.put("applyName", data.getApplyName());
}
if (StringUtils.isNotBlank(data.getDept())) {
dataMap.put("dept", data.getDept());
}
if (StringUtils.isNotBlank(data.getBillNo())) {
dataMap.put("billNo", data.getBillNo());
}
if (StringUtils.isNotBlank(data.getPayForm())) {
dataMap.put("payWay", data.getPayForm());
}
if (StringUtils.isNotBlank(data.getPayRemarks())) {
dataMap.put("remarks", data.getPayRemarks());
}
if (StringUtils.isNotBlank(data.getRemarks())) {
dataMap.put("otherShow", data.getRemarks());
}
if (StringUtils.isNotBlank(filePath)) {
dataMap.put("filePath", filePath);
}
BigDecimal sumMoney = new BigDecimal(0);
//获取审批记录
if (StringUtils.isNotBlank(data.getProcInstId())) {
List<PCHistTaskListAndCommentList> flowRecordVo = flowableFeignPro.flowRecordAndComment(data.getProcInstId(), "1").getData();
List<MonthlyAccrualSourceLCVo> sourceLCVos = new ArrayList<>();
for (PCHistTaskListAndCommentList flowTask : flowRecordVo) {
if (flowTask.getFlowableRecordVo() != null) {
Map<String, Object> flowableRecordVo = flowTask.getFlowableRecordVo();
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
List<Map<String, Object>> taskUserInfos = ConstantUtils.getListData(flowableRecordVo, "taskUserInfos");
Map<String, Object> comment = ConstantUtils.getMap(flowableRecordVo, "comment");
String assigneeName = (String) taskUserInfos.get(0).get("assigneeName");
String comment1 = (String) comment.get("comment");
sourceLCVo.setName(assigneeName);
sourceLCVo.setComment(comment1);
sourceLCVo.setSpsj(flowableRecordVo.get("finishTime").toString());
sourceLCVos.add(sourceLCVo);
} else {
Map<String, Object> processCommentVo = flowTask.getProcessCommentVo();
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
sourceLCVo.setName(processCommentVo.get("title").toString());
sourceLCVo.setComment(processCommentVo.get("content").toString());
sourceLCVo.setSpsj(processCommentVo.get("time").toString());
sourceLCVos.add(sourceLCVo);
}
}
List<Message> messages = messageFeign.selectByBusinessSid(data.getSid()).getData();
if (messages.size() > 0) {
for (Message message : messages) {
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
String receiverNames = "";
List<MessageList> messageLists = messageListFeign.fetchByMainSid(message.getSid()).getData();
if (messageLists.size() > 0) {
for (MessageList messageList : messageLists) {
receiverNames = receiverNames + messageList.getReceiverName() + ",";
}
}
sourceLCVo.setName("系统");
sourceLCVo.setComment("抄送 " + receiverNames.substring(0, receiverNames.lastIndexOf(",")));
sourceLCVo.setSpsj(DateUtil.format(message.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
sourceLCVos.add(sourceLCVo);
}
}
sourceLCVos.sort(comparing(MonthlyAccrualSourceLCVo::getSpsj));
dataMap.put("lcList", sourceLCVos);
}
List<LoanTransferPaymentRecord> records = loanTransferPaymentRecordService.selByMainSid(sid);
if (!records.isEmpty()) {
int sortNo = 1;
for (LoanTransferPaymentRecord applyRecord : records) {
Map<String, Object> map = new HashMap<>();
String recordSid = applyRecord.getRepaymentHistorySid();
LoanTransferPaymentRecordVo details = baseMapper.paymentDetails(applyRecord.getSid());
if (null != details) {
map.put("sortNo", String.valueOf(sortNo++));
if (StringUtils.isNotBlank(details.getLoanContractNo())) {
map.put("loanNo", details.getLoanContractNo());
}
if (StringUtils.isNotBlank(details.getVinNo())) {
map.put("vinNo", details.getVinNo());
}
if (StringUtils.isNotBlank(details.getBankName())) {
map.put("bankName", details.getBankName());
}
if (StringUtils.isNotBlank(details.getBankContractNo())) {
map.put("bankNo", details.getBankContractNo());
}
if (StringUtils.isNotBlank(details.getBorrowerName())) {
map.put("borrowerName", details.getBorrowerName());
}
if (StringUtils.isNotBlank(details.getPeriod())) {
map.put("period", details.getPeriod());
}
if (StringUtils.isNotBlank(details.getActualDate())) {
map.put("return", details.getActualDate());
}
if (StringUtils.isNotBlank(details.getActualMoney())) {
map.put("realMoney", details.getActualMoney());
}
if (StringUtils.isNotBlank(details.getAccountNumber())) {
map.put("accNumber", details.getAccountNumber());
}
BigDecimal money = new BigDecimal(0);
if (StringUtils.isNotBlank(details.getTransferPrincipal())) {
money = new BigDecimal(details.getTransferPrincipal());
}
if (StringUtils.isNotBlank(details.getDefaultInterest())) {
money = new BigDecimal(details.getDefaultInterest()).add(money);
}
map.put("transferMoney", money);
sumMoney = sumMoney.add(money);
if (StringUtils.isNotBlank(details.getSalesDept())) {
map.put("saleDept", details.getSalesDept());
}
}
newList.add(map);
}
}
dataMap.put("newList", newList);
String temp = "/template/";
String targetPath = docPdfComponent.getUploadTemplateUrl();
try {
//获取模板
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/vouchers/transferPay.ftl");
//生成word文件名
String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
long seconds = System.currentTimeMillis();
String typeName = dateStr + seconds + ".doc";
File file = new File(targetPath + "templateVouchers" + seconds + ".ftl");
File dir = new File(targetPath);
WordConvertUtils.inputStreamToFile(inputStream, file);
WordConvertUtils.creatWord1(dataMap, file, targetPath, typeName, dir);
//新生成的word路径
String wordPath = targetPath + typeName;
String pdfName = "代付审批" + dateStr + seconds + ".pdf";
WordConvertUtils.doc2pdf(wordPath, targetPath, pdfName);
finalPath = temp + pdfName;
} catch (NoClassDefFoundError e) {
e.printStackTrace();
finalPath = targetPath;
}
}
return rb.success().setData(finalPath);
}
} }

2831
anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/monthApply2.ftl

File diff suppressed because it is too large

2527
anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/monthBuckle.ftl

File diff suppressed because it is too large

3455
anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/monthapply.ftl

File diff suppressed because it is too large

3127
anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/transferPay.ftl

File diff suppressed because it is too large

3
工作内容需要的文档/单据模板/财务凭证打印模板/代付审批/transferPay.ftl

File diff suppressed because one or more lines are too long

48
工作内容需要的文档/单据模板/财务凭证打印模板/代付审批/代收代付.docx

@ -0,0 +1,48 @@
代付审批
${company!}
申请时间:${createTime!}
审批编号:${billNo!}
申请人:
${applyName!}
申请部门:
${dept!}
财务付款形式:
${payWay!}
打款时需要备注内容:
${remarks!}
代付总金额:
${amount!}
其他说明:
${otherShow!}
附件:
${filePath!}
审批流程
${lc.comment!}
${lc.name!}
${lc.spsj!}
代付明细
序号
贷款合同号
资方
资方合同号
车架号
贷款人
期数
实还日期
实还金额
转付金额
转付账号账户
销售部门
${list.sortNo!}
${list.loanNo!}
${list.bankName!}
${list.bankNo!}
${list.vinNo!}
${list.borrowerName!}
${list.period!}
${list.return!}
${list.realMoney!}
${list.transferMoney!}
${list.accNumber!}
${list.saleDept!}

2523
工作内容需要的文档/单据模板/财务凭证打印模板/划扣/monthBuckle.ftl

File diff suppressed because it is too large

37
工作内容需要的文档/单据模板/财务凭证打印模板/划扣/月还划扣.docx

@ -0,0 +1,37 @@
月还划扣审批
${company!}
申请时间:${createTime!}
审批编号:${billNo!}
申请人:
${applyName!}
申请部门:
${dept!}
备注:
${remarks!}
附件:
${filePath!}
审批流程
${lc.comment!}
${lc.name!}
${lc.spsj!}
划扣明细
序号
贷款合同号
资方
资方合同号
车架号
贷款人
期数
实还金额
销售部门
${list.sortNo!}
${list.loanNo!}
${list.bankName!}
${list.bankNo!}
${list.vinNo!}
${list.borrowerName!}
${list.period!}
${list.dueMoney!}
${list.saleDept!}

3455
工作内容需要的文档/单据模板/财务凭证打印模板/月还计提/monthapply.ftl

File diff suppressed because it is too large

38
工作内容需要的文档/单据模板/财务凭证打印模板/月还计提/月还计提.docx

@ -0,0 +1,38 @@
月还计提审批
${company!}
申请时间:${createTime!}
审批编号:${billNo!}
申请人:
${applyName!}
申请部门:
${dept!}
备注:
${remarks!}
附件:
${filePath!}
审批流程
${lc.comment!}
${lc.name!}
${lc.spsj!}
本月应还记录
序号
贷款合同号
资方
资方合同号
车架号
贷款人
期数
应还日期
应还金额
销售部门
${list.sortNo!}
${list.loanNo!}
${list.bankName!}
${list.bankNo!}
${list.vinNo!}
${list.borrowerName!}
${list.period!}
${list.dueDate!}
${list.dueMoney!}
${list.saleDept!}

3958
工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/repayment1.ftl

File diff suppressed because it is too large

6512
工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/repayment2.ftl

File diff suppressed because it is too large

9047
工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/repayment3.ftl

File diff suppressed because it is too large

78
工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/还款计划1.docx

@ -0,0 +1,78 @@
客户还款计划表
生成日期:
${createTime1!}
消贷合同编号:
${loanContractNo1!}
销售部门:
${salesDept1!}
资方:
${bankName1!}
客户:
${customer1!}
贷款人:
${borrowerName1!}
车架号:
${vinNo1!}
期数:
${period1!}
还款总金额:
${amount1!}
首期还款日:
${dueDate1!}
首期月还:
${fMoney1!}
期间月还:
${mMoney1!}
末期月还:
${lMoney1!}

143
工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/还款计划2.docx

@ -0,0 +1,143 @@
客户还款计划表
生成日期:
${createTime1!}
消贷合同编号:
${loanContractNo1!}
销售部门:
${salesDept1!}
资方:
${bankName1!}
客户:
${customer1!}
贷款人:
${borrowerName1!}
车架号:
${vinNo1!}
期数:
${period1!}
还款总金额:
${amount1!}
首期还款日:
${dueDate1!}
首期月还:
${fMoney1!}
期间月还:
${mMoney1!}
末期月还:
${lMoney1!}
客户还款计划表
生成日期:
${createTime2!}
消贷合同编号:
${loanContractNo2!}
销售部门:
${salesDept2!}
资方:
${bankName2!}
客户:
${customer2!}
贷款人:
${borrowerName2!}
车架号:
${vinNo2!}
期数:
${period2!}
还款总金额:
${amount2!}
首期还款日:
${dueDate2!}
首期月还:
${fMoney2!}
期间月还:
${mMoney2!}
末期月还:
${lMoney2!}

208
工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/还款计划3.docx

@ -0,0 +1,208 @@
客户还款计划表
生成日期:
${createTime1!}
消贷合同编号:
${loanContractNo1!}
销售部门:
${salesDept1!}
资方:
${bankName1!}
客户:
${customer1!}
贷款人:
${borrowerName1!}
车架号:
${vinNo1!}
期数:
${period1!}
还款总金额:
${amount1!}
首期还款日:
${dueDate1!}
首期月还:
${fMoney1!}
期间月还:
${mMoney1!}
末期月还:
${lMoney1!}
客户还款计划表
生成日期:
${createTime2!}
消贷合同编号:
${loanContractNo2!}
销售部门:
${salesDept2!}
资方:
${bankName2!}
客户:
${customer2!}
贷款人:
${borrowerName2!}
车架号:
${vinNo2!}
期数:
${period2!}
还款总金额:
${amount2!}
首期还款日:
${dueDate2!}
首期月还:
${fMoney2!}
期间月还:
${mMoney2!}
末期月还:
${lMoney2!}
客户还款计划表
生成日期:
${createTime3!}
消贷合同编号:
${loanContractNo3!}
销售部门:
${salesDept3!}
资方:
${bankName3!}
客户:
${customer3!}
贷款人:
${borrowerName3!}
车架号:
${vinNo3!}
期数:
${period3!}
还款总金额:
${amount3!}
首期还款日:
${dueDate3!}
首期月还:
${fMoney2!}
期间月还:
${mMoney3!}
末期月还:
${lMoney3!}

3
工作内容需要的文档/单据模板/财务凭证打印模板/金融收款单/rskjiguang.ftl

File diff suppressed because one or more lines are too long

3
工作内容需要的文档/单据模板/财务凭证打印模板/金融收款单/rskzhenshi.ftl

File diff suppressed because one or more lines are too long

11
工作内容需要的文档/单据模板/财务凭证打印模板/金融收款单/金融收款单模板(激光打印机).doc

@ -0,0 +1,11 @@
|收款单 |
|收款日期:|${collDate!} |付款方|${payee!} |单据编 |${billNo!} |
| | |: | |号: | |
|结算方式:|${settleType!} |备注:|${remarks!} |
|序号 |贷款人 |
-----------------------
第 1 页 共 1 页

10
工作内容需要的文档/单据模板/财务凭证打印模板/金融收款单/金融收款单模板(针式打印机).doc

@ -0,0 +1,10 @@
|收款单 |
|收款日期:|${collDate!} |付款方: |${payee!} |单据编号: |${billNo!} |
|结算方式:|${settleType!} |备注: |${remarks!} |
|序号 |贷款人 |
-----------------------
第 1 页 共 1 页
Loading…
Cancel
Save