Browse Source

Merge remote-tracking branch 'origin/master'

zhanglei
ligaode 4 months ago
parent
commit
f679b3f817
  1. 212
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeliveredapply/BusDeliveredApplyService.java
  2. 43
      anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/chunafukuan/chunafukuanguanli/cashier.vue
  3. 46
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Rest.java
  4. 250
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Service.java
  5. 2
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.java
  6. 4
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.xml
  7. 4
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsService.java
  8. 27
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/ScheduledRepaymentPlanDetailsService.java

212
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeliveredapply/BusDeliveredApplyService.java

@ -300,6 +300,7 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
private BusSalesOrderMakeupService busSalesOrderMakeupService; private BusSalesOrderMakeupService busSalesOrderMakeupService;
@Autowired @Autowired
private FinKingDeeFeign finKingDeeFeign; private FinKingDeeFeign finKingDeeFeign;
/** /**
* 构造出库申请的查询条件 * 构造出库申请的查询条件
* *
@ -859,7 +860,7 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
* @param bv * @param bv
* @return * @return
*/ */
public ResultBean complete(BusinessVariables bv) { public ResultBean complete(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
BusDeliveredApply busDeliveredApply = fetchBySid(bv.getBusinessSid()); BusDeliveredApply busDeliveredApply = fetchBySid(bv.getBusinessSid());
bv.setOrgSidPath(busDeliveredApply.getOrgSidPath()); bv.setOrgSidPath(busDeliveredApply.getOrgSidPath());
@ -1190,7 +1191,7 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
SolutionsDetailsVo solutionsDetailsVo = loanSolutionsFeign.selectDetailsss(saleOrderSid).getData(); SolutionsDetailsVo solutionsDetailsVo = loanSolutionsFeign.selectDetailsss(saleOrderSid).getData();
if (solutionsDetailsVo != null) { if (solutionsDetailsVo != null) {
//三方金融的,在出库时推送单车返利数据,金额为厂家贴息。 //三方金融的,在出库时推送单车返利数据,金额为厂家贴息。
if("2".equals(busSalesOrder.getFinancePlan())){ if ("2".equals(busSalesOrder.getFinancePlan())) {
Future future11 = pool.submit(() -> { Future future11 = pool.submit(() -> {
pushVehRebate(busDeliveredApply, detailsList, solutionsDetailsVo.getFactoryDiscount()); pushVehRebate(busDeliveredApply, detailsList, solutionsDetailsVo.getFactoryDiscount());
}); });
@ -1361,7 +1362,7 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
} }
} }
private void pushVehRebateAdjustBill(BusDeliveredApply busDeliveredApply, List<BusDeliveredApplyDetails> detailsList,SolutionsDetailsVo solutionsDetailsVo) { private void pushVehRebateAdjustBill(BusDeliveredApply busDeliveredApply, List<BusDeliveredApplyDetails> detailsList, SolutionsDetailsVo solutionsDetailsVo) {
BigDecimal cjtx = BigDecimal.ZERO;//厂家贴息 BigDecimal cjtx = BigDecimal.ZERO;//厂家贴息
BigDecimal txdck = BigDecimal.ZERO;//贴息抵车款 BigDecimal txdck = BigDecimal.ZERO;//贴息抵车款
if (StringUtils.isNotBlank(solutionsDetailsVo.getFactoryDiscount())) { if (StringUtils.isNotBlank(solutionsDetailsVo.getFactoryDiscount())) {
@ -1424,7 +1425,7 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
scmVehRebateDto.setRebateTypeValue("金融贴息"); scmVehRebateDto.setRebateTypeValue("金融贴息");
scmVehRebateDto.setRebateName("金融贴息"); scmVehRebateDto.setRebateName("金融贴息");
scmVehRebateDto.setCalculationStandard(factoryDiscount); scmVehRebateDto.setCalculationStandard(factoryDiscount);
scmVehRebateDto.setPalceGenDate(DateUtil.format(new Date(),"yyyy-MM")); scmVehRebateDto.setPalceGenDate(DateUtil.format(new Date(), "yyyy-MM"));
scmVehRebateDto.setCalculationModeKey("002"); scmVehRebateDto.setCalculationModeKey("002");
scmVehRebateDto.setCalculationModeValue("固定金额"); scmVehRebateDto.setCalculationModeValue("固定金额");
scmVehRebateDto.setOrgPath(busDeliveredApply.getOrgSidPath()); scmVehRebateDto.setOrgPath(busDeliveredApply.getOrgSidPath());
@ -1679,7 +1680,7 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
SolutionsDetailsVo solutionsDetailsVo = loanSolutionsFeign.selectDetailsss(saleOrderSid).getData(); SolutionsDetailsVo solutionsDetailsVo = loanSolutionsFeign.selectDetailsss(saleOrderSid).getData();
if (solutionsDetailsVo != null) { if (solutionsDetailsVo != null) {
//三方金融的,在出库时推送单车返利数据,金额为厂家贴息。 //三方金融的,在出库时推送单车返利数据,金额为厂家贴息。
if("2".equals(busSalesOrder.getFinancePlan())){ if ("2".equals(busSalesOrder.getFinancePlan())) {
Future future11 = pool.submit(() -> { Future future11 = pool.submit(() -> {
pushVehRebate(busDeliveredApply, detailsList, solutionsDetailsVo.getFactoryDiscount()); pushVehRebate(busDeliveredApply, detailsList, solutionsDetailsVo.getFactoryDiscount());
}); });
@ -3433,79 +3434,82 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
return rb.setMsg("请选择要出库的车辆"); return rb.setMsg("请选择要出库的车辆");
} }
if ("2".equals(busSalesOrder.getPayTypeKey())) {//贷款 if ("2".equals(busSalesOrder.getPayTypeKey())) {//贷款
//先查询该订单下是否有挂车,如果有的话,再根据该订单及车辆查询挂车是否都已入库,若没有全部入库,则提示 if ("01".equals(busSalesOrder.getFinancePlan())) {
boolean isHave = false; //先查询该订单下是否有挂车,如果有的话,再根据该订单及车辆查询挂车是否都已入库,若没有全部入库,则提示
List<BusSalesOrderTrailer> trailersLists = busSalesOrderTrailerService.selectTrailerByContractNo(dto.getContractId()); boolean isHave = false;
trailersLists = trailersLists.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素 List<BusSalesOrderTrailer> trailersLists = busSalesOrderTrailerService.selectTrailerByContractNo(dto.getContractId());
// 如果列表不为空,使用流式操作计算总挂车数量 trailersLists = trailersLists.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
if(!trailersLists.isEmpty()){ // 如果列表不为空,使用流式操作计算总挂车数量
int totalTrailerCount = trailersLists.stream() if (!trailersLists.isEmpty()) {
.mapToInt(BusSalesOrderTrailer::getTrailerCount) // 提取数量 int totalTrailerCount = trailersLists.stream()
.sum(); // 累加所有数量 .mapToInt(BusSalesOrderTrailer::getTrailerCount) // 提取数量
.sum(); // 累加所有数量
if(!carList.isEmpty()){ if (!carList.isEmpty()) {
for (AppCarListVo car : carList) { for (AppCarListVo car : carList) {
//根据车辆sid 查询挂车的数量 //根据车辆sid 查询挂车的数量
List<BaseTrailer> trList = baseMapper.selectTralier(car.getVinSid()); List<BaseTrailer> trList = baseMapper.selectTralier(car.getVinSid());
trList = trList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素 trList = trList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
if(totalTrailerCount != trList.size()){ if (totalTrailerCount != trList.size()) {
isHave = true; isHave = true;
break; break;
}
} }
} }
} }
} if (isHave) {
if(isHave){ LoanHomevisitInvestigateCustomer loanHomevisitInvestigateCustomer = baseMapper.getHomeVisitCustomerInfo(busSalesOrder.getSid(), dto.getLoanSid());
LoanHomevisitInvestigateCustomer loanHomevisitInvestigateCustomer = baseMapper.getHomeVisitCustomerInfo(busSalesOrder.getSid(),dto.getLoanSid()); if ("0".equals(loanHomevisitInvestigateCustomer.getIsCompBuy())) {//是公司采购
if("0".equals(loanHomevisitInvestigateCustomer.getIsCompBuy())){//是公司采购 return rb.setMsg("挂车入库绑定车辆后才可以提交出库申请");
return rb.setMsg("挂车入库绑定车辆后才可以提交出库申请"); }
} }
} boolean issHave = false;
boolean issHave = false; List<BusSalesOrderMakeup> makeUpsList = busSalesOrderMakeupService.selectMakeUpByContractNo2(dto.getContractId());
List<BusSalesOrderMakeup> makeUpsList = busSalesOrderMakeupService.selectMakeUpByContractNo2(dto.getContractId()); makeUpsList = makeUpsList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
makeUpsList = makeUpsList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素 if (!makeUpsList.isEmpty()) {
if(!makeUpsList.isEmpty()){ //查询上装入库中是否有该主车关联的上装
//查询上装入库中是否有该主车关联的上装 if (!carList.isEmpty()) {
if(!carList.isEmpty()){ for (AppCarListVo car : carList) {
for (AppCarListVo car : carList) { //根据车辆sid和合同号查询主车车架号
//根据车辆sid和合同号查询主车车架号 BusSalesOrderVehicle busSalesOrderVehicle = baseMapper.selectVinNoByVehicleSid(car.getVinSid(), dto.getContractId());
BusSalesOrderVehicle busSalesOrderVehicle = baseMapper.selectVinNoByVehicleSid(car.getVinSid(),dto.getContractId()); List<BaseVehinstall> trList = baseMapper.selectInstall(busSalesOrderVehicle.getLinkNo());
List<BaseVehinstall> trList = baseMapper.selectInstall(busSalesOrderVehicle.getLinkNo()); trList = trList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
trList = trList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素 if (trList.isEmpty()) {
if(trList.isEmpty()){ issHave = true;
issHave = true; break;
break; }
} }
} }
} }
} if (issHave) {
if(issHave){ LoanHomevisitInvestigateCustomer loanHomevisitInvestigateCustomer = baseMapper.getHomeVisitCustomerInfo(busSalesOrder.getSid(), dto.getLoanSid());
LoanHomevisitInvestigateCustomer loanHomevisitInvestigateCustomer = baseMapper.getHomeVisitCustomerInfo(busSalesOrder.getSid(),dto.getLoanSid()); if ("0".equals(loanHomevisitInvestigateCustomer.getIsCompBuy())) {//是公司采购
if("0".equals(loanHomevisitInvestigateCustomer.getIsCompBuy())){//是公司采购 return rb.setMsg("上装入库绑定车辆后才可以提交出库申请");
return rb.setMsg("上装入库绑定车辆后才可以提交出库申请"); }
}
}
} }
}else{
} else {
boolean issHave = false; boolean issHave = false;
List<BusSalesOrderMakeup> makeUpsList = busSalesOrderMakeupService.selectMakeUpByContractNo(dto.getContractId()); List<BusSalesOrderMakeup> makeUpsList = busSalesOrderMakeupService.selectMakeUpByContractNo(dto.getContractId());
makeUpsList = makeUpsList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素 makeUpsList = makeUpsList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
if(!makeUpsList.isEmpty()){ if (!makeUpsList.isEmpty()) {
//查询上装入库中是否有该主车关联的上装 //查询上装入库中是否有该主车关联的上装
if(!carList.isEmpty()){ if (!carList.isEmpty()) {
for (AppCarListVo car : carList) { for (AppCarListVo car : carList) {
//根据车辆sid和合同号查询主车车架号 //根据车辆sid和合同号查询主车车架号
BusSalesOrderVehicle busSalesOrderVehicle = baseMapper.selectVinNoByVehicleSid(car.getVinSid(),dto.getContractId()); BusSalesOrderVehicle busSalesOrderVehicle = baseMapper.selectVinNoByVehicleSid(car.getVinSid(), dto.getContractId());
List<BaseVehinstall> trList = baseMapper.selectInstall(busSalesOrderVehicle.getLinkNo()); List<BaseVehinstall> trList = baseMapper.selectInstall(busSalesOrderVehicle.getLinkNo());
trList = trList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素 trList = trList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
if(trList.isEmpty()){ if (trList.isEmpty()) {
issHave = true; issHave = true;
break; break;
} }
} }
} }
} }
if(issHave){ if (issHave) {
return rb.setMsg("上装入库绑定车辆后才可以提交出库申请"); return rb.setMsg("上装入库绑定车辆后才可以提交出库申请");
} }
} }
@ -4424,79 +4428,81 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
} }
//===================== //=====================
if ("2".equals(busSalesOrder.getPayTypeKey())) {//贷款 if ("2".equals(busSalesOrder.getPayTypeKey())) {//贷款
//先查询该订单下是否有挂车,如果有的话,再根据该订单及车辆查询挂车是否都已入库,若没有全部入库,则提示 if ("01".equals(busSalesOrder.getFinancePlan())) {
boolean isHave = false; //先查询该订单下是否有挂车,如果有的话,再根据该订单及车辆查询挂车是否都已入库,若没有全部入库,则提示
List<BusSalesOrderTrailer> trailersLists = busSalesOrderTrailerService.selectTrailerByContractNo(dto.getContractId()); boolean isHave = false;
trailersLists = trailersLists.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素 List<BusSalesOrderTrailer> trailersLists = busSalesOrderTrailerService.selectTrailerByContractNo(dto.getContractId());
// 如果列表不为空,使用流式操作计算总挂车数量 trailersLists = trailersLists.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
if(!trailersLists.isEmpty()){ // 如果列表不为空,使用流式操作计算总挂车数量
int totalTrailerCount = trailersLists.stream() if (!trailersLists.isEmpty()) {
.mapToInt(BusSalesOrderTrailer::getTrailerCount) // 提取数量 int totalTrailerCount = trailersLists.stream()
.sum(); // 累加所有数量 .mapToInt(BusSalesOrderTrailer::getTrailerCount) // 提取数量
.sum(); // 累加所有数量
if(!carList.isEmpty()){ if (!carList.isEmpty()) {
for (AppCarListVo car : carList) { for (AppCarListVo car : carList) {
//根据车辆sid 查询挂车的数量 //根据车辆sid 查询挂车的数量
List<BaseTrailer> trList = baseMapper.selectTralier(car.getVinSid()); List<BaseTrailer> trList = baseMapper.selectTralier(car.getVinSid());
trList = trList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素 trList = trList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
if(totalTrailerCount != trList.size()){ if (totalTrailerCount != trList.size()) {
isHave = true; isHave = true;
break; break;
}
} }
} }
} }
} if (isHave) {
if(isHave){ LoanHomevisitInvestigateCustomer loanHomevisitInvestigateCustomer = baseMapper.getHomeVisitCustomerInfo(busSalesOrder.getSid(), dto.getLoanSid());
LoanHomevisitInvestigateCustomer loanHomevisitInvestigateCustomer = baseMapper.getHomeVisitCustomerInfo(busSalesOrder.getSid(),dto.getLoanSid()); if ("0".equals(loanHomevisitInvestigateCustomer.getIsCompBuy())) {//是公司采购
if("0".equals(loanHomevisitInvestigateCustomer.getIsCompBuy())){//是公司采购 return rb.setMsg("挂车入库绑定车辆后才可以提交出库申请");
return rb.setMsg("挂车入库绑定车辆后才可以提交出库申请"); }
} }
} boolean issHave = false;
boolean issHave = false; List<BusSalesOrderMakeup> makeUpsList = busSalesOrderMakeupService.selectMakeUpByContractNo2(dto.getContractId());
List<BusSalesOrderMakeup> makeUpsList = busSalesOrderMakeupService.selectMakeUpByContractNo2(dto.getContractId()); makeUpsList = makeUpsList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
makeUpsList = makeUpsList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素 if (!makeUpsList.isEmpty()) {
if(!makeUpsList.isEmpty()){ //查询上装入库中是否有该主车关联的上装
//查询上装入库中是否有该主车关联的上装 if (!carList.isEmpty()) {
if(!carList.isEmpty()){ for (AppCarListVo car : carList) {
for (AppCarListVo car : carList) { //根据车辆sid和合同号查询主车车架号
//根据车辆sid和合同号查询主车车架号 BusSalesOrderVehicle busSalesOrderVehicle = baseMapper.selectVinNoByVehicleSid(car.getVinSid(), dto.getContractId());
BusSalesOrderVehicle busSalesOrderVehicle = baseMapper.selectVinNoByVehicleSid(car.getVinSid(),dto.getContractId()); List<BaseVehinstall> trList = baseMapper.selectInstall(busSalesOrderVehicle.getLinkNo());
List<BaseVehinstall> trList = baseMapper.selectInstall(busSalesOrderVehicle.getLinkNo()); trList = trList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
trList = trList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素 if (trList.isEmpty()) {
if(trList.isEmpty()){ issHave = true;
issHave = true; break;
break; }
} }
} }
} }
} if (issHave) {
if(issHave){ LoanHomevisitInvestigateCustomer loanHomevisitInvestigateCustomer = baseMapper.getHomeVisitCustomerInfo(busSalesOrder.getSid(), dto.getLoanSid());
LoanHomevisitInvestigateCustomer loanHomevisitInvestigateCustomer = baseMapper.getHomeVisitCustomerInfo(busSalesOrder.getSid(),dto.getLoanSid()); if ("0".equals(loanHomevisitInvestigateCustomer.getIsCompBuy())) {//是公司采购
if("0".equals(loanHomevisitInvestigateCustomer.getIsCompBuy())){//是公司采购 return rb.setMsg("上装入库绑定车辆后才可以提交出库申请");
return rb.setMsg("上装入库绑定车辆后才可以提交出库申请"); }
}
}
} }
}else{ } else {
boolean issHave = false; boolean issHave = false;
List<BusSalesOrderMakeup> makeUpsList = busSalesOrderMakeupService.selectMakeUpByContractNo(dto.getContractId()); List<BusSalesOrderMakeup> makeUpsList = busSalesOrderMakeupService.selectMakeUpByContractNo(dto.getContractId());
makeUpsList = makeUpsList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素 makeUpsList = makeUpsList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
if(!makeUpsList.isEmpty()){ if (!makeUpsList.isEmpty()) {
//查询上装入库中是否有该主车关联的上装 //查询上装入库中是否有该主车关联的上装
if(!carList.isEmpty()){ if (!carList.isEmpty()) {
for (AppCarListVo car : carList) { for (AppCarListVo car : carList) {
//根据车辆sid和合同号查询主车车架号 //根据车辆sid和合同号查询主车车架号
BusSalesOrderVehicle busSalesOrderVehicle = baseMapper.selectVinNoByVehicleSid(car.getVinSid(),dto.getContractId()); BusSalesOrderVehicle busSalesOrderVehicle = baseMapper.selectVinNoByVehicleSid(car.getVinSid(), dto.getContractId());
List<BaseVehinstall> trList = baseMapper.selectInstall(busSalesOrderVehicle.getLinkNo()); List<BaseVehinstall> trList = baseMapper.selectInstall(busSalesOrderVehicle.getLinkNo());
trList = trList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素 trList = trList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
if(trList.isEmpty()){ if (trList.isEmpty()) {
issHave = true; issHave = true;
break; break;
} }
} }
} }
} }
if(issHave){ if (issHave) {
return rb.setMsg("上装入库绑定车辆后才可以提交出库申请"); return rb.setMsg("上装入库绑定车辆后才可以提交出库申请");
} }
} }

