diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmation.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmation.java index 200072e370..b8c01a2f6a 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmation.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmation.java @@ -91,4 +91,5 @@ public class FinCollectionConfirmation extends BaseEntity { private String busSid; @ApiModelProperty("业务单据编号") private String busNo; + private int first; } diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationDto.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationDto.java index a7d81269d7..6ee167cfd2 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationDto.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationDto.java @@ -51,9 +51,10 @@ import java.util.List; @Data public class FinCollectionConfirmationDto implements Dto { + private static final long serialVersionUID = -403651328937526175L; @ApiModelProperty("用户sid") private String userSid; - @ApiModelProperty("收款确认单sid") + @ApiModelProperty("sid") private String sid; // 收款确认单sid @ApiModelProperty("业务员sid") private String staffSid; // 业务员sid diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedDto.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedDto.java index 4bfe9548e7..d07cf2f8a3 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedDto.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedDto.java @@ -49,7 +49,7 @@ import lombok.Data; @Data public class FinSelectedReceivablesDetailedDto implements Dto { - @ApiModelProperty("创建人接口") + @ApiModelProperty("创建人") private String createByName; // 创建人接口 @ApiModelProperty("合同sid") private String contractSid; // 合同sid @@ -70,8 +70,8 @@ public class FinSelectedReceivablesDetailedDto implements Dto { private String receivablesName; // 应收项目名称 @ApiModelProperty("当前应收金额") private String currentReceivableMoney; // 当前应收金额 - @ApiModelProperty("上次认款金额") - private String lastSubscriptionMoney; // 上次认款金额 + /* @ApiModelProperty("上次认款金额") + private String lastSubscriptionMoney; // 上次认款金额*/ @ApiModelProperty("认款金额") private String subscriptionMoney; // 认款金额 @ApiModelProperty("认款申请日期") diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedVo.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedVo.java index 805e517220..c5839bf2dd 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedVo.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedVo.java @@ -106,4 +106,7 @@ public class FinSelectedReceivablesDetailedVo implements Vo { @ApiModelProperty("款项类型value") private String paymentTypeValue; // 款项类型value + + @ApiModelProperty("应收未收款项sid") + private String receivablesSid; } diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finuncollectedreceivablesdetailed/FinUncollectedReceivablesDetailed.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finuncollectedreceivablesdetailed/FinUncollectedReceivablesDetailed.java index c99f8f7e63..29131d8c94 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finuncollectedreceivablesdetailed/FinUncollectedReceivablesDetailed.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finuncollectedreceivablesdetailed/FinUncollectedReceivablesDetailed.java @@ -85,4 +85,6 @@ public class FinUncollectedReceivablesDetailed extends BaseEntity { @ApiModelProperty("应收金额(不变)") private String reveivableMoney; + + private Integer subscriptionState; } 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 22399bda7e..4c09932536 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 @@ -26,6 +26,7 @@ package com.yxt.anrui.fin.biz.fincollectionconfirmation; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.yxt.anrui.base.api.basevehicle.BaseVehicle; @@ -48,6 +49,7 @@ import com.yxt.anrui.fin.api.finselectedreceivablesdetailed.FinSelectedReceivabl import com.yxt.anrui.fin.api.finselectedreceivablesdetailed.FinSelectedReceivablesDetailedDto; import com.yxt.anrui.fin.api.finselectedreceivablesdetailed.FinSelectedReceivablesDetailedVo; import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.AppFinUncollectedReceivablesDetailedVo; +import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.FinUncollectedReceivablesDetailed; import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.FinUncollectedReceivablesDetailedDto; import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.FinUncollectedReceivablesDetailedVo; import com.yxt.anrui.fin.biz.finselectedreceivablesdetailed.FinSelectedReceivablesDetailedService; @@ -72,6 +74,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * Project: anrui-fin(销售相关)
@@ -203,7 +206,98 @@ public class FinCollectionConfirmationService extends MybatisBaseService finSelectedReceivablesDetailedDtos = dto.getFinSelectedReceivablesDetaileds(); + BigDecimal subscriptionMoneyAll = finSelectedReceivablesDetailedDtos.stream().map(FinSelectedReceivablesDetailedDto::getSubscriptionMoney).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add); + if (subscriptionMoneyAll.compareTo(new BigDecimal(dto.getCollectionMoney())) != 0) { + return rb.setMsg("认款不完全,提交失败"); + } + List paymentVoucherAppendixs = dto.getPaymentVoucherAppendixs(); + if (paymentVoucherAppendixs.size() == 0) { + return rb.setMsg("请上传打款凭证附件"); + } + List remittanceConfirmationAppendixs = dto.getRemittanceConfirmationAppendixs(); + if (remittanceConfirmationAppendixs.size() == 0) { + return rb.setMsg("请上传汇款确认书附件"); + } + //对收款申请进行赋值操作 + FinCollectionConfirmation finCollectionConfirmation = new FinCollectionConfirmation(); + BeanUtil.copyProperties(dto, finCollectionConfirmation, "sid"); + sid = finCollectionConfirmation.getSid(); + //根据用户sid查询分公司sid + String useOrgSid = sysStaffOrgFeign.getPathSidByUserSid(dto.getUserSid()).getData(); + finCollectionConfirmation.setCreateBySid(dto.getUserSid()); + finCollectionConfirmation.setUseOrgSid(useOrgSid); + //附件保存:打款凭证附件 + paymentVoucherAppendixs.stream().forEach(v -> { + CommonAppendixDto commonAppendixDto = new CommonAppendixDto(); + BeanUtil.copyProperties(v, commonAppendixDto); + String s = commonAppendixDto.getFilePath(); + if (s.contains(fileUploadComponent.getUrlPrefix())) { + s = s.replace(fileUploadComponent.getUrlPrefix(), ""); + } + commonAppendixDto.setLinkSid(finCollectionConfirmation.getSid()); + commonAppendixDto.setFilePath(s); + commonAppendixDto.setCreateBySid(dto.getUserSid()); + commonAppendixDto.setAttachType(CommonAttachTypeEnum.PAYMENT_VOUCHER.getAttachType()); + commonAppendixFeign.save(commonAppendixDto); + }); + String payFilePath = paymentVoucherAppendixs.stream().map(v -> v.getFilePath().replace(fileUploadComponent.getUrlPrefix(), "")).collect(Collectors.joining(",")); + finCollectionConfirmation.setPaymentVoucherUrl(payFilePath); + //汇款确认书附件保存 + remittanceConfirmationAppendixs.stream().forEach(v -> { + CommonAppendixDto commonAppendixDto = new CommonAppendixDto(); + BeanUtil.copyProperties(v, commonAppendixDto); + String s = commonAppendixDto.getFilePath(); + if (s.contains(fileUploadComponent.getUrlPrefix())) { + s = s.replace(fileUploadComponent.getUrlPrefix(), ""); + } + commonAppendixDto.setLinkSid(finCollectionConfirmation.getSid()); + commonAppendixDto.setFilePath(s); + commonAppendixDto.setCreateBySid(dto.getUserSid()); + commonAppendixDto.setAttachType(CommonAttachTypeEnum.REMITTAN_CECONFIRMATION.getAttachType()); + commonAppendixFeign.save(commonAppendixDto); + }); + String remFilePath = remittanceConfirmationAppendixs.stream().map(v -> v.getFilePath().replace(fileUploadComponent.getUrlPrefix(), "")).collect(Collectors.joining(",")); + finCollectionConfirmation.setRemittanceConfirmationUrl(remFilePath); + //认款明细保存 + String finalSid = sid; + finSelectedReceivablesDetailedDtos.stream().forEach(v -> {//已选 + FinSelectedReceivablesDetailed finSelectedReceivablesDetailed = new FinSelectedReceivablesDetailed(); + BeanUtil.copyProperties(v, finSelectedReceivablesDetailed, "sid"); + finSelectedReceivablesDetailed.setCollSid(finalSid); + finSelectedReceivablesDetailed.setUseOrgSid(useOrgSid); + //设置审核状态为待审核(1待审核/2已驳回/3已审核) + finSelectedReceivablesDetailed.setAuditState(1); + finSelectedReceivablesDetailedService.insert(finSelectedReceivablesDetailed); + //添加已选车架号为临时状态 + BaseVehicleTempstateDto baseVehicleTempstateDto = new BaseVehicleTempstateDto(); + baseVehicleTempstateDto.setTempStateKey(VehicleStateTempOrLast.PaymentEnum.FIN_PAYMENT.getCode()); + baseVehicleTempstateDto.setTempStateValue(VehicleStateTempOrLast.PaymentEnum.FIN_PAYMENT.getRemarks()); + baseVehicleTempstateDto.setTempKey("1"); + baseVehicleTempstateDto.setTempValue("待审核"); + baseVehicleTempstateDto.setBusSid(finalSid); + //根据合同编号和车架号查询该合同的车辆sid + ResultBean resultBean = busSalesOrderFeign.getVinSidByConSid(v.getContractNo(), v.getVIN()); + if (resultBean.getSuccess()) { + baseVehicleTempstateDto.setVehSid(resultBean.getData()); + } + ResultBean vehicleStateResult = baseVehicleTempstateFeign.save(baseVehicleTempstateDto); + finCollectionConfirmation.setBalance(finCollectionConfirmation.getCollectionMoney()); + finCollectionConfirmation.setAuditState(1); + //1未认款/2部分认款/3已认款 + finCollectionConfirmation.setPaymentState(1); + baseMapper.insert(finCollectionConfirmation); + + }); + + + } else {//认款、多次认款 + + } + /* FinCollectionConfirmation finCollectionConfirmation = new FinCollectionConfirmation(); List finSelectedReceivablesDetailedDtos = dto.getFinSelectedReceivablesDetaileds(); List paymentVoucherAppendixs = dto.getPaymentVoucherAppendixs(); @@ -220,24 +314,6 @@ public class FinCollectionConfirmationService extends MybatisBaseService> sysStaffOrgListByStaffSid = sysStaffOrgFeign.getSysStaffOrgListByStaffSid(staffSid); - List data = sysStaffOrgListByStaffSid.getData(); - String orgSidPath = ""; - for (SysStaffOrgVo datum : data) { - orgSidPath = datum.getOrgSidPath(); - String[] split = orgSidPath.split("/"); - for (String s : split) { - ResultBean sysOrganizationVoResultBean = sysOrganizationFeign.fetchBySid(s); - SysOrganizationVo data1 = sysOrganizationVoResultBean.getData(); - Integer isDept = data1.getIsDept(); - String psid = data1.getPsid(); - if (isDept == 0 && !psid.equals(0)) { - orgSidPath = s; - break; - } - } - }*/ //用户sid String createBySid = dto.getUserSid(); String useOrgSid = sysStaffOrgFeign.getPathSidByUserSid(createBySid).getData(); @@ -298,7 +374,7 @@ public class FinCollectionConfirmationService extends MybatisBaseService finSelectedReceivablesDetailedVos = finSelectedReceivablesDetailedService.fetchByCillSid(sid); BigDecimal totalSubscriptionMone = new BigDecimal(0); @@ -326,16 +402,21 @@ public class FinCollectionConfirmationService extends MybatisBaseService finSelectedReceivablesDetailedVos = finSelectedReceivablesDetailedService.fetchByAuditState(sid, 1); + finSelectedReceivablesDetailedVos.stream().forEach(v -> { + String selectSid = v.getSid(); + FinSelectedReceivablesDetailed finSelectedReceivablesDetailed = finSelectedReceivablesDetailedService.fetchBySid(selectSid); + finSelectedReceivablesDetailed.setAuditDate(DateUtil.today()); + finSelectedReceivablesDetailed.setAuditState(2); + finSelectedReceivablesDetailedService.updateById(finSelectedReceivablesDetailed); + }); + confirmation.setAuditState(2); + baseMapper.updateById(confirmation); + //删除临时表的数据 + ResultBean deleteResult = baseVehicleTempstateFeign.delByBusSid(sid); + + /*baseMapper.cashierReject(sid); int auditState = 1; List finSelectedReceivablesDetailedVos = finSelectedReceivablesDetailedService.fetchByAuditState(sid, auditState); for (FinSelectedReceivablesDetailedVo finSelectedReceivablesDetailedVo : finSelectedReceivablesDetailedVos) { //更新审核时间 finSelectedReceivablesDetailedService.updateAuditDateBySid(finSelectedReceivablesDetailedVo.getSid(), "2"); - /* String vin = finSelectedReceivablesDetailedVo.getVIN(); + String vin = finSelectedReceivablesDetailedVo.getVIN(); String receivablesName = finSelectedReceivablesDetailedVo.getReceivablesName(); BigDecimal subscriptionMoney = new BigDecimal(finSelectedReceivablesDetailedVo.getSubscriptionMoney()); FinUncollectedReceivablesDetailedVo finUncollectedReceivablesDetailedVo = finUncollectedReceivablesDetailedService.fetchByVinAndRecName(vin, receivablesName); String sid1 = finUncollectedReceivablesDetailedVo.getSid(); BigDecimal currentReceivableMoney = new BigDecimal(finUncollectedReceivablesDetailedVo.getCurrentReceivableMoney()); String curRecMoney = String.valueOf(currentReceivableMoney.add(subscriptionMoney)); - finUncollectedReceivablesDetailedService.updateCurRecMoneyBySid(curRecMoney, sid1);*/ + finUncollectedReceivablesDetailedService.updateCurRecMoneyBySid(curRecMoney, sid1); } FinCollectionConfirmation finCollectionConfirmation = fetchBySid(sid); BigDecimal collectionMoney = finCollectionConfirmation.getCollectionMoney(); @@ -858,14 +959,55 @@ public class FinCollectionConfirmationService extends MybatisBaseService finSelectedReceivablesDetailedVos = finSelectedReceivablesDetailedService.fetchByAuditState(sid, 1); + finSelectedReceivablesDetailedVos.stream().forEach(v -> { + //已选款项明细sid + String selectSid = v.getSid(); + //应收未收款项明细sid + String receivablesSid = v.getReceivablesSid(); + FinUncollectedReceivablesDetailed finUncollectedReceivablesDetailed = finUncollectedReceivablesDetailedService.fetchBySid(receivablesSid); + BigDecimal currentReceivableMoney = finUncollectedReceivablesDetailed.getCurrentReceivableMoney(); + //更新当前应收金额 + finUncollectedReceivablesDetailed.setCurrentReceivableMoney(currentReceivableMoney.subtract(new BigDecimal(v.getSubscriptionMoney()))); + //更新认款状态 + finUncollectedReceivablesDetailed.setSubscriptionState(finUncollectedReceivablesDetailed.getCurrentReceivableMoney().compareTo(BigDecimal.ZERO) == 0 ? 3 : 2); + finUncollectedReceivablesDetailedService.updateById(finUncollectedReceivablesDetailed); + FinSelectedReceivablesDetailed finSelectedReceivablesDetailed = finSelectedReceivablesDetailedService.fetchBySid(selectSid); + //更新已选款项明细的审核状态1待审核/2已驳回/3已审核 + finSelectedReceivablesDetailed.setAuditState(3); + //更新审核时间 + finSelectedReceivablesDetailed.setAuditDate(DateUtil.today()); + finSelectedReceivablesDetailedService.updateById(finSelectedReceivablesDetailed); + //ToDo:查询是否符合待出库的条件 + }); + //查询该申请所有的款项明细 + finSelectedReceivablesDetailedVos = finSelectedReceivablesDetailedService.fetchByAuditState(sid, 3); + //查询该申请已认款金额总数 + BigDecimal subscriptionMoneyAll = finSelectedReceivablesDetailedVos.stream().map(FinSelectedReceivablesDetailedVo::getSubscriptionMoney).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add); + //与收款金额作比较:更新认款状态 1未认款/2部分认款/3已认款 + confirmation.setPaymentState(confirmation.getCollectionMoney().compareTo(subscriptionMoneyAll) == 0 ? 3 : subscriptionMoneyAll.compareTo(BigDecimal.ZERO) == 0 ? 1 : 2); + //更新收款申请的余额以及审核状态 + BigDecimal balanceBigDecimal = confirmation.getCollectionMoney().subtract(subscriptionMoneyAll); + confirmation.setBalance(balanceBigDecimal); + confirmation.setAuditState(3); + baseMapper.updateById(confirmation); + //删除临时表的数据 + ResultBean deleteResult = baseVehicleTempstateFeign.delByBusSid(sid); + + + + /* baseMapper.cashierConfirm(sid); int auditState = 1; //总共认款金额 BigDecimal totalSubscriptionMoney = new BigDecimal(0); @@ -881,9 +1023,8 @@ public class FinCollectionConfirmationService extends MybatisBaseService