Browse Source

Merge remote-tracking branch 'origin/master'

master
God 2 years ago
parent
commit
71ed1655cf
  1. 3
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basedistributor/BaseDistributorService.java
  2. 3
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basedistributorapply/BaseDistributorApplyService.java
  3. 4
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdeliveredapply/BusDeliveredApplyFeign.java
  4. 5
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdeliveredapply/BusDeliveredApplyFeignFallback.java
  5. 25
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdeliveredapply/DeliveredDelegateQuery.java
  6. 2
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationMapper.java
  7. 7
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationMapper.xml
  8. 4
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationService.java
  9. 6
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdelivered/BusDeliveredMapper.xml
  10. 5
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeliveredapply/BusDeliveredApplyRest.java
  11. 105
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeliveredapply/BusDeliveredApplyService.java
  12. 2
      anrui-buscenter/anrui-buscenter-ui/src/api/tesheshenpi/debtrelease.js
  13. 11
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempListVo.java
  14. 49
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempMapper.xml
  15. 2
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincompanyinvoicing/FinCompanyInvoicingDto.java
  16. 5
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincompanyinvoicing/FinCompanyInvoicingFeign.java
  17. 5
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincompanyinvoicing/FinCompanyInvoicingFeignFallback.java
  18. 6
      anrui-fin/anrui-fin-biz/pom.xml
  19. 3
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincompanyinvoicing/FinCompanyInvoicingMapper.java
  20. 1
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincompanyinvoicing/FinCompanyInvoicingMapper.xml
  21. 5
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincompanyinvoicing/FinCompanyInvoicingRest.java
  22. 11
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincompanyinvoicing/FinCompanyInvoicingService.java
  23. 3
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowcomment/FlowComment.java
  24. 1
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java
  25. 2
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow2/FlowService.java
  26. 38
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysparameter/SysParameterEnum.java
  27. BIN
      anrui-reportcenter-ui/public/favicon.ico
  28. BIN
      anrui-reportcenter-ui/public/image/liuchengtu.jpg
  29. 17
      anrui-reportcenter-ui/public/index.html
  30. 28
      anrui-riskcenter-ui/src/api/Common/dictcommons.js
  31. 113
      anrui-riskcenter-ui/src/api/delinquentcustomerfiling/delinquentcustomerfiling.js
  32. 40
      anrui-riskcenter-ui/src/router/index.js
  33. 413
      anrui-riskcenter-ui/src/views/delinquentcustomerfiling/delinquentcustomerfiling.vue
  34. 682
      anrui-riskcenter-ui/src/views/delinquentcustomerfiling/delinquentcustomerfilingAdd.vue
  35. 319
      anrui-riskcenter-ui/src/views/delinquentcustomerfiling/delinquentcustomerfilingInfo.vue
  36. 562
      anrui-riskcenter-ui/src/views/workFlow/qiankuanbeianFlow/delinquentcustomerfilingDaiBan.vue
  37. 640
      anrui-riskcenter-ui/src/views/workFlow/qiankuanbeianFlow/delinquentcustomerfilingEdit.vue
  38. 348
      anrui-riskcenter-ui/src/views/workFlow/qiankuanbeianFlow/delinquentcustomerfilingYiBan.vue
  39. 89
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/LoanCustomerRecord.java
  40. 95
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/LoanCustomerRecordDetailsVo.java
  41. 95
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/LoanCustomerRecordDto.java
  42. 133
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/LoanCustomerRecordFeign.java
  43. 93
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/LoanCustomerRecordFeignFallback.java
  44. 55
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/LoanCustomerRecordQuery.java
  45. 55
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/LoanCustomerRecordVo.java
  46. 21
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/LoanFinCompanyInvoicingVo.java
  47. 21
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/app/AppCustomerRecordQuery.java
  48. 56
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/app/AppCustomerRecordVo.java
  49. 41
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/flow/CustomerRecordCompleteDto.java
  50. 26
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/flow/CustomerRecordDelegateQuery.java
  51. 56
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/flow/CustomerRecordTaskQuery.java
  52. 26
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/flow/GetNodeQuery.java
  53. 25
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/flow/GetNodeVo.java
  54. 20
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/flow/SubmitCustomerRecordDto.java
  55. 45
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecordstaff/LoanCustomerRecordStaff.java
  56. 26
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecordstaff/LoanCustomerRecordStaffDto.java
  57. 57
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecordstaff/LoanCustomerRecordStaffFeign.java
  58. 32
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecordstaff/LoanCustomerRecordStaffFeignFallback.java
  59. 25
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecordstaff/LoanCustomerRecordStaffVo.java
  60. 5
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfile/LoanFileEnum.java
  61. 13
      anrui-riskcenter/anrui-riskcenter-biz/pom.xml
  62. 2
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/RiskCenterApplication.java
  63. 37
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancustomerrecord/LoanCustomerRecordMapper.java
  64. 74
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancustomerrecord/LoanCustomerRecordMapper.xml
  65. 127
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancustomerrecord/LoanCustomerRecordRest.java
  66. 935
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancustomerrecord/LoanCustomerRecordService.java
  67. 27
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancustomerrecordstaff/LoanCustomerRecordStaffMapper.java
  68. 16
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancustomerrecordstaff/LoanCustomerRecordStaffMapper.xml
  69. 37
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancustomerrecordstaff/LoanCustomerRecordStaffRest.java
  70. 54
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancustomerrecordstaff/LoanCustomerRecordStaffService.java
  71. 10
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/retrieval/AppBusDeliveredApplyFeign.java
  72. 10
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/retrieval/AppBusDeliveredApplyFeignFallback.java
  73. 27
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/retrieval/CarListVos2.java
  74. 9
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/retrieval/DeliveredApplyDto2.java
  75. 9
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/retrieval/DeliveredDetailsVoQk2.java
  76. 26
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/retrieval/flowable/DeliveredApplyDelegateQuery.java
  77. 35
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/loancustomerrecord/CustomerRecordFeign.java
  78. 19
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/loancustomerrecord/CustomerRecordFeignFallback.java
  79. 21
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/loancustomerrecord/CustomerRecordQuery.java
  80. 56
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/loancustomerrecord/CustomerRecordVo.java
  81. 10
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/autoservice/retrieval/AppBusDeliveredApplyRest.java
  82. 17
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/autoservice/retrieval/AppBusDeliveredApplyService.java
  83. 30
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/loancustomerrecord/CustomerRecordRest.java
  84. 44
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/loancustomerrecord/CustomerRecordService.java

3
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basedistributor/BaseDistributorService.java

@ -40,6 +40,7 @@ import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign; import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo; import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysparameter.SysParameterEnum;
import com.yxt.anrui.portal.api.sysparameter.SysParameterFeign; import com.yxt.anrui.portal.api.sysparameter.SysParameterFeign;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
@ -1337,7 +1338,7 @@ public class BaseDistributorService extends MybatisBaseService<BaseDistributorMa
vo.setDistributorSid(sid); vo.setDistributorSid(sid);
vo.setApplyDate(new Date()); vo.setApplyDate(new Date());
//----风控参数中获取有效期------ //----风控参数中获取有效期------
String jxsbayxq = sysParameterFeign.fetchByParNo("JXSBAYXQ").getData(); String jxsbayxq = sysParameterFeign.fetchByParNo(SysParameterEnum.JXSBAYXQ.getParameterValue()).getData();
if (StringUtils.isNotBlank(jxsbayxq)) { if (StringUtils.isNotBlank(jxsbayxq)) {
Date dateByDay = getDateByDay(new Date(), Integer.valueOf(jxsbayxq)); Date dateByDay = getDateByDay(new Date(), Integer.valueOf(jxsbayxq));
vo.setEffectiveDate(DateUtil.format(dateByDay, "yyyy-MM-dd")); vo.setEffectiveDate(DateUtil.format(dateByDay, "yyyy-MM-dd"));

3
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basedistributorapply/BaseDistributorApplyService.java

@ -56,6 +56,7 @@ import com.yxt.anrui.flowable.api.processcomment.ProcessCommentFeign;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum; import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.sysorganization.*; import com.yxt.anrui.portal.api.sysorganization.*;
import com.yxt.anrui.portal.api.sysparameter.SysParameterEnum;
import com.yxt.anrui.portal.api.sysparameter.SysParameterFeign; import com.yxt.anrui.portal.api.sysparameter.SysParameterFeign;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
@ -1254,7 +1255,7 @@ public class BaseDistributorApplyService extends MybatisBaseService<BaseDistribu
AppSalesDeptVo appSalesDeptVo = new AppSalesDeptVo(); AppSalesDeptVo appSalesDeptVo = new AppSalesDeptVo();
appSalesDeptVo.setApplyDate(sdf.format(new Date())); appSalesDeptVo.setApplyDate(sdf.format(new Date()));
//----风控参数中获取有效期------ //----风控参数中获取有效期------
String jxsbayxq = sysParameterFeign.fetchByParNo("JXSBAYXQ").getData(); String jxsbayxq = sysParameterFeign.fetchByParNo(SysParameterEnum.JXSBAYXQ.getParameterValue()).getData();
if (StringUtils.isNotBlank(jxsbayxq)) { if (StringUtils.isNotBlank(jxsbayxq)) {
Date dateByDay = getDateByDay(new Date(), Integer.valueOf(jxsbayxq)); Date dateByDay = getDateByDay(new Date(), Integer.valueOf(jxsbayxq));
appSalesDeptVo.setEffectiveDate(DateUtil.format(dateByDay, "yyyy-MM-dd")); appSalesDeptVo.setEffectiveDate(DateUtil.format(dateByDay, "yyyy-MM-dd"));

4
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdeliveredapply/BusDeliveredApplyFeign.java

@ -228,5 +228,9 @@ public interface BusDeliveredApplyFeign {
@ResponseBody @ResponseBody
public ResultBean<PagerVo<AppDeliveredApplyPageVo>> getRetrievalApplyListQk(@RequestBody PagerQuery<AppDeliveredApplyPageQuery> pagerQuery); public ResultBean<PagerVo<AppDeliveredApplyPageVo>> getRetrievalApplyListQk(@RequestBody PagerQuery<AppDeliveredApplyPageQuery> pagerQuery);
@ApiOperation(value = "欠款出库加签")
@PostMapping(value = "/delegate")
@ResponseBody
public ResultBean delegate(@RequestBody DeliveredDelegateQuery deliveredDelegateQuery);
} }

5
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdeliveredapply/BusDeliveredApplyFeignFallback.java

@ -186,6 +186,11 @@ public class BusDeliveredApplyFeignFallback implements BusDeliveredApplyFeign {
return null; return null;
} }
@Override
public ResultBean delegate(DeliveredDelegateQuery deliveredDelegateQuery) {
return null;
}
@Override @Override
public ResultBean complete(BusDeliveredApplyCompleteDto query) { public ResultBean complete(BusDeliveredApplyCompleteDto query) {
return null; return null;

25
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdeliveredapply/DeliveredDelegateQuery.java

@ -0,0 +1,25 @@
package com.yxt.anrui.buscenter.api.busdeliveredapply;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/10/12
**/
@Data
public class DeliveredDelegateQuery {
@ApiModelProperty
private String userSid;
@ApiModelProperty("流程实例id")
// @JsonProperty("procInsId")
private String instanceId;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("审批人sid")
private String assignee;
@ApiModelProperty("填写意见")
private String views;
}

2
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationMapper.java

@ -75,4 +75,6 @@ public interface BusBillApplicationMapper extends BaseMapper<BusBillApplication>
@Select("select * from bus_bill_application where ckSid = #{sid}") @Select("select * from bus_bill_application where ckSid = #{sid}")
BusBillApplication selectByCkSidAll(String sid); BusBillApplication selectByCkSidAll(String sid);
BusBillApplication selectByContractNoAndSid(@Param("contractNo") String contractNo, @Param("vinSid") String vinSid);
} }

7
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationMapper.xml

@ -91,4 +91,11 @@
where qkkpBillNo = #{qkkpBillNo} where qkkpBillNo = #{qkkpBillNo}
ORDER BY createTime DESC LIMIT 1 ORDER BY createTime DESC LIMIT 1
</select> </select>
<select id="selectByContractNoAndSid"
resultType="com.yxt.anrui.buscenter.api.busbillapplication.BusBillApplication">
select ba.* from bus_bill_application ba
left join bus_bill_vehicle bvv on ba.sid = bvv.billAppSid
where ba.contractNo = #{contractNo} and bvv.vehSid = #{vinSid} order by id desc limit 1
</select>
</mapper> </mapper>

4
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationService.java

@ -458,4 +458,8 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica
public BusBillApplication selectByCkSidAll(String sid) { public BusBillApplication selectByCkSidAll(String sid) {
return baseMapper.selectByCkSidAll(sid); return baseMapper.selectByCkSidAll(sid);
} }
public BusBillApplication selectByContractNoAndSid(String contractNo, String vinSid) {
return baseMapper.selectByContractNoAndSid(contractNo,vinSid);
}
} }

6
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdelivered/BusDeliveredMapper.xml

@ -302,7 +302,7 @@
anrui_base.base_vehicle_state anrui_base.base_vehicle_state
WHERE WHERE
busState = '401' busState = '401'
AND ( finState = '1' OR carryVehicleState = 1 )) AND bbv.vehicleState != '0002' AND (( saleTypeKey = '1' and (finState = '1' OR carryVehicleState = '1' )) or (saleTypeKey = '2' and invoiceApplyState = '1'))) AND bbv.vehicleState != '0002'
</where> </where>
order by bo.contractNo desc,bv.id desc) a order by bo.contractNo desc,bv.id desc) a
@ -337,7 +337,7 @@
anrui_base.base_vehicle_state anrui_base.base_vehicle_state
WHERE WHERE
busState = '401' busState = '401'
AND ( finState = '1' OR carryVehicleState = 1 )) AND ((saleTypeKey = '1' and (finState = '1' OR carryVehicleState = '1' )) or (saleTypeKey = '2' and invoiceApplyState = '1')))
AND bbv.vehicleState != '0002' AND bbv.vehicleState != '0002'
</where> </where>
GROUP BY GROUP BY
@ -446,7 +446,7 @@
anrui_base.base_vehicle_state anrui_base.base_vehicle_state
WHERE WHERE
busState = '401' busState = '401'
AND ( finState = '1' OR carryVehicleState = 1 )) AND (( saleTypeKey = '1' and (finState = '1' OR carryVehicleState = 1 )) or (saleTypeKey = '2' and invoiceApplyState = '1')))
</select> </select>
<select id="vinLists2" resultType="com.yxt.anrui.buscenter.api.busdelivered.VinListVo2"> <select id="vinLists2" resultType="com.yxt.anrui.buscenter.api.busdelivered.VinListVo2">

5
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeliveredapply/BusDeliveredApplyRest.java