43
anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/chunafukuan/chunafukuanguanli/cashier.vue

@ -480,16 +480,12 @@ export default {
this.getList() this.getList()
}, },
changePayBankAccount(value) { changePayBankAccount(value) {
let bb = null const choose = this.payBankAccount_list.filter((item) => item.bankAccount === value)
this.payBankAccount_list.forEach((e) => { if (choose !== null && choose.length > 0) {
if (e.bankAccount === value) { this.formobj.payBank = choose[0].accountName
bb = { } else {
name: e.accountName, this.formobj.payBank = ''
value: e.bankAccount }
}
}
})
this.formobj.payBank = bb.name
}, },
handleSelectionChange(row) { handleSelectionChange(row) {
console.log('aaa', row) console.log('aaa', row)
@ -573,16 +569,27 @@ export default {
}, },
changerRceiveCompany(value) { changerRceiveCompany(value) {
const choose = this.receiveCompany_list.filter((item) => item.name === value) const choose = this.receiveCompany_list.filter((item) => item.name === value)
this.formobj.payCode = choose[0].payCode if (choose !== null && choose.length > 0) {
getBankList({ sid: choose[0].sid }).then((res) => { this.formobj.payCode = choose[0].payCode
if (res.success) { getBankList({ sid: choose[0].sid }).then((res) => {
this.receiveBankAccount_list = res.data if (res.success) {
} this.receiveBankAccount_list = res.data
}) }
})
} else {
this.formobj.payCode = ''
this.formobj.receiveBankAccount = ''
this.formobj.receiveBank = ''
this.receiveBankAccount_list = []
}
}, },
changeReceiveBankAccount(value) { changeReceiveBankAccount(value) {
const choose = this.receiveBankAccount_list.filter((item) => item.receiveBankAccount === value) const choose = this.receiveBankAccount_list.filter((item) => item.receiveBankAccount === value)
this.formobj.receiveBank = choose[0].receiveBank if (choose !== null && choose.length > 0) {
this.formobj.receiveBank = choose[0].receiveBank
} else {
this.formobj.receiveBank = ''
}
}, },
handleGetCheck(row) { handleGetCheck(row) {
this.dialogImgVisible = true this.dialogImgVisible = true
@ -649,7 +656,7 @@ export default {
this.formobj.receiveCompany = row.receiveCompany this.formobj.receiveCompany = row.receiveCompany
this.formobj.receiveBankAccount = row.receiveBankAccount this.formobj.receiveBankAccount = row.receiveBankAccount
this.formobj.receiveBank = row.receiveBank this.formobj.receiveBank = row.receiveBank
this.formobj.payCode = row.payCode this.changerRceiveCompany(this.formobj.receiveCompany)
this.formobj.payWayValue = row.payWayValue this.formobj.payWayValue = row.payWayValue
this.changePayWay(row.payWayValue) this.changePayWay(row.payWayValue)
const aa = [] const aa = []

46
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Rest.java

@ -0,0 +1,46 @@
package com.yxt.anrui.flowable.biz.flow3;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.common.core.result.ResultBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
/**
* @description:
* @author: dimengzhe
* @date: 2025/1/24
**/
@RestController
@RequestMapping("v3/flow")
public class Flow3Rest {
@Autowired
private Flow3Service flowService;
public ResultBean<UpdateFlowFieldVo> startProcess2(BusinessVariables bv) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
//获取表单中的参数
Map<String, Object> formVariables = bv.getFormVariables();
formVariables = formVariables == null ? new HashMap<>() : formVariables;
//发起人的组织全路径
String orgPath = bv.getOrgSidPath();
formVariables.put("createrOrgPath", orgPath);
formVariables.put("businessSid", bv.getBusinessSid());
//启动流程实例
ResultBean<UpdateFlowFieldVo> startResultBean = flowService.businessStartProcessInstanceById2(bv);
return startResultBean;
}
@PostMapping("/submit2")
public ResultBean submit222() {
return flowService.submit222();
}
}

250
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Service.java

@ -0,0 +1,250 @@
package com.yxt.anrui.flowable.biz.flow3;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flowcomment.FlowComment;
import com.yxt.anrui.flowable.biz.flowtask.FlowTaskService;
import com.yxt.anrui.flowable.biz.process.ProcessService;
import com.yxt.anrui.flowable.biz.processcomment.ProcessCommentService;
import com.yxt.anrui.flowable.common.ProcessConstants;
import com.yxt.anrui.flowable.feign.MessageFeign;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigFeign;
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.common.core.result.ResultBean;
import org.flowable.engine.*;
import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.flowable.engine.repository.Deployment;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.identitylink.service.IdentityLinkService;
import org.flowable.task.api.Task;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PostMapping;
import java.util.*;
import static org.junit.Assert.*;
/**
* @description:
* @author: dimengzhe
* @date: 2025/1/24
**/
@Service
public class Flow3Service {
@Autowired
RepositoryService repositoryService;
@Autowired
RuntimeService runtimeService;
@Autowired
ManagementService managementService;
@Autowired
ProcessEngineConfigurationImpl processEngineConfiguration;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
protected IdentityService identityService;
@Autowired
protected TaskService taskService;
@Autowired
private SysFlowableConfigFeign sysFlowableConfigFeign;
@Autowired
private FlowTaskService flowTaskService;
@Autowired
private ProcessCommentService processCommentService;
@Autowired
protected HistoryService historyService;
@Autowired
private ProcessService processService;
@Autowired
private MessageFeign messageFeign;
@Autowired
private SysFlowccFeign sysFlowccFeign;
/**
* 启动流程
*
* @param bv
* @return
*/
public ResultBean<UpdateFlowFieldVo> businessStartProcessInstanceById2(BusinessVariables bv) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
UpdateFlowFieldVo updateFlowFieldVo = new UpdateFlowFieldVo();
String procDefId = bv.getModelId();
String userSid = bv.getUserSid();
String nextNodeUserSids = bv.getNextNodeUserSids();
Map<String, Object> variables = bv.getFormVariables();
Map<String, Object> variablesSeconds = bv.getFormVariables();
//根据流程定义id查询
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(procDefId)
.latestVersion().singleResult();
if (Objects.nonNull(processDefinition) && processDefinition.isSuspended()) {
return rb.setMsg("流程已被挂起,请先激活流程");
}
// 设置流程发起人Id到流程中
ResultBean<SysUserVo> sysUserVoResultBean = sysUserFeign.fetchBySid(userSid);
SysUserVo sysUser = sysUserVoResultBean.getData();
identityService.setAuthenticatedUserId(sysUser.getSid());
variables.put(ProcessConstants.PROCESS_INITIATOR, userSid);
variables.put(ProcessConstants.USER_TYPE_ASSIGNEE, userSid);
ProcessInstance processInstance = runtimeService.startProcessInstanceById(procDefId, variables);
// 给第一步申请人节点设置任务执行人和意见 todo:第一个节点不设置为申请人节点有点问题?
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId()).singleResult();
if (Objects.nonNull(task)) {
taskService.addComment(task.getId(), processInstance.getProcessInstanceId(), FlowComment.START.getType(),
sysUser.getName() + "发起流程申请");
taskService.setAssignee(task.getId(), userSid);
taskService.complete(task.getId(), variables);
}
List<String> aggigneeList = (List<String>) variables.get("approvers");
// 获取多实例任务的所有实例
List<Task> tasks = taskService.createTaskQuery()
.processInstanceId(processInstance.getProcessInstanceId()) // 使用流程实例ID进行过滤
.taskDefinitionKey("Activity_1f8o20w") // 指定多实例任务的定义Key
.list(); // 查询所有相关的任务实例
// 确保查询到了多条任务实例
if (!tasks.isEmpty()) {
// 遍历任务列表并为每个任务设置执行人
for (int i = 0; i < tasks.size(); i++) {
Task taskss = tasks.get(i);
// 确保任务和用户数量匹配,避免索引越界
if (i < aggigneeList.size()) {
String assignee = aggigneeList.get(i); // 获取用户
taskService.setAssignee(taskss.getId(), assignee); // 为任务设置执行人
}
}
}
return rb.success().setData(updateFlowFieldVo).setMsg("流程启动成功");
}
public ResultBean submit222() {
String userSid = "7f56f6ec-4a5f-47b0-aaab-158d64cb97b1";
// 或签任务候选人
List<String> userIds = new ArrayList<>();
userIds.add("dc6b9e36-1b31-4b94-908b-d2d7f78a0977");
userIds.add("657bf5a5-7665-440e-9cbd-ab87eccfbdcc");
userIds.add("2737e5ee-5ffd-4127-919b-e6694dfc8361");
// 会签任务候选人
List<String> approvers = new ArrayList<>();
approvers.add("1d85d1fe-e527-4ec5-a5e4-c37a76a36518");
approvers.add("64e289bc-80cd-487a-9498-5ae61e260f71");
approvers.add("7ffcd76a-4fa0-4c9c-87ca-a0c2116bb2ed");
Map<String, Object> variables = new HashMap<>();
variables.put("userSids", userIds);
variables.put("approvers", approvers);
variables.put(ProcessConstants.PROCESS_INITIATOR, userSid);
variables.put(ProcessConstants.USER_TYPE_ASSIGNEE, userSid);
// 设置流程发起人Id到流程中
ResultBean<SysUserVo> sysUserVoResultBean = sysUserFeign.fetchBySid(userSid);
SysUserVo sysUser = sysUserVoResultBean.getData();
identityService.setAuthenticatedUserId(sysUser.getSid());
// 启动流程实例
ProcessInstance processInstance = runtimeService.startProcessInstanceById("process_rrqxpsu8:5:16907561", variables);
// 断言流程实例是否成功启动
assertNotNull(processInstance);
System.out.println("流程实例ID: " + processInstance.getId());
// 查询用户任务
List<Task> tasks = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list();
// 模拟申请人完成任务
for (int i = 0; i < tasks.size(); i++) {
Task task = tasks.get(i);
taskService.complete(task.getId(), variables);
}
tasks = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list();
assertEquals(approvers.size(), tasks.size());
// 验证每个任务是否正确分配给指定的用户
for (Task task : tasks) {
System.out.println("用户任务ID: " + task.getId());
System.out.println("任务名称: " + task.getName());
System.out.println("任务分配给的执行人员: " + task.getAssignee());
// 添加候选人
for (String approver : approvers) {
taskService.addCandidateUser(task.getId(), approver); // 将候选人添加到任务
}
// 验证任务分配给的执行人员(此时任务没有assignee)
assertNull(task.getAssignee()); // 确保没有直接分配执行人员
// 验证任务分配给的执行人员
// assertTrue(approvers.contains(task.getAssignee()));
}
//为候选人分配 任务
for (int i = 0; i < tasks.size(); i++) {
Task task = tasks.get(i);
taskService.claim(task.getId(), approvers.get(i)); // 由候选人认领任务
}
// 模拟两个用户完成任务
for (int i = 0; i < 2; i++) {
Task task = tasks.get(i);
taskService.complete(task.getId());
}
// 检查流程实例是否仍然处于活动状态
boolean isEnded = runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstance.getId())
.singleResult() == null;
assertFalse(isEnded);
// 处理最后一个人
Task lastTask = tasks.get(tasks.size() - 1);
taskService.complete(lastTask.getId());
//======================================================================================
//===或签任务
List<Task> approvalTasks = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list();
//为候选人分配 任务
for (int i = 0; i < approvalTasks.size(); i++) {
Task task = approvalTasks.get(i);
taskService.claim(task.getId(), userIds.get(0)); // 由候选人认领任务
}
// 模拟只有一个人完成任务
approvalTasks = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list();
Task approvalTask = approvalTasks.get(0);
taskService.complete(approvalTask.getId());
//==待定
// 手动更新历史记录中的 `ASSIGNEE_` 和 `END_TIME_`
HistoricTaskInstance historicTask = historyService.createHistoricTaskInstanceQuery()
.taskId(approvalTask.getId()).singleResult();
if (historicTask != null) {
// 只有在实际完成的用户任务记录中才更新这些字段
System.out.println("Task completed by: " + historicTask.getAssignee());
System.out.println("Task end time: " + historicTask.getEndTime());
}
//======================================================================================
//===总经理审批
List<Task> approvalTasks2 = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list();
Task approvalTask2 = approvalTasks2.get(0);
taskService.claim(approvalTask2.getId(), "503efb39-7889-4185-807f-624271a951aa");
taskService.complete(approvalTask2.getId());
// 检查流程实例是否已经结束
boolean isEnded2 = runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstance.getId())
.singleResult() == null;
assertTrue(isEnded2);
return ResultBean.fireSuccess();
}
}

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

