diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/SceneCodeEnum.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/SceneCodeEnum.java index ba4d6029ec..26b4399b90 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/SceneCodeEnum.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/SceneCodeEnum.java @@ -19,6 +19,8 @@ public enum SceneCodeEnum { TRANSFER_VOUCHER2("间还月还代付款凭证", "出纳代付款-已垫款(中车类)", "07"), PADSINCERE_VOUCHER1("垫款付款凭证", "出纳付款-资方本金(月还)", "08"), PADSINCERE_VOUCHER2("垫款付款凭证", "出纳付款-资方逾期利息", "09"), + PADSINCERE_VOUCHER3("垫款付款凭证", "出纳付款-资方本金(月还)", "08-02"), + PADSINCERE_VOUCHER4("垫款付款凭证", "出纳付款-资方逾期利息", "09-02"), FUND_VOUCHER1("资金占用费收款凭证", "资金占用费出纳确认后", "10"), FUND_VOUCHER2("资金占用费收款凭证", "资金占用费出纳确认后-确认收入", "11"), settle_VOUCHER1("资方结清付款凭证", "资方结清款>0,财务给资方打款-保证金抵顶且保证金>0", "12"), diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java index 92d15aa9a9..66fa3594e8 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java @@ -4727,11 +4727,13 @@ public class FinCollectionConfirmationService extends MybatisBaseService list3 = new ArrayList<>(); List list4 = new ArrayList<>(); List list5 = new ArrayList<>(); + List list6 = new ArrayList<>(); BigDecimal all = BigDecimal.ZERO;//赎回 BigDecimal all2 = BigDecimal.ZERO;//二次销售 BigDecimal all3 = BigDecimal.ZERO;//亏损立案 BigDecimal all4 = BigDecimal.ZERO;//未交回立案 BigDecimal all5 = BigDecimal.ZERO;//执行 + BigDecimal all6 = BigDecimal.ZERO;//执行 BigDecimal otherMoney = BigDecimal.ZERO; String payType = ""; DictCommonVo dictCommonVo = dictCommonFeign.selectBykey(finalConfirmation.getCollectionTypeKey(), "payVoucherType").getData(); @@ -4798,7 +4800,7 @@ public class FinCollectionConfirmationService extends MybatisBaseService bankResultBean = loanFinBankFeign.fetchEntityBySid(bankSid); + if (bankResultBean.getData() != null) { + LoanFinBank loanFinBank = bankResultBean.getData(); + if (null != loanFinBank.getReAdvances()) { + if (loanFinBank.getReAdvances() == 1) { + try { + Date collDate = sdf.parse(finalConfirmation.getCollectionDate()); + historyEntity.setActualDate(collDate); + if (planDetails.getDueDate().compareTo(collDate) > 0) { + //未逾期 + Calendar cal_1 = Calendar.getInstance();// 使用默认时区和语言环境获得一个日历 + cal_1.setTime(planDetails.getDueDate()); + cal_1.add(Calendar.DAY_OF_MONTH, -1); + historyEntity.setPrepareDate(cal_1.getTime()); + } else { + //已逾期 + historyEntity.setPrepareDate(new DateTime()); + } + } catch (ParseException e) { + e.printStackTrace(); + } + historyEntity.setPaymentState("待转付"); + historyEntity.setPaymentStateKey("001"); + FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR(); + jr.setCreateBySid(userSid); + SysUserVo userVo = sysUserFeign.fetchBySid(userSid).getData(); + jr.setCreateByName(userVo.getName()); + jr.setBusSid(planSid); + jr.setCurrentReceivableMoney(new BigDecimal(v.getSubscriptionMoney())); + jr.setReveivableMoney(new BigDecimal(v.getSubscriptionMoney())); + jr.setPayCostTitleKey("007"); + 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); + } + } + } + } else if (planDetails.getPaymentMoney().compareTo(BigDecimal.ZERO) == 0) { + try { + Date collDate = sdf.parse(finalConfirmation.getCollectionDate()); + historyEntity.setActualDate(collDate); + if (planDetails.getDueDate().compareTo(collDate) > 0) { + //未逾期 + Calendar cal_1 = Calendar.getInstance();// 使用默认时区和语言环境获得一个日历 + cal_1.setTime(planDetails.getDueDate()); + cal_1.add(Calendar.DAY_OF_MONTH, -1); + historyEntity.setPrepareDate(cal_1.getTime()); + } else { + //已逾期 + historyEntity.setPrepareDate(new DateTime()); + } + } catch (ParseException e) { + e.printStackTrace(); + } + historyEntity.setPaymentState("待转付"); + historyEntity.setPaymentStateKey("001"); + } + } else { + try { + Date collDate = sdf.parse(finalConfirmation.getCollectionDate()); + historyEntity.setActualDate(collDate); + if (planDetails.getDueDate().compareTo(collDate) > 0) { + //未逾期 + Calendar cal_1 = Calendar.getInstance();// 使用默认时区和语言环境获得一个日历 + cal_1.setTime(planDetails.getDueDate()); + cal_1.add(Calendar.DAY_OF_MONTH, -1); + historyEntity.setPrepareDate(cal_1.getTime()); + } else { + //已逾期 + historyEntity.setPrepareDate(new DateTime()); + } + } catch (ParseException e) { + e.printStackTrace(); + } + historyEntity.setPaymentState("待转付"); + historyEntity.setPaymentStateKey("001"); + } + loanRepaymentHistoryFeign.saveHistoryByEntity(historyEntity); + }else{ + if (null != planDetails.getPaymentInterest()) { + if (planDetails.getPaymentInterest().compareTo(BigDecimal.ZERO) == 1) { + BigDecimal paymentInterest = planDetails.getPaymentInterest(); + String subscriptionMoney = v.getSubscriptionMoney(); + BigDecimal subtract = paymentInterest.subtract(new BigDecimal(subscriptionMoney)); + planDetails.setPaymentInterest(subtract); + BigDecimal paymentMoney = planDetails.getPaymentMoney(); + BigDecimal subtract2 = paymentMoney.subtract(new BigDecimal(subscriptionMoney)); + planDetails.setPaymentMoney(subtract2); + loanRepaymentPlanDetailsFeign.updateByEntity(planDetails); + String orderSid = planDetails.getSalesOrderSid(); + String isOther = loanRepaymentScheduleFeign.returnBankOrOtherBankByPlanSid(planSid).getData(); + String bankSid = ""; + String scheduleSid = planDetails.getScheduleSid(); + LoanRepaymentSchedule schedule = loanRepaymentScheduleFeign.fetchBySid(scheduleSid).getData(); + if (isOther.equals("0")) { + if (StringUtils.isNotBlank(schedule.getBankSid())) { + bankSid = schedule.getBankSid(); + } + } else if (isOther.equals("1")) { + if (StringUtils.isNotBlank(schedule.getOtherBankSid())) { + bankSid = schedule.getOtherBankSid(); + } + } + ResultBean bankResultBean = loanFinBankFeign.fetchEntityBySid(bankSid); + if (bankResultBean.getData() != null) { + LoanFinBank loanFinBank = bankResultBean.getData(); + if (null != loanFinBank.getReAdvances()) { + if (loanFinBank.getReAdvances() == 1) { + FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR(); + jr.setCreateBySid(userSid); + SysUserVo userVo = sysUserFeign.fetchBySid(userSid).getData(); + jr.setCreateByName(userVo.getName()); + jr.setBusSid(planSid); + jr.setCurrentReceivableMoney(new BigDecimal(v.getSubscriptionMoney())); + jr.setReveivableMoney(new BigDecimal(v.getSubscriptionMoney())); + jr.setPayCostTitleKey("007"); + 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); + } + } + } + } + } + } + } + + if("资金占用费".equals(v.getReceivablesName())){ + Voucher.VoucherResultDetailDto voucherResultDetailDtoDf2 = new Voucher.VoucherResultDetailDto(); + all6 = all6.add(new BigDecimal(v.getSubscriptionMoney())); + voucherResultDetailDtoDf2.setSummary(customerNumber+"亏损收款"); + voucherResultDetailDtoDf2.setSubjectNo("1201.02.03"); + //核算部门 + voucherResultDetailDtoDf2.setDimensionDept(deptVo.getOrgCode()); + //核算客户 + voucherResultDetailDtoDf2.setDimensionCustom(customerNumber); + voucherResultDetailDtoDf2.setCredit(v.getSubscriptionMoney()); + list6.add(voucherResultDetailDtoDf2); + //------------------------资金占用费转收入 + Voucher.VoucherResultDetailDto voucherResultDetailDtoJfZjzyf = new Voucher.VoucherResultDetailDto(); + voucherResultDetailDtoJfZjzyf.setSummary("资金占用费转收入"); + voucherResultDetailDtoJfZjzyf.setSubjectNo("2191.05.00"); + //核算部门 + voucherResultDetailDtoJfZjzyf.setDimensionDept(deptVo.getOrgCode()); + //核算客户 + voucherResultDetailDtoJfZjzyf.setDimensionCustom(customerNumber); + voucherResultDetailDtoJfZjzyf.setDebit(v.getSubscriptionMoney()); + list6.add(voucherResultDetailDtoJfZjzyf); + //资金占用费转收入--其他业务收入_消贷收入_消贷利息 + Voucher.VoucherResultDetailDto voucherResultDetailDtoDfZjzyf = new Voucher.VoucherResultDetailDto(); + voucherResultDetailDtoDfZjzyf.setSummary("资金占用费转收入"); + voucherResultDetailDtoDfZjzyf.setSubjectNo("6002.01.19"); + //核算部门 + voucherResultDetailDtoDfZjzyf.setDimensionDept(deptVo.getOrgCode()); + //核算客户 + voucherResultDetailDtoDfZjzyf.setDimensionCustom(customerNumber); + voucherResultDetailDtoDfZjzyf.setCredit(v.getSubscriptionMoney()); + list6.add(voucherResultDetailDtoDfZjzyf); + } + + } } @@ -6090,6 +6332,18 @@ public class FinCollectionConfirmationService extends MybatisBaseService 0) {//二次销售出库后收款 + Voucher.VoucherResultDetailDto voucherResultDetailDtoJf = new Voucher.VoucherResultDetailDto(); + if (StringUtils.isNotBlank(finalConfirmation.getCollectionBankNum())) { + voucherResultDetailDtoJf.setBankAccount(finalConfirmation.getCollectionBankNum()); + } + voucherResultDetailDtoJf.setSubjectNo(payType); + voucherResultDetailDtoJf.setSummary("收款" +finalConfirmation.getPayerName()+ "(" + collectionDate + ")"); + voucherResultDetailDtoJf.setDebit(String.valueOf(all6)); + list6.add(voucherResultDetailDtoJf); + } + + if (!list.isEmpty()) {//赎回收款(风控状态赎回中以及交回推送) voucher.setResultDetails(list); finKingDeeFeignRest.saveVoucher(voucher); @@ -6111,6 +6365,11 @@ public class FinCollectionConfirmationService extends MybatisBaseService pageList1(@RequestBody PagerQuery pagerQuery); + + @PostMapping("pageList") + @ResponseBody + ResultBean> pageList(@RequestBody PagerQuery pagerQuery); + +} + + diff --git a/anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/factoryDailyReport/FactoryDaliyReportFeignFallback.java b/anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/factoryDailyReport/FactoryDaliyReportFeignFallback.java new file mode 100644 index 0000000000..f09cdc9b83 --- /dev/null +++ b/anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/factoryDailyReport/FactoryDaliyReportFeignFallback.java @@ -0,0 +1,12 @@ +package com.yxt.anrui.reportcenter.api.factoryDailyReport; + +import org.springframework.stereotype.Component; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/5/20 + **/ +@Component +public class FactoryDaliyReportFeignFallback { +} diff --git a/anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/factoryDailyReport/FactoryDaliyReportQuery.java b/anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/factoryDailyReport/FactoryDaliyReportQuery.java new file mode 100644 index 0000000000..b2b603ea04 --- /dev/null +++ b/anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/factoryDailyReport/FactoryDaliyReportQuery.java @@ -0,0 +1,19 @@ +package com.yxt.anrui.reportcenter.api.factoryDailyReport; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/5/20 + **/ +@Data +public class FactoryDaliyReportQuery implements Query { + private static final long serialVersionUID = 3416520595744127012L; + + private String orgPath; + //jt-查集团,syb-事业部,空字符串 分公司 + private String type; +} diff --git a/anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/factoryDailyReport/FactoryDaliyReportVo.java b/anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/factoryDailyReport/FactoryDaliyReportVo.java new file mode 100644 index 0000000000..98871f4085 --- /dev/null +++ b/anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/factoryDailyReport/FactoryDaliyReportVo.java @@ -0,0 +1,47 @@ +package com.yxt.anrui.reportcenter.api.factoryDailyReport; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/5/20 + **/ +@Data +public class FactoryDaliyReportVo { + + @ApiModelProperty("年份") + private String year; + @ApiModelProperty("预提") + private String estimate; + @ApiModelProperty("上传金额") + private String upload; + @ApiModelProperty("调整") + private String adjust; + @ApiModelProperty("未上传") + private UnUploadVo unUpload; + + @ApiModelProperty("合计") + @JsonIgnore + private String notUploadMoney; + @ApiModelProperty("返利") + @JsonIgnore + private String unuploaded_rebate; + @ApiModelProperty("费用合计") + @JsonIgnore + private String fee; + @ApiModelProperty("支出") + @JsonIgnore + private String expense_payment; + @ApiModelProperty("待支付") + @JsonIgnore + private String pending_payment; + @ApiModelProperty("抵顶") + @JsonIgnore + private String offset_payment; + + private String linkSid; + +} diff --git a/anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/factoryDailyReport/UnUploadVo.java b/anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/factoryDailyReport/UnUploadVo.java new file mode 100644 index 0000000000..bb1dc3dda4 --- /dev/null +++ b/anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/factoryDailyReport/UnUploadVo.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.reportcenter.api.factoryDailyReport; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/5/20 + **/ +@Data +public class UnUploadVo { + @ApiModelProperty("合计") + private String total; + @ApiModelProperty("返利") + private String rebate; + @ApiModelProperty("费用合计") + private String fee; + @ApiModelProperty("支出") + private String feeOutlay; + @ApiModelProperty("待支付") + private String feeUnPaid; + @ApiModelProperty("抵顶") + private String feeTopping; +} diff --git a/anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/carsSoldProfit/CarsSoldProfitService.java b/anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/carsSoldProfit/CarsSoldProfitService.java index 66ace01df7..5a9e278a98 100644 --- a/anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/carsSoldProfit/CarsSoldProfitService.java +++ b/anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/carsSoldProfit/CarsSoldProfitService.java @@ -212,7 +212,7 @@ public class CarsSoldProfitService extends MybatisBaseService selectRecordList(@Param("map") Map map, @Param(Constants.WRAPPER)QueryWrapper qw); + + int selectRecordCount(@Param(Constants.WRAPPER)QueryWrapper qw); +} diff --git a/anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/factoryDailyReport/FactoryDaliyReportMapper.xml b/anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/factoryDailyReport/FactoryDaliyReportMapper.xml new file mode 100644 index 0000000000..e98525cf22 --- /dev/null +++ b/anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/factoryDailyReport/FactoryDaliyReportMapper.xml @@ -0,0 +1,137 @@ + + + + + + + \ No newline at end of file diff --git a/anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/factoryDailyReport/FactoryDaliyReportRest.java b/anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/factoryDailyReport/FactoryDaliyReportRest.java new file mode 100644 index 0000000000..d8af1fdd37 --- /dev/null +++ b/anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/factoryDailyReport/FactoryDaliyReportRest.java @@ -0,0 +1,41 @@ +package com.yxt.anrui.reportcenter.biz.factoryDailyReport; + +import com.yxt.anrui.reportcenter.api.factoryDailyReport.FactoryDaliyReportFeign; +import com.yxt.anrui.reportcenter.api.factoryDailyReport.FactoryDaliyReportQuery; +import com.yxt.anrui.reportcenter.api.factoryDailyReport.FactoryDaliyReportVo; +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 org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/5/20 + **/ +@Api(tags = "厂家返利报表") +@RestController +@RequestMapping("v1/factoryDailyReport") +public class FactoryDaliyReportRest implements FactoryDaliyReportFeign { + + @Autowired + private FactoryDaliyReportService factoryDaliyReportService; + @Override + public ResultBean pageList1(PagerQuery pagerQuery) { + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = factoryDaliyReportService.pageList1(pagerQuery); + return rb.success().setData(pv); + } + + @Override + public ResultBean> pageList(PagerQuery pagerQuery) { + ResultBean> rb = ResultBean.fireFail(); + Map map = factoryDaliyReportService.pageList(pagerQuery); + return rb.success().setData(map); + } +} diff --git a/anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/factoryDailyReport/FactoryDaliyReportService.java b/anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/factoryDailyReport/FactoryDaliyReportService.java new file mode 100644 index 0000000000..d9c52ed456 --- /dev/null +++ b/anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/factoryDailyReport/FactoryDaliyReportService.java @@ -0,0 +1,161 @@ +package com.yxt.anrui.reportcenter.biz.factoryDailyReport; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.yxt.anrui.portal.api.sysorganization.SysOrganization; +import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign; +import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo; +import com.yxt.anrui.reportcenter.api.dailyreport.DailyReport; +import com.yxt.anrui.reportcenter.api.dailyreport.DailyReportAppPagerQuery; +import com.yxt.anrui.reportcenter.api.dailyreport.DailyReportListVo; +import com.yxt.anrui.reportcenter.api.factoryDailyReport.FactoryDaliyReportQuery; +import com.yxt.anrui.reportcenter.api.factoryDailyReport.FactoryDaliyReportVo; +import com.yxt.anrui.reportcenter.api.factoryDailyReport.UnUploadVo; +import com.yxt.anrui.reportcenter.config.DecimalUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.vo.PagerVo; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/5/20 + **/ +@Service +@Slf4j +public class FactoryDaliyReportService { + + @Autowired + private FactoryDaliyReportMapper factoryDaliyReportMapper; + @Autowired + private SysOrganizationFeign sysOrganizationFeign; + + public PagerVo pageList1(PagerQuery pagerQuery) { + long startTime = System.currentTimeMillis(); // 记录开始时间 + PagerVo page = new PagerVo<>(); + long pageNum = pagerQuery.getCurrent(); + long pageSize = pagerQuery.getSize(); + FactoryDaliyReportQuery query = pagerQuery.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (query != null) { + + } + + Map map = new HashMap<>(); + map.put("page", (pageNum - 1) * pageSize); + map.put("size", pageSize); + List recordList = factoryDaliyReportMapper.selectRecordList(map, qw); + recordList.removeAll(Collections.singleton(null)); + if (!recordList.isEmpty()) { + for (int i = 0; i < recordList.size(); i++) { + FactoryDaliyReportVo factoryDaliyReportVo = recordList.get(i); + UnUploadVo unUploadVo = new UnUploadVo(); + unUploadVo.setTotal(factoryDaliyReportVo.getNotUploadMoney()); + unUploadVo.setFee(factoryDaliyReportVo.getFee()); + unUploadVo.setFeeOutlay(factoryDaliyReportVo.getExpense_payment()); + unUploadVo.setFeeTopping(factoryDaliyReportVo.getOffset_payment()); + unUploadVo.setRebate(factoryDaliyReportVo.getUnuploaded_rebate()); + unUploadVo.setFeeUnPaid(factoryDaliyReportVo.getPending_payment()); + factoryDaliyReportVo.setUnUpload(unUploadVo); + } + } + int count = factoryDaliyReportMapper.selectRecordCount(qw); + page.setRecords(recordList); + page.setCurrent(pageNum); + page.setSize(pageSize); + page.setTotal(count); + long pages = (count + pageSize - 1) / pageSize; + page.setPages(pages); + long endTime = System.currentTimeMillis(); // 记录结束时间 + long duration = endTime - startTime; // 计算耗时 + log.info("集团日报列表接口耗时 {} ms", duration); // 输出日志 + return page; + } + + public Map pageList(PagerQuery pagerQuery) { + Map reportMap = new HashMap<>(); + long pageNum = pagerQuery.getCurrent(); + long pageSize = pagerQuery.getSize(); + FactoryDaliyReportQuery query = pagerQuery.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + String orgPath = query.getOrgPath(); + List orgSidList = Arrays.asList(orgPath.split("/")); + String type = query.getType(); + String name = ""; + if (StringUtils.isNotBlank(type)) { + if ("syb".equals(type)) { + // 取事业部(前两级) + if (orgSidList.size() >= 2) { + String groupSid = orgSidList.get(0); + String sybSid = orgSidList.get(1); + String orgPathPrefix = groupSid + "/" + sybSid; + + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(sybSid).getData(); + name = sysOrganization.getName(); + reportMap.put("linkSid", sybSid); + qw.like("orgPath", orgPathPrefix); + } + + } else if ("jt".equals(type)) { + name = "集团"; + } + } else { + if (orgSidList.size() >= 3) { + String groupSid = orgSidList.get(0); + String sybSid = orgSidList.get(1); + String fgsSid = orgSidList.get(2); + String orgPathPrefix = groupSid + "/" + sybSid + "/" + fgsSid; + + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(fgsSid).getData(); + name = sysOrganization.getName(); + reportMap.put("linkSid", fgsSid); + qw.like("orgPath", orgPathPrefix); + } + } + reportMap.put("name", name); + Map map = new HashMap<>(); + map.put("page", (pageNum - 1) * pageSize); + map.put("size", pageSize); + List recordList = factoryDaliyReportMapper.selectRecordList(map, qw); + recordList.removeAll(Collections.singleton(null)); + if (!recordList.isEmpty()) { + for (int i = 0; i < recordList.size(); i++) { + FactoryDaliyReportVo factoryDaliyReportVo = recordList.get(i); + factoryDaliyReportVo.setEstimate(DecimalUtil.format(factoryDaliyReportVo.getEstimate())); + factoryDaliyReportVo.setUpload(DecimalUtil.format(factoryDaliyReportVo.getUpload())); + factoryDaliyReportVo.setAdjust(DecimalUtil.format(factoryDaliyReportVo.getAdjust())); + factoryDaliyReportVo.setNotUploadMoney(DecimalUtil.format(factoryDaliyReportVo.getNotUploadMoney())); + factoryDaliyReportVo.setUnuploaded_rebate(DecimalUtil.format(factoryDaliyReportVo.getUnuploaded_rebate())); + factoryDaliyReportVo.setFee(DecimalUtil.format(factoryDaliyReportVo.getFee())); + factoryDaliyReportVo.setExpense_payment(DecimalUtil.format(factoryDaliyReportVo.getExpense_payment())); + factoryDaliyReportVo.setPending_payment(DecimalUtil.format(factoryDaliyReportVo.getPending_payment())); + factoryDaliyReportVo.setOffset_payment(DecimalUtil.format(factoryDaliyReportVo.getOffset_payment())); + UnUploadVo unUploadVo = new UnUploadVo(); + unUploadVo.setTotal(factoryDaliyReportVo.getNotUploadMoney()); + unUploadVo.setFee(factoryDaliyReportVo.getFee()); + unUploadVo.setFeeOutlay(factoryDaliyReportVo.getExpense_payment()); + unUploadVo.setFeeTopping(factoryDaliyReportVo.getOffset_payment()); + unUploadVo.setRebate(factoryDaliyReportVo.getUnuploaded_rebate()); + unUploadVo.setFeeUnPaid(factoryDaliyReportVo.getPending_payment()); + factoryDaliyReportVo.setUnUpload(unUploadVo); + if(StringUtils.isBlank(type)){ + String orgSid = orgSidList.get(2); + factoryDaliyReportVo.setLinkSid(orgSid+"#"+factoryDaliyReportVo.getYear()); + } + } + } + int count = factoryDaliyReportMapper.selectRecordCount(qw); + long pages = (count + pageSize - 1) / pageSize; + reportMap.put("pages", pages); + reportMap.put("total", count); + reportMap.put("size", pageSize); + reportMap.put("current", pageNum); + reportMap.put("records", recordList); + return reportMap; + } +} diff --git a/anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/config/DecimalUtil.java b/anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/config/DecimalUtil.java new file mode 100644 index 0000000000..cc749c2394 --- /dev/null +++ b/anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/config/DecimalUtil.java @@ -0,0 +1,20 @@ +package com.yxt.anrui.reportcenter.config; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/5/21 + **/ +public class DecimalUtil { + public static String format(Object obj) { + if (obj == null) return "0.00"; + try { + return new BigDecimal(obj.toString()).setScale(2, RoundingMode.HALF_UP).toPlainString(); + } catch (Exception e) { + return "0.00"; + } + } +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApply.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApply.java index b3685fef22..6c4bc90740 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApply.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApply.java @@ -20,6 +20,8 @@ import java.util.Date; public class LoanRepurchaseApply extends BaseEntity { @ApiModelProperty("销售订单sid") private String salesOrderSid; + @ApiModelProperty("单据编号") + private String billNo; @ApiModelProperty("申请日期") private Date applyDate; @ApiModelProperty("申请部门") @@ -38,6 +40,8 @@ public class LoanRepurchaseApply extends BaseEntity { private String loanSid; @ApiModelProperty("贷款合同编号") private String loanContractNo; + @ApiModelProperty("资方sid") + private String bankSid; @ApiModelProperty("资方") private String bankName; @ApiModelProperty("资方合同编号") @@ -78,10 +82,6 @@ public class LoanRepurchaseApply extends BaseEntity { private String orgSidPath; @ApiModelProperty("回购原因") private String buybacksReason; - @ApiModelProperty("资方收款账户") - private String bankReceivingAccount; - @ApiModelProperty("资方收款账号") - private String bankAccountNo; @ApiModelProperty("付款时需备注内容") private String payRemarks; } diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApplyDetailsVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApplyDetailsVo.java index 4fa300206a..274d9081f6 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApplyDetailsVo.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApplyDetailsVo.java @@ -30,7 +30,7 @@ public class LoanRepurchaseApplyDetailsVo implements Vo { private String taskId; @ApiModelProperty("实例id") private String instanceId; - // private LoanRepurchaseSolutionsDetailsssVo solutionsDetailsssVo = new LoanRepurchaseSolutionsDetailsssVo(); + // private LoanRepurchaseSolutionsDetailsssVo solutionsDetailsssVo = new LoanRepurchaseSolutionsDetailsssVo(); //主体 @ApiModelProperty("申请日期") private String applyDate; @@ -54,6 +54,8 @@ public class LoanRepurchaseApplyDetailsVo implements Vo { private String loanSid; @ApiModelProperty("贷款合同编号") private String loanContractNo; + @ApiModelProperty("资方sid") + private String bankSid; @ApiModelProperty("资方") private String bankName; @ApiModelProperty("资方合同编号") @@ -75,10 +77,6 @@ public class LoanRepurchaseApplyDetailsVo implements Vo { private String amount; @ApiModelProperty("回购原因") private String buybacksReason; - @ApiModelProperty("资方收款账户") - private String bankReceivingAccount; - @ApiModelProperty("资方收款账号") - private String bankAccountNo; @ApiModelProperty("付款后需备注内容") private String payRemarks; private List buyfiles = new ArrayList<>(); // 回购情况附件 diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApplyDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApplyDto.java index 6d8fd7c402..5365111700 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApplyDto.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApplyDto.java @@ -49,6 +49,8 @@ public class LoanRepurchaseApplyDto implements Dto { private String loanSid; @ApiModelProperty("贷款合同编号") private String loanContractNo; + @ApiModelProperty("资方sid") + private String bankSid; @ApiModelProperty("资方") private String bankName; @ApiModelProperty("资方合同编号") @@ -70,10 +72,6 @@ public class LoanRepurchaseApplyDto implements Dto { private String amount; @ApiModelProperty("回购原因") private String buybacksReason; - @ApiModelProperty("资方收款账户") - private String bankReceivingAccount; - @ApiModelProperty("资方收款账号") - private String bankAccountNo; @ApiModelProperty("付款后需备注内容") private String payRemarks; private List buyfiles = new ArrayList<>(); // 回购情况附件 diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApplyFeign.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApplyFeign.java index 0c63845b33..36843add4c 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApplyFeign.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApplyFeign.java @@ -69,6 +69,10 @@ public interface LoanRepurchaseApplyFeign { @ResponseBody ResultBean settleRepoInit(@RequestBody LoanRepoSettleApplyDetailsQuery query); + @ApiOperation("生成pdf") + @PostMapping("/createPdf") + @ResponseBody + ResultBean createPdf(@RequestParam("sid") String sid, @RequestParam("userName") String userName); //---------------------流程接口------------------------------- @ApiOperation("提交") diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApplyFeignFallback.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApplyFeignFallback.java index beece54eea..229fc65fd9 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApplyFeignFallback.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApplyFeignFallback.java @@ -48,6 +48,11 @@ public class LoanRepurchaseApplyFeignFallback implements LoanRepurchaseApplyFeig return null; } + @Override + public ResultBean createPdf(String sid, String userName) { + return null; + } + @Override public ResultBean submitRecordApplication(SubmitRepurchaseDto dto) { return null; diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseCompanyCostVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseCompanyCostVo.java index c55ffb1992..90718bbbdc 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseCompanyCostVo.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseCompanyCostVo.java @@ -23,7 +23,7 @@ public class LoanRepurchaseCompanyCostVo { private String bankOverInterest; @ApiModelProperty("公司当期未到期月还") private String companyCurrentNotPrice; - @ApiModelProperty("资方未到期金额") + @ApiModelProperty("公司未到期金额") private String bankNotPrice; @ApiModelProperty("贷款保证金扣罚金额") private String deductionAmount; 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 e2e3b502b2..710832d071 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 @@ -203,12 +203,12 @@ public class LoanBePadsincereApplyRest implements LoanBePadsincereApplyFeign { @Override public ResultBean pushAdvancesVoucher(String sid, String paySid) { - return loanBePadsincereApplyService.pushAdvancesVoucher(sid,paySid); + return loanBePadsincereApplyService.pushAdvancesVoucherNew(sid,paySid); } @Override public ResultBean pushAdvancesReturnVoucher(String sid, String paySid) { - return loanBePadsincereApplyService.pushAdvancesReturnVoucher(sid,paySid); + return loanBePadsincereApplyService.pushAdvancesReturnVoucherNew(sid,paySid); } @Override 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 7137fe0793..0d9cafb875 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 @@ -1249,6 +1249,172 @@ public class LoanBePadsincereApplyService extends MybatisBaseService records = loanBePadsincereVehService.selByMainSidAndPaySid(sid, paySid); + FinPaymentrecord paymentrecord = finPaymentrecordFeign.fetchBySid(paySid).getData(); + if (!records.isEmpty()) { + PaymentVoucher paymentVoucher = new PaymentVoucher(); + 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()); + } + } + PaymentVoucher.PaymentVoucherDetail voucherDetail1 = new PaymentVoucher.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) { + 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()); + } + } + ResultBean resultBean = finKingDeeFeign.draftBdCustomer(bdCustomer); + if (resultBean.getSuccess()) { + customerNumber = bdCustomer.getFNumber(); + } + } else { + customerNumber = busSalesOrderVehicle.getTemporaryNo(); + } + } + } + if("0".equals(busSalesOrderVehicle.getRiskState().toString())){ + if (StringUtils.isNotBlank(v.getBankBeMoney())) { + BigDecimal beMoney = new BigDecimal(v.getBankBeMoney()); + if (beMoney.compareTo(BigDecimal.ZERO) > 0) { + PaymentVoucher.PaymentVoucherDetail voucherDetail = new PaymentVoucher.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) { + PaymentVoucher.PaymentVoucherDetail voucherDetail = new PaymentVoucher.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); + } + } + }else{ + if (StringUtils.isNotBlank(v.getBankBeMoney())) { + BigDecimal beMoney = new BigDecimal(v.getBankBeMoney()); + if (beMoney.compareTo(BigDecimal.ZERO) > 0) { + PaymentVoucher.PaymentVoucherDetail voucherDetail = new PaymentVoucher.PaymentVoucherDetail(); + voucherDetail.setSceneCode(SceneCodeEnum.PADSINCERE_VOUCHER3.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) { + PaymentVoucher.PaymentVoucherDetail voucherDetail = new PaymentVoucher.PaymentVoucherDetail(); + voucherDetail.setSceneCode(SceneCodeEnum.PADSINCERE_VOUCHER4.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); + finKingDeeFeign.saveAdvancesVoucher(paymentVoucher); + } + return rb.success(); + } + public ResultBean bepadsincereCreatePdf(String sid) { ResultBean rb = ResultBean.fireFail(); String finalPath = ""; @@ -1634,6 +1800,174 @@ public class LoanBePadsincereApplyService extends MybatisBaseService pushAdvancesReturnVoucherNew(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("0".equals(busSalesOrderVehicle.getRiskState().toString())){ + 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); + } + } + }else{ + 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_VOUCHER3.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_VOUCHER4.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"); @@ -1657,6 +1991,17 @@ public class LoanBePadsincereApplyService extends MybatisBaseService listPage(PagerQuery pq) { IPage page = PagerUtil.queryToPage(pq); @@ -675,7 +680,7 @@ public class LoanBuckleApplyService extends MybatisBaseService(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); Future future1 = pool.submit(() -> { //推送划扣凭证 - pushBuckleVoucher(businessSid); + pushBuckleVoucherNew(businessSid); }); } catch (Exception e) { e.printStackTrace(); @@ -778,7 +783,10 @@ public class LoanBuckleApplyService extends MybatisBaseService records = loanBuckleApplyRecordService.selByMainSid(businessSid); + if (!records.isEmpty()) { + GeneralVoucher generalVoucher = new GeneralVoucher();//月还划扣 + List voucherDetails = new ArrayList<>(); + Voucher voucher = new Voucher();//直还划扣 + List voucherDetails2 = new ArrayList<>(); + for (LoanBuckleApplyRecord v : records) { + LoanRepaymentPlanDetails planDetails = loanRepaymentPlanDetailsService.fetchBySid(v.getRepaymentHistorySid()); + if (null != planDetails) { + BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(planDetails.getBusVinSid()).getData(); + if("0".equals(busSalesOrderVehicle.getRiskState().toString())){//正常 + GeneralVoucher.GeneralVoucherDetail voucherDetail = new GeneralVoucher.GeneralVoucherDetail(); + // oweState 是否转累欠状态(0是,1否) + Integer oweState = planDetails.getOweState(); + if (oweState == 1) { + //获取收款日期的当月最后一天 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDate localDate = LocalDate.parse(DateUtil.formatDate(new Date()), formatter); + LocalDate date = localDate.withDayOfMonth(localDate.lengthOfMonth()); + Date dueDate = planDetails.getDueDate(); //应还日期 + // Date -> LocalDate + LocalDate localDueDate = dueDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + boolean after = localDueDate.isAfter(date); + if (after) { + voucherDetail.setSceneCode("15"); + } else { + voucherDetail.setSceneCode("01"); + } + } else if (oweState == 0) { + List jrList = baseMapper.selFinJrList(planDetails.getSid()); + if (null != jrList) { + if (jrList.size() > 0) { + voucherDetail.setSceneCode("03"); + } else { + voucherDetail.setSceneCode("02"); + } + } else { + voucherDetail.setSceneCode("02"); + } + } + if (StringUtils.isNotBlank(planDetails.getBankName())) { + String bankName = planDetails.getBankName(); + voucherDetail.setBankName(bankName); + } + String useOrgSid = planDetails.getUseOrgSid(); + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData(); + if (null != organizationVo) { + generalVoucher.setUseOrgCode(organizationVo.getOrgCode()); + } + LoanRepaymentSchedule schedule = loanRepaymentScheduleService.fetchBySid(planDetails.getScheduleSid()); + if (null != schedule) { + if (StringUtils.isNotBlank(schedule.getCwDeptNo())) { + voucherDetail.setDeptCode(schedule.getCwDeptNo()); + } + } + + 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(v.getActualMoney()); + voucherDetails.add(voucherDetail); + }else{ + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(planDetails.getUseOrgSid()).getData(); + if (null != organizationVo) { + voucher.setAccountBook(organizationVo.getOrgCode()); + voucher.setVoucherNo(organizationVo.getOrgCode()); + } + String customerNumber = ""; + BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(planDetails.getSalesOrderSid()).getData(); + if (null != busSalesOrderVehicle && salesOrder != null) { + + //判断财务系统是否有客户 + Boolean aBoolean = finKingDeeFeign.customerExistState(busSalesOrderVehicle.getTemporaryNo()).getData(); + String linkNo = ""; + BusSalesOrderBorrowerDetailsVo borrowerDetailsVo = busSalesOrderBorrowerFeign.fetchDetailsBySid(busSalesOrderVehicle.getBorrowerSid()).getData(); + if (!aBoolean) { + 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()); + } + } + ResultBean resultBean = finKingDeeFeign.draftBdCustomer(bdCustomer); + if (resultBean.getSuccess()) { + customerNumber = bdCustomer.getFNumber(); + } + } else { + customerNumber = busSalesOrderVehicle.getTemporaryNo(); + } + } + String deptCode = ""; + LoanRepaymentSchedule schedule = loanRepaymentScheduleService.fetchBySid(planDetails.getScheduleSid()); + if (null != schedule) { + if (StringUtils.isNotBlank(schedule.getCwDeptNo())) { + deptCode = schedule.getCwDeptNo(); + } + } + + + if (StringUtils.isNotBlank(planDetails.getBankName())) { + //借方 + Voucher.VoucherResultDetailDto voucherResultDetailDtoJf = new Voucher.VoucherResultDetailDto(); + Voucher.VoucherResultDetailDto voucherResultDetailDtoDf = new Voucher.VoucherResultDetailDto(); + String bankName = planDetails.getBankName(); + DictCommonVo dictCommonVo = dictCommonFeign.selectBykey(bankName, "investorsCode").getData(); + if (null != dictCommonVo) { + voucherResultDetailDtoJf.setSubjectNo(dictCommonVo.getDictValue()); + } + voucherResultDetailDtoJf.setSummary(bankName+"划扣"); + voucherResultDetailDtoDf.setSummary(bankName+"划扣"); + voucherResultDetailDtoDf.setSubjectNo("1201.03.01"); + //核算部门 + voucherResultDetailDtoJf.setDimensionDept(deptCode); + //核算客户 + voucherResultDetailDtoJf.setDimensionCustom(customerNumber); + voucherResultDetailDtoJf.setDebit(v.getActualMoney().toString()); + //核算部门 + voucherResultDetailDtoDf.setDimensionDept(deptCode); + //核算客户 + voucherResultDetailDtoDf.setDimensionCustom(customerNumber); + voucherResultDetailDtoDf.setCredit(v.getActualMoney().toString()); + voucherDetails2.add(voucherResultDetailDtoJf); + voucherDetails2.add(voucherResultDetailDtoDf); + } + + boolean isTrue = false; + List jrList = baseMapper.selFinJrList(planDetails.getSid()); + if (null != jrList) { + if (jrList.size() > 0) { + isTrue = true; + } + } + if(isTrue){ + //借方 + Voucher.VoucherResultDetailDto voucherResultDetailDtoJf = new Voucher.VoucherResultDetailDto(); + voucherResultDetailDtoJf.setSummary(planDetails.getBankName()+"划扣"); + voucherResultDetailDtoJf.setSubjectNo("1133.10.20"); + //核算部门 + voucherResultDetailDtoJf.setDimensionDept(deptCode); + //核算客户 + voucherResultDetailDtoJf.setDimensionCustom(customerNumber); + voucherResultDetailDtoJf.setDebit(v.getActualMoney().toString()); + voucherDetails2.add(voucherResultDetailDtoJf); + Voucher.VoucherResultDetailDto voucherResultDetailDtoDf = new Voucher.VoucherResultDetailDto(); + voucherResultDetailDtoDf.setSummary(planDetails.getBankName()+"划扣"); + voucherResultDetailDtoDf.setSubjectNo("1201.03.01"); + //核算部门 + voucherResultDetailDtoDf.setDimensionDept(deptCode); + //核算客户 + voucherResultDetailDtoDf.setDimensionCustom(customerNumber); + voucherResultDetailDtoDf.setDebit(v.getActualMoney().toString()); + voucherDetails2.add(voucherResultDetailDtoDf); + + } + } + } + } + if(!voucherDetails.isEmpty()){ + generalVoucher.setVoucherDetails(voucherDetails); + finKingDeeFeign.saveBuckleVoucher(generalVoucher); + } + if(!voucherDetails2.isEmpty()){ + voucher.setResultDetails(voucherDetails2); + finKingDeeFeign.saveVoucher(voucher); + } + + } + } + public ResultBean revokeProcess(BuckleTaskQuery query) { ResultBean rb = ResultBean.fireFail(); diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancasecloseapply/LoanCaseCloseApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancasecloseapply/LoanCaseCloseApplyService.java index 2437424352..c33e649080 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancasecloseapply/LoanCaseCloseApplyService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancasecloseapply/LoanCaseCloseApplyService.java @@ -581,16 +581,43 @@ public class LoanCaseCloseApplyService extends MybatisBaseService busVinSidList = loanCaseProgressVehService.selectByMainSid(loanCaseCloseApply.getBusSid()); busVinSidList.removeAll(Collections.singleton(null)); BigDecimal executeExpenseAmount = BigDecimal.ZERO; + Map vinAmountMap = new HashMap<>(); if(!busVinSidList.isEmpty()){ LoanCaseExecuteApply loanCaseExecuteApply = loanCaseProgressExecuteService.selectByBusSid(loanCaseCloseApply.getBusSid()); if(loanCaseExecuteApply != null){ executeExpenseAmount= loanCaseExecuteApply.getExecuteExpenseAmount();//预计申请坏账金额 if(executeExpenseAmount != null){ - executeExpenseAmount = executeExpenseAmount.divide(BigDecimal.valueOf(busVinSidList.size()),2, RoundingMode.HALF_UP); + int size = busVinSidList.size(); + + // 四舍五入到2位小数的平均值 + BigDecimal roundedAverage = executeExpenseAmount.divide(BigDecimal.valueOf(size), 2, RoundingMode.HALF_UP); + // n台车 × roundedAverage + BigDecimal totalRounded = roundedAverage.multiply(BigDecimal.valueOf(size)).setScale(2, RoundingMode.HALF_UP); + + if (executeExpenseAmount.setScale(2, RoundingMode.HALF_UP).compareTo(totalRounded) == 0) { + // 能整除,直接平均 + for (String vinSid : busVinSidList) { + vinAmountMap.put(vinSid, roundedAverage); + } + } else { + // 不能整除,最后一台车补差值 + BigDecimal totalForNMinusOne = roundedAverage.multiply(BigDecimal.valueOf(size - 1)); + BigDecimal lastAmount = executeExpenseAmount.subtract(totalForNMinusOne).setScale(2, RoundingMode.HALF_UP); + + for (int i = 0; i < size; i++) { + String vinSid = busVinSidList.get(i); + if (i == size - 1) { + vinAmountMap.put(vinSid, lastAmount); + } else { + vinAmountMap.put(vinSid, roundedAverage); + } + } + } } } for (int i = 0; i < busVinSidList.size(); i++) { String busVinSid = busVinSidList.get(i); + executeExpenseAmount = vinAmountMap.get(busVinSid); BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData(); String customerNumber = ""; BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(busSalesOrderVehicle.getSalesOrderSid()).getData(); diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancaseexecuteapply/LoanCaseExecuteApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancaseexecuteapply/LoanCaseExecuteApplyService.java index 0d19db0266..523498c133 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancaseexecuteapply/LoanCaseExecuteApplyService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancaseexecuteapply/LoanCaseExecuteApplyService.java @@ -41,6 +41,7 @@ import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerDe import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerFeign; import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle; import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign; +import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusVinStateSetQuery; 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.Voucher; @@ -507,6 +508,13 @@ public class LoanCaseExecuteApplyService extends MybatisBaseService busVinSidList = loanCaseProgressVehService.selectByMainSid(loanCaseExecuteApply.getBusSid()); + BusVinStateSetQuery busVinStateSetQuery = new BusVinStateSetQuery(); + if(busVinSidList.isEmpty()){ + busVinStateSetQuery.setState(12);//执行 + busVinStateSetQuery.setBusVinSidList(busVinSidList); + ResultBean resultBean1 = busSalesOrderVehicleFeign.setRiskState(busVinStateSetQuery); + } try { ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() .setNameFormat("demo-pool-%d").build(); @@ -556,11 +564,39 @@ public class LoanCaseExecuteApplyService extends MybatisBaseService busVinSidList = loanCaseProgressVehService.selectByMainSid(loanCaseExecuteApply.getBusSid()); BigDecimal executeAmountInArear= loanCaseExecuteApply.getExecuteAmountInArear();//其中执行欠款金额 - if(executeAmountInArear != null){ - executeAmountInArear = executeAmountInArear.divide(BigDecimal.valueOf(busVinSidList.size()),2, RoundingMode.HALF_UP); + Map vinAmountMap = new HashMap<>(); + + if (executeAmountInArear != null && !busVinSidList.isEmpty()) { + int size = busVinSidList.size(); + + // 四舍五入到2位小数的平均值 + BigDecimal roundedAverage = executeAmountInArear.divide(BigDecimal.valueOf(size), 2, RoundingMode.HALF_UP); + // n台车 × roundedAverage + BigDecimal totalRounded = roundedAverage.multiply(BigDecimal.valueOf(size)).setScale(2, RoundingMode.HALF_UP); + + if (executeAmountInArear.setScale(2, RoundingMode.HALF_UP).compareTo(totalRounded) == 0) { + // 能整除,直接平均 + for (String vinSid : busVinSidList) { + vinAmountMap.put(vinSid, roundedAverage); + } + } else { + // 不能整除,最后一台车补差值 + BigDecimal totalForNMinusOne = roundedAverage.multiply(BigDecimal.valueOf(size - 1)); + BigDecimal lastAmount = executeAmountInArear.subtract(totalForNMinusOne).setScale(2, RoundingMode.HALF_UP); + + for (int i = 0; i < size; i++) { + String vinSid = busVinSidList.get(i); + if (i == size - 1) { + vinAmountMap.put(vinSid, lastAmount); + } else { + vinAmountMap.put(vinSid, roundedAverage); + } + } + } } for (int i = 0; i < busVinSidList.size(); i++) { String busVinSid = busVinSidList.get(i); + executeAmountInArear = vinAmountMap.get(busVinSid); BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData(); String customerNumber = ""; BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(busSalesOrderVehicle.getSalesOrderSid()).getData(); diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoutboundapply/LoanOutboundApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoutboundapply/LoanOutboundApplyService.java index 27d852bb8f..ea16e9b431 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoutboundapply/LoanOutboundApplyService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoutboundapply/LoanOutboundApplyService.java @@ -620,7 +620,8 @@ public class LoanOutboundApplyService extends MybatisBaseService + + \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepurchaseapply/LoanRepurchaseApplyRest.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepurchaseapply/LoanRepurchaseApplyRest.java index 48b3ef7016..e87c964fea 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepurchaseapply/LoanRepurchaseApplyRest.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepurchaseapply/LoanRepurchaseApplyRest.java @@ -64,6 +64,13 @@ public class LoanRepurchaseApplyRest implements LoanRepurchaseApplyFeign { return loanRepurchaseApplyService.settleRepoInit(query); } + @Override + public ResultBean createPdf(String sid, String userName) { + ResultBean rb = ResultBean.fireFail(); + String pdf = loanRepurchaseApplyService.createPdf(sid, userName); + return rb.success().setData(pdf); + } + @Override public ResultBean submitRecordApplication(SubmitRepurchaseDto dto) { return loanRepurchaseApplyService.submitRecordApplication(dto); diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepurchaseapply/LoanRepurchaseApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepurchaseapply/LoanRepurchaseApplyService.java index 75e7dbb5ed..d1943ae336 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepurchaseapply/LoanRepurchaseApplyService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepurchaseapply/LoanRepurchaseApplyService.java @@ -7,8 +7,14 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.google.common.util.concurrent.ThreadFactoryBuilder; +import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemDetailsVo; +import com.yxt.anrui.base.common.utils.Rule; +import com.yxt.anrui.buscenter.api.bussalesorderreturnveh.BusSalesOrderReturnVehDetailsVo; +import com.yxt.anrui.buscenter.api.bussalesorderreturnvehapply.BusSalesOrderReturnVehApplyDetailsVo; +import com.yxt.anrui.buscenter.api.bussalesorderreturnvehapply.BusSalesOrderReturnVehPdfVo; import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle; import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign; +import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordSourceLCVo; import com.yxt.anrui.flowable.api.flow.FlowableFeign; import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; import com.yxt.anrui.flowable.api.flow2.FlowDelegateQuery; @@ -18,6 +24,7 @@ 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.flow.PCHistTaskListAndCommentList; import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign; import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg; @@ -45,13 +52,18 @@ import com.yxt.anrui.riskcenter.biz.loansettleapply.LoanSettleApplyService; import com.yxt.anrui.riskcenter.biz.loansolutions.LoanSolutionsService; 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.PagerUtil; +import com.yxt.common.base.utils.WordUtils; 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; import com.yxt.messagecenter.api.message.MessageFlowableQuery; +import com.yxt.messagecenter.api.messagelist.MessageList; +import com.yxt.messagecenter.api.messagelist.MessageListFeign; import feign.FeignException; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -64,6 +76,8 @@ import java.util.*; import java.util.concurrent.*; import java.util.stream.Collectors; +import static java.util.Comparator.comparing; + /** * @description: @@ -84,8 +98,6 @@ public class LoanRepurchaseApplyService extends MybatisBaseService listPage(PagerQuery pq) { IPage page = PagerUtil.queryToPage(pq); @@ -413,19 +429,27 @@ public class LoanRepurchaseApplyService extends MybatisBaseService orgSidByPath = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()); - if (orgSidByPath.getSuccess()) { - String userOrgSid = orgSidByPath.getData(); - apply.setUseOrgSid(userOrgSid); - ResultBean organizationVo = sysOrganizationFeign.fetchBySid(userOrgSid); - if (organizationVo.getSuccess()) { - SysOrganizationVo organizationVoData = organizationVo.getData(); - if (null != organizationVoData) { - apply.setUseOrgName(organizationVoData.getName()); - } + String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()).getData(); + apply.setUseOrgSid(useOrgSid); + ResultBean organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid); + if (organizationVo.getSuccess()) { + SysOrganizationVo organizationVoData = organizationVo.getData(); + if (null != organizationVoData) { + apply.setUseOrgName(organizationVoData.getName()); } } apply.setNodeState("待提交"); + String billNo = ""; + String date = DateUtil.format(DateUtil.date(), "yyyyMM"); + SysOrganizationVo sysOrganizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData(); + billNo = "HG" + sysOrganizationVo.getOrgCode() + date; + String i = baseMapper.selectNum(billNo); + if (StringUtils.isNotBlank(i)) { + billNo = Rule.getBillNo(billNo, Integer.valueOf(i).intValue()); + } else { + billNo = Rule.getBillNo(billNo, 0); + } + apply.setBillNo(billNo); baseMapper.insert(apply); LoanRepurchaseBankCostVo bankCostVo = dto.getBankCostVo(); LoanRepurchaseCost bankCost = new LoanRepurchaseCost(); @@ -1095,4 +1119,131 @@ public class LoanRepurchaseApplyService extends MybatisBaseService dataMap = new HashMap(); + //分公司 + String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(data.getOrgPath()).getData(); + SysOrganizationVo sysOrganizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData(); + dataMap.put("orgName", sysOrganizationVo.getName()); + //创建部门 + dataMap.put("deptName", data.getCreateDept()); + //创建人 + dataMap.put("createName", data.getCreateByName()); + //创建日期 + dataMap.put("createTime", data.getApplyDate()); + //办结日期 + dataMap.put("finishTime", DateUtil.formatDate(loanRepurchaseApply.getCloseDate())); + //审批编号 + dataMap.put("billNo", loanRepurchaseApply.getBillNo()); + dataMap.put("vinNo", data.getVinNo()); + dataMap.put("cph", data.getVehMark()); + dataMap.put("kh", data.getCustomerName()); + dataMap.put("dkr", data.getLoanName()); + dataMap.put("dkh", data.getLoanContractNo()); + dataMap.put("zf", data.getBankName()); + dataMap.put("zfh", data.getBankContractNo()); + dataMap.put("jqr", data.getPrepareDate()); + dataMap.put("yq", data.getOverdueMonthPrice()); + dataMap.put("dq", data.getCurrentNotDuePrice()); + dataMap.put("wdq", data.getNotDuePrice()); + dataMap.put("bz", loanRepurchaseApply.getRemarks()); + LoanRepurchaseBankCostVo bankCostVo = data.getBankCostVo(); + dataMap.put("zbzj", bankCostVo.getLoanDeposit()); + dataMap.put("dd", bankCostVo.isTopping() ? "是" : "否"); + dataMap.put("zyh", bankCostVo.getPrice()); + dataMap.put("zdq", bankCostVo.getCurrentNotDuePrice()); + dataMap.put("zwdq", bankCostVo.getNotDuePrice()); + dataMap.put("zlx", bankCostVo.getBankInterest()); + dataMap.put("zmy", bankCostVo.getBankNominalPrice()); + dataMap.put("zwy", bankCostVo.getBankContractLiquidated()); + dataMap.put("zys", bankCostVo.getBankOtherReceivable()); + dataMap.put("zsm", bankCostVo.getOtherReceivableRemarks()); + dataMap.put("zjq", bankCostVo.getBankSettlePrice()); + dataMap.put("zzo", bankCostVo.getBankAccount()); + dataMap.put("zzh", bankCostVo.getAccountName()); + LoanRepurchaseCompanyCostVo companyCostVo = data.getCompanyCostVo(); + dataMap.put("gbzj", companyCostVo.getLoanDeposit()); + dataMap.put("gyh", companyCostVo.getOverduePrice()); + dataMap.put("glx", companyCostVo.getPutBankInterest()); + dataMap.put("gzf", companyCostVo.getFunfCost()); + dataMap.put("gzlx", companyCostVo.getBankOverInterest()); + dataMap.put("gdq", companyCostVo.getCompanyCurrentNotPrice()); + dataMap.put("gwdq", companyCostVo.getBankNotPrice()); + dataMap.put("gfk", companyCostVo.getDeductionAmount()); + dataMap.put("gmy", companyCostVo.getCompanyNominalPrice()); + dataMap.put("gwy", companyCostVo.getContractLiquidated()); + dataMap.put("gfy", companyCostVo.getCompanyOtherPrice()); + dataMap.put("gsm", companyCostVo.getOtherCostRemarks()); + dataMap.put("ghj", companyCostVo.getSettleAll()); + dataMap.put("gjq", companyCostVo.getProfit()); + dataMap.put("hg", data.getAmount()); + dataMap.put("hgsm", data.getBuybacksReason()); + dataMap.put("hgbz", data.getPayRemarks()); + //获取审批记录 + List flowRecordVo = flowableFeignSp.flowRecordAndComment(loanRepurchaseApply.getProcInstId(), "1").getData(); + List finPaymentrecordSourceLCVos = new ArrayList<>(); + for (PCHistTaskListAndCommentList flowTask : flowRecordVo) { + if (flowTask.getFlowableRecordVo() != null) { + Map flowableRecordVo = flowTask.getFlowableRecordVo(); + FinPaymentrecordSourceLCVo finPaymentrecordSourceLCVo = new FinPaymentrecordSourceLCVo(); + List> taskUserInfos = ConstantUtils.getListData(flowableRecordVo, "taskUserInfos"); + Map comment = ConstantUtils.getMap(flowableRecordVo, "comment"); + String assigneeName = (String) taskUserInfos.get(0).get("assigneeName"); + String comment1 = (String) comment.get("comment"); + finPaymentrecordSourceLCVo.setName(assigneeName); + finPaymentrecordSourceLCVo.setComment(comment1); + finPaymentrecordSourceLCVo.setSpsj(flowableRecordVo.get("finishTime").toString()); + finPaymentrecordSourceLCVos.add(finPaymentrecordSourceLCVo); + } else { + Map processCommentVo = flowTask.getProcessCommentVo(); + FinPaymentrecordSourceLCVo finPaymentrecordSourceLCVo = new FinPaymentrecordSourceLCVo(); + finPaymentrecordSourceLCVo.setName(processCommentVo.get("title").toString()); + finPaymentrecordSourceLCVo.setComment(processCommentVo.get("content").toString()); + finPaymentrecordSourceLCVo.setSpsj(processCommentVo.get("time").toString()); + finPaymentrecordSourceLCVos.add(finPaymentrecordSourceLCVo); + } + } + List messages = messageFeign.selectByBusinessSid(data.getSid()).getData(); + if (messages.size() > 0) { + for (Message message : messages) { + FinPaymentrecordSourceLCVo finPaymentrecordSourceLCVo = new FinPaymentrecordSourceLCVo(); + String receiverNames = ""; + List messageLists = messageListFeign.fetchByMainSid(message.getSid()).getData(); + if (messageLists.size() > 0) { + for (MessageList messageList : messageLists) { + receiverNames = receiverNames + messageList.getReceiverName() + ","; + } + } + finPaymentrecordSourceLCVo.setName("系统"); + finPaymentrecordSourceLCVo.setComment("抄送 " + receiverNames.substring(0, receiverNames.lastIndexOf(","))); + finPaymentrecordSourceLCVo.setSpsj(DateUtil.format(message.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + finPaymentrecordSourceLCVos.add(finPaymentrecordSourceLCVo); + } + } + finPaymentrecordSourceLCVos.sort(comparing(FinPaymentrecordSourceLCVo::getSpsj)); + dataMap.put("lcList", finPaymentrecordSourceLCVos); + //下载人 + dataMap.put("downName", userName); + //下载时间 + dataMap.put("downTime", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")); + //获取模板 + //模板路径 + String sourcePath = "D:\\anrui\\upload\\template\\"; + //生成word文件名 + String dateStr = DateUtil.format(new Date(), "yyyyMMdd"); + long seconds = System.currentTimeMillis(); + String typeName = dateStr + seconds + ".doc"; + // 生成文件路径 + String targetPath = sourcePath + dateStr; + WordUtils.creatWord(dataMap, "hgsp", sourcePath, targetPath, typeName); + //新生成的word路径 + String wordPath = targetPath + "\\" + typeName; + //生成出门证文件名 + String pdfName = "回购_" + dateStr + seconds + ".pdf"; + WordUtils.doc2pdf(wordPath, targetPath, pdfName, userName); + return "/template/" + dateStr + "/" + pdfName; + } } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.xml index 2eb65d4bb0..2aaf04272d 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.xml +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.xml @@ -21,7 +21,7 @@ select ifnull(sum(ss.yq_total), 0) - from (SELECT (lrpd.`dueMoney` - SUM(IFNULL(lrh.actualMoney, 0))) AS yq_total - FROM `loan_repayment_plan_details` lrpd - LEFT JOIN `loan_repayment_history` lrh ON lrh.planDetailSid = lrpd.`sid` + from (SELECT (lrpd.dueMoney - SUM(IFNULL(lrh.actualMoney, 0))) AS yq_total + FROM loan_repayment_plan_details lrpd + LEFT JOIN loan_repayment_history lrh ON lrh.planDetailSid = lrpd.sid WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') < #{settingDate} - AND lrpd.`busVinSid` = #{busVinSid} - GROUP BY lrpd.`sid`) ss + AND lrpd.busVinSid = #{busVinSid} + GROUP BY lrpd.sid) ss @@ -196,13 +196,13 @@ FROM ( FROM ( SELECT - lrpd.`dueMoney`, + lrpd.dueMoney, lrpd.sid FROM loan_repayment_plan_details lrpd WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') > DATE_FORMAT(LAST_DAY(#{settingDate}), '%Y-%m-%d') - AND lrpd.`busVinSid` = #{busVinSid} + AND lrpd.busVinSid = #{busVinSid} ) a) b