@ -257,6 +257,11 @@ public class BusDeliveredApplyRest implements BusDeliveredApplyFeign {
return rb.success().setData(pv); return rb.success().setData(pv);
} }
@Override
public ResultBean delegate(DeliveredDelegateQuery deliveredDelegateQuery) {
return busDeliveredApplyService.delegate(deliveredDelegateQuery);
}
@Override @Override
public ResultBean complete(BusDeliveredApplyCompleteDto query) { public ResultBean complete(BusDeliveredApplyCompleteDto query) {
BusinessVariables bv = new BusinessVariables(); BusinessVariables bv = new BusinessVariables();

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

@ -125,6 +125,7 @@ import com.yxt.anrui.fin.api.finvehicleinvoice.InvoiceVo;
import com.yxt.anrui.flowable.api.flow.FlowProcessMapQuery; import com.yxt.anrui.flowable.api.flow.FlowProcessMapQuery;
import com.yxt.anrui.flowable.api.flow.FlowableFeign; import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowDelegateQuery;
import com.yxt.anrui.flowable.api.flow2.FlowFeign; import com.yxt.anrui.flowable.api.flow2.FlowFeign;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign; import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo; import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
@ -1044,9 +1045,12 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
} }
} else { } else {
//推送开票申请数据 //推送开票申请数据
Future future1 = pool.submit(() -> { if("1".equals(busDeliveredApply.getPaymentMethodKey())){//贷款的不再推送开票申请
pushInvoice(busDeliveredApply, detailsList, orderDetailsVoResultBean.getData(), userVoResultBean.getData()); Future future1 = pool.submit(() -> {
}); pushInvoice(busDeliveredApply, detailsList, orderDetailsVoResultBean.getData(), userVoResultBean.getData());
});
}
} }
//推送优惠包交接数据 //推送优惠包交接数据
Future future2 = pool.submit(() -> { Future future2 = pool.submit(() -> {
@ -1277,11 +1281,30 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
log.error("获取销售订单详情出错啦!!!"); log.error("获取销售订单详情出错啦!!!");
} }
ResultBean<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(busDeliveredApply.getStaffUserSid()); ResultBean<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(busDeliveredApply.getStaffUserSid());
//判断是否是高低开,高低开的话推送开票申请
//推送开票申请数据 detailsList.removeAll(Collections.singleton(null));
BusSalesOrderPrice data = busSalesOrderService.selectByContractNoOne(busDeliveredApply.getContractNo()).getData();
if(!detailsList.isEmpty()){
for (int i = 0; i < detailsList.size(); i++) {
List<BusDeliveredApplyDetails> detailsList2 = new ArrayList<>();
BusDeliveredApplyDetails busDeliveredApplyDetails = detailsList.get(i);
//根据合同和车辆sid获取欠款开票的信息
BusBillApplication busBillApplication = busBillApplicationService.selectByContractNoAndSid(busDeliveredApply.getContractNo(),busDeliveredApplyDetails.getVinSid());
if(busBillApplication != null){
if(!data.getSingleFinalPrice().equals(busBillApplication.getOneBillMoney())){
detailsList2.add(busDeliveredApplyDetails);
//推送开票申请数据
Future future1 = pool.submit(() -> {
pushInvoice2(busDeliveredApply, detailsList2, orderDetailsVoResultBean.getData(), userVoResultBean.getData());
});
}
}
}
}
/* //推送开票申请数据
Future future1 = pool.submit(() -> { Future future1 = pool.submit(() -> {
pushInvoice(busDeliveredApply, detailsList, orderDetailsVoResultBean.getData(), userVoResultBean.getData()); pushInvoice2(busDeliveredApply, detailsList, orderDetailsVoResultBean.getData(), userVoResultBean.getData());
}); });*/
//推送优惠包交接数据 //推送优惠包交接数据
Future future2 = pool.submit(() -> { Future future2 = pool.submit(() -> {
@ -1620,6 +1643,66 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
//====================推送开票结束 //====================推送开票结束
} }
public void pushInvoice2(BusDeliveredApply busDeliveredApply,
List<BusDeliveredApplyDetails> detailsList,
AppOrderDetailsVo appOrderDetailsVo,
SysUserVo sysUserVo) {
log.info("推送开票申请数据开始啦~~~~~~~~~~~~~~~~~~~~~~~~==============================");
//推送开票申请=======
FinBillApplicationDto finBillApplicationDto = new FinBillApplicationDto();
finBillApplicationDto.setUseOrgSid(busDeliveredApply.getUseOrgSid());
finBillApplicationDto.setCreateBySid(busDeliveredApply.getApplySid());
finBillApplicationDto.setCreateByName(busDeliveredApply.getApplyName());
finBillApplicationDto.setContractNo(busDeliveredApply.getContractNo());
if (appOrderDetailsVo != null) {
finBillApplicationDto.setCustomerSid(appOrderDetailsVo.getCustomerSid());
//开票单位
if (StringUtils.isNotBlank(appOrderDetailsVo.getPurchaseSystemSid())) {
ResultBean<FinCompanyInvoicingDetailsVo> invoicingDetailsVoResultBean = finCompanyInvoicingFeign.getDetailsByUseOrgAndSystem(appOrderDetailsVo.getUseOrgSid(), appOrderDetailsVo.getPurchaseSystemSid());
if (invoicingDetailsVoResultBean.getData() != null) {
finBillApplicationDto.setOpenTickUnitName(invoicingDetailsVoResultBean.getData().getName());
}
}
}
finBillApplicationDto.setCustomerName(busDeliveredApply.getName());
finBillApplicationDto.setDeptSid(busDeliveredApply.getApplyDeptSid());
finBillApplicationDto.setDeptName(busDeliveredApply.getApplyDept());
finBillApplicationDto.setModelName(busDeliveredApply.getModelName());
finBillApplicationDto.setModelSid(busDeliveredApply.getModelSid());
if (sysUserVo != null) {
finBillApplicationDto.setStaffSid(sysUserVo.getStaffSid());
}
finBillApplicationDto.setStaffName(busDeliveredApply.getStaffName());
finBillApplicationDto.setSaleDeptSid(busDeliveredApply.getStaffDeptSid());
finBillApplicationDto.setSaleDeptName(busDeliveredApply.getStaffDeptName());
finBillApplicationDto.setSaleTypeKey(busDeliveredApply.getPaymentMethodKey());
finBillApplicationDto.setSaleTypeValue(busDeliveredApply.getPaymentMethod());
finBillApplicationDto.setBillStateKey("001");
finBillApplicationDto.setBillStateValue("正常开票");
List<FinBillVehicleDto> finBillVehicles = new ArrayList<>();
for (int i = 0; i < detailsList.size(); i++) {
FinBillVehicleDto finBillVehicleDto = new FinBillVehicleDto();
BusDeliveredApplyDetails busDeliveredApplyDetails = detailsList.get(i);
finBillVehicleDto.setVinNo(busDeliveredApplyDetails.getVinNo());
finBillVehicleDto.setVehSid(busDeliveredApplyDetails.getVinSid());
//合格证状态
BaseVehicleCertificateVo baseVehicleCertificate = baseVehicleCertificateFeign.selStateByVehicleSid(busDeliveredApplyDetails.getVinSid()).getData();
if (baseVehicleCertificate != null) {
finBillVehicleDto.setCertificateStateKey(baseVehicleCertificate.getCertificateState());
finBillVehicleDto.setCertificateStateValue(baseVehicleCertificate.getCertificateStateValue());
}
finBillVehicles.add(finBillVehicleDto);
}
finBillApplicationDto.setFinBillVehicles(finBillVehicles);
finBillApplicationDto.setArrearsMoney("0");
finBillApplicationDto.setOpenTickTypeKey("02");
finBillApplicationDto.setOpenTickTypeValue("增值税专用发票");
finBillApplicationDto.setApplyDate(DateUtil.today());
finBillApplicationDto.setOrgSidPath(busDeliveredApply.getOrgSidPath());
ResultBean finBillResult = finBillApplicationFeign.save(finBillApplicationDto);
//====================推送开票结束
}
/** /**
* 出库办理后待准备 * 出库办理后待准备
* *
@ -4528,4 +4611,12 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
PagerVo<AppDeliveredApplyPageVo> p = PagerUtil.pageToVo(iPage, null); PagerVo<AppDeliveredApplyPageVo> p = PagerUtil.pageToVo(iPage, null);
return p; return p;
} }
public ResultBean delegate(DeliveredDelegateQuery deliveredDelegateQuery) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(deliveredDelegateQuery, delegateQuery);
flowFeign.delegate(delegateQuery);
return rb.success();
}
} }

2
anrui-buscenter/anrui-buscenter-ui/src/api/tesheshenpi/debtrelease.js

@ -107,7 +107,7 @@ export function revokeProcess(data) {
// 代办任务加签任务 // 代办任务加签任务
export function delegate(data) { export function delegate(data) {
return request({ return request({
url: '/flowable/v2/flow/delegate', url: '/buscenter/v1/busdeliveredapply/delegate',
method: 'post', method: 'post',
data: data, data: data,
headers: { headers: {

11
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempListVo.java

@ -20,4 +20,15 @@ public class CrmCustomerTempListVo implements Vo {
@ApiModelProperty("客户编码") @ApiModelProperty("客户编码")
private String customerNo; private String customerNo;
@ApiModelProperty("客户类型key")
private String customerTypeKey;
@ApiModelProperty("客户类型")
private String customerType;
@ApiModelProperty("客户证件类型")
private String documents;
@ApiModelProperty("客户证件有效期")
private String documentsDate;
@ApiModelProperty("客户地址")
private String clientAddress;
} }

49
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempMapper.xml

@ -5,15 +5,15 @@
<!-- ${ew.customSqlSegment} --> <!-- ${ew.customSqlSegment} -->
<select id="selectPageVo" resultType="com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo"> <select id="selectPageVo" resultType="com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo">
SELECT cct.*, SELECT cct.*,
(SELECT COUNT(*) (SELECT COUNT(*)
FROM crm_vehicledemand cv FROM crm_vehicledemand cv
WHERE cct.sid = cv.customerSid WHERE cct.sid = cv.customerSid
AND states = 1) yxcounts, AND states = 1) yxcounts,
(SELECT COUNT(*) (SELECT COUNT(*)
FROM crm_visit cvi FROM crm_visit cvi
WHERE cct.sid = cvi.customerSid) gjcounts WHERE cct.sid = cvi.customerSid) gjcounts
FROM crm_customer_temp cct FROM crm_customer_temp cct
LEFT JOIN anrui_portal.sys_organization so ON cct.createOrgSid = so.sid LEFT JOIN anrui_portal.sys_organization so ON cct.createOrgSid = so.sid
<where> <where>
${ew.sqlSegment} ${ew.sqlSegment}
</where> </where>
@ -28,18 +28,19 @@
</select> </select>
<select id="getCustomerTempListByUserSid" resultType="com.yxt.anrui.crm.api.crmcustomertemp.AppCrmCustomerTempVo"> <select id="getCustomerTempListByUserSid" resultType="com.yxt.anrui.crm.api.crmcustomertemp.AppCrmCustomerTempVo">
SELECT cct.sid, SELECT cct.sid,
cct.`name`, cct.`name`,
cct.mobile, cct.mobile,
cct.weixin, cct.weixin,
cct.customerType, cct.customerType,
cct.customerTypeKey, cct.customerTypeKey,
cct.createTime, cct.createTime,
cct.customerPhoto, cct.customerPhoto,
cct.remind_day, cct.remind_day,
cct.isOnRemindkey, cct.isOnRemindkey,
cct.companyName, cct.companyName,
cct.follow_state, cct.follow_state,
(select Max(DATE_FORMAT(cv.createTime, '%Y-%m-%d')) from crm_visit cv where cv.customerSid = cct.sid order by cv.id DESC) as visitTime (select Max(DATE_FORMAT(cv.createTime, '%Y-%m-%d')) from crm_visit cv where cv.customerSid = cct.sid order by
cv.id DESC) as visitTime
FROM crm_customer_temp cct FROM crm_customer_temp cct
<where> <where>
${ew.sqlSegment} ${ew.sqlSegment}
@ -201,7 +202,9 @@
</select> </select>
<select id="selectCustomerList" resultType="com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempListVo"> <select id="selectCustomerList" resultType="com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempListVo">
select ct.name, ct.sid, ct.mobile, ct.customerNo, ct.IDNumber as idCard select ct.name, ct.sid, ct.mobile, ct.customerNo, ct.IDNumber as idCard,
ct.customerType,ct.customerTypeKey,ct.certificateType as documents,ct.endDate as documentsDate,ct.address as
clientAddress
from crm_customer_temp ct from crm_customer_temp ct
<where> <where>
${ew.sqlSegment} ${ew.sqlSegment}
@ -222,7 +225,9 @@
</select> </select>
<select id="selectByCustomerNo" resultType="com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTemp"> <select id="selectByCustomerNo" resultType="com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTemp">
select * from crm_customer_temp where customerNo = #{customerNo} select *
from crm_customer_temp
where customerNo = #{customerNo}
</select> </select>
<select id="selectLists" resultType="com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTemp"> <select id="selectLists" resultType="com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTemp">

2
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincompanyinvoicing/FinCompanyInvoicingDto.java

@ -84,4 +84,6 @@ public class FinCompanyInvoicingDto implements Dto {
private String openTickTypeValue; private String openTickTypeValue;
@ApiModelProperty("营业执照") @ApiModelProperty("营业执照")
private List<String> yyzzFiles = new ArrayList<>(); private List<String> yyzzFiles = new ArrayList<>();
@ApiModelProperty("有效期")
private String effectiveDate; //
} }

5
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincompanyinvoicing/FinCompanyInvoicingFeign.java

@ -100,6 +100,11 @@ public interface FinCompanyInvoicingFeign {
@ResponseBody @ResponseBody
ResultBean<FinCompanyInvoicingDetailsVo> selectInvoingByTaxpayerNo(@RequestParam("taxpayerNo") String taxpayerNo); ResultBean<FinCompanyInvoicingDetailsVo> selectInvoingByTaxpayerNo(@RequestParam("taxpayerNo") String taxpayerNo);
@ApiOperation("根据组织全路径查询开票信息")
@GetMapping("/selectInvoingByOrgPath")
@ResponseBody
ResultBean<List<FinCompanyInvoicingDetailsVo>> selectInvoingByOrgPath(@RequestParam("orgPath") String orgPath);
/*************************************************企业开票信息管理***************************************************/ /*************************************************企业开票信息管理***************************************************/
@ApiOperation("企业开票信息管理分页列表") @ApiOperation("企业开票信息管理分页列表")

5
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincompanyinvoicing/FinCompanyInvoicingFeignFallback.java

@ -95,6 +95,11 @@ public class FinCompanyInvoicingFeignFallback implements FinCompanyInvoicingFeig
return null; return null;
} }
@Override
public ResultBean<List<FinCompanyInvoicingDetailsVo>> selectInvoingByOrgPath(String orgPath) {
return null;
}
@Override @Override
public ResultBean<PagerVo<FinCompanyInvoicingVo>> qyListPage(PagerQuery<FinCompanyInvoicingQuery> pq) { public ResultBean<PagerVo<FinCompanyInvoicingVo>> qyListPage(PagerQuery<FinCompanyInvoicingQuery> pq) {
return null; return null;

6
anrui-fin/anrui-fin-biz/pom.xml

@ -123,6 +123,12 @@
<groupId>com.yxt.anrui.scm</groupId> <groupId>com.yxt.anrui.scm</groupId>
<version>0.0.1-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
</dependency> </dependency>
<dependency>
<groupId>com.yxt.anrui</groupId>
<artifactId>anrui-riskcenter-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>

3
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincompanyinvoicing/FinCompanyInvoicingMapper.java

@ -80,4 +80,7 @@ public interface FinCompanyInvoicingMapper extends BaseMapper<FinCompanyInvoicin
@Select("select * from fin_company_invoicing where taxpayerNo = #{taxpayerNo} and isDelete = 0") @Select("select * from fin_company_invoicing where taxpayerNo = #{taxpayerNo} and isDelete = 0")
FinCompanyInvoicingDetailsVo selectInvoingByTaxpayerNo(String taxpayerNo); FinCompanyInvoicingDetailsVo selectInvoingByTaxpayerNo(String taxpayerNo);
@Select("select * from fin_company_invoicing where useOrgSid = #{userOrgSid} and isDelete = 0")
List<FinCompanyInvoicingDetailsVo> selectInvoingByOrgPath(String userOrgSid);
} }

1
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincompanyinvoicing/FinCompanyInvoicingMapper.xml

@ -75,4 +75,5 @@
</select> </select>
</mapper> </mapper>

5
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincompanyinvoicing/FinCompanyInvoicingRest.java

@ -122,6 +122,11 @@ public class FinCompanyInvoicingRest implements FinCompanyInvoicingFeign {
return finCompanyInvoicingService.selectInvoingByTaxpayerNo(taxpayerNo); return finCompanyInvoicingService.selectInvoingByTaxpayerNo(taxpayerNo);
} }
@Override
public ResultBean<List<FinCompanyInvoicingDetailsVo>> selectInvoingByOrgPath(String orgPath) {
return finCompanyInvoicingService.selectInvoingByOrgPath(orgPath);
}
@Override @Override
public ResultBean<PagerVo<FinCompanyInvoicingVo>> qyListPage(PagerQuery<FinCompanyInvoicingQuery> pq) { public ResultBean<PagerVo<FinCompanyInvoicingVo>> qyListPage(PagerQuery<FinCompanyInvoicingQuery> pq) {
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();

11
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincompanyinvoicing/FinCompanyInvoicingService.java

@ -486,4 +486,15 @@ public class FinCompanyInvoicingService extends MybatisBaseService<FinCompanyInv
FinCompanyInvoicingDetailsVo vo = baseMapper.selectInvoingByTaxpayerNo(taxpayerNo); FinCompanyInvoicingDetailsVo vo = baseMapper.selectInvoingByTaxpayerNo(taxpayerNo);
return rb.success().setData(vo); return rb.success().setData(vo);
} }
public ResultBean<List<FinCompanyInvoicingDetailsVo>> selectInvoingByOrgPath(String orgPath) {
ResultBean<List<FinCompanyInvoicingDetailsVo>> rb = ResultBean.fireFail();
List<FinCompanyInvoicingDetailsVo> voList = new ArrayList<>();
ResultBean<String> orgSidByPath = sysStaffOrgFeign.getOrgSidByPath(orgPath);
if (orgSidByPath.getSuccess()) {
String userOrgSid = orgSidByPath.getData();
voList = baseMapper.selectInvoingByOrgPath(userOrgSid);
}
return rb.success().setData(voList);
}
} }

3
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowcomment/FlowComment.java

@ -18,7 +18,8 @@ public enum FlowComment {
REBACK("2", "退回"), REBACK("2", "退回"),
REJECT("3", "驳回"), REJECT("3", "驳回"),
DELEGATE("4", "委派意见"), // DELEGATE("4", "委派意见"),
DELEGATE("4", "加签意见"),
ASSIGN("5", "转办意见"), ASSIGN("5", "转办意见"),
STOP("6", "终止"), STOP("6", "终止"),

1
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java

@ -58,6 +58,7 @@ public enum ProcDefEnum {
LOANTEMPLATEAPPLY("定制金融方案", "process_9q5omebi:2:2685008"), LOANTEMPLATEAPPLY("定制金融方案", "process_9q5omebi:2:2685008"),
LOANHOMEVISITAPPEALAPPLY("家访考察申诉", "process_8ujil3h3:1:3665004"), LOANHOMEVISITAPPEALAPPLY("家访考察申诉", "process_8ujil3h3:1:3665004"),
BUSVALCUSTFILING("价值客户备案申请", "process_n8fwpitk:2:5085004"), BUSVALCUSTFILING("价值客户备案申请", "process_n8fwpitk:2:5085004"),
LOANCUSTOMERRECORD("欠款客户备案", "process_x6o0chx9:1:5715004"),
/******************************测试流程id*********************************************/ /******************************测试流程id*********************************************/

2
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow2/FlowService.java

@ -477,6 +477,8 @@ public class FlowService extends MybatisBaseService<FlowMapper, Flowable> {
taskService.addComment(taskId, instanceId, taskService.addComment(taskId, instanceId,
FlowComment.DELEGATE.getType(), comment); FlowComment.DELEGATE.getType(), comment);
taskService.resolveTask(taskId, formVariables); taskService.resolveTask(taskId, formVariables);
nodeState = task.getName();
taskDefKey = task.getTaskDefinitionKey();
} else { } else {
//当前环节办理通过,且将下一环节用户放入流程中 //当前环节办理通过,且将下一环节用户放入流程中
taskService.addComment(taskId, instanceId, FlowComment.NORMAL.getType(), comment); taskService.addComment(taskId, instanceId, FlowComment.NORMAL.getType(), comment);

38
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysparameter/SysParameterEnum.java

@ -0,0 +1,38 @@
package com.yxt.anrui.portal.api.sysparameter;
/**
* @Author fan
* @Date 2022/11/14 22:46
* @Description
*/
public enum SysParameterEnum {
JXSBAYXQ("001", "JXSBAYXQ"),
QKKHBAYXQ("002", "QKKHBAYXQ"),
;
/**
* 参数类型
*/
private final String parameterKey;
/**
* 参数值
*/
private final String parameterValue;
SysParameterEnum(String parameterKey, String parameterValue) {
this.parameterKey = parameterKey;
this.parameterValue = parameterValue;
}
public String getParameterKey() {
return parameterKey;
}
public String getParameterValue() {
return parameterValue;
}
}

BIN
anrui-reportcenter-ui/public/favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
anrui-reportcenter-ui/public/image/liuchengtu.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

17
anrui-reportcenter-ui/public/index.html

@ -0,0 +1,17 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= webpackConfig.name %></title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= webpackConfig.name %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

28
anrui-riskcenter-ui/src/api/Common/dictcommons.js

@ -133,3 +133,31 @@ export function fetchDetails(data) {
method: 'get' method: 'get'
}) })
} }
// 根据部门sid获取该部门主管人员
export function selectMangerByDeptSid(data) {
return request({
url: '/base/v1/basedistributorapply/selectMangerByDeptSid',
method: 'get',
params: data
})
}
// 根据分公司全路径Sid获取
export function selectInvoingByOrgPath(data) {
return request({
url: '/riskcenter/v1/loancustomerrecord/selectInvoingByOrgPath',
method: 'get',
params: data
})
}
// 获取集团所有在职人员
export function selectStaffListss() {
return request({
url: '/portal/v1/sysstaffinfo/selectStaffListss',
method: 'get'
})
}

113
anrui-riskcenter-ui/src/api/delinquentcustomerfiling/delinquentcustomerfiling.js