@ -101,4 +101,6 @@ public interface LoanRepaymentPlanDetailsMapper extends BaseMapper<LoanRepayment
List<AppRepaymentPlanRecord> selByMainSidAndVinNo(@Param("scheduleSid") String scheduleSid, @Param("vinNo") String vinNo); List<AppRepaymentPlanRecord> selByMainSidAndVinNo(@Param("scheduleSid") String scheduleSid, @Param("vinNo") String vinNo);
void updatePaymentMoneyBySids(@Param("planSids") List<String> planSids); void updatePaymentMoneyBySids(@Param("planSids") List<String> planSids);
int updateDataTime(@Param("format") String format);
} }

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

@ -603,6 +603,10 @@
#{planSid} #{planSid}
</foreach> </foreach>
</update> </update>
<update id="updateDataTime">
update loan_repayment_plan_details
set updateTime =#{format}
</update>
<select id="selVehSidAndPeriod" <select id="selVehSidAndPeriod"

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

@ -368,4 +368,8 @@ public class LoanRepaymentPlanDetailsService extends MybatisBaseService<LoanRepa
public void updatePaymentMoneyBySids(List<String> sids) { public void updatePaymentMoneyBySids(List<String> sids) {
baseMapper.updatePaymentMoneyBySids(sids); baseMapper.updatePaymentMoneyBySids(sids);
} }
public int updateDataTime(String format) {
return baseMapper.updateDataTime(format);
}
} }