@ -0,0 +1,113 @@
import request from '@/utils/request'
export default {
// 查询分页列表
listPage: function(params) {
return request({
url: '/riskcenter/v1/loancustomerrecord/listPage',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
saveOrUpdate: function(data) {
return request({
url: '/riskcenter/v1/loancustomerrecord/saveRecord',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
})
},
policyRecordInit: function(data) {
return request({
url: '/riskcenter/v1/loanfinotherpolicyrecordapply/policyRecordInit',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
})
},
fetchBySid: function(data) {
return request({
url: '/riskcenter/v1/loancustomerrecord/detail/' + data,
method: 'get'
})
},
deleteBySids: function(data) {
return request({
url: '/riskcenter/v1/loancustomerrecord/deleteBySids',
method: 'DELETE',
data: data,
headers: { 'Content-Type': 'application/json' }
})
},
// 提交流程
submit: function(params) {
return request({
url: '/riskcenter/v1/loancustomerrecord/submit',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
// 流程审批(同意)
complete: function(params) {
return request({
url: '/riskcenter/v1/loancustomerrecord/complete',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
// 流程审批(驳回)
reject: function(params) {
return request({
url: '/riskcenter/v1/loancustomerrecord/reject',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
// 流程审批(终止)
breakProcess: function(params) {
return request({
url: '/riskcenter/v1/loancustomerrecord/breakProcess',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
// 流程审批(撤回)
revokeProcess: function(params) {
return request({
url: '/riskcenter/v1/loancustomerrecord/revokeProcess',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
// 流程审批(加签)
delegate: function(params) {
return request({
url: '/riskcenter/v1/loancustomerrecord/delegate',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
// 审批流程(同意)获取下一环节
getNextNodesForSubmit: function(data) {
return request({
url: '/riskcenter/v1/loancustomerrecord/getNextNodesForSubmit',
method: 'get',
params: data
})
},
// 审批流程(驳回)获取上一环节
getPreviousNodesForReject: function(data) {
return request({
url: '/riskcenter/v1/loancustomerrecord/getPreviousNodesForReject',
method: 'get',
params: data
})
}
}

40
anrui-riskcenter-ui/src/router/index.js

@ -315,6 +315,22 @@ export const constantRoutes = [
} }
] ]
}, },
{
path: '/delinquentcustomerfiling',
component: Layout,
redirect: '/delinquentcustomerfiling',
meta: {
title: '欠款客户备案'
},
children: [
{
path: '/delinquentcustomerfiling/delinquentcustomerfiling',
component: () => import('@/views/delinquentcustomerfiling/delinquentcustomerfiling.vue'),
name: 'DelinquentCustomerFiling',
meta: { title: '欠款客户备案', noCache: true }
}
]
},
// 流程审批 // 流程审批
// 金融产品政策报备--编辑 // 金融产品政策报备--编辑
@ -396,8 +412,6 @@ export const constantRoutes = [
import('@/views/workFlow/xinyongshensuFlow/creditauditappealYiBan.vue'), import('@/views/workFlow/xinyongshensuFlow/creditauditappealYiBan.vue'),
name: 'CreditAuditAppealYiBan' name: 'CreditAuditAppealYiBan'
}, },
// 公司定制金融方案--编辑 // 公司定制金融方案--编辑
{ {
path: '/dingzhijinrongFlow/customizedfinancialsolutionsEdit', path: '/dingzhijinrongFlow/customizedfinancialsolutionsEdit',
@ -418,6 +432,28 @@ export const constantRoutes = [
component: () => component: () =>
import('@/views/workFlow/dingzhijinrongFlow/customizedfinancialsolutionsYiban.vue'), import('@/views/workFlow/dingzhijinrongFlow/customizedfinancialsolutionsYiban.vue'),
name: 'CustomizedFinancialSolutionsYiBan' name: 'CustomizedFinancialSolutionsYiBan'
},
// 欠款客户备案--编辑
{
path: '/qiankuanbeianFlow/delinquentcustomerfilingEdit',
component: () =>
import('@/views/workFlow/qiankuanbeianFlow/delinquentcustomerfilingEdit.vue'),
name: 'DelinquentCustomerFilingEdit'
},
// 欠款客户备案--待办
{
path: '/qiankuanbeianFlow/delinquentcustomerfilingDaiBan',
component: () =>
import('@/views/workFlow/qiankuanbeianFlow/delinquentcustomerfilingDaiBan.vue'),
name: 'DelinquentCustomerFilingDaiBan'
},
// 欠款客户备案--已办
{
path: '/qiankuanbeianFlow/customizedfinancialsolutionsYiban',
component: () =>
import('@/views/workFlow/qiankuanbeianFlow/delinquentcustomerfilingYiBan.vue'),
name: 'DelinquentCustomerFilingYiBan'
} }
// 404 page must be placed at the end !!! // 404 page must be placed at the end !!!
// { path: '*', redirect: '/404', hidden: true } // { path: '*', redirect: '/404', hidden: true }

413
anrui-riskcenter-ui/src/views/delinquentcustomerfiling/delinquentcustomerfiling.vue

@ -0,0 +1,413 @@
<template>
<div class="app-container">
<div v-show="viewState ==1">
<button-bar view-title="欠款客户备案申请管理" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" label-width="110px" class="tab-header">
<el-form-item label="分公司">
<el-input v-model="listQuery.params.company" placeholder="" clearable />
</el-form-item>
<el-form-item label="申请部门">
<el-input v-model="listQuery.params.dept" placeholder="" clearable />
</el-form-item>
<el-form-item label="申请人">
<el-input v-model="listQuery.params.applyName" placeholder="" clearable />
</el-form-item>
<el-form-item label="销售专员">
<el-input v-model="listQuery.params.salesman" placeholder="" clearable />
</el-form-item>
<el-form-item label="客户名称">
<el-input v-model="listQuery.params.customer" placeholder="" clearable />
</el-form-item>
<el-form-item label="客户类型">
<el-select v-model="listQuery.params.customerTypeKey" filterable clearable placeholder="">
<el-option v-for="item in custType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="申请日期">
<el-date-picker v-model="listQuery.params.applyStartDate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择日期">
</el-date-picker>
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.applyEndDate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="有效期至">
<el-date-picker v-model="listQuery.params.effectiveStartDate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择日期">
</el-date-picker>
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.effectiveEndDate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" icon="el-icon-search" size="small" @click="handleFilter">查询</el-button>
<el-button type="primary" icon="el-icon-refresh" size="small" @click="handleReset">重置</el-button>
</div>
</div>
</div>
<div class="listtop">
<div class="tit">欠款客户备案申请列表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<div>
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column type="selection" fixed align="center" width="50"/>
<el-table-column label="序号" fixed type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column label="操作" fixed align="center" width="140px">
<template slot-scope="{row}">
<el-button size="mini" type="primary" @click="toEdit(row)" :disabled="row.nodeState =='发起申请' ? false : row.nodeState == '待提交' ? false : true">办理</el-button>
<el-button size="mini" type="primary" @click="toInfo(row)">查看</el-button>
</template>
</el-table-column>
<el-table-column prop="state" label="流程状态" width="120" align="center">
<template slot-scope="scope">
<span v-if="scope.row.nodeState=='待提交'" type="primary" size="mini">待提交</span>
<span v-else @click="flowRecord(scope.row)" class="bluezi">{{ scope.row.nodeState }}</span>
</template>
</el-table-column>
<el-table-column prop="state" label="分公司" width="120" align="center">
<template slot-scope="scope">
<span>{{ scope.row.company }}</span>
</template>
</el-table-column>
<el-table-column label="申请部门" width="130" align="center"> <!-- ? -->
<template slot-scope="scope">
<span>{{ scope.row.dept }}</span>
</template>
</el-table-column>
<el-table-column label="申请人" width="100" align="center">
<template slot-scope="scope">
<span>{{ scope.row.applyName }}</span>
</template>
</el-table-column>
<el-table-column label="申请日期" width="120" align="center">
<template slot-scope="scope">
<span>{{ scope.row.applyDate }}</span>
</template>
</el-table-column>
<el-table-column label="销售专员" width="120" align="center">
<template slot-scope="scope">
<span>{{ scope.row.salesman }}</span>
</template>
</el-table-column>
<el-table-column label="客户名称" width="110" align="center">
<template slot-scope="scope">
<span>{{ scope.row.customer }}</span>
</template>
</el-table-column>
<el-table-column label="客户类型" width="110" align="center">
<template slot-scope="scope">
<span>{{ scope.row.customerType }}</span>
</template>
</el-table-column>
<el-table-column label="有效期至" width="120" align="center">
<template slot-scope="scope">
<span>{{ scope.row.effectiveDate }}</span>
</template>
</el-table-column>
<el-table-column label="备注" align="center">
<template slot-scope="scope">
<span>{{ scope.row.remarks }}</span>
</template>
</el-table-column>
</el-table>
</div>
<div class="pages">
<div class="tit"/>
<!-- 翻页 -->
<pagination v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
</div>
</div>
<!-- 新增或编辑 -->
<delinquentcustomerfilingAdd v-show="viewState == 2 || viewState ==3" ref="divAdd" @doback="resetState" @reloadlist="getList"/>
<!-- 详情 -->
<delinquentcustomerfilingInfo v-show="viewState == 4" ref="divInfo" @doback="resetState"/>
<!-- 流程审批记录 -->
<el-dialog title="" :visible.sync="centerDialogVisible" width="78%" height="1%" :before-close="closeIt" center>
<iframe frameborder="0" id="iframe" style="width:100%;" scrolling="no" :src="this.centerDialogVisible === true ? url :''"></iframe>
</el-dialog>
</div>
</template>
<script>
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar/index.vue'
import req from '@/api/delinquentcustomerfiling/delinquentcustomerfiling'
import { getStorage } from '@/utils/auth'
import { typeValues } from '@/api/Common/dictcommons'
import delinquentcustomerfilingAdd from './delinquentcustomerfilingAdd.vue'
import delinquentcustomerfilingInfo from './delinquentcustomerfilingInfo.vue'
export default {
name: 'DelinquentCustomerFiling',
components: {
Pagination,
pageye,
delinquentcustomerfilingAdd,
delinquentcustomerfilingInfo,
ButtonBar
},
data() {
return {
url: '',
dialogHeight: '80%',
centerDialogVisible: false,
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1,
// ---------
btndisabled: false,
btnList: [
{
type: 'primary',
size: 'small',
icon: 'plus',
btnKey: 'toAdd',
btnLabel: '新增'
},
{
type: 'danger',
size: 'small',
icon: 'del',
btnKey: 'doDel',
btnLabel: '删除'
},
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
// -----------
tableKey: 0,
sids: [],
list: [],
custType_list: [],
FormLoading: false,
listLoading: false,
listQuery: {
params: {
userSid: '',
menuUrl: '',
salesman: '',
applyStartDate: '',
applyEndDate: '',
dept: '',
customer: '',
customerTypeKey: '',
company: '',
orgPath: '',
effectiveStartDate: '',
effectiveEndDate: '',
applyName: ''
},
total: 0,
current: 1,
size: 10
},
temp: {}, //
sdies: ''
}
},
mounted() {
// vuewindowpostMessagehandleMessage
window.addEventListener('message', this.handleMessage)
this.$refs['btnbar'].setButtonList(this.btnList)
},
created() {
//
this.init()
this.getList()
},
methods: {
async handleMessage(event) {
var code = ''
if (event.data.params !== null && event.data.params !== undefined) {
code = event.data.params.code
}
if (code === 1) {
this.centerDialogVisible = false
} else if (code === 2) {
this.dialogHeight = event.data.params.data
this.setIframeHeight(document.getElementById('iframe'))
}
},
closeIt() {
this.url = ''
this.centerDialogVisible = false
},
setIframeHeight(iframe) {
iframe.height = this.dialogHeight
},
flowRecord(row) {
this.centerDialogVisible = true
var params = {
deployId: row.procDefId,
procInsId: row.procInstId,
token: getStorage()
}
this.url = '/#/flow/flowRecordForBusiness?data=' + encodeURI((JSON.stringify(params)))
},
init() {
typeValues({ type: 'customerType' }).then((resp) => {
if (resp.success) {
this.custType_list = resp.data
}
})
},
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'toAdd':
this.toAdd()
break
case 'doDel':
this.doDel()
break
case 'doClose':
this.doClose()
break
default:
break
}
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
//
getList() {
this.listLoading = true
this.listQuery.params.userSid = window.sessionStorage.getItem('userSid')
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.listQuery.params.menuUrl = this.$route.path
req.listPage(this.listQuery).then((response) => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
this.list = []
this.listQuery.total = 0
}
})
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
handleReset() {
this.listQuery = {
params: {
userSid: '',
menuUrl: '',
salesman: '',
applyStartDate: '',
applyEndDate: '',
dept: '',
customer: '',
customerTypeKey: '',
company: '',
orgPath: '',
effectiveStartDate: '',
effectiveEndDate: '',
applyName: ''
},
total: 0,
current: 1,
size: 10
}
this.getList()
},
handleSelectionChange(row) {
const aa = []
row.forEach((element) => {
aa.push(element.sid)
})
this.sids = aa
this.sdies = this.sids.join()
},
toAdd() {
this.viewState = 2
this.$refs['divAdd'].showAdd()
},
toEdit(row) {
this.viewState = 3
this.$refs['divAdd'].showEdit(row)
},
//
toInfo(row) {
this.viewState = 4
this.$refs['divInfo'].showInfo(row.sid)
},
// ID
doDel() {
if (this.sids.length > 0) {
const tip = '请确认是否删除所选 ' + this.sids.length + ' 条记录?'
this.$confirm(tip, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
req.deleteBySids(this.sids).then(resp => {
if (resp.success) {
loading.close()
this.$message({ type: 'success', message: resp.msg, showClose: true })
this.getList()
} else {
loading.close()
}
}).catch(e => {
loading.close()
})
}).catch(() => {
})
} else {
this.$message({ showClose: true, type: 'error', message: '请选择至少一条记录进行操作' })
}
},
resetState() {
this.viewState = 1
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
/*表格列设置fixed后固定列出现下边框的设置*/
/deep/ .el-table__fixed {
height: 100% !important;
}
/*表格列设置fixed后固定列出现下边框的设置*/
/deep/ .el-table__fixed-right {
height: 100% !important;
}
</style>

682
anrui-riskcenter-ui/src/views/delinquentcustomerfiling/delinquentcustomerfilingAdd.vue

@ -0,0 +1,682 @@
<template>
<div class="app-container">
<div>
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="save()">保存</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="submit()">提交</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
</div>
<div class="listconadd">
<el-form ref="dataForm" :model="formobj" class="formaddcopy02" :rules="rules">
<el-row style="border-top: 1px solid #DFE6EC">
<el-col :span="8">
<div class="span-sty">申请部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.dept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请人</div>
<el-form-item><span class="addinputInfo">{{ formobj.applyName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.applyDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><el-checkbox v-model="checked" @change="changeChecked" style="padding-right: 10px">同申请人</el-checkbox>销售部门</div>
<el-form-item>
<el-select v-model="formobj.salesDept" :disabled="checked" class="addinputInfo" filterable clearable placeholder="" @change="changeOrg">
<el-option v-for="item in org_list" :key="item.orgDeptSid" :label="item.orgDeptName" :value="item.orgDeptName"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">销售专员</div>
<el-form-item>
<el-select class="addinputInfo" :disabled="checked" v-model="formobj.salesman" filterable clearable placeholder="" @change="changeStaff">
<el-option v-for="item in staff_list" :key="item.staffSid" :label="item.staffName" :value="item.staffName"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">销售部经理</div>
<el-form-item><span class="addinputInfo">{{ formobj.manage }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
<el-form-item>
<el-input class="addinputInfo" style="width: 50%" v-model="formobj.remarks" clearable placeholder=""/>
</el-form-item>
</el-col>
</el-row>
<div class="title">客户基本信息</div>
<el-row>
<el-col :span="16">
<div class="span-sty">客户名称</div>
<el-form-item>
<el-select v-model="formobj.customer" class="addinputInfo" filterable clearable placeholder="" @change="changeCustomer">
<el-option v-for="item in customer_list" :key="item.sid" :label="item.name" :value="item.name"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">客户类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerType }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">联系电话</div>
<el-form-item><span class="addinputInfo">{{ formobj.clientPhone }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">证件类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.documents }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">证件号码</div>
<el-form-item><span class="addinputInfo">{{ formobj.clientNo }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">证件有效期</div>
<el-form-item><span class="addinputInfo">{{ formobj.documentsDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">地址</div>
<el-form-item><span class="addinputInfo">{{ formobj.clientAddress }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>是否挂靠运输公司</div>
<el-form-item>
<el-radio-group class="addinputInfo" style="font-size: 1px" v-model="formobj.isAnchored" @change="isAnchoredChange">
<el-radio label="1"></el-radio>
<el-radio label="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<div v-show="formobj.customerTypeKey === '2'">
<div class="title titleOne">
<div>企业人员信息</div>
<el-button type="primary" size="mini" @click="addPerson">添加</el-button>
</div>
<el-table :key="tableKey" v-loading="listLoading" :data="formobj.staffs" :index="index" border style="width: 100%">
<el-table-column fixed width="80px" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button type="danger" size="mini" @click="deletePerson(scope.$index)">删除</el-button>
</template>
</el-table-column>
<el-table-column label="姓名" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.name" clearable placeholder=""></el-input>
</template>
</el-table-column>
<el-table-column label="身份" align="center">
<template slot-scope="scope">
<el-select v-model="scope.row.identityValue" placeholder="请选择" @change="identityChange($event, scope.row)" clearable filterable>
<el-option v-for="item in identity_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column label="手机号码" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.mobile" clearable placeholder=""></el-input>
</template>
</el-table-column>
<el-table-column label="身份证号码" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.idNumber" clearable placeholder=""></el-input>
</template>
</el-table-column>
</el-table>
</div>
<div v-show="formobj.customerTypeKey === '1' && formobj.isAnchored === '1'">
<div class="title">挂靠运输公司信息</div>
<el-row>
<el-col :span="24">
<div class="span-sty">选择挂靠运输公司</div>
<el-form-item>
<el-select v-model="formobj.businessName" class="addinputInfo" style="width: 30%" filterable clearable placeholder="" @change="changeBusiness">
<el-option v-for="item in business_list" :key="item.taxpayerNo" :label="item.businessName" :value="item.businessName"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty"><span class="icon">*</span>企业名称</div>
<el-form-item><el-input class="addinputInfo" style="width: 30%" v-model="formobj.businessName" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>统一社会信用代码</div>
<el-form-item><el-input class="addinputInfo" style="width: 50%" v-model="formobj.taxpayerNo" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">负责人</div>
<el-form-item><el-input class="addinputInfo" style="width: 30%" v-model="formobj.leader" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">联系电话</div>
<el-form-item><el-input class="addinputInfo" style="width: 50%" v-model="formobj.phone" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">法定代表人</div>
<el-form-item><el-input class="addinputInfo" style="width: 30%" v-model="formobj.legal" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">地址</div>
<el-form-item><el-input class="addinputInfo" style="width: 50%" v-model="formobj.address" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
</div>
<div class="title">附件清单</div>
<el-row v-show="formobj.customerTypeKey === '2' || (formobj.customerTypeKey === '1' && formobj.isAnchored === '1')">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">营业执照</div>
<el-form-item>
<upload-img ref="uploadImg" class="addinputInfo addinputInfo-special" v-model="image_list1" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
<el-row v-show="formobj.customerTypeKey === '2' || (formobj.customerTypeKey === '1' && formobj.isAnchored === '0')">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">法人和实际控制人身份证</div>
<el-form-item>
<upload-img ref="uploadImg" class="addinputInfo addinputInfo-special" v-model="image_list2" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
<el-row v-show="formobj.customerTypeKey === '2'">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">法人和实际控制人签署的信息查询授权书</div>
<el-form-item>
<upload-img ref="uploadImg" class="addinputInfo addinputInfo-special" v-model="image_list3" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
<el-row v-show="formobj.customerTypeKey === '1' && formobj.isAnchored === '1'">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">车队挂靠协议</div>
<el-form-item>
<upload-img ref="uploadImg" class="addinputInfo addinputInfo-special" v-model="image_list4" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">其他资料</div>
<el-form-item>
<upload-img ref="uploadImg" class="addinputInfo addinputInfo-special" v-model="image_list5" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
</template>
<script>
import req from '@/api/delinquentcustomerfiling/delinquentcustomerfiling'
import { selectOrgList, selectMangerByDeptSid, selectCustomerList, typeValues, selectInvoingByOrgPath } from '@/api/Common/dictcommons'
import uploadImg from '@/components/uploadFile/uploadImg'
export default {
name: 'DelinquentCustomerFilingAdd',
components: {
uploadImg
},
data() {
return {
viewTitle: '',
submitdisabled: false,
tableKey: 0,
index: 0,
listLoading: false,
checked: false,
org_list: [],
customer_list: [],
identity_list: [],
business_list: [],
staff_list: [],
image_list1: [],
image_list2: [],
image_list3: [],
image_list4: [],
image_list5: [],
formobj: {
sid: '',
userSid: '',
applyName: '',
applyDate: '',
salesmanSid: '',
salesman: '',
dept: '',
deptSid: '',
salesDept: '',
salesDeptSid: '',
manage: '',
manageSid: '',
isAnchored: '',
customerSid: '',
customer: '',
customerTypeKey: '',
customerType: '',
clientPhone: '',
clientNo: '',
documents: '',
documentsDate: '',
clientAddress: '',
businessName: '',
taxpayerNo: '',
address: '',
phone: '',
leader: '',
legal: '',
orgPath: '',
staffs: [],
license: [],
idCard: [],
infoLetter: [],
agreement: [],
otherInfo: [],
taskId: '',
instanceId: '',
remarks: ''
},
rules: {}
}
},
methods: {
init() {
typeValues({ type: 'identity' }).then((res) => {
if (res.success) {
this.identity_list = res.data
}
})
},
showAdd() {
this.viewTitle = '【新增】欠款客户备案申请'
this.$nextTick(() => {
this.$refs['dataForm'].clearValidate()
})
this.init()
this.formobj.applyName = window.sessionStorage.getItem('name')
this.formobj.dept = window.sessionStorage.getItem('defaultOrgPathName').substring(window.sessionStorage.getItem('defaultOrgPathName').lastIndexOf('/') + 1)
this.formobj.deptSid = window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1)
this.formobj.userSid = window.sessionStorage.getItem('userSid')
this.formobj.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.selectOrg(this.formobj.userSid, this.formobj.orgPath)
var nowDate = new Date()
var date = {
year: nowDate.getFullYear(),
month: nowDate.getMonth() + 1,
day: nowDate.getDate()
}
this.formobj.applyDate = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day)
},
showEdit(row) {
this.viewTitle = '【编辑】欠款客户备案申请'
this.$nextTick(() => {
this.$refs['dataForm'].clearValidate()
})
this.init()
req.fetchBySid(row.sid).then((res) => {
if (res.success) {
this.formobj = res.data
if (this.formobj.license.length > 0) {
this.formobj.license.forEach((e) => {
this.image_list1.push({
name: '',
url: e
})
})
}
if (this.formobj.idCard.length > 0) {
this.formobj.idCard.forEach((h) => {
this.image_list2.push({
name: '',
url: h
})
})
}
if (this.formobj.infoLetter.length > 0) {
this.formobj.infoLetter.forEach((f) => {
this.image_list3.push({
name: '',
url: f
})
})
}
if (this.formobj.agreement.length > 0) {
this.formobj.agreement.forEach((g) => {
this.image_list4.push({
name: '',
url: g
})
})
}
if (this.formobj.otherInfo.length > 0) {
this.formobj.otherInfo.forEach((j) => {
this.image_list5.push({
name: '',
url: j
})
})
}
this.selectOrg(this.formobj.userSid, this.formobj.orgPath)
}
})
},
//
selectOrg(userSid, orgSidPath) {
selectOrgList({ userSid: userSid, orgPath: orgSidPath }).then((resp) => {
if (resp.success) {
this.org_list = resp.data
}
})
},
//
selectCustomer(userSid, staffSid, orgSidPath) {
selectCustomerList({ userSid: userSid, staffSid: staffSid, orgPath: orgSidPath }).then((res) => {
if (res.success) {
this.customer_list = res.data
}
})
},
// --
changeChecked(val) {
if (val) {
this.formobj.salesDept = this.formobj.dept
this.formobj.salesDeptSid = this.formobj.deptSid
this.formobj.salesman = this.formobj.applyName
this.formobj.salesmanSid = window.sessionStorage.getItem('staffSid')
this.selectCustomer(this.formobj.userSid, this.formobj.salesmanSid, this.formobj.orgPath)
selectMangerByDeptSid({ deptSid: this.formobj.deptSid }).then((res) => {
if (res.success) {
this.formobj.manage = res.data.manage
this.formobj.manageSid = res.data.manageSid
}
})
} else {
this.formobj.salesDept = ''
this.formobj.salesDeptSid = ''
this.formobj.salesman = ''
this.formobj.salesmanSid = ''
this.formobj.manage = ''
this.formobj.manageSid = ''
}
},
//
changeOrg(value) {
const choosetItem = this.org_list.filter((item) => item.orgDeptName === value)
if (choosetItem.length > 0 && choosetItem !== null) {
this.formobj.salesDeptSid = choosetItem[0].orgDeptSid
this.staff_list = choosetItem[0].staffinfoVoList
selectMangerByDeptSid({ deptSid: choosetItem[0].orgDeptSid }).then((res) => {
if (res.success) {
this.formobj.manage = res.data.manage
this.formobj.manageSid = res.data.manageSid
}
})
} else {
//
this.formobj.salesDeptSid = ''
//
this.formobj.salesman = ''
this.formobj.salesmanSid = ''
this.staff_list = []
//
this.formobj.manage = ''
this.formobj.manageSid = ''
}
},
//
changeStaff(value) {
const choosetItem = this.staff_list.filter((item) => item.staffName === value)
if (choosetItem.length > 0 && choosetItem !== null) {
this.formobj.salesmanSid = choosetItem[0].staffSid
this.selectCustomer(this.formobj.userSid, this.formobj.salesmanSid, this.formobj.orgPath)
} else {
this.formobj.salesmanSid = ''
}
},
//
changeCustomer(value) {
const choosetItem = this.customer_list.filter((item) => item.name === value)
if (choosetItem.length > 0 && choosetItem !== null) {
this.formobj.customerSid = choosetItem[0].sid
this.formobj.customerType = choosetItem[0].customerType
this.formobj.customerTypeKey = choosetItem[0].customerTypeKey
this.formobj.clientPhone = choosetItem[0].mobile
this.formobj.documents = choosetItem[0].documents
this.formobj.documentsDate = choosetItem[0].documentsDate
this.formobj.clientNo = choosetItem[0].idCard
this.formobj.clientAddress = choosetItem[0].clientAddress
} else {
this.formobj.customerSid = ''
this.formobj.customerType = ''
this.formobj.customerTypeKey = ''
this.formobj.clientPhone = ''
this.formobj.documents = ''
this.formobj.documentsDate = ''
this.formobj.clientNo = ''
this.formobj.clientAddress = ''
}
},
isAnchoredChange(val) {
if (val === '1') {
selectInvoingByOrgPath({ orgPath: this.formobj.orgPath }).then((res) => {
if (res.success) {
this.business_list = res.data
}
})
}
},
addPerson() {
this.formobj.staffs.push({
name: '',
identityKey: '',
identityValue: '',
mobile: '',
idNumber: ''
})
},
identityChange(value, row) {
const choose = this.identity_list.filter((item) => item.dictValue === value)
if (choose.length > 0) {
row.identityKey = choose[0].dictKey
} else {
row.identityKey = ''
}
},
deletePerson(index) {
this.formobj.staffs.splice(index, 1)
},
changeBusiness(value) {
const choose = this.business_list.filter((item) => item.businessName === value)
if (choose.length > 0) {
this.formobj.taxpayerNo = choose[0].taxpayerNo
this.formobj.phone = choose[0].phone
this.formobj.address = choose[0].address
} else {
this.formobj.taxpayerNo = ''
this.formobj.phone = ''
this.formobj.address = ''
}
},
save() {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
this.getUrl()
this.submitdisabled = true
req.saveOrUpdate(this.formobj).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '保存成功' })
this.handleReturn('true')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
submit() {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
this.getUrl()
this.submitdisabled = true
req.submit(this.formobj).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '操作成功' })
this.handleReturn('true')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
getUrl() {
if (this.image_list1.length > 0) {
const aa = []
this.image_list1.forEach((e) => {
aa.push(e.url)
})
this.formobj.license = aa
} else {
this.formobj.license = []
}
if (this.image_list2.length > 0) {
const aa = []
this.image_list2.forEach((e) => {
aa.push(e.url)
})
this.formobj.idCard = aa
} else {
this.formobj.idCard = []
}
if (this.image_list3.length > 0) {
const aa = []
this.image_list3.forEach((e) => {
aa.push(e.url)
})
this.formobj.infoLetter = aa
} else {
this.formobj.infoLetter = []
}
if (this.image_list4.length > 0) {
const aa = []
this.image_list4.forEach((e) => {
aa.push(e.url)
})
this.formobj.agreement = aa
} else {
this.formobj.agreement = []
}
if (this.image_list5.length > 0) {
const aa = []
this.image_list5.forEach((e) => {
aa.push(e.url)
})
this.formobj.otherInfo = aa
} else {
this.formobj.otherInfo = []
}
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {
sid: '',
userSid: '',
applyName: '',
applyDate: '',
salesmanSid: '',
salesman: '',
dept: '',
deptSid: '',
salesDept: '',
salesDeptSid: '',
manage: '',
manageSid: '',
isAnchored: '',
customerSid: '',
customer: '',
customerTypeKey: '',
customerType: '',
clientPhone: '',
clientNo: '',
documents: '',
documentsDate: '',
clientAddress: '',
businessName: '',
taxpayerNo: '',
address: '',
phone: '',
leader: '',
legal: '',
orgPath: '',
staffs: [],
license: [],
idCard: [],
infoLetter: [],
agreement: [],
otherInfo: [],
taskId: '',
instanceId: '',
remarks: ''
}
this.image_list1 = []
this.image_list2 = []
this.image_list3 = []
this.image_list4 = []
this.image_list5 = []
this.checked = false
this.submitdisabled = false
this.$refs['dataForm'].resetFields()
this.$emit('doback')
}
}
}
</script>
<style scoped>
.span-sty {
width: 170px !important;
}
.addinputInfo {
margin-left: 160px !important;
}
.span-sty-special {
width: 300px !important;
}
.addinputInfo-special {
margin-left: 290px !important;
}
.titleOne {
padding: 7px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
</style>

319
anrui-riskcenter-ui/src/views/delinquentcustomerfiling/delinquentcustomerfilingInfo.vue

@ -0,0 +1,319 @@
<template>
<div class="app-container">
<div>
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
</div>
<div class="listconadd">
<el-form ref="dataForm" :model="formobj" class="formaddcopy02" :rules="rules">
<el-row style="border-top: 1px solid #DFE6EC">
<el-col :span="8">
<div class="span-sty">申请部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.dept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请人</div>
<el-form-item><span class="addinputInfo">{{ formobj.applyName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.applyDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">销售部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.salesDept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">销售专员</div>
<el-form-item><span class="addinputInfo">{{ formobj.salesman }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">销售部经理</div>
<el-form-item><span class="addinputInfo">{{ formobj.manage }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col>
</el-row>
<div class="title">客户基本信息</div>
<el-row>
<el-col :span="16">
<div class="span-sty">客户名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.customer }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">客户类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerType }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">联系电话</div>
<el-form-item><span class="addinputInfo">{{ formobj.clientPhone }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">证件类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.documents }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">证件号码</div>
<el-form-item><span class="addinputInfo">{{ formobj.clientNo }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">证件有效期</div>
<el-form-item><span class="addinputInfo">{{ formobj.documentsDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16" class="tlineheightb">
<div class="span-sty">地址</div>
<el-form-item><span class="addinputInfo">{{ formobj.clientAddress }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">是否挂靠运输公司</div>
<el-form-item><span class="addinputInfo">{{ formobj.isAnchored = '1' ? '是' : '否' }}</span></el-form-item>
</el-col>
</el-row>
<div v-if="formobj.customerTypeKey === '2'">
<div class="title">企业人员信息</div>
<el-table :key="tableKey" v-loading="listLoading" :data="formobj.staffs" :index="index" border style="width: 100%">
<el-table-column fixed width="80px" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column label="姓名" align="center">
<template slot-scope="scope">
<span>{{ scope.row.name }}</span>
</template>
</el-table-column>
<el-table-column label="身份" align="center">
<template slot-scope="scope">
<span>{{ scope.row.identityValue }}</span>
</template>
</el-table-column>
<el-table-column label="手机号码" align="center">
<template slot-scope="scope">
<span>{{ scope.row.mobile }}</span>
</template>
</el-table-column>
<el-table-column label="身份证号码" align="center">
<template slot-scope="scope">
<span>{{ scope.row.idNumber }}</span>
</template>
</el-table-column>
</el-table>
</div>
<div v-show="formobj.customerTypeKey === '1' && formobj.isAnchored === '是'">
<div class="title">挂靠运输公司信息</div>
<el-row>
<el-col :span="16">
<div class="span-sty">企业名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.businessName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">统一社会信用代码</div>
<el-form-item><span class="addinputInfo">{{ formobj.taxpayerNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">负责人</div>
<el-form-item><span class="addinputInfo">{{ formobj.leader }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">联系电话</div>
<el-form-item><span class="addinputInfo">{{ formobj.phone }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">法定代表人</div>
<el-form-item><span class="addinputInfo">{{ formobj.legal }}</span></el-form-item>
</el-col>
<el-col :span="8" class="tlineheightb">
<div class="span-sty">地址</div>
<el-form-item><span class="addinputInfo">{{ formobj.address }}</span></el-form-item>
</el-col>
</el-row>
</div>
<div class="title">附件清单</div>
<el-row v-if="formobj.customerTypeKey === '2' || (formobj.customerTypeKey === '1' && formobj.isAnchored === '是')">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">营业执照</div>
<el-form-item><el-image class="addinputInfo-special" style="width: 150px; height: 150px" v-for="(item, index) in formobj.license" :key="index" :src="item" :preview-src-list="formobj.license"/></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.customerTypeKey === '2' || (formobj.customerTypeKey === '1' && formobj.isAnchored === '否')">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">法人和实际控制人身份证</div>
<el-form-item><el-image class="addinputInfo-special" style="width: 150px; height: 150px" v-for="(item, index) in formobj.idCard" :key="index" :src="item" :preview-src-list="formobj.idCard"/></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.customerTypeKey === '2'">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">法人和实际控制人签署的信息查询授权书</div>
<el-form-item><el-image class="addinputInfo-special" style="width: 150px; height: 150px" v-for="(item, index) in formobj.infoLetter" :key="index" :src="item" :preview-src-list="formobj.infoLetter"/></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.customerTypeKey === '1' && formobj.isAnchored === '是'">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">车队挂靠协议</div>
<el-form-item><el-image class="addinputInfo-special" style="width: 150px; height: 150px" v-for="(item, index) in formobj.agreement" :key="index" :src="item" :preview-src-list="formobj.agreement"/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">其他资料</div>
<el-form-item><el-image class="addinputInfo-special" style="width: 150px; height: 150px" v-for="(item, index) in formobj.otherInfo" :key="index" :src="item" :preview-src-list="formobj.otherInfo"/></el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
</template>
<script>
import req from '@/api/delinquentcustomerfiling/delinquentcustomerfiling'
export default {
name: 'DelinquentCustomerFilingInfo',
data() {
return {
viewTitle: '',
tableKey: 0,
index: 0,
listLoading: false,
formobj: {
sid: '',
userSid: '',
applyName: '',
applyDate: '',
salesmanSid: '',
salesman: '',
dept: '',
deptSid: '',
salesDept: '',
salesDeptSid: '',
manage: '',
manageSid: '',
isAnchored: '',
customerSid: '',
customer: '',
customerTypeKey: '',
customerType: '',
clientPhone: '',
clientNo: '',
documents: '',
documentsDate: '',
clientAddress: '',
businessName: '',
taxpayerNo: '',
address: '',
phone: '',
leader: '',
legal: '',
orgPath: '',
staffs: [],
license: [],
idCard: [],
infoLetter: [],
agreement: [],
otherInfo: [],
taskId: '',
instanceId: '',
remarks: ''
},
rules: {}
}
},
methods: {
showInfo(sid) {
this.viewTitle = '欠款客户备案详情'
req.fetchBySid(sid).then((resp) => {
if (resp.success) {
this.formobj = resp.data
}
})
},
handleReturn() {
this.formobj = {
sid: '',
userSid: '',
applyName: '',
applyDate: '',
salesmanSid: '',
salesman: '',
dept: '',
deptSid: '',
salesDept: '',
salesDeptSid: '',
manage: '',
manageSid: '',
isAnchored: '',
customerSid: '',
customer: '',
customerTypeKey: '',
customerType: '',
clientPhone: '',
clientNo: '',
documents: '',
documentsDate: '',
clientAddress: '',
businessName: '',
taxpayerNo: '',
address: '',
phone: '',
leader: '',
legal: '',
orgPath: '',
staffs: [],
license: [],
idCard: [],
infoLetter: [],
agreement: [],
otherInfo: [],
taskId: '',
instanceId: '',
remarks: ''
}
this.$emit('doback')
}
}
}
</script>
<style scoped>
.span-sty {
width: 170px !important;
}
.addinputInfo {
margin-left: 160px !important;
}
.span-sty-special {
width: 300px !important;
}
.addinputInfo-special {
margin-left: 290px !important;
}
.tlineheightb {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
/deep/ .tlineheightb .el-form-item .el-form-item__content .addinputInfo {
line-height: 15px !important;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
</style>

562
anrui-riskcenter-ui/src/views/workFlow/qiankuanbeianFlow/delinquentcustomerfilingDaiBan.vue

@ -0,0 +1,562 @@
<template>
<div class="app-container">
<div>
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" @click="openCountersign('加签')"> </el-button>
<el-button type="primary" size="small" @click="openAgree('同意')"> </el-button>
<el-button type="danger" size="small" @click="openReject('驳回')"> </el-button>
<el-button type="danger" size="small" @click="openStop('终止')"> </el-button>
</div>
</div>
</div>
<div class="">
<el-form ref="dataForm" :model="formobj" class="formaddcopy02" :rules="rules">
<el-row style="border-top: 1px solid #DFE6EC">
<el-col :span="8">
<div class="span-sty">申请部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.dept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请人</div>
<el-form-item><span class="addinputInfo">{{ formobj.applyName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.applyDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">销售部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.salesDept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">销售专员</div>
<el-form-item><span class="addinputInfo">{{ formobj.salesman }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">销售部经理</div>
<el-form-item><span class="addinputInfo">{{ formobj.manage }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col>
</el-row>
<div class="title">客户基本信息</div>
<el-row>
<el-col :span="16">
<div class="span-sty">客户名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.customer }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">客户类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerType }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">联系电话</div>
<el-form-item><span class="addinputInfo">{{ formobj.clientPhone }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">证件类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.documents }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">证件号码</div>
<el-form-item><span class="addinputInfo">{{ formobj.clientNo }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">证件有效期</div>
<el-form-item><span class="addinputInfo">{{ formobj.documentsDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16" class="tlineheightb">
<div class="span-sty">地址</div>
<el-form-item><span class="addinputInfo">{{ formobj.clientAddress }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">是否挂靠运输公司</div>
<el-form-item><span class="addinputInfo">{{ formobj.isAnchored = '1' ? '是' : '否' }}</span></el-form-item>
</el-col>
</el-row>
<div v-if="formobj.customerTypeKey === '2'">
<div class="title">企业人员信息</div>
<el-table :key="tableKey" v-loading="listLoading" :data="formobj.staffs" :index="index" border style="width: 100%">
<el-table-column fixed width="80px" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column label="姓名" align="center">
<template slot-scope="scope">
<span>{{ scope.row.name }}</span>
</template>
</el-table-column>
<el-table-column label="身份" align="center">
<template slot-scope="scope">
<span>{{ scope.row.identityValue }}</span>
</template>
</el-table-column>
<el-table-column label="手机号码" align="center">
<template slot-scope="scope">
<span>{{ scope.row.mobile }}</span>
</template>
</el-table-column>
<el-table-column label="身份证号码" align="center">
<template slot-scope="scope">
<span>{{ scope.row.idNumber }}</span>
</template>
</el-table-column>
</el-table>
</div>
<div v-show="formobj.customerTypeKey === '1' && formobj.isAnchored === '是'">
<div class="title">挂靠运输公司信息</div>
<el-row>
<el-col :span="16">
<div class="span-sty">企业名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.businessName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">统一社会信用代码</div>
<el-form-item><span class="addinputInfo">{{ formobj.taxpayerNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">负责人</div>
<el-form-item><span class="addinputInfo">{{ formobj.leader }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">联系电话</div>
<el-form-item><span class="addinputInfo">{{ formobj.phone }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">法定代表人</div>
<el-form-item><span class="addinputInfo">{{ formobj.legal }}</span></el-form-item>
</el-col>
<el-col :span="8" class="tlineheightb">
<div class="span-sty">地址</div>
<el-form-item><span class="addinputInfo">{{ formobj.address }}</span></el-form-item>
</el-col>
</el-row>
</div>
<div class="title">附件清单</div>
<el-row v-if="formobj.customerTypeKey === '2' || (formobj.customerTypeKey === '1' && formobj.isAnchored === '是')">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">营业执照</div>
<el-form-item><el-image class="addinputInfo-special" style="width: 150px; height: 150px" v-for="(item, index) in formobj.license" :key="index" :src="item" :preview-src-list="formobj.license"/></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.customerTypeKey === '2' || (formobj.customerTypeKey === '1' && formobj.isAnchored === '否')">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">法人和实际控制人身份证</div>
<el-form-item><el-image class="addinputInfo-special" style="width: 150px; height: 150px" v-for="(item, index) in formobj.idCard" :key="index" :src="item" :preview-src-list="formobj.idCard"/></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.customerTypeKey === '2'">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">法人和实际控制人签署的信息查询授权书</div>
<el-form-item><el-image class="addinputInfo-special" style="width: 150px; height: 150px" v-for="(item, index) in formobj.infoLetter" :key="index" :src="item" :preview-src-list="formobj.infoLetter"/></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.customerTypeKey === '1' && formobj.isAnchored === '是'">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">车队挂靠协议</div>
<el-form-item><el-image class="addinputInfo-special" style="width: 150px; height: 150px" v-for="(item, index) in formobj.agreement" :key="index" :src="item" :preview-src-list="formobj.agreement"/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">其他资料</div>
<el-form-item><el-image class="addinputInfo-special" style="width: 150px; height: 150px" v-for="(item, index) in formobj.otherInfo" :key="index" :src="item" :preview-src-list="formobj.otherInfo"/></el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<!-- 选择待办人 的弹出框-->
<el-dialog title="填写审批意见" :visible.sync="nodeDialogVisible" width="80%">
<el-form class="formadd" >
<el-row v-show="countersignLink" style="border-top: 1px solid #e0e3eb">
<el-col :span="4" class="tleftb">
<span><span class="icon">*</span>加签人员:</span>
</el-col>
<el-col :span="20">
<el-form-item>
<el-select v-model="countersign.assignee" placeholder="请选择" filterable>
<el-option v-for="item in options" :key="item.userSid" :label="item.staffName" :value="item.userSid">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row v-show="currentLink" style="border-top: 1px solid #e0e3eb">
<el-col :span="4" class="tleftb">
<span>当前环节:</span>
</el-col>
<el-col :span="20">
<el-form-item><span>{{ current.taskName }}->{{ nextNode.name }}</span></el-form-item>
</el-col>
</el-row>
<el-row :class="{rowClass:!currentLink}">
<el-col :span="4" class="tleftb">
<span>意见:</span>
</el-col>
<el-col :span="20">
<el-form-item><el-input size="small" v-model="dialogList.comment" placeholder="审批意见" class="addinputw" type="textarea" :autosize="{ minRows: 1, maxRows: 10}" clearable ></el-input></el-form-item>
</el-col>
</el-row>
<div style="text-align:center;margin-top: 20px;">
<el-button type="primary" size="mini" @click="reject"> </el-button>
<el-button type="info " size="mini" @click="nodeDialogVisible = false"> </el-button>
</div>
</el-form>
</el-dialog>
</div>
</template>
<script>
import req from '@/api/delinquentcustomerfiling/delinquentcustomerfiling'
import { selectStaffListss } from '@/api/Common/dictcommons'
export default {
name: 'DelinquentCustomerFilingDaiBan',
data() {
return {
viewTitle: '',
tableKey: 0,
index: 0,
listLoading: false,
formobj: {
sid: '',
userSid: '',
applyName: '',
applyDate: '',
salesmanSid: '',
salesman: '',
dept: '',
deptSid: '',
salesDept: '',
salesDeptSid: '',
manage: '',
manageSid: '',
isAnchored: '',
customerSid: '',
customer: '',
customerTypeKey: '',
customerType: '',
clientPhone: '',
clientNo: '',
documents: '',
documentsDate: '',
clientAddress: '',
businessName: '',
taxpayerNo: '',
address: '',
phone: '',
leader: '',
legal: '',
orgPath: '',
staffs: [],
license: [],
idCard: [],
infoLetter: [],
agreement: [],
otherInfo: [],
taskId: '',
instanceId: '',
remarks: ''
},
rules: {},
options: [],
operation: '', //
dialogList: {
comment: ''
},
startTask: true,
current: {
taskDefKey: '',
taskName: '' //
},
nextNode: {}, //
nodeDialogVisible: false,
currentLink: true,
countersignLink: false,
//
linkByParameter: {
businessSid: '',
comment: '',
instanceId: '',
taskId: '',
orgSidPath: '',
taskDefKey: '',
userSid: ''
},
//
countersign: {
taskId: '',
assignee: '',
userSid: '',
instanceId: '',
views: ''
}
}
},
created() {
console.log('url:' + window.location.href)
var one = window.location.href.indexOf('&data') + 6
const data = window.location.href.substr(one) // urlunescape()web,使
const obj = JSON.parse(decodeURIComponent(data))
console.log('iframe页面获取的obj:', obj)
//
this.linkByParameter.businessSid = obj.businessSid
this.linkByParameter.instanceId = obj.instanceId
this.linkByParameter.taskId = obj.taskId
this.linkByParameter.taskDefKey = obj.taskDefKey
// this.linkByParameter.orgSidPath = window.sessionStorage.getItem('orgSidPath')
this.linkByParameter.userSid = window.sessionStorage.getItem('userSid')
this.current.taskDefKey = obj.taskDefKey
this.current.taskName = obj.taskName
//
this.countersign.taskId = obj.taskId
this.countersign.userSid = window.sessionStorage.getItem('userSid')
this.countersign.instanceId = obj.instanceId
//
this.showInfo(obj.businessSid)
},
mounted() {
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 2,
data: 500 + 'px'
}
}, '*')
},
methods: {
showInfo(sid) {
this.viewTitle = '欠款客户备案详情'
req.fetchBySid(sid).then((resp) => {
if (resp.success) {
this.formobj = resp.data
}
})
selectStaffListss().then((res) => {
if (res.success) {
this.options = res.data
}
})
},
//
openCountersign(val) {
this.operation = val
this.currentLink = true
this.countersignLink = true
this.dialogList.comment = ''
req.getNextNodesForSubmit({ taskDefKey: this.current.taskDefKey, businessSid: this.linkByParameter.businessSid }).then((resp) => {
if (resp.success) {
var arr = resp.data
this.nextNode = arr[0]
this.nodeDialogVisible = true
}
this.submitdisabled = false
})
},
//
openAgree(val) {
this.operation = val
this.currentLink = true
this.countersignLink = false
this.dialogList.comment = '同意'
req.getNextNodesForSubmit({ taskDefKey: this.current.taskDefKey, businessSid: this.linkByParameter.businessSid }).then((resp) => {
if (resp.success) {
var arr = resp.data
this.nextNode = arr[0]
this.nodeDialogVisible = true
}
this.submitdisabled = false
})
},
//
openReject(val) {
this.operation = val
this.currentLink = true
this.countersignLink = false
this.dialogList.comment = ''
req.getPreviousNodesForReject({ taskDefKey: this.current.taskDefKey, businessSid: this.linkByParameter.businessSid }).then((resp) => {
if (resp.success) {
var arr = resp.data
this.nextNode = arr[0]
this.nodeDialogVisible = true
}
this.submitdisabled = false
})
},
//
openStop(val) {
this.operation = val
this.currentLink = false
this.countersignLink = false
this.dialogList.comment = ''
this.nodeDialogVisible = true
},
reject() {
if (this.operation === '同意') {
this.handleAgree()
} else if (this.operation === '驳回') {
if (this.dialogList.comment === '') {
this.$message({ showClose: true, type: 'error', message: '请填写审批意见' })
} else {
this.handleReject()
}
} else if (this.operation === '终止') {
if (this.dialogList.comment === '') {
this.$message({ showClose: true, type: 'error', message: '请填写审批意见' })
} else {
this.handleStop()
}
} else if (this.operation === '加签') {
this.handleCountersign()
}
},
/** 加签 */
handleCountersign() {
if (this.countersign.assignee === '') {
this.$message({ showClose: true, type: 'error', message: '请选择加签人员' })
return
}
if (this.dialogList.comment === '') {
this.$message({ showClose: true, type: 'error', message: '请填写审批意见' })
return
}
this.countersign.views = this.dialogList.comment
req.delegate(this.countersign).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
},
/** 同意任务 */
handleAgree() {
this.linkByParameter.comment = this.dialogList.comment
req.complete(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
},
/** 驳回任务 */
handleReject() {
this.linkByParameter.comment = this.dialogList.comment
req.reject(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
},
/** 终止任务 */
handleStop() {
this.linkByParameter.comment = this.dialogList.comment
req.breakProcess(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
}
}
}
</script>
<style scoped>
.span-sty {
width: 170px !important;
}
.addinputInfo {
margin-left: 160px !important;
}
.span-sty-special {
width: 300px !important;
}
.addinputInfo-special {
margin-left: 290px !important;
}
.tlineheightb {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
/deep/ .tlineheightb .el-form-item .el-form-item__content .addinputInfo {
line-height: 15px !important;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
.rowClass{
border-top: 1px solid #E0E3EB;
}
</style>

640
anrui-riskcenter-ui/src/views/workFlow/qiankuanbeianFlow/delinquentcustomerfilingEdit.vue

@ -0,0 +1,640 @@
<template>
<div class="app-container">
<div>
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="save()">保存</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="submit()">提交</el-button>
</div>
</div>
</div>
<div class="">
<el-form ref="dataForm" :model="formobj" class="formaddcopy02" :rules="rules">
<el-row style="border-top: 1px solid #DFE6EC">
<el-col :span="8">
<div class="span-sty">申请部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.dept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请人</div>
<el-form-item><span class="addinputInfo">{{ formobj.applyName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.applyDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><el-checkbox v-model="checked" @change="changeChecked" style="padding-right: 10px">同申请人</el-checkbox>销售部门</div>
<el-form-item>
<el-select v-model="formobj.salesDept" :disabled="checked" class="addinputInfo" filterable clearable placeholder="" @change="changeOrg">
<el-option v-for="item in org_list" :key="item.orgDeptSid" :label="item.orgDeptName" :value="item.orgDeptName"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">销售专员</div>
<el-form-item>
<el-select class="addinputInfo" :disabled="checked" v-model="formobj.salesman" filterable clearable placeholder="" @change="changeStaff">
<el-option v-for="item in staff_list" :key="item.staffSid" :label="item.staffName" :value="item.staffName"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">销售部经理</div>
<el-form-item><span class="addinputInfo">{{ formobj.manage }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
<el-form-item>
<el-input class="addinputInfo" style="width: 50%" v-model="formobj.remarks" clearable placeholder=""/>
</el-form-item>
</el-col>
</el-row>
<div class="title">客户基本信息</div>
<el-row>
<el-col :span="16">
<div class="span-sty">客户名称</div>
<el-form-item>
<el-select v-model="formobj.customer" class="addinputInfo" filterable clearable placeholder="" @change="changeCustomer">
<el-option v-for="item in customer_list" :key="item.sid" :label="item.name" :value="item.name"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">客户类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerType }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">联系电话</div>
<el-form-item><span class="addinputInfo">{{ formobj.clientPhone }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">证件类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.documents }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">证件号码</div>
<el-form-item><span class="addinputInfo">{{ formobj.clientNo }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">证件有效期</div>
<el-form-item><span class="addinputInfo">{{ formobj.documentsDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">地址</div>
<el-form-item><span class="addinputInfo">{{ formobj.clientAddress }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>是否挂靠运输公司</div>
<el-form-item>
<el-radio-group class="addinputInfo" style="font-size: 1px" v-model="formobj.isAnchored" @change="isAnchoredChange">
<el-radio label="1"></el-radio>
<el-radio label="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<div v-show="formobj.customerTypeKey === '2'">
<div class="title titleOne">
<div>企业人员信息</div>
<el-button type="primary" size="mini" @click="addPerson">添加</el-button>
</div>
<el-table :key="tableKey" v-loading="listLoading" :data="formobj.staffs" :index="index" border style="width: 100%">
<el-table-column fixed width="80px" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button type="danger" size="mini" @click="deletePerson(scope.$index)">删除</el-button>
</template>
</el-table-column>
<el-table-column label="姓名" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.name" clearable placeholder=""></el-input>
</template>
</el-table-column>
<el-table-column label="身份" align="center">
<template slot-scope="scope">
<el-select v-model="scope.row.identityValue" placeholder="请选择" @change="identityChange($event, scope.row)" clearable filterable>
<el-option v-for="item in identity_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column label="手机号码" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.mobile" clearable placeholder=""></el-input>
</template>
</el-table-column>
<el-table-column label="身份证号码" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.idNumber" clearable placeholder=""></el-input>
</template>
</el-table-column>
</el-table>
</div>
<div v-show="formobj.customerTypeKey === '1' && formobj.isAnchored === '1'">
<div class="title">挂靠运输公司信息</div>
<el-row>
<el-col :span="24">
<div class="span-sty">选择挂靠运输公司</div>
<el-form-item>
<el-select v-model="formobj.businessName" class="addinputInfo" style="width: 30%" filterable clearable placeholder="" @change="changeBusiness">
<el-option v-for="item in business_list" :key="item.taxpayerNo" :label="item.businessName" :value="item.businessName"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty"><span class="icon">*</span>企业名称</div>
<el-form-item><el-input class="addinputInfo" style="width: 30%" v-model="formobj.businessName" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>统一社会信用代码</div>
<el-form-item><el-input class="addinputInfo" style="width: 50%" v-model="formobj.taxpayerNo" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">负责人</div>
<el-form-item><el-input class="addinputInfo" style="width: 30%" v-model="formobj.leader" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">联系电话</div>
<el-form-item><el-input class="addinputInfo" style="width: 50%" v-model="formobj.phone" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">法定代表人</div>
<el-form-item><el-input class="addinputInfo" style="width: 30%" v-model="formobj.legal" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">地址</div>
<el-form-item><el-input class="addinputInfo" style="width: 50%" v-model="formobj.address" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
</div>
<div class="title">附件清单</div>
<el-row v-show="formobj.customerTypeKey === '2' || (formobj.customerTypeKey === '1' && formobj.isAnchored === '1')">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">营业执照</div>
<el-form-item>
<upload-img ref="uploadImg" class="addinputInfo addinputInfo-special" v-model="image_list1" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
<el-row v-show="formobj.customerTypeKey === '2' || (formobj.customerTypeKey === '1' && formobj.isAnchored === '0')">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">法人和实际控制人身份证</div>
<el-form-item>
<upload-img ref="uploadImg" class="addinputInfo addinputInfo-special" v-model="image_list2" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
<el-row v-show="formobj.customerTypeKey === '2'">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">法人和实际控制人签署的信息查询授权书</div>
<el-form-item>
<upload-img ref="uploadImg" class="addinputInfo addinputInfo-special" v-model="image_list3" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
<el-row v-show="formobj.customerTypeKey === '1' && formobj.isAnchored === '1'">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">车队挂靠协议</div>
<el-form-item>
<upload-img ref="uploadImg" class="addinputInfo addinputInfo-special" v-model="image_list4" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">其他资料</div>
<el-form-item>
<upload-img ref="uploadImg" class="addinputInfo addinputInfo-special" v-model="image_list5" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
</template>
<script>
import req from '@/api/delinquentcustomerfiling/delinquentcustomerfiling'
import { selectOrgList, selectMangerByDeptSid, selectCustomerList, typeValues, selectInvoingByOrgPath } from '@/api/Common/dictcommons'
import uploadImg from '@/components/uploadFile/uploadImg'
export default {
name: 'DelinquentCustomerFilingEdit',
components: {
uploadImg
},
data() {
return {
viewTitle: '',
submitdisabled: false,
tableKey: 0,
index: 0,
listLoading: false,
checked: false,
org_list: [],
customer_list: [],
identity_list: [],
business_list: [],
staff_list: [],
image_list1: [],
image_list2: [],
image_list3: [],
image_list4: [],
image_list5: [],
formobj: {
sid: '',
userSid: '',
applyName: '',
applyDate: '',
salesmanSid: '',
salesman: '',
dept: '',
deptSid: '',
salesDept: '',
salesDeptSid: '',
manage: '',
manageSid: '',
isAnchored: '',
customerSid: '',
customer: '',
customerTypeKey: '',
customerType: '',
clientPhone: '',
clientNo: '',
documents: '',
documentsDate: '',
clientAddress: '',
businessName: '',
taxpayerNo: '',
address: '',
phone: '',
leader: '',
legal: '',
orgPath: '',
staffs: [],
license: [],
idCard: [],
infoLetter: [],
agreement: [],
otherInfo: [],
taskId: '',
instanceId: '',
remarks: ''
},
rules: {}
}
},
created() {
console.log('url:' + window.location.href)
var one = window.location.href.indexOf('&data') + 6
const data = window.location.href.substr(one) // urlunescape()web,使
const obj = JSON.parse(decodeURIComponent(data))
this.showInfo(obj.businessSid)
},
mounted() {
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 2,
data: 500 + 'px'
}
}, '*')
},
methods: {
init() {
typeValues({ type: 'identity' }).then((res) => {
if (res.success) {
this.identity_list = res.data
}
})
},
showInfo(sid) {
this.viewTitle = '【编辑】欠款客户备案申请'
this.$nextTick(() => {
this.$refs['dataForm'].clearValidate()
})
this.init()
req.fetchBySid(sid).then((res) => {
if (res.success) {
this.formobj = res.data
this.selectOrg(this.formobj.userSid, this.formobj.orgPath)
if (this.formobj.license.length > 0) {
this.formobj.license.forEach((e) => {
this.image_list1.push({
name: '',
url: e
})
})
}
if (this.formobj.idCard.length > 0) {
this.formobj.idCard.forEach((e) => {
this.image_list2.push({
name: '',
url: e
})
})
}
if (this.formobj.infoLetter.length > 0) {
this.formobj.infoLetter.forEach((e) => {
this.image_list3.push({
name: '',
url: e
})
})
}
if (this.formobj.agreement.length > 0) {
this.formobj.agreement.forEach((e) => {
this.image_list4.push({
name: '',
url: e
})
})
}
if (this.formobj.otherInfo.length > 0) {
this.formobj.otherInfo.forEach((e) => {
this.image_list5.push({
name: '',
url: e
})
})
}
}
})
},
//
selectOrg(userSid, orgSidPath) {
selectOrgList({ userSid: userSid, orgPath: orgSidPath }).then((resp) => {
if (resp.success) {
this.org_list = resp.data
}
})
},
//
selectCustomer(userSid, staffSid, orgSidPath) {
selectCustomerList({ userSid: userSid, staffSid: staffSid, orgPath: orgSidPath }).then((res) => {
if (res.success) {
this.customer_list = res.data
}
})
},
// --
changeChecked(val) {
if (val) {
this.formobj.salesDept = this.formobj.dept
this.formobj.salesDeptSid = this.formobj.deptSid
this.formobj.salesman = this.formobj.applyName
this.formobj.salesmanSid = window.sessionStorage.getItem('staffSid')
this.selectCustomer(this.formobj.userSid, this.formobj.salesmanSid, this.formobj.orgPath)
selectMangerByDeptSid({ deptSid: this.formobj.deptSid }).then((res) => {
if (res.success) {
this.formobj.manage = res.data.manage
this.formobj.manageSid = res.data.manageSid
}
})
} else {
this.formobj.salesDept = ''
this.formobj.salesDeptSid = ''
this.formobj.salesman = ''
this.formobj.salesmanSid = ''
this.formobj.manage = ''
this.formobj.manageSid = ''
}
},
//
changeOrg(value) {
const choosetItem = this.org_list.filter((item) => item.orgDeptName === value)
if (choosetItem.length > 0 && choosetItem !== null) {
this.formobj.salesDeptSid = choosetItem[0].orgDeptSid
this.staff_list = choosetItem[0].staffinfoVoList
selectMangerByDeptSid({ deptSid: choosetItem[0].orgDeptSid }).then((res) => {
if (res.success) {
this.formobj.manage = res.data.manage
this.formobj.manageSid = res.data.manageSid
}
})
} else {
//
this.formobj.salesDeptSid = ''
//
this.formobj.salesman = ''
this.formobj.salesmanSid = ''
this.staff_list = []
//
this.formobj.manage = ''
this.formobj.manageSid = ''
}
},
//
changeStaff(value) {
const choosetItem = this.staff_list.filter((item) => item.staffName === value)
if (choosetItem.length > 0 && choosetItem !== null) {
this.formobj.salesmanSid = choosetItem[0].staffSid
this.selectCustomer(this.formobj.userSid, this.formobj.salesmanSid, this.formobj.orgPath)
} else {
this.formobj.salesmanSid = ''
}
},
//
changeCustomer(value) {
const choosetItem = this.customer_list.filter((item) => item.name === value)
if (choosetItem.length > 0 && choosetItem !== null) {
this.formobj.customerSid = choosetItem[0].sid
this.formobj.customerType = choosetItem[0].customerType
this.formobj.customerTypeKey = choosetItem[0].customerTypeKey
this.formobj.clientPhone = choosetItem[0].mobile
this.formobj.documents = choosetItem[0].documents
this.formobj.documentsDate = choosetItem[0].documentsDate
this.formobj.clientNo = choosetItem[0].idCard
this.formobj.clientAddress = choosetItem[0].clientAddress
} else {
this.formobj.customerSid = ''
this.formobj.customerType = ''
this.formobj.customerTypeKey = ''
this.formobj.clientPhone = ''
this.formobj.documents = ''
this.formobj.documentsDate = ''
this.formobj.clientNo = ''
this.formobj.clientAddress = ''
}
},
isAnchoredChange(val) {
if (val === '1') {
selectInvoingByOrgPath({ orgPath: this.formobj.orgPath }).then((res) => {
if (res.success) {
this.business_list = res.data
}
})
}
},
addPerson() {
this.formobj.staffs.push({
name: '',
identityKey: '',
identityValue: '',
mobile: '',
idNumber: ''
})
},
identityChange(value, row) {
const choose = this.identity_list.filter((item) => item.dictValue === value)
if (choose.length > 0) {
row.identityKey = choose[0].dictKey
} else {
row.identityKey = ''
}
},
deletePerson(index) {
this.formobj.staffs.splice(index, 1)
},
changeBusiness(value) {
const choose = this.business_list.filter((item) => item.businessName === value)
if (choose.length > 0) {
this.formobj.taxpayerNo = choose[0].taxpayerNo
this.formobj.phone = choose[0].phone
this.formobj.address = choose[0].address
} else {
this.formobj.taxpayerNo = ''
this.formobj.phone = ''
this.formobj.address = ''
}
},
save() {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
this.getUrl()
this.submitdisabled = true
req.saveOrUpdate(this.formobj).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '保存成功' })
// ()
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
submit() {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
this.getUrl()
this.submitdisabled = true
req.submit(this.formobj).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '操作成功' })
// ()
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
getUrl() {
if (this.image_list1.length > 0) {
const aa = []
this.image_list1.forEach((e) => {
aa.push(e.url)
})
this.formobj.license = aa
} else {
this.formobj.license = []
}
if (this.image_list2.length > 0) {
const aa = []
this.image_list2.forEach((e) => {
aa.push(e.url)
})
this.formobj.idCard = aa
} else {
this.formobj.idCard = []
}
if (this.image_list3.length > 0) {
const aa = []
this.image_list3.forEach((e) => {
aa.push(e.url)
})
this.formobj.infoLetter = aa
} else {
this.formobj.infoLetter = []
}
if (this.image_list4.length > 0) {
const aa = []
this.image_list4.forEach((e) => {
aa.push(e.url)
})
this.formobj.agreement = aa
} else {
this.formobj.agreement = []
}
if (this.image_list5.length > 0) {
const aa = []
this.image_list5.forEach((e) => {
aa.push(e.url)
})
this.formobj.otherInfo = aa
} else {
this.formobj.otherInfo = []
}
}
}
}
</script>
<style scoped>
.span-sty {
width: 170px !important;
}
.addinputInfo {
margin-left: 160px !important;
}
.span-sty-special {
width: 300px !important;
}
.addinputInfo-special {
margin-left: 290px !important;
}
.titleOne {
padding: 7px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
</style>

348
anrui-riskcenter-ui/src/views/workFlow/qiankuanbeianFlow/delinquentcustomerfilingYiBan.vue

@ -0,0 +1,348 @@
<template>
<div class="app-container">
<div>
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="danger" size="small" @click="openRevoke()">撤回</el-button>
</div>
</div>
</div>
<div class="">
<el-form ref="dataForm" :model="formobj" class="formaddcopy02" :rules="rules">
<el-row style="border-top: 1px solid #DFE6EC">
<el-col :span="8">
<div class="span-sty">申请部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.dept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请人</div>
<el-form-item><span class="addinputInfo">{{ formobj.applyName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.applyDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">销售部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.salesDept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">销售专员</div>
<el-form-item><span class="addinputInfo">{{ formobj.salesman }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">销售部经理</div>
<el-form-item><span class="addinputInfo">{{ formobj.manage }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col>
</el-row>
<div class="title">客户基本信息</div>
<el-row>
<el-col :span="16">
<div class="span-sty">客户名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.customer }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">客户类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerType }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">联系电话</div>
<el-form-item><span class="addinputInfo">{{ formobj.clientPhone }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">证件类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.documents }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">证件号码</div>
<el-form-item><span class="addinputInfo">{{ formobj.clientNo }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">证件有效期</div>
<el-form-item><span class="addinputInfo">{{ formobj.documentsDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16" class="tlineheightb">
<div class="span-sty">地址</div>
<el-form-item><span class="addinputInfo">{{ formobj.clientAddress }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">是否挂靠运输公司</div>
<el-form-item><span class="addinputInfo">{{ formobj.isAnchored = '1' ? '是' : '否' }}</span></el-form-item>
</el-col>
</el-row>
<div v-if="formobj.customerTypeKey === '2'">
<div class="title">企业人员信息</div>
<el-table :key="tableKey" v-loading="listLoading" :data="formobj.staffs" :index="index" border style="width: 100%">
<el-table-column fixed width="80px" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column label="姓名" align="center">
<template slot-scope="scope">
<span>{{ scope.row.name }}</span>
</template>
</el-table-column>
<el-table-column label="身份" align="center">
<template slot-scope="scope">
<span>{{ scope.row.identityValue }}</span>
</template>
</el-table-column>
<el-table-column label="手机号码" align="center">
<template slot-scope="scope">
<span>{{ scope.row.mobile }}</span>
</template>
</el-table-column>
<el-table-column label="身份证号码" align="center">
<template slot-scope="scope">
<span>{{ scope.row.idNumber }}</span>
</template>
</el-table-column>
</el-table>
</div>
<div v-show="formobj.customerTypeKey === '1' && formobj.isAnchored === '是'">
<div class="title">挂靠运输公司信息</div>
<el-row>
<el-col :span="16">
<div class="span-sty">企业名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.businessName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">统一社会信用代码</div>
<el-form-item><span class="addinputInfo">{{ formobj.taxpayerNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">负责人</div>
<el-form-item><span class="addinputInfo">{{ formobj.leader }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">联系电话</div>
<el-form-item><span class="addinputInfo">{{ formobj.phone }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">法定代表人</div>
<el-form-item><span class="addinputInfo">{{ formobj.legal }}</span></el-form-item>
</el-col>
<el-col :span="8" class="tlineheightb">
<div class="span-sty">地址</div>
<el-form-item><span class="addinputInfo">{{ formobj.address }}</span></el-form-item>
</el-col>
</el-row>
</div>
<div class="title">附件清单</div>
<el-row v-if="formobj.customerTypeKey === '2' || (formobj.customerTypeKey === '1' && formobj.isAnchored === '是')">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">营业执照</div>
<el-form-item><el-image class="addinputInfo-special" style="width: 150px; height: 150px" v-for="(item, index) in formobj.license" :key="index" :src="item" :preview-src-list="formobj.license"/></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.customerTypeKey === '2' || (formobj.customerTypeKey === '1' && formobj.isAnchored === '否')">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">法人和实际控制人身份证</div>
<el-form-item><el-image class="addinputInfo-special" style="width: 150px; height: 150px" v-for="(item, index) in formobj.idCard" :key="index" :src="item" :preview-src-list="formobj.idCard"/></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.customerTypeKey === '2'">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">法人和实际控制人签署的信息查询授权书</div>
<el-form-item><el-image class="addinputInfo-special" style="width: 150px; height: 150px" v-for="(item, index) in formobj.infoLetter" :key="index" :src="item" :preview-src-list="formobj.infoLetter"/></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.customerTypeKey === '1' && formobj.isAnchored === '是'">
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">车队挂靠协议</div>
<el-form-item><el-image class="addinputInfo-special" style="width: 150px; height: 150px" v-for="(item, index) in formobj.agreement" :key="index" :src="item" :preview-src-list="formobj.agreement"/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty span-sty-special" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">其他资料</div>
<el-form-item><el-image class="addinputInfo-special" style="width: 150px; height: 150px" v-for="(item, index) in formobj.otherInfo" :key="index" :src="item" :preview-src-list="formobj.otherInfo"/></el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
</template>
<script>
import req from '@/api/delinquentcustomerfiling/delinquentcustomerfiling'
export default {
name: 'DelinquentCustomerFilingYiBan',
data() {
return {
viewTitle: '',
tableKey: 0,
index: 0,
listLoading: false,
formobj: {
sid: '',
userSid: '',
applyName: '',
applyDate: '',
salesmanSid: '',
salesman: '',
dept: '',
deptSid: '',
salesDept: '',
salesDeptSid: '',
manage: '',
manageSid: '',
isAnchored: '',
customerSid: '',
customer: '',
customerTypeKey: '',
customerType: '',
clientPhone: '',
clientNo: '',
documents: '',
documentsDate: '',
clientAddress: '',
businessName: '',
taxpayerNo: '',
address: '',
phone: '',
leader: '',
legal: '',
orgPath: '',
staffs: [],
license: [],
idCard: [],
infoLetter: [],
agreement: [],
otherInfo: [],
taskId: '',
instanceId: '',
remarks: ''
},
//
linkByParameter: {
businessSid: '',
comment: '',
instanceId: '',
taskId: '',
orgSidPath: '',
taskDefKey: '',
userSid: ''
},
rules: {}
}
},
created() {
console.log('url:' + window.location.href)
var one = window.location.href.indexOf('&data') + 6
const data = window.location.href.substr(one) // urlunescape()web,使
const obj = JSON.parse(decodeURIComponent(data))
console.log('iframe页面获取的obj:', obj)
//
this.linkByParameter.businessSid = obj.businessSid
this.linkByParameter.instanceId = obj.instanceId
this.linkByParameter.taskId = obj.taskId
this.linkByParameter.taskDefKey = obj.taskDefKey
this.linkByParameter.userSid = window.sessionStorage.getItem('userSid')
//
this.showInfo(obj.businessSid)
},
mounted() {
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 2,
data: 500 + 'px'
}
}, '*')
},
methods: {
showInfo(sid) {
this.viewTitle = '欠款客户备案详情'
req.fetchBySid(sid).then((resp) => {
if (resp.success) {
this.formobj = resp.data
}
})
},
/** 确认撤回任务 */
openRevoke() {
this.$confirm('是否确认执行撤回操作', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.handleRevoke()
}).catch(() => {
this.$message({
type: 'info',
message: '已取消撤回'
})
})
},
/** 撤回任务 */
handleRevoke() {
req.revokeProcess(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
}
}
}
</script>
<style scoped>
.span-sty {
width: 170px !important;
}
.addinputInfo {
margin-left: 160px !important;
}
.span-sty-special {
width: 300px !important;
}
.addinputInfo-special {
margin-left: 290px !important;
}
.tlineheightb {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
/deep/ .tlineheightb .el-form-item .el-form-item__content .addinputInfo {
line-height: 15px !important;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
</style>

89
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/LoanCustomerRecord.java

@ -0,0 +1,89 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecord;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* File: LoanCustomerRecord.java <br/>
* Description: 欠款客户备案. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2021-09-10 11:31:46 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@ApiModel(value = "欠款客户备案", description = "欠款客户备案")
@TableName("loan_customer_record")
@Data
public class LoanCustomerRecord extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("申请人")
private String applyName; // 申请人
@ApiModelProperty("销售专员sid")
private String salesmanSid; // 销售专员sid
@ApiModelProperty("销售专员")
private String salesman; // 销售专员
@ApiModelProperty("申请日期")
private Date applyDate; // 申请日期
@ApiModelProperty("申请部门")
private String dept;
@ApiModelProperty("申请部门sid")
private String deptSid;
@ApiModelProperty("销售部门")
private String salesDept;
@ApiModelProperty("销售部门sid")
private String salesDeptSid;
@ApiModelProperty("销售经理主管")
private String manage;
@ApiModelProperty("销售经理主管sid")
private String manageSid;
@ApiModelProperty("有效期")
private String effectiveDate;
@ApiModelProperty("是否挂靠运输公司1是0否")
private String isAnchored; // 台数
@ApiModelProperty("客户sid")
private String customerSid;
@ApiModelProperty("客户")
private String customer;
@ApiModelProperty("客户类型key")
private String customerTypeKey;
@ApiModelProperty("客户类型")
private String customerType;
@ApiModelProperty("挂靠公司企业名称")
private String businessName; // 台数
@ApiModelProperty("统一社会信用代码")
private String taxpayerNo;
@ApiModelProperty("挂靠公司地址")
private String address;
@ApiModelProperty("挂靠公司电话")
private String phone; // 台数
@ApiModelProperty("负责人")
private String leader;
@ApiModelProperty("法定代表人")
private String legal;
@ApiModelProperty("使用组织sid")
private String useOrgSid; // 使用组织sid
@ApiModelProperty("使用组织名称")
private String useOrgName; // 使用组织名称
@ApiModelProperty("流程定义的id")
private String procDefId; // 流程定义的id
@ApiModelProperty("环节定义的sid")
private String nodeSid; // 环节定义的sid
@ApiModelProperty("流程实例的sid")
private String procInstId; // 流程实例的sid
@ApiModelProperty("流程状态")
private String nodeState; // 流程状态
@ApiModelProperty("taskId")
private String taskId; // taskId
@ApiModelProperty("申请人组织路径")
private String orgSidPath; // 申请人组织路径
}

95
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/LoanCustomerRecordDetailsVo.java

@ -0,0 +1,95 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecord;
import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaffVo;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author Administrator
* @description
* @date 2023/10/10 17:22
*/
@Data
public class LoanCustomerRecordDetailsVo implements Vo {
private String sid;
@ApiModelProperty("登录用户sid")
private String userSid; // 登录用户sid
@ApiModelProperty("申请人")
private String applyName; // 申请人
@ApiModelProperty("申请日期")
private String applyDate;
@ApiModelProperty("销售专员sid")
private String salesmanSid; // 销售专员sid
@ApiModelProperty("销售专员")
private String salesman; // 销售专员
@ApiModelProperty("申请部门")
private String dept;
@ApiModelProperty("申请部门sid")
private String deptSid;
@ApiModelProperty("销售部门")
private String salesDept;
@ApiModelProperty("销售部门sid")
private String salesDeptSid;
@ApiModelProperty("销售经理主管")
private String manage;
@ApiModelProperty("销售经理主管sid")
private String manageSid;
@ApiModelProperty("是否挂靠运输公司1是0否")
private String isAnchored; // 是否挂靠运输公司1是0否
@ApiModelProperty("客户sid")
private String customerSid;
@ApiModelProperty("客户")
private String customer;
@ApiModelProperty("客户类型key")
private String customerTypeKey;
@ApiModelProperty("客户类型")
private String customerType;
@ApiModelProperty("客户联系电话")
private String clientPhone;
@ApiModelProperty("客户证件号")
private String clientNo;
@ApiModelProperty("客户证件类型")
private String documents;
@ApiModelProperty("客户证件有效期")
private String documentsDate;
@ApiModelProperty("客户地址")
private String clientAddress;
@ApiModelProperty("挂靠公司企业名称")
private String businessName; // 台数
@ApiModelProperty("统一社会信用代码")
private String taxpayerNo;
@ApiModelProperty("挂靠公司地址")
private String address;
@ApiModelProperty("挂靠公司电话")
private String phone; // 台数
@ApiModelProperty("负责人")
private String leader;
@ApiModelProperty("法定代表人")
private String legal;
@ApiModelProperty("申请人组织路径")
private String orgPath; // 申请人组织路径
@ApiModelProperty("企业开票人员信息")
private List<LoanCustomerRecordStaffVo> staffs = new ArrayList<>();
@ApiModelProperty("营业执照")
private List<String> license = new ArrayList<>();
@ApiModelProperty("法人和实际控制人身份证")
private List<String> idCard = new ArrayList<>();
@ApiModelProperty("信息查询授权书")
private List<String> infoLetter = new ArrayList<>();
@ApiModelProperty("车队挂靠协议")
private List<String> agreement = new ArrayList<>();
@ApiModelProperty("其他资料")
private List<String> otherInfo = new ArrayList<>();
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("实例id")
private String instanceId;
@ApiModelProperty("备注")
private String remarks; // 备注
}

95
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/LoanCustomerRecordDto.java

@ -0,0 +1,95 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecord;
import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaffDto;
import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaffVo;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Project: anrui-base(安瑞基础信息模块) <br/>
* File: BaseFinBankDto.java <br/>
* Class: com.yxt.anrui.base.api.basefinbank.BaseFinBankDto <br/>
* Description: 资方信息表 数据传输对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2021-09-10 11:31:46 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@ApiModel(value = "资方信息表 数据传输对象", description = "资方信息表 数据传输对象")
@Data
public class LoanCustomerRecordDto implements Dto {
private String sid;
@ApiModelProperty("登录用户sid")
private String userSid; // 申请人
@ApiModelProperty("申请人")
private String applyName; // 申请人
@ApiModelProperty("申请日期")
private String applyDate;
@ApiModelProperty("销售专员sid")
private String salesmanSid; // 销售专员sid
@ApiModelProperty("销售专员")
private String salesman; // 销售专员
@ApiModelProperty("申请部门")
private String dept;
@ApiModelProperty("申请部门sid")
private String deptSid;
@ApiModelProperty("销售部门")
private String salesDept;
@ApiModelProperty("销售部门sid")
private String salesDeptSid;
@ApiModelProperty("销售经理主管")
private String manage;
@ApiModelProperty("销售经理主管sid")
private String manageSid;
@ApiModelProperty("是否挂靠运输公司1是0否")
private String isAnchored; // 台数
@ApiModelProperty("客户sid")
private String customerSid;
@ApiModelProperty("客户")
private String customer;
@ApiModelProperty("客户类型key")
private String customerTypeKey;
@ApiModelProperty("客户类型")
private String customerType;
@ApiModelProperty("挂靠公司企业名称")
private String businessName; // 台数
@ApiModelProperty("统一社会信用代码")
private String taxpayerNo;
@ApiModelProperty("挂靠公司地址")
private String address;
@ApiModelProperty("挂靠公司电话")
private String phone; // 台数
@ApiModelProperty("负责人")
private String leader;
@ApiModelProperty("法定代表人")
private String legal;
@ApiModelProperty("申请人组织路径")
private String orgPath; // 申请人组织路径
@ApiModelProperty("企业开票人员信息")
private List<LoanCustomerRecordStaffDto> staffs = new ArrayList<>();
@ApiModelProperty("营业执照")
private List<String> license = new ArrayList<>();
@ApiModelProperty("法人和实际控制人身份证")
private List<String> idCard = new ArrayList<>();
@ApiModelProperty("信息查询授权书")
private List<String> infoLetter = new ArrayList<>();
@ApiModelProperty("车队挂靠协议")
private List<String> agreement = new ArrayList<>();
@ApiModelProperty("其他资料")
private List<String> otherInfo = new ArrayList<>();
@ApiModelProperty("备注")
private String remarks; // 备注
}

133
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/LoanCustomerRecordFeign.java

@ -0,0 +1,133 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecord;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.AppCustomerRecordQuery;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.AppCustomerRecordVo;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
* File: BaseFinBankFeign.java <br/>
* Class: com.yxt.anrui.base.api.basefinbank.BaseFinBankFeign <br/>
* Description: 欠款客户备案. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2021-09-10 11:31:46 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Api(tags = "欠款客户备案")
@FeignClient(
contextId = "anrui-riskcenter-LoanCustomerRecord",
name = "anrui-riskcenter",
path = "v1/loancustomerrecord",
fallback = LoanCustomerRecordFeignFallback.class)
public interface LoanCustomerRecordFeign {
/**
* 根据条件分页查询数据的列表已测试
*
* @param pq
*/
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listPage")
public ResultBean<PagerVo<LoanCustomerRecordVo>> listPage(@RequestBody PagerQuery<LoanCustomerRecordQuery> pq);
/**
* 编辑回显详情查看
*
* @param
*/
@ApiOperation("编辑回显、详情查看")
@GetMapping("/detail/{sid}")
@ResponseBody
public ResultBean<LoanCustomerRecordDetailsVo> detail(@PathVariable("sid") String sid);
/**
* 保存修改
* @param
*/
@ApiOperation("保存修改")
@PostMapping("/saveRecord")
@ResponseBody
public ResultBean<String> saveRecord(@RequestBody LoanCustomerRecordDto dto);
/**
* 查询挂靠公司
* @param
*/
@ApiOperation("查询挂靠公司")
@GetMapping("/selectInvoingByOrgPath")
@ResponseBody
public ResultBean<List<LoanFinCompanyInvoicingVo>> selectInvoingByOrgPath(@RequestParam("orgPath") String orgPath);
/**
* 批量删除已测试
*
* @param sids
*/
@ApiOperation("批量删除")
@DeleteMapping("/deleteBySids")
@ResponseBody
public ResultBean deleteBySids(@RequestBody String[] sids);
//------------------------------流程接口----------------------------------------------
@ApiOperation("欠款客户备案提交")
@PostMapping("/submit")
public ResultBean submitRecordApplication(@RequestBody @Valid SubmitCustomerRecordDto dto);
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody CustomerRecordCompleteDto dto);
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody CustomerRecordTaskQuery query);
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean taskReject(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody CustomerRecordTaskQuery query);
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@RequestBody CustomerRecordTaskQuery query);
@ApiOperation(value = "流程历史流转记录")
@GetMapping(value = "/task/flowRecord/{procInsId}/{deployId}")
public ResultBean flowRecord(@ApiParam(value = "流程实例id") @PathVariable(value = "procInsId") String procInsId);
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
ResultBean<List<GetNodeVo>> getNextNodesForSubmit(@Valid @SpringQueryMap GetNodeQuery query);
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
ResultBean<List<GetNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap GetNodeQuery query);
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
public ResultBean delegate(@RequestBody CustomerRecordDelegateQuery distributorDelegateQuery);
//---------------------------app--------------------------------
@ApiOperation("移动端-欠款客户备案分页列表")
@PostMapping("/getCustomerRecordList")
@ResponseBody
ResultBean<PagerVo<AppCustomerRecordVo>> getCustomerRecordList(@RequestBody PagerQuery<AppCustomerRecordQuery> pagerQuery);
}

93
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/LoanCustomerRecordFeignFallback.java

@ -0,0 +1,93 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecord;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.AppCustomerRecordQuery;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.AppCustomerRecordVo;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class LoanCustomerRecordFeignFallback implements LoanCustomerRecordFeign {
@Override
public ResultBean<PagerVo<LoanCustomerRecordVo>> listPage(PagerQuery<LoanCustomerRecordQuery> pq) {
return null;
}
@Override
public ResultBean<LoanCustomerRecordDetailsVo> detail(String sid) {
return null;
}
@Override
public ResultBean<String> saveRecord(LoanCustomerRecordDto dto) {
return null;
}
@Override
public ResultBean<List<LoanFinCompanyInvoicingVo>> selectInvoingByOrgPath(String orgPath) {
return null;
}
@Override
public ResultBean deleteBySids(String[] sids) {
return null;
}
@Override
public ResultBean submitRecordApplication(SubmitCustomerRecordDto dto) {
return null;
}
@Override
public ResultBean complete(CustomerRecordCompleteDto dto) {
return null;
}
@Override
public ResultBean revokeProcess(CustomerRecordTaskQuery query) {
return null;
}
@Override
public ResultBean taskReject(CustomerRecordTaskQuery query) {
return null;
}
@Override
public ResultBean breakProcess(CustomerRecordTaskQuery query) {
return null;
}
@Override
public ResultBean flowRecord(String procInsId) {
return null;
}
@Override
public ResultBean<List<GetNodeVo>> getNextNodesForSubmit(GetNodeQuery query) {
return null;
}
@Override
public ResultBean<List<GetNodeVo>> getPreviousNodesForReject(GetNodeQuery query) {
return null;
}
@Override
public ResultBean delegate(CustomerRecordDelegateQuery distributorDelegateQuery) {
return null;
}
@Override
public ResultBean<PagerVo<AppCustomerRecordVo>> getCustomerRecordList(PagerQuery<AppCustomerRecordQuery> pagerQuery) {
return null;
}
}

55
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/LoanCustomerRecordQuery.java

@ -0,0 +1,55 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecord;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Project: anrui-base(安瑞基础信息模块) <br/>
* File: BaseFinBankQuery.java <br/>
* Class: com.yxt.anrui.base.api.basefinbank.BaseFinBankQuery <br/>
* Description: 资方信息表 查询条件. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2021-09-10 11:31:46 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@ApiModel(value = "欠款客户备案 查询条件", description = "欠款客户备案 查询条件")
@Data
public class LoanCustomerRecordQuery implements Query {
@ApiModelProperty("分公司")
private String company; // 使用组织名称
@ApiModelProperty("申请人")
private String applyName; // 申请人
@ApiModelProperty("申请部门")
private String dept;
@ApiModelProperty("销售专员")
private String salesman; // 销售专员
@ApiModelProperty("申请开始日期")
private String applyStartDate; // 申请日期
@ApiModelProperty("申请结束日期")
private String applyEndDate; // 申请日期
@ApiModelProperty("客户名称")
private String customer;
@ApiModelProperty("有效期")
private String effectiveStartDate;
@ApiModelProperty("有效期")
private String effectiveEndDate;
@ApiModelProperty("客户类型")
private String customerTypeKey;
@ApiModelProperty("组织全路径")
private String orgPath;
@ApiModelProperty("菜单sid")
private String menuSid;
@ApiModelProperty("菜单url")
private String menuUrl;
@ApiModelProperty("用户sid")
private String userSid;
}

55
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/LoanCustomerRecordVo.java

@ -0,0 +1,55 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecord;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* Project: anrui-base(安瑞基础信息模块) <br/>
* File: BaseFinBankVo.java <br/>
* Class: com.yxt.anrui.base.api.basefinbank.BaseFinBankVo <br/>
* Description: 资方信息表 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2021-09-10 11:31:46 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@ApiModel(value = "欠款客户备案 视图数据对象", description = "欠款客户备案 视图数据对象")
@Data
public class LoanCustomerRecordVo implements Vo {
private String sid;
@ApiModelProperty("申请人")
private String applyName; // 申请人
@ApiModelProperty("销售专员")
private String salesman; // 销售专员
@ApiModelProperty("申请日期")
private String applyDate; // 申请日期
@ApiModelProperty("申请部门")
private String dept;
@ApiModelProperty("客户")
private String customer;
@ApiModelProperty("客户类型")
private String customerType;
@ApiModelProperty("有效期")
private String effectiveDate;
@ApiModelProperty("分公司")
private String company; // 使用组织名称
@ApiModelProperty("流程定义的id")
private String procDefId; // 流程定义的id
@ApiModelProperty("流程实例的sid")
private String procInstId; // 流程实例的sid
@ApiModelProperty("流程状态")
private String nodeState; // 流程状态
@ApiModelProperty("备注")
private String remarks; // 备注
}

21
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/LoanFinCompanyInvoicingVo.java

@ -0,0 +1,21 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecord;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/10/11 17:05
*/
@Data
public class LoanFinCompanyInvoicingVo {
@ApiModelProperty("挂靠公司企业名称")
private String businessName; // 台数
@ApiModelProperty("统一社会信用代码")
private String taxpayerNo;
@ApiModelProperty("挂靠公司地址")
private String address;
@ApiModelProperty("挂靠公司电话")
private String phone; // 台数
}

21
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/app/AppCustomerRecordQuery.java

@ -0,0 +1,21 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecord.app;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/10/12 15:51
*/
@Data
public class AppCustomerRecordQuery implements Query {
@ApiModelProperty(value = "用户sid")
private String userSid;
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty("机构sid")
private String orgPath;
private String menuSid;
}

56
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/app/AppCustomerRecordVo.java

@ -0,0 +1,56 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecord.app;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/10/12 15:49
*/
@Data
public class AppCustomerRecordVo implements Vo {
/**
* 申请日期
*/
private String applyDate;
/**
* 申请人
*/
private String applyName;
/**
* 分公司
*/
private String company;
/**
* 申请部门
*/
private String dept;
/**
* 客户名称
*/
private String customer;
/**
* 有效期至
*/
private String effectiveDate;
/**
* 销售专员
*/
private String salesman;
/**
* 备案记录sid
*/
private String sid;
/**
* 流程状态
*/
private String state;
@ApiModelProperty("某某部门,某某人")
private String publishInfo;
private boolean updateBtn;
private boolean deleteBtn;
}

41
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/flow/CustomerRecordCompleteDto.java

@ -0,0 +1,41 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecord.flow;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Map;
/**
* @Author dimengzhe
* @Date 2022/6/28 9:01
* @Description
*/
@Data
public class CustomerRecordCompleteDto implements Dto {
private static final long serialVersionUID = 3240453987322803352L;
@ApiModelProperty(value = "用户sid")
@NotBlank(message = "参数错误:userSid")
private String userSid;
@ApiModelProperty(value = "用户全路径sid")
private String orgSidPath;
@ApiModelProperty(value = "节点id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
@ApiModelProperty(value = "任务id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
@ApiModelProperty(value = "流程id")
@NotBlank(message = "参数错误:instanceId")
private String instanceId;
@ApiModelProperty(value = "意见")
@NotBlank(message = "参数错误:comment")
private String comment;
@ApiModelProperty(value = "业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
@ApiModelProperty(value = "分支字段及业务字段")
private Map<String, Object> formVariables;
}

26
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/flow/CustomerRecordDelegateQuery.java

@ -0,0 +1,26 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecord.flow;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/9/28 9:28
*/
@Data
public class CustomerRecordDelegateQuery {
@ApiModelProperty
private String userSid;
@ApiModelProperty("流程实例id")
// @JsonProperty("procInsId")
private String instanceId;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("审批人sid")
private String assignee;
@ApiModelProperty("填写意见")
private String views;
}

56
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/flow/CustomerRecordTaskQuery.java

@ -0,0 +1,56 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecord.flow;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/6/28 17:29
* @Description 终止撤回驳回查询参数
*/
@Data
public class CustomerRecordTaskQuery implements Query {
private static final long serialVersionUID = -4006020771892400451L;
/**
* 终止驳回撤回
*/
@ApiModelProperty("任务Id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
/**
* 终止驳回撤回
*/
@ApiModelProperty("业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
/**
* 终止驳回
*/
@ApiModelProperty("任务意见")
private String comment;
/**
* 终止撤回驳回
*/
@ApiModelProperty("用户Sid")
private String userSid;
/**
* 终止
*/
@ApiModelProperty("流程实例Id")
private String instanceId;
/*@ApiModelProperty("用户Id")
private String userId;
@ApiModelProperty("节点")
private String targetKey;
@ApiModelProperty("流程变量信息")
private Map<String, Object> values = new HashMap<>();
@ApiModelProperty("审批人")
private String assignee;
@ApiModelProperty("候选人")
private List<String> candidateUsers = new ArrayList<>();
@ApiModelProperty("审批组")
private List<String> candidateGroups = new ArrayList<>();*/
}

26
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/flow/GetNodeQuery.java

@ -0,0 +1,26 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecord.flow;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Map;
/**
* @Author dimengzhe
* @Date 2022/6/28 10:42
* @Description
*/
@Data
public class GetNodeQuery implements Query {
private static final long serialVersionUID = -5674867230708197611L;
@ApiModelProperty(value = "环节定义id")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
@ApiModelProperty(value = "分支字段及业务字段")
private Map<String, Object> formVariables;
}

25
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/flow/GetNodeVo.java

@ -0,0 +1,25 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecord.flow;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author dimengzhe
* @Date 2022/6/28 11:09
* @Description
*/
@Data
public class GetNodeVo implements Vo {
private static final long serialVersionUID = 8802774014747063504L;
@ApiModelProperty(value = "节点名称")
private String name;
@ApiModelProperty(value = "节点id")
private String id;
@ApiModelProperty(value = "审批组")
private List<String> candidateGroups;
@ApiModelProperty(value = "是否是最后环节")
private String endTask;
}

20
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecord/flow/SubmitCustomerRecordDto.java

@ -0,0 +1,20 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecord.flow;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecordDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author dimengzhe
* @Date 2022/6/27 13:38
* @Description
*/
@Data
public class SubmitCustomerRecordDto extends LoanCustomerRecordDto {
private static final long serialVersionUID = 378585162071125756L;
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务id")
private String taskId;
}

45
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecordstaff/LoanCustomerRecordStaff.java

@ -0,0 +1,45 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecordstaff;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* File: LoanCustomerRecord.java <br/>
* Description: 欠款客户备案. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2021-09-10 11:31:46 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@ApiModel(value = "欠款客户备案企业人员信息", description = "欠款客户备案企业人员信息")
@TableName("loan_customer_record_staff")
@Data
public class LoanCustomerRecordStaff extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("欠款客户备案sid")
private String customerRecordSid;
@ApiModelProperty("姓名(陕汽必须字段)")
private String name;
@ApiModelProperty("身份key")
private String identityKey;
@ApiModelProperty("身份value")
private String identityValue;
@ApiModelProperty("联系电话(陕汽必须字段)")
private String mobile;
@ApiModelProperty("身份证号")
private String idNumber;
}

26
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecordstaff/LoanCustomerRecordStaffDto.java

@ -0,0 +1,26 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecordstaff;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/10/10 17:05
*/
@Data
public class LoanCustomerRecordStaffDto implements Dto {
@ApiModelProperty("姓名(陕汽必须字段)")
private String name;
@ApiModelProperty("身份key")
private String identityKey;
@ApiModelProperty("身份value")
private String identityValue;
@ApiModelProperty("联系电话(陕汽必须字段)")
private String mobile;
@ApiModelProperty("身份证号")
private String idNumber;
}

57
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecordstaff/LoanCustomerRecordStaffFeign.java

@ -0,0 +1,57 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecordstaff;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* File: BaseFinBankFeign.java <br/>
* Class: com.yxt.anrui.base.api.basefinbank.BaseFinBankFeign <br/>
* Description: 欠款客户备案. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2021-09-10 11:31:46 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Api(tags = "欠款客户备案企业人员")
@FeignClient(
contextId = "anrui-riskcenter-LoanCustomerRecordStaff",
name = "anrui-riskcenter",
path = "v1/loancustomerrecordstaff",
fallback = LoanCustomerRecordStaffFeignFallback.class)
public interface LoanCustomerRecordStaffFeign {
/**
* 新增
*/
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/saveStaff")
public ResultBean saveStaff(@RequestBody LoanCustomerRecordStaffDto dto);
/**
* 根据欠款客户备案sid删除
*/
@ApiOperation("根据欠款客户备案sid删除")
@DeleteMapping("/deleteByMainSid")
public ResultBean deleteByMainSid(@RequestParam("customerRecordSid") String customerRecordSid);
/**
* 根据欠款客户备案sid查询人员信息
*/
@ApiOperation("根据欠款客户备案sid删除")
@GetMapping("/getStaffsByMainSid")
@ResponseBody
public ResultBean<List<LoanCustomerRecordStaffVo>> getStaffsByMainSid(@RequestParam("customerRecordSid") String customerRecordSid);
}

32
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecordstaff/LoanCustomerRecordStaffFeignFallback.java

@ -0,0 +1,32 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecordstaff;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecordQuery;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecordVo;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class LoanCustomerRecordStaffFeignFallback implements LoanCustomerRecordStaffFeign {
@Override
public ResultBean saveStaff(LoanCustomerRecordStaffDto dto) {
return null;
}
@Override
public ResultBean deleteByMainSid(String customerRecordSid) {
return null;
}
@Override
public ResultBean<List<LoanCustomerRecordStaffVo>> getStaffsByMainSid(String customerRecordSid) {
return null;
}
}

25
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loancustomerrecordstaff/LoanCustomerRecordStaffVo.java

@ -0,0 +1,25 @@
package com.yxt.anrui.riskcenter.api.loancustomerrecordstaff;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/10/10 17:18
*/
@Data
public class LoanCustomerRecordStaffVo implements Vo {
@ApiModelProperty("姓名(陕汽必须字段)")
private String name;
@ApiModelProperty("身份key")
private String identityKey;
@ApiModelProperty("身份value")
private String identityValue;
@ApiModelProperty("联系电话(陕汽必须字段)")
private String mobile;
@ApiModelProperty("身份证号")
private String idNumber;
}

5
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfile/LoanFileEnum.java

@ -15,6 +15,11 @@ public enum LoanFileEnum {
CREDIT_REVIEW_FILES("006", "非担保业务进度资方信审结果"), CREDIT_REVIEW_FILES("006", "非担保业务进度资方信审结果"),
LOAN_REVIEW_FILES("007", "非担保业务进度资方放款审核结果"), LOAN_REVIEW_FILES("007", "非担保业务进度资方放款审核结果"),
FIN_BANK("008", "资方"), FIN_BANK("008", "资方"),
LICENSE("009", "欠款客户备案营业执照"),
ID_CARD("010", "欠款客户备案法人和实际控制人身份证"),
INFO_LETTER("011", "欠款客户备案信息查询授权书"),
AGREEMENT("012", "车队挂靠协议"),
OTHER_INFO("013", "欠款客户备案其他资料"),
; ;

13
anrui-riskcenter/anrui-riskcenter-biz/pom.xml

@ -2,7 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent> <parent>
<groupId>com.yxt</groupId> <groupId>com.yxt</groupId>
<artifactId>yxt-parent</artifactId> <artifactId>yxt-parent</artifactId>
<version>0.0.1</version> <version>0.0.1</version>
@ -15,6 +15,11 @@
<version>0.0.1</version> <version>0.0.1</version>
<dependencies> <dependencies>
<dependency>
<groupId>com.yxt.anrui.fin</groupId>
<artifactId>anrui-fin-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency> <dependency>
<groupId>com.yxt.messagecenter</groupId> <groupId>com.yxt.messagecenter</groupId>
<artifactId>message-center-api</artifactId> <artifactId>message-center-api</artifactId>
@ -90,6 +95,12 @@
<version>0.0.1-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>com.yxt.anrui.fin</groupId>
<artifactId>anrui-fin-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>

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

@ -14,7 +14,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
"com.yxt.anrui.riskcenter" "com.yxt.anrui.riskcenter"
}) })
@EnableDiscoveryClient @EnableDiscoveryClient
@EnableFeignClients(basePackages = {"com.yxt.anrui.portal","com.yxt.anrui.buscenter","com.yxt.messagecenter","com.yxt.anrui.crm","com.yxt.anrui.base","com.yxt.anrui.flowable"}) @EnableFeignClients(basePackages = {"com.yxt.anrui.fin","com.yxt.anrui.portal","com.yxt.anrui.buscenter","com.yxt.messagecenter","com.yxt.anrui.crm","com.yxt.anrui.base","com.yxt.anrui.flowable"})
public class RiskCenterApplication { public class RiskCenterApplication {
public static void main(String[] args) { public static void main(String[] args) {

37
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancustomerrecord/LoanCustomerRecordMapper.java

@ -0,0 +1,37 @@
package com.yxt.anrui.riskcenter.biz.loancustomerrecord;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecord;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecordDetailsVo;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecordVo;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.AppCustomerRecordVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
import java.util.Map;
/**
* @description:
* @author: dimengzhe
* @date: 2023/7/6
**/
@Mapper
public interface LoanCustomerRecordMapper extends BaseMapper<LoanCustomerRecord> {
IPage<LoanCustomerRecordVo> listPage(IPage<LoanCustomerRecord> page, @Param(Constants.WRAPPER) QueryWrapper<LoanCustomerRecord> qw);
LoanCustomerRecordDetailsVo detail(String sid);
@Update("update loan_customer_record set isDelete = 1 where sid =#{sid}")
int updateBySidDelete(String sid);
int updateFlowFiled(Map<String, Object> map);
IPage<AppCustomerRecordVo> getCustomerRecordList(IPage<LoanCustomerRecord> page, @Param(Constants.WRAPPER) QueryWrapper<LoanCustomerRecord> qw);
}

74
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancustomerrecord/LoanCustomerRecordMapper.xml

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.riskcenter.biz.loancustomerrecord.LoanCustomerRecordMapper">
<update id="updateFlowFiled">
UPDATE loan_customer_record
SET nodeState=#{nodeState}
, nodeSid=#{taskDefKey}
<if test="procDefId != null and procDefId != ''">
, procDefId=#{procDefId}
</if>
<if test="procInsId != null and procInsId != ''">
, procInstId=#{procInsId}
</if>
<if test="taskId != null and taskId != ''">
, taskId=#{taskId}
</if>
WHERE sid = #{sid}
</update>
<select id="listPage" resultType="com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecordVo">
SELECT
sid,
nodeState,
useOrgName as company,
dept,
applyName,
date_format(applyDate, '%Y-%m-%d') as applyDate,
salesman,
customer,
effectiveDate,
remarks,
customerType,
procDefId,
procInstId
FROM loan_customer_record
<where>
${ew.sqlSegment}
</where>
</select>
<select id="detail"
resultType="com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecordDetailsVo">
SELECT sid,
nodeState,
useOrgName as company,
dept,
applyName,
date_format(applyDate, '%Y-%m-%d') as applyDate,
salesman,
customer,
effectiveDate,
remarks,
procDefId,
procInstId
FROM loan_customer_record
where sid = #{sid}
</select>
<select id="getCustomerRecordList"
resultType="com.yxt.anrui.riskcenter.api.loancustomerrecord.app.AppCustomerRecordVo">
SELECT
sid,
nodeState as `state`,
useOrgName as company,
dept,
applyName,
date_format(applyDate, '%Y-%m-%d') as applyDate,
salesman,
customer,
effectiveDate
FROM loan_customer_record
<where>
${ew.sqlSegment}
</where>
</select>
</mapper>

127
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancustomerrecord/LoanCustomerRecordRest.java

@ -0,0 +1,127 @@
package com.yxt.anrui.riskcenter.biz.loancustomerrecord;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.base.api.basedistributor.app.apply.AppDistributorApplyVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.*;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.AppCustomerRecordQuery;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.AppCustomerRecordVo;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.*;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.LoanFinPolicyRecordApply;
import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameterVo;
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.List;
@Api(tags = "欠款客户备案")
@RestController
@RequestMapping("v1/loancustomerrecord")
public class LoanCustomerRecordRest implements LoanCustomerRecordFeign {
@Autowired
private LoanCustomerRecordService loanCustomerRecordService;
@Override
public ResultBean<PagerVo<LoanCustomerRecordVo>> listPage(PagerQuery<LoanCustomerRecordQuery> pq) {
ResultBean<PagerVo<LoanCustomerRecordVo>> rb = ResultBean.fireFail();
PagerVo<LoanCustomerRecordVo> pv = loanCustomerRecordService.listPage(pq);
return rb.success().setData(pv);
}
@Override
public ResultBean<LoanCustomerRecordDetailsVo> detail(String sid) {
return loanCustomerRecordService.detail(sid);
}
@Override
public ResultBean<String> saveRecord(LoanCustomerRecordDto dto) {
return loanCustomerRecordService.saveRecord(dto);
}
@Override
public ResultBean<List<LoanFinCompanyInvoicingVo>> selectInvoingByOrgPath(String orgPath) {
return loanCustomerRecordService.selectInvoingByOrgPath(orgPath);
}
@Override
public ResultBean deleteBySids(String[] sids) {
ResultBean rb = ResultBean.fireFail();
for (String sid : sids) {
LoanCustomerRecord loanCustomerRecord = loanCustomerRecordService.fetchBySid(sid);
if (null != loanCustomerRecord) {
if (!loanCustomerRecord.getNodeState().equals("待提交")) {
return rb.setMsg("删除的数据中包含已经提交审批的数据,删除失败");
}
}
int count = loanCustomerRecordService.updateBySidDelete(sid);
if (count == 0) {
return rb.setMsg("删除失败");
}
}
return ResultBean.fireSuccess().setMsg("删除成功");
}
@Override
public ResultBean submitRecordApplication(SubmitCustomerRecordDto dto) {
return loanCustomerRecordService.submitRecordApplication(dto);
}
@Override
public ResultBean complete(CustomerRecordCompleteDto dto) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(dto, bv);
bv.setModelId(ProcDefEnum.LOANCUSTOMERRECORD.getProDefId());
return loanCustomerRecordService.complete(bv);
}
@Override
public ResultBean revokeProcess(CustomerRecordTaskQuery query) {
return loanCustomerRecordService.revokeProcess(query);
}
@Override
public ResultBean taskReject(CustomerRecordTaskQuery query) {
return loanCustomerRecordService.taskReject(query);
}
@Override
public ResultBean breakProcess(CustomerRecordTaskQuery query) {
return loanCustomerRecordService.breakProcess(query);
}
@Override
public ResultBean flowRecord(String procInsId) {
return loanCustomerRecordService.flowRecord(procInsId);
}
@Override
public ResultBean<List<GetNodeVo>> getNextNodesForSubmit(GetNodeQuery query) {
return loanCustomerRecordService.getNextNodesForSubmit(query);
}
@Override
public ResultBean<List<GetNodeVo>> getPreviousNodesForReject(GetNodeQuery query) {
return loanCustomerRecordService.getPreviousNodesForReject(query);
}
@Override
public ResultBean delegate(CustomerRecordDelegateQuery customerRecordDelegateQuery) {
return loanCustomerRecordService.delegate(customerRecordDelegateQuery);
}
@Override
public ResultBean<PagerVo<AppCustomerRecordVo>> getCustomerRecordList(PagerQuery<AppCustomerRecordQuery> pagerQuery) {
ResultBean<PagerVo<AppCustomerRecordVo>> rb = ResultBean.fireFail();
PagerVo<AppCustomerRecordVo> pv = loanCustomerRecordService.getCustomerRecordList(pagerQuery);
return rb.success().setData(pv);
}
}

935
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancustomerrecord/LoanCustomerRecordService.java

@ -0,0 +1,935 @@
package com.yxt.anrui.riskcenter.biz.loancustomerrecord;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
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.basedistributor.BaseDistributor;
import com.yxt.anrui.base.api.basedistributor.app.BaseDistributorsQuery;
import com.yxt.anrui.base.api.basedistributor.app.apply.AppDistributorApplyVo;
import com.yxt.anrui.base.api.basedistributorappendix.BaseDistributorAppendix;
import com.yxt.anrui.base.api.basedistributorapply.BaseDistributorApply;
import com.yxt.anrui.base.api.basedistributorapply.flow.DistributorDelegateQuery;
import com.yxt.anrui.base.api.basedistributorapplyappendix.BaseDistributorApplyAppendixVo;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo;
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingDetailsVo;
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingDto;
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingFeign;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowDelegateQuery;
import com.yxt.anrui.flowable.api.flow2.FlowFeign;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign;
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.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysparameter.SysParameterEnum;
import com.yxt.anrui.portal.api.sysparameter.SysParameterFeign;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.*;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.AppCustomerRecordQuery;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.AppCustomerRecordVo;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.*;
import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaff;
import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaffDto;
import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaffVo;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFile;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum;
import com.yxt.anrui.riskcenter.biz.loancustomerrecordstaff.LoanCustomerRecordStaffService;
import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowVo;
import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
/**
* @description:
* @author: fzz
* @date: 2023/7/6
**/
@Service
public class LoanCustomerRecordService extends MybatisBaseService<LoanCustomerRecordMapper, LoanCustomerRecord> {
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private LoanCustomerRecordStaffService loanCustomerRecordStaffService;
@Autowired
private LoanFileService loanFileService;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
@Autowired
private CrmCustomerTempFeign crmCustomerTempFeign;
@Autowired
private FinCompanyInvoicingFeign finCompanyInvoicingFeign;
@Autowired
private FileUploadComponent fileUploadComponent;
@Autowired
private MessageFeign messageFeign;
@Autowired
private FlowTaskFeign flowTaskFeign;
@Autowired
private FlowFeign flowFeign;
@Autowired
private FlowableFeign flowableFeign;
@Autowired
private SysParameterFeign sysParameterFeign;
/**
* 分页列表
*
* @param pq
* @return
*/
public PagerVo<LoanCustomerRecordVo> listPage(PagerQuery<LoanCustomerRecordQuery> pq) {
IPage<LoanCustomerRecord> page = PagerUtil.queryToPage(pq);
LoanCustomerRecordQuery pagerQuery = pq.getParams();
QueryWrapper<LoanCustomerRecord> qw = new QueryWrapper<>();
//=======================
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(pagerQuery.getOrgPath());
privilegeQuery.setMenuSid(pagerQuery.getMenuSid());
privilegeQuery.setMenuUrl(pagerQuery.getMenuUrl());
privilegeQuery.setUserSid(pagerQuery.getUserSid());
ResultBean<String> defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery);
if (StringUtils.isNotBlank(defaultIdReltBean.getData())) {
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
String orgSidPath = pagerQuery.getOrgPath();
orgSidPath = orgSidPath + "/";
int i1 = orgSidPath.indexOf("/");
int i2 = orgSidPath.indexOf("/", i1 + 1);
int i3 = orgSidPath.indexOf("/", i2 + 1);
int i4 = orgSidPath.indexOf("/", i3 + 1);
String orgLevelKey = defaultIdReltBean.getData();
if ("1".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i1);
qw.like("orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("createBySid", pagerQuery.getUserSid());
} else {
PagerVo<LoanCustomerRecordVo> p = new PagerVo<>();
return p;
}
} else {
PagerVo<LoanCustomerRecordVo> p = new PagerVo<>();
return p;
}
//=======================
//分公司
if (StringUtils.isNotBlank(pagerQuery.getCompany())) {
qw.like("useOrgName", pagerQuery.getCompany());
}
//申请部门
if (StringUtils.isNotBlank(pagerQuery.getDept())) {
qw.like("dept", pagerQuery.getDept());
}
//申请人
if (StringUtils.isNotBlank(pagerQuery.getApplyName())) {
qw.like("applyName", pagerQuery.getApplyName());
}
//销售专员
if (StringUtils.isNotBlank(pagerQuery.getSalesman())) {
qw.like("salesman", pagerQuery.getSalesman());
}
//客户
if (StringUtils.isNotBlank(pagerQuery.getCustomer())) {
qw.like("customer", pagerQuery.getCustomer());
}
//客户
if (StringUtils.isNotBlank(pagerQuery.getCustomerTypeKey())) {
qw.eq("customerTypeKey", pagerQuery.getCustomerTypeKey());
}
String applyStartTime = pagerQuery.getApplyStartDate();
String applyEndTime = pagerQuery.getApplyEndDate();
qw.apply(StringUtils.isNotEmpty(applyStartTime), "date_format (applyDate,'%Y-%m-%d') >= date_format('" + applyStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(applyEndTime), "date_format (applyDate,'%Y-%m-%d') <= date_format('" + applyEndTime + "','%Y-%m-%d')"
);
String effStartTime = pagerQuery.getEffectiveStartDate();
String effEndTime = pagerQuery.getEffectiveEndDate();
qw.apply(StringUtils.isNotEmpty(effStartTime), "date_format (effectiveDate,'%Y-%m-%d') >= date_format('" + effStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(effEndTime), "date_format (effectiveDate,'%Y-%m-%d') <= date_format('" + effEndTime + "','%Y-%m-%d')"
);
qw.eq("isDelete", 0);
qw.orderByDesc("createTime");
IPage<LoanCustomerRecordVo> pagging = baseMapper.listPage(page, qw);
PagerVo<LoanCustomerRecordVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public ResultBean<LoanCustomerRecordDetailsVo> detail(String sid) {
ResultBean<LoanCustomerRecordDetailsVo> rb = ResultBean.fireFail();
LoanCustomerRecordDetailsVo vo = new LoanCustomerRecordDetailsVo();
LoanCustomerRecord entity = fetchBySid(sid);
BeanUtil.copyProperties(entity, vo);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (null != entity.getApplyDate()) {
vo.setApplyDate(sdf.format(entity.getApplyDate()));
}
if (StringUtils.isNotBlank(entity.getCreateBySid())) {
vo.setUserSid(entity.getCreateBySid());
}
if (StringUtils.isNotBlank(entity.getOrgSidPath())) {
vo.setOrgPath(entity.getOrgSidPath());
}
if (StringUtils.isNotBlank(entity.getProcInstId())) {
vo.setInstanceId(entity.getProcInstId());
}
//查询客户基本信息
if (StringUtils.isNotBlank(entity.getCustomerSid())) {
String customerSid = entity.getCustomerSid();
CrmCustomerTempVo customerTempVo = crmCustomerTempFeign.fetchSid(customerSid).getData();
if (null != customerTempVo) {
if (StringUtils.isNotBlank(customerTempVo.getMobile())) {
vo.setClientPhone(customerTempVo.getMobile());
}
if (StringUtils.isNotBlank(customerTempVo.getIDNumber())) {
vo.setClientNo(customerTempVo.getIDNumber());
}
if (StringUtils.isNotBlank(customerTempVo.getCertificateType())) {
vo.setDocuments(customerTempVo.getCertificateType());
}
if (StringUtils.isNotBlank(customerTempVo.getEndDate())) {
vo.setDocumentsDate(customerTempVo.getEndDate());
}
if (StringUtils.isNotBlank(customerTempVo.getAddress())) {
vo.setClientAddress(customerTempVo.getAddress());
}
}
}
//查询企业人员信息
List<LoanCustomerRecordStaffVo> staffVos = loanCustomerRecordStaffService.getStaffsByMainSid(sid).getData();
staffVos.removeAll(Collections.singleton(null));
if (!staffVos.isEmpty()) {
vo.setStaffs(staffVos);
}
//信息查询授权书
List<LoanFile> fileList = loanFileService.selectByLinkSid(sid, LoanFileEnum.INFO_LETTER.getAttachType());
fileList.removeAll(Collections.singleton(null));
if (!fileList.isEmpty()) {
List<String> infoLetter = fileList.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()).
collect(Collectors.toList());
vo.setInfoLetter(infoLetter);
}
//车队挂靠协议
fileList = loanFileService.selectByLinkSid(sid, LoanFileEnum.AGREEMENT.getAttachType());
fileList.removeAll(Collections.singleton(null));
if (!fileList.isEmpty()) {
List<String> agreement = fileList.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()).collect(Collectors.toList());
vo.setAgreement(agreement);
}
//营业执照
fileList = loanFileService.selectByLinkSid(sid, LoanFileEnum.LICENSE.getAttachType());
fileList.removeAll(Collections.singleton(null));
if (!fileList.isEmpty()) {
List<String> license = fileList.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()).collect(Collectors.toList());
vo.setLicense(license);
}
//法人和实际控制人身份证
fileList = loanFileService.selectByLinkSid(sid, LoanFileEnum.ID_CARD.getAttachType());
fileList.removeAll(Collections.singleton(null));
if (!fileList.isEmpty()) {
List<String> idCard = fileList.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()).collect(Collectors.toList());
vo.setIdCard(idCard);
}
//其他资料
fileList = loanFileService.selectByLinkSid(sid, LoanFileEnum.OTHER_INFO.getAttachType());
fileList.removeAll(Collections.singleton(null));
if (!fileList.isEmpty()) {
List<String> otherInfo = fileList.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()).collect(Collectors.toList());
vo.setOtherInfo(otherInfo);
}
return rb.success().setData(vo);
}
@Transactional(rollbackFor = Exception.class)
public ResultBean<String> saveRecord(LoanCustomerRecordDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
String sid = "";
// 企业开票人员信息
List<LoanCustomerRecordStaffDto> staffs = dto.getStaffs();
// 营业执照
List<String> license = dto.getLicense();
// 法人和实际控制人身份证
List<String> idCard = dto.getIdCard();
// 信息查询授权书
List<String> infoLetter = dto.getInfoLetter();
// 车队挂靠协议
List<String> agreement = dto.getAgreement();
// 其他资料
List<String> otherInfo = dto.getOtherInfo();
if (StringUtils.isNotBlank(dto.getCustomerTypeKey())) {
if (dto.getCustomerTypeKey().equals("1")) {
dto.setStaffs(new ArrayList<>());
} else if (dto.getCustomerTypeKey().equals("2")) {
dto.setBusinessName("");
dto.setPhone("");
dto.setTaxpayerNo("");
dto.setAddress("");
dto.setLeader("");
dto.setLegal("");
}
}
if (StringUtils.isNotBlank(dto.getSid())) {
sid = dto.getSid();
LoanCustomerRecord loanCustomerRecord = fetchBySid(sid);
BeanUtil.copyProperties(dto, loanCustomerRecord, "id", "sid");
baseMapper.updateById(loanCustomerRecord);
} else {
LoanCustomerRecord loanCustomerRecord = new LoanCustomerRecord();
sid = loanCustomerRecord.getSid();
BeanUtil.copyProperties(dto, loanCustomerRecord, "id", "sid");
loanCustomerRecord.setOrgSidPath(dto.getOrgPath());
loanCustomerRecord.setCreateBySid(dto.getUserSid());
ResultBean<String> orgSidByPath = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath());
if (orgSidByPath.getSuccess()) {
String userOrgSid = orgSidByPath.getData();
loanCustomerRecord.setUseOrgSid(userOrgSid);
ResultBean<SysOrganizationVo> organizationVo = sysOrganizationFeign.fetchBySid(userOrgSid);
if (organizationVo.getSuccess()) {
SysOrganizationVo organizationVoData = organizationVo.getData();
if (null != organizationVoData) {
loanCustomerRecord.setUseOrgName(organizationVoData.getName());
}
}
}
loanCustomerRecord.setNodeState("待提交");
baseMapper.insert(loanCustomerRecord);
}
if (StringUtils.isNotBlank(sid)) {
loanCustomerRecordStaffService.deleteByMainSid(sid);
if (!staffs.isEmpty()) {
for (LoanCustomerRecordStaffDto staffDto : staffs) {
LoanCustomerRecordStaff staff = new LoanCustomerRecordStaff();
BeanUtil.copyProperties(staffDto, staff, "id", "sid");
staff.setCustomerRecordSid(sid);
loanCustomerRecordStaffService.insert(staff);
}
}
//删除附件表中关于该linkSid的文件
loanFileService.deleteByLinkSid(sid);
if (!license.isEmpty()) {
loanFileService.saveAll(sid, license, LoanFileEnum.LICENSE.getAttachType());
}
if (!idCard.isEmpty()) {
loanFileService.saveAll(sid, idCard, LoanFileEnum.ID_CARD.getAttachType());
}
if (!infoLetter.isEmpty()) {
loanFileService.saveAll(sid, infoLetter, LoanFileEnum.INFO_LETTER.getAttachType());
}
if (!agreement.isEmpty()) {
loanFileService.saveAll(sid, agreement, LoanFileEnum.AGREEMENT.getAttachType());
}
if (!otherInfo.isEmpty()) {
loanFileService.saveAll(sid, otherInfo, LoanFileEnum.OTHER_INFO.getAttachType());
}
}
return rb.success().setData(sid);
}
public ResultBean<List<LoanFinCompanyInvoicingVo>> selectInvoingByOrgPath(String orgPath) {
ResultBean<List<LoanFinCompanyInvoicingVo>> rb = ResultBean.fireFail();
List<LoanFinCompanyInvoicingVo> voList = new ArrayList<>();
List<FinCompanyInvoicingDetailsVo> data = finCompanyInvoicingFeign.selectInvoingByOrgPath(orgPath).getData();
if (!data.isEmpty()) {
for (FinCompanyInvoicingDetailsVo datum : data) {
LoanFinCompanyInvoicingVo vo = new LoanFinCompanyInvoicingVo();
if (StringUtils.isNotBlank(datum.getPhone())) {
vo.setPhone(datum.getPhone());
}
if (StringUtils.isNotBlank(datum.getAddress())) {
vo.setAddress(datum.getAddress());
}
if (StringUtils.isNotBlank(datum.getName())) {
vo.setBusinessName(datum.getName());
}
if (StringUtils.isNotBlank(datum.getTaxpayerNo())) {
vo.setTaxpayerNo(datum.getTaxpayerNo());
}
voList.add(vo);
}
}
return rb.success().setData(voList);
}
public int updateBySidDelete(String sid) {
return baseMapper.updateBySidDelete(sid);
}
//-------------------------------------流程------------------------------------------------/
/**
* 判断提交的流程是否被允许
*
* @param dto
* @return
*/
private synchronized int submitBusinessData(SubmitCustomerRecordDto dto, LoanCustomerRecord loanCustomerRecord) {
int r = 0;
if (StringUtils.isBlank(dto.getSid())) {
r = 1;
} else {
if (loanCustomerRecord != null) {
String businessTaskId = loanCustomerRecord.getTaskId();
if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) {
//新提交
r = 1;
} else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) {
//二次提交//只有数据一致的时候才能进行下一步
r = 2;
}
} else {
r = 3;
}
}
return r;
}
/**
* 更新流程相关的状态
*
* @param map
* @return
*/
private int updateFlowFiled(Map<String, Object> map) {
return baseMapper.updateFlowFiled(map);
}
public ResultBean submitRecordApplication(SubmitCustomerRecordDto dto) {
ResultBean rb = ResultBean.fireFail();
LoanCustomerRecord loanCustomerRecord = fetchBySid(dto.getSid());
int r = submitBusinessData(dto, loanCustomerRecord);
if (r == 3) {
return rb.setMsg("该申请不存在");
}
if (r == 0) {
return rb.setMsg("操作失败!提交的数据不一致");
}
String businessSid = "";
//新增修改保存
ResultBean<String> resultBean = saveRecord(dto);
if (resultBean.getSuccess()) {
businessSid = resultBean.getData();
}
LoanCustomerRecord entity = fetchBySid(businessSid);
String orgSidPath = "";
if (StringUtils.isNotBlank(entity.getOrgSidPath())) {
orgSidPath = entity.getOrgSidPath();
} else {
SysUserVo data = sysUserFeign.fetchBySid(entity.getCreateBySid()).getData();
if (null != data) {
//根据staffSid获取用户的组织全路径
ResultBean<SysStaffOrg> staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(data.getStaffSid());
if (!staffOrgResultBean.getSuccess()) {
return rb.setMsg(staffOrgResultBean.getMsg());
}
//用户的组织全路径
orgSidPath = staffOrgResultBean.getData().getOrgSidPath();
}
}
List<String> orgPathList = Arrays.asList(orgSidPath.split("/"));
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(orgPathList.get(orgPathList.size() - 1)).getData();
if (sysOrganization == null) {
return rb.setMsg("当前所在的组织机构不存在");
}
if (StringUtils.isBlank(sysOrganization.getManagerSid())) {
// return rb.setMsg("当前所在的组织机构未设置主管人员");
sysOrganization.setManagerSid(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId());
}
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值
Map<String, Object> variables = BeanUtil.beanToMap(dto);
Map<String, Object> appMap = new HashMap<>();
//若有网关,则赋值网关中判断的字段。
variables.put("businessSid", businessSid);
appMap.put("sid", businessSid);
variables.put("app", appMap);
LoanCustomerRecord loanCustomerRecord1 = fetchBySid(businessSid);
String msgBusinessSid = loanCustomerRecord1.getSid();
//用户的部门全路径sid
bv.setOrgSidPath(loanCustomerRecord1.getOrgSidPath());
//业务sid
bv.setBusinessSid(businessSid);
//用户sid
bv.setUserSid(dto.getUserSid());
bv.setFormVariables(variables);
String nextNodeUserSids_ = sysOrganization.getManagerSid();
bv.setNextNodeUserSids(nextNodeUserSids_);
//流程定义id
bv.setModelId(ProcDefEnum.LOANCUSTOMERRECORD.getProDefId());
if (r == 1) {
//流程定义id
bv.setModelId(ProcDefEnum.LOANCUSTOMERRECORD.getProDefId());
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
if (!voResultBean.getSuccess()) {
return rb.setMsg(voResultBean.getMsg());
}
UpdateFlowFieldVo ufVo = voResultBean.getData();
int i = updateFlowFiled(BeanUtil.beanToMap(ufVo));
//==================================添加线程
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
Future future1 = pool.submit(() -> {
//极光推送
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(msgBusinessSid);
messageFlowableQuery.setModuleName("欠款客户备案");
SysUserVo userVo = sysUserFeign.fetchBySid(loanCustomerRecord1.getCreateBySid()).getData();
if (userVo != null) {
if (StringUtils.isNotBlank(userVo.getName())) {
messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
}
messageFlowableQuery.setMsgTitle("欠款客户备案");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
});
} catch (Exception e) {
e.printStackTrace();
}
//==================================添加线程
return voResultBean;
}
if (r == 2) {
// ToDo:驳回到发起人后再次提交
if (StringUtils.isBlank(dto.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
LoanCustomerRecord loanCustomerRecord2 = fetchBySid(dto.getSid());
bv.setTaskId(dto.getTaskId());
bv.setTaskDefKey(loanCustomerRecord2.getNodeSid());
bv.setComment("重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
}
return rb;
}
public ResultBean complete(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
String businessSid = bv.getBusinessSid();
LoanCustomerRecord loanCustomerRecord = this.fetchBySid(businessSid);
if (bv.getTaskId().equals(loanCustomerRecord.getTaskId())) {
bv.setOrgSidPath(loanCustomerRecord.getOrgSidPath());
//流程中的参数赋值
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
//若有网关,则赋值网关中判断的字段。
variables.put("businessSid", businessSid);
appMap.put("sid", businessSid);
variables.put("app", appMap);
bv.setFormVariables(variables);
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
int i = updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
LoanCustomerRecord entity = this.fetchBySid(businessSid);
//更新有效期
//----系统参数中获取有效期------
String qkkhba = sysParameterFeign.fetchByParNo(SysParameterEnum.QKKHBAYXQ.getParameterValue()).getData();
String effectiveDate = "";
if (StringUtils.isNotBlank(qkkhba)) {
Date dateByDay = getDateByDay(new Date(), Integer.valueOf(qkkhba));
effectiveDate = DateUtil.format(dateByDay, "yyyy-MM-dd");
entity.setEffectiveDate(effectiveDate);
baseMapper.updateById(entity);
}
//判断是企业还是个人之后判断是否生成企业开票信息。
if (StringUtils.isNotBlank(entity.getCustomerTypeKey())) {
FinCompanyInvoicingDto invoicingDto = new FinCompanyInvoicingDto();
//1个人 2企业
if (entity.getCustomerTypeKey().equals("1")) {
if (StringUtils.isNotBlank(entity.getIsAnchored())) {
if (entity.getIsAnchored().equals("1")) {
String taxpayerNo = "";
String name = "";
String address = "";
String phone = "";
String invoicingSid = "";
if (StringUtils.isNotBlank(entity.getTaxpayerNo())) {
taxpayerNo = entity.getTaxpayerNo();
FinCompanyInvoicingDetailsVo data = finCompanyInvoicingFeign.selectInvoingByTaxpayerNo(taxpayerNo).getData();
if (null != data) {
invoicingSid = data.getSid();
}
}
if (StringUtils.isNotBlank(entity.getBusinessName())) {
name = entity.getBusinessName();
}
if (StringUtils.isNotBlank(entity.getAddress())) {
address = entity.getAddress();
}
if (StringUtils.isNotBlank(entity.getPhone())) {
phone = entity.getPhone();
}
if (StringUtils.isNotBlank(invoicingSid)) {
invoicingDto.setSid(invoicingSid);
} else {
invoicingDto.setOrgSidPath(entity.getOrgSidPath());
invoicingDto.setCreateBySid(entity.getCreateBySid());
}
invoicingDto.setName(name);
invoicingDto.setAddress(address);
invoicingDto.setPhone(phone);
invoicingDto.setTaxpayerNo(taxpayerNo);
invoicingDto.setEffectiveDate(effectiveDate);
finCompanyInvoicingFeign.qySaveOrUpdate(invoicingDto);
}
}
} else if (entity.getCustomerTypeKey().equals("2")) {
if (StringUtils.isNotBlank(entity.getCustomerSid())) {
CrmCustomerTempVo customerTempVo = crmCustomerTempFeign.fetchSid(entity.getCustomerSid()).getData();
if (null != customerTempVo) {
String taxpayerNo = "";
String name = "";
String address = "";
String phone = "";
String invoicingSid = "";
if (StringUtils.isNotBlank(customerTempVo.getIDNumber())) {
taxpayerNo = customerTempVo.getIDNumber();
FinCompanyInvoicingDetailsVo data = finCompanyInvoicingFeign.selectInvoingByTaxpayerNo(taxpayerNo).getData();
if (null != data) {
invoicingSid = data.getSid();
}
}
if (StringUtils.isNotBlank(customerTempVo.getName())) {
name = customerTempVo.getName();
}
if (StringUtils.isNotBlank(customerTempVo.getAddress())) {
address = customerTempVo.getAddress();
}
if (StringUtils.isNotBlank(customerTempVo.getMobile())) {
phone = customerTempVo.getMobile();
}
if (StringUtils.isNotBlank(invoicingSid)) {
invoicingDto.setSid(invoicingSid);
} else {
invoicingDto.setOrgSidPath(entity.getOrgSidPath());
invoicingDto.setCreateBySid(entity.getCreateBySid());
}
invoicingDto.setName(name);
invoicingDto.setAddress(address);
invoicingDto.setPhone(phone);
invoicingDto.setTaxpayerNo(taxpayerNo);
invoicingDto.setEffectiveDate(effectiveDate);
finCompanyInvoicingFeign.qySaveOrUpdate(invoicingDto);
}
}
}
}
}
return rb.success().setData(resultBean.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
//----------时间算法-------------
public static Date getDateByDay(Date sDate, int num) {
Calendar cal = Calendar.getInstance();
// 设置开始时间
cal.setTime(sDate);
//增加或减少num天
cal.add(Calendar.DATE, num);
//cal.add(Calendar.DATE, -10);//减10天
//cal.add(Calendar.DATE, 2);//加2天
return cal.getTime();
}
public ResultBean revokeProcess(CustomerRecordTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
LoanCustomerRecord loanCustomerRecord = fetchBySid(query.getBusinessSid());
String businessTaskId = loanCustomerRecord.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.revokeProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
return rb.success().setData(resultBean.getData());
}
}
return rb.setMsg("操作失败,提交的数据不一致!");
}
public ResultBean taskReject(CustomerRecordTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
String businessSid = query.getBusinessSid();
LoanCustomerRecord loanCustomerRecord = fetchBySid(businessSid);
if (loanCustomerRecord == null) {
return rb.setMsg("该申请不存在");
}
String businessTaskId = loanCustomerRecord.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
if (org.apache.commons.lang3.StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
//若有网关,则赋值网关中判断的字段。
flowTaskVo.setValues(variables);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
Map<String, Object> map = BeanUtil.beanToMap(ufVo);
//更新业务中的流程相关的参数
updateFlowFiled(map);
//极光推送
loanCustomerRecord = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
String procId = loanCustomerRecord.getProcInstId();
messageFlowVo.setProcInsId(procId);
messageFlowVo.setProcDefId(loanCustomerRecord.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("欠款客户备案");
ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(procId);
String nextName = listResultBean.getData().get(0).getName_();
String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_();
List<String> receiveSidList = Arrays.asList(nextNodeUserSids.split(","));
// if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(busVehicleApply.getCreateBySid())) {
if ("发起申请".equals(nextName)) {
messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交");
} else {
SysUserVo userVo = sysUserFeign.fetchBySid(loanCustomerRecord.getCreateBySid()).getData();
if (userVo != null) {
if (org.apache.commons.lang3.StringUtils.isNotBlank(userVo.getName())) {
messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
}
}
messageFlowableQuery.setMsgTitle("欠款客户备案");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
return rb.success();
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean breakProcess(CustomerRecordTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (org.apache.commons.lang3.StringUtils.isBlank(query.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
if (org.apache.commons.lang3.StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
if (org.apache.commons.lang3.StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
LoanCustomerRecord loanCustomerRecord = fetchBySid(query.getBusinessSid());
String businessTaskId = loanCustomerRecord.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (query.getUserSid().equals(loanCustomerRecord.getCreateBySid())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
return rb.success().setData(resultBean.getData());
} else {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
return rb.success().setData(resultBean.getData());
}
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean flowRecord(String procInsId) {
return flowTaskFeign.businessFlowRecord(procInsId);
}
public ResultBean<List<GetNodeVo>> getNextNodesForSubmit(GetNodeQuery query) {
ResultBean<List<GetNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//根据业务sid查询排产信息
LoanCustomerRecord loanCustomerRecord = fetchBySid(query.getBusinessSid());
bv.setFormVariables(variables);
bv.setModelId(loanCustomerRecord.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<GetNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), GetNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean<List<GetNodeVo>> getPreviousNodesForReject(GetNodeQuery query) {
ResultBean<List<GetNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//根据业务sid查询排产信息
LoanCustomerRecord loanCustomerRecord = fetchBySid(query.getBusinessSid());
bv.setFormVariables(variables);
bv.setModelId(loanCustomerRecord.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<GetNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), GetNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean delegate(CustomerRecordDelegateQuery customerRecordDelegateQuery) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(customerRecordDelegateQuery, delegateQuery);
flowFeign.delegate(delegateQuery);
return rb.success();
}
public PagerVo<AppCustomerRecordVo> getCustomerRecordList(PagerQuery<AppCustomerRecordQuery> pq) {
IPage<LoanCustomerRecord> page = PagerUtil.queryToPage(pq);
AppCustomerRecordQuery pagerQuery = pq.getParams();
QueryWrapper<LoanCustomerRecord> qw = new QueryWrapper<>();
//=======================
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(pagerQuery.getOrgPath());
privilegeQuery.setMenuSid(pagerQuery.getMenuSid());
// privilegeQuery.setMenuUrl(pagerQuery.getMenuUrl());
privilegeQuery.setUserSid(pagerQuery.getUserSid());
ResultBean<String> defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery);
if (StringUtils.isNotBlank(defaultIdReltBean.getData())) {
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
String orgSidPath = pagerQuery.getOrgPath();
orgSidPath = orgSidPath + "/";
int i1 = orgSidPath.indexOf("/");
int i2 = orgSidPath.indexOf("/", i1 + 1);
int i3 = orgSidPath.indexOf("/", i2 + 1);
int i4 = orgSidPath.indexOf("/", i3 + 1);
String orgLevelKey = defaultIdReltBean.getData();
if ("1".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i1);
qw.like("orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("createBySid", pagerQuery.getUserSid());
} else {
PagerVo<AppCustomerRecordVo> p = new PagerVo<>();
return p;
}
} else {
PagerVo<AppCustomerRecordVo> p = new PagerVo<>();
return p;
}
//=======================
if (StringUtils.isNotBlank(pagerQuery.getName())) {
// qw.and(wrapper -> wrapper.like("contractId", query.getName()).or().like("customerName", query.getName()));
qw.like("customer", pagerQuery.getName());
}
qw.eq("isDelete", 0);
qw.orderByDesc("createTime");
IPage<AppCustomerRecordVo> pagging = baseMapper.getCustomerRecordList(page, qw);
List<AppCustomerRecordVo> records = pagging.getRecords();
records.removeAll(Collections.singleton(null));
if (!records.isEmpty()) {
for (AppCustomerRecordVo record : records) {
record.setUpdateBtn(false);
record.setDeleteBtn(false);
if (StringUtils.isNotBlank(record.getApplyName()) && StringUtils.isNotBlank(record.getDept())) {
record.setPublishInfo(record.getDept() + "-" + record.getApplyName());
}
if (StringUtils.isNotBlank(record.getState())) {
if (record.getState().equals("待提交")) {
record.setUpdateBtn(true);
record.setDeleteBtn(true);
}
}
}
}
PagerVo<AppCustomerRecordVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
}

27
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancustomerrecordstaff/LoanCustomerRecordStaffMapper.java

@ -0,0 +1,27 @@
package com.yxt.anrui.riskcenter.biz.loancustomerrecordstaff;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecord;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecordVo;
import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaff;
import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaffVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/7/6
**/
@Mapper
public interface LoanCustomerRecordStaffMapper extends BaseMapper<LoanCustomerRecordStaff> {
int deleteByMainSid(String customerRecordSid);
List<LoanCustomerRecordStaffVo> getStaffsByMainSid(String customerRecordSid);
}

16
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancustomerrecordstaff/LoanCustomerRecordStaffMapper.xml

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.riskcenter.biz.loancustomerrecordstaff.LoanCustomerRecordStaffMapper">
<delete id="deleteByMainSid">
DELETE
FROM loan_customer_record_staff
WHERE customerRecordSid = #{customerRecordSid}
</delete>
<select id="getStaffsByMainSid"
resultType="com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaffVo">
select *
FROM loan_customer_record_staff
WHERE customerRecordSid = #{customerRecordSid}
</select>
</mapper>

37
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancustomerrecordstaff/LoanCustomerRecordStaffRest.java

@ -0,0 +1,37 @@
package com.yxt.anrui.riskcenter.biz.loancustomerrecordstaff;
import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaffDto;
import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaffFeign;
import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaffVo;
import com.yxt.common.core.result.ResultBean;
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.List;
@Api(tags = "欠款客户备案企业人员信息")
@RestController
@RequestMapping("v1/loancustomerrecordstaff")
public class LoanCustomerRecordStaffRest implements LoanCustomerRecordStaffFeign {
@Autowired
private LoanCustomerRecordStaffService loanCustomerRecordStaffService;
@Override
public ResultBean saveStaff(LoanCustomerRecordStaffDto dto) {
return loanCustomerRecordStaffService.saveStaff(dto);
}
@Override
public ResultBean deleteByMainSid(String customerRecordSid) {
return loanCustomerRecordStaffService.deleteByMainSid(customerRecordSid);
}
@Override
public ResultBean<List<LoanCustomerRecordStaffVo>> getStaffsByMainSid(String customerRecordSid) {
return loanCustomerRecordStaffService.getStaffsByMainSid(customerRecordSid);
}
}

54
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancustomerrecordstaff/LoanCustomerRecordStaffService.java

@ -0,0 +1,54 @@
package com.yxt.anrui.riskcenter.biz.loancustomerrecordstaff;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecord;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecordQuery;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecordVo;
import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaff;
import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaffDto;
import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaffVo;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @description:
* @author: fzz
* @date: 2023/7/6
**/
@Service
public class LoanCustomerRecordStaffService extends MybatisBaseService<LoanCustomerRecordStaffMapper, LoanCustomerRecordStaff> {
public ResultBean saveStaff(LoanCustomerRecordStaffDto dto) {
ResultBean rb = ResultBean.fireFail();
LoanCustomerRecordStaff loanCustomerRecordStaff = new LoanCustomerRecordStaff();
BeanUtil.copyProperties(dto, loanCustomerRecordStaff, "id", "sid");
baseMapper.insert(loanCustomerRecordStaff);
return rb.success();
}
public ResultBean deleteByMainSid(String customerRecordSid) {
ResultBean rb = ResultBean.fireFail();
int i = baseMapper.deleteByMainSid(customerRecordSid);
return rb.success();
}
public ResultBean<List<LoanCustomerRecordStaffVo>> getStaffsByMainSid(String customerRecordSid) {
ResultBean<List<LoanCustomerRecordStaffVo>> rb = ResultBean.fireFail();
List<LoanCustomerRecordStaffVo> voList = baseMapper.getStaffsByMainSid(customerRecordSid);
return rb.success().setData(voList);
}
}

10
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/retrieval/AppBusDeliveredApplyFeign.java

@ -208,4 +208,14 @@ public interface AppBusDeliveredApplyFeign {
@ResponseBody @ResponseBody
ResultBean<String> getFlowOperateTitleQk(@Valid @SpringQueryMap RetrievalQuery query); ResultBean<String> getFlowOperateTitleQk(@Valid @SpringQueryMap RetrievalQuery query);
@ApiOperation(value = "欠款出库加签")
@PutMapping(value = "/delegate")
@ResponseBody
public ResultBean delegate(@RequestBody DeliveredApplyDelegateQuery deliveredApplyDelegateQuery);
@ApiOperation("待补充车辆")
@GetMapping("/appendRetrievalCarsQk")
@ResponseBody
public ResultBean<List<CarListVos2>> appendRetrievalCarsQk(@SpringQueryMap DeliveredDetailssQuery query);
} }

10
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/retrieval/AppBusDeliveredApplyFeignFallback.java

@ -196,4 +196,14 @@ public class AppBusDeliveredApplyFeignFallback implements AppBusDeliveredApplyFe
public ResultBean<String> getFlowOperateTitleQk(RetrievalQuery query) { public ResultBean<String> getFlowOperateTitleQk(RetrievalQuery query) {
return null; return null;
} }
@Override
public ResultBean delegate(DeliveredApplyDelegateQuery deliveredApplyDelegateQuery) {
return null;
}
@Override
public ResultBean<List<CarListVos2>> appendRetrievalCarsQk(DeliveredDetailssQuery query) {
return null;
}
} }

27
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/retrieval/CarListVos2.java

@ -0,0 +1,27 @@
package com.yxt.anrui.terminal.api.autoservice.retrieval;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/10/12
**/
@Data
public class CarListVos2 {
@ApiModelProperty("折让")
private String discount;
@ApiModelProperty("车辆sid")
private String vinSid;
@ApiModelProperty("是否显示挂车信息")
private boolean showHandCarBtn;
private List<DeliveredDiscountVo> discountUse;
@ApiModelProperty("实际购车人")
private DeliveredUseMessagesVo realBuyer;
}

9
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/retrieval/DeliveredApplyDto2.java

@ -84,4 +84,13 @@ public class DeliveredApplyDto2 implements Dto {
private List<CarListVo> carList = new ArrayList<>(); private List<CarListVo> carList = new ArrayList<>();
@ApiModelProperty("剩余") @ApiModelProperty("剩余")
private List<DeliveredLeaveVo> discountLeave = new ArrayList<>(); private List<DeliveredLeaveVo> discountLeave = new ArrayList<>();
@ApiModelProperty("责任人担保承诺书")
private List<String> promiseList = new ArrayList<>();
@ApiModelProperty("担保承诺书")
private List<String> danFileList = new ArrayList<>();
@ApiModelProperty("车辆登记合同")
private List<String> carFileList = new ArrayList<>();
} }

9
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/retrieval/DeliveredDetailsVoQk2.java

@ -109,4 +109,13 @@ public class DeliveredDetailsVoQk2 implements Vo {
private boolean showLoanUser; private boolean showLoanUser;
@ApiModelProperty("责任人担保承诺书")
private List<String> promiseList = new ArrayList<>();
@ApiModelProperty("担保承诺书")
private List<String> danFileList = new ArrayList<>();
@ApiModelProperty("车辆登记合同")
private List<String> carFileList = new ArrayList<>();
} }

26
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/retrieval/flowable/DeliveredApplyDelegateQuery.java

@ -0,0 +1,26 @@
package com.yxt.anrui.terminal.api.autoservice.retrieval.flowable;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/10/12
**/
@Data
public class DeliveredApplyDelegateQuery {
@ApiModelProperty
private String userSid;
@ApiModelProperty("流程实例id")
@JsonProperty("procInsId")
private String instanceId;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("审批人sid")
private String assignee;
@ApiModelProperty("填写意见")
private String views;
}

35
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/loancustomerrecord/CustomerRecordFeign.java

@ -0,0 +1,35 @@
package com.yxt.anrui.terminal.api.risk.loancustomerrecord;
import com.yxt.anrui.terminal.api.autoservice.distributor.DistributorQuery;
import com.yxt.anrui.terminal.api.autoservice.distributor.apply.DistributorApplyVo;
import com.yxt.anrui.terminal.api.risk.loantemplate.TemplateFeignFallback;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @description:
* @author: fzz
* @date: 2023/8/8
**/
@Api(tags = "欠款客户备案")
@FeignClient(
contextId = "terminal-LoanCustomerRecord",
name = "anrui-terminal",
path = "/risk/v1/CustomerRecord",
fallback = CustomerRecordFeignFallback.class)
public interface CustomerRecordFeign {
@ApiOperation("移动端-欠款客户备案分页列表")
@PostMapping("/getCustomerRecordList")
@ResponseBody
ResultBean<PagerVo<CustomerRecordVo>> getCustomerRecordList(@RequestBody PagerQuery<CustomerRecordQuery> pagerQuery);
}

19
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/loancustomerrecord/CustomerRecordFeignFallback.java

@ -0,0 +1,19 @@
package com.yxt.anrui.terminal.api.risk.loancustomerrecord;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.stereotype.Component;
/**
* @description:
* @author: fzz
* @date:
**/
@Component
public class CustomerRecordFeignFallback implements CustomerRecordFeign {
@Override
public ResultBean<PagerVo<CustomerRecordVo>> getCustomerRecordList(PagerQuery<CustomerRecordQuery> pagerQuery) {
return null;
}
}

21
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/loancustomerrecord/CustomerRecordQuery.java

@ -0,0 +1,21 @@
package com.yxt.anrui.terminal.api.risk.loancustomerrecord;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/10/12 15:51
*/
@Data
public class CustomerRecordQuery implements Query {
@ApiModelProperty(value = "用户sid")
private String userSid;
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty("机构sid")
private String orgPath;
private String menuSid;
}

56
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/loancustomerrecord/CustomerRecordVo.java

@ -0,0 +1,56 @@
package com.yxt.anrui.terminal.api.risk.loancustomerrecord;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/10/12 15:49
*/
@Data
public class CustomerRecordVo implements Vo {
/**
* 申请日期
*/
private String applyDate;
/**
* 申请人
*/
private String applyName;
/**
* 分公司
*/
private String company;
/**
* 申请部门
*/
private String dept;
/**
* 客户名称
*/
private String customer;
/**
* 有效期至
*/
private String effectiveDate;
/**
* 销售专员
*/
private String salesman;
/**
* 备案记录sid
*/
private String sid;
/**
* 流程状态
*/
private String state;
@ApiModelProperty("某某部门,某某人")
private String publishInfo;
private boolean updateBtn;
private boolean deleteBtn;
}

10
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/autoservice/retrieval/AppBusDeliveredApplyRest.java

@ -205,4 +205,14 @@ public class AppBusDeliveredApplyRest implements AppBusDeliveredApplyFeign {
public ResultBean<String> getFlowOperateTitleQk(RetrievalQuery query) { public ResultBean<String> getFlowOperateTitleQk(RetrievalQuery query) {
return appBusDeliveredApplyService.getFlowOperateTitleQk(query); return appBusDeliveredApplyService.getFlowOperateTitleQk(query);
} }
@Override
public ResultBean delegate(DeliveredApplyDelegateQuery deliveredApplyDelegateQuery) {
return appBusDeliveredApplyService.delegate(deliveredApplyDelegateQuery);
}
@Override
public ResultBean<List<CarListVos2>> appendRetrievalCarsQk(DeliveredDetailssQuery query) {
return appBusDeliveredApplyService.appendRetrievalCarsQk(query);
}
} }

17
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/autoservice/retrieval/AppBusDeliveredApplyService.java

@ -893,4 +893,21 @@ public class AppBusDeliveredApplyService {
} }
return rb.success().setData(data); return rb.success().setData(data);
} }
public ResultBean delegate(DeliveredApplyDelegateQuery deliveredApplyDelegateQuery) {
ResultBean rb = ResultBean.fireFail();
DeliveredDelegateQuery deliveredDelegateQuery = new DeliveredDelegateQuery();
BeanUtil.copyProperties(deliveredApplyDelegateQuery,deliveredDelegateQuery);
ResultBean resultBean = busDeliveredApplyFeign.delegate(deliveredDelegateQuery);
return resultBean;
}
public ResultBean<List<CarListVos2>> appendRetrievalCarsQk(DeliveredDetailssQuery query) {
ResultBean<List<CarListVos2>> rb = ResultBean.fireFail();
DeliverDetailsQuery deliverDetailsQuery = new DeliverDetailsQuery();
BeanUtil.copyProperties(query, deliverDetailsQuery);
ResultBean<List<AppCarListVo>> selectInfo = busDeliveredFeign.qkSelectInfo(deliverDetailsQuery);
List<CarListVos2> voList = Optional.ofNullable(selectInfo.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), CarListVos2.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
} }

30
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/loancustomerrecord/CustomerRecordRest.java

@ -0,0 +1,30 @@
package com.yxt.anrui.terminal.biz.risk.loancustomerrecord;
import com.yxt.anrui.terminal.api.risk.loancustomerrecord.CustomerRecordFeign;
import com.yxt.anrui.terminal.api.risk.loancustomerrecord.CustomerRecordQuery;
import com.yxt.anrui.terminal.api.risk.loancustomerrecord.CustomerRecordVo;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @description:
* @author: fzz
* @date:
**/
@Controller
@RequestMapping("/risk/v1/CustomerRecord")
public class CustomerRecordRest implements CustomerRecordFeign {
@Autowired
private CustomerRecordService customerRecordService;
@Override
public ResultBean<PagerVo<CustomerRecordVo>> getCustomerRecordList(PagerQuery<CustomerRecordQuery> pagerQuery) {
return customerRecordService.getCustomerRecordList(pagerQuery);
}
}

44
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/loancustomerrecord/CustomerRecordService.java

@ -0,0 +1,44 @@
package com.yxt.anrui.terminal.biz.risk.loancustomerrecord;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.base.api.basedistributor.app.BaseDistributorsQuery;
import com.yxt.anrui.base.api.basedistributor.app.apply.AppDistributorApplyVo;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecordFeign;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.AppCustomerRecordQuery;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.AppCustomerRecordVo;
import com.yxt.anrui.terminal.api.autoservice.distributor.apply.DistributorApplyVo;
import com.yxt.anrui.terminal.api.risk.loancustomerrecord.CustomerRecordQuery;
import com.yxt.anrui.terminal.api.risk.loancustomerrecord.CustomerRecordVo;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
/**
* @description:
* @author: fzz
* @date:
**/
@Service
public class CustomerRecordService {
@Autowired
private LoanCustomerRecordFeign loanCustomerRecordFeign;
public ResultBean<PagerVo<CustomerRecordVo>> getCustomerRecordList(PagerQuery<CustomerRecordQuery> pagerQuery) {
ResultBean<PagerVo<CustomerRecordVo>> rb = ResultBean.fireFail();
PagerVo<CustomerRecordVo> pagerVo = new PagerVo<>();
PagerQuery<AppCustomerRecordQuery> appCustomerRecordQuery = new PagerQuery<>();
BeanUtil.copyProperties(pagerQuery, appCustomerRecordQuery);
ResultBean<PagerVo<AppCustomerRecordVo>> pagerVoResultBean = loanCustomerRecordFeign.getCustomerRecordList(appCustomerRecordQuery);
if (pagerVoResultBean.getSuccess()) {
BeanUtil.copyProperties(pagerVoResultBean.getData(), pagerVo);
}
return rb.success().setData(pagerVo);
}
}
Loading…
Cancel
Save