27
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/ScheduledRepaymentPlanDetailsService.java

@ -1,9 +1,6 @@
package com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails; package com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.math.Money;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemDetailsVo; import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemDetailsVo;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemFeign; import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemFeign;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder; import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
@ -12,21 +9,16 @@ import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerDe
import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerFeign; import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerFeign;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle; import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign; import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJRFeign;
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign; import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign;
import com.yxt.anrui.fin.api.kingdee.bdcustomer.BdCustomer; import com.yxt.anrui.fin.api.kingdee.bdcustomer.BdCustomer;
import com.yxt.anrui.fin.api.kingdee.voucher.GeneralVoucher; import com.yxt.anrui.fin.api.kingdee.voucher.GeneralVoucher;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign; import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo; import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.riskcenter.api.loanfundday.LoanFundDay;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecord;
import com.yxt.anrui.riskcenter.api.loanpushfundhistory.LoanPushFundHistory; import com.yxt.anrui.riskcenter.api.loanpushfundhistory.LoanPushFundHistory;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.utils.CollectorsUtil; import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.HistoryOverDueVo;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanPlanDetailsVoForFundVoucher; import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanPlanDetailsVoForFundVoucher;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanPlanDetailsVoForLateVoucher; import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanPlanDetailsVoForLateVoucher;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanRepaymentSchedule; import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanRepaymentSchedule;
import com.yxt.anrui.riskcenter.biz.loanfundday.LoanFundDayService;
import com.yxt.anrui.riskcenter.biz.loanpushfundhistory.LoanPushFundHistoryService; import com.yxt.anrui.riskcenter.biz.loanpushfundhistory.LoanPushFundHistoryService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentschedule.LoanRepaymentScheduleService; import com.yxt.anrui.riskcenter.biz.loanrepaymentschedule.LoanRepaymentScheduleService;
import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.result.ResultBean;
@ -39,7 +31,6 @@ import java.math.BigDecimal;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* @description: * @description:
@ -74,6 +65,8 @@ public class ScheduledRepaymentPlanDetailsService {
@Scheduled(cron = "0 0 2 1 * ?") @Scheduled(cron = "0 0 2 1 * ?")
public void pushLateVoucher() { public void pushLateVoucher() {
Date date = new Date(); Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
int t = loanRepaymentPlanDetailsService.updateDataTime(sdf.format(date)); //修改数据更新日期
Calendar calendar = Calendar.getInstance();//new一个Calendar类,把Date放进去 Calendar calendar = Calendar.getInstance();//new一个Calendar类,把Date放进去
calendar.setTime(date); calendar.setTime(date);
calendar.add(Calendar.DATE, -1); calendar.add(Calendar.DATE, -1);
@ -82,6 +75,20 @@ public class ScheduledRepaymentPlanDetailsService {
useOrgSidList.removeAll(Collections.singleton(null)); useOrgSidList.removeAll(Collections.singleton(null));
if (!useOrgSidList.isEmpty()) { if (!useOrgSidList.isEmpty()) {
for (String u : useOrgSidList) { for (String u : useOrgSidList) {
//判断当期是否逾期
List<HistoryOverDueVo> overDueVoList = loanRepaymentPlanDetailsService.overDueVoList(u);
if (!overDueVoList.isEmpty()) {
List<String> planSids = new ArrayList<>();
overDueVoList.stream().forEach(v -> {
if (v.getOverdueState().equals("0")) {
planSids.add(v.getPlanSid());
}
});
if (!planSids.isEmpty()) {
int i = loanRepaymentPlanDetailsService.updateOverDueState(planSids);
}
}
//查询是否符合转累欠
List<LoanPlanDetailsVoForLateVoucher> records = loanRepaymentPlanDetailsService.selListForLateVoucher(u); List<LoanPlanDetailsVoForLateVoucher> records = loanRepaymentPlanDetailsService.selListForLateVoucher(u);
List<String> planSids = new ArrayList<>(); List<String> planSids = new ArrayList<>();
if (!records.isEmpty()) { if (!records.isEmpty()) {

Loading…
Cancel
Save